Christian CortezPlay the 3D version

Research · May 2026 – present

LiDAR phenotyping pipelines

Research pipelines that turn field LiDAR scans into validated plant-trait data researchers can reproduce.

Role
Software Engineering Research Assistant, UW–Madison / USDA collaboration
Status
Ongoing research engineering
Stack
Python, Bash, Linux, FastAPI, pytest, Redis
Source
Research code is not public. This page stays at the level of detail on my resume.
scans processed
1,950+
about 1 TB across 50+ projects
pipeline runtime
60–90 → 20–35 min
before → after
anomalous scans flagged
90–110
checked against manual review
pytest tests
360+
configuration app

The problem

A field phenotyping platform drives LiDAR over crop plots and records encoder and IMU streams alongside it. Researchers need plant traits per plot and per genotype, not raw point clouds.

The engineering problem is trust: a pipeline that is slow, needs hand-edited YAML, or quietly mislabels a plot produces research nobody can rely on.

Architecture

From field scan to research delivery

Field scans combine LiDAR with encoder and IMU streams. The processing pipeline fuses them into 3D point clouds and extracts plant traits. Researchers set algorithm parameters through a FastAPI configuration app that validates them against a schema. Automated quality checks flag anomalous scans, and a validated, snapshotted plot-to-genotype map ties traits to genotypes for the ranking plots delivered to researchers.

  • Field scans to Fusion pipeline
  • Fusion pipeline to Trait extraction
  • Trait extraction to Research delivery
  • Config app to Fusion pipeline (parameters)
  • Trait extraction to Quality checks (check)
  • Plot-to-genotype map to Research delivery (join)
  • Map snapshots are byte-identical, so a rerun months later uses exactly the same plot assignments.
  • Redis caching avoids recomputing intermediate results that have not changed.
  • The configuration app enforces locked fields and previews validation results before a run starts.

Decisions and trade-offs

  1. A configuration app instead of hand-edited YAML

    Researchers change parameters through a FastAPI app that introspects the schema and previews validation.

    Trade-off: More code to maintain than a config file, and far fewer broken runs from a typo.

  2. Quality checks measured like a classifier

    The anomaly checks were evaluated against manual review with precision and recall.

    Trade-off: It needs a manually reviewed sample; in return the checks' reliability is measured, not assumed.

How it is tested

  • 360+ pytest tests cover the configuration app.
  • Anomaly flags were validated against manual review using precision and recall.
  • Pipeline documentation was merged into the main branch through a GitHub pull request.

Outcomes

  • Runtime fell from 60–90 minutes to 20–35 minutes.
  • Researchers at UW and external collaborators receive auto-generated genotype-ranking plots.

Scope: Published research findings belong to the research group; this page describes the engineering only.