Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Optional Parameter Python?

I need to create a program called extractGenes.py

The command line parameters need to take 2 OR 3 parameters:

  1. -s is an optional parameter, or switch, indicating that the user wwants the spliced gene sequence(introns removed). The user does not have to provide this (meaning he wants the entire gene sequence), but it he does provide it then it must be the first parameter

  2. input file (with the genes)

  3. output file (where the program will create to store the fasta file

The file contains lines like this:

NM_001003443 chr11 + 5925152 592608098 2 5925152,5925652, 5925404,5926898,

However, I am not sure how to include the -s optional parameter into the starting function.

So I started with:

getGenes(-s, input, output):
fp = open(input, 'r')
wp = open(output, "w")

but am unsure as to how to include the -s.

like image 591
Peter Hanson Avatar asked Nov 29 '25 16:11

Peter Hanson


2 Answers

This case is simple enough to use sys.argv directly:

import sys

spliced = False
if '-s' in sys.argv:
    spliced = True
    sys.argv.remove('-s')
infile, outfile = sys.argv[1:]

Alternatively, you can also use the more powerful tools like argparse and optparse to generate a command-line parser:

import argparse

parser = argparse.ArgumentParser(description='Tool for extracting genes')
parser.add_argument('infile', help='source file with the genes')
parser.add_argument('outfile', help='outfile file in a FASTA format')
parser.add_argument('-s', '--spliced', action='store_true', help='remove introns')

if __name__ == '__main__':
    result = parser.parse_args('-s myin myout'.split())
    print vars(result)
like image 52
Raymond Hettinger Avatar answered Dec 02 '25 06:12

Raymond Hettinger


Argparse is a python library that willl take care of optional paremeters for you. http://docs.python.org/library/argparse.html#module-argparse

like image 29
dm03514 Avatar answered Dec 02 '25 07:12

dm03514



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!