跳转到主要内容

在96孔板上测量分枝杆菌的生长,从而确定最小抑菌浓度(MICs)

项目描述

Tests PyPI version

自动分枝杆菌生长检测算法(AMyGDA)

这是一个python3模块,它可以拍摄96孔板的照片并评估每个孔中是否存在细菌生长(此处为分枝杆菌结核病)。由于每个孔含有不同抗生素的不同浓度,因此可以确定最小抑菌浓度,这在临床微生物学中是常用的。

一篇描述该软件并证明其可重复性和准确性的论文可以从微生物学杂志获取。

该软件的开发得到了国家健康研究研究所(NIHR)牛津生物医学研究中心(BRC)的资助,以帮助CRyPTIC项目

Philip W Fowler

philip.fowler@ndm.ox.ac.uk

2020年1月27日

引用

请引用

Automated detection of bacterial growth on 96-well plates for high-throughput drug susceptibility testing of Mycobacterium tuberculosis
Philip W Fowler, Ana Luiza Gibertoni Cruz, Sarah J Hoosdally, Lisa Jarrett, Emanuele Borroni, Matteo Chiacchiaretta, Priti Rathod, Sarah Lehmann, Nikolay Molodtsov, Clara Grazian, Timothy M Walker, Esther Robinson, Harald Hoffmann, Timothy EA Peto, Daniela Maria M. Cirillo, E Grace Smith, Derrick W Crook
Microbiology (2018) 164:1522-1530 doi:10.1099/mic.0.000733

安装

这是python3;python2将不会工作。使用包含的setup.py脚本进行安装很简单。首先克隆存储库(或直接从本GitHub页面下载)

$ git clone https://github.com/philipwfowler/amygda.git

这将下载存储库,在您的计算机上创建一个名为amygda/的文件夹。如果您只想在您的$HOME目录中安装包(或没有sudo访问权限),请使用--user标志

$ cd amygda/
$ python setup.py install --user

或者,为了全局安装

$ sudo python setup.py install

setup.py将自动查找所需的以下Python包,如果它们不存在,则安装它们;如果它们是旧版本,则更新它们。

以下信息仅在过程无法正常工作时包含。先决条件包括

  • numpyscipy。您的 Python 安装通常包括 numpy 和 scipy。要检查,请在终端中执行以下命令

      $ python -c "import numpy"
      $ python -c "import scipy"
    

    如果看到错误,表明 numpy 和/或 scipy 未安装,请按照这些说明安装 scipy stack。-matplotlib。如果您的 Python 安装包括 numpy 和 scipy,那么它很可能也包括 matplotlib。再次检查

      $ python -c "import matplotlib"
    

您可以在这里找到安装说明。

  • opencv-python。这可以使用标准的 Python 工具安装,如 pip

      $ pip install opencv-python
    

    AMyGDA 使用 OpenCV 3.4.0 版本开发和测试。如果您在您的机器上没有 sudo 权限,您可以使用以下命令在您的 $HOME 目录中安装此软件(以及任何其他 Python 模块)

      $ pip install opencv-python --user
    
  • datreant。这提供了一种方便的方法,通过本地文件系统为每张图像存储和发现元数据。这对于 AMyGDA 的运行不是必需的,但代码需要重构以删除这个依赖项。同样,它可以使用 pip 安装

      $ pip install datreant 
    

    请注意,datreant 在每张图像都包含在其自己的文件夹中时工作得最好。datreant 会自动将每个图像的所有相关元数据存储在输入文件相同位置的隐藏 .datreant 文件夹中的两个 JSON 文件中。

教程

代码结构为一个 Python 模块;所有文件都可以在 amygda/ 子文件夹中找到。

$ ls
LICENCE.md                   amygda/                       setup.py
README.md                    examples/

