SkillAgentSearch skills...

MiNA

MiNA (Mitochondrial Network Analysis) is a project aimed at making the analysis and characterization of mitochondrial network morphology more accurate, faster, and objective. This project currently consists of a set of Python scripts (and JAVA for the user interface) for the Fiji distribution of ImageJ.

Install / Use

/learn @StuartLab/MiNA
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

MiNA - ImageJ Tools for Mitochondrial Morphology Research

About the Project

MiNA (Mitochondrial Network Analysis) is a ImageJ based utility to aid in quantitatively describing the appearance of mitochondrial morphology in fluorescence micrographs of well resolved and labelled mitochondrial structures. The tool was developed as a result of adherent mammalian cell culture work in the laboratory of Dr. Jeff Stuart at Brock University and is based off of other analysis pipelines. It has since been altered to provide a more intuitive interface, additional options, and output.

Project Road Map

The links listed below provide a starting point for using, modifying, and discussing the project.

  • :book: The Publication - The publication regarding the original macros. Look at Processing Pipeline and Usage for more up to date and thorough information.
  • :computer: Source Code - Fork the project and get hacking.
  • :question: Issue Tracking - Submit bugs or feature requests here. Be sure to check the closed issues as well! We may have addressed a concern already.

Processing Pipeline and Usage

<details> <summary>Determing the Area/Volume of Mitochondria</summary> </br>

MiNA extracts morphological information from two simplifications of the image. One is a binary representation, which simply represents pixels as containing signal or being background. This is generated by automatic thresholding, a good overview of which available on the Auto Threshold page. There are many thresholding methods available through ImageJ Ops. The methods included are listed below. If you find an issue arises using a specific thresholding method, please open an issue using the GitHub issue tracker (only a subset were tested). </br>

<table> <tbody> <tr> <td> <ul> <li>huang<sup>[4]</sup></li> <li>iji<sup>[5]</sup></li> <li>intermodes<sup>[6]</sup></li> <li>li<sup>[7]</sup></li> <li>maxEntropy<sup>[8]</sup></li> <li>maxLikelihood<sup></sup></li> </ul> </td> <td> <ul> <li>mean<sup>[10]</sup></li> <li>minError<sup>[11]</sup></li> <li>minimum<sup>[6]</sup></li> <li>moments<sup>[12]</sup></li> <li>otsu<sup>[13]</sup></li> <li>percentile<sup>[14]</sup></li> </ul> </td> <td> <ul> <li>rentyiEntropy<sup>[9]</sup></li> <li>rosin<sup></sup></li> <li>shanbhag<sup>[15]</sup></li> <li>triangle<sup>[16]</sup></li> <li>yen<sup>[17]</sup></li> </ul> </td> </tr> </tbody> </table>

Once the image has been binarized, the area or volume can be estimated by simply counting the number of signal positive pixels/voxels and multiplying by the area or volume of the pixel/voxel approximated as a rectangle or rectangular prism. In the binarized image, magenta represents the signal positive pixels, while the background pixels are black. This binarized copy is overlaid upon the original image after processing as an accuracy/artifact check measure. The area or volume of the image occupied by signal is returned as the mitochondrial footprint, the units of which will depend on how the image has been calibrated. You can check the image calibration under Image → Properties.

</details> <details> <summary>Skeleton Analysis</summary> </br>

A second simplification is made to the image for the purpose of estimating the lengths of the midlines extracted from segmented mitochondrial structures and the extend of branching. The simplification is the generation of a morphological skeleton from which polylines can be extracted and analyzed (as is accomplished by the Analyze Skeleton <sup>[1]</sup> plugin). The skeleton itself can be generated in two ways. The first, iterative thinning, is the method used in the original macros and produces a skeleton by iteratively removing outer pixels until a one pixel wide structure remains. This is accomplished through the Skeletonize (2D/3D) plugin's methods and has the added benefit of operating on 3D datasets as well as 2D. To use this method, mitochondria must be well resolved such that the individual mitochondria can be completely segmented from each other when the binary is generated. </br>

Ridge detection has also been incorporated and generates a skeleton not from a binary but by using the fluorescence intensity itself. This is accomplished through the methods afforded by the Ridge Detection <sup>[2][3]</sup> plugin. Ridge detection requires additional parameters, which are to be supplied at the prompt. It is easier to tune the parameters in the Ridge Detection plugin itself as it provides a preview mode. The parameters used are high contrast, low contrast, line width, and minimum length. Note that for Ridge Detection preview, images must be 8-bit. If your image is not 8-bit you must convert it using Image → Type. If using MiNA, there is no need to convert; it will be done automatically.</br>

