INSTALLATION AND IMPLEMENTATION OF STRUM
(Copyright 2015 by Zhang Lab, University of Michigan, All rights reserved)

1. How to install the STRUM?

   1) Install STRUM suite
      a) download the STRUM 'STRUM.tar.bz2' from
      	 http://zhanglab.dcmb.med.umich.edu/STRUM/download
      	 and unpack STRUM.tar.bz2 by
      	 > tar -xvf STRUM.tar.bz2
      	 the root path of this package is called $strum, e.g.
      	 /home/liquan/STRUM. You should have all the programs under this 
      	 directory. You can install the package at any location on your computer.

      b) to modify $strum/runSTRUM.pl file and set some paths, eg:
      	 $usrname = "liquan" #your user name which is useful when making tmp dir.
	 $strum = "/home/liquan/STRUM"
	 $bindir = "$strum/bin"

   2) Install I-TASSER Suite
      a) Download I-TASSER Suite 'I-TASSER4.4.tar.bz2' from
      	 http://zhanglab.dcmb.med.umich.edu/I-TASSER/download
      	 and unpack 'I-TASSER4.4.tar.bz2 in $strum by
      	 > cd $strum
      	 > tar -xvf I-TASSER4.4.tar.bz2
      	 The root path of this package is called $i_tasser, e.g. 
      	 /home/liquan/STRUM/I-TASSER4.4.

      b) Download I-TASSER library files from a perl script 'download_lib.pl'
      	 provided in the I-TASSER package for automated library download and
      	 update of the libraries. We recommend putting the library files under the 
      	 path /home/yourname/STLIB by
      	 > cd $strum
      	 > $i_tasser/download_lib.pl -libdir $strum/STLIB -P true -B true -N true
      	 the root of these libraries is called $libdir, e.g.
      	 /home/liquan/STRUM/STLIB

      c) to modify $strum/runSTRUM.pl file and set some paths, eg:
      	 $i_tasser = "$strum/I-TASSER4.4"
      	 $libdir = "$strum/STLIB"
	 $java_home = "/usr" #java bin will be located at $java_home/bin/java

   3) Install RW. 
      a) The default version of RW is included in the package $strum/RW.
      	 You also can download RW from http://zhanglab.dcmb.med.umich.edu/RW/.
      	 The Paths are called $rw and $rwplus
      b) to modify $strum/runSTRUM.pl file and set some paths, eg:
      	 $rw="$strum/RW/calRW"; 
	 $rwplus="$strum/RW/calRWplus";  

   4) Third-party software installation: 
      While the majority of programs in the package 'STRUM.tar.bz2' are
      developed in the Zhang Lab here in the permission of use is released, there
      are some programs and databases which were developed by third-party groups.
      You may experience installation problems, please check the third-party websites. 

      a) Installing HHsuite for sensitive sequence searching
      	 i) Download the sources from http://wwwuser.gwdg.de/~compbiol/data/hhsuite/releases
	    > cd $strum
	    > wget http://wwwuser.gwdg.de/~compbiol/data/hhsuite/releases/hhsuite-latest-linux-x86_64.tar.gz
	    > tar -xzvf hhsuite-latest-linux-x86_64.tar.gz
	    > rm hhsuite-latest-linux-x86_64.tar.gz

	ii) Download the uniprot library for HHblits from http://wwwuser.gwdg.de/~compbiol/data/hhsuite/databases/
	    > cd $libdir
	    > wget http://wwwuser.gwdg.de/~compbiol/data/hhsuite/databases/hhsuite_dbs/uniprot20_2015_06.tgz
	    > tar zxvf uniprot20_2015_06.tgz
	    > rm uniprot20_2015_06.tgz

       iii) to modify $strum/runSTRUM.pl file and set some paths, eg:
	    $hhblits = "$STRUM/hhsuite-2.0.16-linux-x86_64/bin/hhblits";
	    $hhdb="$libdir/uniprot20_2015_06/uniprot20_2015_06";

      b) Installing SIFT
      	 i) Download the code & exe from http://sift.jcvi.org/www/sift4.0.3b.tar.gz
	    > cd $strum
	    > wget http://sift.jcvi.org/www/sift4.0.3b.tar.gz
	    > tar zxvf sift4.0.3b.tar.gz
	    >rm sift4.0.3b.tar.gz

	ii) to modify $strum/runSTRUM.pl file and set some paths, eg:
	    $sift="/$strum/sift4.0.3b";
	    $csh="/bin";  #csh bin will be located at $csh/csh

      c) Installing SCWRL4.0
      	 i) Just fill out the form and  click "I agree" from http://dunbrack.fccc.edu/scwrl4/license/index.html,
	    you will be sent in e-mail a download link only after your liense application is reviewed by SCWRL4 team.
	    If you get the download Page, click the link "Linux Command-line Installer [23 MB]: supports 32bit 
	    and 64 bit", put it in the $strum path.
	    > cd $strum
	    > chmod a+x install_Scwrl4_Linux 
	    > ./install_Scwrl4_Linux
	    Welcome to Scwrl4 installation wizard!

	    Please specify the full path location where Scwrl4 files should be written to.
	    Before you continue the installation, please make sure you have writing privileges for the destination path.
	    Warning: If the specified path contains the previous Scwrl4 intallation, the previously installed files will be overwritten.
	    
	    Press press 'Enter' to interrupt the installation or provide the installation path.
	    The full path is prefered (e.g., /usr/local/bin/scwrl4 or /home/user/scwrl4): $strum/scwrl4
	    Scwrl4 files will be written to /home/liquan/STRUM/scwrl4

	    Is this correct? [ Y/N ]Y


	    Please specify the license holder of this Scwrl4 copy: (ENTER)
	    ......
	    > rm install_Scwrl4_Linux

	ii) to modify $strum/runSTRUM.pl file and set some paths, eg:
	    $scwrl="$strum/scwrl4/Scwrl4";

      d) Installing dDFIRE
      	 i) Download dDFIRE from http://sparks-lab.org/yueyang/download/index.php
	    > cd $strum
	    > wget http://sparks-lab.org/yueyang/download/dDFIRE1.1-bin.tbz
      	    > tar -xjf dDFIRE1.1-bin.tbz
	    > rm dDFIRE1.1-bin.tbz

	ii) to modify $strum/runSTRUM.pl file and set some paths, eg:
	    $dfire="$strum/dDFIRE1.1-bin"

      e) Installing Amber
      	 i) fill out the form from http://ambermd.org/AmberTools14-get.html and click Download. Move the downloaded AmberTools14.tar.bz2
	    into $strum
	    > cd $strum
	    > tar -jxvf AmberTools14.tar.bz2
	    > rm AmberTools14.tar.bz2
	    > cd amber14 
	    > vim ~/.bashrc
	    copy this sentence "export AMBERHOME=$strum/amber14" to ~/.bashrc
	    > source ~/.bashrc
	    > sudo apt-get install csh flex gfortran g++ xorg-dev zlib1g-dev libbz2-dev patch python-tk python-matplotlib
	    > ./configure gnu
	    > source amber.sh
	    > make install
	    > make test
	    which will run tests and will report successes or failures

	ii) to modify $strum/runSTRUM.pl file and set some paths, eg:
	    $amber= "$strum/amber14";
      
      f) Installing FoldX
      	 i) Register and login FoldX from http://foldxsuite.crg.eu/. In the download webpage, your request will be submitted, and
	    you'll soon receive a download link at the eamil address provided. STRUM use Executable - Linux 64bits (foldx_Linux.tar_.gz).
	    Move the downloaded foldx_Linux.tar_.gz into $strum.

	ii) > cd $strum
	    > mkdir foldx
	    > cd $strum/foldx
            > tar zxvf $strum/foldx_Linux.tar_.gz
	    > rm $strum/foldx_Linux.tar_.gz

	ii) to modify $strum/runSTRUM.pl file and set some paths, eg:
	    $foldx= "$strum/foldx";

      g) Installing scikit-learn
      	 i) Scikit-learn requires: Python (>= 2.6 or >= 3.3), NumPy (>= 1.6.1), SciPy (>= 0.9) 
	    (http://scikit-learn.org/stable/install.html);
	    In the download webpage https://pypi.python.org/pypi/scikit-learn/0.17, you can downlod scikit-learn-0.17.tar.gz by the link: scikit-learn-0.17.tar.gz (md5)
	    or 
	    > wget https://pypi.python.org/packages/60/b8/c420dce3f72d95e06f7c1e50a6e705f4e8b6078d7d6db38425ac77ae3fab/
              scikit-learn-0.17.tar.gz#md5=4b5cebc8c92cfe33749ae8ab3b2149b7
	    check the file integrity
	    > md5sum scikit-learn-0.17.tar.gz 
            4b5cebc8c92cfe33749ae8ab3b2149b7  scikit-learn-0.17.tar.gz
	    Move the downloaded foldx_Linux.tar_.gz into $strum.
	    
	ii) > cd $strum
	    > tar zxvf scikit-learn-0.17.tar.gz
	    > cd scikit-learn-0.17
	    To install in your directory use:
	    > mkdir $STRUM/python
	    > python setup.py install --prefix $STRUM/python
	    > cd $strum
	    > rm scikit-learn-0.17.tar.gz
            > rm -rf scikit-learn-0.17

       iii) to modify $strum/runSTRUM.pl file and set some paths, eg:
	    $scikit="$strum/python/lib/python2.7/site-packages";

