diff 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 diff
--- a/sra_fetch.py	Mon Jun 17 16:05:30 2013 -0400
+++ b/sra_fetch.py	Mon Jun 17 16:17:33 2013 -0400
@@ -1,30 +1,41 @@
+import sys
+import os
 from ftplib import FTP
-import sys
+import argparse
 
-# Get accession number from argument
-accession = sys.argv[1]
-outfile = sys.argv[2]
-prefix = accession[0:3]
-middle = accession[3:6]
-suffix = accession[6:9]
+def main(args):
+    """ Get accession number from argument """
+    prefix = args.accession[0:3]
+    middle = args.accession[3:6]
+    suffix = args.accession[6:9]
 
-# NCBI SRA FTP site
-ftp = FTP('ftp-trace.ncbi.nih.gov')
+    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
-sra = open(outfile, 'wb')
-ftp.login('ftp')
-connected = False
-while not connected:
-    try:
-        ftp.cwd('/sra/sra-instant/reads/ByRun/sra/' + 
-                prefix + '/' +
-                prefix + middle + '/' +
-                prefix + middle + suffix + '/')
-        connected = True
-    except:
-        pass
-        
-ftp.retrbinary('RETR ' + prefix + middle + suffix + '.sra', sra.write)
-ftp.quit()
+    # 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)