The information extracted from the morphological skeleton is the mean, median and standard deviation of the branch lengths for each independent feature and the number of branches in each network. No data is removed, so a feature that is simply a vertex, a rod without any branching points, or a complicated highly branched network will all be used when determining the length and branch count parameters. The information is summarized from the output of the Analyze Skeleton<sub>[1]</sub> plugin methods. Once processed, the skeleton is overlaid in green for assessing the faithfulness of the skeleton. Yellow and blue dots are also overlaid, representing the end points and junctions of the skeleton respectively.</br>

It is <b>mandatory</b> that users ensure the morphological skeleton can be accurately generated for their system of interest. The analysis tool is typically not suitable for extremely clumped mitochondria, poorly resolved images, or images with low contrast. The overlay (or 3D render) is intended as a means to assess whether the model from which the parameters are generated will be meaningful or not.

</details> <details> <summary>Input Parameters</summary> <table> <tbody> <tr><td>Parameter</td><td>Description</td></tr> <tr><td>Pre-processor path (optional)</td><td>The path to an ImageJ script or macro to run before the analysis is run. This is typically used to run user defined preprocessing operations on the image before it is analyzed, such as expanding the histogram range, reducing noise by filtering, or deconvolving the image. It is optional</td></tr> <tr><td>Post-processor path (optional)</td><td>The path to an ImageJ compatible script or macro to be run when the analysis completes. This can be used to trigger saving a copy of the data, plotting the current data stored in the ResultsTable window, and much more. It is optional.</td></tr> <tr><td>Threshold method</td><td>The algorithm used to determine the threshold value. Note that the analysis expects a positive signal. The analysis will fail if the intensity is inverted.</td></tr> <tr><td>User comment</td><td>A user comment to store in the table. This supports key-value pairs, which is useful for storing condition information. For example, if I wanted a column "oxygen" and a column "glucose" to store the culture conditions, I could use the comment "oxygen=18,glucose=high" to add the value 18 to a column titled oxygen and the value high to another column titled glucose.</td></tr> </tbody> </table>

<b>Ridge Detection</b>

<table> <tbody> <tr><td>Use ridge detection (2D only)</td><td>Check if ridge detection is to be used. If it is unchecked, the analysis will proceed with iterative thinning to generate the morphological skeleton. Note that ridge detection is only available for 2D images currently.</td></tr> <tr><td>High contrast</td><td></td></tr> <tr><td></td><td>This defines the High Contrast value for the ridge detection plugin.</td></tr> <tr><td>Low contrast</td><td>This defines the Low Contrast value for the ridge detection plugin.</td></tr> <tr><td>Line width</td><td>The expected width of the line like mitochondrial features.</td></tr> <tr><td>Line length</td><td>The minimum line length to be included in the analysis. Setting this above 0 can aid in removing spurious small lines.</td></tr> </tbody> </table>

<b> Median Filter</b></br> Smooths each pixel by replacing each pixel with the neighbourhood median.

<table> <tbody> <tr><td>Radius</td><td>Size of the neighbourhood</td></tr> </tbody> </table>

<b>Unsharp Mask</b></br> Sharpens and enhances edges by subtracting a blurred version of the image (the unsharp mask) from the original. The unsharp mask is created by Gaussian blurring the original image and then multiplying by the “Mask Weight” parameter.

<table> <tbody> <tr><td>Radius (sigma)</td><td>Increase the Guassian blur radius sigma to increase contrast</td></tr> <tr><td>Mask weigth</td><td>increase value for additional edge enhancement</td></tr> </tbody> </table>

<b>Enhance Local Contrast CLAHE</b></br> Enhances local contrast of the image.

<table> <tbody> <tr><td>block size</td><td>the size of the local region around a pixel for which the histogram is equalized. This size should be larger than the size of features to be preserved.</td></tr> <tr><td>histogram bins</td>
View on GitHub
GitHub Stars32
CategoryDevelopment
Updated2mo ago
Forks9

Languages

Java

Security Score

90/100

Audited on Jan 5, 2026

No findings