Nebenkostenabrechnung

Diese Aussage beschreibt die Rechtslage bei Wohnraumvermietungen präzise:


1. Warum Sie diese Kosten NICHT auf den Mieter umlegen dürfen

Nach der Betriebskostenverordnung (BetrKV) und dem Mietrecht (§ 556 BGB) dürfen nur laufende, wiederkehrende Entstehungskosten der Bewirtschaftung auf den Mieter umgelegt werden.

Die von Ihnen genannten Posten fallen nicht darunter:

  • Instandhaltungskosten (217,18 €): Instandhaltung und Instandsetzung (Reparaturen, Werterhalt der Immobilie) sind gesetzlich reine Vermietersache und dürfen niemals in die Betriebskostenabrechnung einfließen.
  • Verwaltungsgebühr (439,11 €): Die Kosten für die Hausverwaltung (Miet- oder WEG-Verwaltung) zählen zu den Verwaltungskosten und sind gesetzlich ausdrücklich von den Betriebskosten ausgeschlossen.
  • Kontogebühren (13,48 €): Bank- und Kontoführungsgebühren des Eigentümers oder der WEG sind ebenfalls Verwaltungskosten.
  • Miete Kellerraum Münchow (-89,86 €) & Raummiete Keller: Hierbei handelt es sich um WEG-Einnahmen bzw. interne Verrechnungen innerhalb der Eigentümergemeinschaft. Sie mindern zwar Ihre Hausgeldabrechnung als Eigentümer, sind aber keine laufenden Betriebskosten der Mietwohnung.

2. Was Sie umlegen DÜRFEN (Betriebskosten + Grundsteuer)

Umlagefähig sind ausschließlich die Posten aus der Summe Betriebskosten (2.394,79 €) (welche bereits die laufenden Kalten Betriebskosten sowie die Wasser-/Heizkosten nach Brunata-Abrechnung umfasst) plus die separat erhobene Grundsteuer (130,32 €).

Aus diesen beiden Posten errechnet sich auch exakt Ihre Aufstellung für die Mieterin (anteilig für die 31 Tage im Januar 2025):

  • Laufende Betriebskosten (31 Tage): 142,03 €

  • Grundsteuer (31 Tage): 11,07 €

  • Gesamter Mieteranteil: 153,10 €




Ja, exakt. Die Beträge aus der Bescheinigung nach § 35a EStG sind bereits vollständig in den einzelnen Positionen der WEG-Hausgeldabrechnung (2025_Abrechnung-WEG_2026_v1_55_000101_00.pdf) enthalten und dort in den Gesamtsummen zusammengefasst.

In der § 35a-Bescheinigung steht dazu ausdrücklich im Einleitungssatz:

„Hiermit wird bescheinigt, dass in der Jahresabrechnung/Nebenkostenabrechnung für das oben bezeichnete Objekt anteilig die nachfolgend dargestellten steuerbegünstigten Aufwendungen enthalten sind.“


Konkreter Nachweis der Beträge:

  1. Wartung Rauchmelder (RWM)
  • § 35a-Bescheinigung: 21,88 € (Rechnung Objektus 175,36 € × 1248/10000)

  • WEG-Abrechnung (S. 2): 21,88 € unter „Wartung Rauchmelder“

  1. Treppenhausreinigung („Müller“)
  • § 35a-Bescheinigung: 12 × 20,40 € = 244,80 € (Rechnungen 1.713,60 € ÷ 7 WEs)

  • WEG-Abrechnung (S. 2): 244,80 € unter „Treppenhausreinigung“

  1. Hauswartkosten / Schneebeseitigung („MSM“ & „Borchers“)
  • § 35a-Bescheinigung: MSM Monatsbeträge (12 × 11,73 € = 140,76 €) + MSM Abr. (51,33 €) = 192,09 €

  • WEG-Abrechnung (S. 2): 192,11 € unter „Hauswartkosten“

  • RG Borchers (72,46 €) und Schnee/Eis sind in den Posten „Wegereinigungskosten“ (65,73 €) bzw. „Schnee- u. Eisbeseitigung“ (76,27 €) enthalten.

  1. Instandhaltungen / Handwerkerleistungen (Punkt 3)
  • § 35a-Bescheinigung: Relebo (68,91 €) + Knüppel (24,73 €) = 93,64 €

  • WEG-Abrechnung (S. 2): Sind in der Position „Instandhaltungskosten“ (Ihr Anteil: 217,18 €) enthalten.


