/tools/filters/axt_to_concat_fasta.py

https://bitbucket.org/cistrome/cistrome-harvard/ · Python · 51 lines · 30 code · 14 blank · 7 comment · 4 complexity · 092cc0e5bdf15eba96d536326996f17f MD5 · raw file

  1. #!/usr/bin/env python
  2. """
  3. Adapted from bx/scripts/axt_to_concat_fasta.py
  4. """
  5. from galaxy import eggs
  6. import pkg_resources
  7. pkg_resources.require( "bx-python" )
  8. import sys
  9. import bx.align.axt
  10. def usage(s=None):
  11. message = """
  12. axt_to_fasta species1 species2 < axt_file > fasta_file
  13. """
  14. if (s == None): sys.exit (message)
  15. else: sys.exit ("%s\n%s" % (s,message))
  16. def main():
  17. # check the command line
  18. species1 = sys.argv[1]
  19. species2 = sys.argv[2]
  20. # convert the alignment blocks
  21. reader = bx.align.axt.Reader(sys.stdin,support_ids=True,\
  22. species1=species1,species2=species2)
  23. sp1text = list()
  24. sp2text = list()
  25. for a in reader:
  26. sp1text.append(a.components[0].text)
  27. sp2text.append(a.components[1].text)
  28. sp1seq = "".join(sp1text)
  29. sp2seq = "".join(sp2text)
  30. print_component_as_fasta(sp1seq,species1)
  31. print_component_as_fasta(sp2seq,species2)
  32. # $$$ this should be moved to a bx.align.fasta module
  33. def print_component_as_fasta(text,src):
  34. header = ">" + src
  35. print header
  36. print text
  37. if __name__ == "__main__": main()