细菌基因组genome二代测序数据分析

kraken2去除污染

复制代码
conda create -n kraken2
conda activate kraken2
conda install kraken2 -c bioconda
mkdir kraken2_output

kraken2 --db ../../kraken2_db/k2_pluspf_20250402/ --threads 8 --paired 250811_HS67EV0804_R1.fastq.gz 250811_HS67EV0804_R2.fastq.gz --use-names --report-zero-counts --report ./kraken2_output/sample.report --output ./kraken2_output/sample.kraken

#######使用bracken查看species级别占比
bracken-build -d ../../../kraken2_db/k2_pluspf_20250402/ -t 8

srun bracken -d ../../../kraken2_db/k2_pluspf_20250402/ -i sample.report -o sample.bracken -r 150 -l S   
less sample_bracken.report 
##############使用KrakenTools提取目标reads############
conda install KrakenTools -y -c bioconda

srun extract_kraken_reads.py -k sample.kraken -s ../250811_HS67EV0804_R1.fastq.gz -s2 ../250811_HS67EV0804_R2.fastq.gz -o Kpn_573_R1.fastq -o2 Kpn_573_R2.fastq -t 573 --include-children --fastq-output --report sample.report

sample_bracken.report : S(species)--573为taxid

复制代码
#####fastp#######
srun fastp \
  -w 12 \                                  # 使用12个线程并行加速
  -i ./raw_data/${sample}_1.fq.gz \        # 输入文件:R1
  -I ./raw_data/${sample}_2.fq.gz \        # 输入文件:R2
  -o ./clean_data/${sample}_1.fastp.fq.gz \ # 输出文件:清洗后的 R1
  -O ./clean_data/${sample}_2.fastp.fq.gz \ # 输出文件:清洗后的 R2
  -f 10 \                                  # 对 R1 每条 read,切除前10个碱基
  -F 10 \                                  # 对 R2 每条 read,切除前10个碱基
  -n 10 \                                  # 允许最多10个N,否则丢弃
  -q 20 \ 
  --dedup                                 # 低于Q20的碱基视为低质量
  --detect_adapter_for_pe \                # 自动检测并去除接头(推荐)
  -h ./clean_data/${sample}.fastp.html \   # 输出 HTML 报告
  -j ./clean_data/${sample}.fastp.json     # 输出 JSON 报告(方便统计/批处理)



######fastqc质控#############参数----cov-cutoff可用于过滤contig##
srun fastqc HS67_1.clean.fq.gz HS67_2.clean.fq.gz -o clean_fastqc_report

#########spades拼接#############
srun spades.py -1 A18GX092_1.clean.fq.gz -2 A18GX092_2.clean.fq.gz --isolate -o spades_output

#############quast评估拼接质量#################
srun quast -t 16 -o quast_output spades_output/scaffolds.fasta
##质量评估标准:contig数目小于1000 , N50大于10bp  最小contig>200bp   评估污染:核苷酸ani平均一致性95% fastani  肺克GC含量为54-55%

作业

#!/bin/bash

#SBATCH --job-name=spades_HS67 # 作业名称

#SBATCH --nodes=1 # 需要的节点数

#SBATCH --ntasks=1 # 总任务数

#SBATCH --cpus-per-task=20 # 每个任务的CPU核数

#SBATCH --mem=80G # 内存需求

#SBATCH --output=spades_%j.out # 标准输出日志

#SBATCH --error=spades_%j.err # 错误输出日志

运行SPAdes

spades.py -1 bac_HS67_1.clean.fq.gz -2 bac_HS67_2.clean.fq.gz --isolate -t 20 -o spades_out

概念解释

Kmer

k-mer 就是从 reads 中截取的长度为 k 的连续小片段。

例如 read 序列:ATGCGT,如果 k=3,就有 ATG、TGC、GCG、CGT 四个 3-mer。

组装器(如 SPAdes)用这些 k-mer 构建 de Bruijn 图,再拼接成 contigs。

k 值的大小 会直接影响组装的碎片化程度、错配率和连续性。

  1. 如果只用一个小 k(比如 21),装配可能非常连续,但错误也多;
  2. 如果只用一个大 k(比如 77),重复区能拆开,但低覆盖区会组装不出来。