Wichtiger Hinweis:

Sie dürfen die Beträge aus der § 35a-Bescheinigung nicht noch einmal zusätzlich aufschlagen oder addieren, da Sie diese Kosten sonst doppelt berechnen würden.

汉堡乒乓球联赛

汉堡乒乓球协会(HaTTV)的联赛体系划分非常细致 [[110]]。在州级联赛(Landesliga)之下,依次设有区级联赛(1. Bezirksliga 1 至 4 组)以及更基层的县级联赛(1. Kreisliga, 2. Kreisliga 等) [[98]]。

汉堡4个主要地方联赛的完整成员名单(2025/2026赛季)

  • 汉堡联赛(Hamburg Liga)(汉堡州内最高级别):
    TTG 207 II, Walddörfer SV, TuS Germania Schnelsen III, TSV Sasel II, Walddörfer SV II, Oberalster VfW IV, TH Eilbeck II, GW Harburg, Eimsbütteler TV, TTC Neuenfelde, TTSG Urania-Bramfeld.
  • 第1州级联赛 1组(1. Landesliga 1):
    VfL Börnsen, Walddörfer SV III, TTG Hamburg-Nord, TSV Sasel III, TTSG Urania-Bramfeld II, TTG 207 III, Wandsbeker Turnerbund 1861, SC Vorwärts/Wacker, TH Eilbeck IV, VfL Geesthacht.
  • 第1州级联赛 2组(1. Landesliga 2):
    TuS Germania Schnelsen IV, FC St. Pauli, Bahrenfelder TV, TH Eilbeck III, Oberalster VfW V, Horner TV, GW Harburg II, SG Lokstedt/Stellingen, SG TTC GWR/TuS Osdorf, Hamburger SV.
  • 第1区级联赛 1组(1. Bezirksliga 1)(作为下级联赛的代表):
    TTG Hamburg-Nord II, TTG 207 VI, SC Poppenbüttel V, TuRa Harksheide, Meiendorfer SV, TSV Sasel V, TTG 207 VII, TH Eilbeck VIII, TuS Berne, SC Alstertal-Langenhorn.

在德国乒乓球体系中,一个俱乐部的二线或三线队伍绝对不允许在比一线队伍更高的级别中参赛。所以 TuS Germania Schnelsen 的三线队伍(III. Mannschaft) 在汉堡联赛(Hamburg Liga)中征战,原因在于:该俱乐部的一线队伍实力更强,正在汉堡州级联赛体系之上的跨地区高级别联赛中比赛,具体来说是 东北高级联赛(Oberliga Nord-Ost) [[89]]。因为一线(可能还有二线)队伍已经在更高级别参赛,所以三线队伍自然就成了该俱乐部在纯汉堡州级联赛体系内排名最高的队伍。这是一种非常常见且符合规定的梯队建设模式,既能保证高水平球员在高级别联赛锻炼,又能让二三线队伍在州级联赛中获得稳定的比赛机会。

Pipeline for Data_Holger_neonate

  1. 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
  2. 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
     -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  3. mlst

     (bacto) mlst *.fna > mlst
  4. 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   # 细菌结果
  5. 根据 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
  6. 完整分析主脚本 (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%”。
  7. 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 两个问题的终极可视化图表。
  8. 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 内发生克隆传播的分子流行病学铁证。”
  9. 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
  10. 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)
     }