From katel at worldpath.net Tue Jun 4 02:55:42 2002 From: katel at worldpath.net (Cayte) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] Blocks Message-ID: <004e01c20b94$d89676c0$08fea8c0@pcklindner> I stsrted to look into Blocks but I saw a parser that Andrew started in his examples. Is Andrew doing the parser? Do we need a Blocks parser? Cayte From thamelry at vub.ac.be Wed Jun 5 07:51:19 2002 From: thamelry at vub.ac.be (Thomas Hamelryck) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] Added regression test of PDBParser Message-ID: <02060513511908.05224@imolpc112.vub.ac.be> Exactly that. Files added: The test: Tests/test_PDB.py The (fictional) PDB file on which the test acts: Tests/PDB/a_structure.pdb The output: Tests/output/test_PDB Cheers, --- Thomas Hamelryck Vrije Universiteit Brussel (VUB) Intitute for Molecular Biology ULTR Department Paardenstraat 65 1640 Sint-Gensius-Rode, Belgium http://ultr.vub.ac.be/~thomas From andreas.kuntzagk at mdc-berlin.de Wed Jun 5 11:29:51 2002 From: andreas.kuntzagk at mdc-berlin.de (Andreas Kuntzagk) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] Update Operation for BioSQL.Loader Message-ID: <3CFE2E6F.2070002@mdc-berlin.de> Hi, I'v written some update-functions for the Loader class. It will update an existing bioentry/sequence whith a record whith the same accession. Attention: this is not fully testet. Maybe someone can have a look on the attached diff (generated with cvs diff) bye, Andreas -------------- next part -------------- Index: Loader.py =================================================================== RCS file: /home/repository/biopython/biopython/BioSQL/Loader.py,v retrieving revision 1.8 diff -r1.8 Loader.py 13a14,16 > class UpdateNonExistingError(Exception): > pass > 24c27,35 < --- > > def update_or_load(self, record): > """Update an existing Record or load a new one > """ > try: > update_seqrecord(record) > except UpdateNonExistingError: # Record does not exist > load_seqrecord(record) > 66c77 < """ --- > """ 104a116,128 > def _load_bioentry_keyword(self, record): > """Add keywords into the database""" > try: > id = self.adaptor.fetch_seqid_by_display_id(self.dbid, record.name) > keywords = record.annotations["keywords"] > keyword_ont_id = self._get_ontology_id("keyword") > sql = r"INSERT INTO bioentry_qualifier_value VALUES" \ > r" (%s, %s, %s)" > for k in keywords: > self.adaptor.execute_one(sql, (bioentry_id, keyword_ont_id ,k)) > except KeyError: > pass > 233c257,396 < --- > > def update_seqrecord(self, record): > """Update an existing entry in the database > """ > id = self._update_bioentry(record) > self._update_bioentry_date(record, id) > self._update_bioentry_keyword(record, id) > self._update_bioentry_description(record,id) > for seq_feature_num in range(len(record.features)): > seq_feature = record.features[seq_feature_num] > self._update_seqfeature(seq_feature, seq_feature_num, id) > > def _update_bioentry(self, record): > """Lookup and update an existing entry in the Database. > """ > if record.id.find('.') >= 0: # try to get a version from the id > accession, version = record.id.split('.') > else: # otherwise just use a null version > accession = record.id > version = 0 > try: > division = record.annotations["data_file_divison"] > except KeyError: > division = "No" > sql = r"SELECT bioentry_id from bioentry where accession = (%s)" > > try: > bioentry_id = self.adaptor.execute_one(sql, (accession))[0] > except AssertionError: > raise UpdateNonExistingError > sql = r"UPDATE bioentry SET division = %s, entry_version = %s, biodatabase_id = %s WHERE " \ > r"bioentry_id = %s" > > self.adaptor.execute(sql, (division, version, self.dbid, bioentry_id)) > return bioentry_id > > def _update_bioentry_qualifier(self, bioentry_id, ontology_term_id, value): > sql = r"UPDATE bioentry_qualifier_value SET qualifier_value = %s WHERE bioentry_id = %s AND ontology_term_id = %s" > self.adaptor.execute(sql, (value, bioentry_id, ontology_term_id)) > > def _update_bioentry_date(self, record, bioentry_id): > """Update the effective date of the entry into the database. > """ > # dates are GenBank style, like: > # 14-SEP-2000 > try: > date = record.annotations["date"] > except KeyError: > # just use today's date > date = strftime("%d-%b-%Y", gmtime()) > date_id = self._get_ontology_id("date", "Sequence date") > self._update_bioentry_qualifier(bioentry_id, date_id, date) > > def _update_bioentry_keyword(self, record, bioentry_id): > """Update keywords into the database""" > try: > keywords = record.annotations["keywords"] > keyword_ont_id = self._get_ontology_id("keyword") > for k in keywords: > self._update_bioentry_qualifier(bioentry_id, keyword_ont_id, k) > except KeyError: > pass > > def _update_biosequence(self, record, bioentry_id): > """Update the biosequence table in the database. > """ > accession, version = record.id.split(".") > # determine the string representation of the alphabet > if isinstance(record.seq.alphabet, Alphabet.DNAAlphabet): > mol_type = "DNA" > elif isinstance(record.seq.alphabet, Alphabet.RNAAlphabet): > mol_type = "RNA" > elif isinstance(record.seq.alphabet, Alphabet.ProteinAlphabet): > mol_type = "PROTEIN" > else: > mol_type = "UNKNOWN" > > sql = r"UPDATE biosequence SET seq_version = %s, molecule = %s, biosequence_str = %s WHERE bioentry_id = %s" > self.adaptor.execute_one(sql, (version, mol_type, record.seq.data, bioentry_id)) > > def _update_bioentry_description(self, record, bioentry_id): > """Update the description table. > """ > descr_id = self._get_ontology_id("description", "Sequence description") > self._update_bioentry_qualifier(bioentry_id, descr_id, record.description) > > def _update_seqfeature(self, feature, feature_rank, bioentry_id): > """Update a biopython SeqFeature into the database. > """ > seqfeature_id = self._update_seqfeature_basic(feature.type, feature_rank, > bioentry_id) > self._update_seqfeature_location(feature, seqfeature_id) > self._update_seqfeature_qualifiers(feature.qualifiers, seqfeature_id) > > def _update_seqfeature_basic(self, feature_type, feature_rank, bioentry_id): > """Start update of seqfeature. > """ > seqfeature_key_id = self._get_ontology_id(feature_type) > > sql = r"SELECT seqfeature_id FROM seqfeature WHERE bioentry_id = %s AND seqfeature_key_id = %s" > seqfeature_id = self.adaptor.execute_one (sql, (bioentry_id, seqfeature_key_id))[0] > > # Not updating the feature_rank > > return seqfeature_id > > def _update_seqfeature_location(self, feature, seqfeature_id): > """Update a location of a SeqFeature to the seqfeature_location table. > """ > > # hack for NOT NULL in strand -- we have None be the same as 0 > # for strand information > if feature.strand is None: > strand = 0 > else: > strand = feature.strand > > # convert biopython locations to the 1-based location system > # used in bioSQL > # XXX This could also handle fuzzies > start = feature.location.nofuzzy_start + 1 > end = feature.location.nofuzzy_end > > sql = r"UPDATE seqfeature_location SET seq_start =%s, seq_end = %s, seq_strand = %s " \ > r"WHERE seqfeature_id = %s" > > self.adaptor.execute(sql, (start, end, strand, seqfeature_id)) > > def _update_seqfeature_qualifiers(self, qualifiers, seqfeature_id): > """Updating the (key, value) pair qualifiers relating to a feature. > > Qualifiers should be a dictionary of the form: > {key : [value1, value2]} > """ > #Deleting all rows with this seqfeature_id > sql = r"DELETE FROM seqfeature_qualifier_value WHERE seqfeature_id = %s" > self.adaptor.execute(sql, (seqfeature_id)) > #reload qualifiers > self._load_seqfeature_qualifiers(qualifiers, seqfeature_id) > From andreas.kuntzagk at mdc-berlin.de Wed Jun 5 12:25:56 2002 From: andreas.kuntzagk at mdc-berlin.de (Andreas Kuntzagk) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] Update Operation for BioSQL.Loader References: <3CFE2E6F.2070002@mdc-berlin.de> Message-ID: <3CFE3B94.8040804@mdc-berlin.de> Oops, small mistake: >> def update_or_load(self, record): >> """Update an existing Record or load a new one >> """ >> try: >> update_seqrecord(record) >> except UpdateNonExistingError: # Record does not exist >> load_seqrecord(record) should be self.update_seqrecord / self.load_seqrecord As i said, i didn't test all of it. Andreas From katel at worldpath.net Wed Jun 5 22:49:25 2002 From: katel at worldpath.net (Cayte) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] Registry References: <3CFE2E6F.2070002@mdc-berlin.de> <3CFE3B94.8040804@mdc-berlin.de> Message-ID: <005001c20d04$c5ffc860$08fea8c0@pcklindner> If The registry is ready, I'd like to try hooking some of my Martel Parsers in? Using the formatdefs stuff as a template. Cayte From jchang at smi.stanford.edu Thu Jun 6 00:20:13 2002 From: jchang at smi.stanford.edu (Jeffrey Chang) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] Registry In-Reply-To: <005001c20d04$c5ffc860$08fea8c0@pcklindner> Message-ID: You should consider the Registry code pre-alpha -- the APIs are highly likely to change in the near future. Go ahead and play around with it, if you don't mind changing it again as the API matures. Jeff On Wednesday, June 5, 2002, at 07:49 PM, Cayte wrote: > If The registry is ready, I'd like to try hooking some of my Martel > Parsers in? Using the formatdefs stuff as a template. > > Cayte > > _______________________________________________ > Biopython-dev mailing list > Biopython-dev@biopython.org > http://biopython.org/mailman/listinfo/biopython-dev From katel at worldpath.net Fri Jun 14 17:15:17 2002 From: katel at worldpath.net (Cayte) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] embedded web links Message-ID: <004901c213e8$9639b560$08fea8c0@pcklindner> I've noticed that a lot of NCBI files have lists of embedded links. I was thinking of a new class, NetHaul. NetHaul would store a list of embedded absolute urls along with their labels. It would prove get_urls_by_label, get_urls_by_index and get_urls_by_range. Each of these would fetch web pages and append them to a file. get_urls_by_label would accept a list of labels. get_urls_by_index would accept a list of indexes. get_urls_by_ range would accept a lower and upper value. USER STORY: Joe looks up a protein domain. The page contains links to Genbank entries for proteins for various species. Joe is only interested in puffer fish. He scans the list of urls and creates a filter for labels that contain the word puffer. Then he passes the filtered list to NetHaul.get_urls_by_label. Cayte From thamelry at vub.ac.be Mon Jun 17 09:54:10 2002 From: thamelry at vub.ac.be (Thomas Hamelryck) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] KD tree module Message-ID: <02061715541009.29122@imolpc112.vub.ac.be> Hi, I just finished a KD tree python extension module in C++. A KD tree is a data structure that allows fast range queries in vector space. My implementation also does fixed radius neighbor search (ie. it finds all point pairs closer than a given radius). It requires Numpy. I'm going to use the thing to find bonds between atoms and to find all atoms close to a bound ligand in a cystal structure, and similar things. Of course, a KD tree can also be very useful for other purposes, e.g. for a fast implementation of the K-means algorithm. I'd like to put the code in Bio.Tools.KDTree, if that's OK for everybody. I also welcome any suggestions/criticism/remarks/requests with respect to the structure code. BTW, where am I supposed to put the hand written documentation for it? Add it to the tutorial tex file? Cheers, --- Thomas Hamelryck Vrije Universiteit Brussel (VUB) Intitute for Molecular Biology ULTR Department Paardenstraat 65 1640 Sint-Gensius-Rode, Belgium http://ultr.vub.ac.be/~thomas From idoerg at cc.huji.ac.il Mon Jun 17 10:24:26 2002 From: idoerg at cc.huji.ac.il (Iddo Friedberg) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] Implementation advice In-Reply-To: <004901c213e8$9639b560$08fea8c0@pcklindner> Message-ID: Hi all, I am trying to expand the functionality of FSSP a bit. As part of that, I would like to provide the user with the ability to give a PDB id, and retrieve the name of the FSSP file(s) containing that PDB id. Without getting into too much details, each FSSP file (out of some 2800) has anywhere between 3 and 300 PDB ids, some of them in more than one file. I was thinking of creating a dictionary which will look something like: { '1chyA': ['1xyzB','3fgy0'], '3dcp0': ['3syx'], '2abcC': ['3syx', '4rde'], . . . } # Meaning, that 1chyA is in the FSSP file represented by 1xyzB and in the # one represented by 3fgy0 Dictionary creation will be a one-time thing, its updates as frequently as the user likes (not very frequent), and queries will be many (very frequent). It seems a bit large to read (some 2800 keys, and rising) in anytime you actually need to find out where 2abcC is located, so I thought of using the Python dbm interface. 'anydbm', so as to maximize platform independence. ***** Is this good so far? Or is there a better tool I can use? I don't want to use SQL here... seems a bit of an overkill. Because anydbm (as do gdbm, dumbdbm...) accepts only strings for keys and values, and I'd like to use lists in the values (maybe also in the keys), I thought that creating a UserDict instance which overloads __getitem__, __setitem__, etc. , using cPickle.loads and cPickle.dumps for key and values, this transparently enabling the use of non-strings in a Python dbm interface. (Bit of code attached). **** This seems a very generic application. I'd be extremely surprised if nobody did something like this before. But I couldn't really find anything. Comments? Thanks, Iddo -- Iddo Friedberg | Tel: +972-2-6757374 Dept. of Molecular Genetics and Biotechnology | Fax: +972-2-6757308 The Hebrew University - Hadassah Medical School | email: idoerg@cc.huji.ac.il POB 12272, Jerusalem 91120 | Israel | http://bioinfo.md.huji.ac.il/marg/people-home/iddo/ -------------- next part -------------- import cPickle import UserDict import anydbm loads = cPickle.loads dumps = cPickle.dumps class dbmDict(UserDict.UserDict): def __init__(self,filename, flag='r'): self.data = anydbm.open(filename,flag) def __getitem__(self,key): return loads(self.data[dumps(key)]) def __setitem__(self,key, value): self.data[dumps(key)] = dumps(value) def values(self): value_list = [] for i in self.data.keys(): value_list.append(loads(self.data[i])) return value_list def keys(self): key_list = [] for i in self.data.keys(): key_list.append(loads(i)) return key_list From idoerg at cc.huji.ac.il Mon Jun 17 11:23:39 2002 From: idoerg at cc.huji.ac.il (Iddo Friedberg) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] Implementation advice In-Reply-To: Message-ID: Small correction: : : Because anydbm (as do gdbm, dumbdbm...) accepts only strings for keys and : values, and I'd like to use lists in the values (maybe also in the keys), ^^^^^^^^^^^^^^^ Of course I cannot use lists in the keys. I meant tuples, or any other hashable type Iddo -- Iddo Friedberg | Tel: +972-2-6757374 Dept. of Molecular Genetics and Biotechnology | Fax: +972-2-6757308 The Hebrew University - Hadassah Medical School | email: idoerg@cc.huji.ac.il POB 12272, Jerusalem 91120 | Israel | http://bioinfo.md.huji.ac.il/marg/people-home/iddo/ From jchang at smi.stanford.edu Mon Jun 17 14:55:44 2002 From: jchang at smi.stanford.edu (Jeffrey Chang) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] Implementation advice In-Reply-To: ; from idoerg@cc.huji.ac.il on Mon, Jun 17, 2002 at 05:24:26PM +0300 References: <004901c213e8$9639b560$08fea8c0@pcklindner> Message-ID: <20020617115544.A57522@springfield.stanford.edu> At the Biohackathon in April(?), we talked about the need to provide this kind of database capability, and the 4 projects (biopython, bioperl, biojava, and bioruby) decided to standardize on 2 cross-platform approaches. For smaller databases, we invented our own flat file format. For larger ones, we used Berkeley DB. Andrew wrote some excellent documentation for these, but I can't find it right now. Andrew has implemented both these already in Bio.Mindy. Please take a look there. The advantage of using one of these is that 1) the db stuff is already written, and 2) the resulting file will be usable for the other bio projects as well. Jeff On Mon, Jun 17, 2002 at 05:24:26PM +0300, Iddo Friedberg wrote: > Hi all, > > I am trying to expand the functionality of FSSP a bit. As part of that, I > would like to provide the user with the ability to give a PDB id, and > retrieve the name of the FSSP file(s) containing that PDB id. > > Without getting into too much details, each FSSP file (out of some 2800) > has anywhere between 3 and 300 PDB ids, some of them in more than one > file. > > I was thinking of creating a dictionary which will look something like: > { '1chyA': ['1xyzB','3fgy0'], > '3dcp0': ['3syx'], > '2abcC': ['3syx', '4rde'], > . > . > . > } > # Meaning, that 1chyA is in the FSSP file represented by 1xyzB and in the > # one represented by 3fgy0 > > Dictionary creation will be a one-time thing, its updates as frequently as > the user likes (not very frequent), and queries will be many (very > frequent). It seems a bit large to read (some 2800 keys, and rising) in > anytime you actually need to find out where 2abcC is located, so I thought > of using the Python dbm interface. > > 'anydbm', so as to maximize platform independence. > > ***** Is this good so far? Or is there a better tool I can use? I don't > want to use SQL here... seems a bit of an overkill. > > Because anydbm (as do gdbm, dumbdbm...) accepts only strings for keys and > values, and I'd like to use lists in the values (maybe also in the keys), > I thought that creating a UserDict instance which overloads __getitem__, > __setitem__, etc. , using cPickle.loads and cPickle.dumps for key and > values, this transparently enabling the use of non-strings in a Python dbm > interface. (Bit of code attached). > > **** This seems a very generic application. I'd be extremely surprised if > nobody did something like this before. But I couldn't really find > anything. Comments? > > > Thanks, > > Iddo > > > -- > > Iddo Friedberg | Tel: +972-2-6757374 > Dept. of Molecular Genetics and Biotechnology | Fax: +972-2-6757308 > The Hebrew University - Hadassah Medical School | email: idoerg@cc.huji.ac.il > POB 12272, Jerusalem 91120 | > Israel | > http://bioinfo.md.huji.ac.il/marg/people-home/iddo/ > > > > > > import cPickle > import UserDict > import anydbm > loads = cPickle.loads > dumps = cPickle.dumps > class dbmDict(UserDict.UserDict): > def __init__(self,filename, flag='r'): > self.data = anydbm.open(filename,flag) > def __getitem__(self,key): > return loads(self.data[dumps(key)]) > def __setitem__(self,key, value): > self.data[dumps(key)] = dumps(value) > def values(self): > value_list = [] > for i in self.data.keys(): > value_list.append(loads(self.data[i])) > return value_list > def keys(self): > key_list = [] > for i in self.data.keys(): > key_list.append(loads(i)) > return key_list From jchang at smi.stanford.edu Mon Jun 17 16:25:00 2002 From: jchang at smi.stanford.edu (Jeffrey Chang) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] KD tree module In-Reply-To: <02061715541009.29122@imolpc112.vub.ac.be>; from thamelry@vub.ac.be on Mon, Jun 17, 2002 at 03:54:10PM +0200 References: <02061715541009.29122@imolpc112.vub.ac.be> Message-ID: <20020617132500.A57788@springfield.stanford.edu> On Mon, Jun 17, 2002 at 03:54:10PM +0200, Thomas Hamelryck wrote: > I just finished a KD tree python extension module in C++. [description of KD tree and use] > I'd like to put the code in Bio.Tools.KDTree, if that's OK for everybody. That's fine. Biopython is undergoing a structural reorganization right now, though, so it may have to move later. Jeff From thamelry at vub.ac.be Tue Jun 18 07:06:20 2002 From: thamelry at vub.ac.be (Thomas Hamelryck) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] Re: KD tree module In-Reply-To: <20020617132500.A57788@springfield.stanford.edu> References: <02061715541009.29122@imolpc112.vub.ac.be> <20020617132500.A57788@springfield.stanford.edu> Message-ID: <02061813062002.00367@imolpc112.vub.ac.be> [Jeff] > That's fine. Biopython is undergoing a structural reorganization > right now, though, so it may have to move later. OK. The KDTree code is in Bio.Tools.KDTree. I modified setup.py to compile the KDTree extension. --- Thomas Hamelryck Vrije Universiteit Brussel (VUB) Intitute for Molecular Biology ULTR Department Paardenstraat 65 1640 Sint-Gensius-Rode, Belgium http://ultr.vub.ac.be/~thomas From jchang at smi.stanford.edu Tue Jun 18 20:01:33 2002 From: jchang at smi.stanford.edu (Jeffrey Chang) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] evaluate Bugzilla database Message-ID: <20020618170132.D60499@springfield.stanford.edu> Hello everybody, I've been unhappy with Jitterbug for a while. It doesn't really have a good authentication model, and thus doesn't really track all the information that I want to have. I'm thinking of moving things over to Bugzilla. I've put a version of it up for evaluation. To test it, I want to use it to help coordinate the next release of Biopython. If we like it, then we'll keep it. Otherwise, back to Jitterbug. Please take a look at it: http://cvs.bioperl.org/bugzilla/ All core developers should create an account and start using it. I haven't changed the default UI, so ignore references to Mozilla, etc. The UI is pretty configurable, so we are able to change the text, buttons, forms, etc. I've created a bug (Bug #5) to help track our experiences with Bugzilla: http://cvs.bioperl.org/bugzilla/show_bug.cgi?id=5 This link is not permanent, so please don't create any references to it in documentation, etc. Jeff From idoerg at cc.huji.ac.il Wed Jun 19 05:09:31 2002 From: idoerg at cc.huji.ac.il (Iddo Friedberg) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] Implementation advice In-Reply-To: <20020617115544.A57522@springfield.stanford.edu> Message-ID: Taking up on Jeff's advice, I started playing around with Mindy. I guess I already have some sort of bug report, which I submitted to the new bugzilla (good move, Jeff). Anyhow, just to make sure this gets through (Andrew?), here is the bug(?) report: I copied the source code of Xpath.main() to my own file, changed the path to the swissprot flat-file, and ran it. Here's the result: >>> sp_reader.main() /usr/local/lib/python2.2/site-packages/bsddb3/__init__.py:46: RuntimeWarning: Python C API version mismatch for module _db: This Python has API version 1011, module _db has version 1010. import _db Traceback (most recent call last): File "", line 1, in ? File "sp_reader.py", line 29, in main extract_info = [ File "/home/idoerg/cvs_biopython/biopython/Bio/Mindy/XPath.py", line 58, in xpath_index creator = creator_factory(dbname, primary_namespace, data_names) File "/home/idoerg/cvs_biopython/biopython/Bio/Mindy/BerkeleyDB.py", line 17, in create primary_namespace = self.primary_namespace, NameError: global name 'self' is not defined On Mon, 17 Jun 2002, Jeffrey Chang wrote: : At the Biohackathon in April(?), we talked about the need to provide : this kind of database capability, and the 4 projects (biopython, : bioperl, biojava, and bioruby) decided to standardize on 2 : cross-platform approaches.For smaller databases, we invented our own : flat file format.For larger ones, we used Berkeley DB. Andrew wrote : some excellent documentation for these, but I can't find it right now. : : Andrew has implemented both these already in Bio.Mindy.Please take a : look there.The advantage of using one of these is that 1) the db : stuff is already written, and 2) the resulting file will be usable for : the other bio projects as well. : : Jeff : : : On Mon, Jun 17, 2002 at 05:24:26PM +0300, Iddo Friedberg wrote: : > Hi all, : > : > I am tryingto expand the functionality of FSSP a bit. As part of that, I : > would like to provide the user with the ability to give a PDB id, and : > retrieve the name of the FSSP file(s) containing that PDB id. : > : > Without getting into too much details, each FSSP file (out of some 2800) : > has anywhere between 3 and 300 PDB ids, some of them in more than one : > file. : > : > I was thinking of creating a dictionary which will look something like: : > { '1chyA': ['1xyzB','3fgy0'], : > '3dcp0': ['3syx'], : > '2abcC': ['3syx', '4rde'], : > . : > . : > . : > } : > # Meaning, that 1chyA is in the FSSP file represented by 1xyzB and in the : > # one represented by 3fgy0 : > : > Dictionary creation will be a one-time thing, its updates as frequently as : > the user likes (not very frequent), and queries will be many (very : > frequent). It seems a bit large to read (some 2800 keys, and rising) in : > anytime you actually need to find out where 2abcC is located, so I thought : > of using the Python dbm interface. : > : > 'anydbm', soas to maximize platform independence. : > : > ***** Is this good so far? Or is there a better tool I can use? I don't : > want to use SQL here... seems a bit of an overkill. : > : > Because anydbm (as do gdbm, dumbdbm...) accepts only strings for keys and : > values, and I'd like to use lists in the values (maybe also in the keys), : > I thought that creating a UserDict instance which overloads __getitem__, : > __setitem__, etc. , using cPickle.loads and cPickle.dumps for key and : > values, this transparently enabling the use of non-strings in a Python dbm : > interface. (Bit of code attached). : > : > **** This seems a very generic application. I'd be extremely surprised if : > nobody did something like this before. But I couldn't really find : > anything. Comments? : > : > : > Thanks, : > : > Iddo : > : > : > -- : > : > Iddo Friedberg | Tel: +972-2-6757374 : > Dept. of Molecular Genetics and Biotechnology | Fax: +972-2-6757308 : > The Hebrew University - Hadassah Medical School | email: idoerg@cc.huji.ac.il : > POB 12272, Jerusalem 91120 | : > Israel | : > http://bioinfo.md.huji.ac.il/marg/people-home/iddo/ : > : > : > : > : > : : > import cPickle : > import UserDict : > import anydbm : > loads = cPickle.loads : > dumps = cPickle.dumps : > class dbmDict(UserDict.UserDict): : > def __init__(self,filename, flag='r'): : > self.data = anydbm.open(filename,flag) : > def __getitem__(self,key): : > return loads(self.data[dumps(key)]) : > def __setitem__(self,key, value): : > self.data[dumps(key)] = dumps(value) : > def values(self): : > value_list = [] : > for i in self.data.keys(): : > value_list.append(loads(self.data[i])) : > return value_list : > def keys(self): : > key_list = [] : > for i in self.data.keys(): : > key_list.append(loads(i)) : > return key_list : : _______________________________________________ : Biopython-dev mailing list : Biopython-dev@biopython.org : http://biopython.org/mailman/listinfo/biopython-dev : -- Iddo Friedberg | Tel: +972-2-6757374 Dept. of Molecular Genetics and Biotechnology | Fax: +972-2-6757308 The Hebrew University - Hadassah Medical School | email: idoerg@cc.huji.ac.il POB 12272, Jerusalem 91120 | Israel | http://bioinfo.md.huji.ac.il/marg/people-home/iddo/ From andrew_dalke at hotmail.com Wed Jun 19 12:19:15 2002 From: andrew_dalke at hotmail.com (Andrew Dalke) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] Implementation advice Message-ID: >From: Iddo Friedberg >Anyhow, just to make sure this gets through (Andrew?), here is the bug(?) >report: Hmm, I'm in Sweden now at a client site so I'm not going to be able to look at that any time soon. :( Andrew _________________________________________________________________ Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp. From katel at worldpath.net Thu Jun 20 19:25:32 2002 From: katel at worldpath.net (Cayte) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] Implementation advice References: Message-ID: <002e01c218b1$c7365560$08fea8c0@pcklindner> I just finished NetCatch. Seems like it could blend in with NetCatch.py that I just uploaded. NetCatch takes a dictionary of links and reads in links selected by the user. Each value is a file or link but it could be a list. Let me know if I can make it more usable. BTW your python is cute. But I'd like to see helical "reticulations" for its pattern. After all, its a biopython, not any python. Cayte > Hi all, > > I am trying to expand the functionality of FSSP a bit. As part of that, I > would like to provide the user with the ability to give a PDB id, and > retrieve the name of the FSSP file(s) containing that PDB id. > > Without getting into too much details, each FSSP file (out of some 2800) > has anywhere between 3 and 300 PDB ids, some of them in more than one > file. > > I was thinking of creating a dictionary which will look something like: > { '1chyA': ['1xyzB','3fgy0'], > '3dcp0': ['3syx'], > '2abcC': ['3syx', '4rde'], > . > . > . > } > # Meaning, that 1chyA is in the FSSP file represented by 1xyzB and in the > # one represented by 3fgy0 > > Dictionary creation will be a one-time thing, its updates as frequently as > the user likes (not very frequent), and queries will be many (very > frequent). It seems a bit large to read (some 2800 keys, and rising) in > anytime you actually need to find out where 2abcC is located, so I thought > of using the Python dbm interface. > > 'anydbm', so as to maximize platform independence. > > ***** Is this good so far? Or is there a better tool I can use? I don't > want to use SQL here... seems a bit of an overkill. > > Because anydbm (as do gdbm, dumbdbm...) accepts only strings for keys and > values, and I'd like to use lists in the values (maybe also in the keys), > I thought that creating a UserDict instance which overloads __getitem__, > __setitem__, etc. , using cPickle.loads and cPickle.dumps for key and > values, this transparently enabling the use of non-strings in a Python dbm > interface. (Bit of code attached). > > **** This seems a very generic application. I'd be extremely surprised if > nobody did something like this before. But I couldn't really find > anything. Comments? > > > Thanks, > > Iddo > > > -- > > Iddo Friedberg | Tel: +972-2-6757374 > Dept. of Molecular Genetics and Biotechnology | Fax: +972-2-6757308 > The Hebrew University - Hadassah Medical School | email: idoerg@cc.huji.ac.il > POB 12272, Jerusalem 91120 | > Israel | > http://bioinfo.md.huji.ac.il/marg/people-home/iddo/ > > > > > > From idoerg at cc.huji.ac.il Thu Jun 20 17:35:54 2002 From: idoerg at cc.huji.ac.il (Iddo Friedberg) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] Implementation advice In-Reply-To: <002e01c218b1$c7365560$08fea8c0@pcklindner> Message-ID: On Thu, 20 Jun 2002, Cayte wrote: : I just finished NetCatch.Seems like it could blend in with NetCatch.py : that I just uploaded. NetCatch takes a dictionary of links and reads in : links selected by the user.Each value is a file or link but it could be a : list. : Let me know if I can make it more usable. Seems like NetCatch is fine just the way it is. I'm not sure what added functionality my little sceme can add...example? Actually, in FSSP, no single PDB entry belongs to more than one file. So the dictionary is actually simpler for the purpose i presented it... but I still might want to keep lists or even instances in the values. I already wrote the code, (needed it here fast) but I am not uploading it yet. Once I figure out how to use the indexing scheme a-la-Mindy, I'll upload something more in the spirit of obf cooporativity. : : BTW your python is cute. But I'd like to see helical "reticulations" for : its pattern.After all, its a biopython, not any python. :-) Just a sketch... but I _do_ need some new T-shirts... Iddo -- Iddo Friedberg | Tel: +972-2-6757374 Dept. of Molecular Genetics and Biotechnology | Fax: +972-2-6757308 The Hebrew University - Hadassah Medical School | email: idoerg@cc.huji.ac.il POB 12272, Jerusalem 91120 | Israel | http://bioinfo.md.huji.ac.il/marg/people-home/iddo/ From katel at worldpath.net Thu Jun 20 23:36:34 2002 From: katel at worldpath.net (Cayte) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] Implementation advice References: Message-ID: <004401c218d4$d8786f20$08fea8c0@pcklindner> ----- Original Message ----- From: "Iddo Friedberg" To: "Cayte" Cc: "Biopython Developers Mailing List" Sent: Thursday, June 20, 2002 2:35 PM Subject: Re: [Biopython-dev] Implementation advice > Seems like NetCatch is fine just the way it is. I'm not sure what added > functionality my little sceme can add...example? > > NetCatch is half of a utility. The other half is building a dictionary of urls that NetCatch can use. Cayte From idoerg at cc.huji.ac.il Fri Jun 21 04:06:52 2002 From: idoerg at cc.huji.ac.il (Iddo Friedberg) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] Implementation advice In-Reply-To: <004401c218d4$d8786f20$08fea8c0@pcklindner> Message-ID: On Thu, 20 Jun 2002, Cayte wrote: : Iddo: : : > Seems like NetCatch is fine just the way it is. I'm not sure what added : > functionality my little sceme can add...example? : > : > Cayte: : NetCatch is half of a utility. The other half is building a dictionary : of urls that NetCatch can use. : Will the shelve module work for that? Iddo -- Iddo Friedberg | Tel: +972-2-6757374 Dept. of Molecular Genetics and Biotechnology | Fax: +972-2-6757308 The Hebrew University - Hadassah Medical School | email: idoerg@cc.huji.ac.il POB 12272, Jerusalem 91120 | Israel | http://bioinfo.md.huji.ac.il/marg/people-home/iddo/ From thamelry at vub.ac.be Fri Jun 21 06:02:40 2002 From: thamelry at vub.ac.be (Thomas Hamelryck) Date: Sat Mar 5 14:43:13 2005 Subject: [Biopython-dev] Added NN search Message-ID: <200206210959.g5L9xY929824@riker.skynet.be> Added a simple but effective method to the KDTree class to search all point pairs within a given radius (simply sort points along x and then check all points with delta(x) Message-ID: Hi, I have played a bit more with the PDB module, and I really like it. Thomas: any chance of added functionalities? I was thinking of: Methods: Residue: * psi, phi, omega, chi1 and chi2 angles * centroid "atom" position (in order to calculate residue distances). * neighbors: returns neighboring residues by centroid Atom: neighbors: returns neighboring atoms. can be limited to a chain, or not. Functions: hbond(residue1, residue2) returns true if residue1 and residue2 are hbonded. ramachandran_plot(chain) (can be a method) contact_map(chain) (ditto) I think these are basic functions (some of which you have probably written already), which will look nice in the PDB module. Yours, Iddo -- Iddo Friedberg | Tel: +972-2-6757374 Dept. of Molecular Genetics and Biotechnology | Fax: +972-2-6757308 The Hebrew University - Hadassah Medical School | email: idoerg@cc.huji.ac.il POB 12272, Jerusalem 91120 | Israel | http://bioinfo.md.huji.ac.il/marg/people-home/iddo/ From biopython-bugs at bioperl.org Tue Jun 25 03:51:22 2002 From: biopython-bugs at bioperl.org (biopython-bugs@bioperl.org) Date: Sat Mar 5 14:43:14 2005 Subject: [Biopython-dev] Notification: incoming/73 Message-ID: <200206250751.g5P7pMGV009195@pw600a.bioperl.org> JitterBug notification new message incoming/73 Message summary for PR#73 From: "" Subject: Financial Services for Expatriates in Shanghai Date: Tue, 25 Jun 2002 16:55:47 0800 0 replies 0 followups ====> ORIGINAL MESSAGE FOLLOWS <==== >From service@expatsh.com Tue Jun 25 03:51:22 2002 Received: from 550e ([61.171.211.150]) by pw600a.bioperl.org (8.12.2/8.12.2) with SMTP id g5P7ojGV009185 for ; Tue, 25 Jun 2002 03:50:54 -0400 x-esmtp: 0 0 1 Message-ID: <131313-22002622585547737@expatsh.com> X-EM-Version: 6, 0, 1, 0 X-EM-Registration: #00F06206106618006920 X-Priority: 3 Reply-To: service@expatsh.com To: "Shanghai" From: "" Subject: Financial Services for Expatriates in Shanghai Date: Tue, 25 Jun 2002 16:55:47 +0800 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_84815C5ABAF209EF376268C8" X-SMTPExp-Version: 1, 0, 2, 13 X-SMTPExp-Registration: 00B0320C107602006905 ------=_NextPart_84815C5ABAF209EF376268C8 Content-type: text/plain; charset="US-ASCII" Financial Services for Expatriates in Shanghai Savings Plans and Retirement Plans Annual Compound Return since Launch in 1977 of 18.15% Bonuses cancel out charges (therefore a charge-free investment) No Charges for stopping payments or withdrawals (after 10 months) Invested with the 46th Largest Company in the Fortune 500 View your own statements Online For details of the Savings and Retirement Plans, please click Here Protected Lump-Sum Investments Three Year Investment Period Linked to Stock Markets (currently very low) 132% Return on your investment provided Markets do not fall by more than 30% Choice of Currencies - USD, Euro or GBP For details of the Select Income and Bonus Growth Bond, please click Here Lump-Sum Investments into Global Funds Five Year Investment 4% Bonus on larger investments No front end charge or rear-end charge after 5 years Access to any Fund listed on Standard and Poor's Micropal (Here) Partial Encashments Allowed Penalty Free Choice of any recognised Global Currency For details of the Lump-Sum Investments, please click Here Global Healthcare and Medical Cover Lowest Premiums Globally Card Accepted at most Chinese and Global Hospitals (no paying up front) Evacuation Cover Three Levels of Cover, Gold, Silver and Bronze For details of the Global Healthcare Cover, please click Here Home Page|| Sitemap || A-Z Directory || OASIS Online || In Detail || Calendar of Events || Expat Links || Consulates || Emergency Contact Numbers || Clubs & Associations || Restaurants || Bars || Nightclubs|| Real Estate || Classifieds || Shopping || Art || Theatre || Golf Courses || Theme Parks || Newspapers from Home || Relocating to Shanghai?|| Shanghai Chat || Online Help || Schools || Kindergarten || Universities|| |Markets || Latest Headlines || Newspapers || Live Cams || Lottery Results Please Click Here if you Do Not wish to Receive These E-Mails ------=_NextPart_84815C5ABAF209EF376268C8 Content-Type: text/html; charset="US-ASCII" Content-Transfer-Encoding: quoted-printable Financial Services in Shanghai =20

