| 18 | 1 import unittest | 
|  | 2 import os | 
|  | 3 import time | 
|  | 4 import pyRepet.sql.RepetDBMySQL | 
|  | 5 from commons.core.utils.FileUtils import FileUtils | 
|  | 6 from commons.tools import srptTableOverlap | 
|  | 7 | 
|  | 8 | 
|  | 9 class Test_srptTableOverlap( unittest.TestCase ): | 
|  | 10 | 
|  | 11     def setUp(self): | 
|  | 12         self._uniqId = "%s_%s" % ( time.strftime("%Y%m%d%H%M%S") , os.getpid() ) | 
|  | 13         self._db = pyRepet.sql.RepetDBMySQL.RepetDB( os.environ["REPET_USER"], | 
|  | 14                                                      os.environ["REPET_HOST"], | 
|  | 15                                                      os.environ["REPET_PW"], | 
|  | 16                                                      os.environ["REPET_DB"] ) | 
|  | 17 | 
|  | 18 | 
|  | 19     def test_getOverlapAllPaths(self): | 
|  | 20         qryFileName = "dummyQryFile_%s" % ( self._uniqId ) | 
|  | 21         qryF = open( qryFileName, "w" ) | 
|  | 22         qryF.write("1\tchr1\t1301\t2000\tTE2\t11\t17\t1e-20\t30\t90.2\n") | 
|  | 23         qryF.close() | 
|  | 24         qryTable = "dummyQryTable_%s" % ( self._uniqId ) | 
|  | 25         self._db.create_table( self._db, qryTable, qryFileName, "path" ) | 
|  | 26         sbjFileName = "dummySbjFile_%s" % ( self._uniqId ) | 
|  | 27         sbjF = open( sbjFileName, "w" ) | 
|  | 28         sbjF.write("1\tchr1\t1001\t1500\tTE1\t11\t17\t1e-20\t30\t90.2\n")   # 200-bp overlap: 1301-1500 | 
|  | 29         sbjF.write("2\tchr1\t1401\t1800\tTE2\t11\t17\t1e-20\t30\t90.2\n")   # 300-bp overlap: 1501-1800 | 
|  | 30         sbjF.write("3\tchr1\t2001\t2100\tTE2\t11\t17\t1e-20\t30\t90.2\n") | 
|  | 31         sbjF.write("4\tchr2\t1301\t2000\tTE2\t11\t17\t1e-20\t30\t90.2\n")   # different query | 
|  | 32         sbjF.close() | 
|  | 33         sbjTable = "dummySbjTable_%s" % ( self._uniqId ) | 
|  | 34         self._db.create_table( self._db, sbjTable, sbjFileName, "path" ) | 
|  | 35         exp_sum_osize, exp_sum_non_osize, exp_sum_qsize = 500, 200, 700 | 
|  | 36         obs_sum_osize, obs_sum_non_osize, obs_sum_qsize = srptTableOverlap.getOverlapAllPaths( qryTable, "path", sbjTable, "path", self._db ) | 
|  | 37         self.assertEqual( obs_sum_osize, exp_sum_osize ) | 
|  | 38         self.assertEqual( obs_sum_non_osize, exp_sum_non_osize ) | 
|  | 39         self.assertEqual( obs_sum_qsize, exp_sum_qsize ) | 
|  | 40         os.remove( qryFileName ) | 
|  | 41         os.remove( sbjFileName ) | 
|  | 42         self._db.remove_if_exist( qryTable ) | 
|  | 43         self._db.remove_if_exist( sbjTable ) | 
|  | 44 | 
|  | 45 | 
|  | 46     def test_pathOverlapByPath(self): | 
|  | 47         qryFileName = "dummyQryFile_%s" % ( self._uniqId ) | 
|  | 48         qryF = open( qryFileName, "w" ) | 
|  | 49         qryF.write("1\tchr1\t1301\t2000\tTE2\t1\t700\t1e-80\t850\t90.2\n") | 
|  | 50         qryF.write("1\tchr1\t2301\t3000\tTE2\t801\t1500\t1e-90\t930\t90.2\n") | 
|  | 51         qryF.close() | 
|  | 52         qryTable = "dummyQryTable_%s" % ( self._uniqId ) | 
|  | 53         self._db.create_table( self._db, qryTable, qryFileName, "path" ) | 
|  | 54         sbjFileName = "dummySbjFile_%s" % ( self._uniqId ) | 
|  | 55         sbjF = open( sbjFileName, "w" ) | 
|  | 56         sbjF.write("1\tchr1\t1401\t1800\tTE2\t11\t17\t1e-20\t30\t90.2\n") | 
|  | 57         sbjF.write("1\tchr1\t2101\t250000\tTE2\t11\t17\t1e-20\t30\t90.2\n") | 
|  | 58         sbjF.write("2\tchr1\t3501\t4000\tTE3\t11\t17\t1e-20\t30\t90.2\n") | 
|  | 59         sbjF.close() | 
|  | 60         sbjTable = "dummySbjTable_%s" % ( self._uniqId ) | 
|  | 61         self._db.create_table( self._db, sbjTable, sbjFileName, "path" ) | 
|  | 62         expFileName = "dummyOutFileExp_%s" % ( self._uniqId ) | 
|  | 63         expF = open( expFileName, "w" ) | 
|  | 64         expF.write("1\tTE2\t1400\t1:TE2\t1\t248300\t1100\t0.785714\t0.004430\n") | 
|  | 65         expF.close() | 
|  | 66         obsFileName = "dummyOutFileObs_%s" % ( self._uniqId ) | 
|  | 67         obsF = open( obsFileName, "w" ) | 
|  | 68         srptTableOverlap.pathOverlapByPath( qryTable, "path", sbjTable, "path", self._db, obsF ) | 
|  | 69         obsF.close() | 
|  | 70         self.assertTrue(  FileUtils.are2FilesIdentical( obsFileName, expFileName ) ) | 
|  | 71         for f in [ qryFileName, sbjFileName, expFileName, obsFileName ]: | 
|  | 72             os.remove( f ) | 
|  | 73         self._db.remove_if_exist( qryTable ) | 
|  | 74         self._db.remove_if_exist( sbjTable ) | 
|  | 75         self._db.remove_if_exist( sbjTable+"_bin" ) | 
|  | 76 | 
|  | 77 | 
|  | 78 if __name__ == "__main__": | 
|  | 79         unittest.main() |