在96孔板上测量分枝杆菌的生长,从而确定最小抑菌浓度(MICs)
项目描述
自动分枝杆菌生长检测算法(AMyGDA)
这是一个python3
模块,它可以拍摄96孔板的照片并评估每个孔中是否存在细菌生长(此处为分枝杆菌结核病)。由于每个孔含有不同抗生素的不同浓度,因此可以确定最小抑菌浓度,这在临床微生物学中是常用的。
一篇描述该软件并证明其可重复性和准确性的论文可以从微生物学杂志获取。
该软件的开发得到了国家健康研究研究所(NIHR)牛津生物医学研究中心(BRC)的资助,以帮助CRyPTIC项目。
Philip W Fowler
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包,如果它们不存在,则安装它们;如果它们是旧版本,则更新它们。
以下信息仅在过程无法正常工作时包含。先决条件包括
-
numpy
和scipy
。您的 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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9244d21bef29ebb741c4780494e26b9c7a03729b59a63ec2977ae938bd028f41 |
|
MD5 | 23b83e0ea87bc7d9077a8f22c1d9cc9a |
|
BLAKE2b-256 | 35772e944534b7d51287e1e5a779130587d1070eb94e73d8e8ef62095109d29f |
amygda-1.3.2-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 516052e0b0d2ec6a61868ed559edae8733f73c4f2288848c869fd8f5a493244f |
|
MD5 | 0006ac9f172f503c36d4784d0a5a8f5f |
|
BLAKE2b-256 | 140f57644b0201af3343a150167e548f463c0c3aad24d109aed4b28259a59dee |