Standalone BLAST with Ruby

 

 

BLAST is one of the most widely used search algorithms in molecular biology. So lets see how you can run and retrieve blast results via a simple Ruby script .I will assume you already have ruby 1.8.5 and above installed in your windows box and a standalone blast.exe which you can download from the NCBI’s ftp site here . The latest windows binaries as of this writing is 2.2.17. Create a new folder in C and call it NCBI_Blast. Paste the downloaded blast program in this folder. Double click the blast program and it will create a bin, doc and data folders inside your your NCBI_Blast folder. If this is your first time to install blast in your machine. You will need to do a little configuration. Follow these instructions for setting up blast .

 

Using your favorite text editor, (I use the Netbeans IDE 6.0 with Ruby support. It is a fantastic Ruby editor and totally free) .

 

#create a query sequence
myseq=”pcaatcacatyyawwqqffgghhhkllkl”

 

#create a temporary file
require ‘tempfile’

temp=Tempfile.new(“seqfile”)
#get the name of the temporary file
name=temp.path
#append the contents your sequence to this temporary file
temp.puts “#{myseq}”
temp.close

#since we have a protein query sequence, we will run a blastp. Please note that you will need to have a valid #database to query against. use the formatdb command to create your database before executing the lines #below.
@program = ‘blastp’
#path to blast

@database = ‘c:/path_to_databasefile’
#name of your query file
@input= name

#your blast output file
@output=’c:/path_output_file’

#assume your blast is in a folder called NCBI_Blast, execute
system( “c:/NCBI_Blast/bin/blastall.exe -p #{@program} -d #{@database} -i #{@input} -o #{@output}”)

#To capture the output in a variable execute this command instead.
#note that we have omitted the blast -o parameter

result=%x(c:/NCBI_Blast/bin/blastall.exe -p #{@program} -d #{@database} -i #{@input} )

#remember to delete the temporary file!

temp.close(true)

And that all folks!

One Response to “Standalone BLAST with Ruby”

  1. jan. Says:

    You can also use bioruby to run BLAST searches against local databases. Here’s a sample script:

    #!/usr/bin/ruby
    require 'bio'

    factory = Bio::Blast.local('blastn', '/path/to/BLAST/database')
    ff = Bio::FlatFile.open(Bio::FastaFormat, 'input_file.fa')
    ff.each do |entry|
    $stderr.puts "Searching..." + entry.definition
    report = factory.query(entry)
    report.each do |hit|
    hit.each do |hsp|
    puts hsp.query_from
    end
    end
    end


Leave a Reply