2017-02-17 35 views
2

Я хочу выполнить приложение поиска blastx в PHP вместо текстового терминала консоли Linux.Выполнение внешней программы BLAST в PHP

Фактические аргументы командной строки будет (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 
'); 

Однако, когда я называю exec() функции в программе PHP нет ничего не произошло.

Я также пробовал еще один способ. Он возвращает код ошибки 1. Вот мой PHP exec() содержания:

exec('sh /path/to/myscript.sh', $output, $return_var); 

Какие жизненно важные шаги, которые я пропустил? Есть ли альтернативный метод для выполнения внешних программ?

Любые предложения будут оценены.

ответ

2

Линии разрыва являются проблемой, попробуйте

<?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 \ 
'); 

EDIT

Я показываю процесс, так как я не можите сделать отслеживания

1 Входные данные

cat seq.fa #NUCLEOTIDES

 
>seq_1 
GGCAGCCTAACACATGCAAGTCGAACGGTAACAGGAAGCAGCTTGCTGCTTTGCT 
GACGAGTGGCGGACGGGTGAGTAATGTCTGGGAAACTGCCTGATGGAGGGGGAT 
AACTACTGGAAACGGTAGCTAATACCGCATAATGTCGCAAGACCAAAGAGGGGGA 

кошке 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- Баш скрипт

кошка MYS cript.sh

path_to_blast/blastx -query path_to_query/seq.fa -db path_to_db/database -evalue 0.0001 -outfmt 6 

4- PHP скрипт

кошачий blast.php

<?php 
exec('sh myscript.sh', $output, $return_var); 
print_r($output); 
echo "$return_var\n"; 

5- Выполнить это,

php blast.php 

вы Г.Е. t,

 
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 
+0

К сожалению, это не работает. Ситуация та же. Нет файла 'nohup.out'. –

+0

Чтобы все было ясно, я пытаюсь выполнить эту команду: 'exec ('string $ command', $ output, $ return_var);' Аргумент 'return_var' всегда возвращался 127, а' output' пуст. –

+0

Почему 'exec()' не делает правильные вещи? –