在PHP中执行外部BLAST程序

时间:2017-02-17 09:20:00

标签: php exec bioinformatics centos7 blast

我想用PHP而不是Linux控制台文本终端执行blastx搜索应用程序。

实际的命令行参数是(see definition of refer):

var path = require('path');
var webpack = require('webpack');    

module.exports = {
    entry: {
        Page: './page.js',
    },
    output: {
        path: '/',
        filename: '[name].js'
    },
    plugins: [
        new webpack.optimize.OccurrenceOrderPlugin(),
        new webpack.NoEmitOnErrorsPlugin(),
        new webpack.optimize.UglifyJsPlugin({
            compress: {
                warnings: false
            }
        }),
        new webpack.DefinePlugin({
            'process.env': {
                NODE_ENV: JSON.stringify('production')
            }
        })
    ],
    module: {
        loaders: [
            {
                test: /.jsx?$/,
                loader: 'babel-loader',
                exclude: /node_modules/,
                query: {
                    presets: ['es2015', 'react']
                }
            }
        ]
    }
};

这是我的PHP部分代码。

./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 '); 函数时,没有任何反应。

我也试过另一种方法。它返回错误代码1.这是我的php exec()内容:

exec()

我错过了哪些重要步骤? 有没有其他方法来执行外部程序?

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分: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 \
'); 

修改

我展示了这个过程,因为我无法跟踪

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 script

  

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 script

  

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