
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.rajkumar.in/index.php?action=history&amp;feed=atom&amp;title=Heterosis_blast.pl</id>
	<title>Heterosis blast.pl - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.rajkumar.in/index.php?action=history&amp;feed=atom&amp;title=Heterosis_blast.pl"/>
	<link rel="alternate" type="text/html" href="https://www.rajkumar.in/index.php?title=Heterosis_blast.pl&amp;action=history"/>
	<updated>2026-07-09T20:12:01Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://www.rajkumar.in/index.php?title=Heterosis_blast.pl&amp;diff=1597&amp;oldid=prev</id>
		<title>Raj: Created page with &#039;Category: Bioinformatics  &lt;source lang=perl&gt; #! /usr/bin/perl -w  # ************************************************************* # This Programme does the following in seque…&#039;</title>
		<link rel="alternate" type="text/html" href="https://www.rajkumar.in/index.php?title=Heterosis_blast.pl&amp;diff=1597&amp;oldid=prev"/>
		<updated>2010-04-15T13:40:00Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;&lt;a href=&quot;/index.php/Category:Bioinformatics&quot; title=&quot;Category:Bioinformatics&quot;&gt;Category: Bioinformatics&lt;/a&gt;  &amp;lt;source lang=perl&amp;gt; #! /usr/bin/perl -w  # ************************************************************* # This Programme does the following in seque…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category: Bioinformatics]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=perl&amp;gt;&lt;br /&gt;
#! /usr/bin/perl -w&lt;br /&gt;
&lt;br /&gt;
# *************************************************************&lt;br /&gt;
# This Programme does the following in sequence&lt;br /&gt;
# -&amp;gt; Performs regular Blast&lt;br /&gt;
# -&amp;gt; Multi threads&lt;br /&gt;
# -&amp;gt; Parses the out and takes the top hit&lt;br /&gt;
# -&amp;gt; Modyfy the infile and outfile and carefully read the variables to change stuff&lt;br /&gt;
# Author : Rajkumar (itc@rajkumar.in)&lt;br /&gt;
# Release: APR 2010&lt;br /&gt;
# *************************************************************&lt;br /&gt;
&lt;br /&gt;
# Libraries&lt;br /&gt;
	use strict;&lt;br /&gt;
	use Bio::Perl;&lt;br /&gt;
	use Bio::SearchIO;&lt;br /&gt;
	use Parallel::ForkManager;&lt;br /&gt;
&lt;br /&gt;
# At the top: Time Start&lt;br /&gt;
	my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);&lt;br /&gt;
&lt;br /&gt;
# Variables&lt;br /&gt;
	my $path    = &amp;quot;/home/raj/bio&amp;quot;;&lt;br /&gt;
	my $db      = &amp;quot;$path/sorghum/db/sgdna&amp;quot;;&lt;br /&gt;
	my $curdir  = &amp;quot;$path/user/rk/heterosis&amp;quot;;&lt;br /&gt;
	my $query   = &amp;quot;$curdir/heterosis_maize.fa&amp;quot;;&lt;br /&gt;
	my $tophit  = &amp;quot;$curdir/maize-sgdna_tophit.txt&amp;quot;;	&lt;br /&gt;
	my $tempdir = &amp;quot;$curdir/temp&amp;quot;;&lt;br /&gt;
	my $resdir  = &amp;quot;$curdir/result&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	my $cpu     = &amp;quot;1&amp;quot;;&lt;br /&gt;
	my $pm = new Parallel::ForkManager(4); # 4 is the number of cores in your processor&lt;br /&gt;
&lt;br /&gt;
	my (@files, @files_) = @_;&lt;br /&gt;
	my ($i)     = $_;&lt;br /&gt;
# Functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	# Having the required dir&lt;br /&gt;
	if (-e &amp;quot;$tophit&amp;quot;)    {`rm $tophit`;}&lt;br /&gt;
	if (-e &amp;quot;$tempdir&amp;quot;)   {`rm -fr $tempdir`;}&lt;br /&gt;
	if (! -e &amp;quot;$tempdir&amp;quot;) {`mkdir $tempdir`;}&lt;br /&gt;
	if (-e &amp;quot;$resdir&amp;quot;)    {`rm -fr $resdir`;}&lt;br /&gt;
	if (! -e &amp;quot;$resdir&amp;quot;)  {`mkdir $resdir`;}&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
