微生物数量测定全解析:从CFU平板计数到OD600标准曲线
2026/9/20 2:36:50 网站建设 项目流程

简介:本资源为《微生物数量测定.doc》,面向环境科学、生物工程及实验教学等领域的师生和科研人员,系统梳理微生物数量测定的核心技术体系。文中围绕计数器测定法、电子计数器计数法、平板菌落计数法、比浊法、测定细胞重量法、总氮/总碳量测定法及颜色改变单位法等方法,逐一说明原理、适用对象与操作注意事项,并结合空气、水、土壤等不同样本场景给出方法选择建议。资源包共1个doc文档,约299KB,内容条理清晰、覆盖全面,既便于日常教学参考,也可作为实验方案设计时的实用手册。目前已有95人学习,适合需要快速掌握微生物计数方法体系或开展相关实验的读者下载使用。

1. 为什么微生物数量测定先得想清楚“测的是谁”

接样后的第一件事不是找培养箱,而是先确认“数量”这个词落在哪个测量尺度上。若任务是评估食品的卫生状况,答案通常是活菌数(CFU/ml);若是在发酵工序里跟踪菌体生长,几分钟就需要一个读数,OD600 比培养一天才能出结果的平板计数直观得多;若是制药用水系统的验证,显微镜下直接计数的全菌数又是另一套意义。三条路线都在回答“样品里有多少微生物”,但计量单位、耗时和误差来源完全不同。

做数据或系统的人接手“微生物数量测定”这个需求时,最先接触到的往往是别人留下的旧数据:OD 值、稀释倍数、菌落数混在一张表里,格式还不一致。要把它整理成能支撑结论的形式,既需要懂一点实验室常识,也需要具备数据处理手段。这篇内容想把测量方法的边界和数据处理的方法一起讲清楚:让扩培的人能选对方法,也让写脚本汇总结果的人能看懂原始记录里哪些字段不能丢。

2. 微生物数量测定的三条技术路线与选型依据

2.1 平板菌落计数测定活菌:结果单位是 CFU/ml

平板菌落计数是最经典的活菌测定方法。将样品按十倍梯度稀释后涂布到固体培养基表面,在适宜条件下培养,每个存活且能繁殖的细胞会分裂形成一个肉眼可见的菌落。计数平皿上的菌落数,再乘以稀释倍数、除以涂布体积,就得到原始样品的活菌浓度。结果用“CFU/ml”表示,CFU 的全称是 Colony Forming Unit,即菌落形成单位。之所以不叫“细胞个数”,是因为一个菌落可能由两个或多个聚集的细胞共同形成,无法在计数时完全拆开。

多数应用场景最终关心的是“活着的、能繁殖的个体”,比如食品微生物指标、药品微生物限度检查、发酵种子液质量控制,所以平板法始终是微生物数量测定的基准方法。它的优点是结果语义清晰、与法规标准直接挂钩;缺点也很明显,培养周期长,大肠杆菌也要十几个小时,环境样品里的菌更是要培养两三天。只有等平板上长出菌落才能读数,数据代表的是培养前的状态,无法用于实时调控过程。

做自动化或数据系统的人要注意:一份平板计数记录,应该保留稀释倍数、涂布体积、菌落数三个原始字段,而不是只存一个最终 CFU 值。少了原始字段,后续复核、重新合并且平行样品都会很吃力,给 LIMS 设计表结构时也容易埋下坑。

2.2 显微镜直接计数:快速但无法区分活菌和死菌

显微镜直接计数走的是另一条路线。用血球计数板或细菌计数板,把菌液滴入固定体积的计数室,盖上盖玻片后在显微镜下直接数细胞个数,再按计数室体积换算成 cells/ml 或 cells/ml。这个方法最大的优势是快,样品处理得当,十几分钟就能出结果,而且菌体形态、是否污染、有没有异常颗粒都能在视野里直接看到。

但这方法有两个固有局限。第一,它数的是“所有看得见的颗粒”,活菌死菌都算在里边,培养基里的沉淀物也可能被误认成菌体。第二,计数室内的细胞数量太少时,统计误差非常大。当样品浓度低于 10^6 cells/ml 时,一个视野几十个细胞都凑不齐,需要离心浓缩或者直接换灵敏的方法。显微镜计数更适合纯培养的菌液快速检查,对成分复杂的自然样品则非常考验操作者的判断经验。

2.3 比浊法测定菌液浓度:速度快但依赖标定

比浊法的原理不复杂:悬浮在液体中的微生物会散射透过光,用分光光度计在 600 nm 波长下读取光密度值 OD600,在合适浓度区间内,OD600 与细胞量成正比。测量不需要破坏样品,读数后菌液还能放回培养体系继续培养,这让 OD600 成为微生物生长曲线的标配手段。

