2 Created on Aug 27, 2010
8 from erange import getfasta
9 #from erange import ReadDataset
10 from erange import ReadDataset
12 testDBName = "testRDS.rds"
15 class TestGetFasta(unittest.TestCase):
20 self.minHitThresh = -1
22 self.outfilename = "testFileForTestGetFasta.fa"
27 os.remove(self.outfilename)
29 print "fasta file does not exist"
34 print "RDS file does not exist"
37 def testGetDefaultRegion(self):
38 self.assertEquals({}, getfasta.getDefaultRegion(self.regionDict, self.maxsize))
40 regionDict = {"1": [],
46 self.assertEquals(result, getfasta.getDefaultRegion(regionDict, self.maxsize))
48 regionDict = {"1": [(10, 20, 10)],
52 "1": [{"start": 10, "length": 10, "topPos": [-1]}]
54 self.assertEquals(result, getfasta.getDefaultRegion(regionDict, self.maxsize))
56 regionDict = {"1": [(10, 20, 10)],
59 result = {"2": [{"start": 11, "length": 11, "topPos": [-1]}],
60 "1": [{"start": 10, "length": 10, "topPos": [-1]}]
62 self.assertEquals(result, getfasta.getDefaultRegion(regionDict, self.maxsize))
64 regionDict = {"1": [(10, 20, 10), (100, 4000, 3900)],
67 result = {"2": [{"start": 11, "length": 11, "topPos": [-1]}],
68 "1": [{"start": 10, "length": 10, "topPos": [-1]}]
70 self.assertEquals(result, getfasta.getDefaultRegion(regionDict, self.maxsize))
72 regionDict = {"1": [(10, 20, 10), (100, 4000, 3900), (50, 60, 10)],
75 result = {"2": [{"start": 11, "length": 11, "topPos": [-1]}],
76 "1": [{"start": 10, "length": 10, "topPos": [-1]},
77 {"start": 50, "length": 10, "topPos": [-1]}]
79 self.assertEquals(result, getfasta.getDefaultRegion(regionDict, self.maxsize))
82 def testGetRegionUsingPeaks(self):
83 self.assertEquals({}, getfasta.getRegionUsingPeaks(self.regionDict, self.minHitThresh, self.maxsize))
85 regionDict = {"1": [],
91 self.assertEquals(result, getfasta.getRegionUsingPeaks(regionDict, self.minHitThresh, self.maxsize))
93 regionDict = {"1": [(10, 20, 10, 15, 1)],
97 "1": [{"start": 10, "length": 10, "topPos": [5]}]
99 self.assertEquals(result, getfasta.getRegionUsingPeaks(regionDict, self.minHitThresh, self.maxsize))
104 self.assertEquals(result, getfasta.getRegionUsingPeaks(regionDict, 3, self.maxsize))
106 regionDict = {"1": [(10, 20, 10, 15, 1)],
107 "2": [(11, 21, 11, 18, 1)]
109 result = {"2": [{"start": 11, "length": 11, "topPos": [7]}],
110 "1": [{"start": 10, "length": 10, "topPos": [5]}]
112 self.assertEquals(result, getfasta.getRegionUsingPeaks(regionDict, self.minHitThresh, self.maxsize))
114 regionDict = {"1": [(10, 20, 10, 15, 1), (100, 4000, 3900, 111, 1)],
115 "2": [(11, 21, 11, 18, 1)]
117 result = {"2": [{"start": 11, "length": 11, "topPos": [7]}],
118 "1": [{"start": 10, "length": 10, "topPos": [5]}]
120 self.assertEquals(result, getfasta.getRegionUsingPeaks(regionDict, self.minHitThresh, self.maxsize))
122 regionDict = {"1": [(10, 20, 10, 15, 1), (100, 4000, 3900, 111, 1), (50, 60, 10, 59, 1)],
123 "2": [(11, 21, 11, 18, 1)]
125 result = {"2": [{"start": 11, "length": 11, "topPos": [7]}],
126 "1": [{"start": 10, "length": 10, "topPos": [5]},
127 {"start": 50, "length": 10, "topPos": [9]}]
129 self.assertEquals(result, getfasta.getRegionUsingPeaks(regionDict, self.minHitThresh, self.maxsize))
132 #TODO: write test. This seems to not make sense. We are always returning a "topPos" of range(rlen).
133 # need to check to see if the issue might be with commoncode.findPeak as there is a lot of questionable
135 def testGetRegionUsingRDS(self):
136 rds = ReadDataset.ReadDataset(testDBName, initialize=True, datasetType="DNA", verbose=False)
137 rds.insertMetadata([("readsize", "100")])
138 rdsEntryList = [("testRead", "chr1", 10, 100, "+", 1.0, "", "")]
139 rds.insertUniqs(rdsEntryList)
140 self.assertEquals({}, getfasta.getRegionUsingRDS(self.regionDict, rds, self.minHitThresh, self.maxsize))
142 regionDict = {"1": [],
148 self.assertEquals(result, getfasta.getRegionUsingRDS(regionDict, rds, self.minHitThresh, self.maxsize))
150 # Ack with a capital ACK.
151 regionDict = {"1": [(1, 600, 5)],
154 result = {"1": [{"start": 1, "length": 5, "topPos": [0, 1, 2, 3, 4]}],
157 self.assertEquals(result, getfasta.getRegionUsingRDS(regionDict, rds, self.minHitThresh, self.maxsize))
162 def testWriteFastaFile(self):
164 getfasta.writeFastaFile(ncregions, "hsapiens", self.outfilename)
165 for line in open(self.outfilename):
166 self.assertEquals("", line)
168 ncregions = {"1": [],
171 getfasta.writeFastaFile(ncregions, "hsapiens", self.outfilename)
172 for line in open(self.outfilename):
173 self.assertEquals("", line)
175 ncregions = {"1": [{"start": 12000, "length": 50, "topPos": [6]}],
178 getfasta.writeFastaFile(ncregions, "hsapiens", self.outfilename)
179 fastaFile = open(self.outfilename)
180 self.assertEquals(">chr1:11956-12057\n", fastaFile.readline())
181 self.assertEquals("tcatagtcccctggccccattaatggattctgggatagacatgaggaccaagccaggTGGGATGAGTGAGTGTGGCTTCTGGAGGAAGTGGGGACACAGGA\n", fastaFile.readline())
182 self.assertEquals("", fastaFile.readline())
184 ncregions = {"1": [{"start": 12000, "length": 50, "topPos": [6]}],
185 "2": [{"start": 18000, "length": 50, "topPos": [30]}]
187 getfasta.writeFastaFile(ncregions, "hsapiens", self.outfilename)
188 fastaFile = open(self.outfilename)
189 self.assertEquals(">chr1:11956-12057\n", fastaFile.readline())
190 self.assertEquals("tcatagtcccctggccccattaatggattctgggatagacatgaggaccaagccaggTGGGATGAGTGAGTGTGGCTTCTGGAGGAAGTGGGGACACAGGA\n", fastaFile.readline())
191 self.assertEquals(">chr2:17980-18081\n", fastaFile.readline())
192 self.assertEquals("ATCATTTCAAGGATGCTTTGAGGGTAAAAAGAATGATCAATTGTGAAGCAGTGAATTGTGCTGCCAGGCACAATTCATTGGGTAATAGAAAGCTTCATTTA\n", fastaFile.readline())
193 self.assertEquals("", fastaFile.readline())
195 ncregions = {"1": [{"start": 12000, "length": 50, "topPos": [6, 20]}],
196 "2": [{"start": 18000, "length": 50, "topPos": [30]}]
198 getfasta.writeFastaFile(ncregions, "hsapiens", self.outfilename)
199 fastaFile = open(self.outfilename)
200 self.assertEquals(">chr1:11956-12057\n", fastaFile.readline())
201 self.assertEquals("tcatagtcccctggccccattaatggattctgggatagacatgaggaccaagccaggTGGGATGAGTGAGTGTGGCTTCTGGAGGAAGTGGGGACACAGGA\n", fastaFile.readline())
202 self.assertEquals(">chr2:17980-18081\n", fastaFile.readline())
203 self.assertEquals("ATCATTTCAAGGATGCTTTGAGGGTAAAAAGAATGATCAATTGTGAAGCAGTGAATTGTGCTGCCAGGCACAATTCATTGGGTAATAGAAAGCTTCATTTA\n", fastaFile.readline())
204 self.assertEquals("", fastaFile.readline())
206 ncregions = {"1": [{"start": 12000, "length": 50, "topPos": [6]},
207 {"start": 15000, "length": 50, "topPos": [2]}
209 "2": [{"start": 18000, "length": 50, "topPos": [30]}]
211 getfasta.writeFastaFile(ncregions, "hsapiens", self.outfilename)
212 fastaFile = open(self.outfilename)
213 self.assertEquals(">chr1:11956-12057\n", fastaFile.readline())
214 self.assertEquals("tcatagtcccctggccccattaatggattctgggatagacatgaggaccaagccaggTGGGATGAGTGAGTGTGGCTTCTGGAGGAAGTGGGGACACAGGA\n", fastaFile.readline())
215 self.assertEquals(">chr1:14952-15053\n", fastaFile.readline())
216 self.assertEquals("AGTGAATGAGGGAAAGGGCAGGGCCCGGGACTGGGGAATCTGTAGGGTCAATGGAGGAGTTCAGAGAAGGTGCAACATTTCTGACCCCCTACAAGGTGCTT\n", fastaFile.readline())
217 self.assertEquals(">chr2:17980-18081\n", fastaFile.readline())
218 self.assertEquals("ATCATTTCAAGGATGCTTTGAGGGTAAAAAGAATGATCAATTGTGAAGCAGTGAATTGTGCTGCCAGGCACAATTCATTGGGTAATAGAAAGCTTCATTTA\n", fastaFile.readline())
219 self.assertEquals("", fastaFile.readline())
223 suite = unittest.TestSuite()
224 suite.addTest(unittest.makeSuite(TestGetFasta))
229 if __name__ == "__main__":
230 #import sys;sys.argv = ['', 'Test.testName']