Financial=20 Services for Expatriates in Shanghai

<= I>Savings=20 Plans and Retirement Plans=20

=20 Annual Compound Return since Launch in 1977 of = 18=2E15%
Bonuses=20 cancel out charges (therefore a charge-free investment)
No Charges for = stopping=20 payments or withdrawals (after 10 months)
Invested with the 46th Larges= t Company=20 in the Fortune 500
View your own statements Online

For=20 details of the Savings and Retirement Plans, please click Here

Protected=20 Lump-Sum Investments

Three=20 Year Investment Period
Linked to Stock Markets (currently very low)
= 132%=20 Return on your investment provided Markets do not fall by more than 30%Choice=20 of Currencies - USD, Euro or GBP

= For=20 details of the Select Income and Bonus Growth Bond, please click Here

Lump-Sum=20 Investments into Global Funds

Five=20 Year Investment
4% Bonus on larger investments
No front end charge o= r rear-end=20 charge after 5 years
Access to any Fund listed on Standard and Poor's M= icropal=20 (Here)
Partial Encashments= Allowed Penalty=20 Free
Choice of any recognised Global Currency

For=20 details of the Lump-Sum Investments, please click Here

Global=20 Healthcare and Medical Cover

= Lowest=20= Premiums Globally
Card Accepted at most Chinese and Global Hospitals (n= o paying=20 up front)
Evacuation Cover
Three Levels of Cover, Gold, Silver and B= ronze
=