SPAdes 默认的 -k 21,33,55,77 表示用不同长度的 k-mer 分阶段构建组装图:

小 k 保证敏感性,

大 k 提升连续性

N50

N50 = 一种衡量组装连续性的统计量

把所有 contig 从长到短排序;依次把它们的长度加起来,直到累计长度达到总组装长度的 50%;此时那个 contig 的长度,就是 N50。

举例:

假设组装结果有 5 条 contig,长度如下(单位:kb):

Contig1 = 200

Contig2 = 150

Contig3 = 80

Contig4 = 40

Contig5 = 30

总长度 = 500 kb

排序后累加:

Contig1 = 200 → 占 40%

Contig2 = 150 → 累计 350 → 占 70% ≥ 50%

所以 N50 = 150 kb。

解释:一半以上的基因组长度,来自于长度 ≥ 150 kb 的 contigs。

越大越好:N50 大说明组装越连续,contig 越长。

L50

达到总长度一半所需的 contig 数量

举例:

设 contig 长度(kb):200, 150, 80, 40, 30;总长 = 500 kb。

从大到小累加:

200(占 40%)→ 未到 50%

200+150=350(占 70%)→ 首次 ≥50%

此时累计用了 2 条 contig,所以 L50=2

越小越好

L50 越小越好,说明少数长 contig 就能覆盖一半基因组。

以下是一个细菌基因组拼装完成后的quast报告:

可以看到total length为5.56Mb,largest contig为0.459Mb,

复制代码
#############prokka注释############
prokka spades_output/scaffolds.fasta --outdir prokka_output  --prefix A18GX092   --kingdom Bacteria --locustag A18GX092   --compliant   --force

注释所得结果

tsv文件包含内容

txt文件内容

gff文件内容

开头

  • ##gff-version 3 → 标准 GFF3 文件头。

  • ##sequence-region → 定义每条 contig 的名称和长度(比如 A18GX092_1 长度 458,676 bp)

中间

GFF 文件标准列(9 列)解释:

  1. seqid:所在的 contig 名称(如 A18GX092_1)。
  2. source:注释来源,这里是 Prokka。
  3. type:特征类型(CDS, gene, rRNA, tRNA, misc_feature 等)。
  4. start:起始坐标。
  5. end:终止坐标。
  6. score:得分(一般用不到,常为 .)。
  7. strand:所在链,+ 或 -。
  8. phase:阅读框,0/1/2(只对 CDS 有意义)。

如果 CDS 起点不同,phase 的值不同:

CDS 从 ATG 开始 → phase = 0 (对齐完整 codon)

CDS 从 ATG 开始 → phase = 2 (要跳过 2 个碱基,才能对齐完整 codon)

CDS 从 ATG 开始 → phase = 1 (要跳过 1 个碱基,才能对齐完整 codon)

  1. attributes:附加信息,如基因 ID、功能描述、EC/COG 等。

结尾

原始 contigs 的碱基序列,与 .fna、.fsa 内容相同

相关推荐
m0_661316236 小时前
modbus_tcp和modbus_rtu对比&移植AT-socket,modbus_tcp&杂记
服务器·网络·tcp/ip
李游Leo6 小时前
LaTeX TeX Live 安装与 CTAN 国内镜像配置(Windows / macOS / Linux 全流程)
linux·windows·macos
IT成长日记7 小时前
【Linux基础】Linux系统管理:GPT分区实践详细操作指南
linux·运维·服务器·gpt·parted·磁盘分区·fdisk
羚羊角uou7 小时前
【Linux】匿名管道和进程池
linux·c++·算法
爱喝水的鱼丶7 小时前
SAP-ABAP: ABAP ASSIGN COMPONENT 语句详解:动态字段符号的利器作用用法示例详解
运维·开发语言·sap·abap·开发经验·动态字段符号
FLS1687 小时前
Kali搭建sqli-labs靶场
linux·sql·安全·网络安全
清寒敲代码7 小时前
k8s核心技术-Helm
运维·容器·kubernetes
quqi997 小时前
Enable FIPS in ubuntu (by quqi99)
linux·运维·ubuntu
人工智能训练师7 小时前
在Ubuntu中如何使用PM2来运行一个编译好的Vue项目
linux·运维·服务器·vue.js·ubuntu·容器