首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于系统发育树的For循环

用于系统发育树的For循环
EN

Stack Overflow用户
提问于 2017-02-18 04:40:41
回答 2查看 472关注 0票数 0

我正在使用一个名为RAxML的系统发育软件,并且我使用wnat为每个phylip文件构建单个树。对于包含三个phylip文件的目录,我执行了以下操作

代码语言:javascript
复制
 ##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是不允许的。

代码语言:javascript
复制
raxmlHPC: axml.c:5236: analyzeRunId: Assertion `0' failed.

运行ID中不允许出现错误字符/

有没有更好的方法呢?我尝试在https://rc.fas.harvard.edu/resources/documentation/submitting-large-numbers-of-jobs-to-odyssey/中使用此链接对非顺序命名文件使用作业数组,但无法实现它。

这是我在提交数组作业时尝试的方法:

代码语言:javascript
复制
 #!/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))

代码语言:javascript
复制
 # 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

我使用sbatch --array=0-10 raxml.sh提交,但它不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-18 08:07:12

我刚想通了一些事。基本上,我将重命名这些文件,以便它们是连续的,并且我可以只使用slurm。

代码语言:javascript
复制
 ls *.phy | cat -n | while read num file; do mv $file ${file/./.$num.}; done

所以这些文件将是

代码语言:javascript
复制
 Ortho1.1.phy Ortho6.2.Phy Ortho6.3.Phy

然后,您可以通过以下方式进行操作:

代码语言:javascript
复制
#!/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 

这将为您提供单独的树,您可以使用这些树来构建共识树。

票数 0
EN

Stack Overflow用户

发布于 2018-11-26 23:46:32

我认为您可能正在引导并获得一致的发展史,在这种情况下,在RAxML中有一个特殊的情况可以做到这一点。当我有时间的时候,我会把它贴在这里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42306994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档