在 PHP 中执行外部 BLAST 程序
Execute an external BLAST program in PHP
我想在 PHP 而不是 Linux 控制台文本终端中执行 blastx 搜索应用程序。
实际的命令行参数是 (see definition of refer):
./blastx -query $input -db ${Sbjct}_db -evalue 0.0001 -outfmt 6 -out /path/to/output.tsv
这是我的 PHP 部分代码。
exec('
/path/to/blastx
-query /path/to/PAO1.fasta
-db /path/to/VFDB_setB_pro
-evalue 0.0001
-outfmt 6
-out /path/to/output.tsv
');
但是,当我在 PHP 程序中调用 exec()
函数时,没有任何反应。
我也试过另一种方法。它return错误代码1。这是我的phpexec()
内容:
exec('sh /path/to/myscript.sh', $output, $return_var);
我错过了哪些重要步骤?
有没有其他方法可以执行外部程序?
如有任何建议,我们将不胜感激。
换行是问题,试试
<?php
exec('\
/path/to/blastx \
-query /path/to/PAO1.fasta \
-db /path/to/VFDB_setB_pro \
-evalue 0.0001 \
outfmt 6 \
-out /path/to/output.tsv \
');
编辑
由于无法跟踪,所以我展示了过程
1-输入数据
cat seq.fa #NUCLEOTIDES
>seq_1
GGCAGCCTAACACATGCAAGTCGAACGGTAACAGGAAGCAGCTTGCTGCTTTGCT
GACGAGTGGCGGACGGGTGAGTAATGTCTGGGAAACTGCCTGATGGAGGGGGAT
AACTACTGGAAACGGTAGCTAATACCGCATAATGTCGCAAGACCAAAGAGGGGGA
cat database.fa #PROTEINS
>KDG85104.1 hypothetical protein AE17_03267, partial [Escherichia coli UCI 58]
PVVIPLHQAVSQTLLTRPPLVSKAASCFLLPFDLHVLGLPPAFNLSHDQTLQFKSLMLKELNFVMNYVFTLETWYSFFVL
RR
>EUM99718.1 hypothetical protein L347_09473, partial [Enterobacter sp. MGH 1]
VVIPLHQAVSQTLLTRPPLVSEAASCFLLPFDLHVLGLPPAFNLSHDQTLQFKSLMLNELNFVMNYVFTR
>CSD41531.1 Uncharacterised protein [Vibrio cholerae]
MADHPLRPARDRRLGEPLPHQLANPTWAYPVAQGPKVPCFALARLCGISHRFQWLSPSTGQFPRHYSPVRRSPPKEQVPL
CCRSTCMC
2-格式化数据库
makeblastdb -in database.fa -dbtype prot -out database
3- bash 脚本
cat myscript.sh
path_to_blast/blastx -query path_to_query/seq.fa -db path_to_db/database -evalue 0.0001 -outfmt 6
4- php 脚本
cat blast.php
<?php
exec('sh myscript.sh', $output, $return_var);
print_r($output);
echo "$return_var\n";
5-运行它,
php blast.php
你明白了,
Array
(
[0] => seq_1 KDG85104.1 100.00 38 0 0 118 5 1 38 1e-24 77.0
[1] => seq_1 EUM99718.1 97.30 37 1 0 115 5 1 37 2e-23 73.6
[2] => seq_1 CSD41531.1 70.59 51 15 0 162 10 38 88 1e-22 72.0
)
0
我想在 PHP 而不是 Linux 控制台文本终端中执行 blastx 搜索应用程序。
实际的命令行参数是 (see definition of refer):
./blastx -query $input -db ${Sbjct}_db -evalue 0.0001 -outfmt 6 -out /path/to/output.tsv
这是我的 PHP 部分代码。
exec('
/path/to/blastx
-query /path/to/PAO1.fasta
-db /path/to/VFDB_setB_pro
-evalue 0.0001
-outfmt 6
-out /path/to/output.tsv
');
但是,当我在 PHP 程序中调用 exec()
函数时,没有任何反应。
我也试过另一种方法。它return错误代码1。这是我的phpexec()
内容:
exec('sh /path/to/myscript.sh', $output, $return_var);
我错过了哪些重要步骤? 有没有其他方法可以执行外部程序?
如有任何建议,我们将不胜感激。
换行是问题,试试
<?php
exec('\
/path/to/blastx \
-query /path/to/PAO1.fasta \
-db /path/to/VFDB_setB_pro \
-evalue 0.0001 \
outfmt 6 \
-out /path/to/output.tsv \
');
编辑
由于无法跟踪,所以我展示了过程
1-输入数据
cat seq.fa #NUCLEOTIDES
>seq_1 GGCAGCCTAACACATGCAAGTCGAACGGTAACAGGAAGCAGCTTGCTGCTTTGCT GACGAGTGGCGGACGGGTGAGTAATGTCTGGGAAACTGCCTGATGGAGGGGGAT AACTACTGGAAACGGTAGCTAATACCGCATAATGTCGCAAGACCAAAGAGGGGGA
cat database.fa #PROTEINS
>KDG85104.1 hypothetical protein AE17_03267, partial [Escherichia coli UCI 58] PVVIPLHQAVSQTLLTRPPLVSKAASCFLLPFDLHVLGLPPAFNLSHDQTLQFKSLMLKELNFVMNYVFTLETWYSFFVL RR >EUM99718.1 hypothetical protein L347_09473, partial [Enterobacter sp. MGH 1] VVIPLHQAVSQTLLTRPPLVSEAASCFLLPFDLHVLGLPPAFNLSHDQTLQFKSLMLNELNFVMNYVFTR >CSD41531.1 Uncharacterised protein [Vibrio cholerae] MADHPLRPARDRRLGEPLPHQLANPTWAYPVAQGPKVPCFALARLCGISHRFQWLSPSTGQFPRHYSPVRRSPPKEQVPL CCRSTCMC
2-格式化数据库
makeblastdb -in database.fa -dbtype prot -out database
3- bash 脚本
cat myscript.sh
path_to_blast/blastx -query path_to_query/seq.fa -db path_to_db/database -evalue 0.0001 -outfmt 6
4- php 脚本
cat blast.php
<?php
exec('sh myscript.sh', $output, $return_var);
print_r($output);
echo "$return_var\n";
5-运行它,
php blast.php
你明白了,
Array ( [0] => seq_1 KDG85104.1 100.00 38 0 0 118 5 1 38 1e-24 77.0 [1] => seq_1 EUM99718.1 97.30 37 1 0 115 5 1 37 2e-23 73.6 [2] => seq_1 CSD41531.1 70.59 51 15 0 162 10 38 88 1e-22 72.0 ) 0