Mercurial > repos > yufei-luo > s_mart
comparison commons/tools/tests/Test_srptTableOverlap.py @ 31:0ab839023fe4
Uploaded
| author | m-zytnicki |
|---|---|
| date | Tue, 30 Apr 2013 14:33:21 -0400 |
| parents | 94ab73e8a190 |
| children |
comparison
equal
deleted
inserted
replaced
| 30:5677346472b5 | 31:0ab839023fe4 |
|---|---|
| 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() |
