Protected: Review Data_Tam_2024_ABAYE_RS05070_on_DrtA (Response 1)
Enter your password to view comments.
Run nextflow bacass
conda deactivate
# Downlod k2_standard_08_GB_20251015.tar.gz from https://benlangmead.github.io/aws-indexes/k2#kraken2--bracken
# Download 20190108_kmerfinder_stable_dirs.tar.gz from https://zenodo.org/records/13447056; 'tar xzf 20190108_kmerfinder_stable_dirs.tar.gz' #The database does not work!
# Download the kmerfinder database: https://www.genomicepidemiology.org/services/ --> https://cge.food.dtu.dk/services/KmerFinder/ --> https://cge.food.dtu.dk/services/KmerFinder/etc/kmerfinder_db.tar.gz #The database works!
# DEBUG: --kmerfinderdb /mnt/nvme1n1p1/REFs/kmerfinder/bacteria/ not working!
nextflow run nf-core/bacass -r 2.6.0 -profile docker --help
# -- Short assembly --
#Maybe BUG is from '--skip_kmerfinder for -r 2.6.0, using db in 2.5.0'
nextflow run nf-core/bacass -r 2.5.0 -profile docker \
--input samplesheet.tsv \
--outdir bacass_out \
--assembly_type short \
--kraken2db /mnt/nvme1n1p1/REFs/k2_standard_08_GB_20251015.tar.gz \
--kmerfinderdb /mnt/nvme1n1p1/REFs/kmerfinder/bacteria/ \
-resume \
-work-dir bacass_out/work
Verify if the genome is pure
# 1. Go up one level to the main 'bacass_out' directory
cd ..
# 2. Create directories for CheckM inputs and outputs
mkdir -p checkm_input checkm_output
# 3. Copy all .fna files into the 'checkm_input' folder
# (CheckM cannot search subdirectories, so they must be in one folder)
find ./Prokka -name "*.fna" -exec cp {} checkm_input/ \;
# 4. Run CheckM on all 4 assemblies
(checkm_env2) checkm lineage_wf -x fna checkm_input checkm_output
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Bin Id Marker lineage # genomes # markers # marker sets 0 1 2 3 4 5+ Completeness Contamination Strain heterogeneity
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
RKP53 root (UID1) 5656 56 24 0 0 55 1 0 0 100.00 104.17 82.76
RKP5 c__Gammaproteobacteria (UID4445) 228 583 244 0 582 1 0 0 0 100.00 0.14 0.00
RKP43 root (UID1) 5656 56 24 0 0 55 1 0 0 100.00 104.17 0.00
RKP42 k__Bacteria (UID203) 5449 104 58 0 2 101 1 0 0 100.00 99.84 0.00
RKP37 k__Bacteria (UID203) 5449 104 58 0 2 101 1 0 0 100.00 99.84 0.00
RKP33 k__Bacteria (UID203) 5449 104 58 0 2 100 2 0 0 100.00 101.57 0.00
RKP31 root (UID1) 5656 56 24 0 0 53 3 0 0 100.00 104.92 79.03
RKP1 root (UID1) 5656 56 24 0 0 56 0 0 0 100.00 100.00 0.00
RKP47 g__Burkholderia (UID4006) 64 769 248 1 768 0 0 0 0 99.87 0.00 0.00
RKP38 g__Staphylococcus (UID294) 60 773 178 1 772 0 0 0 0 99.81 0.00 0.00
RKP30 g__Staphylococcus (UID294) 60 773 178 1 758 14 0 0 0 99.81 2.61 7.14
RKP54 g__Staphylococcus (UID294) 60 773 178 2 771 0 0 0 0 99.67 0.00 0.00
RKP25 g__Staphylococcus (UID294) 60 773 178 2 770 1 0 0 0 99.67 0.28 0.00
RKP24 g__Staphylococcus (UID294) 60 773 178 2 770 1 0 0 0 99.67 0.28 0.00
RKP19 g__Staphylococcus (UID294) 60 773 178 2 771 0 0 0 0 99.67 0.00 0.00
RKP18 g__Staphylococcus (UID294) 60 773 178 2 771 0 0 0 0 99.67 0.00 0.00
RKP17 g__Staphylococcus (UID294) 60 773 178 2 771 0 0 0 0 99.67 0.00 0.00
RKP26 o__Lactobacillales (UID544) 293 475 267 1 474 0 0 0 0 99.63 0.00 0.00
RKP15 o__Lactobacillales (UID544) 293 475 267 1 472 2 0 0 0 99.63 0.56 0.00
RKP7 g__Staphylococcus (UID298) 56 805 176 2 803 0 0 0 0 99.62 0.00 0.00
RKP56 g__Staphylococcus (UID298) 56 805 176 2 803 0 0 0 0 99.62 0.00 0.00
RKP50 g__Staphylococcus (UID298) 56 805 176 2 592 211 0 0 0 99.62 25.90 24.64
RKP49 g__Staphylococcus (UID298) 56 805 176 2 803 0 0 0 0 99.62 0.00 0.00
RKP45 g__Staphylococcus (UID298) 56 805 176 2 803 0 0 0 0 99.62 0.00 0.00
RKP40 g__Staphylococcus (UID298) 56 805 176 2 803 0 0 0 0 99.62 0.00 0.00
RKP39 g__Staphylococcus (UID298) 56 805 176 2 803 0 0 0 0 99.62 0.00 0.00
RKP3 g__Staphylococcus (UID298) 56 805 176 2 803 0 0 0 0 99.62 0.00 0.00
RKP29 g__Staphylococcus (UID298) 56 805 176 2 803 0 0 0 0 99.62 0.00 0.00
RKP22 g__Staphylococcus (UID298) 56 805 176 2 803 0 0 0 0 99.62 0.00 0.00
RKP21 g__Staphylococcus (UID298) 56 805 176 2 803 0 0 0 0 99.62 0.00 0.00
RKP13 g__Staphylococcus (UID298) 56 805 176 2 803 0 0 0 0 99.62 0.00 0.00
RKP12 g__Staphylococcus (UID298) 56 805 176 2 803 0 0 0 0 99.62 0.00 0.00
RKP11 g__Staphylococcus (UID298) 56 805 176 2 803 0 0 0 0 99.62 0.00 0.00
RKP10 g__Staphylococcus (UID298) 56 805 176 2 803 0 0 0 0 99.62 0.00 0.00
RKP36 g__Staphylococcus (UID298) 56 805 176 3 766 36 0 0 0 99.61 3.41 30.56
RKP35 g__Staphylococcus (UID301) 45 940 178 4 935 1 0 0 0 99.51 0.08 0.00
RKP34 g__Staphylococcus (UID301) 45 940 178 4 935 1 0 0 0 99.51 0.08 0.00
RKP6 g__Staphylococcus (UID298) 56 805 176 3 797 4 1 0 0 99.51 1.79 57.14
RKP4 g__Staphylococcus (UID298) 56 805 176 3 800 2 0 0 0 99.51 0.17 100.00
RKP9 g__Staphylococcus (UID298) 56 805 176 3 802 0 0 0 0 99.48 0.00 0.00
RKP8 g__Staphylococcus (UID298) 56 805 176 3 802 0 0 0 0 99.48 0.00 0.00
RKP41 c__Bacilli (UID285) 586 325 181 1 323 1 0 0 0 99.45 0.55 0.00
RKP2 g__Staphylococcus (UID301) 45 940 178 5 933 2 0 0 0 99.40 0.10 0.00
RKP48 g__Staphylococcus (UID298) 56 805 176 5 798 2 0 0 0 99.38 1.14 50.00
RKP46 g__Staphylococcus (UID298) 56 805 176 5 798 2 0 0 0 99.38 1.14 50.00
RKP16 g__Staphylococcus (UID298) 56 805 176 5 798 2 0 0 0 99.38 0.59 0.00
RKP14 g__Staphylococcus (UID298) 56 805 176 5 799 1 0 0 0 99.38 0.57 0.00
RKP55 g__Staphylococcus (UID298) 56 805 176 6 798 1 0 0 0 99.33 0.57 0.00
RKP52 g__Staphylococcus (UID298) 56 805 176 6 798 1 0 0 0 99.33 0.57 0.00
RKP51 g__Staphylococcus (UID298) 56 805 176 6 798 1 0 0 0 99.33 0.57 0.00
RKP32 g__Staphylococcus (UID294) 60 773 178 2 771 0 0 0 0 99.25 0.00 0.00
RKP28 f__Micrococcaceae (UID1623) 39 457 218 6 450 1 0 0 0 98.70 0.23 0.00
RKP23 k__Bacteria (UID203) 5449 104 58 1 41 62 0 0 0 98.28 37.93 85.48
RKP44 g__Staphylococcus (UID298) 56 805 176 15 759 29 2 0 0 97.34 5.16 37.14
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
mlst
(bacto) mlst *.fna > mlst
Species Identification: 快速筛查用 Mash → 精确分类用 GTDB-Tk → 种级验证用 FastANI,三者结合可最大限度提高物种鉴定的准确性和可解释性。
# 1. 创建环境(推荐 mamba)
mamba create -n gtdbtk -c conda-forge -c bioconda gtdbtk
mamba activate gtdbtk
# 2. 下载数据库(仅需首次,约 60GB)
gtdbtk download --data_dir ./gtdb_data --release 220
wget https://data.gtdb.aau.ecogenomic.org/releases/release232/232.0/auxillary_files/gtdbtk_package/full_package/gtdbtk_r232_data.tar.g
mamba env config vars set GTDBTK_DATA_PATH="/mnt/nvme4n1p1/gtdb_data/release232"
# 先退出当前环境,再重新激活
mamba deactivate
mamba activate gtdbtk
# 验证环境变量是否加载成功
echo $GTDBTK_DATA_PATH
# 应输出:/mnt/nvme4n1p1/gtdb_data/release232
# 3. 运行分类(你提供的命令 + 实用参数)
gtdbtk classify_wf \
--genome_dir ./checkm_input \
--out_dir gtdb_out \
--cpus 64 \
--extension .fna \
--prefix mygenome
# 4. 查看结果
cat gtdb_out/classify/mygenome.bac120.summary.tsv # 细菌结果
根据 Excel 中的 Contamination (%)、Strain Heterogeneity (%) 和 Interpretation 列,请将 .fna 文件分为两类:
✅ 保留(高质量,污染率 < 1%,单一菌株):
S. haemolyticus (16个): RKP3, RKP7, RKP8, RKP9, RKP10, RKP11, RKP12, RKP13, RKP21, RKP22, RKP29, RKP39, RKP40, RKP45, RKP49, RKP56
S. epidermidis (8个): RKP17, RKP18, RKP19, RKP24, RKP25, RKP32, RKP38, RKP54
S. hominis (5个): RKP14, RKP16, RKP51, RKP52, RKP55
(其他高质量非目标菌可单独归档备用,如 RKP2, RKP15, RKP26, RKP47)
❌ 剔除(嵌合体/多菌株混合,会破坏分析):
Chimera (嵌合体): RKP1, RKP23, RKP31, RKP33, RKP37, RKP42, RKP43, RKP50, RKP53
Polystrain / Closely related CoNS (高异质性或近缘种混合): RKP4, RKP6, RKP30, RKP36, RKP44, RKP46, RKP48
完整分析主脚本 (Master Script) run 所有步骤(数据分类、Snippy 核心基因组提取、IQ-TREE 建树、Abricate 耐药分析、矩阵合并)完美整合。它特别优化了多核并行处理(使用 GNU parallel),能将原本需要数小时的计算缩短到几分钟。 请确保您当前处于正确的 conda 环境中(例如 conda activate bengal3_ac3),并且已安装 snippy, iqtree, abricate, parallel。
bash run_complete_analysis.sh # 获得性基因用 CARD/ResFinder/Abricate,而 SNP/点突变介导的耐药必须用 PointFinder、AMRFinderPlus 或基于 VCF 的精准变异分析。
#Note that CARD 和 ResFinder 是“字典”(数据库),而 Abricate 是“查字典的工具”(软件)
标准工作流程如下:
* 输入:你组装好的细菌基因组文件(例如 RKP8.fna)。
* 工具:你运行 abricate 命令。
* 数据源:你告诉 Abricate 使用哪个数据库(例如 --db card 或 --db resfinder)。
* 底层引擎:Abricate 会在后台自动调用 BLAST、Diamond 或 Minimap2,将你的序列与数据库中的序列进行局部比对。
* 输出:Abricate 生成一个 .tsv 表格,告诉你:“在 RKP8 中,我找到了 CARD 数据库里的 mecA 基因,覆盖度 100%,相似度 99.5%”。
Abricate 耐药分析 has limitation since it only detects “Acquired Resistance Genes”, rather not “SNP-Mediated Resistance”.
For the detection of antimicrobial resistance, we employed a dual-strategy to ensure maximum accuracy, acknowledging that resistance can be mediated by both acquired genes and point mutations (SNPs), the latter of which can occur on both chromosomes and plasmids.
1. Acquired Resistance Genes: Screened using Abricate against the CARD database, which is robust for detecting complete gene acquisitions (e.g., mecA, aminoglycoside modifying enzymes).
2. SNP-Mediated Resistance: Since alignment-based tools like Abricate are prone to false negatives/positives when detecting single-nucleotide variants, we relied on NCBI AMRFinderPlus (with the point mutation database enabled) / our high-resolution core-genome SNP calling (Snippy). This allowed us to specifically identify non-synonymous mutations in key target genes (e.g., gyrA, grlA, rpoB), accurately distinguishing between neutral synonymous mutations and true resistance-conferring SNPs, regardless of their chromosomal or plasmid location.
--> Solution: NCBI AMRFinderPlus (目前最推荐的综合金标准) for both
定位:NCBI 官方开发的耐药性分析工具,正在迅速成为行业标准。
原理:它不仅包含一个庞大的获得性基因数据库,还内置了一个极其严谨的 Point Mutation (点突变) 数据库。它通过将您的基因组翻译成蛋白质序列,然后与参考蛋白进行比对,专门寻找特定的“非同义突变 (Non-synonymous mutations)”(即真正改变氨基酸的突变)。
优势:准确率极高,能有效区分“同义突变(不改变耐药性)”和“非同义突变(改变耐药性)”,并且明确标注该突变是位于染色体还是质粒/可移动遗传元件上。
# 确保您在正确的 conda 环境中
mamba activate bengal3_ac3
# 安装 ncbi-amrfinderplus
mamba install -c bioconda ncbi-amrfinderplus -y
# 创建一个专门存放 AMRFinder 数据库的目录
mkdir -p /mnt/nvme3n1p1/amrfinder_db
# 下载并更新数据库 (这可能需要几分钟,取决于网络)
amrfinder_update --database /mnt/nvme3n1p1/amrfinder_db
amrfinder --plus --nucleotide ./amr_analysis/RKP8.fna --organism Staphylococcus --database /mnt/nvme3n1p1/amrfinder_db --output RKP8_amrfinder.txt
参数解释:
--plus: 启用点突变 (point mutation) 数据库,专门检测 SNP 介导的耐药。
--organism Staphylococcus: 告诉软件这是葡萄球菌,它会针对性地输出葡萄球菌特有的耐药突变(如 gyrA, grlA)。
步骤 1:从 AMRFinderPlus 结果中提取点突变 (Point Mutations)
python extract_amrfinder_snps.py
步骤 2:如果 AMRFinder 未检出,直接从 Snippy VCF 中提取 (终极金标准)
python extract_snippy_target_snps.py
* (bengal3_ac3) jhuang@WS-2290C:/mnt/md1/DATA/Data_Holger_neonate/bacass_out/amr_analysis$ python extract_amrfinder_snps.py
--> ⚠️ AMRFinder 未检测到任何标记为 protein_variant 的突变。我们将转向 Snippy VCF 分析。
* (bengal3_ac3) jhuang@WS-2290C:/mnt/md1/DATA/Data_Holger_neonate/bacass_out/amr_analysis$ python extract_snippy_target_snps.py
--> ⚠️ 未在 Snippy VCF 结果中检测到目标耐药基因 (gyrA, grlA, rpoB 等) 的突变。这表明您的 CoNS 分离株在这些经典靶点上没有发生已知的耐药突变。
#-->
🔍 结果解读:这意味着什么?
* 排除了经典靶点突变:您的 CoNS 分离株在 gyrA、grlA (parC)、rpoB、fusA 等经典耐药靶基因上没有发生非同义突变。
* 耐药机制的明确指向:这意味着,如果您的分离株表现出对氟喹诺酮类(如环丙沙星)或利福平的耐药性,那不是由这些经典的染色体 SNP 突变引起的。
* 获得性基因是主导:结合您之前运行的 CARD/Abricate 结果,这批 NICU 分离株的耐药表型几乎可以肯定是由获得性耐药基因(如 mecA 介导的甲氧西林耐药,以及氨基糖苷类/大环内酯类修饰酶)驱动的。
📊 总结与下一步
* 运行上述两个 Python 脚本。它们会直接利用您已经生成的高质量数据,绕过 Abricate 数据库缺失的障碍。
* 如果 Snippy_Target_Gene_Mutations.csv 生成了数据,您就找到了“吸烟枪”(Smoking Gun):您可以明确告诉 Holger,哪些样本在 gyrA 或 grlA 上发生了具体的氨基酸替换。
* 将这些 SNP 突变信息与您的 MLST 结果 和 获得性基因 (CARD) 矩阵 一起上传到 Microreact,您将得到一张完美解答 Holger 两个问题的终极可视化图表。
Summarize the results
* 高分辨率种内进化树 (回答“克隆结构”):
phylogeny_analysis/S_haemolyticus/core_haemolyticus.aln.treefile
phylogeny_analysis/S_epidermidis/core_epidermidis.aln.treefile
phylogeny_analysis/S_hominis/core_hominis.aln.treefile
* MLST 序列分型结果:您之前运行的 mlst 结果(包含每个样本的 ST 型别)。
mlst RKP*.fna > mlst.txt
* 获得性耐药基因矩阵 (回答“耐药遗传决定因素”):
amr_analysis/AMR_presence_absence_matrix.csv (包含 mecA, erm 等基因的 1/0 分布)。
* SNP 靶点阴性证明:已通过 AMRFinderPlus 和 Snippy VCF 双重验证,无经典靶点突变。
上传到 Microreact 的步骤:
1. 打开 Microreact,点击 "Start" -> "Upload data"。
2. Tree: 上传您对应的 .treefile (例如 core_haemolyticus.aln.treefile)。
3. Data: 上传您刚刚准备好的 metadata_for_microreact.csv。
4. 调整视图:在右侧面板中,将 ST 设置为饼图或颜色标签,将 mecA 等耐药基因设置为树旁边的彩色方块矩阵。
您将看到的“ Smoking Gun ”(铁证):
如果在树上,几个样本(如 RKP3, RKP8, RKP9)紧密聚集成一个分支(分支长度极短,Bootstrap > 90),并且它们在 Metadata 中显示完全相同的 ST 和完全相同的耐药基因组合(如都有 mecA),您就可以确凿地得出结论:这是一个在 NICU 内克隆传播的耐药菌株。
🎯 下一步:上传到 Microreact
现在您手中已经有了回答 Holger 两个问题的所有核心拼图:
进化树文件 (.treefile):展示克隆结构 (Clonal structure)。
Metadata 文件 (metadata_for_microreact.csv):展示物种、ST 和核心耐药基因。
操作指南:
打开 Microreact.org
,点击 "Start" -> "Upload data"。
Tree: 上传您的 .treefile (例如 core_haemolyticus.aln.treefile)。
Data: 上传刚刚生成的 metadata_for_microreact.csv。
可视化设置 (关键):
* 将 Species 设置为节点颜色或形状。
* 将 ST 设置为节点旁边的文本标签。
* 将 mecA, aac_aph, ermC 等设置为 Heatmap (热图) 或彩色矩阵,附着在树的右侧。
----> TODO_AFTERNOON: draw a plotTreeHeatmap for the three species, report Holger results using the following text!
🔍 寻找 "Smoking Gun" (铁证):
当您在 Microreact 中观察时,如果您看到几个分支长度极短(紧密聚类)的节点,它们不仅具有完全相同的 ST(例如都是 ST 3),而且右侧的耐药基因矩阵也完全一致(例如都带有 mecA=1 和 aac_aph=1),您就可以在报告中自信地向 Holger 宣布:“基因组系统发育、MLST 分型和耐药基因谱的高度一致性,提供了该耐药克隆株在 NICU 内发生克隆传播的分子流行病学铁证。”
Generate the bestTree
S. haemolyticus (16个): RKP3, RKP7, RKP8, RKP9, RKP10, RKP11, RKP12, RKP13, RKP21, RKP22, RKP29, RKP39, RKP40, RKP45, RKP49, RKP56
S. epidermidis (8个): RKP17, RKP18, RKP19, RKP24, RKP25, RKP32, RKP38, RKP54
S. hominis (5个): RKP14, RKP16, RKP51, RKP52, RKP55
(bengal3_ac3) roary -f roary_out_haemolyticus -e --mafft -p 100 Prokka/RKP3/RKP3.gff Prokka/RKP7/RKP7.gff Prokka/RKP8/RKP8.gff Prokka/RKP9/RKP9.gff Prokka/RKP10/RKP10.gff Prokka/RKP11/RKP11.gff Prokka/RKP12/RKP12.gff Prokka/RKP13/RKP13.gff Prokka/RKP21/RKP21.gff Prokka/RKP22/RKP22.gff Prokka/RKP29/RKP29.gff Prokka/RKP39/RKP39.gff Prokka/RKP40/RKP40.gff Prokka/RKP45/RKP45.gff Prokka/RKP49/RKP49.gff Prokka/RKP56/RKP56.gff
#-i 95 -cd 99
mv
(bengal3_ac3) roary -f roary_out_epidermidis -e --mafft -p 100 Prokka/RKP17/RKP17.gff Prokka/RKP18/RKP18.gff Prokka/RKP19/RKP19.gff Prokka/RKP24/RKP24.gff Prokka/RKP25/RKP25.gff Prokka/RKP32/RKP32.gff Prokka/RKP38/RKP38.gff Prokka/RKP54/RKP54.gff
(bengal3_ac3) roary -f roary_out_hominis -e --mafft -p 100 Prokka/RKP14/RKP14.gff Prokka/RKP16/RKP16.gff Prokka/RKP51/RKP51.gff Prokka/RKP52/RKP52.gff Prokka/RKP55/RKP55.gff
# S. haemolyticus
raxml-ng --all \
--msa roary_out_haemolyticus/core_gene_alignment.aln \
--model GTR+G \
--bs-trees 1000 \
--threads 60 \
--prefix haemolyticus_core_gene_tree_1000
# S. epidermidis
raxml-ng --all \
--msa roary_out_epidermidis/core_gene_alignment.aln \
--model GTR+G \
--bs-trees 1000 \
--threads 40 \
--prefix epidermidis_core_gene_tree_1000
# S. hominis
raxml-ng --all \
--msa roary_out_hominis/core_gene_alignment.aln \
--model GTR+G \
--bs-trees 1000 \
--threads 40 \
--prefix hominis_core_gene_tree_1000
Report
print(">>> [2/4] 正在构建基因名称缩写映射字典...")
# 将所有 62 个冗长的基因名称映射为专业缩写
gene_mapping = {
# Aminoglycosides
"AAC(6')-Ie-APH(2'')-Ia_bifunctional_protein": "aac_aph",
"ANT(4')-Ia": "ant_4",
"APH(3')-IIIa": "aph_3",
# Beta-lactams
"mecA": "mecA", "mecI": "mecI", "mecR1": "mecR1",
"PC1_beta-lactamase_(blaZ)": "blaZ", "PC1": "PC1",
"OXA-1043": "OXA", "PEN-B4": "PEN_B4",
# Macrolides/Lincosamides/Streptogramins (MLS)
"ErmB": "ermB", "ErmC": "ermC", "Erm(44)v": "erm_44v",
"msrA": "msrA", "mphC": "mphC", "lsaA": "lsaA", "vgaALC": "vgaA",
# Tetracyclines
"tet(K)": "tetK", "tet(L)": "tetL", "tet(M)": "tetM",
"tet(38)": "tet_38", "tet(64)": "tet_64",
# Fluoroquinolones / Efflux pumps / MDR
"norA": "norA", "norC": "norC", "Staphylococcus_aureus_norA": "norA_sau",
"mepA": "mepA", "mepR": "mepR", "amrA": "amrA", "amrB": "amrB",
"Staphylococcus_aureus_LmrS": "lmrS",
# Fusidic acid
"fusB": "fusB", "fusC": "fusC", "Staphylococcus_aureus_FosB": "fosB",
# Trimethoprim
"dfrC": "dfrC", "dfrE": "dfrE", "dfrG": "dfrG",
# Chloramphenicol / Lincosamide
"catA8": "catA8", "lnuG": "lnuG",
# Disinfectants / Biocides / Heavy metal
"qacA": "qacA", "qacJ": "qacJ", "ceoA": "ceoA", "ceoB": "ceoB",
"sepA": "sepA", "opcM": "opcM",
# Mupirocin
"Staphylococcus_aureus_mupA_conferring_resistance_to_mupirocin": "mupA",
# Other / Regulatory / Efflux
"ARL-2": "arl_2", "arlR": "arlR", "arlS": "arlS", "mgrA": "mgrA",
"rsmA": "rsmA", "sdrM": "sdrM", "kdpD": "kdpD", "YajC": "yajC",
"Burkholderia_pseudomallei_Omp38": "omp38", "IreK": "ireK",
"MexF": "mexF", "MexK": "mexK", "MexW": "mexW", "SAT-4": "sat_4",
"efrA": "efrA", "efrB": "efrB", "emeA": "emeA"
}
# 定义综合精选版的核心基因列表 (26个最具临床意义的基因)
selected_genes = [
"mecA", "blaZ", "OXA", # Beta-lactams
"aac_aph", "aph_3", "ant_4", # Aminoglycosides
"ermB", "ermC", "msrA", "lsaA", "mphC", # Macrolides/Lincosamides
"tetK", "tetL", "tetM", # Tetracyclines
"fusB", "fusC", # Fusidic acid
"dfrG", "dfrC", # Trimethoprim
"catA8", # Chloramphenicol
"mupA", # Mupirocin
"norA", "mepA", # Efflux/Fluoroquinolones
"qacA", "qacJ" # Disinfectants
]
# 这些是葡萄球菌/CoNS 中最具临床意义的耐药决定因素
key_amr_genes = {
'mecA': 'mecA', # 甲氧西林/β-内酰胺类耐药
"AAC(6')-Ie-APH(2'')-Ia_bifunctional_protein": 'aac_aph', # 氨基糖苷类高水平耐药
'ErmC': 'ermC', # 大环内酯类耐药
'tet(K)': 'tetK', # 四环素耐药
'dfrG': 'dfrG', # 甲氧苄啶耐药
'fusB': 'fusB', # 夫西地酸耐药
'qacA': 'qacA' # 消毒剂/抗菌剂耐药 (常与 mecA 共位于 SCCmec)
}