#!/usr/bin/perl

###############################################
# SHARKmodel takes FASTA-format sequences     #
# and creates multiple alignments,            #
# HMMER profile HMMs and PSI-BLAST profiles   #
# for SHARKhunt.                              #
###############################################

#$PRG=`basename $0`;
$SHARKHOME=`dirname "$0"`;
chomp $SHARKHOME;

############################################

# default directories
$BLASTHOME="$SHARKHOME/blast";
$HMMERHOME="$SHARKHOME/hmmer";
$MUSCLEHOME="$SHARKHOME/muscle";

############################################

$dir = $ARGV[0];

# open profile dir
opendir(DIR1,$dir) or die;
@dir1 = readdir(DIR1);

$g = shift(@dir1);
$g = shift(@dir1);

foreach $g(@dir1){
    if($g =~ /(.*)\.faa/){ 
    $id = $1;

    $nseq = `grep '>' $dir/$g | wc -l `;
    chomp $nseq;

    if($nseq > 1){

    system("$MUSCLEHOME/muscle -in $dir/$g -out $dir/$id.aln -clwstrict -quiet");

    system("$HMMERHOME/hmmbuild -s -F -n $id --informat CLUSTAL $dir/$id.hmm $dir/$id.aln > /dev/null");
	    
    system("$HMMERHOME/hmmemit -c -q -o $dir/$id.chd $dir/$id.hmm");
 
    system("$BLASTHOME/formatdb -p T -i $dir/$g -l /dev/null");
    
    system("$BLASTHOME/blastpgp -i $dir/$id.chd -d $dir/$g -j 2 -C $dir/$id.chk > /dev/null");

}
    else{

    system("cp $dir/$g $dir/$id.chd");	

    system("$BLASTHOME/formatdb -p T -i $dir/$g -l /dev/null");
    
    system("$BLASTHOME/blastpgp -i $dir/$id.chd -d $dir/$g -j 2 -C $dir/$id.chk > /dev/null");

    }

    system("rm $dir/$g.*");

}

}
    
 
print STDOUT "Finished SHARKmodel \n";
