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")