File: unicode_strings.py

package info (click to toggle)
genometools 1.6.6%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 50,576 kB
  • sloc: ansic: 271,876; ruby: 29,930; python: 5,106; sh: 3,083; makefile: 1,213; perl: 219; pascal: 159; haskell: 37; sed: 5
file content (85 lines) | stat: -rw-r--r-- 2,547 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#!/usr/bin/python
# -*- coding: utf-8 -*-

from gt.core import *
from gt.extended import *
from gt.annotationsketch import *
from gt.annotationsketch.custom_track import CustomTrack
from gt.core.gtrange import Range
import sys


class GeneRegion(object):
    """Represents a gene region"""

    def __init__(self, start, end):
        self.start = start
        self.end = end

class BetterGeneRegion(GeneRegion):
    """Has even more info and inherits from GeneRegion"""
    def __init__(self, start, end, chromosome, strand):
        GeneRegion.__init__(self, start, end)
        self.chromosome = chromosome
        self.strand = strand

if __name__ == "__main__":
    if len(sys.argv) != 3:
        sys.stderr.write("Usage: " + (sys.argv)[0] +
                         " style_file PNG_file\n")
        sys.exit(1)

    # Strings in Python3 are always unicode and unicode() does not exist
    # so there's no need to test this
    if sys.version_info >= (3, 0):
        sys.exit(0)

    nodes = []

    # construct a gene on the forward strand with two exons
    G = BetterGeneRegion(113558120, 113578742, 'chr7', '+')
    seqid = G.chromosome


    gene = FeatureNode.create_new(unicode(seqid),
                                  "gene",
                                   #100,
                                   #900,
                                   G.start,
                                   G.end,
                                   "+")
    # XXX FIXME: how to handle this case?
    # gene.add_attribute("Name", "Testcase™ あがぃいぅ")

    nodes.append(gene)

    exon = FeatureNode.create_new(seqid, "exon", 100, 200, "+")
    gene.add_child(exon)
    intron = FeatureNode.create_new(seqid, "intron", 201, 799, "+")
    gene.add_child(intron)
    exon = FeatureNode.create_new(seqid, "exon", 800, 900, "+")
    gene.add_child(exon)

  # construct a single-exon gene on the reverse strand
  # (within the intron of the forward strand gene)

    reverse_gene = FeatureNode.create_new(seqid, "gene", 400, 600, "-")
    reverse_exon = FeatureNode.create_new(seqid, "exon", 400, 600, "-")
    reverse_gene.add_child(reverse_exon)

    nodes.append(reverse_gene)

    pngfile = (sys.argv)[2]

    style = Style()
    style.load_file((sys.argv)[1])

    diagram = Diagram.from_array(nodes, Range(G.start, G.end),
                                 style)

    layout = Layout(diagram, 600, style)
    height = layout.get_height()
    canvas = CanvasCairoFile(style, 600, height)
    layout.sketch(canvas)

    canvas.to_file(pngfile)