展开

基因预测、去冗余和定量

最后发布时间 : 2023-08-06 21:19:33 浏览量 :

基因预测、去冗余和定量

3.2.1 metaProdigal基因预测

    # 输入文件:拼装好的序列文件 result/megahit/final.contigs.fa
    # 输出文件:prodigal预测的基因序列 temp/prodigal/gene.fa
    # 基因文件大,可参考附录prodigal拆分基因文件,并行计算
    
    mkdir -p temp/prodigal
    # prodigal的meta模式预测基因,35s,>和2>&1记录分析过程至gene.log
    prodigal -i result/megahit/final.contigs.fa \
        -d temp/prodigal/gene.fa \
        -o temp/prodigal/gene.gff \
        -p meta -f gff > temp/prodigal/gene.log 2>&1 
    # 查看日志是否运行完成,有无错误
    tail temp/prodigal/gene.log
    # 统计基因数量
    seqkit stat temp/prodigal/gene.fa 
    # 统计完整基因数量,数据量大可只用完整基因部分
    grep -c 'partial=00' temp/prodigal/gene.fa 
    # 提取完整基因(完整片段获得的基因全为完整,如成环的细菌基因组)
    grep 'partial=00' temp/prodigal/gene.fa | cut -f1 -d ' '| sed 's/>//' > temp/prodigal/full_length.id
    seqkit grep -f temp/prodigal/full_length.id temp/prodigal/gene.fa > temp/prodigal/full_length.fa
    seqkit stat temp/prodigal/full_length.fa

3.2.2 基因聚类/去冗余cd-hit

    # 输入文件:prodigal预测的基因序列 temp/prodigal/gene.fa
    # 输出文件:去冗余后的基因和蛋白序列:result/NR/nucleotide.fa, result/NR/protein.fa
    
    mkdir -p result/NR
    # aS覆盖度,c相似度,G局部比对,g最优解,T多线程,M内存0不限制
    # 2万基因2m,2千万需要2000h,多线程可加速
    cd-hit-est -i temp/prodigal/gene.fa \
        -o result/NR/nucleotide.fa \
        -aS 0.9 -c 0.95 -G 0 -g 0 -T 0 -M 0
    # 统计非冗余基因数量,单次拼接结果数量下降不大,多批拼接冗余度高
    grep -c '>' result/NR/nucleotide.fa
    # 翻译核酸为对应蛋白序列, --trim去除结尾的*
    seqkit translate --trim result/NR/nucleotide.fa \
        > result/NR/protein.fa 
    # 两批数据去冗余使用cd-hit-est-2d加速,见附录

3.2.3 基因定量salmon

    # 输入文件:去冗余后的基因和蛋白序列:result/NR/nucleotide.fa
    # 输出文件:Salmon定量后的结果:result/salmon/gene.count, gene.TPM
    
    mkdir -p temp/salmon
    salmon -v # 1.4.0
    
    # 建索引, -t序列, -i 索引,10s
    salmon index \
      -t result/NR/nucleotide.fa \
      -p 9 \
      -i temp/salmon/index 
    
    # 定量,l文库类型自动选择,p线程,--meta宏基因组模式, 2个任务并行2个样
    # 注意parallel中待并行的命令必须是双引号,内部变量需要使用原始绝对路径 
    tail -n+2 result/metadata.txt|cut -f1|rush -j 2 \
      "salmon quant \
        -i temp/salmon/index -l A -p 3 --meta \
        -1 temp/qc/{1}_1.fastq \
        -2 temp/qc/{1}_2.fastq \
        -o temp/salmon/{1}.quant"
    
    # 合并
    mkdir -p result/salmon
    salmon quantmerge --quants temp/salmon/*.quant \
        -o result/salmon/gene.TPM
    salmon quantmerge --quants temp/salmon/*.quant \
        --column NumReads -o result/salmon/gene.count
    sed -i '1 s/.quant//g' result/salmon/gene.*
    
    # 预览结果表格
    head -n3 result/salmon/gene.*