# Get the MultiFasta&lt;br /&gt;
&lt;br /&gt;
	my $in  = Bio::SeqIO-&amp;gt;new(-file =&amp;gt; &amp;quot;$query&amp;quot;, -format =&amp;gt; &amp;#039;Fasta&amp;#039;);&lt;br /&gt;
	my $identifier;&lt;br /&gt;
	my $sequence;&lt;br /&gt;
 &lt;br /&gt;
	while ( my $seq = $in-&amp;gt;next_seq() ) {&lt;br /&gt;
		$identifier = $seq-&amp;gt;id;&lt;br /&gt;
  		$sequence = $seq-&amp;gt;seq;&lt;br /&gt;
 &lt;br /&gt;
		my $fasta= &amp;quot;&amp;gt;$identifier\n$sequence\n&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
		open(TEMP, &amp;quot;&amp;gt;&amp;gt;&amp;quot;.$tempdir.&amp;quot;/&amp;quot;.$identifier);&lt;br /&gt;
		print TEMP $fasta;&lt;br /&gt;
		close TEMP;&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Loop for Blast with multithreading&lt;br /&gt;
 &lt;br /&gt;
	opendir (DIR, &amp;quot;$tempdir&amp;quot;) or die $!;&lt;br /&gt;
	@files = readdir(DIR);&lt;br /&gt;
	close(DIR);&lt;br /&gt;
	&lt;br /&gt;
	$i = 0;&lt;br /&gt;
	foreach my $file(@files) {&lt;br /&gt;
		next if ($file eq &amp;quot;.&amp;quot;  or $file eq &amp;quot;..&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		$i++;&lt;br /&gt;
		$pm-&amp;gt;start and next;&lt;br /&gt;
		print &amp;quot;\n\tInitiated Blast on $file .. &amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
		my $outfile = $resdir.&amp;quot;/&amp;quot;.$file.&amp;quot;.blast.out&amp;quot;;&lt;br /&gt;
              	my $infile  = $tempdir.&amp;quot;/&amp;quot;.$file;&lt;br /&gt;
              	&lt;br /&gt;
                `blastall -p blastn -d $db -i $infile -e 10 -m 8 -o $outfile -a $cpu`;&lt;br /&gt;
                &lt;br /&gt;
                print &amp;quot;  Done.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		$pm-&amp;gt;finish;&lt;br /&gt;
	}&lt;br /&gt;
	$pm-&amp;gt;wait_all_children;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
			# Blast parameters&lt;br /&gt;
			# -p program&lt;br /&gt;
			# -d database&lt;br /&gt;
			# -i query file&lt;br /&gt;
			# -e evalue&lt;br /&gt;
			# -m 8 tab delimited out&lt;br /&gt;
			# -o outfile&lt;br /&gt;
			# -a number of CPUs&lt;br /&gt;
			# -q  Penalty for a nucleotide mismatch (blastn only)   default = -3&lt;br /&gt;
			# -v  Number of database sequences to show one-line&lt;br /&gt;
			# -K  Number of best hits from a region to keep&lt;br /&gt;
&lt;br /&gt;
	# cleaning the temp dir&lt;br /&gt;
	if (-e &amp;quot;$tempdir&amp;quot;) {`rm -fr $tempdir`;}&lt;br /&gt;
		&lt;br /&gt;
&lt;br /&gt;
# Parsing the Blast out to get Top Hit&lt;br /&gt;
	&lt;br /&gt;
 	opendir (DIR, &amp;quot;$resdir&amp;quot;) or die $!;&lt;br /&gt;
	@files_ = readdir(DIR);&lt;br /&gt;
	close(DIR);&lt;br /&gt;
&lt;br /&gt;
	foreach my $file_(@files_) {&lt;br /&gt;
		next if ($file_ eq &amp;quot;.&amp;quot;  or $file_ eq &amp;quot;..&amp;quot;);&lt;br /&gt;
 		$i = 0;&lt;br /&gt;
		foreach my $line_ (split (&amp;quot;\n&amp;quot;, `cat $resdir/$file_`)) {&lt;br /&gt;
 &lt;br /&gt;
			# Filters only the top hit EST &lt;br /&gt;
			&lt;br /&gt;
			$i++;&lt;br /&gt;
			next if ($i&amp;gt;1);&lt;br /&gt;
&lt;br /&gt;
			open (F, &amp;quot;&amp;gt;&amp;gt;&amp;quot;.$tophit);&lt;br /&gt;
			print F &amp;quot;$line_\n&amp;quot;;&lt;br /&gt;
			close F;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
	# Cleaning the Res dir&lt;br /&gt;
	if (-e &amp;quot;$resdir&amp;quot;) {`rm -fr $resdir`;}&lt;br /&gt;
	&lt;br /&gt;
	print &amp;quot;\nAll Done!\n\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# At the End: Time Calculation&lt;br /&gt;
	my ($sec_,$min_,$hour_,$mday_,$mon_,$year_,$wday_,$yday_,$isdst_) = localtime(time);&lt;br /&gt;
	my $days = $mday_-$mday;&lt;br /&gt;
	my $hours = $hour_-$hour;&lt;br /&gt;
	my $mins = $min_-$min;&lt;br /&gt;
	my $secs = $sec_-$sec;&lt;br /&gt;
	print &amp;quot;\n------------------------\nDuration: &amp;quot;;&lt;br /&gt;
	if ($days&amp;gt;0) { print &amp;quot;$days days&amp;quot;;}&lt;br /&gt;
	if ($hours&amp;gt;0) { print &amp;quot;: $hours hours&amp;quot;;}&lt;br /&gt;
	if ($mins&amp;gt;0) { print &amp;quot;: $mins mins&amp;quot;;}&lt;br /&gt;
	if ($secs&amp;gt;0) { print &amp;quot;: $secs secs&amp;quot;;}&lt;br /&gt;
	print &amp;quot;\n------------------------\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Raj</name></author>
	</entry>
</feed>