Skip to main content

Tree Ring Analyzer

License MIT PyPI Python Version tests

Tree Ring Analyzer is an automatic framework that allows the segmentation and detection of tree rings on 2D stained microscopy images.

How to install/upgrade it?

Action Command
Install pip install tree-ring-analyzer
Upgrade pip install --upgrade tree-ring-analyzer

How to use it?

  • The input image should be stained microscopy cross-sectional tree-ring image with the format of TIF file.

  • The two input models, pith prediction and ring segmentation, can be downloaded via the links in: model_urls.json

  • Run TreeRingSegmentation(resize=5, pithWhole=False, rotate=True, lossType='H0', removeRing=True, thickness=1).segmentImage(modelRing, modelPith, image), in which:

    • resize: Controls how much your image is scaled down before post-processing (default is 5).
    • pithWhole: True/False. If True, the pith image will not be cropped (default is False).
    • rotate: True/False. If True, FDRS algorithm will be used (default is True).
    • lossType: The type of heuristic function, including 'H0', 'H01', and 'H02' (default is 'H0').
    • removeRing: True/False. If True, IRR algorithm will be used (default is True).
    • thickness: the thickness of output ring (default is 1).
    • modelRing: Choose loaded Keras model for segmenting tree ring boundaries.
    • modelPith: Choose loaded Keras model for segmenting pith.
    • image: The loaded tree cross-sectional image, should be in the shape of (Y, X, 1).
  • The output will consist of:

    • predictedRings: list of detected ring boundaries
    • maskRings: binary prediction of ring boundaries
  • For more details, check the detailed documentation.

Pre-processing

Please run the file preprocessing.py to generate pre-processed data before training, in which:

  • input_path: directory of original images
  • mask_path: directory of ground truths
  • pith_path: directory to save pre-processed images for training pith-prediction model. If None, the pith dataset will not be generated.
  • tile_path: directory to save pre-processed images for training ring-segmentation model. If None, the ring dataset will not be generated.
  • pithWhole: True/False. If True, the pith image will not be cropped (default is False).
  • whiteHoles: True/False. If True, the white holes will be added into ring dataset for augmentation (default is True).
  • gaussianHoles: True/False. If True, the gaussian holes will be added into ring dataset for augmentation (default is False).
  • changeColor: True/False. If True, the order of image channels will be changed for augmentation (default is False).
  • dilate: an integer. If not None, the tree rings in ground truth will be dilated with the given number of iterations before calculating the distance map (default is 10).
  • distance: True/False. If True, distance map will be calculated.
  • skeleton: True/False. If True, the tree rings in ground truth will be skeletonized.

Training

Please run the file training.py to train the pith-prediction or ring-segmentation models, in which:

  • train_input_path: directory of training input path
  • train_mask_path: directory of training mask path
  • val_input_path: directory of validation input path
  • val_mask_path: directory of validation mask path
  • filter_num: the number of filters in UNet architecture (default is [16, 24, 40, 80, 960])
  • attention: True/False. If True, the model will be Attention UNet.
  • output_activation: output activation. In pith prediction, the recommended output activation is 'sigmoid', while in the ring segmentation, the recommended output activation is 'linear'.
  • loss: loss function. In pith prediction, the recommended loss function is bce_dice_loss(bce_coef=0.5), while in the ring segmentation, the recommended loss function is 'mse'.
  • name: name of the saved model
  • numEpochs: number of epochs. In pith prediction, the recommended number is 100, while in the ring segmentation, the recommended number is 30.
  • input_size: size of input. Default is (256, 256, 1).

The outputs will include:

  • models in keras and H5 formats (saved in models folder).
  • history in JSON format (saved in history folder)

Testing

Please run the file test_segmentation.py to test, in which:

  • input_folder: directory of original input path (no pre-processing)
  • mask_folder: directory of original mask path (no pre-processing)
  • output_folder: directory of output path
  • checkpoint_ring_path: directory of trained ring-segmentation model
  • checkpoint_pith_path: directory of trained pith-prediction model
  • csv_file: directory of output csv file
  • pithWhole: True/False. If True, the pith image will not be cropped (default is False).
  • rotate: True/False. If True, FDRS algorithm will be used (default is True).
  • removeRing: True/False. If True, IRR algorithm will be used (default is True).
  • lossType: the type of heuristic function, including 'H0', 'H01', and 'H02' (default is 'H0').
  • thickness: the thickness of output ring (default is 1).

The outputs will include the predicted rings in output folder and csv file (containing the results of the evaluation metrics, including Hausdorff distance, mAR, ARAND, recall, precision, accuracy).

Metadata

Release files for tree-ring-analyzer 0.1.4.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tree-ring-analyzer 0.1.4.6
File Size Uploaded Provenance Actions
tree_ring_analyzer-0.1.4.6.tar.gz 1.1 MB Without provenance Details for tree_ring_analyzer-0.1.4.6.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for tree-ring-analyzer 0.1.4.6
File Interpreter ABI Platform Actions
tree_ring_analyzer-0.1.4.6-py3-none-any.whl Python 3 none any Details for tree_ring_analyzer-0.1.4.6-py3-none-any.whl

Total release size: 2.2 MB

Release files / tree_ring_analyzer-0.1.4.6.tar.gz

Download URL tree_ring_analyzer-0.1.4.6.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
c1f031e66035beb5b5396b43fdcf46b1a1a0cdd04ebeafdd701bf4b483483aec
BLAKE2b-256 checksum
How to use checksums
69dcd78642a75f865f3b4343f284787ffdb335b085c66d453bfd6b5cde529afb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release files / tree_ring_analyzer-0.1.4.6-py3-none-any.whl

Download URL tree_ring_analyzer-0.1.4.6-py3-none-any.whl
Size 1.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
5d36c668e0275dd36583c388544dac147036e2311a6c64f5093641acdb01746b
BLAKE2b-256 checksum
How to use checksums
8461054db5fc24a18ac9425dcbfa4788cf9310aa8b09b81225f5c7ab38adb59e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Security for tree-ring-analyzer 0.1.4.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page