个人记录,其实很多文件夹的设置并不是那么合理。
存放已有序列的文件夹
文件夹
软件位置(已安装和自己安的)
GitHub - Ecogenomics/GTDBTk: GTDB-Tk: a toolkit for assigning objective taxonomic classifications to bacterial and archaeal genomes.https://github.com/Ecogenomics/GTDBTk
for file in 2023tire_contig/*.fa; do
filename=$(basename "$file" .fa)
python soft/vamb/vamb-master/src/concatenate.py ./concatenate/$filename.fna.gz $file
done
28个样4分钟(25个线程)
for file in *.fa; do
filename=$(basename "$file" .fa)
python ~/soft/vamb/vamb-master/src/concatenate.py ./concatenate/$filename.fna.gz $file
done
-I 参数用于设置索引文件的最大内存占用量
for file in map/*.mmi; do
filename=$(basename "$file" .mmi) minimap2 -aI 64g -t 25 -N 5 -ax sr $file --split-prefix mmsplit qc/${filename}_1.fq.gz qc/${filename}_2.fq.gz | samtools view -F 3584 -b --threads 25 > bam/$filename.bam
done
一个样品9分钟左右,28个样品4个小时(25个线程)。.bam的文件很大,我的文件10G+
for file in bam/*.bam; do
filename=$(basename "$file" .bam)
samtools sort --threads 25 -o sort/${filename}.sorted.bam $file
done
一个样品4分钟左右,28个样品2小时(25个线程)。
for file in concatenate/*.fna.gz; do
filename=$(basename "$file" .fna.gz)
vamb -o C --outdir ${filename}-OUT --fasta $file --bamfiles sort/${filename}.sorted.bam --minfasta 200000
done
一个样品6分钟左右,一共3个小时(25个线程)。
下面这个mv最好改成cp就是了
mkdir -p bins # 创建名为bins的文件夹,如果创过了就不用了
for dir in S*-OUT/bins/S1; do
sample_id=$(echo "$dir" | cut -d- -f1-2) # 提取样本ID
for file in "$dir"/*; do
mv "$file" "bins/${sample_id}_$(basename "$file")" # 重命名文件并保存到bins文件夹
done
瞬间完成
解析cut -d- -f1-2(如果使用vamb时把结果文件夹直接名为样品名,就不用这么麻烦了)
-d选项指定了字段的分隔符,这里设置为-;-f选项指定要提取的字段编号或范围,这里设置为1-2,表示提取第一个和第二个字段。
例如,对于字符串S1-1-OUT/bins/S1,使用cut -d- -f1-2命令将返回S1-1,即将-作为分隔符,提取字符串中的前两个字段。
如果不放到文件夹,直接放当前目录用下面这个替换第五行(我用的是下面这个)
mv "$file" "${sample_id}_$(basename "$file")"
CheckM :用于评估从分离株、单细胞或宏基因组中获得的基因组质量的工具。 - 简书 (jianshu.com)
source activate metawrap-env
checkm lineage_wf ./bins ./checkmout -t 25 --pplacer_threads 8 --tab_table -f bin_checkm.tsv
28个样品耗时25分钟(25个线程)
手动从表格里筛选completeness大于50 and contamination小于10的(可以用excel),另存为表格bin_checkm_50_10.tsv。
mkdir -p bins_90_10 # 创建名为bins_90_10的文件夹
while read prefix _; do
find ./bins -name "${prefix}*" -exec cp {} bins_50_10/ \; # 复制符合前缀的文件到bins_90_10文件夹
done < bin_checkm_50_10.tsv
可以把挑出来的这些再checkm一次(但没必要)
checkm lineage_wf ./bins_50_10 ./checkmout -t 25 --pplacer_threads 8 --tab_table -f bin_checkm_50_10.tsv
十分钟左右(25个线程)
其实checkm里面就直接做了这个了,但是文件还得移来移去重命名,我就直接自己prodigal了
for file in bins/*.fna; do
filename=$(basename "$file" .fna) prodigal -i $file -f gff -p meta -o bin_cds/$filename.gff3 -a bin_cds/$filename.faa
done
28分钟
prodigal虽然没有在这一命令里输入线程值,但它会根据提交任务设置的CPU使用数自动分配并加速。
用blastp比对自己的库
source activate gtdbtk
gtdbtk classify_wf --pplacer_cpus 50 --cpus 50 --genome_dir bins_50_10 --full_tree -x fna --out_dir gtdbtk
tail -n+2 gtdbtk/gtdbtk.bac120.summary.tsv|cut -f 1-2|sed 's/;/\t/g'|sed '1 s/^/ID\tDomain\tPhylum\tClass\tOrder\tFamily\tGenus\tSpecies\n/' > gtdbtk/tax.txt
50线程,CPU,1h(感觉提高线程对增速不明显)
进入./gtdbtk/align
gunzip gtdbtk.bac120.user_msa.fasta.gz
这一步的可能报错如下(对于我的427个样品),要注意提交服务器节点的运行内存性能。
WARNING: pplacer requires ~320 GB of RAM to fully load the bacterial tree into memory.
gtdbtk infer --out_dir infer --cpus 50 --msa_file gtdbtk/align/gtdbtk.bac120.user_msa.fasta
使用生成的gtdbtk.unrooted.tree文件作图,另用一个excel导入进化树图的注释信息。
circle tree (chiplot.online)