05线粒体流程1-组装
一. 3代 —— Nanopore/PacBio(Hifi数据)
1.0 使用延伸程序
ass=sample.fa && file=pass.fq* && nu=1000000 && minimap2 -t 20 -ax map-ont $ass $file > extend.sam && samtools view -F 4 extend.sam | perl -lane 'print unless($F[9] eq "*")' | perl -ane 'print if(/^@/);if(/NM:i:(\d+)/){$n=$1;$l=0;$l+=$1 while $F[5]=~ /(\d+)[M]/g;if($l > 5000){print}}'|sort -k 4 -n| tail -n $nu > tmp.sam && cat tmp.sam |cut -f 10 |perl -lane 'print ">",++$i;print $F[0]' > map_gene.fa && nucmer $ass map_gene.fa -p map_gene && show-coords map_gene.delta > map_gene.coords && mummerplot map_gene.delta & # 包含下面1.1和1.2
grep -A 1 ">201$" map*.fa > test.fa
perl /share/nas6/xul/program/mt2/assembly/src/extend.auto.pl -i1 test.fa -i2 map*.fa -polish -re
perl /share/nas6/xul/program/mt2/assembly/src/extend.auto.pl -i1 test.fa -i2 map_gene.fa -tail 1000000 -n 0
# -tail:显示的reads条数,默认300。-n为0时可以查看共线性(mummerplot _out.delta)
perl /share/nas6/xul/program/mt2/assembly/src/extend.pl -t test.fa -f _extend.map.fa -c _out.coords -i -id 10086
# 使用10086号reads进行延伸并替换test.fa文件
1.1 minimap2 —— 映射
0.PacBio(Hifi数据)需要用bedtools-bamtofastq转换格式
bamToFastq -i *.bam -fq unmapped.fastq # PacBio
1.
minimap2 -ax map-ont ref.fa 测序数据.fq.gz > aln.sam # Nanopore/ont
minimap2 -ax map-pb ref.fa unmapped.fastq > aln.sam # PacBio
2.使用igv查看一下覆盖深度
samtools view -h -F 4 aln.sam | samtools sort > 01_map.sort.bam && samtools index 01_map.sort.bam
igv 加载基因组和排序后的bam/sam
2.使用samtools统计覆盖深度
samtools depth -a 01_map.sort.bam > depth.txt
# perl /share/nas6/xul/program/chloroplast/assembly/draw_line_depth.pl depth.txt && convert test.svg depth.png
perl /share/nas1/yuj/program/chloroplast/assembly/draw_line_depth.pl depth.txt depth.svg && convert depth.svg depth.png
samtools depth 01_map.sort.bam |awk '{print "mt1",$2,$2,$3}' > sample.depth.txt
python3 /share/nas1/yuj/script/chloroplast/annotation/draw_line_depth_v2.py sample.depth.txt line_depth.png
1)使用minimap2将3代数据回比基因组
2)使用samtools提取比对到基因组上的数据
3)对sam文件进行排序
4)使用samtools统计覆盖情况
5)可视化覆盖度
1.2 samtools —— 筛选
samtools view -F 4 aln.sam | perl -lane 'print unless($F[9] eq "*")' | perl -ane 'print if(/^@/);if(/NM:i:(\d+)/){$n=$1;$l=0;$l+=$1 while $F[5]=~ /(\d+)[M]/g;if($l > 5000){print}}'|sort -k 4 -n> tmp.sam && cat tmp.sam |cut -f 10 |perl -lane 'print ">",++$i;print $F[0]' > 5000map_gene.fa
samtools view -F 4 aln.sam | perl -lane 'print unless($F[9] eq "*")' | perl -ane 'print if(/^@/);if(/NM:i:(\d+)/){$n=$1;$l=0;$l+=$1 while $F[5]=~ /(\d+)[M]/g;if($l > 5000 && $l < 20000){print}}' | sort -k 4 -n > tmp.sam && cat tmp.sam | cut -f 10 | perl -lane 'print ">",++$i;print $F[0]' > 5000_20000map_gene.fa
# if($l > 1000) 筛选大于1000bp / if($l > 5000) 筛选大于5000bp
# 生成 map_gene.fa
1.3 awk —— 查看筛选后的平均长度
# 平均长度
$ ir.py -i 5000map_gene.fa -l | awk 'BEGIN {n=0;count=0} {count=count+$1;n=n+1} END{print "count/n is ",count,n;print "adv is",count/n;}'
$ fl map_gene.fa | awk 'BEGIN {n=0;count=0} {count=count+$1;n=n+1} END{print "count/n is ",count,n;print "adv is",count/n;}'
# 最大长度
$ ir.py -i 5000map_gene.fa -l | awk 'BEGIN {max = 0} {if ($1+0 > max+0) max=$1} END {print "Max=", max,"bp"}'
$ fl map_gene.fa > len.txt && awk 'BEGIN {max = 0} {if ($1+0 > max+0) max=$1} END {print "Max=", max,"bp"}' len.txt
# 最小长度
$ ir.py -i 5000map_gene.fa -l | awk 'BEGIN {min = 1000000} {if ($1+0 < min+0) min=$1} END {print "Min=", min,"bp"}'
$ fl map_gene.fa > len.txt && awk 'BEGIN {min = 1000000} {if ($1+0 < min+0) min=$1} END {print "Min=", min,"bp"}' len.txt
1.4 canu —— 校正三代数据
nohup /share/nas6/zhangxq/biosoft/canu-master/Linux-amd64/bin/canu -correct -p correct -d correct genomeSize=16k useGrid=false -nanopore-raw map_gene.fa & # Nanopore/ont
nohup /share/nas6/zhangxq/biosoft/canu-master/Linux-amd64/bin/canu -correct -p correct -d correct genomeSize=16k useGrid=false -pacbio-raw map_gene.fa & # pacbio
# genomeSize=16k 基因组预估大小
# 生成 correct/correct.correctedReads.fasta.gz
1.5 gz -d [file] —— 解压缩
gunzip –c correct.correctedReads.fasta.gz > correct.correctedReads.fasta #保留源文件
gunzip correct.correctedReads.fasta.gz #不保留源文件
# 压缩命令 gzip [file]
# 解压文件 gunzip [file]/gzip -d [file]
# 压缩保留源文件 gzip –c filename > filename.gz
# 解压保留源文件 gunzip –c filename.gz > filename
二. 2代数据
2.0 示例
# 如3816从mmj3开始
cp_bowtie.align.pl -i filtered_spades_contigs.fsa -1 ../1_Trimmed_Reads/*P1.fq -2 ../1_Trimmed_Reads/*P2.fq -o bowtie
# 查看最开始的check文件夹
ir.py -i filtered_spades_contigs.fsa -o test.fa
check -1 bowtie/*1.fq -2 bowtie/*2.fq -k 125 -m 3 -g test.fa -o check &
# 再次查看
tie -i test.fa -d check/tmp/K125.dump -k 125 -tp 19100 -p K125 -o tie
nuc GQ903339.1.fa tie/*.fa && mum
# 改图改名
nuc GQ903339.1.fa tie/*.fa && mum
check -1 bowtie/*1.fq -2 bowtie/*2.fq -k 125 -m 3 -g tie/*.fa -o check2 &
# 查看2
vim check2/K125.coverage.txt
# 没有问题
# check2对应的序列为结果,改名
2.1 前期准备
数据位置
/share/nas1/seqloader/yelvti/GP-xxxx_yelvti/2.clean_data
# 先看污染比对结果!!!!有问题直接先反馈!!!!
1.污染比对
perl /share/nas6/zhouxy/functional_modules/pollution_nt_blast/pollution_nt_blast_pip_v3.pl -fqdir 路径/2.clean_data -od 输出目录
2.得到ass文件,改成拉丁名,下划线
python3 /share/nas1/yuj/script/chloroplast/get_ass_cfg.py -i 路径(邮件分发) #会自动补上2.clean_data
2.2 组装
数据库位置
/share/nas6/pub/pipline/genome-assembly-seq/mitochondrial-genome-seq/v2.0/assembly/dat/mtGenome_db_20201120/allmtseq_20201120.fa
## 组装流程
nohup perl /share/nas6/pub/pipline/genome-assembly-seq/mitochondrial-genome-seq/v2.0/assembly/mt.assembly.pip.pl -i ass.cfg &
# 样本多出错的话,去掉nohup 去掉&
## 手动运行
perl /share/nas6/pub/pipline/genome-assembly-seq/mitochondrial-genome-seq/v2.0/assembly/mtDNA_assembly.pl -1 1_Trimmed_Reads/Neuroctenus_yunnanensis_Hsiao.trimmed_P1.fq -2 1_Trimmed_Reads/Neuroctenus_yunnanensis_Hsiao.trimmed_P2.fq -p Neuroctenus_yunnanensis_Hsiao -o analysis/assembly/Neuroctenus_yunnanensis_Hsiao
## 依次和参考看一下起点
for i in ref_ass/fasta/*;do echo $i; nuc $i *.fsa -l 1 && awk 'NR==4 {print $3}' out.delta;done
2.3 手动修改
2.3.1 串行
1.bowtie
cp_bowtie.align.pl -i allseq.fa -1 ../1_Trimmed_Reads/*P1.fq -2 ../1_Trimmed_Reads/*P2.fq -o bowtie &
cp_bowtie.align.pl -i test.fa -1 ../1_Trimmed_Reads/*P1.fq -2 ../1_Trimmed_Reads/*P2.fq -o bowtie &
cp_bowtie.align.pl -i filtered_spades_contigs.fsa -1 ../1_Trimmed_Reads/*P1.fq -2 ../1_Trimmed_Reads/*P2.fq -o bowtie &
showline-
head -n 1000 map_pair_hits.1.fq > cut.1.fq && head -n 1000 map_pair_hits.2.fq > cut.2.fq
unicycler.py -1 cut.1.fq -2 cut.2.fq -o unicycler
2.check
check -1 bowtie/*1.fq -2 bowtie/*2.fq -k 125 -m 3 -g test.fa -o check &
check -1 bowtie/*1.fq -2 bowtie/*2.fq -k 125 -m 3 -g filtered_spades_contigs.fsa -o check &
check -1 bowtie/*1.fq -2 bowtie/*2.fq -k 125 -m 3 -g tie/K125.extend.fa -o check2 &
check -1 ../2_Bowtie_Mapping/*1.fq -2 ../2_Bowtie_Mapping/*2.fq -k 125 -m 3 -g test.fa -o check &
check -1 ../2_Bowtie_Mapping/*1.fq -2 ../2_Bowtie_Mapping/*2.fq -k 125 -m 3 -g filtered_spades_contigs.fsa -o check &
3.correct
correct -i1 check/K125.scaffold.fa -i2 check/tmp/K125.dump -s 125 -p K125 -o correct
4.tie
# 对原来的test.fa末尾tie
tie -i check/K125.scaffold.fa -d check/tmp/K125.dump -k 125 -tp 146000 -p K125 -o tie
tie -i test.fa -d check/tmp/K125.dump -k 125 -tp 15400 -p K125 -o tie
# result —— tie/K125.extend.fa
2.3.2 使用延伸程序
序列延伸:
长序列:perl /share/nas6/xul/program/mt2/assembly/src/extend.auto.pl -i1 target.fa(组装序列) -i2 all.fq(原始数据r1、r2各运行一次)
短序列:perl /share/nas6/xul/program/mt2/assembly/src/extend.auto.pl -i1 target.fa -i2 all.fq -sr # 优先运行这个
延伸后序列替换:
perl /share/nas6/xul/program/mt2/assembly/src/extend.pl -t target.fa(组装序列) -f _extend.map.fa -c _out.coords -id 999(auto程序展示结果中的匹配reads)
2.3.3 组装迭代100次
cd analysis/assembly/*/pseudo/*/
----组装
1)使用unicycler
mkdir -p bow1/uni/ # 创建bow1文件夹,里面有/uni/assembly.fasta
for i in {1..100} ;do echo $((i+1)) && cp_bowtie.align.pl -i bow$i/uni/assembly.fasta -1 1_Trimmed_Reads/*trimmed_P1.fq -2 1_Trimmed_Reads/*trimmed_P2.fq -o bow$((i+1)) && unicycler.py -1 bow$((i+1))/*1.fq -2 bow$((i+1))/*2.fq -o bow$((i+1))/uni --kmers 21,55,127 > log2 ;done & # 指定kmer
for i in {1..100} ;do echo $((i+1)) && cp_bowtie.align.pl -i bow$i/uni/assembly.fasta -1 1_Trimmed_Reads/*trimmed_P1.fq -2 1_Trimmed_Reads/*trimmed_P2.fq -o bow$((i+1)) && cd bow$((i+1)) && uni- > log2 && cd - ;done & # 不指定kmer
2)使用spades
mkdir -p bow1/spades/
for i in {1..100} ;do echo $((i+1)) && cp_bowtie.align.pl -i bow$i/spades/scaffolds.fasta -1 1_Trimmed_Reads/*trimmed_P1.fq -2 1_Trimmed_Reads/*trimmed_P2.fq -o bow$((i+1)) && cd bow$((i+1)) && spa- && cd - ;done > 100tmp.log &
----监控文件夹数量
sh /share/nas1/yuj/script/mitochondrion/assembly/monitor.sh &
monitor.sh脚本内容如下所示
使用以下的Shell脚本来实现每时每刻只保留最新的5个bow文件,并且监控间隔为5分钟:
#!/bin/bash
# 设置监控间隔(单位:秒)
interval=300
while true; do
# 获取当前目录下的所有bow文件夹,并按修改时间排序
folders=$(ls -td bow[0-9]*/)
# 计算当前文件夹数量
count=$(echo "$folders" | wc -l)
# 如果文件夹数量超过5个,删除多余的文件夹
if [ $count -gt 5 ]; then
delete_count=$((count - 5))
delete_folders=$(echo "$folders" | tail -n $delete_count)
rm -rf $delete_folders
echo "Deleted $delete_count folders."
fi
sleep $interval
done
将上述脚本保存为一个名为monitor.sh
的文件,并确保该文件具有可执行权限(可以使用chmod +x monitor.sh
命令赋予执行权限)。
这个脚本使用一个无限循环来持续监控当前目录下的bow文件夹。它首先获取所有bow文件夹并按修改时间进行排序。然后,它检查当前文件夹数量是否超过5个,如果超过,则删除最旧的文件夹,以保持最新的5个文件夹。
脚本中的interval
变量设置了监控间隔,单位是秒。在每次循环结束后,脚本会暂停指定的时间间隔,然后再次进行检查和删除操作。
你可以在终端中运行这个脚本,让它在后台持续监控并执行删除操作。执行命令./monitor.sh &
即可将脚本放入后台运行。如果需要停止脚本的执行,可以使用killall monitor.sh
命令来终止它。
请注意,这个脚本假设bow文件夹的命名是按照生成顺序进行编号的(例如:bow1、bow2、bow3...)。如果文件夹的命名方式不同,请根据实际情况修改脚本中的文件夹名称匹配规则。
2.3.4 通过节点和深度筛选gfa
cd 1_Trimmed_Reads/spades
blastn -query ref.fa -subject assembly_graph.fastg -outfmt 6 -out blast.log
获得node序号,写入id.txt
perl /share/nas6/xul/program/mt2/assembly/src/filter_node_from_fastg.pl -g assembly_graph.fastg -i id.txt -d 99(深度)
将pe150 reads连接成更长的reads
/share/nas6/zhouxy/biosoft/pandaseq/current/bin/pandaseq -f map_pair_hits.1.fq -r map_pair_hits.2.fq > merge.fa 2> log
2.3.5 批量运行
(1)全部修改起点
for i in *.fsa; do nuc ref.fa $i -l 1 && mt_move_pos.py -fa $i -s `awk 'NR==4 {print $3}' out.delta` ;done
---- 依次和参考看一下起点
for i in ref_ann/fasta/*;do echo $i; nuc $i M1_FULLMT.fsa -l 1 && awk 'NR==4 {print $3}' out.delta;done
(2)全部bowtie
for i in $( ls analysis/assembly) ;do echo $i; cd analysis/assembly/$i/pseudo/$i/4_Afin_Assembly && cp_bowtie.align.pl -i filtered_spades_contigs.fsa -1 ../1_Trimmed_Reads/*P1.fq -2 ../1_Trimmed_Reads/*P2.fq -o bowtie & done
## 把参考置于项目目录下
for i in $( ls analysis/assembly) ;do echo $i; cd analysis/assembly/$i/pseudo/$i/ && cp_bowtie.align.pl -i ../../../../../allass.fa -1 1_Trimmed_Reads/*P1.fq -2 1_Trimmed_Reads/*P2.fq -o bowtie-ass & done
for i in M{1..30};do cd */analysis/assembly/$i/pseudo/$i/ && cp_bowtie.align.pl -i ../../../../../../M12_FULLMT.fsa -1 1_Trimmed_Reads/*P1.fq -2 1_Trimmed_Reads/*P2.fq -o bowtie-ass && cd - & done
(3)全部check
for i in $( ls analysis/assembly) ;do echo $i; cd analysis/assembly/$i/finish && check -1 ../pseudo/$i/4_Afin_Assembly/bowtie/*1.fq -2 ../pseudo/$i/4_Afin_Assembly/bowtie/*2.fq -k 125 -m 3 -g *.fsa -o check;done
for i in {Mm_J3,Mm_L1,Mm_L2,Mm_L3,Mm_S1,Mm_S2,Mm_S3};do echo $i;cd analysis/assembly/$i/pseudo/$i/4_Afin_Assembly/ && check -1 bowtie/*1.fq -2 bowtie/*2.fq -k 125 -m 3 -g fil*.fsa -o check ;done
(4)批量spa/uni组装
---- 1_Trimmed_Reads
for i in `ls analysis/assembly/`;do echo $i;cd analysis/assembly/$i/pseudo/$i/1_Trimmed_Reads && spa- > log1 & done
---- 2_Bowtie_Mapping
for i in `ls analysis/assembly/`;do echo $i;cd analysis/assembly/$i/pseudo/$i/2_Bowtie_Mapping && uni- > log2 & done
for i in M{1..30};do cd */analysis/assembly/$i/pseudo/$i/2_Bowtie_Mapping && uni- > log2 & done
--- bowtie-ass
for i in `ls analysis/assembly/`;do echo $i;cd analysis/assembly/$i/pseudo/$i/bowtie-ass && spa- > log1 & done
for i in `ls analysis/assembly/`;do echo $i;cd analysis/assembly/$i/pseudo/$i/bowtie-ass && uni- > log2 & done
for i in M{1..30};do cd */analysis/assembly/$i/pseudo/$i/bowtie-ass && uni- > log2 & done
(5)批量复制gfa
GPXXX]$
--- 3_Spades_Assembly
mkdir pip-spa && for i in `ls analysis/assembly/`;do echo $i;cp analysis/assembly/$i/pseudo/$i/3_Spades_Assembly/spades_iter1/assembly_graph.fastg pip-spa/$i".fastg";done
---- 2_Bowtie_Mapping
mkdir pip-uni && for i in `ls analysis/assembly/`;do echo $i;cp analysis/assembly/$i/pseudo/$i/2_Bowtie_Mapping/uni/002* pip-uni/$i".gfa";done
mkdir pip-uni && for i in M{1..30};do echo $i;cp */analysis/assembly/$i/pseudo/$i/2_Bowtie_Mapping/uni/002* pip-uni/$i".gfa";done
---- bowtie-ass
mkdir spa-ass && for i in `ls analysis/assembly/`;do echo $i;cp analysis/assembly/$i/pseudo/$i/bowtie-ass/spa*/assembly_graph.fastg spa-ass/$i".gfa";done
mkdir uni-ass && for i in `ls analysis/assembly/`;do echo $i;cp analysis/assembly/$i/pseudo/$i/bowtie-ass/uni/002* uni-ass/$i".gfa";done
mkdir uni-ass && for i in M{1..30};do echo $i;cp */analysis/assembly/$i/pseudo/$i/bowtie-ass/uni/002* uni-ass/$i".gfa";done
(6)批量构建bow1文件夹 (上面接(4)批量spa/uni组装)
for i in `ls analysis/assembly/`;do echo $i;mkdir -p analysis/assembly/$i/pseudo/$i/bow1/uni/ ;cp analysis/assembly/$i/pseudo/$i/2_Bowtie_Mapping/uni/assembly.fasta analysis/assembly/$i/pseudo/$i/bow1/uni/; done
(7)把要循环的命令写进文件 单引号可以正确写入
for i in `ls analysis/assembly/`;do echo $i;echo 'for i in {1..100} ;do echo $((i+1)) && cp_bowtie.align.pl -i bow$i/uni/assembly.fasta -1 1_Trimmed_Reads/*.trimmed_P1.fq -2 1_Trimmed_Reads/*.trimmed_P2.fq -o bow$((i+1)) && unicycler.py -1 bow$((i+1))/*1.fq -2 bow$((i+1))/*2.fq -o bow$((i+1))/uni > log2 ;done &' > analysis/assembly/$i/pseudo/$i/uni100.sh;done
(8)进到目录里执行循环的命令
for i in `ls analysis/assembly/`;do echo $i;cd analysis/assembly/$i/pseudo/$i/ && sh uni100.sh && sh /share/nas1/yuj/script/mitochondrion/assembly/monitor.sh && cd - & done
(9)删除文件夹
for i in `ls analysis/assembly/`;do echo $i;echo 'for i in {1..100} ;do echo $i && rm bow$((i)) -r & done' > analysis/assembly/$i/pseudo/$i/rm100.sh;done
for i in `ls analysis/assembly/`;do echo $i;cd analysis/assembly/$i/pseudo/$i/ && sh rm100.sh && cd -;done
2.4 组装软件
2.4.1 Unicycler混合组装
# ----------------------------2+3----------------------------
unicycler.py -1 *1.fq -2 *2.fq -l *.fasta -o 2+3_correct_unicyc # 校正后
unicycler.py -1 *1.fq -2 *2.fq -l *.fa -o 2+3_unicyc # 前
# ----------------------------2----------------------------
unicycler.py -1 *1.fq -2 *2.fq -o uni
2.4.2 Spades混合组装
# ----------------------------2+3----------------------------
# illumina混合pacbio组装
spades.py -1 *1.fq -2 *2.fq --pacbio *.fa -t 52 -m 400 -o 2+3_hybrid_pacbio # 前
spades.py -1 *1.fq -2 *2.fq --pacbio *.fasta -t 52 -m 400 -o 2+3_correct_hybrid_pacbio # 后
# illumina混合nanopore组装
spades.py -1 *1.fq -2 *2.fq --nanopore *.fasta -t 52 -m 400 -o 2+3_correct_hybrid_nanopore # 后
# ----------------------------2----------------------------
spades.py --pe1-1 *1.fq --pe1-2 *2.fq --careful -o spades -k 35,45,55,75,97,107
spades.py --pe1-1 *1.fq.gz --pe1-2 *2.fq.gz -t 200 -k 97,107,117,127 -m 600 --careful --phred-offset 33 -o spades
2.4.3 Getorganelle
# 路径
/share/nas1/yuj/software/miniconda3/envs/getorganelle/bin/get_organelle_from_reads.py
# 其他参数
-R 15 -k 21,45,65,85,105,115 -s 参考
一.动物线粒体
1.常规使用
get_organelle_from_reads.py -1 *1.fq -2 *2.fq -o org -F animal_mt
# 更快的方法
get_organelle_from_reads.py -1 *1.fq -2 *2.fq -o org-fast -F animal_mt --fast
-w 0.68(可不设置)
2.使用已有fastg组装
get_organelle_from_reads.py -g assembly_graph.fastg -F animal_mt -o org
二.真菌线粒体
get_organelle_from_reads.py -1 *1.fq -2 *2.fq -R 10 -k 21,45,65,85,105 -F fungus_mt -o fungus_mt_out
2.4.4 Mitoz组装
python3 ~/MitoZ/version_2.4-alpha/release_MitoZ_v2.4-alpha/MitoZ.py all --genetic_code 5 --clade Arthropoda --outprefix ZZZ --thread_number 12 --fastq1 raw.1.fq.gz --fastq2 raw.2.fq.gz --fastq_read_length 150 --insert_size 250 --run_mode 2 --filter_taxa_method 1 --requiring_taxa 'Arthropoda'
python3 MitoZ.py assemble --genetic_code 5 --clade Arthropoda --outprefix test \
--thread_number 8 \
--fastq1 clean.1.fq.gz \
--fastq2 clean.2.fq.gz \
--fastq_read_length 150 \
--insert_size 250 \
--run_mode 2 \
--filter_taxa_method 1 \
--requiring_taxa 'Arthropoda'
# 参数
--genetic_code 为MitoZ设置正确的遗传code,节肢动物使用无脊椎动物的mt_code 5;哺乳动物使用脊椎动物的mt_code 2。
--clade 节肢动物使用'Arthropoda',脊椎动物使用'Chordata'。
--outprefix 输出文件的前缀
--thread_number 线程数
--fastq1,2 双端测序的原始下机数据
--fastq_read_length 一端测的碱基数目
--insert_size 插入片段的大小
--run_mode 2快速比对;3multi-Kmer方法进行比对,先传参数2,如果结果中蛋白编码基因缺失,再传参3运行
--filter_taxa_method 1对测序数据进行过滤,比如该物种为节肢动物,不是节肢动物的测序reads会被过滤掉;3不进行过滤
--requiring_taxa 确认物种属于哪个类群,来对数据进行过滤
2.4.5 串行运行
unicycler.py -1 *1.fq -2 *2.fq -o uni && get_organelle_from_reads.py -1 *1.fq -2 *2.fq -o org -F animal_mt && spades.py --pe1-1 *1.fq --pe1-2 *2.fq --careful -o spades
叶绿体
python3 /share/nas1/yuj/cp/get_ass_cfg.py -i ?????/2.clean_data #改物种名
nohup perl /share/nas6/pub/pipline/genome-assembly-seq/mitochondrial-genome-seq/v2.0/assembly/mt.assembly.pip.pl -i ass.cfg &
程序暂停 fg一直不好用 bg
cp_bowtie.align.pl -i test.fa -1 ../1_Trimmed_Reads/*P1.fq -2 ../1_Trimmed_Reads/*P2.fq -o bowtie &
----寻找组装用参考
cp 备份一下为test.fa,复制到ncbi找参考
perl /share/nas6/xul/program/chloroplast/bin/cp_get_genbank_form_ncbi_with_ACCESSION.pl 下载参考
一.重新延伸组装
1.先画图看看,大致了解
nuc xxxx.fasta test.fa
mummerplot out.delta
return test.fa
2.生成bowtie文件夹(可选,建议生成)
cp_bowtie.align.pl -i test.fa -1 ../1_Trimmed_Reads/xxxx.trimmed_P1.fq -2 ../1_Trimmed_Reads/xxxx.trimmed_P2.fq -o bowtie &
耗时比较久,大约10多分钟
return bowtie/
3.开始检查,生成kmer库, 用bowtie/(优先建议),../1_Trimmed_Reads/(建议),../2_Bowtie_Mapping/,均可
check -1 ../1_Trimmed_Reads/xxxx.trimmed_P1.fq -2 ../1_Trimmed_Reads/xxxx.trimmed_P2.fq -k 125 -m 3 -g test.fa -o check & #m为最小深度,选3 5 9 19等
return check/tmp/K125.dump
4.加载kmer库延伸
从ref截一段去kmer库找到kmer0TTTT
cp_extend_with_dump3.pl -i check/tmp/K125.dump -s TTTT可以加入手动选择参数 -c
vim _extend3.fa删除125个
return _extend3.fa
5.画图比对删改调整
nucmer .../fasta/xxxx.fasta _extend3.fa
mummerplot out.delta
修改至成环
return cir_extend.fa
6.调整起点,用ir查看结构
ir cir_extend.fa 采用lsc做开头
return cir_extend.fa
7.检查结果
check -1 ../1_Trimmed_Reads/xxxx.trimmed_P1.fq -2 ../1_Trimmed_Reads/xxxx.trimmed_P2.fq -k 125 -m 3 -g cir_extend.fa -o check2 &
check -d check/tmp/K125.dump -k 125 -m 3 -g cir_extend.fa -o check2 &第2步生成了kmer库,也可以直接用它
检查scaffold和覆盖度
return cir_extend.fa
8.结束,创建finish文件夹
xxxx_FULLCP.fsa
二.使用已有结果修补
1.以物种9-Phalaenopsis_stobartiana为例
cp Phalaenopsis_stobartiana_afin_iter2.fa test.fa
nucmer ../../../../Phalaenopsis_stobartiana/pseudo/ref/fasta/MW531729.1.fasta test.fa
mummerplot out.delta
对序列进行操作,切一个环出来
return test.fa
2.生成bowtie文件夹(可选,建议)
cp_bowtie.align.pl -i test.fa -1 ../1_Trimmed_Reads/*P1.fq -2 ../1_Trimmed_Reads/*P2.fq -o bowtie &
耗时比较久,大约10多分钟
return bowtie/
3.利用bowtie里的俩文件进行检查,或者利用../2_Bowtie_Mapping/里的来check(注意:../2_Bowtie_Mapping/这里面是18年以前的物种,用的话有可能漏掉reads)
check -1 bowtie/*1.fq -2 bowtie/*2.fq -k 125 -m 3 -g test.fa -o check &
找check里的scaffold,看看有没有N,本例中间末尾均有n
查看k125覆盖情况即kmer深度,若中间有N,则需要查看,末尾有,不看也行
大于70一般没问题,出现突降突升则有问题,寻找0-7的位置,/\t0\.[0-7]
覆盖深度低的地方全部替换为N,可以多换点,得到新的scaffold2
return check/K125.scaffold.fa
4.利用correct程序修补中间N
correct -i1 check/K125.scaffold.fa -i2 check/tmp/K125.dump -s 125 -p K125 -o correct
生成了correct,得到新补的gapfiller,中间没有gap了
找correct里的K125.iteration1.gapfilled.log查看
fastalength K125.gapfiller_finish.fa
return correct/K125.gapfiller_finish.fa
5.用tie延伸(针对末尾有N的情况)
tie -i check/K125.scaffold.fa -d check/tmp/K125.dump -k 125 -tp 146000 -p K125 -o tie
进到tie文件夹,查看下
打开log文件找warn的位置,有可能出现分支,物种9没有分支
查看extend.fa的长度,有可能过长
return tie/extend.fa
6.tie延伸较长的解决办法
方法一:进行序列的反向互补,反向互补后的序列再tie延伸
方法二:
1.打开NCBI,粘贴进去,点击等待结果
2.比对完,下载参考序列放ref文件夹里,顺便挪到pseudo下
画参考图,找到最后面的正确位置 145895
找到145896处,后面全去掉,包括145896的T
3.用tie延伸一下,选择140000开始,本例延伸后依旧过长
得到新的extend与kmer库check一下得到check3文件夹
然后用最新的scaffold,此处为最终结果
return check3/K125.scaffold.fa
7.创建finish文件夹,改名,注意格式
mkdir ../../../finish
cp check3/K125.scaffold.fa ../../../finish/Phalaenopsis_stobartiana_FULLMT.fsa