/tools/filters/axt_to_fasta.py

https://bitbucket.org/cistrome/cistrome-harvard/ · Python · 49 lines · 28 code · 14 blank · 7 comment · 7 complexity · 6b1142672e4cbc60b35b323e4538f971 MD5 · raw file

  1. #!/usr/bin/env python
  2. """
  3. Adapted from bx/scripts/axt_to_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. for a in reader:
  24. if ("id" in a.attributes): id = a.attributes["id"]
  25. else: id = None
  26. print_component_as_fasta(a.components[0],id)
  27. print_component_as_fasta(a.components[1],id)
  28. print
  29. # $$$ this should be moved to a bx.align.fasta module
  30. def print_component_as_fasta(c,id=None):
  31. header = ">%s_%s_%s" % (c.src,c.start,c.start+c.size)
  32. if (id != None): header += " " + id
  33. print header
  34. print c.text
  35. if __name__ == "__main__": main()