#!/bin/bash
set -x
#creation des répertoire de travail
#
# repertoire de travail Date
dir=$(date +%F)
docpathbase="latex"
# Si plusieur Job on se premuni des écrasements par erreur en
# créant un répertoire par Job
# $1 le nom du job sert de base ...
# $date ... discrimination par horodate
# $RANDOM ... au cas ou plusieurs job seraient lancé avec la meme basename
basename=${1%%.txt}
#nombre de bootstrap
bootstrap=$2
#if [ $bootstrapt="" ]; then
# bootstrap="1"
#fi
subdir=$basename.$(date +%H-%M-%S).$RANDOM
# on crée le répertoire
mkdir -p $dir/$subdir/$docpathbase
locpath=$PWD
echo "=======================================================================<br />"
echo "$locpath <br />"
echo "=======================================================================<br />"
#basepath="/home/WIP"
###############################################################################
# Fonction Pour la creation de fichier LaTex
# En Entrée
# locpath=$1 := chemin local vers le répertoire
# dir=$2 := répertoire de travail
# subdir=$3 := sous répertoire permet de lancer plusieur job différent sur un même fichier d'entré
# docpathbase=$4 := répertoire d'écriture pour les fichiers latex de résultat
# basename=$5 := nom de base utilisé pour nommer les fichier résultats
###############################################################################
function createdoc ()
{
locpath=$1
dir=$2
subdir=$3
docpathbase=$4
basename=$5
#
echo " " 1>./$docpathbase/$basename.tex
echo " \section{Procédure pour $basename} " 1>>./$docpathbase/$basename.tex
echo " \subsection*{emplacement des fichiers $basename} " 1>>../$docpathbase/$basename.tex
echo " Les fichiers sont présent dans : " 1>>./$docpathbase/$basename.tex
echo " " 1>>./$docpathbase/$basename.tex
echo " " 1>>./$docpathbase/$basename.tex
echo " \titlebox{PATH}{ $dir/$subdir } " 1>>./$docpathbase/$basename.tex
echo " \subsection*{Alignement :Muscle} " 1>>./$docpathbase/$basename.tex
echo " Le job muscle est effectué sans paramètre particulier. " 1>>./$docpathbase/$basename.tex
echo " " 1>>./$docpathbase/$basename.tex
echo " " 1>>./$docpathbase/$basename.tex
echo " \titlebox{Commande} {/usr/bin/muscle -in $1 -out $basename.fst } " 1>>./$docpathbase/$basename.tex
echo " \subsection*{Nettoyage alignement : Gblocks} " 1>>./$docpathbase/$basename.tex
echo " Nous effectuons entre le résultat muscle et le nettoyage une conversion de format pour que " 1>>./$d
echo " Gblocks \cite{gblocks} puisse exploiter les données. " 1>>./$docpathbase/$basename.tex
echo " " 1>>./$docpathbase/$basename.tex
echo " " 1>>./$docpathbase/$basename.tex
echo " \titlebox{conversion readseq}{ readseq $basename.fst -all -f=nbrf -output=$basename.nbrf} " 1>
echo " Puis nous effectuons le nettoyage des séquences " 1>>./$docpathbase/$basename.tex
echo " " 1>>./$docpathbase/$basename.tex
echo " " 1>>./$docpathbase/$basename.tex
echo " \titlebox{nettoyage Gblocks}{/home/bin/Gblocks $basename.nbrf -e=-gb -d=y} " 1>>./$docpat
echo " Pour le reste du job nous retransformons la fichier nettoyer pour l'utiliser avec PhyML \cite{phyml}
echo " " 1>>./$docpathbase/$basename.tex
echo " " 1>>./$docpathbase/$basename.tex
echo " \titlebox{ conversion readseq }{ readseq $basename.nbrf-gb -all -f=phylip -output=$basename.phy-gb
echo " \subsection*{ Optimisation du Modele : ProtTest} " 1>>./$docpathbase/$basename.tex
echo " Nous optimisons le model pour le calcul de l'arbre en utilisant le programme ProtTest \cite{prott
echo " " 1>>./$docpathbase/$basename.tex
echo " " 1>>./$docpathbase/$basename.tex
echo " \titlebox{Optimisation modele }{./runProtTest -i $locpath/$dir/$subdir/$basename.phy-gb -o $locpath
echo "\subsection{Phylogénie : phyml} " 1>>./$docpathbase/$basename.tex
echo " " 1>>./$docpathbase/$basename.tex
echo " " 1>>./$docpathbase/$basename.tex
echo " \titlebox{commande}{/usr/bin/phyml $option -i $basename.phy-gb }" 1>>./$docpathbase/$basename.tex
echo "\section{Résultats pour $basename} " 1>>./$docpathbase/$basename.tex
echo " \subsection{ Unrooted Tree} " 1>>./$docpathbase/$basename.tex
echo " \begin{figure}[!htb] " 1>>./$docpathbase/$basename.tex
echo " \centering " 1>>./$docpathbase/$basename.tex
echo " \includegraphics[scale=.7]{$basename-unrooted.eps} " 1>>./$docpathbase/$basename.tex
echo " \caption{ $basename } " 1>>./$docpathbase/$basename.tex
echo " \end{figure} " 1>>./$docpathbase/$basename.tex
echo " \subsection{ Unrooted Tree boostrap } " 1>>./$docpathbase/$basename.tex
echo " \begin{figure}[!htb] " 1>>./$docpathbase/$basename.tex
echo " \centering " 1>>./$docpathbase/$basename.tex
echo " \includegraphics[scale=.7]{$basename-bootstrap_value.eps}" 1>>./$docpathbase/$basename.tex
echo " \caption{ $basename avec boostrap } " 1>>./$docpathbase/$basename.tex
echo " \end{figure} " 1>>./$docpathbase/$basename.tex
#
# Another way for creating main.tex
#
#sed 's/input{EmbRBmfRBacteria}/input{$basename}/' main.tex > main2.tex
#mv main2.tex main.tex
echo '\include{preamble} %% all things I need for my document
stored in preamble.tex'> ./$docpathbase/ma
echo '
%% Il me semble que le mieux est de mettre des \cite{} dans les differentes sections
%% et des \ref{} dans les questions ' >>./$docpathbase/main.tex
echo '\begin{document}'>>./$docpathbase/main.tex
echo '%%\dominitoc'>>./$docpathbase/main.tex
echo '%%\dominilof[c] % center title of minilofs'>>./$docpathbase/main.tex
echo '%%\dominilot'>>./$docpathbase/main.tex
echo '%%\doparttoc % test of parttoc/partlof stuff'>>./$docpathbase/main.tex
echo '%%\dopartlof % added in version #15'>>./$docpathbase/main.tex
echo '%%\dopartlot % added in version #15'>>./$docpathbase/main.tex
echo '%rubber: dvips.options -R0'>>./$docpathbase/main.tex
echo '\newpage'>>./$docpathbase/main.tex
echo '\tableofcontents'>>./$docpathbase/main.tex
echo '\part{Jobs}'>>./$docpathbase/main.tex
echo " \input{$basename}">>./$docpathbase/main.tex
echo '%%symbole paragraphe \S'>>./$docpathbase/main.tex
echo '%% e dans l o \oe{}'>>./$docpathbase/main.tex
echo '%\printindex'>>./$docpathbase/main.tex
echo '\bibliographystyle{plain}'>>./$docpathbase/main.tex
echo '%\bibliography{biblio}'>>./$docpathbase/main.tex
echo '\end{document}'>>./$docpathbase/main.tex
#
# compilation et document
cd ./$docpathbase/
cp main.tex ..
#
# Attention pour la création de la table des matiere il faut une double compilation du source TeX
latex main.tex && latex.main.tex
dvips main.dvi && dvipdf main.dvi
}
# on copie les fichiers - jamais travailler sur l'original !!
cp $1 $dir/$subdir
echo "=======================================================================<br />";
echo "cp $1 $dir/$subdir <br />"
echo "=======================================================================<br />";
# on se déplace sur les lieux de travail
cd $dir/$subdir
cp /home/WIP/latex/*.tex ./$docpathbase/
echo "=======================================================================<br />";
echo "PATH : $PWD <br />"
echo "=======================================================================<br />";
#
# transforme sequence txt en alignement
/usr/bin/muscle -in $1 -out $basename.fst
echo "=======================================================================<br />";
echo "/usr/bin/muscle -in $1 -out $basename.fst <br />"
echo "=======================================================================<br />";
#
# Transforme fst to phyl # lu par Gblocks
#
readseq $basename.fst -all -f=nbrf -output=$basename.nbrf
echo "=======================================================================<br />";
echo " readseq $basename.fst -all -f=nbrf -output=$basename.nbrf <br />"
echo "=======================================================================<br />";
#
# nettoyage des alignements avec Gblocks # -t type of sequence p(rotein) d(na) c(odons)
#
/opt/Gblocks $basename.nbrf -e=-gb -d=y
echo "=======================================================================<br />";
echo " /home/bin/Gblocks $basename.nbrf -e=-gb -d=y <br />"
echo "=======================================================================<br />";
#
readseq $basename.nbrf-gb -all -f=phylip -output=$basename.phy-gb
echo "=======================================================================<br />";
echo " readseq $basename.nbrf-gb -all -f=phylip -output=$basename.phy-gb <br />"
echo "=======================================================================<br />";
# Ici normalement utilisation de Prottest
# pour trouver le meilleur set pour la phylogenie
#
# petit hack il faut retourner dans le repertoire ProtTest .. sinon ne fonctionne pas
#cd /home/bin/ProtTest2.4/
cd /opt/ProtTest2.4/
echo "=======================================================================<br />";
echo "PATH : $PWD <br />"
echo "=======================================================================<br />";
# +I:invariable sites, +G: rate heterogeneity among sites, +F: observed amino acid ..
# peut etre des info ici
#
http://www.biomedcentral.com/1471-2148/11/34
#
http://gemini.oscs.montana.edu/~mlavin/500/cour_MB.txt
#
http://www.atgc-montpellier.fr/phyml/
# ./runProtTest -all-distribution -all-matrices -all -verbose -i ~WIP/21092011/parallele/${1%%.txt
#./runProtTest -all-distribution -all-matrices -all -verbose -S:1 -i $locpath/$dir/$subdir/${1%%.txt}.phy
./runProtTest -i $locpath/$dir/$subdir/$basename.phy-gb -o $locpath/$dir/$subdir/$basename.phy-gb.res -al
echo "=======================================================================<br />";
echo "./runProtTest -i $locpath/$dir/$subdir/$basename.phy-gb -o $locpath/$dir/$subdir/$basename.phy-gb.res
echo "=======================================================================<br />";
#
# recupération de la meilleur méthode pour la construction
# phylogénique
#
#best=$(grep "Best model" /home/WIP/21092011/parallele/${1%%.txt}.phy-gb.res|awk -F: '{print $2}')
best=$(grep "Best model" $locpath/$dir/$subdir/$basename.phy-gb.res|awk -F: '{print $2}')
echo $best
model=$(grep "Best model" $locpath/$dir/$subdir/$basename.phy-gb.res|awk -F: '{print $2}'|awk -F+ '{print $
addon1=$(grep "Best model" $locpath/$dir/$subdir/$basename.phy-gb.res|awk -F: '{print $2}'|awk -F+ '{print $
addon2=$(grep "Best model" $locpath/$dir/$subdir/$basename.phy-gb.res|awk -F: '{print $2}'|awk -F+ '{print $
addon3=$(grep "Best model" $locpath/$dir/$subdir/$basename.phy-gb.res|awk -F: '{print $2}'|awk -F+ '{print $
datatype=$(grep ". Data type :" $locpath/$dir/$subdir/$basename.phy-gb.res|awk -F: '{print $2}')
option1="";
option2="";
option3="";
if [ $addon3="F" ]||[ $addon3="G" ]||[ $addon3="I" ] ; then option3=" +$addon3 "; fi
if [ $addon1="F" ]||[ $addon1="G" ]||[ $addon1="I" ] ; then option1=" +$addon1 "; fi
if [ $addon2="F" ]||[ $addon2="G" ]||[ $addon2="I" ] ; then option2=" +$addon2 "; fi
# reconstruction de la ligne de commande
# on retourne dans le répertoire de travail
cd $locpath/$dir/$subdir/
option4=" nt";
if [ $datatype="dna" ] ; then option4=" aa"; fi
# option=" -m$model $option1 $option2 $option3 -b1000 0 s 1 bootstrap_number JC69 1 0 1 1 BIONJ n n "
# -d nt -m CPREV -b 10 -v e -c 4 -a e -s BEST +G +F +I -i bchp.phy-gb
option=" -d $option4 -m $model $option1 $option2 $option3 -b $bootstrap "
#
# -d aa : datatype nt = nucléotide , aa amino acids
# -m ; model
# -b : bootstrap ici -4 SH-like
# -v : proportion des sites invariables
# -c ; nombre de taux de substitution défaut =4
mpirun -np 5 phyml $option -i $basename.phy-gb
# /usr/bin/phyml $option -i $basename.phy-gb
#
# Cette ligne fonctionne
#
#/usr/bin/phyml -d aa -m RTREV +G +F -b -4 -v 0.0 -c 4 -a e -i seaview.QaBcT5.phy
#
# -d aa : datatype nt = nucléotide , aa amino acids
# -m ; model
# -b : bootstrap ici -4 SH-like
# -v : proportion des sites invariables
# -c ; nombre de taux de substitution défaut =4
# -a : gamma shape parametter e
# création de l'arbre
#
## unrooted
# version postcript
echo $basename.phy-gb_phyml_boot_trees.txt > tmp
cat /home/templates/unrootedps >> tmp
phylip drawtree < tmp > /dev/null
mv plotfile $basename-unrooted.ps
# $basename.phy.drawtree.ps.res
#
# conversion ps vers ps pour l'inclusion LaTeX
ps2eps $basename-unrooted.ps
# version povray
#echo $basename.phy-gb_phyml_boot_trees.txt > tmp
#cat /home/templates/unrootedpovray >> tmp
#phylip drawtree < tmp > /dev/null
#mv plotfile $basename-unrooted.pov
#
#$basename.phy.drawtree.povray.res
#
# Calcul de l'image povray
#povray +I $basename-unrooted.pov +W640 +H400
arbre avec valeur de boot . programme
newicktops -boot -psonly $basename.phy-gb_phyml_tree.txt
mv $basename.ps $basename-bootstrap_value.ps
ps2eps $basename-bootstrap_value.ps
#other tree type with newicks
# date
nw_support $basemame.phy-gb_phyml_tree.txt $basename.phy-gb_phyml_boot_trees.txt | nw_display -s -r -S -w700 -v 40 - > $basename-tree.svg
# transformation svg en ps
rsvg-convert -f ps $basename-tree.svg -o $basename-tree_from_svg.ps
#conversiont ps vers eps
ps2eps $basename-tree_from_svg.ps
#
# postscript to eps pour LaTeX
#
rm main.tex
mv *.tex ./$docpathbase/
mv *.eps ./$docpathbase/
createdoc $locpath $dir $subdir $docpathbase $basename
#
# Les jobs enfin sont transmit à hoedic dans le repertoire samba
#scp -r /tmp/$dir
root@hoedic.cgm.cnrs-gif.fr:/home/public/exchange/AlPhy/$basename
#ssh
root@hoedic.cgm.cnrs-gif.fr chown -R exchange.exhange /home/public/exchange/AlPhy/$basename
#ssh ne fonctionne pas entre phobos et hoedic ... reste donc samba
smbclient //hoedic/exchange/ -c "prompt; cd AlPhy;recurse; lcd /tmp ; mput $dir "
## mount -o username=$WIN_USER,password=$WIN_PASSWORD -t cifs //$WIN_PC_IP $DESTPATH