Guest User

Untitled

a guest
Jan 22nd, 2018
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. import argparse
  2.  
  3. default_prefix = "ftp.sra.ebi.ac.uk/vol1/fastq/"
  4. ascp_prefix = "ftp.sra.ebi.ac.uk:/vol1/fastq/"
  5. default_protocol = "ftp://"
  6. default_suffix = "*.fastq.gz"
  7. default_ascp_line = "ascp -QT -l 300m -i ~/.ssh/asperaweb_id_dsa.openssh anonftp@ftp.ncbi.nlm.nih.gov:{} {}"
  8.  
  9.  
  10. def prepare_url(srr_name, prefix):
  11. dir_1 = srr_name[:6]
  12. url = ""
  13. num_digits = sum(s.isdigit() for s in srr_name)
  14. if num_digits == 6:
  15. url = prefix + dir_1 + "/" + srr_name + "/"
  16. elif num_digits == 7:
  17. dir_2 = "00" + srr_name[-1]
  18. url = prefix + dir_1 + "/" + dir_2 + "/" + srr_name + "/"
  19. elif num_digits == 8:
  20. dir_2 = "0" + srr_name[-2:]
  21. url = prefix + dir_1 + "/" + dir_2 + "/" + srr_name + "/"
  22. elif num_digits == 9:
  23. dir_2 = srr_name[-3:]
  24. url = prefix + dir_1 + "/" + dir_2 + "/" + srr_name + "/"
  25. return url
  26.  
  27.  
  28. def prepare_path(srr_name, prefix=None):
  29. dir_1 = srr_name[:6]
  30. suffix = ".sra"
  31. url = dir_1 + "/" + srr_name + "/" + srr_name
  32. return "{}{}{}".format(prefix, url, suffix)
  33.  
  34.  
  35. def ascp_line(srr_name, out_dir):
  36. path = prepare_path(srr_name, prefix="/sra/sra-instant/reads/ByRun/sra/SRR/")
  37. return default_ascp_line.format(path, out_dir)
  38.  
  39.  
  40. def main():
  41. parser = argparse.ArgumentParser()
  42. parser.add_argument('--SRR', help='SRR name to be parsed')
  43. parser.add_argument('--file', help='file containing SRR name to be parsed')
  44. parser.add_argument('--ascp', action='store_true')
  45. parser.add_argument('--out', help='output directory')
  46. args = parser.parse_args()
  47.  
  48. suffix = default_suffix
  49.  
  50. if args.ascp:
  51. if args.file:
  52. with open(args.file) as srr_file:
  53. for line in srr_file:
  54. print(ascp_line(line.strip(), args.out))
  55. else:
  56. print(ascp_line(args.SRR, args.out))
  57. else:
  58. protocol = default_protocol
  59. prefix = default_prefix
  60. if args.file:
  61. with open(args.file) as srr_file:
  62. for line in srr_file:
  63. url = prepare_url(line.strip(), prefix)
  64. print("{}{}{}".format(protocol, url, suffix))
  65. else:
  66. url = prepare_url(args.SRR, prefix)
  67. print("{}{}{}".format(protocol, url, suffix))
  68.  
  69.  
  70. if __name__ == '__main__':
  71. main()
Add Comment
Please, Sign In to add comment