[Bioperl-l] TFBS databases, Bio::Matrix::PSM suitable?
cjfields at uiuc.edu
Tue Aug 22 08:40:53 EDT 2006
Many Bio::DB* modules access the database to get the raw data, and
this is attached to an Bio::*IO stream class in some way (for most
cases). There are a few that get around this; for instance,
Bio::DB::Taxonomy* uses no specialized SeqIO-like class.
Like you mentioned, you could extend Bio::Matrix::PSM::IO::transfac
specifically to encompass the 'instance' sequences (the other PSM::IO
modules wouldn't have the same methods available to them), use
SimpleAlign or SeqFeature::SimilarityPair (I agree the former is
probably better). Or have the Bio::DB module set up to grab either
your 'instance' sequences by ID (where you could possibly implement
RandomAccessI) or a Transfac PSM (implement a new Matrix-based)
Does the TFBS package have any overlap here? I haven't used them
(they require PDL which is a pain to install on WinXP) but they are
supposed to be fully integrated with Bioperl.
On Aug 22, 2006, at 3:23 AM, Sendu Bala wrote:
> I'm looking to extract data from some Transcription Factor Binding
> (TFBS) databases. For example, matrix, sequence and known position
> information out of Transfac flatfiles.
> Currently there is Bio::Matrix::PSM::IO::transfac, but it only
> gives you
> the PSM matrices, not the 'instance' sequences. Bio::Matrix::PSM also
> has this to say:
>> =head1 DESCRIPTION
>> To handle a combination of site matrices and/or their corresponding
>> sequence matches (instances). This object inherits from
>> Bio::Matrix::PSM::SiteMatrix, so you can use the respective
>> methods. It may hold also an array of Bio::Matrix::PSM::InstanceSite
>> object, but you will have to retrieve these through
>> Bio::Matrix::PSM::Psm-E<gt>instances method (see below). To some
>> this is an expanded SiteMatrix object, holding data from analysis
>> also deal with sequence matches of a particular matrix.
>> =head2 DESIGN ISSUES
>> This does not make too much sense to me I am mixing PSM with PSM
>> sequence matches Though they are very closely related, I am not
>> satisfied by the way this is implemented here. Heikki suggested
>> different objects when one has something like meme But does this mean
>> we have to write a different objects for mast, meme, transfac,
>> theiresias, etc.? To me the best way is to return SiteMatrix
>> object +
>> arrray of InstanceSite objects and then mast will return undef for
>> SiteMatrix and transfac will return undef for InstanceSite.
>> Probably I
>> cannot see some other design issues that might arise from such
>> approach, but it seems more straightforward. Hilmar does not like
>> this beacause it is an exception from the general BioPerl rules
>> I leave this as an option? Also the header rightfully belongs the
>> driver object, and could be retrieved as hashes. I do not think it
>> can be done any other way, unless we want to create even one more
>> object with very unclear content.
> I actually want to get even more kinds of data out, so rather than
> extend Bio::Matrix::PSM::IO::transfac and related modules in some way,
> would it be more appropriate to have something like
> Bio::DB::TFBS::transfac which had a number of methods that gave
> kinds of objects? We could have get_psm() which gives a normal 'pure'
> Bio::Matrix::PSM with no InstanceSite objects, get_aln() which
> returns a
> Bio::SimpleAlign for the 'instance' sequences that were used to
> a given PSM, and get_map() which returns a new special kind of
> with binding site position information.
> Another way it makes a little more sense for this to be a 'DB' module
> and not an IO one is that there are multiple huge Transfac data
> files in
> the database, with related and cross-referenced information. To
> the complete information you would want to parse them all and create
> indexes for fast lookups later, not something you really expect of
> an IO
> Thoughts anyone?
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
Lab of Dr. Robert Switzer
Dept of Biochemistry
University of Illinois Urbana-Champaign
More information about the Bioperl-l