Я хочу выполнить приложение поиска blastx в PHP вместо текстового терминала консоли Linux.
Фактические аргументы командной строки будут ( см. Определение ссылки ):
./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 ');
Однако, когда я вызываю функцию exec()
в программе PHP, ничего не происходит.
Я также попробовал другой метод. Он возвращает код ошибки 1. Вот мой php exec()
:
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 гипотетический белок AE17_03267, частичный [Escherichia coli UCI 58] PVVIPLHQAVSQTLLTRPPLVSKAASCFLLPFDLHVLGLPPAFNLSHDQTLQFKSLMLKELNFVMNYVFTLETWYSFFVL RR > EUM99718.1 гипотетический белок L347_09473, частичный [Enterobacter sp. MGH 1] VVIPLHQAVSQTLLTRPPLVSEAASCFLLPFDLHVLGLPPAFNLSHDQTLQFKSLMLNELNFVMNYVFTR > CSD41531.1 Нехарактеризованный белок [Vibrio cholerae] MADHPLRPARDRRLGEPLPHQLANPTWAYPVAQGPKVPCFALARLCGISHRFQWLSPSTGQFPRHYSPVRRSPPKEQVPL CCRSTCMC
2- Формат базы данных
makeblastdb -in database.fa -dbtype prot -out database
3-й скрипт
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
Вы получаете,
массив ( [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