From BioPerl
Jump to: navigation, search


Bug submission

BioPerl has switched (as of mid-April, 2014) to GitHub Issues. We still have access to the Redmine-based tracking system, but this will be effectively read-only. We no longer support access to the original Bugzilla instance.

Don't make me bug you!

Please submit bugs or enhancement requests to BioPerl GitHub Issues. The older BioPerl Redmine tracking system remains but is will no longer be used, and the oldest Bugzilla-based system is not supported and addition of new bugs has been disabled.

We really do want you to submit bugs, even though it means more things for us to do! It means there is something we didn't think of or test in the particular module and we won't know about this unless you tell us. The Redmine system requires you register to avoid spam and to allow us to contact you again when the bug is fixed or to clarify the problem and solutions.

It is important that you record the version of BioPerl you are running (if you don't know, see the FAQ the question is addressed there). You can also include the version of Perl you are using and the Operating System you are running.

Simon Tatham has a great resource on how to effectively report bugs.

Submitting Bugs

When submitting new bugs on BioPerl on GitHub, enter a brief description and other general information. You can use Markdown to add links, syntax highlighting, and so on; see the GitHub Markdown docs for more.

You can paste example code in the description, but we suggest submitting as a GitHub Gist. If you have example fixes, we highly suggest using the tools GitHub has in place, namely the ability to fork the code and create a pull request with the relevant fix. This will show up as an issue automatically, so there isn't a need to file one separately.

Note that attachments on GitHub issues only work for images. If the example is a text file then use a GitHub Gist; alternatively, if the file is something available publicly then please provide a link to the file.

Submitting Patches

We gladly welcome patches. Patches for bioperl code should be created as described in the SubmitPatch HOWTO. Try to ensure the patch is derived against the latest code checked out from Git, particularly if the patch is large.

Briefly, you can generate the patch using the following command:

diff -u old new

For best results, follow this example:

git pull
git diff GrokFrobnicator.pm > my-patch.dif

We also accept patches as an issue on GitHub; submit the patch as a GitHub Gist. Even better, submit a pull request on GitHub. It's also worth discussing these on the mailing list.

Submitting New Modules and Code Snippets

We also accept new code, either as full-fledged modules or as snippets of code (snippets work better as a patch). New code must include documentation, example code (typically listed in a SYNOPSIS section), and tests with decent test coverage following our testing standards in our Writing_BioPerl_Tests HOWTO). Because we are moving to a more modular scheme for future Bioperl installations we highly suggest individual submission of modules to CPAN, primarily to help lower the barrier to submitting bug fixes.


Good bug reports are ones which provide a small amount of code and the necessary test files to reproduce your bug. By doing this work up front you insure the developer spends most of his or her time actually working on the problem. Pasting your entire 600 line program into the comment buffer is probably not going to get an enthusiastic response. In addition, isolating the problem down to a small amount of your code will help ensure that the bug is not on your end before we dive in and start working on it.

Open Issues (GitHub)

This list details the open Bugs on GitHub for BioPerl.

Github Issues to RSS

Issue 123: Problem with newer versions of AlignIO to write alignment data
Dear bioperl folks, I have been using bioperl for a while to develop POTION, an end-to-end pipeline to detect positive selection in coding sequence data. POTION uses Bioperl to do a lot of things regarding handling sequence/alignment data. Im particular, POTION users AlignIO to change the format of alignment data from phylip to fasta and vice-versa. When testing POTION using a somewhat older version of BioPerl (1.006901) it works just fine. However, when I updated Bioperl to a newer version (1.006923) POTION stopped working and got stuck when using AlignIO to write alignment objects. I wrote a very simple code (pasted below) that works just fine when using BioPerl (1.006901) (it finishes after less than a second and correctly writes the output file in fasta format), but it gets stuck when using newer versions of Bioperl (I tested 1.006923 and 1.006924). Please let me know if I can help you to fix this bug. use strict; use warnings; use Bio::AlignIO; my $infile = $ARGV[0]; chomp $infile; my $in = Bio::AlignIO->new(-file => "$infile" , -format => 'phylip'); my $out = Bio::AlignIO->new(-file => ">$infile.fa", -format => 'fasta'); while (my $aln = $in->next_aln ) { $out->write_aln($aln); }

