169
169
my $annotation_prog = " annoFAS" ;
170
170
my $fas_prog = " calcFAS" ;
171
171
my $hamstrFAS_prog = " hamstrFAS" ;
172
+ if (check_exists_command(" fdogFAS" )) {
173
+ $hamstrFAS_prog = " fdogFAS" ;
174
+ }
172
175
173
176
# #### ublast Baustelle: not implemented yet
174
177
my $runublast = 0;
607
610
my $final_eval_blast = $eval_blast *$eval_relaxfac ;
608
611
my $final_eval_hmmer = $eval_hmmer *$eval_relaxfac ;
609
612
613
+ $taxaPath = $genome_dir ;
610
614
my @searchTaxa ;
611
615
unless ($groupNode ) {
612
616
@searchTaxa = keys %taxa ;
643
647
foreach (sort @searchTaxa ) {
644
648
chomp (my $searchTaxon = $_ );
645
649
my $pid = $pm -> start and next ;
646
- my $doneTaxon = runHamstr($searchTaxon , $seqName , $finalOutput , $refSpec , $hitlimit , $representative , $strict , $coremode , $final_eval_blast , $final_eval_hmmer , $aln );
647
- unless ($silent ) {
648
- print $doneTaxon ," \t " ;
649
- }
650
- my $doneTaxonName = getTaxonName($doneTaxon );
651
- if (defined ($doneTaxonName )) {
652
- print $doneTaxonName , " DONE\n " ;
650
+
651
+ my $searchTaxonName = getTaxonName($searchTaxon );
652
+ if (defined ($searchTaxonName )) {
653
+ unless ($silent ) {
654
+ print $searchTaxon , " \t " , $searchTaxonName , " \n " ;
655
+ } else {
656
+ print $searchTaxonName , " \n " ;
657
+ }
653
658
}
659
+ runHamstr($searchTaxon , $seqName , $finalOutput , $refSpec , $hitlimit , $representative , $strict , $coremode , $final_eval_blast , $final_eval_hmmer , $aln );
654
660
$pm -> finish;
655
661
}
656
662
$pm -> wait_all_children;
@@ -1568,14 +1574,16 @@ sub getBestOrtholog {
1568
1574
unless ($silent ) {
1569
1575
print " Hamstr species: " . $key -> scientific_name . " - " . @{$key -> name(' supplied' )}[0] . " \n " ;
1570
1576
}
1571
- my $doneTaxon = runHamstr(@{$key -> name(' supplied' )}[0], $seqName , $outputFa , $refSpec , $core_hitlimit , $core_rep , $corestrict , $coremode , $eval_blast , $eval_hmmer , $aln );
1572
- unless ($silent ) {
1573
- print $doneTaxon ," \t " ;
1574
- }
1575
- my $doneTaxonName = getTaxonName($doneTaxon );
1576
- if (defined ($doneTaxonName )) {
1577
- print $doneTaxonName , " DONE\n " ;
1577
+ my $coreTaxon = @{$key -> name(' supplied' )}[0];
1578
+ my $coreTaxonName = getTaxonName($coreTaxon );
1579
+ if (defined ($coreTaxonName )) {
1580
+ unless ($silent ) {
1581
+ print $coreTaxon , " \t " , $coreTaxonName , " \n " ;
1582
+ } else {
1583
+ print $coreTaxonName , " \n " ;
1584
+ }
1578
1585
}
1586
+ runHamstr($coreTaxon , $seqName , $outputFa , $refSpec , $core_hitlimit , $core_rep , $corestrict , $coremode , $eval_blast , $eval_hmmer , $aln );
1579
1587
# # check weather a candidate was found in the searched taxon
1580
1588
if (-e $candidatesFile ) {
1581
1589
@@ -1900,11 +1908,11 @@ sub getRefTree {
1900
1908
sub getTaxonName {
1901
1909
my $taxAbbr = $_ [0];
1902
1910
my @tmp = split (/ @/ ,$taxAbbr );
1903
- my $taxon = $db_bkp -> get_taxon($tmp [1]);
1911
+ my $taxon = $db_bkp -> get_taxon(- taxonid => $tmp [1]);
1904
1912
if (defined ($taxon )) {
1905
1913
return ($taxon -> scientific_name);
1906
1914
} else {
1907
- return (" Unk NCBI taxon" );
1915
+ return (" Unk NCBI taxon for $taxAbbr " );
1908
1916
}
1909
1917
}
1910
1918
@@ -2043,7 +2051,6 @@ sub runHamstr {
2043
2051
else {
2044
2052
print " No protein set available for $taxon . Failed to fetch it from database and nothing at $taxaDir . Skipping!\n " ;
2045
2053
}
2046
- return ($taxon );
2047
2054
}
2048
2055
2049
2056
# add seed sequence to output file if not exists
@@ -2062,19 +2069,30 @@ sub addSeedSeq {
2062
2069
}
2063
2070
}
2064
2071
}
2065
- # get seed seq
2072
+ # get seed sequence and add to be beginning of the fasta output
2073
+ open (TEMP, " >$outputFa .temp" ) or die " Cannot create $outputFa .temp!\n " ;
2074
+ my $seedFa = " " ;
2066
2075
if ($flag == 1) {
2076
+ # first, write the seed to TEMP
2067
2077
my $seqio = Bio::SeqIO-> new(-file => " $coreOrthologsPath /$seqName /$seqName .fa" , ' -format' => ' Fasta' );
2068
2078
while (my $seq = $seqio -> next_seq) {
2069
2079
my $id = $seq -> id;
2070
2080
if ($id =~ / $refSpec / ) {
2071
- my $seedFa = " >" .$id ." |1\n " .$seq -> seq;
2072
- # append to begining of outputFa
2073
- my $headCommand = " sed -i \' 1s/^/" . " >" .$id ." |1\\ n" .$seq -> seq . " \\ n/\' " . $outputFa ;
2074
- system ($headCommand );
2081
+ print TEMP " >$id |1\n " , $seq -> seq, " \n " ;
2082
+ last ;
2083
+ }
2084
+ }
2085
+ # then write other sequences
2086
+ my $seqio2 = Bio::SeqIO-> new(-file => " $outputFa " , ' -format' => ' Fasta' );
2087
+ while (my $seq = $seqio2 -> next_seq) {
2088
+ my $id = $seq -> id;
2089
+ if ($id !~ / $refSpec / ) {
2090
+ print TEMP " >$id \n " , $seq -> seq, " \n " ;
2075
2091
}
2076
2092
}
2077
2093
}
2094
+ close (TEMP);
2095
+ system (" mv $outputFa .temp $outputFa " )
2078
2096
}
2079
2097
2080
2098
# #########################
@@ -2549,7 +2567,7 @@ sub initialCheck {
2549
2567
}
2550
2568
2551
2569
# check executable FAS
2552
- my $fasCheckMsg = ` prepareFAS -t ./ -c 2>&1` ;
2570
+ my $fasCheckMsg = ` $hamstrFAS_prog -t ./ -c 2>&1` ;
2553
2571
if ($fasoff != 1 && $fasCheckMsg =~ / ERROR/ ) {
2554
2572
die " ERROR: greedyFAS not ready to use! Please check https://github.com/BIONF/FAS/wiki/prepareFAS\n " ;
2555
2573
}
@@ -2642,6 +2660,11 @@ sub checkValidFolderName {
2642
2660
sub gettime { sprintf " %d .%03d" ,Time::HiRes::gettimeofday }
2643
2661
sub roundtime { sprintf (" %.2f" , $_ [0]); }
2644
2662
2663
+ sub check_exists_command {
2664
+ my $check = ` sh -c 'command -v $_ [0]'` ;
2665
+ return $check ;
2666
+ }
2667
+
2645
2668
# ##########################
2646
2669
sub helpMessage {
2647
2670
my $helpmessage = "
0 commit comments