#!/usr/bin/perl
use strict;
#use Env;
BEGIN{ @INC = ( '/bmlfast/bml_casp15/tools/casp14/DeepRank_db_tools/tools/SCRATCH-1D_1.1/perl_lib/', @INC ); }
use Env;

##########################################################################################
#                                                                                        #
#  Project     :  SSpro                                                                  #
#  Release     :  5.2                                                                    #
#                                                                                        #
#  File        :  install.pl                                                             #
#  Description :  SSpro installation script                                              #
#                                                                                        #
#  Author(s)   :  Christophe Magnan (cmagnan@ics.uci.edu)                                #
#  Copyright   :  Institute for Genomics and Bioinformatics                              #
#                 University of California, Irvine                                       #
#                                                                                        #
#  Modified    :  2015/07/02                                                             #
#                                                                                        #
##########################################################################################

# SCRATCH-1D Specific Settings
my $profilpro_dir="$ARGV[0]";
my $homolpro_dir="$ARGV[1]";
my $brnn1d_dir="$ARGV[2]";

# Retrieving installation path
my $install_dir=`pwd`; chomp($install_dir);
my $locerr="\nThis script must run in its own directory.\n";
if((! -d "$install_dir/bin")||(! -d "$install_dir/env")){ print "$locerr\n"; exit 1; }
if((! -d "$install_dir/data")||(! -d "$install_dir/data/models")){ print "$locerr\n"; exit 1; }
if((! -d "$install_dir/doc")||(! -d "$install_dir/lib")){ print "$locerr\n"; exit 1; }
if((! -d "$install_dir/tmp")||(! -d "$profilpro_dir")){ print "$locerr\n"; exit 1; }
if((! -d "$homolpro_dir")||(! -d "$brnn1d_dir")){ print "$locerr\n"; exit 1; }
if(! -f "$install_dir/lib/install_template1.sh"){ print "$locerr\n"; exit 1; }
if(! -f "$install_dir/lib/install_template2.sh"){ print "$locerr\n"; exit 1; }
if(! -f "$install_dir/lib/install_template3.sh"){ print "$locerr\n"; exit 1; }
if(! -f "$install_dir/lib/install_template4.sh"){ print "$locerr\n"; exit 1; }
if(! -f "$install_dir/lib/install_template5.sh"){ print "$locerr\n"; exit 1; }
if(! -f "$install_dir/lib/install_template6.sh"){ print "$locerr\n"; exit 1; }
if(! -f "$install_dir/lib/SSpro_predictions.pl"){ print "$locerr\n"; exit 1; }
if(! -f "$install_dir/lib/SSpro_predictions.sh"){ print "$locerr\n"; exit 1; }
print "\n\n\nInstallation folder: $install_dir\n";

# Preparing SSpro bash profile
print "Installing bash profile...\n"; open(IN,"$install_dir/lib/install_template1.sh");
open(OUT,">$install_dir/env/SSpro.sh"); while(my $l=<IN>){ chomp($l); if($l eq "<INSTALL_DIR>"){
print OUT "export SSPRO_ROOT_DIR=\"$install_dir\"\n"; } elsif($l eq "<PROFILpro_DIR>"){
print OUT "export PROFILpro_INSTALL_DIR=\"$profilpro_dir\"\n"; } elsif($l eq "<HOMOLpro_DIR>"){
print OUT "export HOMOLpro_INSTALL_DIR=\"$homolpro_dir\"\n"; } elsif($l eq "<BRNN1D_DIR>"){
print OUT "export BRNN1D_INSTALL_DIR=\"$brnn1d_dir\"\n"; } else{ print OUT "$l\n"; } }
close(IN); close(OUT); #`chmod 777 $install_dir/env/SSpro.sh`;

# Preparing SSpro launchers
print "Installing SSpro bin scripts...\n";
open(IN,"$install_dir/lib/install_template2.sh"); open(OUT,">$install_dir/bin/sequence_to_ss.sh");
while(my $l=<IN>){ chomp($l); if($l eq "<INSTALL_DIR>"){ print OUT "install_dir=\"$install_dir\"\n"; }
else{ print OUT "$l\n"; } } close(IN); close(OUT); #`chmod 777 $install_dir/bin/sequence_to_ss.sh`;
open(IN,"$install_dir/lib/install_template3.sh"); open(OUT,">$install_dir/bin/sequence_to_ss_ab.sh");
while(my $l=<IN>){ chomp($l); if($l eq "<INSTALL_DIR>"){ print OUT "install_dir=\"$install_dir\"\n"; }
else{ print OUT "$l\n"; } } close(IN); close(OUT); #`chmod 777 $install_dir/bin/sequence_to_ss_ab.sh`;
open(IN,"$install_dir/lib/install_template4.sh"); open(OUT,">$install_dir/bin/profiles_to_ss.sh");
while(my $l=<IN>){ chomp($l); if($l eq "<INSTALL_DIR>"){ print OUT "install_dir=\"$install_dir\"\n"; }
else{ print OUT "$l\n"; } } close(IN); close(OUT); #`chmod 777 $install_dir/bin/profiles_to_ss.sh`;
open(IN,"$install_dir/lib/install_template5.sh"); open(OUT,">$install_dir/bin/profiles_to_ss_ab.sh");
while(my $l=<IN>){ chomp($l); if($l eq "<INSTALL_DIR>"){ print OUT "install_dir=\"$install_dir\"\n"; }
else{ print OUT "$l\n"; } } close(IN); close(OUT); #`chmod 777 $install_dir/bin/profiles_to_ss_ab.sh`;

# Installing SSpro Prediction Models
print "Installing SSpro models...\n"; open(IN,"$install_dir/lib/install_template6.sh");
open(OUT,">$install_dir/data/models.txt"); my $num_models=<IN>; chomp($num_models);
print OUT "$num_models\n"; for(my $i=0;$i<$num_models;$i++){ my $file=<IN>;
chomp($file); my $fullpath="$install_dir/data/models/$file"; if(! -f "$fullpath"){
print "SSpro model '$file' missing...\n"; exit 1; } print OUT "$fullpath\n"; }
close(IN); close(OUT); #`chmod 777 $install_dir/data/models.txt`;

# Print message to test installation
print "Done installing SSpro...\n\nTo test the installation:\n\n";
print "Change directory to the 'doc' sub-folder\n\n   cd doc\n\n";
print "Run SSpro on the provided test dataset:\n\n";
print "  ../bin/sequence_to_ss.sh test.fa test.out 4\n\n";
print "The output file 'test.out' should be identical to 'test.hom'\n\n\n\n";

