Search code examples
phpexecbioinformaticscentos7blast

Execute an external BLAST program in PHP


I want to execute a blastx search application in PHP instead of Linux console text terminal.

The actual command line arguments would be (see definition of refer):

./blastx -query $input -db ${Sbjct}_db -evalue 0.0001 -outfmt 6 -out /path/to/output.tsv

Here's my PHP partial code.

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

However, when I call exec() function in PHP program there is nothing happened.

I also tried another method. It return error code 1. Here is my php exec() content:

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

What vital steps I missed out? Is there any alternative method to execute external programs?

Any suggestions would be appreciated.


Solution

  • The break lines are the problem, try

    <?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

    I show the process since I cann't do tracking

    1- Input data

    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- Format database

    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- Run it,

    php blast.php
    

    you get,

    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