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