Mercurial > repos > yufei-luo > s_mart
diff SMART/Java/Python/test/Test_FindOverlapsOptim.py @ 18:94ab73e8a190
Uploaded
author | m-zytnicki |
---|---|
date | Mon, 29 Apr 2013 03:20:15 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SMART/Java/Python/test/Test_FindOverlapsOptim.py Mon Apr 29 03:20:15 2013 -0400 @@ -0,0 +1,174 @@ +import unittest +import os +from SMART.Java.Python.FindOverlapsOptim import FindOverlapsOptim +from SMART.Java.Python.ncList.NCListCursor import NCListCursor +from SMART.Java.Python.ncList.test.MockFindOverlapsWithSeveralIntervals import * + +REFERENCE = 0 +QUERY = 1 + +class Test_FindOverlapsOptim(unittest.TestCase): + + def setUp(self): + self._inputRefGff3FileName = 'sorted_Ref.gff3' + self._inputQueryGff3FileName = 'sorted_Query.gff3' + self._writeQueryGff3File(self._inputQueryGff3FileName) + self._outputGff3FileName = 'overlaps.gff3' + iMock = MockFindOverlapsWithServeralIntervals_case1() + iMock.write(self._inputRefGff3FileName) + self._iFOO = FindOverlapsOptim(0) + self._iFOO.setRefFileName(self._inputRefGff3FileName, "gff3") + self._iFOO.setQueryFileName(self._inputQueryGff3FileName, "gff3") + self._iFOO.setOutputFileName(self._outputGff3FileName) + self._iFOO.prepareIntermediateFiles() + self._iFOO.createNCLists() + self._queryNcList = self._iFOO._ncLists[QUERY]["chr1"] + self._refNcList = self._iFOO._ncLists[REFERENCE]["chr1"] + + def tearDown(self): + os.remove(self._inputRefGff3FileName) + os.remove(self._inputQueryGff3FileName) + os.remove(self._outputGff3FileName) + + def test_isOverlapping_true(self): + queryCursor = NCListCursor(None, self._queryNcList, 5, 0) + refCursor = NCListCursor(None, self._refNcList, 4, 0) + obs = self._iFOO.isOverlapping(queryCursor, refCursor) + exp = 0 + self.assertEquals(exp, obs) + + def test_isOverlapping_false_left(self): + queryCursor = NCListCursor(None, self._queryNcList, 5, 0) + refCursor = NCListCursor(None, self._refNcList, 2, 0) + obs = self._iFOO.isOverlapping(queryCursor, refCursor) + exp = -1 + self.assertEquals(exp, obs) + + def test_isOverlapping_false_right(self): + queryCursor = NCListCursor(None, self._queryNcList, 5, 0) + refCursor = NCListCursor(None, self._refNcList, 1, 0) + obs = self._iFOO.isOverlapping(queryCursor, refCursor) + exp = 1 + self.assertEquals(exp, obs) + + def test_isLastElement_true(self): + refCursor = NCListCursor(None, self._refNcList, 4, 0) + obsBool = refCursor.isLast() + expBool = True + self.assertEquals(expBool, obsBool) + + def test_isLastElement_false(self): + refCursor = NCListCursor(None, self._refNcList, 3, 0) + obsBool = refCursor.isLast() + expBool = False + self.assertEquals(expBool, obsBool) + + def test_isLastElement_highestLevel_true(self): + refCursor = NCListCursor(None, self._refNcList, 1, 0) + obsBool = refCursor.isLast() + expBool = True + self.assertEquals(expBool, obsBool) + + def test_isLastElement_highestLevel_false(self): + refCursor = NCListCursor(None, self._refNcList, 0, 0) + obsBool = refCursor.isLast() + expBool = False + self.assertEquals(expBool, obsBool) + + def test_findOverlapIter(self): + queryCursor = NCListCursor(None, self._queryNcList, 2, 0) + refCursor = NCListCursor(None, self._refNcList, 0, 0) + queryTranscript = queryCursor.getTranscript() + done = False + (cursor, done, empty) = self._iFOO.findOverlapIter(queryTranscript, refCursor, done) + obsFirstOverlapLAddr = (cursor._lIndex, done, empty) + expFirstOverlapLAddr = 4, True, False + self.assertEquals(expFirstOverlapLAddr, obsFirstOverlapLAddr) + + def test_not_findOverlapIter(self): + queryCursor = NCListCursor(None, self._queryNcList, 4, 0) + refCursor = NCListCursor(None, self._refNcList, 1, 0) + queryTranscript = queryCursor.getTranscript() + done = False + (cursor, done, empty) = self._iFOO.findOverlapIter(queryTranscript, refCursor, done) + obsFirstOverlapLAddr = (cursor._lIndex, done, empty) + expFirstOverlapLAddr = -1, False, True + self.assertEquals(expFirstOverlapLAddr, obsFirstOverlapLAddr) + + def test_findOverlapIter_not_the_first_RefOverlap(self): + queryCursor = NCListCursor(None, self._queryNcList, 3, 0) + refCursor = NCListCursor(None, self._refNcList, 4, 0) + queryTranscript = queryCursor.getTranscript() + done = True + (cursor, done, empty) = self._iFOO.findOverlapIter(queryTranscript, refCursor, done) + obsFirstOverlapLAddr = (cursor._lIndex, done, empty) + expFirstOverlapLAddr = 1, True, False + self.assertEquals(expFirstOverlapLAddr, obsFirstOverlapLAddr) + + def test_moveDown(self): + refCursor = NCListCursor(None, self._refNcList, 0, 0) + refCursor.moveDown() + expFirstChildLAddr = 2 + self.assertEquals(expFirstChildLAddr, refCursor._lIndex) + + def test_moveUp(self): + refCursor = NCListCursor(None, self._refNcList, 4, 0) + refCursor.moveUp() + expFirstChildLAddr = 0 + self.assertEquals(expFirstChildLAddr, refCursor._lIndex) + + def test_moveRight(self): + refCursor = NCListCursor(None, self._refNcList, 3, 0) + refCursor.moveRight() + expFirstChildLAddr = 4 + self.assertEquals(expFirstChildLAddr, refCursor._lIndex) + + def test_moveNext(self): + refCursor = NCListCursor(None, self._refNcList, 6, 0) + refCursor.moveNext() + expFirstChildLAddr = 1 + self.assertEquals(expFirstChildLAddr, refCursor._lIndex) + + def test_not_findOverlapIter_between2RefIntervals(self): + inputQueryGff3FileName = 'query2.gff3' + self._writeQueryGff3File2(inputQueryGff3FileName) + self._outputGff3FileName = 'overlaps.gff3' + iMock = MockFindOverlapsWithServeralIntervals_case1() + iMock.write(self._inputRefGff3FileName) + _iFOO = FindOverlapsOptim(0) + _iFOO.setRefFileName(self._inputRefGff3FileName, "gff3") + _iFOO.setQueryFileName(inputQueryGff3FileName, "gff3") + _iFOO.setOutputFileName(self._outputGff3FileName) + _iFOO.prepareIntermediateFiles() + _iFOO.createNCLists() + _queryNcList = _iFOO._ncLists[QUERY]["chr1"] + _refNcList = _iFOO._ncLists[REFERENCE]["chr1"] + queryCursor = NCListCursor(None, _queryNcList, 0, 0) + refCursor = NCListCursor(None, _refNcList, 0, 0) + queryTranscript = queryCursor.getTranscript() + done = True + (cursor, done, empty) = _iFOO.findOverlapIter(queryTranscript, refCursor, done) + lIndex = cursor._lIndex + obsFirstOverlapLAddr = (lIndex, done, empty) + expFirstOverlapLAddr = 1, False, True + self.assertEquals(expFirstOverlapLAddr, obsFirstOverlapLAddr) + os.remove(inputQueryGff3FileName) + + def _writeQueryGff3File2(self, fileName): + f = open(fileName, 'w') + f.write("chr1\tquery\ttest1\t1100\t1150\t126\t+\t.\tID=test1.1;Name=test1.1\n") + f.write("chr1\tquery\ttest2\t1250\t1300\t781\t+\t.\tID=test1.2;Name=test1.2\n") + f.close() + + def _writeQueryGff3File(self, fileName): + f = open(fileName, 'w') + f.write("chr1\tquery\ttest1.1\t25\t150\t126\t+\t.\tID=test1.1;Name=test1.1\n") + f.write("chr1\tquery\ttest1.2\t70\t850\t781\t+\t.\tID=test1.2;Name=test1.2\n") + f.write("chr1\tquery\ttest1.3\t550\t850\t201\t+\t.\tID=test1.3;Name=test1.3\n") + f.write("chr1\tquery\ttest1.4\t925\t1025\t101\t+\t.\tID=test1.4;Name=test1.4\n") + f.write("chr1\tquery\ttest1.5\t1201\t1210\t10\t+\t.\tID=test1.5;Name=test1.5\n") + f.write("chr1\tquery\ttest1.6\t1500\t1600\t101\t+\t.\tID=test1.6;Name=test1.6\n") + f.close() + +if __name__ == "__main__": + unittest.main()