For=20 details of the Global Healthcare Cover, please click Here

=20
= Home=20 Page|| Sitemap || A-Z=20 Directory || OASIS= Online=20 || In Detail ||=20 Calendar of Eve= nts || MESSAGE TRUNCATED AT 8192 <==== From thamelry at vub.ac.be Tue Jun 25 05:34:56 2002 From: thamelry at vub.ac.be (Thomas Hamelryck) Date: Sat Mar 5 14:43:14 2005 Subject: [Biopython-dev] PDB module In-Reply-To: References: Message-ID: <200206250931.g5P9VjH26667@durendal.skynet.be> Hi Iddo, > I have played a bit more with the PDB module, and I really like it. Glad you like it. > Thomas: any chance of added functionalities? Yep. I am (still!) working on the C++ code to do lookup in space (eg. find all atom pairs within 3 A, find all residues within a certain radius etc.). Many of the items in your list (neighboring residues and atoms, contact maps, H-bonds) can then be easily (and efficiently!) implemented in python. I have some code to calculate angles, dihedral angles etc. I'll add that one of these days. Before I add things like Ramachandran plots etc. I want to add code to locate the various polymers in crystal structures (polypeptides, RNA, DNA, glycosidic bonds etc.). Polymer objects would be built by a PolymerBuilder object, which in turn relies on a PolymerDefinition object that specifies how to build the polymer (e.g. whhich atoms are involved etc.). Something like: p=PolymerBuilder(PolypeptideDefinition) model=structure[0] list_of_polymers=p.build(model) Cheers, --- Thomas Hamelryck Vrije Universiteit Brussel (VUB) Intitute for Molecular Biology ULTR Department Paardenstraat 65 1640 Sint-Gensius-Rode Belgium http://ultr.vub.ac.be/~thomas From jchang at smi.stanford.edu Thu Jun 27 04:02:27 2002 From: jchang at smi.stanford.edu (Jeffrey Chang) Date: Sat Mar 5 14:43:14 2005 Subject: [Biopython-dev] updated FAQ Message-ID: <20020627010227.A85756@springfield.stanford.edu> Hey everybody, The FAQ was hideously out of date (there was still verbiage saying that we don't have any code!), so I've updated it. I removed text that's not applicable anymore and have added a few more entries relevant to people who want to submit code. Please take a look and let me know if you can think of other things to add. http://www.biopython.org/FAQ.shtml I've also added a Bugzilla bug (using my time machine :) to look for software to help maintain FAQs. http://cvs.bioperl.org/bugzilla/show_bug.cgi?id=2 Jeff From idoerg at cc.huji.ac.il Thu Jun 27 08:17:42 2002 From: idoerg at cc.huji.ac.il (Iddo Friedberg) Date: Sat Mar 5 14:43:14 2005 Subject: [Biopython-dev] updated FAQ References: <20020627010227.A85756@springfield.stanford.edu> Message-ID: <3D1B0266.8070504@cc.huji.ac.il> Nice job. About time too. I would add in the FAQ the following, for a quick start for potential users: Q: "How do I start to use biopython?" A: Download from (URL). See docs for tutorials. htere are also biopython courses which have been put online (URLs) As for the faq-o-matic: faqwiz.py is what python.org use. It doesn't seem to be with the source distribution, and I couldn't find a decent place to download it from. I did find it on my ol' 2.0 RPM. I'll email a tarball to you, Jeff. Iddo Jeffrey Chang wrote: > Hey everybody, > > The FAQ was hideously out of date (there was still verbiage saying > that we don't have any code!), so I've updated it. I removed text > that's not applicable anymore and have added a few more entries > relevant to people who want to submit code. Please take a look and > let me know if you can think of other things to add. > http://www.biopython.org/FAQ.shtml > > I've also added a Bugzilla bug (using my time machine :) to look for > software to help maintain FAQs. > http://cvs.bioperl.org/bugzilla/show_bug.cgi?id=2 > > Jeff > > _______________________________________________ > Biopython-dev mailing list > Biopython-dev@biopython.org > http://biopython.org/mailman/listinfo/biopython-dev > > -- Iddo Friedberg | Tel: +972-2-6757374 Dept. of Molecular Genetics and Biotechnology | Fax: +972-2-6784010 The Hebrew University - Hadassah Medical School | idoerg@cc.huji.ac.il POB 12272, Jerusalem 91120 | Israel | http://bioinfo.md.huji.ac.il/marg/people-home/iddo/ From Y.Benita at pharm.uu.nl Thu Jun 27 09:38:18 2002 From: Y.Benita at pharm.uu.nl (Yair Benita) Date: Sat Mar 5 14:43:14 2005 Subject: [Biopython-dev] Why don't we start the documentations as well? Message-ID: Hi All, If the faq has already been updated why don't we go further and do something about the documentation. I suggest we make a template for each module. Something like: Module X: the function of this module For each class: Class y: description of the class Attributes: attribute name and the value returned. Methods: what the method is doing and what value is returned. It should be a library on the biopython web-site which is constantly updated as modules are submitted or changed. Any of us, when he has time can complete an online form of the template and submit it for review to those who have access to the web site. That way we can share the burden of documenting. We can start with minimal documentation on each module and complete it with time. Yair -- Yair Benita Pharmaceutical Proteomics Utrecht University From Y.Benita at pharm.uu.nl Thu Jun 27 09:46:33 2002 From: Y.Benita at pharm.uu.nl (Yair Benita) Date: Sat Mar 5 14:43:14 2005 Subject: [Biopython-dev] EuroPython update Message-ID: OK, I got back from EuroPython and must say it was great. There were more than 200 attendants and a lot of "famous" guys, such as, Guido van Rossum, Paul Dubois (numeric), Marc-Andre Lamburg (mxTextTools) and many others. I represented all of you honorably and received a good feedback on the presentation. It was a good experience and I had fun doing that. Alas, I forgot my camera at home and don't have any pictures (sorry). Yair -- Yair Benita Pharmaceutical Proteomics Utrecht University From jchang at smi.stanford.edu Thu Jun 27 12:52:06 2002 From: jchang at smi.stanford.edu (Jeffrey Chang) Date: Sat Mar 5 14:43:14 2005 Subject: [Biopython-dev] Why don't we start the documentations as well? In-Reply-To: ; from Y.Benita@pharm.uu.nl on Thu, Jun 27, 2002 at 03:38:18PM +0200 References: Message-ID: <20020627095206.B86687@springfield.stanford.edu> That would be useful. What you're proposing sounds like a reference book that would complement Brad's tutorial and cookbook. How do you think it should be maintained? In the Wiki or some other way? Also, how would we handle the versioning, e.g. if a function changes from one version to another in Biopython? Jeff On Thu, Jun 27, 2002 at 03:38:18PM +0200, Yair Benita wrote: > Hi All, > If the faq has already been updated why don't we go further and do something > about the documentation. > I suggest we make a template for each module. Something like: > > Module X: the function of this module > For each class: > Class y: description of the class > Attributes: attribute name and the value returned. > Methods: what the method is doing and what value is returned. > > It should be a library on the biopython web-site which is constantly updated > as modules are submitted or changed. Any of us, when he has time can > complete an online form of the template and submit it for review to those > who have access to the web site. That way we can share the burden of > documenting. > > We can start with minimal documentation on each module and complete it with > time. > Yair > -- > Yair Benita > Pharmaceutical Proteomics > Utrecht University > > _______________________________________________ > Biopython-dev mailing list > Biopython-dev@biopython.org > http://biopython.org/mailman/listinfo/biopython-dev From jchang at smi.stanford.edu Sun Jun 30 01:25:52 2002 From: jchang at smi.stanford.edu (Jeffrey Chang) Date: Sat Mar 5 14:43:14 2005 Subject: [Biopython-dev] updated FAQ In-Reply-To: <3D1B0266.8070504@cc.huji.ac.il>; from idoerg@cc.huji.ac.il on Thu, Jun 27, 2002 at 03:17:42PM +0300 References: <20020627010227.A85756@springfield.stanford.edu> <3D1B0266.8070504@cc.huji.ac.il> Message-ID: <20020629222551.B96049@springfield.stanford.edu> On Thu, Jun 27, 2002 at 03:17:42PM +0300, Iddo Friedberg wrote: > Q: "How do I start to use biopython?" > > A: Download from (URL). See docs for tutorials. htere are also biopython > courses which have been put online (URLs) Added. > As for the faq-o-matic: faqwiz.py is what python.org use. It doesn't > seem to be with the source distribution, and I couldn't find a decent > place to download it from. I did find it on my ol' 2.0 RPM. I'll email a > tarball to you, Jeff. Yeah, I like faqwiz as well. Since open-bio is redesigning the websites, it's a good time to bring it up for discussion. I'll see whether the webteam likes it, and try to run an evaluation copy, similar to what we're doing with bugzilla. Thanks for the tarball! Jeff From jchang at smi.stanford.edu Sun Jun 30 04:11:43 2002 From: jchang at smi.stanford.edu (Jeffrey Chang) Date: Sat Mar 5 14:43:14 2005 Subject: [Biopython-dev] missing BOSC this year Message-ID: <20020630011143.G96381@springfield.stanford.edu> Hey everybody, Due to some unfortunate vacation scheduling on my part, I'm going to be missing BOSC this year. I'll be at ISMB so will see most of you there then. I'm sure you all will hold down the fort. Good luck with the talk, Brad! Jeff