(如果您运行了 setup.py 脚本,您可能会看到其他文件夹,如 build/。要运行教程,请移动到 examples/ 子文件夹。

$ cd examples/
$ ls
analyse-plate-with-amygda.py plate-configuration/          sample-images/

analyse-plate-with-amygda.py 是一个简单的 Python 文件,展示了如何使用该模块分析单个图像。补充材料中 Figure S1 所示的十五张图像(见上面)已提供,以便您可以重建 Figures S2, S3, S4 & S12。图像组织如下

$ ls sample-images/
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15

$ ls sample-images/01/
image-01-raw.png

使用默认设置处理和分析单个图像非常简单

$ analyse-plate-with-amygda.py --image sample-images/01/image-01-raw.png

并且不应超过 10 秒。没有输出写入终端,而是在 samples-images/01 文件夹中找到一系列新文件。

$ ls -a sample-images/01/
.datreant/
image-01-arrays.npz
image-01-filtered.png
image-01-mics.txt
image-01-processed.png
image-01-raw.png
  • 隐藏的 .datreant/ 文件夹包含两个 JSON 文件。`categories.json` 包含有关板的所有 MICs 和其他元数据,两者都可以使用 datreant 模块自动发现和读取,使系统分析更容易。
  • image-01-mics.txt 包含与 JSON 文件相同的信息,但以更简单、更易于人类阅读的格式。
  • image-01-arrays.npz 包含一系列 numpy 数组,指定例如每个孔的增长百分比
  • image-01-raw.png 是板的原始图像。
  • image-01-msf.jpg 是经过均值漂移滤波的板的 JPEG 图像
  • image-01-clahe.jpg 是经过均值漂移滤波和对比度限制自适应直方图均衡滤波的板的 JPEG 图像,以提高对比度并平衡板上的光照
  • image-01-final.jpg 是经过上述两种滤波操作和直方图拉伸的板的 JPEG 图像,以确保均匀亮度
  • image-01-growth.png 添加了一些注释;具体来说,绘制了孔的位置,每个孔用药物名称和浓度标记,并且被 AMyGDA 识别为含有细菌生长的孔用彩色圆圈突出显示。

要查看 analyse-plate-with-amygda.py 脚本可用的其他选项

$ analyse-plate-with-amygda.py --help
usage: analyse-plate-with-amygda.py [-h] [--image IMAGE]
                                [--growth_pixel_threshold GROWTH_PIXEL_THRESHOLD]
                                [--growth_percentage GROWTH_PERCENTAGE]
                                [--measured_region MEASURED_REGION]
                                [--sensitivity SENSITIVITY]
                                [--file_ending FILE_ENDING]

optional arguments:
  -h, --help            show this help message and exit
  --image IMAGE         the path to the image
  --growth_pixel_threshold GROWTH_PIXEL_THRESHOLD
			the pixel threshold, below which a pixel is considered
			to be growth (0-255, default=130)
  --growth_percentage GROWTH_PERCENTAGE
			if the central measured region in a well has more than
			this percentage of pixels labelled as growing, then
			the well is classified as growth (default=2).
  --measured_region MEASURED_REGION
			the radius of the central measured circle, as a
			decimal proportion of the whole well (default=0.5).
  --sensitivity SENSITIVITY
			if the average growth in the control wells is more
			than (sensitivity x growth_percentage), then consider
			growth down to this sensitivity (default=4)
  --file_ending FILE_ENDING
			the ending of the input file that is stripped. Default
			is '-raw'

要分析所有板,您可以使用简单的 bash 循环

	$ for i in 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15; do
		analyse-plate-with-amygda.py --image sample-images/$i/image-$i-raw.png
	  done;

或者,如果您已安装 GNU parallel,可以使用机器上的所有核心来加速过程。

	$ find sample-images/ -name '*raw.png' | parallel --bar analyse-plate-with-amygda.py --image {}

要删除所有输出文件,从而将 sample-images/ 返回到干净状态,提供了一个 bash 脚本。请谨慎使用!

$ cd samples-images/

$ ls 01/
image-01-mics.txt
image-01-arrays.npz                                        image-01-clahe.jpg
image-01-filtered.jpg                                      image-01-raw.png
image-01-growth.jpg					   image-01-msf.jpg

$ bash remove-output-images.sh

$ ls 01/
image-01-raw.png

许可

软件可依据附带的学术使用许可证条款使用。

适应不同的板设计

AMyGDA 编写时对板的具体设计或每块板上孔的数量都是不可知的。每个孔中药物的浓度(或稀释度)由一系列纯文本文件定义,位于

config/

例如,UKMYC5 板上的药物定义在

config/UKMYC5-drug-matrix.txt

文件中,如下所示。

BDQ,KAN,KAN,KAN,KAN,KAN,ETH,ETH,ETH,ETH,ETH,ETH
BDQ,AMI,EMB,INH,LEV,MXF,DLM,LZD,CFZ,RIF,RFB,PAS
BDQ,AMI,EMB,INH,LEV,MXF,DLM,LZD,CFZ,RIF,RFB,PAS
BDQ,AMI,EMB,INH,LEV,MXF,DLM,LZD,CFZ,RIF,RFB,PAS
BDQ,AMI,EMB,INH,LEV,MXF,DLM,LZD,CFZ,RIF,RFB,PAS
BDQ,AMI,EMB,INH,LEV,MXF,DLM,LZD,CFZ,RIF,RFB,PAS
BDQ,AMI,EMB,INH,LEV,MXF,DLM,LZD,CFZ,RIF,RFB,PAS
BDQ,EMB,EMB,INH,LEV,MXF,DLM,LZD,CFZ,RIF,POS,POS

添加新的板设计只是创建新的文件,指定每个孔的药物、浓度和稀释度。请注意,目前更改 孔数 还涉及在创建 PlateMeasurement 对象时指定 well_dimensions。目前默认值为 (8,12),即横向放置的 96 孔板。例如,UKMYC6 板的配置文件包括在内,尽管所有提供的示例都是 UKMYC5 板。

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码发行版

amygda-1.3.2.tar.gz (24.5 kB 查看哈希值)

上传时间 源代码

构建发行版

amygda-1.3.2-py3-none-any.whl (23.5 kB 查看哈希值)

上传时间 Python 3

由以下赞助

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面