Commit 36041f96 authored by Eric Coissac's avatar Eric Coissac

Switch the go_cds script from tcsh to bash

parent 65aab588
#!/usr/bin/env tcsh -f
#!/bin/bash
#
# Annotate CDS
#
......@@ -6,90 +6,85 @@
#
# Annotate CDS
#
# go_cds.sh <FASTAFILE>
# go_cds.sh <FASTAFILE> [DBROOT]
#
# - <FASTAFILE> : The fasta file containing the genome to annotate
# - [DBROOT] : optionnal argument allowing to specify database directory
#
# Results are printed to the standard output
#
#========================================================================================
# usage: go_cds.sh fasta [db_root]
#
unsetenv ORG_SOURCED
setenv ORG_HOME `dirname $0`/../../..
source $ORG_HOME/scripts/csh_init.sh
# -- CAUTION -- Works as long than the script
# is not called through a symlink
THIS_DIR="$(dirname ${BASH_SOURCE[0]})"
source "${THIS_DIR}/../../../scripts/bash_init.sh"
NeedArg 1
needarg 1
set Fasta = $Argv[1]; Shift
Fasta=$1; shift
NeedFile $Fasta
needfile $Fasta
set Genome = `basename $Fasta:r`
# Genome names is set from the base
# name of the genome file without its extension
Genome=$(basename ${Fasta%.*})
set DbRoot = $CDS_DATA_DIR/chlorodb
# DbRoot is set to its default values except
# if the second argument precise another DbRoot
if ($#Argv > 0) then
set DbRoot = $Argv[1]; Shift
endif
DbRoot="$CDS_DATA_DIR/chlorodb"
NeedDir $DbRoot/core
NeedFile $DbRoot/core/Annot.lst
if (( $# > 0)) ; then
DbRoot="$1"; Shift
fi
NeedDir $DbRoot/models
needdir $DbRoot
needdir $DbRoot/core
needfile $DbRoot/core/Annot.lst
needdir $DbRoot/models
#
# run everything into temporary place
#
assignundef cdsdetection_pass1 yes
assignundef cdsdetection_pass2 yes
set temp = `hostname`.$$.Genome.tmp
if (! -d $temp) then
Notify "making directory $temp"
mkdir $temp
endif
#
# find the absolute path of the fasta genome file
#
echo $Fasta | grep '^/' > /dev/null
if ( $status == 1 ) then
set AbsGenoFile = `pwd`/$Fasta
set DirGenoFile = `dirname $AbsGenoFile`
set DirGenoFile = `(cd $DirGenoFile;pwd)`
set AbsGenoFile = $DirGenoFile/`basename $AbsGenoFile`
else
set AbsGenoFile = $Fasta
endif
temp=$(mktempdir $(hostname))
AbsGenoFile=$(getAbsolutePath $Fasta)
pushd $temp >& /dev/null
ln -s $AbsGenoFile genome.fasta
popd >& /dev/null
set Fasta = $temp/genome.fasta
Fasta="$temp/genome.fasta"
#
# pass1: run exonerate
#
foreach dir ("core" "shell" "dust")
if (-d $DbRoot/$dir) then
set fams = `ls $DbRoot/$dir/*.clean.fst`
Notify "running pass1:$dir exonerate of $Genome on $DbRoot"
foreach f ($fams)
tcsh -f $PROG_DIR/do_exonerate.csh $Fasta $f $DbRoot/models $temp
end
endif
end
if [[ "$cdsdetection_pass1" == "yes" ]] ; then
for dir in "core" "shell" "dust" ; do
if [[ -d $DbRoot/$dir ]] ; then
fams=$(ls $DbRoot/$dir/*.clean.fst)
loginfo "running pass1:$dir exonerate of $Genome on $DbRoot"
for f in $fams ; do
tcsh -f $PROG_DIR/do_exonerate.csh $Fasta $f $DbRoot/models $temp
done
fi
done
cp $temp/genome.cds.fasta $Genome.cds.fasta
fi
cp $temp/genome.cds.fasta $Genome.cds.fasta
#
# pass2: transsplicing
#
$PROG_DIR/do_rps12.sh $Fasta > $temp/$Genome.rps12.res
if [[ "$cdsdetection_pass2" == "yes" ]] ; then
$PROG_DIR/do_rps12.sh $Fasta $temp
fi
#
# pass3: prokov
......@@ -105,11 +100,11 @@ cat $temp/*.res
# cleanup everything
AssignUndef TMP_CLEANUP 1
assignundef TMP_CLEANUP 1
if ($TMP_CLEANUP != 0) then
Notify " cleanup $temp"
if (( $TMP_CLEANUP != 0 )) ; then
loginfo " cleanup $temp"
(\rm -r $temp) >& /dev/null
endif
fi
Exit 0
exit 0
......@@ -25,8 +25,16 @@ function getAbsolutePath {
# Manage temp directory
function pushTmpDir {
function mktempdir {
local TMP_DIR
TMP_DIR=$(mktemp -d -t "$1_proc_$$_XXXXXX")
logdebug "Creating temp directory $TMP_DIR"
echo $TMP_DIR
}
function pushTmpDir {
local TMP_DIR
TMP_DIR=$(mktempdir "$1")
pushd $TMP_DIR >& /dev/null
TMP_DIR_STACK="$TMP_DIR $TMP_DIR_STACK"
logdebug "Pushing temp directory $TMP_DIR"
......@@ -34,8 +42,9 @@ function pushTmpDir {
}
function popTmpDir {
TMP_DIR=$(echo $TMP_DIR_STACK | $AwkCmd '{print $1}')
TMP_DIR_STACK=$(echo $TMP_DIR_STACK | $AwkCmd '{$1="";print $0}')
local TMP_DIR
TMP_DIR=$($AwkCmd '{print $1}' <<< $TMP_DIR_STACK)
TMP_DIR_STACK=$($AwkCmd '{$1="";print $0}' <<< $TMP_DIR_STACK)
popd >& /dev/null
rm -rf $TMP_DIR >& /dev/null
logdebug "Poping temp directory $TMP_DIR"
......@@ -86,6 +95,42 @@ function logdebug {
fi
}
#
# Asserts that the number of arguments passed to the script
# is at least equal to the first argument of the function.
#
# needarg 3
#
# requires that the script is called at least with 3 arguments
#
__ORG_ANNOT_ARGS_SCRIPT_COUNT__=$#
function needarg {
if (( $__ORG_ANNOT_ARGS_SCRIPT_COUNT__ < $1 )) ; then
logerror "not enougth arguments provided"
exit 1
fi
}
function needfile {
if [[ ! -e $1 ]] ; then
logerror "File $1 doesn't exist"
exit 1
fi
}
function needdir {
if [[ ! -d $1 ]] ; then
logerror "Directory $1 doesn't exist"
exit 1
fi
}
function assignundef {
local value=$(eval echo \${$1+x})
if [[ -z "$value" ]] ; then
eval $1=$2
fi
}
# Sequence related functions
# Counts how many sequences are stored in a fasta file
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment