def test_schema(self): "Test schema" sp_hbb1 = testutil.datafile('sp_hbb1') sp2 = seqdb.BlastDB(sp_hbb1) sp2.__doc__ = 'another sp' pygr.Data.Bio.Seq.sp2 = sp2 sp = pygr.Data.Bio.Seq.Swissprot.sp42() m = mapping.Mapping(sourceDB=sp, targetDB=sp2) m.__doc__ = 'sp -> sp2' pygr.Data.Bio.Seq.testmap = m pygr.Data.schema.Bio.Seq.testmap = pygr.Data.OneToManyRelation(sp, sp2) pygr.Data.save() pygr.Data.clear_cache() sp3 = seqdb.BlastDB(sp_hbb1) sp3.__doc__ = 'sp number 3' pygr.Data.Bio.Seq.sp3 = sp3 sp2 = pygr.Data.Bio.Seq.sp2() m = mapping.Mapping(sourceDB=sp3, targetDB=sp2) m.__doc__ = 'sp3 -> sp2' pygr.Data.Bio.Seq.testmap2 = m pygr.Data.schema.Bio.Seq.testmap2 = pygr.Data.OneToManyRelation(sp3, sp2) # List all cached resources. l = pygr.Data.getResource.resourceCache.keys() l.sort() assert l == ['Bio.Seq.sp2', 'Bio.Seq.sp3', 'Bio.Seq.testmap2'] pygr.Data.save() g = pygr.Data.getResource.writer.storage.graph expected = set(['Bio.Annotation.annoDB', 'Bio.Seq.Swissprot.sp42', 'Bio.Seq.sp2', 'Bio.Seq.sp3']) found = set(g.keys()) self.EQ(len(expected - found), 0)
def test_schema(self): "Test schema" sp_hbb1 = testutil.datafile('sp_hbb1') sp2 = seqdb.BlastDB(sp_hbb1) sp2.__doc__ = 'another sp' worldbase.Bio.Seq.sp2 = sp2 sp = worldbase.Bio.Seq.Swissprot.sp42() m = mapping.Mapping(sourceDB=sp, targetDB=sp2) m.__doc__ = 'sp -> sp2' worldbase.Bio.Seq.testmap = m worldbase.schema.Bio.Seq.testmap = metabase.OneToManyRelation(sp, sp2) worldbase.commit() worldbase.clear_cache() sp3 = seqdb.BlastDB(sp_hbb1) sp3.__doc__ = 'sp number 3' worldbase.Bio.Seq.sp3 = sp3 sp2 = worldbase.Bio.Seq.sp2() m = mapping.Mapping(sourceDB=sp3, targetDB=sp2) m.__doc__ = 'sp3 -> sp2' worldbase.Bio.Seq.testmap2 = m worldbase.schema.Bio.Seq.testmap2 = metabase.OneToManyRelation( sp3, sp2) l = worldbase._mdb.resourceCache.keys() l.sort() assert l == ['Bio.Seq.sp2', 'Bio.Seq.sp3', 'Bio.Seq.testmap2'] worldbase.commit() g = worldbase._mdb.writer.storage.graph expected = set([ 'Bio.Annotation.annoDB', 'Bio.Seq.Swissprot.sp42', 'Bio.Seq.sp2', 'Bio.Seq.sp3' ]) found = set(g.keys()) self.EQ(len(expected - found), 0)
def setUp(self, testDir=None): '''restrict megatest to an initially empty directory, need large space to perform''' import random tmpList = [c for c in 'PygrBuildNLMSAMegabase'] random.shuffle(tmpList) # Comment out the next line to run in current directory. testDir = os.path.join(testOutputBaseDir, 'TEST_' + ''.join(tmpList)) if testDir is None: testDir = 'TEST_' + ''.join(tmpList) try: os.mkdir(testDir) testDir = os.path.realpath(testDir) except: raise IOError self.path = testDir try: tmpFileName = os.path.join(testDir, 'DELETE_THIS_TEMP_FILE') open(tmpFileName, 'w').write('A' * 1024 * 1024) except: raise IOError pygr.Data.update(self.path) from pygr import seqdb for orgstr in msaSpeciesList: genome = seqdb.BlastDB(os.path.join(seqDir, orgstr)) genome.__doc__ = docStringDict[orgstr] pygr.Data.addResource('TEST.Seq.Genome.' + orgstr, genome) pygr.Data.save()
def setUp(self, **kwargs): TestBase.setUp(self) dnaseq = testutil.datafile('dnaseq.fasta') tryannot = testutil.tempdatafile('tryannot') db = seqdb.BlastDB(dnaseq) try: db.__doc__ = 'little dna' self.pygrData.Bio.Test.dna = db annoDB = seqdb.AnnotationDB({1: ('seq1', 5, 10, 'fred'), 2: ('seq1', -60, -50, 'bob'), 3: ('seq2', -20, -10, 'mary')}, db, sliceAttrDict=dict(id=0, start=1, stop=2, name=3)) annoDB.__doc__ = 'trivial annotation' self.pygrData.Bio.Test.annoDB = annoDB nlmsa = cnestedlist.NLMSA(tryannot, 'w', pairwiseMode=True, bidirectional=False) try: for annID in annoDB: nlmsa.addAnnotation(annoDB[annID]) nlmsa.build() nlmsa.__doc__ = 'trivial map' self.pygrData.Bio.Test.map = nlmsa self.schema.Bio.Test.map = metabase.ManyToManyRelation(db, annoDB, bindAttrs=('exons', )) self.metabase.commit() self.metabase.clear_cache() finally: nlmsa.close() finally: db.close()
def populate_swissprot(): "Populate the current worldbase with swissprot data" # build BlastDB out of the sequences sp_hbb1 = testutil.datafile('sp_hbb1') sp = seqdb.BlastDB(sp_hbb1) sp.__doc__ = 'little swissprot' worldbase.Bio.Seq.Swissprot.sp42 = sp # also store a fragment hbb = sp['HBB1_TORMA'] ival = hbb[10:35] ival.__doc__ = 'fragment' worldbase.Bio.Seq.frag = ival # build a mapping to itself m = mapping.Mapping(sourceDB=sp, targetDB=sp) trypsin = sp['PRCA_ANAVA'] m[hbb] = trypsin m.__doc__ = 'map sp to itself' worldbase.Bio.Seq.spmap = m # create an annotation database and bind as exons attribute worldbase.schema.Bio.Seq.spmap = metabase.OneToManyRelation( sp, sp, bindAttrs=('buddy', )) annoDB = seqdb.AnnotationDB({1: ('HBB1_TORMA', 10, 50)}, sp, sliceAttrDict=dict(id=0, start=1, stop=2)) exon = annoDB[1] # generate the names where these will be stored tempdir = testutil.TempDir('exonAnnot') filename = tempdir.subfile('cnested') nlmsa = cnestedlist.NLMSA(filename, 'w', pairwiseMode=True, bidirectional=False) nlmsa.addAnnotation(exon) nlmsa.build() annoDB.__doc__ = 'a little annotation db' nlmsa.__doc__ = 'a little map' worldbase.Bio.Annotation.annoDB = annoDB worldbase.Bio.Annotation.map = nlmsa worldbase.schema.Bio.Annotation.map = \ metabase.ManyToManyRelation(sp, annoDB, bindAttrs=('exons', ))
def test_xmlrpc(self): "Test XMLRPC" pygr.Data.clear_cache() # force all requests to reload pygr.Data.update("http://localhost:%s" % self.server.port) check_match(self) check_dir(self) check_dir_noargs(self) check_dir_download(self) check_dir_re(self) check_bind(self) check_bind2(self) sb_hbb1 = testutil.datafile('sp_hbb1') sp2 = seqdb.BlastDB(sb_hbb1) sp2.__doc__ = 'another sp' try: pygr.Data.Bio.Seq.sp2 = sp2 pygr.Data.save() msg = 'failed to catch bad attempt to write to XMLRPC server' raise KeyError(msg) except ValueError: pass
def test_xmlrpc(self): "Test XMLRPC" worldbase.clear_cache() # force all future requests to reload # Add our test XMLRPC resource. worldbase.update("http://localhost:%s" % self.server.port) check_match(self) # run all our tests check_dir(self) check_dir_noargs(self) check_dir_download(self) check_dir_re(self) check_bind(self) check_bind2(self) sb_hbb1 = testutil.datafile('sp_hbb1') # test readonly checks sp2 = seqdb.BlastDB(sb_hbb1) sp2.__doc__ = 'another sp' try: worldbase.Bio.Seq.sp2 = sp2 worldbase.commit() msg = 'failed to catch bad attempt to write to XMLRPC server' raise KeyError(msg) except ValueError: pass