Mercurial > repos > iuc > circos
diff text-from-gff3.py @ 2:014a21767ac4 draft
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/circos commit 076837a2e9c2b6ececcea4aa286ea7a412387a96"
author | iuc |
---|---|
date | Tue, 17 Sep 2019 16:54:57 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/text-from-gff3.py Tue Sep 17 16:54:57 2019 -0400 @@ -0,0 +1,42 @@ +#!/usr/bin/env python +import logging +import sys + +from BCBio import GFF + +logging.basicConfig(level=logging.INFO) +log = logging.getLogger() + + +if __name__ == "__main__": + attr = sys.argv[2] + + for record in GFF.parse(sys.argv[1]): + if len(record.features) == 0: + continue + + for feature in sorted(record.features, key=lambda x: x.location.start): + # chrom chromStart chromEnd + # name score strand + # thickStart thickEnd itemRgb + + kv = { + "strand": 0 if not feature.location.strand else feature.location.strand, + "value": feature.qualifiers.get("score", [0])[0], + } + + if attr not in feature.qualifiers: + continue + + name = feature.qualifiers[attr][0] + + line = [ + record.id, + str(int(feature.location.start)), + str(int(feature.location.end)), + name, + ",".join(["%s=%s" % x for x in sorted(kv.items())]), + ] + + sys.stdout.write("\t".join(line)) + sys.stdout.write("\n")