要警惕的是,OD600 是一个相对数值。菌体的大小和形状、分光光度计的光路长度、培养基本身颜色都会影响读数。同一份菌液,在 1 cm 比色皿和不足 1 cm 光径的酶标仪上,读出的 OD600 可能差好几倍。所以比浊法不能只报一个 OD 值就算完事,必须先用平板计数或显微镜计数建立标定关系,把 OD600 换算成实际菌体浓度,这样数据才具备横向可比性。

2.4 三条方法怎么选:量程与场景对照

下面的表格是我在确定测量方案时常用的对照依据,按结果单位、典型量程、耗时和应用场景四个维度整理。

测量方法结果单位典型量程耗时主要应用场景
平板菌落计数CFU/ml10^2 ~ 10^912 ~ 72 小时食品、药品微生物限度检查
显微镜直接计数cells/ml10^6 ~ 10^910 ~ 30 分钟纯培养快速镜检、菌液浓度粗测
比浊法OD600 或换算浓度约 10^6 ~ 10^9数秒生长曲线、发酵过程动态监控

选型有一个经验:如果要在多个时间点比较微生物数量的变化趋势,尽量全程使用同一种方法,不要上午记录 OD 值,下午又用平板计数补充一组 CFU,最后把两组数据画在同一条趋势线上。两种方法的计数定义和误差模型都不同,混用会把方法差异误判成样品差异,这是微生物数量测定项目里最容易被忽略的一类数据质量问题。

3. 以 OD600 为核心的菌液浓度测定流程

3.1 OD600 测量的基础设置与取样间隔

以 OD600 做微生物数量测定时,基础设置看起来很简单,但每个细节都会影响最终曲线的形状。第一步把分光光度计波长设为 600 nm,第二步用未接种的空白培养基做参比调零,第三步取菌液读数。这里有个常见误区:参比调零不是测一次就结束,每次读数前都应确认空白对照没有漂移。

取样间隔则要看菌种的生长速率。大肠杆菌这类生长快的菌,倍增时间在 20 到 40 分钟左右,30 分钟采一次样能画出平滑的指数期曲线;酵母或某些环境菌生长慢,可以放宽到 60 分钟甚至更长。取样后如果短时间不能读数,菌液应放在冰上暂存,但仍要尽量在五分钟内完成测定,避免细胞继续繁殖改变光密度。测量时比色皿内不能有气泡,比色皿的光滑面朝向光路,操作上有个简便做法:先用少量待测菌液润洗比色皿两次再正式装液,排除残留液体的影响。

OD600 读数超过约 0.6 后要注意线性偏离。细胞浓度高到一定程度,菌液对光散射变得复杂,OD 值与浓度的比例关系会被打破。遇到这种情况,常见做法是用新鲜空白培养基把样品稀释 2 到 5 倍,让读数回落到 0.1 到 0.5 区间,再把测得值乘回稀释倍数。必须记录稀释动作,否则后续标定计算会整体偏移。

3.2 OD600 标准曲线的制作:把读数换算成菌液浓度

OD600 本身只是光密度,要把它变成微生物数量测定产生的最终浓度数值,需要提前建立标定曲线。具体制作步骤我一般按下面这个流程走:

  1. 将目标菌株培养至对数生长期,吹打或涡旋混匀。
  2. 用新鲜培养基把菌液稀释成 5 到 6 个浓度梯度,使 OD600 覆盖 0.1 到 0.8。
  3. 逐个读取 OD600 值,每个样品测两次取平均。
  4. 同一时间点取各稀释度菌液做平板活菌计数,获得对应的 CFU/ml。
  5. 以 OD600 为横轴、CFU/ml 为纵轴做线性回归,得到标定关系。

标定关系可以用 Python 快速拟合,示例代码如下:

import numpy as np # 实测数据:不同浓度菌液的 OD600 与对应平板计数结果 # 数据仅为示例,实际标定必须用目标菌株自己测 od600 = np.array([0.08, 0.16, 0.32, 0.48, 0.61]) cfu_per_ml = np.array([6.2e6, 1.3e7, 2.6e7, 4.1e7, 5.3e7]) # 一阶线性拟合:cfu = k * od + b k, b = np.polyfit(od600, cfu_per_ml, 1) print(f"标定关系: CFU/ml = {k:.2e} × OD600 + {b:.2e}") def od_to_cfu(od_value): """把 OD600 读数换算成活菌浓度,单位 CFU/ml""" return k * od_value + b # 验证:计算 OD600 = 0.25 时的活菌浓度 estimated = od_to_cfu(0.25) print(f"OD600 = 0.25 对应约 {estimated:.2e} CFU/ml")

