Sign inSign up

fnndsc/pl-lld_chxr

By fnndsc

•Updated 7 months ago

A ChRIS plugin to analyze the result produced by an LLD analysis

Image
0

5.3K

fnndsc/pl-lld_chxr repository overview

⁠A ChRIS plugin to analyze the result produced by an LLD analysis

Version MIT License ci

pl-lld_chxr is a ChRIS⁠ ds plugin which takes in LLD (leg length discrepancy) analysis results (e.g. JSON files) and produces filtered summaries and annotated images as output.

⁠Abstract

This plugin processes outputs from an LLD analysis pipeline and allows:

  • Filtering based on measurement differences (limb, tibia, femur)
  • Tag-based filtering and parsing
  • Selection of input files via glob patterns
  • Annotating output images with customizable text overlays

⁠Parameter Reference

⁠Input and Filtering Options
ArgumentTypeDefaultDescription
-f, --fileFilterstringjsonInput file filter glob (e.g., json, *.json)

⁠Measurement Settings
ArgumentTypeDefaultDescription
-m, --measurementsUnitstring''Accepted unit for length measurements
-d, --limbDifferencefloatinfMaximum allowed difference between limbs
-b, --tibiaDifferencefloatinfMaximum allowed tibia difference
-r, --femurDifferencefloatinfMaximum allowed femur difference

⁠Tag Parsing Options
ArgumentTypeDefaultDescription
-s, --splitTokenstring''Token used to split input tags
-k, --splitKeyValuestring''Character used to split key-value pairs
-t, --tagInfostring''Accepted tags and their values

⁠Image Output Customization
ArgumentTypeDefaultDescription
--outputImageExtensionstringjpgOutput image file format
-q, --addTextPosstringtopText position on image (top or bottom)
--addTextstring''Text to overlay on output image
--addTextSizefloat5.0Font size of overlay text
--addTextColorstringwhiteText color
--addLineSpacefloat0.5Line spacing (smaller = tighter)

⁠Version
ArgumentDescription
-V, --versionPrint plugin version and exit

⁠Installation

pl-lld_chxr is a ChRIS⁠ plugin, meaning it can run from either within ChRIS or the command-line.

⁠Local Usage

To get started with local command-line usage, use Apptainer⁠ (a.k.a. Singularity) to run pl-lld_chxr as a container:

apptainer exec docker://fnndsc/pl-lld_chxr lld_chxr [--args values...] input/ output/

To print its available options, run:

apptainer exec docker://fnndsc/pl-lld_chxr lld_chxr --help

⁠Examples

lld_chxr requires two positional arguments: a directory containing input data, and a directory where to create output data. First, create the input directory and move input data into it.

mkdir incoming/ outgoing/
mv some.dat other.dat incoming/
apptainer exec docker://fnndsc/pl-lld_chxr:latest lld_chxr [--args] incoming/ outgoing/

⁠Development

Instructions for developers.

⁠Building

Build a local container image:

docker build -t localhost/fnndsc/pl-lld_chxr .
⁠Running

Mount the source code lld_chxr.py into a container to try out changes without rebuild.

docker run --rm -it --userns=host -u $(id -u):$(id -g) \
    -v $PWD/lld_chxr.py:/usr/local/lib/python3.12/site-packages/lld_chxr.py:ro \
    -v $PWD/in:/incoming:ro -v $PWD/out:/outgoing:rw -w /outgoing \
    localhost/fnndsc/pl-lld_chxr lld_chxr /incoming /outgoing
⁠Testing

Run unit tests using pytest. It's recommended to rebuild the image to ensure that sources are up-to-date. Use the option --build-arg extras_require=dev to install extra dependencies for testing.

docker build -t localhost/fnndsc/pl-lld_chxr:dev --build-arg extras_require=dev .
docker run --rm -it localhost/fnndsc/pl-lld_chxr:dev pytest

⁠Release

Steps for release can be automated by Github Actions⁠. This section is about how to do those steps manually.

⁠Increase Version Number

Increase the version number in setup.py and commit this file.

⁠Push Container Image

Build and push an image tagged by the version. For example, for version 1.2.3:

docker build -t docker.io/fnndsc/pl-lld_chxr:1.2.3 .
docker push docker.io/fnndsc/pl-lld_chxr:1.2.3
⁠Get JSON Representation

Run chris_plugin_info⁠ to produce a JSON description of this plugin, which can be uploaded to ChRIS.

docker run --rm docker.io/fnndsc/pl-lld_chxr:1.2.3 chris_plugin_info -d docker.io/fnndsc/pl-lld_chxr:1.2.3 > chris_plugin_info.json

Intructions on how to upload the plugin to ChRIS can be found here: https://chrisproject.org/docs/tutorials/upload_plugin⁠

Tag summary

Content type

Image

Digest

sha256:7dd11cead…

Size

841.7 MB

Last updated

7 months ago

docker pull fnndsc/pl-lld_chxr