1. How to run the STRUM?

   1) make a file, where either the protein PDB (.pdb) or protein fasta (.fasta) shuld be stored.
      eg: $strum/example

   2) Main script for runing STRUM is $strum/runSTRUM.pl. Run it dirctly without arguments will
      output the help information.

   3) The following arguments must be set. One example is:
      "./runSTRUM.pl -datadir ~/STRUM/example -pdb 1arrA.pdb -mutation S35G"

   4) The sesult will be shown as below

     #######################################################################
     #                           STRUM    Result                           #
     #                                                                     #
     # protein     position     wild-type     mutant-type     ddG          #
     # 1arrA       35           S             G               -0.67        #
     #                                                                     #
     # the result is saved in ddG.txt.                                     #
     #                                                                     #
     #######################################################################

STRUM USAGE:
=====================
Mandatory arguments:
=====================
./runSTRUM.pl  -datadir datadir -pdb seqname.pdb -mutation mutation
./runSTRUM.pl  -datadir datadir -seq seqname.fasta -mutation mutation


    -datadir:   this is the directory where your input sequence \"proteinname.fasta\" or pdb \"proteinname.pdb\" is located, and the 
                final results should be saved
    -mutation:  the single-point muation information including: the wild-type residue, the position number of the residue that 
                undergoes mutation and the mutant residue, eg, A44T

