def test_headerfile_write_fail(self): subdb = SequenceFileDB(self.dbfile) try: del subdb.filepath # remove 'filepath' attribute for test db = PrefixUnionDict({'prefix': subdb}) assert len(db) == 2 assert 'prefix.seq1' in db output = testutil.tempdatafile('prefixUnionDict-write-fail.txt') try: db.writeHeaderFile(output) except AttributeError: pass finally: subdb.close() # closes both db and subdb
def test_headerfile_write_fail(self): subdb = SequenceFileDB(self.dbfile) try: del subdb.filepath # remove 'filepath' attribute for test db = PrefixUnionDict({'prefix': subdb}) assert len(db) == 2 assert 'prefix.seq1' in db output = testutil.tempdatafile('prefixUnionDict-write-fail.txt') try: db.writeHeaderFile(output) except AttributeError: pass finally: subdb.close() # closes both db and subdb
def test_headerfile_create(self): header = testutil.datafile('prefixUnionDict-1.txt') db = PrefixUnionDict(filename=header) try: assert len(db) == 2 assert 'a.seq1' in db finally: close_pud_dicts(db)
def test_headerfile_create_with_trypath(self): header = testutil.datafile('prefixUnionDict-1.txt') db = PrefixUnionDict(filename=header, trypath=[os.path.dirname(header)]) try: assert len(db) == 2, db.prefixDict finally: close_pud_dicts(db)
class PrefixUnionMemberDict_Test(unittest.TestCase): def setUp(self): dnaseq = testutil.datafile('dnaseq.fasta') seqdb = SequenceFileDB(dnaseq) # contains 'seq1', 'seq2' self.db = PrefixUnionDict({'prefix': seqdb}) self.mdb = self.db.newMemberDict() def tearDown(self): close_pud_dicts(self.db) def test_basic(self): self.mdb['prefix'] = 'this is from seqdb dnaseq.fasta' seq = self.db['prefix.seq1'] assert self.mdb[seq] == 'this is from seqdb dnaseq.fasta' def test_possible_keys(self): assert list(self.mdb.possibleKeys()) == ['prefix'] def test_bad_prefix(self): try: self.mdb['foo'] = "xyz" assert 0, "should fail before this" except KeyError: pass def test_bad_keytype(self): try: self.mdb['some non-seq-obj'] assert 0, "should fail before this" except TypeError: pass def test_default_val(self): self.mdb = self.db.newMemberDict(default='baz') seq = self.db['prefix.seq1'] assert self.mdb[seq] == 'baz' def test_no_default_val(self): self.mdb = self.db.newMemberDict() seq = self.db['prefix.seq1'] try: self.mdb[seq] assert 0, "should fail before this" except KeyError: pass
class PrefixUnionMemberDict_Test(unittest.TestCase): def setUp(self): dnaseq = testutil.datafile('dnaseq.fasta') seqdb = SequenceFileDB(dnaseq) # contains 'seq1', 'seq2' self.db = PrefixUnionDict({'prefix': seqdb}) self.mdb = self.db.newMemberDict() def tearDown(self): close_pud_dicts(self.db) def test_basic(self): self.mdb['prefix'] = 'this is from seqdb dnaseq.fasta' seq = self.db['prefix.seq1'] assert self.mdb[seq] == 'this is from seqdb dnaseq.fasta' def test_possible_keys(self): assert list(self.mdb.possibleKeys()) == ['prefix'] def test_bad_prefix(self): try: self.mdb['foo'] = "xyz" assert 0, "should fail before this" except KeyError: pass def test_bad_keytype(self): try: self.mdb['some non-seq-obj'] assert 0, "should fail before this" except TypeError: pass def test_default_val(self): self.mdb = self.db.newMemberDict(default='baz') seq = self.db['prefix.seq1'] assert self.mdb[seq] == 'baz' def test_no_default_val(self): self.mdb = self.db.newMemberDict() seq = self.db['prefix.seq1'] try: self.mdb[seq] assert 0, "should fail before this" except KeyError: pass
def test_funny_key2(self): "check handling of ID containing multiple separators" dnaseq = testutil.datafile('funnyseq.fasta') seqdb = SequenceFileDB(dnaseq) # contains 'seq1', 'seq2' try: pudb = PrefixUnionDict({'prefix': seqdb}) seq = pudb['prefix.seq.2.even.longer'] finally: seqdb.close()
def test_headerfile_create_fail(self): header = testutil.datafile('prefixUnionDict-3.txt') try: db = PrefixUnionDict(filename=header) assert 0, "should not reach this point" except IOError: pass except AssertionError: close_pud_dicts(db) raise
def test_headerfile_write(self): header = testutil.datafile('prefixUnionDict-2.txt') db = PrefixUnionDict(filename=header) try: assert len(db) == 4 assert 'a.seq1' in db assert 'b.seq1' in db output = testutil.tempdatafile('prefixUnionDict-write.txt') db.writeHeaderFile(output) finally: close_pud_dicts(db) db2 = PrefixUnionDict(filename=output, trypath=[os.path.dirname(header)]) try: assert len(db2) == 4 assert 'a.seq1' in db2 assert 'b.seq1' in db2 finally: close_pud_dicts(db2)
def test_headerfile_write(self): header = testutil.datafile('prefixUnionDict-2.txt') db = PrefixUnionDict(filename=header) try: assert len(db) == 4 assert 'a.seq1' in db assert 'b.seq1' in db output = testutil.tempdatafile('prefixUnionDict-write.txt') db.writeHeaderFile(output) finally: close_pud_dicts(db) db2 = PrefixUnionDict(filename=output, trypath=[os.path.dirname(header)]) try: assert len(db2) == 4 assert 'a.seq1' in db2 assert 'b.seq1' in db2 finally: close_pud_dicts(db2)
def test_headerfile_create_conflict(self): "test non-empty prefixDict with a passed in PUD header file: conflict" subdb = SequenceFileDB(self.dbfile) try: header = testutil.datafile('prefixUnionDict-1.txt') try: db = PrefixUnionDict(filename=header, prefixDict={'foo': subdb}) assert 0, "should not get here" except TypeError: pass finally: subdb.close()
class PrefixUnionDict_Test(unittest.TestCase): """ Test for all of the basic dictionary functions on 'PrefixUnionDict'. """ def setUp(self): dnaseq = testutil.datafile('dnaseq.fasta') seqdb = SequenceFileDB(dnaseq) # contains 'seq1', 'seq2' self.db = PrefixUnionDict({'prefix': seqdb}) def tearDown(self): close_pud_dicts(self.db) def test_keys(self): "PrefixUnionDict keys" k = self.db.keys() k.sort() assert k == ['prefix.seq1', 'prefix.seq2'] def test_contains(self): "PrefixUnionDict contains" # first, check "is this sequence name in the PUD?"-style contains. assert 'prefix.seq1' in self.db assert 'prefix.seq2' in self.db assert 'foo' not in self.db assert 'prefix.foo' not in self.db # now, check "is this sequence in the PUD?" seq = self.db['prefix.seq1'] assert seq in self.db # finally, check failure: "is something other than str/seq in db" try: 12345 in self.db assert 0, "should not get to this point" except AttributeError: pass def test_invert_class(self): "PrefixUnionDict __invert__" seq = self.db['prefix.seq1'] inversedb = ~self.db assert inversedb[seq] == 'prefix.seq1' assert seq in inversedb assert 'foo' not in inversedb def test_funny_key(self): "check handling of ID containing multiple separators" dnaseq = testutil.datafile('funnyseq.fasta') seqdb = SequenceFileDB(dnaseq) # contains 'seq1', 'seq2' try: pudb = PrefixUnionDict({'prefix': seqdb}) seq = pudb['prefix.seq.1.more'] finally: seqdb.close() def test_funny_key2(self): "check handling of ID containing multiple separators" dnaseq = testutil.datafile('funnyseq.fasta') seqdb = SequenceFileDB(dnaseq) # contains 'seq1', 'seq2' try: pudb = PrefixUnionDict({'prefix': seqdb}) seq = pudb['prefix.seq.2.even.longer'] finally: seqdb.close() def test_has_key(self): "PrefixUnionDict has key" assert 'prefix.seq1' in self.db assert 'prefix.seq2' in self.db assert 'prefix.foo' not in self.db assert 'foo' not in self.db def test_get(self): "PrefixUnionDict get" assert self.db.get('foo') is None assert self.db.get('prefix.foo') is None assert self.db.get('prefix.seq1') is not None assert str(self.db.get('prefix.seq1')).startswith('atggtgtca') assert self.db.get('prefix.seq2') is not None assert str(self.db.get('prefix.seq2')).startswith('GTGTTGAA') assert self.db.get('foo.bar') is None assert self.db.get(12345) is None def test_get_prefix_id(self): try: self.db.get_prefix_id(12345) assert 0, "should not get here" except KeyError: pass def test_getName(self): seq1 = self.db['prefix.seq1'] name = self.db.getName(seq1) assert name == 'prefix.seq1' def test_items(self): "PrefixUnionDict items" i = [k for (k, v) in self.db.items()] i.sort() assert i == ['prefix.seq1', 'prefix.seq2'] def test_iterkeys(self): "PrefixUnionDict iterkeys" kk = self.db.keys() kk.sort() ik = list(self.db.iterkeys()) ik.sort() assert kk == ik def test_itervalues(self): "PrefixUnionDict itervalues" kv = self.db.values() kv.sort() iv = list(self.db.itervalues()) iv.sort() assert kv == iv def test_iteritems(self): "PrefixUnionDict iteritems" ki = self.db.items() ki.sort() ii = list(self.db.iteritems()) ii.sort() assert ki == ii # test some things other than dict behavior def test_keyerror(self): "PrefixUnionDict keyerror" "Make sure that the PrefixUnionDict KeyError is informative." try: self.db['prefix.foo'] except KeyError, e: assert "no key 'foo' in " in str(e), str(e) try: self.db['foo'] except KeyError, e: assert "invalid id format; no prefix: foo" in str(e), str(e)
def setup(self): blastdb = SequenceFileDB('dnaseq') # contains 'seq1', 'seq2' self.db = PrefixUnionDict({ 'prefix' : blastdb })
class PrefixUnionDict_Test(object): """ Test for all of the basic dictionary functions on 'PrefixUnionDict'. """ def setup(self): blastdb = SequenceFileDB('dnaseq') # contains 'seq1', 'seq2' self.db = PrefixUnionDict({ 'prefix' : blastdb }) def keys_test(self): k = self.db.keys() k.sort() assert k == ['prefix.seq1', 'prefix.seq2'] def contains_test(self): assert 'prefix.seq1' in self.db assert 'prefix.seq2' in self.db assert 'foo' not in self.db assert 'prefix.foo' not in self.db def has_key_test(self): assert self.db.has_key('prefix.seq1') assert self.db.has_key('prefix.seq2') assert not self.db.has_key('prefix.foo') assert not self.db.has_key('foo') def get_test(self): assert self.db.get('foo') is None assert self.db.get('prefix.foo') is None assert self.db.get('prefix.seq1') is not None assert str(self.db.get('prefix.seq1')).startswith('atggtgtca') assert self.db.get('prefix.seq2') is not None assert str(self.db.get('prefix.seq2')).startswith('GTGTTGAA') def items_test(self): i = [ k for (k,v) in self.db.items() ] i.sort() assert i == ['prefix.seq1', 'prefix.seq2'] def iterkeys_test(self): kk = self.db.keys() kk.sort() ik = list(self.db.iterkeys()) ik.sort() assert kk == ik def itervalues_test(self): kv = self.db.values() kv.sort() iv = list(self.db.itervalues()) iv.sort() assert kv == iv def iteritems_test(self): ki = self.db.items() ki.sort() ii = list(self.db.iteritems()) ii.sort() assert ki == ii # test some things other than dict behavior def keyerror_test(self): "Make sure that the PrefixUnionDict KeyError is informative." try: self.db['prefix.foo'] except KeyError, e: assert "no key 'prefix.foo' in " in str(e), str(e) try: self.db['foo'] except KeyError, e: assert "invalid id format; no prefix: foo" in str(e), str(e)
def setUp(self): dnaseq = testutil.datafile('dnaseq.fasta') seqdb = SequenceFileDB(dnaseq) # contains 'seq1', 'seq2' self.db = PrefixUnionDict({'prefix': seqdb}) self.mdb = self.db.newMemberDict()
class PrefixUnionDict_Test(unittest.TestCase): """ Test for all of the basic dictionary functions on 'PrefixUnionDict'. """ def setUp(self): dnaseq = testutil.datafile('dnaseq.fasta') seqdb = SequenceFileDB(dnaseq) # contains 'seq1', 'seq2' self.db = PrefixUnionDict({'prefix': seqdb}) def tearDown(self): close_pud_dicts(self.db) def test_keys(self): "PrefixUnionDict keys" k = self.db.keys() k.sort() assert k == ['prefix.seq1', 'prefix.seq2'] def test_contains(self): "PrefixUnionDict contains" # first, check "is this sequence name in the PUD?"-style contains. assert 'prefix.seq1' in self.db assert 'prefix.seq2' in self.db assert 'foo' not in self.db assert 'prefix.foo' not in self.db # now, check "is this sequence in the PUD?" seq = self.db['prefix.seq1'] assert seq in self.db # finally, check failure: "is something other than str/seq in db" try: 12345 in self.db assert 0, "should not get to this point" except AttributeError: pass def test_invert_class(self): "PrefixUnionDict __invert__" seq = self.db['prefix.seq1'] inversedb = ~self.db assert inversedb[seq] == 'prefix.seq1' assert seq in inversedb assert 'foo' not in inversedb def test_funny_key(self): "check handling of ID containing multiple separators" dnaseq = testutil.datafile('funnyseq.fasta') seqdb = SequenceFileDB(dnaseq) # contains 'seq1', 'seq2' try: pudb = PrefixUnionDict({'prefix': seqdb}) seq = pudb['prefix.seq.1.more'] finally: seqdb.close() def test_funny_key2(self): "check handling of ID containing multiple separators" dnaseq = testutil.datafile('funnyseq.fasta') seqdb = SequenceFileDB(dnaseq) # contains 'seq1', 'seq2' try: pudb = PrefixUnionDict({'prefix': seqdb}) seq = pudb['prefix.seq.2.even.longer'] finally: seqdb.close() def test_has_key(self): "PrefixUnionDict has key" assert 'prefix.seq1' in self.db assert 'prefix.seq2' in self.db assert 'prefix.foo' not in self.db assert 'foo' not in self.db def test_get(self): "PrefixUnionDict get" assert self.db.get('foo') is None assert self.db.get('prefix.foo') is None assert self.db.get('prefix.seq1') is not None assert str(self.db.get('prefix.seq1')).startswith('atggtgtca') assert self.db.get('prefix.seq2') is not None assert str(self.db.get('prefix.seq2')).startswith('GTGTTGAA') assert self.db.get('foo.bar') is None assert self.db.get(12345) is None def test_get_prefix_id(self): try: self.db.get_prefix_id(12345) assert 0, "should not get here" except KeyError: pass def test_getName(self): seq1 = self.db['prefix.seq1'] name = self.db.getName(seq1) assert name == 'prefix.seq1' def test_items(self): "PrefixUnionDict items" i = [k for (k, v) in self.db.items()] i.sort() assert i == ['prefix.seq1', 'prefix.seq2'] def test_iterkeys(self): "PrefixUnionDict iterkeys" kk = self.db.keys() kk.sort() ik = list(self.db.iterkeys()) ik.sort() assert kk == ik def test_itervalues(self): "PrefixUnionDict itervalues" kv = self.db.values() kv.sort() iv = list(self.db.itervalues()) iv.sort() assert kv == iv def test_iteritems(self): "PrefixUnionDict iteritems" ki = self.db.items() ki.sort() ii = list(self.db.iteritems()) ii.sort() assert ki == ii # test some things other than dict behavior def test_keyerror(self): "PrefixUnionDict keyerror" "Make sure that the PrefixUnionDict KeyError is informative." try: self.db['prefix.foo'] except KeyError, e: assert "no key 'foo' in " in str(e), str(e) try: self.db['foo'] except KeyError, e: assert "invalid id format; no prefix: foo" in str(e), str(e)
def setUp(self): dnaseq = testutil.datafile('dnaseq.fasta') seqdb = SequenceFileDB(dnaseq) # contains 'seq1', 'seq2' self.db = PrefixUnionDict({'prefix': seqdb}) self.mdb = self.db.newMemberDict()
def test_empty_create(self): db = PrefixUnionDict() assert len(db) == 0