[Bioperl-l] Re: Proposed bioperl submission

Ewan Birney birney at ebi.ac.uk
Mon Mar 10 08:10:26 EST 2003


[cc'ing in Bioperl for this submission of siRNA objects]

Looks very cool. The basic flow if I have got it right is:


   Bio::Tools::SiRNA ----> make a set of Bio::SeqFeature::SiRNAs which is
made from two oligo object, and has a ranking.


   Bio::Tools::SiRNA tries to dodge SNPs and repeats and uses the MDust
module as well.



I would take the modules as they stand, but ideally would like the
following things:

   (a) clean up (eg, remove the use lib() in Bio::Tools::SiRNA)

   (b) EXPORT_OK( :all) etc should not be needed, as none of the modules
should be exporting. True?

   (c) it would be nice for the Bio::Tools::SiRNA to take a -target =>
$target intialisation, eg

    $sirna_designer = Bio::Tools::SiRNA->new( -target => $target)

   (check out the _rearrange method on Bio::Root::RootI)

   (d) Complete bonus would be if Bio::SeqFeature::SiRNA had a to_FTHelper
method. The to_FTHelper unpacks the seqfeature into EMBL/GenBank files to
make the description block there. This way you can have complete control
over the "display" of siRNA info. We probably don't make enough use of
to_FTHelper internally in Bioperl. An example is here from Ensembl where
we are exporting Genes into EMBL/GenBank format (this is a pretty complex
case)


sub to_FTHelper {
  my $self = shift;

  my @out;

  my @dblinks = @{$self->gene->get_all_DBLinks()};

  foreach my $trans (@{$self->gene->get_all_Transcripts()}) {
    my $loc = features2join_string($trans->get_all_translateable_Exons);

    my $ft = Bio::SeqIO::FTHelper->new();
    $ft->loc($loc);
    $ft->key('CDS');

    $ft->add_field('translation', $trans->translate()->seq());
    $ft->add_field('cds', $trans->translation->stable_id());
    $ft->add_field('gene', $self->gene->stable_id());
    $ft->add_field('transcript', $trans->stable_id());
    foreach my $dbl (@dblinks) {
      $ft->add_field('db_xref', $dbl->database().":".$dbl->display_id());
    }
    push(@out, $ft);
  }

  foreach my $exon (@{$self->gene->get_all_Exons()}) {
    my $ft = Bio::SeqIO::FTHelper->new();

    my $loc = features2join_string([$exon]);
    $ft->loc($loc);
    $ft->key("exon");


    if( $self->strict_EMBL_dumping()) {
      $ft->add_field('db_xref', 'ENSEMBL:HUMAN-Exon-'.$exon->stable_id());
    } else {
      $ft->add_field('exon_id', $exon->stable_id());
      $ft->add_field('start_phase', $exon->phase());
      $ft->add_field('end_phase', $exon->phase());
    }

    push (@out, $ft);
  }

  return @out;
}







More information about the Bioperl-l mailing list