BioPerl code optimization

From BioPerl
Jump to: navigation, search

These are BioPerl modules which could use some help with code optimization. This may be range from something as simple as speeding up regular expression searches to refactoring code. Some of these are avoidable by following Bioperl Best Practices.

Contents

Undesirable Perl artifacts

Use of the regular expression special variables ($`,$&,$',$+)

According to Perl documentation and Jeffrey Friedl (author of Mastering Regular Expressions), the following regular expression special variables are generally considered 'naughty,' in that they incur a significant performance hit:

  • $` (prematch)
  • $& (match)
  • $' (postmatch)
  • $+ (last bracket matched)
  • $- (first bracket matched)

Use of any of these special variables should be avoided if at all possible. This performance hit occurs when using the code directly (via use or require) or indirectly ('isa' and 'has-a' relationships within a class). These can generally be replaced with capture variables, i.e. $1, $2, etc.

Modules which use one or more of these:

Module Variable used Status
Bio::Tools::SiRNA::Ruleset::tuschl $` Fixed in CVS
Bio::Map::CytoPosition $& Not fixed yet
Bio::SeqIO::game::gameWriter $& Fixed in CVS
Bio::Tools::SeqPattern $& Fixed in CVS


Don't use 'return undef', use 'return'

Using 'return undef' will not always get you the results you expect.

From Perl.com: "Use return; instead of return undef; if you want to return nothing. If someone assigns the return value to an array, the latter creates an array of one value (undef), which evaluates to true. The former will correctly handle all contexts."

Module Line Status
Bio::DB::Biblio::pdf return undef; Fixed in CVS
Bio::DB::Biblio::pdf return undef unless $link; Fixed in CVS
Bio::DB::Biblio::pdf return undef; Fixed in CVS
Bio::DB::Biblio::eutils return undef; Fixed in CVS
Bio::DB::WebDBSeqI return undef if ( !defined $self->ua || !defin Fixed in CVS
Bio::Tools::Run::RemoteBlast return undef if ( !defined $self->ua Fixed in CVS
Bio::FeatureIO::gff return undef if $self->fasta_mode(); Fixed in CVS
Bio::Root::IOManager return undef unless -e $file; Fixed in CVS
Bio::Root::Object return undef unless defined $self->{'_err'}; Fixed in CVS

Always use BioPerl exception handling

BioPerl has a built-in error-handling system, detailed in Advanced BioPerl, which greatly enhances BioPerl debugging. There are several advantages to using this system: it provides a full trace stack when an error is thrown, the level of verbosity and strictness can be varied for any BioPerl object by using $obj->verbose(), and it provides more flexible error handling framework when working with classes. Additionally, you have the option of propogating the level of verbosity to internal objects by passing the parameter 'verbose => $self->verbose()'.

In short, use the following replacements:

Perlish BioPerlish
die 'Arghhh!'; $self->throw('Arghhh!');
warn 'Watch out!'; $self->warn('Watch out!');
print STDERR "Foobar : $foobar"; $self->debug("Foobar : $foobar");

The following modules violate these rules to some degree!

Module Line
Bio::Graphics::Glyph my $feature = $arg{-feature} or die "No featur
Bio::Graphics::Glyph::image open F,$path or die "Can't open $path
Bio::Graphics::Panel open (F,">$imagefile") || die("Can't open imag
Bio::Phenotype::OMIM::OMIMparser if ( ! defined( $description ) )
Bio::Phenotype::OMIM::OMIMparser if ( ! defined( $mutation ) ) {
Bio::LiveSeq::Chain die "_praepostinsert_array: Something went ve

Don't use the Carp module - use BioPerl exception handling

Instead of the following Carp:: functions, $self->throw an appropriate Bio::Root::Exception or use $self->warn.

carp      - warn of errors (from perspective of caller)
cluck     - warn of errors with stack backtrace 
croak     - die of errors (from perspective of caller)
confess   - die of errors with stack backtrace
shortmess - return the message that carp and croak produce
longmess  - return the message that cluck and confess produce

Here are the current violaters -- Torsten 17:26, 22 September 2006 (EDT) :

Bio::Align::Utilities not fixed yet
Bio::DB::SeqFeature not fixed yet
Bio::DB::SeqFeature::NormalizedFeature not fixed yet
Bio::DB::SeqFeature::Store not fixed yet
Bio::DB::SeqFeature::Store::GFF3Loader not fixed yet
Bio::DB::XEMBLService not fixed yet
Bio::FeatureHolderI not fixed yet
Bio::Graphics::FeatureFile not fixed yet
Bio::Graphics::Glyph not fixed yet
Bio::Graphics::Glyph::Factory not fixed yet
Bio::Graphics::Glyph::diamond not fixed yet
Bio::Graphics::Glyph::lightning not fixed yet
Bio::LiveSeq::AARange not fixed yet
Bio::LiveSeq::Chain not fixed yet
Bio::LiveSeq::ChainI not fixed yet
Bio::LiveSeq::Gene not fixed yet
Bio::LiveSeq::IO::BioPerl not fixed yet
Bio::LiveSeq::IO::Loader not fixed yet
Bio::LiveSeq::Mutator not fixed yet
Bio::LiveSeq::Range not fixed yet
Bio::LiveSeq::Transcript not fixed yet
Bio::LiveSeq::Translation not fixed yet
Bio::Perl OK
Bio::Range not fixed yet
Bio::Search::BlastUtils not fixed yet
Bio::Search::SearchUtils not fixed yet
Bio::Seq::QualI not fixed yet
Bio::Seq::TraceI not fixed yet
Bio::Tools::Blast::HTML not fixed yet
Bio::Tools::HMMER::Results FIXED
Bio::Tools::dpAlign not fixed yet

Various code inconsistencies

These are sort of a catch-all. Thanks Torsten!

"FIXME"

Bio::AlignIO::po not fixed yet
Bio::DB::Expression::geo FIXED
Bio::FeatureIO::gff not fixed yet
Bio::Ontology::RelationshipType not fixed yet
Bio::SeqIO::kegg not fixed yet
Bio::SeqIO::swiss not fixed yet
Bio::Tools::ESTScan not fixed yet
Bio::Tools::Est2Genome not fixed yet
Bio::Tools::GuessSeqFormat not fixed yet
Bio::Tools::HMMER::Results not fixed yet

"???"

Module Line Status
Bio::Variation::VariantI $self->allele_mut($value); #???? not fixed yet
Bio::DB::Biblio::soap use Bio::Biblio; # TBD:?? WHY SHOULD I DO THIS FIXED
Bio::DB::GFF::Adaptor::dbi::oracleace # then generate a bogus Homolo not fixed yet
Bio::DB::GFF::Adaptor::dbi::mysqlace # then generate a bogus Homolog not fixed yet
Bio::SeqFeature::Annotated Args  :??? not fixed yet
Bio::SeqFeature::Tools::Unflattener # what should w not fixed yet
Bio::SeqFeature::Tools::IDHandler # warn?? not fixed yet
Bio::Root::IO $ROOTDIR = ""; # what is reasonable?? not fixed yet
Bio::LiveSeq::Chain # *??* create hash2dchain ???? (m:# **????** how not fixed yet

"TODO"

Module Line Status
Bio::Root::Root # TODO: Fix the MSG: line of the re-thrown err not fixed yet
Bio::Root::Storable # TODO: add cleanup and unlink methods. For n not fixed yet
Bio::Seq::EncodedSeq #TODO: finish all this not fixed yet
Bio::SeqFeature::Tools::Unflattener # TODO - we ignore this not fixed yet
Bio::SeqFeature::Tools::Unflattener # TODO - allow more not fixed yet
Bio::SeqFeature::Tools::Unflattener ## features. TODO: P not fixed yet
Bio::SeqIO::game::gameWriter #TODO: can't sequences also have database not fixed yet
Bio::SeqIO::chaos # TODO not fixed yet
Bio::SeqIO::pir # TODO - not processing SFS data not fixed yet
Bio::SeqIO::strider # TODO: determine 'DNA Degenerate not fixed yet
Bio::Search::BlastUtils # TODO: Account for strand/frame issue! not fixed yet

"***"

Module Line Status
Bio::Map::Physical #*** why doesn't it call Bio::Map::Clone->new not fixed yet
Bio::Map::Physical #*** why doesn't it call Bio::Map::FPCMarker-> not fixed yet
Bio::Map::Physical #*** why doesn't it call Bio::Map::Contig->new not fixed yet
Bio::Map::PositionI #*** should this be overridden from RangeI? not fixed yet
Bio::Matrix::PSM::SiteMatrix #*** IUPACp values not actually u not fixed yet
Bio::Tree::TreeFunctionsI #*** the algorithm here hasn't really b not fixed yet
Bio::SeqIO::agave ***NOTE*** At the moment, not all of the tags are Bio/LiveSeq/Chain.pm not fixed yet
Bio::SeqIO::agave # **** performance concerns not fixed yet
Bio::Map::LinkageMap #*** what is this? what calls it? note that it s not fixed yet
Bio::Map::Marker *** does not actually add this marker to the not fixed yet
Bio::Map::SimpleMap *** does not actually add the element to th not fixed yet
Bio::Map::FPCMarker *** This has nothing to do with an actual not fixed yet
Bio::Map::PositionI #*** should this be overridden from RangeI? not fixed yet

"Why?"

Module Line Status
Bio::Search::Hit::PullHitI # why does this method even exist?! not fixed yet
Bio::Search::Hit::PullHitI # why does this method even exist?! not fixed yet
Bio::DB::Biblio::soap use Bio::Biblio; # TBD: ?? WHY SHOULD I DO THIS not fixed yet
Bio::Graphics::Glyph::dot # The can() method fails with GD::SVG. Why not fixed yet
Bio::SeqIO::bsml # Need to kill object for following code to work... not fixed yet
Bio::SeqIO::tinyseq foreach my $subatt(@$seqatt) { # why are there t not fixed yet
Bio::SeqIO::tinyseq # NCBI puts refseq ids in TSeq_sid, others in not fixed yet
Bio::SeqIO::game::featHandler # Why is CDS coordinate info saved a not fixed yet
Bio::SeqIO::swiss # Um, why would this be anything else but PRT? not fixed yet
Bio::Taxonomy # taxonomy - why would you be doing things this not fixed yet
Bio::Seq # I can't remember why not delegating was ever deemed not fixed yet
Bio::Cluster::UniGene # why does NCBI prepend a 'g' to its own not fixed yet
Bio::LiveSeq::IO::BioPerl # why array from each_tag_value($qual) ? Whe not fixed yet
Bio::SearchIO::Writer::HSPTableWriter # Don't know why this not fixed yet
Bio::SearchIO::Writer::ResultTableWriter # Don't know why t not fixed yet
Bio::Tools::Alignment::Consed Why was this developed like this? I was not fixed yet
Bio::Tools::Alignment::Consed # if there is a member array (why woul not fixed yet
Bio::Map::Physical #*** why doesn't it call Bio::Map::Clone->new ? not fixed yet
Bio::Map::Physical #*** why doesn't it call Bio::Map::FPCMarker not fixed yet
Bio::Map::Physical #*** why doesn't it call Bio::Map::Contig->new not fixed yet
Bio::SeqFeature::Primer off from those of the idtdna web not fixed yet
Bio::SeqFeature::Primer as primer3 does. Don't ask why, I never f not fixed yet
Bio::Seq::PrimaryQual Returns: 1 for a valid sequence (WHY? Shouldn not fixed yet
Bio::Seq::PrimaryQual Args  : a scalar (any scalar, why PrimarySeq< not fixed yet

"hack"

Module Line Status
Bio::DB::Flat::BinarySearch # is an awful hack - in reality Michele's Bio/DB/WebDBSeqI.pm not fixed yet
Bio::DB::Flat::BinarySearch # sorry, but this is hacked in because of BioFetch not fixed yet
Bio::DB::SeqFeature::Store::GFF3Loader # TEMPORARY HACKS TO SIMPLIFY not fixed yet
Bio::AlignIO::phylip #if you use a version of phylip (hacked) tha not fixed yet
Bio::SearchIO::blast # bl2seq hackiness... Not sure I lik not fixed yet
Bio::Tools::Sigcleave ## a quick hack to make sure that we get the sc not fixed yet
Bio::Tools::Blast::HTML # This is fine for yeast but not worm. This not fixed yet
Bio::Tools::Geneid # then need to perform the hack of extract not fixed yet
Bio::Root::Utilities # this is a quick hack to check for availabili Bio/Root/Err.pm: not fixed yet

Various POD inconsistencies

Found using scripts and grep by Torsten.

"Complain to author"

Found by grep -ir 'complain to author' /cvs/bioperl-live/Bio

"#documentation needed"

  • Bio/LiveSeq/ChainI.pm: #documentation needed
  • Bio/LiveSeq/Repeat_Unit.pm: # documentation needed
  • Bio/LiveSeq/Prim_Transcript.pm: # documentation needed
  • Bio/LiveSeq/Chain.pm: #documentation needed
  • Bio/LiveSeq/SeqI.pm: # documentation needed
  • Bio/LiveSeq/Translation.pm: #documentation needed
  • Bio/LiveSeq/Transcript.pm: # documentation needed
  • Bio/LiveSeq/IO/Loader.pm: #documentation needed
  • Bio/LiveSeq/Range.pm: # documentation needed
  • Bio/LiveSeq/Repeat_Region.pm: # documentation needed
  • Bio/LiveSeq/Gene.pm: # documentation needed
  • Bio/LiveSeq/DNA.pm: # documentation needed
  • Bio/LiveSeq/AARange.pm: #documentation needed
  • Bio/LiveSeq/Exon.pm: # documentation needed
  • Bio/LiveSeq/Intron.pm: # documentation needed
  • Bio/SeqFeature/Gene/GeneStructureI.pm: #documentation needed
  • Bio/SeqFeature/Gene/TranscriptI.pm: #documentation needed

POD NAME doesn't match .pm file

The output of the script maintenance/check_NAME.pl can be used to check which modules don't have the correct NAME section in their POD.

Verified that all fixed in CVS. Torsten 18:26, 21 September 2006 (EDT)

  • Bio::IdCollectionI
  • Bio::Location::SplitLocationI
  • Bio::Search::Result::PullResultI
  • Bio::Search::HSP::HmmpfamHSP
  • Bio::Search::Hit::HmmpfamHit
  • Bio::Expression::FeatureGroup::FeatureGroupMas50
  • Bio::Expression::FeatureSet::FeatureSetMas50
  • Bio::DB::EUtilities::Cookie
  • Bio::DB::GFF::Adaptor::berkeleydb
  • Bio::DB::GFF::Adaptor::biofetch_oracle
  • Bio::DB::GFF::Adaptor::dbi::pg_fts
  • Bio::DB::GFF::Adaptor::memory::feature_serializer
  • Bio::DB::SeqFeature::Store::bdb
  • Bio::DB::SeqFeature::Store::DBI::Iterator
  • Bio::Matrix::PSM::SiteMatrixI
  • Bio::Matrix::PSM::ProtPsm
  • Bio::Matrix::PSM::IO::psiblast
  • Bio::Matrix::PSM::IO::transfac
  • Bio::Matrix::PSM::IO::meme
  • Bio::Graphics::Util
  • Bio::Graphics::Glyph::ex
  • Bio::Graphics::Glyph::three_letters
  • Bio::Graphics::Glyph::arrow
  • Bio::Graphics::Glyph::ruler_arrow
  • Bio::Graphics::Glyph::flag
  • Bio::Phenotype::Measure
  • Bio::Phenotype::PhenotypeI
  • Bio::Phenotype::Phenotype
  • Bio::Phenotype::Correlate
  • Bio::Phenotype::OMIM::MiniMIMentry
  • Bio::Phenotype::OMIM::OMIMparser
  • Bio::Phenotype::OMIM::OMIMentry
  • Bio::Phenotype::OMIM::OMIMentryAllelicVariant
  • Bio::SeqIO::qual
  • Bio::SeqIO::genbank
  • Bio::OntologyIO::simplehierarchy
  • Bio::OntologyIO::InterProParser
  • Bio::OntologyIO::soflat
  • Bio::OntologyIO::dagflat
  • Bio::OntologyIO::obo
  • Bio::OntologyIO::goflat
  • Bio::OntologyIO::Handlers::InterProHandler
  • Bio::Tools::pICalculator
  • Bio::Tools::ECnumber
  • Bio::SeqFeature::Gene::GeneStructureI
  • Bio::SeqFeature::Gene::Poly_A_site
  • Bio::Seq::SeqFastaSpeedFactory
  • Bio::Ontology::RelationshipI
  • Bio::Ontology::TermI
  • Bio::Ontology::InterProTerm
  • Bio::Ontology::RelationshipType
  • Bio::Ontology::OBOterm
  • Bio::Ontology::OBOEngine
  • Bio::Ontology::PathI
  • Bio::Ontology::OntologyEngineI
  • Bio::Ontology::Path
  • Bio::Ontology::GOterm
  • Bio::Ontology::Term
  • Bio::Ontology::SimpleGOEngine
  • Bio::Ontology::Relationship
  • Bio::Ontology::SimpleGOEngine::GraphAdaptor
  • Bio::Ontology::SimpleGOEngine::GraphAdaptor02

Still have "DESCRIPTION of Object" as "NAME" in POD

I've fixed all of these Torsten 19:43, 20 September 2006 (EDT)

podchecker warnings and errors

Perl comes with a script called podchecker. Here is the output of the following command:

find /cvs/bioperl-live/Bio -name \*.pm -exec podchecker {} \;
  • WARNING: multiple occurrence of link target 'a' at line - in file Bio/DB/GFF.pm
  • WARNING: multiple occurrence of link target 'multi_id' at line - in file Bio/DB/EUtilities/elink.pm
  • WARNING: multiple occurrence of link target 'method' at line - in file Bio/DB/GFF/Aggregator.pm
  • WARNING: multiple occurrence of link target 'No' at line - in file Bio/DB/SeqFeature/Store.pm
  • WARNING: multiple occurrence of link target 'NAME' at line - in file Bio/Graphics/Glyph/ex.pm
  • WARNING: multiple occurrence of link target 'NAME' at line - in file Bio/Graphics/Glyph/three_letters.pm
  • WARNING: multiple occurrence of link target 'NAME' at line - in file Bio/Graphics/Glyph/arrow.pm
  • WARNING: multiple occurrence of link target 'NAME' at line - in file Bio/Graphics/Glyph/ruler_arrow.pm
  • WARNING: multiple occurrence of link target 'NAME' at line - in file Bio/Graphics/Glyph/flag.pm
  • WARNING: multiple occurrence of link target 'D_s' at line - in file Bio/Align/DNAStatistics.pm
  • WARNING: multiple occurrence of link target 'D_JukesCantor' at line - in file Bio/Align/DNAStatistics.pm
  • WARNING: multiple occurrence of link target 'D_n' at line - in file Bio/Align/DNAStatistics.pm
  • WARNING: multiple occurrence of link target 'D_s_var' at line - in file Bio/Align/DNAStatistics.pm
  • WARNING: multiple occurrence of link target 'D_n_var' at line - in file Bio/Align/DNAStatistics.pm
  • WARNING: multiple occurrence of link target 'D_Kimura' at line - in file Bio/Align/DNAStatistics.pm
  • WARNING: multiple occurrence of link target 'D_Tamura' at line - in file Bio/Align/DNAStatistics.pm
  • WARNING: multiple occurrence of link target 'D_TajimaNei' at line - in file Bio/Align/DNAStatistics.pm
  • WARNING: multiple occurrence of link target 'run' at line - in file Bio/AnalysisI.pm
  • WARNING: multiple occurrence of link target 'wait_for' at line - in file Bio/AnalysisI.pm

pod2html warnings and errors

Here is the output of the following command:

find /cvs/bioperl-live/Bio -name \*pm -exec pod2html {} 1> /dev/null \;
  • Bio/Align/DNAStatistics.pm: cannot resolve L<aa_to_dna_aln> in paragraph 28.
  • Bio/AlignIO.pm: cannot resolve L<perltie> in paragraph 66.
  • Bio/Assembly/Contig.pm: cannot resolve L<Coordinate_Systems> in paragraph 114.
  • Bio/ClusterIO.pm: cannot resolve L<perltie> in paragraph 29.
  • Bio/DB/Biblio/pdf.pm: unknown pod directive in paragraph 29. ignoring.
  • Bio/DB/DBFetch.pm: cannot resolve L<http:E<sol>E<sol>www.ebi.ac.ukE<sol>cgi-binE<sol>dbfetch> in paragraph 8.
  • Bio/DB/Fasta.pm: cannot resolve L<bioperl> in paragraph 122.
  • Bio/DB/GFF.pm: cannot resolve L<bioperl> in paragraph 844.
  • Bio/DB/GFF/Adaptor/ace.pm: cannot resolve L<bioperl> in paragraph 8.
  • Bio/DB/GFF/Adaptor/berkeleydb.pm: cannot resolve L<bioperl> in paragraph 34.
  • Bio/DB/GFF/Adaptor/dbi.pm: cannot resolve L<bioperl> in paragraph 437.
  • Bio/DB/GFF/Adaptor/dbi/caching_handle.pm: cannot resolve L<DBI> in paragraph 53.
  • Bio/DB/GFF/Adaptor/dbi/caching_handle.pm: cannot resolve L<bioperl> in paragraph 53.
  • Bio/DB/GFF/Adaptor/dbi/mysql.pm: cannot resolve L<bioperl> in paragraph 161.
  • Bio/DB/GFF/Adaptor/dbi/mysqlace.pm: cannot resolve L<bioperl> in paragraph 8.
  • Bio/DB/GFF/Adaptor/dbi/mysqlcmap.pm: cannot resolve L<bioperl> in paragraph 182.
  • Bio/DB/GFF/Adaptor/dbi/mysqlopt.pm: cannot resolve L<bioperl> in paragraph 8.
  • Bio/DB/GFF/Adaptor/dbi/oracleace.pm: cannot resolve L<bioperl> in paragraph 8.
  • Bio/DB/GFF/Adaptor/dbi/pg_fts.pm: cannot resolve L<mailto:bioperl-l@lists.open-bio.org> in paragraph 45.
  • Bio/DB/GFF/Adaptor/dbi/pg_fts.pm: cannot resolve L<mailto:gmod-gbrowse@lists.sourceforge.net> in paragraph 45.
  • Bio/DB/GFF/Adaptor/memory.pm: cannot resolve L<bioperl> in paragraph 19.
  • Bio/DB/GFF/Featname.pm: cannot resolve L<bioperl> in paragraph 44.
  • Bio/DB/GFF/Feature.pm: cannot resolve L<bioperl> in paragraph 295.
  • Bio/DB/GFF/Homol.pm: cannot resolve L<bioperl> in paragraph 28.
  • Bio/DB/GFF/RelSegment.pm: cannot resolve L<bioperl> in paragraph 248.
  • Bio/DB/GFF/Segment.pm: cannot resolve L<bioperl> in paragraph 229.
  • Bio/DB/GFF/Typename.pm: cannot resolve L<bioperl> in paragraph 48.
  • Bio/DB/RefSeq.pm: cannot resolve L<http:E<sol>E<sol>www.ebi.ac.ukE<sol>cgi-binE<sol>dbfetch> in paragraph 14.
  • Bio/DB/SeqFeature.pm: cannot resolve L<bioperl> in paragraph 104.
  • Bio/DB/SeqFeature/NormalizedFeature.pm: cannot resolve L<bioperl> in paragraph 147.
  • Bio/DB/SeqFeature/NormalizedFeatureI.pm: cannot resolve L<bioperl> in paragraph 13.
  • Bio/DB/SeqFeature/NormalizedTableFeatureI.pm: cannot resolve L<bioperl> in paragraph 13.
  • Bio/DB/SeqFeature/Segment.pm: cannot resolve L<bioperl> in paragraph 117.
  • Bio/DB/SeqFeature/Store.pm: cannot resolve L<bioperl> in paragraph 536.
  • Bio/DB/SeqFeature/Store/GFF3Loader.pm: cannot resolve L<bioperl> in paragraph 230.
  • Bio/DB/SeqFeature/Store/berkeleydb.pm: cannot resolve L<bioperl> in paragraph 214.
  • Bio/DB/SeqFeature/Store/memory.pm: cannot resolve L<bioperl> in paragraph 114.
  • Bio/FeatureIO.pm: cannot resolve L<perltie> in paragraph 55.
  • Bio/FeatureIO/ptt.pm: unexpected =item directive in paragraph 10. ignoring.
  • Bio/FeatureIO/ptt.pm: unknown pod directive '=back' in paragraph 20. ignoring.
  • Bio/FeatureIO/ptt.pm: unknown pod directive '=over' in paragraph 9. ignoring.
  • Bio/FeatureIO/ptt.pm: unterminated list at =head in paragraph 21. ignoring.
  • Bio/Graphics.pm: cannot resolve L<GD> in paragraph 21.
  • Bio/Graphics/Feature.pm: cannot resolve L<GD> in paragraph 90.
  • Bio/Graphics/FeatureBase.pm: cannot resolve L<GD> in paragraph 87.
  • Bio/Graphics/Glyph.pm: cannot resolve L<OPTIONS> in paragraph 214.
  • Bio/Graphics/Glyph/alignment.pm: cannot resolve L<GD> in paragraph 36.
  • Bio/Graphics/Glyph/anchored_arrow.pm: cannot resolve L<GD> in paragraph 44.
  • Bio/Graphics/Glyph/arrow.pm: cannot resolve L<GD> in paragraph 111.
  • Bio/Graphics/Glyph/box.pm: cannot resolve L<GD> in paragraph 32.
  • Bio/Graphics/Glyph/broken_line.pm: cannot resolve L<GD> in paragraph 38.
  • Bio/Graphics/Glyph/cds.pm: cannot resolve L<GD> in paragraph 96.
  • Bio/Graphics/Glyph/christmas_arrow.pm: cannot resolve L<GD> in paragraph 31.
  • Bio/Graphics/Glyph/crossbox.pm: cannot resolve L<GD> in paragraph 32.
  • Bio/Graphics/Glyph/dashed_line.pm: cannot resolve L<GD> in paragraph 27.
  • Bio/Graphics/Glyph/diamond.pm: cannot resolve L<GD> in paragraph 37.
  • Bio/Graphics/Glyph/dna.pm: cannot resolve L<GD> in paragraph 74.
  • Bio/Graphics/Glyph/dot.pm: cannot resolve L<GD> in paragraph 39.
  • Bio/Graphics/Glyph/dumbbell.pm: cannot resolve L<GD> in paragraph 69.
  • Bio/Graphics/Glyph/ellipse.pm: cannot resolve L<GD> in paragraph 31.
  • Bio/Graphics/Glyph/ex.pm: cannot resolve L<GD> in paragraph 35.
  • Bio/Graphics/Glyph/extending_arrow.pm: cannot resolve L<GD> in paragraph 15.
  • Bio/Graphics/Glyph/flag.pm: cannot resolve L<GD> in paragraph 29.
  • Bio/Graphics/Glyph/gene.pm: cannot resolve L<GD> in paragraph 56.
  • Bio/Graphics/Glyph/generic.pm: cannot resolve L<GD> in paragraph 129.
  • Bio/Graphics/Glyph/graded_segments.pm: cannot resolve L<GD> in paragraph 56.
  • Bio/Graphics/Glyph/heterogeneous_segments.pm: cannot resolve L<GD> in paragraph 43.
  • Bio/Graphics/Glyph/image.pm: cannot resolve L<GD> in paragraph 83.
  • Bio/Graphics/Glyph/lightning.pm: cannot resolve L<GD> in paragraph 39.
  • Bio/Graphics/Glyph/line.pm: cannot resolve L<GD> in paragraph 35.
  • Bio/Graphics/Glyph/merged_alignment.pm: cannot resolve L<GD> in paragraph 77.
  • Bio/Graphics/Glyph/oval.pm: cannot resolve L<GD> in paragraph 29.
  • Bio/Graphics/Glyph/pentagram.pm: cannot resolve L<GD> in paragraph 36.
  • Bio/Graphics/Glyph/pinsertion.pm: cannot resolve L<GD> in paragraph 26.
  • Bio/Graphics/Glyph/primers.pm: cannot resolve L<GD> in paragraph 30.
  • Bio/Graphics/Glyph/processed_transcript.pm: cannot resolve L<GD> in paragraph 72.
  • Bio/Graphics/Glyph/protein.pm: cannot resolve L<GD> in paragraph 66.
  • Bio/Graphics/Glyph/ragged_ends.pm: cannot resolve L<GD> in paragraph 41.
  • Bio/Graphics/Glyph/redgreen_box.pm: cannot resolve L<GD> in paragraph 40.
  • Bio/Graphics/Glyph/redgreen_segment.pm: cannot resolve L<GD> in paragraph 33.
  • Bio/Graphics/Glyph/repeating_shape.pm: cannot resolve L<GD> in paragraph 25.
  • Bio/Graphics/Glyph/rndrect.pm: cannot resolve L<GD> in paragraph 21.
  • Bio/Graphics/Glyph/ruler_arrow.pm: cannot resolve L<GD> in paragraph 67.
  • Bio/Graphics/Glyph/saw_teeth.pm: cannot resolve L<GD> in paragraph 21.
  • Bio/Graphics/Glyph/segmented_keyglyph.pm: cannot resolve L<GD> in paragraph 16.
  • Bio/Graphics/Glyph/segments.pm: cannot resolve L<GD> in paragraph 117.
  • Bio/Graphics/Glyph/so_transcript.pm: cannot resolve L<GD> in paragraph 16.
  • Bio/Graphics/Glyph/span.pm: cannot resolve L<GD> in paragraph 21.
  • Bio/Graphics/Glyph/splice_site.pm: cannot resolve L<GD> in paragraph 21.
  • Bio/Graphics/Glyph/text_in_box.pm: cannot resolve L<GD> in paragraph 31.
  • Bio/Graphics/Glyph/three_letters.pm: cannot resolve L<GD> in paragraph 32.
  • Bio/Graphics/Glyph/tic_tac_toe.pm: cannot resolve L<GD> in paragraph 25.
  • Bio/Graphics/Glyph/toomany.pm: cannot resolve L<GD> in paragraph 21.
  • Bio/Graphics/Glyph/track.pm: cannot resolve L<GD> in paragraph 20.
  • Bio/Graphics/Glyph/transcript.pm: cannot resolve L<GD> in paragraph 45.
  • Bio/Graphics/Glyph/transcript2.pm: cannot resolve L<GD> in paragraph 50.
  • Bio/Graphics/Glyph/translation.pm: cannot resolve L<GD> in paragraph 103.
  • Bio/Graphics/Glyph/triangle.pm: cannot resolve L<GD> in paragraph 28.
  • Bio/Graphics/Glyph/two_bolts.pm: cannot resolve L<GD> in paragraph 33.
  • Bio/Graphics/Glyph/wave.pm: cannot resolve L<GD> in paragraph 27.
  • Bio/Graphics/Glyph/weighted_arrow.pm: cannot resolve L<GD> in paragraph 32.
  • Bio/Graphics/Panel.pm: cannot resolve L<GD> in paragraph 470.
  • Bio/Restriction/Enzyme.pm: cannot resolve L<non_ambiguous_length> in paragraph 188.
  • Bio/Search/Hit/GenericHit.pm: cannot resolve L<expect()|expect> in paragraph 130.
  • Bio/Search/Hit/GenericHit.pm: cannot resolve L<signif()|signif> in paragraph 130.
  • Bio/Search/Hit/HMMERHit.pm: cannot resolve L<hsp()|hsp> in paragraph 75.
  • Bio/Search/Hit/HMMERHit.pm: cannot resolve L<score()|score> in paragraph 67.
  • Bio/Search/Hit/HitI.pm: cannot resolve L<expect()|expect> in paragraph 123.
  • Bio/Search/Hit/HitI.pm: cannot resolve L<frac_aligned_hit()|frac_aligned_hit> in paragraph 133.
  • Bio/Search/Hit/HitI.pm: cannot resolve L<frac_aligned_query()|frac_aligned_query> in paragraph 133.
  • Bio/Search/Hit/HitI.pm: cannot resolve L<signif()|signif> in paragraph 123.
  • Bio/Search/Hit/HmmpfamHit.pm: cannot resolve L<num_hsps> in paragraph 74.
  • Bio/Search/Hit/PullHitI.pm: cannot resolve L<expect()|expect> in paragraph 139.
  • Bio/Search/Hit/PullHitI.pm: cannot resolve L<signif()|signif> in paragraph 139.
  • Bio/Search/Result/HMMERResult.pm: cannot resolve L<next_models> in paragraph 9.
  • Bio/Search/SearchUtils.pm: cannot resolve L<_adjust_contigs> in paragraph 16.
  • Bio/SearchIO/Writer/HTMLResultWriter.pm: cannot resolve L<remote_database> in paragraph 75.
  • Bio/SearchIO/Writer/HTMLResultWriter.pm: cannot resolve L<remote_database> in paragraph 84.
  • Bio/Seq/MetaI.pm: cannot resolve L<names_submeta> in paragraph 14.
  • Bio/Seq/Quality.pm: cannot resolve L<force_flush> in paragraph 26.
  • Bio/SeqFeature/SiRNA/Oligo.pm: cannot resolve L< perl> in paragraph 14.
  • Bio/SeqFeature/SiRNA/Pair.pm: cannot resolve L< perl> in paragraph 14.
  • Bio/SeqIO.pm: cannot resolve L<perltie> in paragraph 75.
  • Bio/SeqIO/embl.pm: cannot resolve L<annotation()|annotation> in paragraph 23.
  • Bio/SeqIO/genbank.pm: cannot resolve L<annotation()|annotation> in paragraph 22.
  • Bio/SeqIO/swiss.pm: cannot resolve L<annotation()|annotation> in paragraph 23.
  • Bio/SeqIO/tinyseq.pm: cannot resolve L< perl> in paragraph 22.
  • Bio/SeqIO/tinyseq/tinyseqHandler.pm: cannot resolve L< perl> in paragraph 22.
  • Bio/Structure/IO.pm: cannot resolve L<perltie> in paragraph 56.
  • Bio/Tools/Alignment/Consed.pm: cannot resolve L<get_contigs()|get_contigs> in paragraph 102.
  • Bio/Tools/Alignment/Consed.pm: cannot resolve L<get_contigs()|get_contigs> in paragraph 107.
  • Bio/Tools/Alignment/Consed.pm: cannot resolve L<get_contigs()|get_contigs> in paragraph 92.
  • Bio/Tools/Alignment/Consed.pm: cannot resolve L<get_contigs()|get_contigs> in paragraph 97.
  • Bio/Tools/Alignment/Consed.pm: cannot resolve L<get_quality_array()|get_quality_array> in paragraph 81.
  • Bio/Tools/Alignment/Consed.pm: cannot resolve L<get_quality_scalar()|get_quality_scalar> in paragraph 75.
  • Bio/Tools/Alignment/Consed.pm: cannot resolve L<sum_lets()|sum_lets> in paragraph 214.
  • Bio/Tools/Blast/HSP.pm: cannot resolve L<Links:> in paragraph 22.
  • Bio/Tools/CodonTable.pm: cannot resolve L<translate> in paragraph 23.
  • Bio/Tools/RestrictionEnzyme.pm: cannot resolve L<_make_custom()|_make_custom> in paragraph 85.
  • Bio/Tools/RestrictionEnzyme.pm: cannot resolve L<_make_custom> in paragraph 69.
  • Bio/Tools/RestrictionEnzyme.pm: cannot resolve L<_make_standard()|_make_standard> in paragraph 85.
  • Bio/Tools/RestrictionEnzyme.pm: cannot resolve L<_make_standard> in paragraph 69.
  • Bio/Tools/Run/RemoteBlast.pm: cannot resolve L<FEEDBACK> in paragraph 32.
  • Bio/Tools/SiRNA.pm: cannot resolve L< perl> in paragraph 27.
  • Bio/Tools/SiRNA/Ruleset/saigo.pm: cannot resolve L< perl> in paragraph 29.
  • Bio/Tools/SiRNA/Ruleset/tuschl.pm: cannot resolve L< perl> in paragraph 19.
  • Bio/Variation/IO.pm: cannot resolve L<perltie> in paragraph 66.
  • Bio/Variation/IO/xml.pm: cannot resolve L<http:E<sol>E<sol>www.ebi.ac.ukE<sol>mutationsE<sol>DTDE<sol>seqDiff.dtd> in paragraph 9.
  • no title for Bio/DB/EUtilities/ElinkData.pm.
  • no title for Bio/DB/GFF/Adaptor/memory/feature_serializer.pm.
  • no title for Bio/DB/SeqFeature/Store/DBI/Iterator.pm.
  • no title for Bio/Expression/FeatureGroup/FeatureGroupMas50.pm.
  • no title for Bio/Expression/FeatureSet/FeatureSetMas50.pm.
  • no title for Bio/Index/Hmmer.pm.
  • no title for Bio/Matrix/PSM/PsmHeaderI.pm.
  • no title for Bio/OntologyIO/Handlers/BaseSAXHandler.pm.
  • no title for Bio/PopGen/HtSNP.pm.
  • no title for Bio/Search/HSP/HmmpfamHSP.pm.
Personal tools
Namespaces
Variants
Actions
Main Links
documentation
community
development
Toolbox