view sra_fetch.py @ 13:45031bbf6b27 draft

better sra_fetch code, compliant (?) datatype, updated dependencies in tool wrappers
author Matt Shirley <mdshw5@gmail.com>
date Mon, 17 Jun 2013 16:17:33 -0400
parents ffdd41766195
children 082fd6374582
line wrap: on
line source

import sys
import os
from ftplib import FTP
import argparse

def main(args):
    """ Get accession number from argument """
    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 arguments():
    parser = argparse.ArgumentParser(description="Download an SRA from the NCBI SRA FTP")
    parser.add_argument('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__":
    args = arguments()
    main(args)