Beispiel #1
0
    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
Beispiel #3
0
 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)
Beispiel #4
0
 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
Beispiel #6
0
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
Beispiel #7
0
 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()
Beispiel #8
0
 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)
Beispiel #10
0
    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)
Beispiel #11
0
 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)
Beispiel #13
0
 def setup(self):
     blastdb = SequenceFileDB('dnaseq')     # contains 'seq1', 'seq2'
     self.db = PrefixUnionDict({ 'prefix' : blastdb })
Beispiel #14
0
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)
Beispiel #15
0
 def setUp(self):
     dnaseq = testutil.datafile('dnaseq.fasta')
     seqdb = SequenceFileDB(dnaseq)  # contains 'seq1', 'seq2'
     self.db = PrefixUnionDict({'prefix': seqdb})
     self.mdb = self.db.newMemberDict()
Beispiel #16
0
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()
Beispiel #18
0
 def test_empty_create(self):
     db = PrefixUnionDict()
     assert len(db) == 0