2017-02-17 5 views
0

나는 phylip 파일마다 하나의 나무를 만들기 위해 RAxML이라는 계통 발생 소프트웨어를 사용하고 있습니다. 3 개의 phylip 파일이있는 디렉토리의 경우 다음을 수행했습니다.계통 발생 트리의 반복을 위해서

##files in directory 
Ortho1.phy Ortho6.Phy Ortho6.Phy 

for f in /home/Single_trees/trimmed_alignment/*.phy; do raxmlHPC -f a -x 100 -m PROTGAMMAAUTO -p 100 -s $f -N 100 -n $f.tree; done; 

하지만 $ symbol은 허용되지 않는다고 말하는 오류가 발생합니다.

raxmlHPC: axml.c:5236: analyzeRunId: Assertion `0' failed. 

오류 문자/실행 ID에서 허용되지

그것을 할 수있는 더 좋은 방법이 있나요? 여기에이 링크를 사용하여 비 순차적으로 명명 된 파일에 작업 배열을 사용하려 시도했지만 https://rc.fas.harvard.edu/resources/documentation/submitting-large-numbers-of-jobs-to-odyssey/을 구현할 수 없었습니다.

#!/bin/bash -l 
# 
# raxml.sbatch 
# 
#SBATCH -J consensus  # A single job name for the array 
#SBATCH -p high # best partition for single core small jobs 
#SBATCH -n 12    # one core 
#SBATCH -N 1    # on one node 
#SBATCH -t 100:00:00   # Running time of 2 hours 
#SBATCH --mem 18000  # Memory request of 4 GB 
#SBATCH -o raxml_%A_%a.out # Standard output 
#SBATCH -e raxml_%A_%a.err # Standard error 
module load raxml 

    for FILES in /home/aligned_fasta/.phy; do 
    echo ${FILES} 
    done; 

    # grab out filename from the array exported from our 'parent' shell 
    FILENAME=${FILES[$SLURM_ARRAY_TASK_ID]} 

    # make & move into new directory, and run! 
mkdir ${FILENAME}_out 
cd ${FILENAME}_out 
raxmlHPC -f a -x 100 -m PROTGAMMAAUTO -p 100 -s $FILENAME -N 100 -n $FILENAME.tree 

#Now, we grab all the appropriate files and submit them en-batch with an array: 
# grab the files, and export it so the 'child' sbatch jobs can access it 

수출 FILES = ($ (LS -1 .phy))

# get size of array 
NUMPHY=${#FILES[@]} 
# now subtract 1 as we have to use zero-based indexing (first cell is 0) 
ZBNUMPHY=$(($NUMPHY - 1)) 

# now submit to SLURM 
if [ $ZBNUMPHY -ge 0 ]; then 
sbatch --array=0-$ZBNUMPHY raxml.sbatch 
fi 

I 사용하여 제출 sbatch --array = 0 :

내가 배열 작업 제출을 위해 뭘하려 -10 raxml.sh하지만 작동하지 않았습니다.

답변

0

그냥 알아 냈습니다. 기본적으로 파일의 이름을 연속으로 바꿔서 slurm을 사용할 수 있습니다.

ls *.phy | cat -n | while read num file; do mv $file ${file/./.$num.}; done 

그래서 파일은 다음

Ortho1.1.phy Ortho6.2.Phy Ortho6.3.Phy 

당신이 그것을 다음과 같은 방법을 수행 할 수있을 것입니다 :

#!/bin/bash -l 
# SBATCH -J tree 

###### Standard out and Standard Error output files with the job number in the name. 
#SBATCH -o tre_%A.%a.out 
#SBATCH -e tre_%A.%a.err 

###### number of nodes 
###SBATCH --nodes=6 
###SBATCH --nodes=6 

###### number of processors 
#SBATCH -n 16 
###SBATCH --cpus-per-task=4 

###### Spread the tasks evenly among the nodes 
####BATCH --ntasks-per-node=8 

###### coupled with array 
####SBATCH --ntasks=1-179 

#SBATCH --time=300:00:00 

#SBATCH -p high 

#SBATCH --mem 24000 

###### Want the node exclusively 
### SBATCH --exclusive 

#SBATCH --array=1-3 

module load raxml 

for i in $SLURM_ARRAY_TASK_ID.phy 
do 
echo $i 
done 

### tree 
raxmlHPC-PTHREADS -f a -x 100 -m PROTGAMMAAUTO -p 100 -T 16 -s $i -N 100 -n $i.tree 

이 당신에게 당신이 합의 트리를 작성하는 데 사용할 수있는 별도의 나무를 줄 것이다 .