#!/bin/bash
# rosettarc: configuration for rosetta docking mode
# link this to ~/.rosettarc and source it from your .bashrc
# you will probably need to modify the paths
# jjg 4/25/01 rev. 5/19/04

# docking paths -- CUSTOMIZE THIS SECTION
# rrun.sh uses $rosetta_bin to find the rosetta executable
# ppk.bash uses $rosetta_scripts to find rrun.sh
# other locations are personal preference and may be reconfigured

export rosetta_root=$HOME/rosetta # rosetta's home, where other directories live
export rosetta_scripts=$rosetta_root/rosetta_scripts/docking # svn repository rosetta_scripts/docking
export rosetta_bin=$rosetta_root/bin # place for executables
export rosetta_src=$rosetta_root/rosetta++ # svn repository rosetta++
export pdb_scripts=$rosetta_scripts/pdb_scripts # svn repository rosetta_scripts/docking/pdb_scripts

#ora added:
export rosetta_database=$HOME/rosetta_database # svn repository rosetta_database/

#### so to set up a default, bare-bones rosetta docking environment, do the following:
#### !!!!THIS is out of date now that svn has replaced cvs
# cd
# mkdir -p svn/baker
# cd svn/baker
# svnbaker # this requires a baker svn password to setup the ssh tunnel
# svn co rosetta++
# svn co rosetta_scripts/docking
# svn co rosetta_database
# mkdir rosetta
# cd rosetta
# ln -s ~/svn/baker/rosetta_scripts/docking rosetta/scripts
# ln -s ~/svn/baker/rosetta++ rosetta/rosetta++
# mkdir rosetta/bin
# ln -s $rosetta_src/rosetta.gcc   $rosetta_root/bin/rosetta.gcc
# ln -s $rosetta_src/rosetta.intel $rosetta_root/bin/rosetta.intel
# ln -s $rosetta_scripts/rosettarc .rosettarc
# cat "source .rosettarc" >> .bashrc
# cd
# mkdir pdb
# ln -s $pdb_scripts ~/pdb/bin # for convenience

# rosetta_scripts is needed for rrun.sh, ppk.bash
# pdb_scripts is needed to support ppk.bash
PATH=$PATH:$rosetta_scripts:$pdb_scripts

# end docking paths section ####################################

# rosetta_benchmarks / compile defaults
export GCC_COMPILE_MACHINE=ella
export INTEL_COMPILE_MACHINE=ella

#shortcuts #####################################################

alias cdr='cd $rosetta_src'
alias cdw='cd $rosetta_src/work'
alias cds='cd $rosetta_scripts'
alias cdb='cd ~/svn/rosetta_benchmarks'
alias cda='cd ~/svn/autobench'

alias status='svn status -uv'

# quick backup, or package up to move to remote location (laptop/supercomputer)
alias tarcc='tar -chzf rosetta++.$(date +%Y_%b%d).tgz *cc *h R* make* paths.txt .svn'
alias tars='cds;tar -czhf rosetta.scripts.$(date +%Y_%b%d).tgz *'

alias decoycount='date; for d in $('ls' -d ????); do echo -n $d:; ls $d/??/|wc; done 2>/dev/null'

function count_residues() 
{ 
    grep -E "^ATOM[[:print:]]*  N   " $@ -c | sort -gt: +1 
}

function remove_empty_decoys()
{
    if [ ! $1 ]
    then
	echo usage: remove_empty_decoys pdb
    else
	for f in $1/??/*pdb
	do
	if [ ! -s $f ]
	then
	    rm -f $f
	fi
	done
    fi
}

# scripts to view scorefile output more easily
cutfa1=39
cutfa2=218
cut1 ()   { cut -c 1-$cutfa1 $@; }
cut2 ()   { cut -c $cutfa2- $@; }
cutfa ()  { cut -c 1-$cutfa1,$cutfa2- $@; }
cutfal () { cutfa $@ | less; }
sortfal() { sort $@ | cutfal; }
headfa () { head $@ | cutfa; }
tailfa()  { tail $@ | cutfa; }

cutbb1=138
cutbb2=355
cutbb ()  { cut -c 1-$cutbb1,$cutbb2- $@; }
cutbbl () { cutbb $@ | less; }
sortbbl() { sort $@ | cutbbl; }
headbb () { head $@ | cutbb; }
tailbb()  { tail $@ | cutbb; }

# condor failures
find_condor_failures()
{
# argument: condor_log_file
# this routine counts how many jobs 'ran' on each machine
# the machine getting 99% of the jobs is likely defective
    grep execut $@ | cut -c 34- | sort | uniq -c
}



#debug #####################################################
function dddr ()
{ 
    if [ -z "$1" ]; then
        COMPILER=gnu;
    else
        COMPILER=$1;
        shift;
    fi;
    old=$PWD;
    cd $rosetta_src;
    echo;
    echo Try this:;
    echo rm $rosetta_src/work/debug/* -f;
    echo;
    echo Use these arguments:;
    echo aa 1brs 1 -dock -s 1brs -constant_seed;
    echo;
    ddd $rosetta_src/pFOLD.$COMPILER &
}

#######
# shortcuts

function clusterpile()
{
# view all clusters together in one pdb 
# (extracts the second partner only from clusters 2 and higher)
    cat cluster1.pdb > allclusters.pdb
    partner2chains=$(listChains.pl cluster1.pdb | cut -d'-' -f2)
    extractChains.pl $partner2chains clus*.pdb >> allclusters.pdb
}



### benchmark shortcuts

alias rbench1='./rosettaBenchmark.pl -execdir ../rosetta++ -compile -gcc > >(tee rBench1.out) 2>&1'
alias rbenchall='./rosettaBenchmark.pl -execdir ../rosetta++ -compile > >(tee rBench.out) 2>&1'
alias rbenchclean='cd ../rosetta;make superclean;cd ../rosetta_benchmarks'