代码里np.polyfit(od600, cfu_per_ml, 1)做的是最小二乘线性回归,返回的k是斜率,b是截距。od_to_cfu函数把换算关系封装起来,后续拿到新的 OD 读数就能直接调用。需要注意的是,这条标定关系只对同一个菌株、同一批培养基、同一台分光光度计有效,设备更换或培养基批次变化后必须重新标定。

一个重要边界:标定关系不能跨生长时期使用。指数期的活菌比例高,OD 与 CFU 的对应关系比较稳定;进入稳定期后,一部分细胞死亡但细胞碎片仍然散射光线,OD 值下降不明显,此时按标定公式算出来的 CFU 会虚高。标定曲线的适用范围一定要在实验记录里写清“指数期专用”。

3.3 OD600 测量中的干扰因素与排除手段

在实际测量中,OD600 读数漂移最常见的原因有三个。第一是颜色培养基,培养液中加入了指示剂或某些天然色素成分,本身的吸光度会叠加进读数,处理方式是用同一批未接种培养基做空白调零,确保其他成分一致。

第二是气泡或者比色皿表面的指纹残留,气泡会造成尖锐的散射峰值,比色皿外侧有污渍则会整体抬高读数。装液时动作放轻,读数前用擦镜纸擦拭比色皿的光面,这是每次测量都该做的动作。

第三是菌液出现絮状沉淀或细胞成团。某些菌在培养后期产生胞外多糖,菌体大量聚集后 OD 读数低且波动大。遇到这种情况,简单涡旋不一定能打散,需要在测量流程前增加一步匀浆处理,或者改走平板计数来复核。

4. 平板菌落计数的稀释梯度设计与 CFU 核算

4.1 十倍稀释的正确移液姿势

平板菌落计数能不能反映真实的微生物数量,稀释梯度是关键。原则很简单:让每个平板长出 30 到 300 个菌落,这个区间统计误差最小。实际操作上,我们并不知道样品的初始浓度,所以通常预设一个范围,做连续几个十倍的浓度梯度同时涂平板。

十倍稀释的具体做法是:取 0.5 ml 原液加入 4.5 ml 无菌生理盐水或磷酸盐缓冲液中,涡旋混匀,记为 10^-1;再从 10^-1 管取 0.5 ml 加入新的 4.5 ml 缓冲液,记为 10^-2,以此类推。每次移液必须更换枪头或吸管,不能用一个枪头连续往下传递,否则从上一管吸附的残留液体会污染下一管,造成稀释系统误差。

稀释倍数怎么选合理,取决于样品的预估浓度。这个表是我在实验设计时常用的参考:

预估菌液浓度(CFU/ml)建议涂布的稀释度预计平板菌落数
10^3 ~ 10^510^-2、10^-310 ~ 300 之间
10^5 ~ 10^710^-4、10^-510 ~ 300 之间
10^7 ~ 10^910^-6、10^-710 ~ 300 之间

涂布体积也要固定。常见操作是取 0.1 ml 菌液滴到平板中央,用无菌玻璃刮铲推匀,或者取 1 ml 混入培养基做倾注平板。体积记录必须精确,因为后续计算 CFU/ml 时涂布体积在分母位置,写错一位就让最终结果差一个数量级。

4.2 为什么只数 30 到 300 个菌落的平板

计数时有个通用规则:只统计菌落数在 30 到 300 之间的平板。低于 30 个时,单个菌落受取样随机波动影响太大,偶然性好比抛硬币,相对误差偏高;高于 300 个时,平板菌落密度过大,相邻菌落可能连接成片,目力区分困难,误差反而更大。

这个规则背后的统计依据是泊松分布。细菌在平板上的分布近似随机独立事件,菌落数目的相对标准偏差约等于 1/√n,n 是菌落数。n=300 时相对误差约 5.8%,n=30 时约 18%,这正是多数标准和方法把 30 到 300 划为可信区间的原因。读数时用记号笔在平板背后逐一点数,遇到连片无法区分的区域,直接弃掉该平板而不是强行估算。

4.3 用 Python 把多个平板的计数结果汇总成 CFU/ml

实际实验经常有三个平行平板数据需要合并。下面这段代码处理的是:从原始记录表读取稀释度、菌落数和涂布体积,筛出有效平板后计算 CFU/ml 平均值。