Issue 122: Bugfix in the Stockholm AlignIO writer
With the previous code, the name of a sequence can be attached to "AC" if it is 22 (or more) characters long fix: make sure there is at least 1 space between the sequence name and the "AC" tag
Issue 120: Build.pm absent
perl Build.PL Can't locate Bio/Root/Build.pm in @INC (@INC contains: ./bin/bioperl-live etc)
Issue 119: parsing hmmer results: rare situation causes parsing failure
Hi there, I've just started playing with parsing some hmmer output files (hmmsearch), and have run across a rare situation that causes the parser to choke. I think the issue arises where the subject sequence has a stop codon that gets wrapped to the first position in an alignment row. Stop codons in the middle of a row seem to do just fine. Hopefully it'll be easy to fix. I updated my Bioperl a few minutes ago using git. I've attached a screenshot of the alignment, and will see if I can attach the full hmmer output file here. I'm parsing with a very simple script for now that looks like this: #!/usr/bin/perl use Bio::SearchIO; my $hmmerIN = Bio::SearchIO->new(-file => "< ORF1align4.edit.fa.hmm.hmmsearchVSproblemSeq", -format => "hmmer"); while( my $result = $hmmerIN->next_result ) { print $result->query_name(), " for HMM ", $result->hmm_name(), "\n"; } and it crashes on this particular alignment with this: error Quantifier follows nothing in regex; marked by <-- HERE in m/* <-- HERE E-IWDYVKRPNLRLIGVPESDVENGTKLENTLQDIIQENFPNLARQANVQIQEIQRTPQRYSSRRATPRHIIVR/ at /home/jayoung/malik_lab_shared/perl/bioperl-live/Bio/SearchIO/hmmer3.pm line 721, line 39.  ![temp](https://cloud.githubusercontent.com/assets/2569397/9373323/19064e3a-469e-11e5-8917-05dbdf8b436d.png) all the best, Janet Young ------------------------------------------------------------------- Dr. Janet Young Malik lab http://research.fhcrc.org/malik/en.html Fred Hutchinson Cancer Research Center 1100 Fairview Avenue N., A2-025, P.O. Box 19024, Seattle, WA 98109-1024, USA. tel: (206) 667 4512 email: jayoung ...at... fhcrc.org -------------------------------------------------------------------
Issue 116: Migrate HOWTOs and other docs from BioPerl wiki to ReadTheDocs
We should have these in version control; readthedocs.org can be used to display the docs (which I believe need to be markdown).
Issue 115: Migrate issues from Redmine
Migrate tickets from OBF Redmine (now in read-only status) to Github Issues. We only care about open tickets, no others are needed.
Issue 110: Bio::AlignIO::stockholm creates improperly formatted mark-up lines
Within the Bio::AlignIO::stockholm module, when creating the mark-up lines within `sub write_aln`, in cases where the sequence accession exceeds the arbitrary size limit of 22 characters (the [Stockholm specification] (http://sonnhammer.sbc.su.se/Stockholm.html) states "No size limits on any field"), the 'feature' text becomes joined to the 'seqname' text. This causes hmmbuild to error out. Line 600: ```perl my $text = sprintf("%-4s%-22s%-3s%s\n",$seq_ann, $aln->displayname($seq->get_nse), $tag, $acc); ``` If: ``` $seq_ann = "#=GS " $tag = "AC" $acc = "accession" $aln->displayname($seq->get_nse) = "1234567890123456789012345" ``` then: ```perl $text = "#=GS 1234567890k123456789012345AC accession" ``` where the proper output should be: ```perl $text = "#=GS 1234567890k123456789012345 AC accession" ``` The simple fix is to enforce spaces within the sprintf command: Line 600: ```perl my $text = sprintf("%-4s % -22s %-3s %s\n",$seq_ann, $aln->displayname($seq->get_nse), $tag, $acc); ``` Which would yield: ```perl $text = "#=GS 1234567890k123456789012345 AC accession" ``` This will parse even with the extra whitespace. Cheers, Bill
Issue 109: Stop masking $seq variable in entrezgene.pm next_seq
$seq is decalared at line 151 so that it doesn't have to be passed as an argument to subs. However, at line 199, in the next_seq sub, $seq is declared again such that the original $seq variable is never defined. As far as I can tell this works in practice because for the most part $seq is only accessed in the next_seq sub. However, if you run into a variable without a tagname and try to throw the warning at line 571 your script dies with an error when trying to call method 'id' on an undefined variable. This suggested fix is simply to stop re-declaring $seq at line 199.
Issue 108: parsing segmented Genbank records
Hi there, I'm parsing a whole bunch of Genbank records to get CDS sequences, and found one weird record that messes up my pipeline. The Genbank accession is S81162. It turns out it's a segmented record (the CDS joins four regions from four different Genbank entries). Reading the wiki, it seems like Bioperl should be able to recognize this, but I think maybe the code no longer parses that part of the Genbank record? Details are below. I'd like to just check for segmented records and skip them so they don't throw my code and I can still parse all the other records in the same file (I don't need every single CDS - I think segmented records will be rare). From the help given here: http://www.bioperl.org/wiki/HOWTO:Feature-Annotation#Getting_the_Annotations it looks like I should be able to use code like this: my $anno_collection = $seq_obj->annotation; and $anno_collection->get_all_annotation_keys; to recognize that this record has a SEGMENT annotation. However, it actually looks like the SEGMENT annotation is ignored when the Genbank record is parsed. Shouldn't it have come through into $anno_collection? I updated my bioperl from github this morning. I guess I can parse each record outside of bioperl before I go into Bioperl, but it'd be great if I can just use Bioperl to get at those SEGMENT annotations. Does that seem easy to implement (or re-implement - from the HOWTO page it looks like it was something that used to be possible)? Some code that hopefully shows what I mean is below. thanks very much, Janet Young ------------------------------------------------------------------- Dr. Janet Young Malik lab http://research.fhcrc.org/malik/en.html Fred Hutchinson Cancer Research Center 1100 Fairview Avenue N., A2-025, P.O. Box 19024, Seattle, WA 98109-1024, USA. tel: (206) 667 4512 email: jayoung ...at... fhcrc.org ------------------------------------------------------------------- #!/usr/bin/perl use warnings; use strict; use Bio::SeqIO; use Bio::DB::EUtilities; ##### get the troublesome sequence from Genbank: my $file = "S81162.gb"; if (!-e $file) { my $factory = Bio::DB::EUtilities->new(-eutil => 'efetch', -db => 'protein', -rettype => 'gb', -email => 'jayoung@fhcrc.org', -id => "S81162"); $factory->get_Response(-file => $file); } #### parse it: my $seqIN = Bio::SeqIO->new(-file => "$file", '-format' => 'Genbank'); while (my $seq = $seqIN ->next_seq) { ##### look at the annotations - SEGMENT is not captured my $anno_collection = $seq->annotation; for my $key ( $anno_collection->get_all_annotation_keys ) { my @annotations = $anno_collection->get_Annotations($key); for my $value ( @annotations ) { print "tagname : ", $value->tagname, "\n"; print " annotation value: ", $value->display_text, "\n\n"; } } }
Issue 107: Use of uninitialized value $Bio::DB::NCBIHelper::HOSTBASE in concatenation (.) or string at /usr/share/perl5/Bio/DB/Query/GenBank.pm line 103.
We have update our bioperl version to 1.6923. Now, when we ran the local version of Guidance, an dna sequence multiple alignment software (http://guidance.tau.ac.il/), we get the following error: "Use of uninitialized value $Bio::DB::NCBIHelper::HOSTBASE in concatenation (.) or string at /usr/share/perl5/Bio/DB/Query/GenBank.pm line 103." "Use of uninitialized value $Bio::DB::NCBIHelper::HOSTBASE in concatenation (.) or string at /usr/share/perl5/Bio/DB/Query/GenBank.pm line 104." Could provide any help? Best regards, Joaquim
Issue 91: Support FTS attribute table and WITHOUT ROWID optimization for Bio::DB::SeqFeature::Store::DBI::SQLite
Several of our GBrowse instances had issues with full-text (attribute) searches timing out. Profiling revealed that the execution time of Bio::DB::SeqFeature::Store::search_attributes on our Bio::DB::SeqFeature::Store::DBI::SQLite databases contributed significantly to this problem. The proposed changes, which add support for indexing the attribute table using SQLite's FTS (full-text search) extension, resolved the issue (when used in conjunction with Scott Cain's recent commit that removed the use of CGI::Pretty in GBrowse: https://github.com/GMOD/GBrowse/commit/298cab3ece8f68b7baf2e9d085fab9055772fa3c) To demonstrate the performance impact of an FTS attribute table on search_attributes(), consider the following script: ``` # search_attributes.pl use strict; use warnings; use Bio::DB::SeqFeature::Store; my $db = Bio::DB::SeqFeature::Store->new(-adaptor => 'DBI::SQLite', -dsn => $ARGV[0]); my @features = $db->search_attributes($ARGV[1], ['arabidopsis_defline', 'arabidopsis_symbol', 'pfam', 'go', 'panther', 'kegg_enzyme', 'kegg_orthology', 'cog_cluster']); print 'Features: ' . scalar(@features) . "\n"; ``` Given a Bio::DB::SeqFeature::Store::DBI::SQLite database with gene models & annotation created from a GFF3 file with 692,300 features, the following were typical observed execution times in our environment: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $ time perl search_attributes.pl track-orig.db iron Features: 1283 real 0m1.61s user 0m0.71s sys 0m0.89s $ time perl search_attributes.pl track-fts.db iron Features: 1280 real 0m0.27s user 0m0.20s sys 0m0.06s ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The difference in number of matches is due to the difference in behavior between the two methods: FTS (with the MATCH operator) searches for tokens, while LIKE '%iron%' finds substrings. The extra three results returned with "LIKE '%iron%'" contained a spurious match containing "iron" as a substring: acclimation of photosynthesis to environment and two occurrences of "diiron", which may be relevant to a user: dicarboxylate diiron protein, putative (Crd1) OTOH, if the user searches for "Fe" instead, they get "real" hits with an FTS attribute table, whereas the non-FTS search returns thousands of spurious hits where "fe" is a substring. Because of this difference in behavior (and possible portability issues to systems with old DBD::SQLite instances---see below), I thought that FTS should be op-in rather than the default. Also, note that FTS support depends on the version of DBD::SQLite. The current DBD::SQLite by default supports two versions: FTS3 since sometime before 1.30_04 (2010-08-25), and FTS4 since 1.36_01 (2012-01-19). At least one design decision I made while implementing this change should be considered/debated before accepting this pull request: the -fts option is just a boolean flag. My initial implementation supported the creation of an FTS attribute table using a user-specified FTS version, but at the last minute I decided to KISS and just use the most recent version supported by the installed DBD::SQLite. This isn't a problem if someone decides to implement an FTS attribute table for MySQL, which supports only one such index type (FULLTEXT: http://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html). However, it's conceivable that one might want to implement FTS for PostgreSQL and have control over whether GIN or GiST indexing is used (http://www.postgresql.org/docs/9.3/static/textsearch-indexes.html), or, with SQLite, specify FTS3 at database (instead of the most recent FTS4) at creation time to allow its use on a host with an older DBD::SQLite.
Issue 87: Issues with bioperl versioning
Blocker on new 1.6/1.7 releases, see: https://github.com/andk/pause/issues/75
Issue 83: GenBank parsing CONTIG issues
See: http://mailman.open-bio.org/pipermail/bioperl-l/2014-September/088945.html Basically, this works with the August patch for GenBank parsing (so the bug isn't there) but some change since 1.6.922 has caused parsing to slow dramatically. We'll need to bisect this.
Issue 79: Added script to extract DNA sequences (as well as 5' or 3' regions if specified) from a FASTA file using a BLAST output file
Added a personal script to extract a DNA sequence from a FASTA file using a BLAST output file. Expects at least two arguments, the BLAST file and the FASTA file. There are a number of optional arguments that are explained in the script. This script is especially useful when trying to extract sequences with variance (hence the BLAST search beforehand) from FASTA files. For example, say that you are trying to extract a given gene and 2000 base pairs 5' to it from 20 different genomes. All you have is one gene sequence, however. By doing a BLAST search between each of the genomes and the gene and then using this script, you can extract the sequences that you are interested in. The script also has options to extract a specified 3' or 5' sequence from the FASTA file, as well as an e-value cut off. The final output is the extracted sequence in FASTA format. Is this useful/generic enough to be included in the scripts directory? The script is well tested and takes command-line arguments.
Issue 61: new modules Bio::Tools::Alignment::Overview and Bio::DB::NextProt
Some time ago I made the mistake of uploading to CPAN a module called Bio::Tools::Alignment::Overview, the module wasn't associated to bioperl but for some reason I decided to use the namespace anyway (yeah, I know...) Now I'm organizing some projects and I decided to include the module to bioperl, so if you accept this pull request I will remove from PAUSE/CPAN the current module, so that you can upload it under bioperl. Sorry for the noobish mistake =) Cheers.
Issue 46: Simplealign
Hi, Chris, This is my implementation of Bio::SimpleAlign. I have a detailed report describing the improvement to the code, and explaining the failed tests using t/Align/SimpleAlign.t. If you need any help, please just let me know. Cheers, Jun

Personal tools
Main Links