Standalone BLAST with Ruby (windows)
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 .
#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)
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
You can also use ruby to set up a local BLAST server, much easier than would be using NCBI’s wwwblast.
Cheers!