Mercurial > repos > matt-shirley > sra_tools
view sra_fetch.py @ 17:c57efec65750 draft
updates to SRA datatype
author | Matt Shirley <mdshw5@gmail.com> |
---|---|
date | Mon, 17 Jun 2013 20:37:28 -0400 |
parents | 93a60318b9ca |
children |
line wrap: on
line source
import sys import os from ftplib import FTP try: import argparse except ImportError: import getopt def main(args): """ Get accession number from argument """ if module_exists('argparse'): args = dict(vars(args)) prefix = args['accession'][0:3] middle = args['accession'][3:6] suffix = args['accession'][6:9] ftp = FTP('ftp-trace.ncbi.nih.gov') # Open file and transfer requested SRA as a file # Try to change the working directory until it works with open(args['out'], 'wb') as sra: ftpPath = os.path.join('/sra/sra-instant/reads/ByRun/sra/', prefix, prefix + middle, prefix + middle + suffix) ftp.login('ftp') connected = False while not connected: try: ftp.cwd(ftpPath) connected = True except: pass ftp.retrbinary('RETR ' + prefix + middle + suffix + '.sra', sra.write) ftp.quit() def module_exists(module_name): try: __import__(module_name) except ImportError: return False else: return True def arguments(): parser = argparse.ArgumentParser(description="Download an SRA from the NCBI SRA FTP") parser.add_argument('-a', '--accession', type=str, help="SRA accession ex: SRR000001") parser.add_argument('-o', '--out', type=str, help="Name for SRA file ") args = parser.parse_args() return args if __name__ == "__main__": if module_exists('argparse'): args = arguments() else: ## fall back to getopt for python < 2.7 args = dict() options, remainder = getopt.getopt(sys.argv[1:], 'a:o:', ['accession=', 'out=']) for opt, arg in options: if opt in ('-a', '--accession'): args['accession'] = arg elif opt in ('-o', '--out'): args['out'] = arg main(args)