bcgsc / HLAminer

⛏ HLA predictions from NGS shotgun data
Other
51 stars 15 forks source link

File ncbiBlastConfigO.txt doesn't exist -- fatal. error while Aligning TASR contigs to HLA references #9

Closed sa256 closed 4 years ago

sa256 commented 4 years ago

Hello,

I am installing HLAminer and as part of it I was trying to run HLAminer on test dataset. Everything works fine apart from aligning TASR contigs to HLA reference with following command:

perl ../bin/parseXMLblast.pl -cncbiBlastConfigO.txt -d ../database/HLA_ABC_CDS.fasta -i TASRhla200.contigs -o 0 -a 1 > tig_vs_hla-ncbi.coord

When I run this, it ends in following error:

File ncbiBlastConfigO.txt doesn't exist

There is no such file in either bin or test_demo directory. I tried changing the names to ncbiBlastConfig2-2-29.txt and ncbiBlastConfig2-2-28.txt files also, but still it doesn't work. It gives following error:

Can't find executable /Users/rwarren/biosw/ncbi-blast-2.2.29+/bin/blastn as indicated in ncbiBlastConfig2-2-29.txt --fatal.

Could you please suggest how to go about it?

Regards Anchal

warrenlr commented 4 years ago

please edit the configuration file ncbiBlastConfig2-2-29.txt to change the location of blast, to match the location on YOUR system (eg. program:XXYOUR-BLAST-LOCATIONXX

sa256 commented 4 years ago

Thanks for such a quick response! I followed the instructions and I could resolve it by using ncbiBlastConfig2-2-22.txt file with blastall instead of blastn (as there was no blastn in my bin directory). Hope this is fine.

But now I am facing another problem with same step (parseXMLblast.pl script). Now when I run it it gives me following error:

Bio::SearchIO: blastxml cannot be found

Exception ------------- EXCEPTION: Bio::Root::Exception ------------- MSG: Failed to load module Bio::SearchIO::blastxml. Can't locate Bio/SearchIO/blastxml.pm in @INC (you may need to install the Bio::SearchIO::blastxml module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.26.1 /usr/local/share/perl/5.26.1 /usr/lib/x86_64-linux-gnu/perl5/5.26 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.26 /usr/share/perl/5.26 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/perl5/Bio/Root/Root.pm line 518.

STACK: Error::throw STACK: Bio::Root::Root::throw /usr/share/perl5/Bio/Root/Root.pm:447 STACK: Bio::Root::Root::_load_module /usr/share/perl5/Bio/Root/Root.pm:520 STACK: Bio::SearchIO::_load_format_module /usr/share/perl5/Bio/SearchIO.pm:619 STACK: Bio::SearchIO::new /usr/share/perl5/Bio/SearchIO.pm:216 STACK: ../bin/parseXMLblast.pl:73

For more information about the SearchIO system please see the SearchIO docs. This includes ways of checking for formats at compile time, not run time Something went wrong running ../bin/parseXMLblast.pl: Can't call method "next_result" on an undefined value at ../bin/parseXMLblast.pl line 76. -- fatal.

As mentioned in the error, I installed Bio::SearchIO::blastxml using cpanm, but it still throws me the same error. Could you please point out what am I doing wrong?

Thanks and regards Anchal

warrenlr commented 4 years ago

blastall is wublast, which isn't compatible with the parseXMLblast.pl parser.

Please download and install NCBI blast on your system.

ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/

note: hlaminer has NOT been tested with versions newer than 2-2-29

sa256 commented 4 years ago

Hello Warren,

I installed blast as follows:

sudo apt update sudo apt install ncbi-blast+ -y

and it got installed all fine. I can also access blastn. I also modified the path for blastn in ncbiBlastConfig2-2-29.txt file to /usr/bin/blastn. But when I am running the parseXMLblast.pl it is still giving me the same error.

"Bio::SearchIO: blastxml cannot be found Exception ------------- EXCEPTION: Bio::Root::Exception ------------- MSG: Failed to load module Bio::SearchIO::blastxml. Can't locate Bio/SearchIO/blastxml.pm in @INC (you may need to install the Bio::SearchIO::blastxml module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.26.1 /usr/local/share/perl/5.26.1 /usr/lib/x86_64-linux-gnu/perl5/5.26 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.26 /usr/share/perl/5.26 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/perl5/Bio/Root/Root.pm line 518.

STACK: Error::throw STACK: Bio::Root::Root::throw /usr/share/perl5/Bio/Root/Root.pm:447 STACK: Bio::Root::Root::_load_module /usr/share/perl5/Bio/Root/Root.pm:520 STACK: Bio::SearchIO::_load_format_module /usr/share/perl5/Bio/SearchIO.pm:619 STACK: Bio::SearchIO::new /usr/share/perl5/Bio/SearchIO.pm:216 STACK: ../bin/parseXMLblast.pl:73

For more information about the SearchIO system please see the SearchIO docs. This includes ways of checking for formats at compile time, not run time Something went wrong running ../bin/parseXMLblast.pl: Can't call method "next_result" on an undefined value at ../bin/parseXMLblast.pl line 76. -- fatal. USAGE blastn [-h] [-help] [-import_search_strategy filename] [-export_search_strategy filename] [-task task_name] [-db database_name] [-dbsize num_letters] [-gilist filename] [-seqidlist filename] [-negative_gilist filename] [-entrez_query entrez_query] [-db_soft_mask filtering_algorithm] [-db_hard_mask filtering_algorithm] [-subject subject_input_file] [-subject_loc range] [-query input_file] [-out output_file] [-evalue evalue] [-word_size int_value] [-gapopen open_penalty] [-gapextend extend_penalty] [-perc_identity float_value] [-qcov_hsp_perc float_value] [-max_hsps int_value] [-xdrop_ungap float_value] [-xdrop_gap float_value] [-xdrop_gap_final float_value] [-searchsp int_value] [-sum_stats bool_value] [-penalty penalty] [-reward reward] [-no_greedy] [-min_raw_gapped_score int_value] [-template_type type] [-template_length int_value] [-dust DUST_options] [-filtering_db filtering_database] [-window_masker_taxid window_masker_taxid] [-window_masker_db window_masker_db] [-soft_masking soft_masking] [-ungapped] [-culling_limit int_value] [-best_hit_overhang float_value] [-best_hit_score_edge float_value] [-window_size int_value] [-off_diagonal_range int_value] [-use_index boolean] [-index_name string] [-lcase_masking] [-query_loc range] [-strand strand] [-parse_deflines] [-outfmt format] [-show_gis] [-num_descriptions int_value] [-num_alignments int_value] [-line_length line_length] [-html] [-max_target_seqs num_sequences] [-num_threads int_value] [-remote] [-version]

DESCRIPTION Nucleotide-Nucleotide BLAST 2.6.0+

Use '-help' to print detailed descriptions of command line arguments

Error: Unknown argument: "d" Error: (CArgException::eInvalidArg) Unknown argument: "d" "

I am unable to figure this out.

warrenlr commented 4 years ago

you'll need to install bioperl. parseXMLblast.pl requires this library

"Bio::SearchIO"

sa256 commented 4 years ago

I already did that as follows:

git clone https://github.com/pcantalupo/Bundle-Bio-SearchIO.git cd Bundle-Bio-SearchIO/ apt-cache search module-Build-perl sudo apt-get install libmodule-build-perl sudo apt update sudo apt install bioperl -y perl Build.PL

and then I installed blastxml also as follows:

cpanm Bio::SearchIO::blastxml --> Working on Bio::SearchIO::blastxml Fetching http://www.cpan.org/authors/id/C/CJ/CJFIELDS/Bio-SearchIO-blastxml-1.70.tar.gz ... OK Configuring Bio-SearchIO-blastxml-1.70 ... OK Building and testing Bio-SearchIO-blastxml-1.70 ... OK Successfully installed Bio-SearchIO-blastxml-1.70 1 distribution installed

Although it shows 1 distribution installed but I am unable to access blastxml.

warrenlr commented 4 years ago

looks like it's unaware of its path. You could edit the parseXML script as follows:

use lib /path-to-bioperl/

sa256 commented 4 years ago

My apologies for bugging so much, but I do not code in perl at all. I tried to edit the script as you suggested but I think I did not do it properly. The path where my perl is installed is /mnt/softwares/Bundle-Bio-SearchIO/. I added this path before Bio::SearchIO as follows:

`use lib "/mnt/softwares/Bundle-Bio-SearchIO/Bio::SearchIO";

use Bio::SearchIO;

`

But now it is throwing error about line 74 which is :

my $in = Bio::SearchIO->new(-format => 'blastxml', -fh => $fh);

I tried adding the path here as well but I am not doing it right. Could you please guide me as to how to specify path here?

warrenlr commented 4 years ago

you need: use lib "/mnt/softwares/Bundle-Bio-SearchIO/"; use Bio::SearchIO;

sa256 commented 4 years ago

I managed to solve the issue with Bio::SearchIO, but now it is throwing me following error:

perl ../bin/parseXMLblast.pl -c ncbiBlastConfig2-2-29.txt -d ../database/HLA_ABC_CDS.fasta -i TASRhla200.contigs -o 0 -a 1 > tig_vs_hla-ncbi.coord

USAGE blastn [-h] [-help] [-import_search_strategy filename] [-export_search_strategy filename] [-task task_name] [-db database_name] [-dbsize num_letters] [-gilist filename] [-seqidlist filename] [-negative_gilist filename] [-entrez_query entrez_query] [-db_soft_mask filtering_algorithm] [-db_hard_mask filtering_algorithm] [-subject subject_input_file] [-subject_loc range] [-query input_file] [-out output_file] [-evalue evalue] [-word_size int_value] [-gapopen open_penalty] [-gapextend extend_penalty] [-perc_identity float_value] [-qcov_hsp_perc float_value] [-max_hsps int_value] [-xdrop_ungap float_value] [-xdrop_gap float_value] [-xdrop_gap_final float_value] [-searchsp int_value] [-sum_stats bool_value] [-penalty penalty] [-reward reward] [-no_greedy] [-min_raw_gapped_score int_value] [-template_type type] [-template_length int_value] [-dust DUST_options] [-filtering_db filtering_database] [-window_masker_taxid window_masker_taxid] [-window_masker_db window_masker_db] [-soft_masking soft_masking] [-ungapped] [-culling_limit int_value] [-best_hit_overhang float_value] [-best_hit_score_edge float_value] [-window_size int_value] [-off_diagonal_range int_value] [-use_index boolean] [-index_name string] [-lcase_masking] [-query_loc range] [-strand strand] [-parse_deflines] [-outfmt format] [-show_gis] [-num_descriptions int_value] [-num_alignments int_value] [-line_length line_length] [-html] [-max_target_seqs num_sequences] [-num_threads int_value] [-remote] [-version]

DESCRIPTION Nucleotide-Nucleotide BLAST 2.6.0+

Use '-help' to print detailed descriptions of command line arguments

Error: Unknown argument: "d" Error: (CArgException::eInvalidArg) Unknown argument: "d"

How to go about it?

warrenlr commented 4 years ago

the error message tells me you've installed ncbi BLAST 2.6.0+, which has never been tested with HLAminer.

As I mentioned 2 days ago:

ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/

note: hlaminer has NOT been tested with versions newer than 2-2-29

So, please download+install ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.2.29/ in order to use hlaminer.

I regret that this project is no longer actively developed. As a consequence, newer versions of software/dependencies are NOT supported.