diff commons/tools/tests/Test_refalign2fasta.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/commons/tools/tests/Test_refalign2fasta.py	Mon Apr 29 03:20:15 2013 -0400
@@ -0,0 +1,135 @@
+import unittest
+import time
+from commons.tools.refalign2fasta import *
+from commons.core.utils.FileUtils import FileUtils
+
+
+class Test_refalign2fasta( unittest.TestCase ):
+    
+    
+    def setUp( self ):
+        self._uniqId = "%s_%s" % ( time.strftime("%Y%m%d%H%M%S") , os.getpid() )
+        
+        
+    def tearDown( self ):
+        self._uniqId = None
+        
+        
+    def test_getAlignments( self ):
+        inFile = "dummyInFile_%s" % ( self._uniqId )
+        inFileHandler = open( inFile, "w" )
+        inFileHandler.write( "AAAACTTTT-T\tAAAA-TTTGGT\trefseq::1 chr3 1..10\n" )  # 1 insertion and 1 deletion in the copy + 1 mismatch
+        inFileHandler.close()
+        lExp = [ ( "AAAACTTTT-T", "AAAA-TTTGGT", "refseq::1 chr3 1..10" ) ]
+        lObs = getAlignments( inFile )
+        self.assertEqual( lExp, lObs )
+        os.remove( inFile )
+        
+        
+    def test_getGaps_OneGap( self ):
+        sequence = "AAAACTTTT-T"
+        lExp = [ ( 9, 1 ) ]
+        lObs = getGaps( sequence )
+        self.assertEqual( lExp, lObs )
+        
+        
+    def test_getGaps_TwoGaps( self ):
+        sequence = "AAAA--CTTT-TT"
+        lExp = [ ( 4, 2 ), ( 8, 1 ) ]
+        lObs = getGaps( sequence )
+        self.assertEqual( lExp, lObs )
+        
+        
+    def test_getGapsOnRefSeq_OneSeq( self ):
+        lAlign = [ ( "AAAACTTTT-T", "AAAA-TTTGGT", "refseq::1 chr3 1..10" ) ]
+        lExp = [ [ ( 9, 1 ) ] ]
+        lObs = getGapsOnRefSeq( lAlign )
+        self.assertEqual( lExp, lObs )
+        
+        
+    def test_getGapsOnRefSeq_TwoSeq( self ):
+        lAlign = [ ( "AAAACTTTT-T", "AAAA-TTTGGT", "refseq::1 chr3 1..10" ) ]
+        lAlign.append( ( "AAAA--CTTT-TT", "AAAAGGCTTTGTT", "refseq::2 chr5 1..10" ) )
+        lExp = [ [ ( 9, 1 ) ] ]
+        lExp.append( [ ( 4, 2 ), ( 8, 1 ) ] )
+        lObs = getGapsOnRefSeq( lAlign )
+        self.assertEqual( lExp, lObs )
+        
+        
+    def test_insertGap( self ):
+        sequence = "GGGGAAAGTTG"
+        start = 5
+        length = 3
+        exp = "GGGGA---AAGTTG"
+        obs = insertGap( sequence, start, length )
+        self.assertEqual( exp, obs )
+        
+        
+    def test_insertListGaps( self ):
+        sequence = "GGGGAAAGTTG"
+        lGaps =[ ( 5, 3 ), ( 9, 1 ) ]
+        exp = "GGGGA---AAGT-TG"
+        obs = insertListGaps( sequence, lGaps )
+        self.assertEqual( exp, obs )
+        
+        
+    def test_insertGapsInRefSeq( self ):
+        lAlign = [ ( "AAAACTTTT-T", "AAAA-TTTGGT", "refseq::1 chr3 1..10" ) ]
+        lAlign.append( ( "AAAA--CTTT-TT", "AAAAGGCTTTGTT", "refseq::2 chr5 1..10" ) )
+        lGapsOnRefSeqPerAlign = [ [ ( 9, 1 ) ] ]
+        lGapsOnRefSeqPerAlign.append( [ ( 4, 2 ), ( 8, 1 ) ] )
+        refseqName = "reference_sequence"
+        lExp = ( refseqName, "AAAA--CTTT-T-T" )
+        lObs = insertGapsInRefSeq( lAlign, lGapsOnRefSeqPerAlign, refseqName )
+        self.assertEqual( lExp, lObs )
+        
+        
+    def test_insertgap_seq( self ):
+        # AAAACTTTT-T (refseq)
+        # AAAA-TTTGGT ( copy 1)
+        #
+        # AAAA--CTTT-TT (refseq)
+        # AAAAGGCTTTGTT (copy 2)
+        lAlign = [ ( "AAAACTTTT-T", "AAAA-TTTGGT", "refseq::1 chr3 1..10" ) ]
+        lAlign.append( ( "AAAA--CTTT-TT", "AAAAGGCTTTGTT", "refseq::2 chr5 1..10" ) )
+        lGapsOnRefSeqPerAlign = [ [ ( 9, 1 ) ] ]
+        lGapsOnRefSeqPerAlign.append( [ ( 4, 2 ), ( 8, 1 ) ] )
+        lExp = [ ( "refseq::1 chr3 1..10", "AAAA---TTT-GGT" ) ]
+        lExp.append( ( "refseq::2 chr5 1..10", "AAAAGGCTTTGT-T" ) )
+        lObs = insertgap_seq( lAlign, lGapsOnRefSeqPerAlign )
+        self.assertEqual( lExp, lObs )
+        
+        
+    def test_getSeqWithDeletions( self ):
+        lAlign = [ ( "AAAACTTTT-T", "AAAA-TTTGGT", "refseq::1 chr3 1..10" ) ]
+        lExp = [ ( "refseq::1 chr3 1..10", "AAAA-TTTGT" ) ]
+        lObs = getSeqWithDeletions( lAlign )
+        self.assertEqual( lExp, lObs )
+        
+        
+    def test_saveOnlyWithDeletions( self ):
+        refseqName = "Dm-B-G54-Map3"
+        lAlign = [ ( "AAAACTTTT-T", "AAAA-TTTGGT", "Dm-B-G54-Map3::1 chr3 1..10" ) ]
+        lAlign.append( ( "AAAA--CTTT-TT", "AAAAGGCTTTGTT", "Dm-B-G54-Map3::2 chr5 1..10" ) )
+        
+        expFile = "dummyExpFile_%s"  %( self._uniqId )
+        expFileHandler = open( expFile, "w" )
+        expFileHandler.write( ">Dm-B-G54-Map3\n" )
+        expFileHandler.write( "AAAACTTTTT\n" )
+        expFileHandler.write( ">Dm-B-G54-Map3::1 chr3 1..10\n" )
+        expFileHandler.write( "AAAA-TTTGT\n" )
+        expFileHandler.write( ">Dm-B-G54-Map3::2 chr5 1..10\n" )
+        expFileHandler.write( "AAAACTTTTT\n" )
+        expFileHandler.close()
+        
+        obsFile = "dummyObsFile_%s" % ( self._uniqId )
+        
+        saveOnlyWithDeletions( lAlign, refseqName, obsFile )
+        
+        self.assertTrue( FileUtils.are2FilesIdentical( expFile, obsFile ) )
+        
+        for f in [ expFile, obsFile ]:
+            os.remove( f )
+            
+if __name__ == "__main__":
+        unittest.main()
\ No newline at end of file