Skip to content

talmolab/sleap-roots

Repository files navigation

sleap-roots

CI codecov Release PyPI

Analysis tools for SLEAP-based plant root phenotyping.

Installation

pip install sleap-roots

If you are using conda (recommended):

conda create -n sleap-roots python=3.11
conda activate sleap-roots
pip install sleap-roots

Usage

Detailed trait documentation per pipeline is available here: sleap-roots HackMD

DicotPipeline

1. Computing traits for a single plant:

import sleap_roots as sr

plant = sr.Series.load(
    "tests/data/canola_7do/919QDUH.h5",
    # Specify the names of the primary and lateral roots for trait calculation
    primary_name="primary",
    lateral_name="lateral"
)
pipeline = sr.DicotPipeline()
traits = pipeline.compute_plant_traits(plant, write_csv=True)

2. Computing traits for a batch of plants:

import sleap_roots as sr

plant_paths = sr.find_all_series("tests/data/soy_6do")
plants = [
    sr.Series.load(
        plant_path,
        # Specify the names of the primary and lateral roots for trait calculation
        primary_name="primary",
        lateral_name="lateral",
    ) for plant_path in plant_paths]

pipeline = sr.DicotPipeline()
all_traits = pipeline.compute_batch_traits(plants, write_csv=True)

3. Computing individual traits:

import sleap_roots as sr
import numpy as np
import numpy as np
# Import utility for combining primary and lateral root points
from sleap_roots.points import get_all_pts_array

plant = sr.Series.load(
    "tests/data/canola_7do/919QDUH.h5",
    primary_name="primary",
    lateral_name="lateral"
)

frame_index = 0
primary_pts = plant.get_primary_points(frame_index)
lateral_pts = plant.get_lateral_points(frame_index)
pts = get_all_pts_array(primary_pts, lateral_pts)
convex_hull = sr.convhull.get_convhull(pts)

YoungerMonocotPipeline

1. Computing traits for a single plant:

import sleap_roots as sr

plant = sr.Series.load(
    "tests/data/rice_3do/0K9E8BI.h5",
    primary_name="primary",
    lateral_name="crown"
)
pipeline = sr.YoungerMonocotPipeline()
traits = pipeline.compute_plant_traits(plant, write_csv=True)

2. Computing traits for a batch of plants:

import sleap_roots as sr

plant_paths = sr.find_all_series("tests/data/rice_3do")
plants = [
    sr.Series.load(
        plant_path,
        primary_name="primary",
        lateral_name="crown"
    ) for plant_path in plant_paths]

pipeline = sr.YoungerMonocotPipeline()
all_traits = pipeline.compute_batch_traits(plants, write_csv=True)

3. Computing individual traits:

import sleap_roots as sr
import numpy as np
from sleap_roots.points import get_all_pts_array

plant = sr.Series.load(
    "tests/data/rice_3do/0K9E8BI.h5",
    primary_name="primary",
    lateral_name="crown"
)

frame_index = 0
primary_pts = plant.get_primary_points(frame_index)
lateral_pts = plant.get_lateral_points(frame_index)
pts = get_all_pts_array(primary_pts, lateral_pts)
convex_hull = sr.convhull.get_convhull(pts)

Tutorials

Jupyter notebooks are located in this repo at sleap-roots/notebooks.

To use them, activate your conda environment which includes JupyterLab (recommended):

conda activate sleap-roots

Clone this repository if you haven't already:

git clone https://github.com/talmolab/sleap-roots.git && cd sleap-roots

Then you can change directories to the location of the notebooks, and open Jupyter Lab:

cd notebooks
jupyter lab

Go through the commands in the notebooks to learn about each pipeline. You can use the test data located at tests/data or copy the notebooks elsewhere for use with your own data!

Development

For development, first clone the repository:

git clone https://github.com/talmolab/sleap-roots && cd sleap-roots

Then, to create a new conda environment and install the package in editable mode:

conda env create -f environment.yml

This will create a conda environment called sleap-roots.

If you have an existing conda environment (such as where you installed SLEAP), you can just install in editable mode directly. First, activate your environment and then:

pip install -e ".[dev]"

Note: The [dev] makes sure that the development-only dependencies are also installed.

To start fresh, just delete the environment:

conda env remove -n sleap-roots

To run tests, first activate the environment:

conda activate sleap-roots

Then run pytest with:

pytest tests

Acknowledgments

This repository was created by the Talmo Lab and Busch Lab at the Salk Institute for Biological Studies as part of the Harnessing Plants Initiative.

Contributors

  • Elizabeth Berrigan
  • Lin Wang
  • Talmo Pereira

Citation

E.M. Berrigan, L. Wang, H. Carrillo, K. Echegoyen, M. Kappes, J. Torres, A. Ai-Perreira, E. McCoy, E. Shane, C.D. Copeland, L. Ragel, C. Georgousakis, S. Lee, D. Reynolds, A. Talgo, J. Gonzalez, L. Zhang, A.B. Rajurkar, M. Ruiz, E. Daniels, L. Maree, S. Pariyar, W. Busch, T.D. Pereira.
"Fast and Efficient Root Phenotyping via Pose Estimation", Plant Phenomics 0: DOI:10.34133/plantphenomics.0175.