| Literature DB >> 32081863 |
David R Stirling1, Oniz Suleyman1, Eliza Gil1, Philip M Elks2,3, Vincenzo Torraca4, Mahdad Noursadeghi1, Gillian S Tomlinson5.
Abstract
We describe new open source software called QuantiFish for rapid quantitation of fluorescent foci in zebrafish larvae, to support infection research in this animal model. QuantiFish extends the conventional measurements of bacterial load and number of bacterial foci to include measures for dissemination of infection. These are represented by the proportions of bacteria between foci and their spatial distribution. We showcase these measures by comparison of intravenous and hindbrain routes of Mycobacterium marinum infection, which are indistinguishable by measurement of bacterial load and not consistently differentiated by the number of bacterial foci. The intravenous route showed dose dependent dissemination of infection, reflected by increased spatial dispersion of bacteria and lower proportions of bacteria distributed across many foci. In contrast, hindbrain infection resulted in localised disease, limited to a smaller area and higher proportions of bacteria distributed across fewer foci. The application of QuantiFish may extend beyond models of infection, to study other pathologies such as metastatic cancer.Entities:
Mesh:
Year: 2020 PMID: 32081863 PMCID: PMC7035342 DOI: 10.1038/s41598-020-59932-1
Source DB: PubMed Journal: Sci Rep ISSN: 2045-2322 Impact factor: 4.379
Figure 1Analysis tools to quantify dissemination of mycobacterial infection. Limitations of existing outcome measurements of infection, illustrated in schematic diagrams representing different distributions of fluorescent bacterial foci (green). Area of fluorescent signal and number of foci distinguish some distributions of infection (ai) but not others (aii–iii). We propose fluor50, the number of foci that contribute 50% of the total fluorescence, to distinguish differences in the proportional distribution of the total burden of pathology at each site (aii) and parameters that quantify the spatial distribution of foci to differentiate localised dissemination from distant dissemination (aiii). (bi) Grid analysis divides the image into an array of squares, then quantifies the number of grid zones containing the centre point of ≥1 foci (highlighted blue). (bii) The area of a polygon (highlighted blue) encompassing the centre points of all foci. (biii) The maximum distance between the centre points of any two foci (IFDmax). (c–h) Quantitation of bacterial dissemination in images of zebrafish larvae four days post intravenous infection with 200–400 cfu Mycobacterium marinum expressing mWasabi, selected from three independent experiments, classified as having minimally, moderately or widely disseminated infection (n = 11, 8 and 8, respectively). (c) The relationship between cumulative percentage fluorescence and the number of foci which generate this signal. (d) Representative images from the data presented in (e–h) of zebrafish larvae with each category of dissemination. Scale bars, 500 µm. (e) Fluor50, calculated by interpolation of the data shown in (c). Spatial measurements of dissemination, (f) grid analysis, (g) polygon area and (h) IFDmax. Lines (c) and data points (e–h) represent individual zebrafish larvae. Lines and error bars (e–h) represent median ± IQR. p values were derived from Kruskal-Wallis tests with Benjamini, Krieger and Yekutieli correction for multiple comparisons.
Figure 2Quantitation of bacterial dissemination in response to a dose titration of intravenous Mycobacterium marinum (Mm) infection. Measures of dissemination in zebrafish larvae four days after intravenous infection with 25, 100 or 400 cfu Mm ± 400 µM isoniazid (I) (n = 24, 28, 22 and 25, respectively). (a) Representative images are shown for each inoculum dose. Scale bars, 500 µm. (b) The relationship between cumulative percentage fluorescence and the number of bacterial foci responsible for this signal. (c) Fluor50, calculated by interpolation of the data shown in (b). The three spatial dissemination parameters, (d) grid analysis, (e) polygon area and (f) IFDmax. Lines (b) and data points (c–f) represent individual zebrafish larvae. Lines and error bars (c–f) represent median ± IQR. p values were derived from Kruskal-Wallis tests with Benjamini, Krieger and Yekutieli correction for multiple comparisons. Data are representative of three independent experiments.
Figure 3Correlation matrices of relationships between integrated fluorescence, number of foci and parameters of dissemination. Spearman rank correlation matrices of the associations between existing measurements of outcome of bacterial infection; integrated fluorescence (IF) and number of foci and our new measures of dissemination; fluor50, grid analysis (Grid), polygon area (Polygon) and IFDmax in (a) the images of Mycobacterium marinum (Mm) infected larvae used to develop our analysis tools (n = 27) and (b) the Mm dose titration experiment (n = 99). Data presented in (a) were derived from three independent experiments and (b) are representative of three independent experiments.
Figure 4Comparison of localised and systemic Mycobacterium marinum (Mm) infection. (a) Representative images are shown for zebrafish larvae four days after either localised hindbrain ventricle (HBV) infection (n = 14) or systemic intravenous (IV) infection (n = 15) with 100 cfu Mm. Scale bars, 500 µm. Existing outcome measures, integrated fluorescence (IF), a surrogate for total bacterial burden (b) and the number of fluorescent bacterial foci (c) and dissemination parameters, fluor50 (d), grid analysis (e), polygon area (f) and IFDmax (g) are presented. Data points represent individual zebrafish larvae. Lines and error bars represent median ± IQR. p values were derived from Mann-Whitney tests. Data are representative of three independent experiments. See also Supplementary Fig. S7.
QuantiFish workflow and programming.
| Workflow | Steps | Measurement Name | Package Functions Used |
|---|---|---|---|
| Load Image | Open image | PIL Image Class | |
| Convert to array | numpy.array | ||
| Basic Statistics | Fetch minimum and maximum intensity values | Minimum, Maximum | numpy.min, numpy.max |
| Apply user-defined | |||
| Count positive pixels | Positive Pixels | numpy.count_nonzero | |
| Calculate integrated intensity | Integrated Intensity | numpy.sum | |
| Find Foci | Quantify local maxima (points of peak intensity) | Total Peaks | skimage.feature.peak_local_max |
| Assign ID labels to confluent objects | skimage.measure.label | ||
| Quantify the number of pixels associated with each object | Total Foci | numpy.unique | |
| Filter foci list based on | |||
| Count objects larger than the size filter | Large Foci | numpy.sum | |
| Exclude staining in foci below size limit | |||
| Quantify pixels in positive foci | Positive Pixels in Large Foci | numpy.count_nonzero | |
| Quantify integrated intensity within positive foci | Integrated Intensity in Large Foci | numpy.sum | |
| Count local maxima in filtered foci | Peaks in Large Foci | skimage.feature.peak_local_max | |
| Foci Statistics | Construct an array of statistics for each focus | Foci Area, Average, Max, Min and Integ. Intensity | skimage.measure.regionprops |
| Record stats for each focus larger than the | |||
| Generate list of centroid coordinates for large foci | |||
| Fluor50 | Sort the focus statistics list by integrated intensity | ||
| Calculate percent fluorescence contributed by each object | Foci Percent Intensity | ||
| Calculate cumulative percent fluorescence | Foci Cumulative Percent Intensity | numpy.cumsum | |
| Determine fluor50 by linear interpolation | Fluor50 | scipy.interpolate.interp1d | |
| Spatial Statistics | Create blank array the size of the original image | numpy.zeros | |
| Plot foci centroid coordinates on blank array | |||
| Split array into grid segments of user-defined | numpy.array_split | ||
| Consider segment positive if any centroids are present | numpy.max | ||
| Count positive and total segments | Total Grid Boxes, Positive Grid Boxes | ||
| Generate convex polygon using centroid coordinates | Foci Polygon Area | scipy.spatial.ConvexHull | |
| Select centroids which generate the polygon | scipy.spatial.ConvexHull.vertices | ||
| Construct a distance matrix between selected points | scipy.spatial.distance_matrix | ||
| Find maximum distance between foci from matrix | IFDmax | scipy.spatial.distance.euclidean |
The workflow and package functions used to generate the measurements produced by QuantiFish.