File: test_stream.py

package info (click to toggle)
genometools 1.6.2%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 50,504 kB
  • sloc: ansic: 271,868; ruby: 30,327; python: 4,942; sh: 3,230; makefile: 1,214; perl: 219; pascal: 159; haskell: 37; sed: 5
file content (110 lines) | stat: -rw-r--r-- 3,112 bytes parent folder | download | duplicates (5)
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#!/usr/bin/python
# -*- coding: utf-8 -*-

import unittest
import gt
import os

op = os.path
datadir = op.abspath(op.join(op.dirname(__file__), "..", "..",
                             "testdata"))


class StreamTest(unittest.TestCase):

    def setUp(self):
        self.gff_file = op.join(datadir, "U89959_sas.gff3")
        self.ins = gt.GFF3InStream(self.gff_file)

    def test_pull(self):
        add_introns_stream = gt.AddIntronsStream(self.ins)
        fi = gt.FeatureIndexMemory()
        gt.FeatureStream(add_introns_stream, fi).pull()

        self.assertTrue('1877523' in fi.get_seqids())


class TestDuplicateStream(unittest.TestCase):

    def setUp(self):
        self.gff_file = op.join(datadir, "addintrons.gff3")
        self.ins = gt.GFF3InStream(self.gff_file)

    def test_dup(self):
        fi = gt.FeatureIndexMemory()
        gt.FeatureStream(gt.DuplicateFeatureStream(self.ins, "intron", "exon"),
                         fi).pull()

        f = fi.get_features_for_seqid('ctg123')
        dfi = gt.FeatureNodeIteratorDepthFirst(f[0])
        f = dfi.next()
        types = set([])
        while f:
            types.update([f.type])
            f = dfi.next()
        self.assertTrue('intron' in types, types)


class TestMergeStream(unittest.TestCase):

    def setUp(self):
        self.gff_file = op.join(datadir, "mergefeat.gff3")
        self.ins = gt.GFF3InStream(self.gff_file)

    def test_merge(self):
        fi = gt.FeatureIndexMemory()
        gt.FeatureStream(gt.MergeFeatureStream(self.ins), fi).pull()

        f = fi.get_features_for_seqid('seq1')
        self.assertEqual(len(f), 1)
        dfi = gt.FeatureNodeIteratorDirect(f[0])
        sub = dfi.next()
        self.assertEqual(None, dfi.next())

        self.assertEqual(sub.start, 1000)
        self.assertEqual(sub.end, 10000)


class TestInterFeat(unittest.TestCase):

    def setUp(self):
        self.gff_file = op.join(datadir, "addintrons.gff3")
        self.ins = gt.GFF3InStream(self.gff_file)

    def test_inter(self):
        fi = gt.FeatureIndexMemory()
        gt.FeatureStream(gt.InterFeatureStream(self.ins, "exon", "intron"),
                         fi).pull()

        f = fi.get_features_for_seqid('ctg123')
        dfi = gt.FeatureNodeIteratorDepthFirst(f[0])
        f = dfi.next()
        types = set([])
        while f:
            types.update([f.type])
            f = dfi.next()
        self.assertTrue('intron' in types, types)


class TestCustomExample(unittest.TestCase):

    def setUp(self):
        self.gff_file = op.join(datadir, "eden.gff3")
        self.ins = gt.GFF3InStream(self.gff_file)

    def test_inter(self):
        fi = gt.FeatureIndexMemory()
        gt.FeatureStream(gt.CustomStreamExample(self.ins),
                         fi).pull()

        f = fi.get_features_for_seqid('ctg123')
        dfi = gt.FeatureNodeIteratorDepthFirst(f[0])
        f = dfi.next()
        types = set([])
        while f:
            types.update([f.type])
            f = dfi.next()
        self.assertTrue('bar' in types, types)

if __name__ == "__main__":
    unittest.main()