b.difference(a) ))
for x, d in enumerate( zip( result, ref )):
+
self.assertEqual( d[0], d[1],
"unexpected results in pair %i: '%s', expected '%s'" % \
(x,
header = list( self.tabix.header )
self.assertEqual( ref, header )
- def testReopening( self ):
- '''test repeated opening of the same file.'''
- def func1():
- # opens any tabix file
- inf = pysam.Tabixfile(self.filename)
- return
-
- for i in range(10000):
- func1()
-
-
class TestParser( unittest.TestCase ):
filename = "example.gtf.gz"
self.assertEqual( self.compare[x], list(r) )
self.assertEqual( len(self.compare[x]), len(r) )
- # test indexing
for c in range(0,len(r)):
self.assertEqual( self.compare[x][c], r[c] )
- # test slicing access
- for c in range(0, len(r)-1):
- for cc in range(c+1, len(r)):
- self.assertEqual( self.compare[x][c:cc],
- r[c:cc] )
-
def testWrite( self ):
for x, r in enumerate(self.tabix.fetch( parser = pysam.asTuple() )):
self.assertEqual( "\t".join(e), str(r) )
class TestGTF( TestParser ):
-
def testRead( self ):
for x, r in enumerate(self.tabix.fetch( parser = pysam.asGTF() )):
- c = self.compare[x]
-
- self.assertEqual( len(c), len(r) )
- self.assertEqual( "\t".join(c), str(r) )
- self.assertTrue( r.gene_id.startswith("ENSG") )
- if r.feature != "gene":
- self.assertTrue( r.transcript_id.startswith("ENST") )
- self.assertEqual( c[0], r.contig )
+ self.assertEqual( "\t".join( self.compare[x]), str(r) )
class TestBed( unittest.TestCase ):
filename = "example.bed.gz"
c = self.compare[x]
for y, field in enumerate( self.columns ):
if field == "pos":
- self.assertEqual( int(c[y]) - 1, getattr( r, field ) )
- self.assertEqual( int(c[y]) - 1, r.pos )
+ self.assertEqual( int(c[y])-1, getattr( r, field ) )
+ self.assertEqual( int(c[y])-1, r.pos )
else:
self.assertEqual( c[y], getattr( r, field ),
"mismatch in field %s: %s != %s" %\
ncolumns = len(self.columns)
for x, r in enumerate(self.tabix.fetch( parser = pysam.asVCF() )):
-
c = self.compare[x]
-
- # check unmodified string
- ref_string = "\t".join( c )
- cmp_string = str(r)
- self.assertEqual( ref_string, cmp_string )
-
- # set fields and compare field-wise
for y, field in enumerate( self.columns ):
if field == "pos":
- rpos = getattr( r, field )
- self.assertEqual( int(c[y]) - 1, rpos )
- self.assertEqual( int(c[y]) - 1, r.pos )
- # increment pos by 1
- setattr( r, field, rpos + 1 )
- self.assertEqual( getattr( r, field ), rpos + 1 )
- c[y] = str(int(c[y]) + 1 )
+ r.pos += 1
+ self.assertEqual( int(c[y]), getattr( r, field ) )
+ self.assertEqual( int(c[y]), r.pos )
else:
setattr( r, field, "test_%i" % y)
c[y] = "test_%i" % y
c[ncolumns+y] = "test_%i" % y
r[y] = "test_%i" % y
self.assertEqual( c[ncolumns+y], r[y] )
-
-class TestVCF( TestParser ):
-
- filename = "example.vcf40.gz"
-
- def testOpening( self ):
- while 1:
- infile = pysam.Tabixfile( self.filename )
- infile.close()
-
- # check strings
- ref_string = "\t".join( c )
- cmp_string = str(r)
-
- self.assertEqual( ref_string, cmp_string )
-
if __name__ == "__main__":
unittest.main()