import pandas as pd # 原始计数记录:dilution 为稀释因子,如 10^-4 记作 1e-4 # colony_count 为平板菌落数,volume_ml 为涂布体积 records = pd.DataFrame({ "dilution_factor": [1e-4, 1e-4, 1e-5, 1e-5], "colony_count": [128, 134, 11, 14], "volume_ml": [0.1, 0.1, 0.1, 0.1] }) def cfu_from_row(row): """单块平板的CFU/ml计算:菌落数 / (稀释因子 × 涂布体积)""" return row["colony_count"] / (row["dilution_factor"] * row["volume_ml"]) records["cfu_per_ml"] = records.apply(cfu_from_row, axis=1) # 筛选菌落数在30~300之间的有效平板 valid = records[records["colony_count"].between(30, 300)] if not valid.empty: avg_cfu = valid["cfu_per_ml"].mean() print(f"有效平板数: {len(valid)}") print(f"平均活菌浓度: {avg_cfu:.2e} CFU/ml") else: print("没有平板进入30~300区间,需要重新设计稀释梯度")

这段代码里最关键的是between(30, 300)的筛选。10^-5 稀释度两块的计数分别是 11 和 14,虽然也能算出一个数值,但菌落数不足 30,按规则不应参与均值统计。代码先算出所有平板的 CFU/ml,再筛出合规平板求平均,避免把低稀释度的计数误差带入结果。如果所有平板都无效,就不该硬出数字,而是回头重做实验并调整稀释倍数。

4.4 平板计数高波动数据的处理边界

平行平板之间的差异超过一定范围,说明操作或样品本身存在不均匀问题。通常判定标准很简单:高低值相差超过 2 倍,数据就不要平均了,应该检查稀释过程是否涡旋充分、取样位置是否在试管液面表层等原因。

另一个在实际操作中容易忽略的是稀释与涂板之间的时间。稀释好的菌液在缓冲液中静置时间过长,菌体会沉降到底部或贴壁,每一管取出时也需要重新涡旋。从第一次稀释到全部平板涂布完毕,尽量控制在 30 分钟内完成,时间越长,活的细菌死亡或增殖的风险越大。冷藏样品做平板计数时,稀释液通常用低温缓冲液,保持样品活性稳定。

5. 用生长曲线斜率和标准差校验微生物数量测定结果

5.1 把 OD600 批量读数据拼接成生长曲线

一次完整的 OD600 测定会在多个时间点产生几十个读数,手动在 Excel 里画曲线已经没法满足批处理需求。常见的做法是把数据整理成两列、时间与 OD值,用脚本绘制半对数坐标生长曲线。半对数坐标下的指数期会表现为一条直线,这条直线的斜率就是特定生长速率。

下面这段代码演示了从两组对应数组中自动识别对数期并计算增速率的全过程:

import numpy as np import matplotlib.pyplot as plt # 时间单位 min,OD600 为对应读数 time_min = np.array([0, 60, 120, 180, 240, 300, 360, 420]) od600 = np.array([0.05, 0.08, 0.13, 0.27, 0.52, 0.76, 0.83, 0.86]) # 筛选处于指数期的数据点:OD 略高于基线且未进入平台期 mask = (od600 > 0.08) & (od600 < 0.8) t_log, od_log = time_min[mask], od600[mask] # 对 OD 取自然对数后拟合线性部分 slope, intercept = np.polyfit(t_log, np.log(od_log), 1) doubling_min = np.log(2) / slope print(f"特定生长速率: {slope:.4f} /min") print(f"倍增时间: {doubling_min:.1f} min") # 绘制半对数生长曲线 plt.plot(time_min, od600, marker="o", label="实测 OD600") plt.yscale("log") plt.xlabel("时间 (min)") plt.ylabel("OD600") plt.legend() plt.savefig("growth_curve.png", dpi=150)

代码中np.polyfit对取了对数的 OD 值做线性拟合,斜率就是特定生长速率,单位是 1/min。倍增时间通过ln2 / slope得到,它和时间单位一致。用这个快照可以很直观地判断:如果拟合得到的倍增时间和菌种已知资料差异很大,多半是培养条件不稳定或 OD 数据里混入了异常读数。

5.2 用相对标准偏差控制微生物数量测定的重复精度

微生物数量测定因为涉及培养和稀释,结果波动天然比化学定量大。对于三个平行样,我通常算一个相对标准偏差 RSD,用百分比衡量重复精度。RSD 低于 15% 说明操作稳定,15% 到 30% 之间可以接受但要检查操作细节,超过 30% 就需要复测。

RSD 的计算可以直接用 pandas 完成:

import pandas as pd vals = pd.Series([1.28e7, 1.34e7, 1.19e7]) mean_val = vals.mean() std_val = vals.std(ddof=1) rsd = std_val / mean_val * 100 print(f"均值: {mean_val:.2e} CFU/ml, RSD: {rsd:.1f}%")

注意std(ddof=1)使用的是样本标准差,适合只有三个平行样的情况。算出来的 RSD 要放在最终报告里,和 CFU/ml 一起呈现,这样数据接收方才能真正判断这批数字的可信度。做自动化的同仁可以把这段逻辑接入 LIMS 或电子实验记录本,替代手填均值的过程。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询