either-or
    -pdb:       the name of PDB protein code (PDB protein code must be saved in datadir)
    -seq:       the name of protein sequence in raw format and one letter code (the protein sequence code must be saved in 
                datadir)


==================
Optional arguments:
==================
    -runstyle   default value is \"serial\" which means running I-TASSER simulation sequentially, 
                \"parallel\" means running I-TASSER simulations in parallel, distributed on cluster nodes
    
Tips for path setting:
    -libdir:    where the libraries should be saved (all libraries STRUM needed must be saved in a same directory). go to the nr and 
                enter the command \"pwd\", you may get similar message like this /home/liquan/STRUM/ITLIB/nr, then the path is 
                /home/liquan/STRUM/ITLIB
    -STRUM:     go to the runSTRUM.pl folder and enter the command \"pwd\", you may get similar message like this 
                /home/liquan/STRUM, then the path is /home/liquan/STRUM  
    -java_home: enter the command \"which java\", you may get a path like /usr/java/latest/bin/java, then the path is /usr/java/latest
    -i_tasser:  the path of the I-TASSER package. go to the I-TASSERmod folder and enter the command \"pwd\", you may get 
                similar message like this /home/liquan/STRUM/I-TASSER4.4/I-TASSERmod, then the path is /home/liquan/STRUM//I-TASSER4.4
    -hhblits:   the path of HHblits. go to the hhblits folder and enter the command \"pwd\", you may get similar message like this
                /home/liquan/STRUM/hhsuite/bin, then the path is /home/liquan/STRUM/hhsuite/bin/hhblits.
    -hhdb:      the path of the dataset used by hhblits. the simillar path is $libdir/uniprot20_2015_06/uniprot20_2015_06
    -sift:      the path of SIFT. go to the SIFT_for_submitting_fasta_seq.csh folder and enter the command \"pwd\", you may get similar 
                message like this /home/liquan/STRUM/sift/bin, then the path is /home/liquan/STRUM/sift.
    -csh:       enter the command \"which csh\", you may get a path like /bin/csh, then the path is /bin
    -scwrl:     the path of SCWRL4. go to the Scwrl4.ini folder and enter the command \"pwd\", you may get similar message like this
                /home/liquan/STRUM/scwrl4, then the path is /home/liquan/STRUM/scwrl4/Scwrl4
    -dfire:     the path of dDFIRE. go to the dfire.1 folder and enter the command \"pwd\", you may get similar message like this
                /home/liquan/STRUM/dDFIRE1.1-bin, then the path is /home/liquan/STRUM/dDFIRE1.1-bin
    -amber:     the path of AmberTools14. go to the amber.sh folder and enter the command \"pwd\", you may get similar message like this
                /home/liquan/STRUM/amber14, then the path is /home/liquan/STRUM/amber14
    -foldx:     the path of FoldX. go to the foldx3b6 folder and enter the command \"pwd\", you may get similar message like this
                /home/liquan/STRUM/foldx, then the path is /home/liquan/STRUM/foldx

    
    
     We suggest testing your installation first with a short sequence (e.g., about 30 residues) before running production jobs for your proteins.
     An example command for running I-TASSER using a pdb \"1arrA.pdb\" under the folder /home/XXX/STRUM/example

     ./runSTRUM.pl -datadir /home/XXX/example -pdb 1arrA.pdb -mutation S35G