Releases: danforthcenter/plantcv
Releases · danforthcenter/plantcv
PlantCV v3.8.0
- Fixed a few missing pages and broken links within the documentation.
- Add
plantcv.hyperspectral.analyze_index
- This function now accepts min/maximum bin labels, or can auto-calculate bins based on image data range.
- Collects frequency data for all integrated indices (mean, median, std, frequency).
- Optionally plots a histogram of frequency values.
- Add links to source code throughout documentation pages. This allows users to more easily find the raw, source code for those interested in learning more of the mechanics of a function than the documentation page provides.
- Adds a
border_width
parameter toplantcv.within_frame
.- Allows the user to specify how many pixels from the image edge they want to consider for detecting out-of-frame objects.
- The default is 1 px, which maintains the previous default behavior.
- Made some updates to the documentation based on usage on Windows.
- Update dependencies in
requirements.txt
- Add
plantcv.roi.roi2mask
which allows user to create a binary mask from any contour. - Added
plantcv.plantcv.visualize.colorspaces
which- Used to quickly view all potential colorspaces, that are often used for thresholding/object segmentation steps.
- Plots out an image will all potential colorspaces, labeled with which colorspace each is, next to the original image.
- Add indices to the
plantcv.hyperspectral.extract_index
function- Add PRI (Photochemical reflectance index)
- Add ARI (anthocyanin reflectance index)
- Add ACI (anthocyanin content index)
- Add and update
plantcv.hyperspectral.analyze_spectral
function- Was storing out information, mainly about the global statistics like the maximum reflectance value for the entire datacube.
- Average reflectance per band was the only per-band measurement that we had been doing but really most of the stats could be per-band rather than global.
- Modify various .npz test data files in code tests (avoid using Numpy object arrays and the pickle module)
- In plantcv.transform.create_color_card_mask() the exclude input option required users to input excluded color chip IDs in descending numerical order.
- Adds
plantcv.threshold.saturation
function for masking saturated pixels.- Any channel at or above a certain threshold
- All channels at or above a certain threshold.
- The user can also pick this threshold (default = 255).
PlantCV v3.7.0
- Dropped Python v2.7 support (https://python3statement.org/).
- Added a Hyperspectral tool sub-package:
- Read in ENVI hyperspectral data with new option for the existing
plantcv.readimage
function. While reading in hyperspectral data a pseudo-rgb image is also created. - Calibrate raw hyperspectral image data with white and dark reference images with
plantcv.hyperspectral.calibrate
. - Calculate indices (e.g. NDVI) from a hyperspectral datacube with
plantcv.hyperspectral.extract_index
. - Extract bands from a hyperspectral datacube that are the closest to user defined wavelengths with
plantcv.hyperspectral.extract_wavelength
. - Add functionality to the existing function
plantcv.apply_mask
that allows users to mask hyperspectral images. - Add documentation pages and edit existing documentation pages to reflect all additions.
- Add a hyperspectral workflow tutorial.
- Read in ENVI hyperspectral data with new option for the existing
- Add documentation
- Underlying functions used in
plantcv-workflow
. - Information about updating PlantCV.
- Underlying functions used in
- Minor update to
plantcv.morphology.segment_sort
to ensure the function is robust. - Enhance various region of interest
plantcv.roi.*
functions to draw the debug image before hitting the fatal error when an ROI extends beyond the image boundaries and start printing a warning if a user defined grid causes ROI's to overlap
PlantCV v3.6.2
- Documentation updates.
- Coerce n to be an integer in
plantcv.util.sample_images
function. - Add regex metadata parsing option to PlantCV workflow.
- Add ISO standard for timestamp separator.
- Minor bug fixes.
PlantCV v3.6.1
- Add a new template for opening an issue for discussions, requesting a new feature, and for reporting an issue/requesting help.
- Give more detail in documentation (how to change version of documentation, types of images compatible with workflow parallelization, example batch script for windows).
- Updates to
plantcv.analyze_color
. Users are given the option to create histograms from data about all available colorspaces or just a subset but data was getting stored out for all channels regardless of the selected colorspace. Update so that only data requested gets saved out (since color frequency data is verbose). - Update method for
plantcv.apply_mask
to make it more robust to the types of data that can get masked. - Bugfix with
plantcv.cluster_contours
to allow number of row and/or columns to exceed 9. - Update method for
plantcv.roi_objects
since the old algorithm fails when a ROI is small enough to be fully enclosed by a contour. - Bugfix for the sorting algorithm within
plantcv.morphology.segment_insertion_angle
since it was overly sensitive. - Update docker.
PlantCV v3.6.0
PlantCV v3.6.0 adds new functionality and fixes several bugs.
Summary of changes
- Updated
pcv.visualize.pseudocolor
to stop scaling the background values - Add image dataset random sampling tool
plantcv-utils.py sample_images
- Added custom ROI polygon tool
pcv.roi.custom
- Added grayscale image value rescaling function
pcv.transform.rescale
- Fixed bug in
pcv.roi_objects
for evaluating the largest contour - Fixed bugs in documentation
- Added function for correcting for non-uniform illumination
pcv.nonuniform_illumination
- Restricted scikit-image dependency to v0.14.2 to bypass an issue with v0.14.3 in Windows
- Added function to generate kernel structuring elements
- Added pip to conda environment dependencies in
environment.yml
- Added improvements to
pcv.morphology
functions- Make it optional for the first segment to be classified as stem regardless in the segment_sort function
- Update method for sorting through segments in the segment_insertion_angle function, makes it quicker and more robust to measuring every leaf.
- Update plotting method for segment_id since the previous method can give a weird artifact when plotting segments that have been combined.
- Update pruning function
- Removing old warnings that aren't really relevant anymore
PlantCV v3.5.0
PlantCV v3.5.0 adds new functionality and fixes several bugs and usability issues.
Summary of changes:
- Added
pcv.analyze_thermal_values
to handle thermal data analysis. - Update Dockerfile
- Added a thermal tutorial
- Added functionality to
pcv.readimage
to allow it to handle .csv format files for thermal imaging. - Add
pcv.visualize.clustered_contours
which creates an image that assists with debugging parameters upstream of usingpcv.cluster_contours
- Bug fix regarding listing observations while running PlantCV parallel workflows.
- Removed legacy format where
pcv.analyze_*
functions returned lists. When a function returns a single image it will no longer store that image inside a list object. - Various documentation updates and improvements
- The function
pcv.within_frame
now stores an observation in addition to returning a boolean to the user
PlantCV v3.4.1
PlantCV v3.4.1 is an intermediate release to address a few issues, particularly with the new JSON output data format.
Summary of changes:
- Updated format of JSON output files
- Added
plantcv-utils.py
script with ajson2csv
conversion tool for exporting CSV files from the JSON output data plantcv-workflow.py
,plantcv-train.py
, andplantcv-utils.py
are now installed in the environmentbin
directorypcv.visualize.pseudocolor
now has the ability to apply custom padding when cropping- Updated skeleton pruning algorithm
- Combined pruning and skeleton segmentation
- Put the iterative pruning method into an internal function
- set roi_type='partial' default for the roi_objects function
- Add fill_holes function that does a flood fill on black holes inside a binary mask
- Various documentation updates and improvements
- Updated the
analyze_nir_intensity
function to usecv2.calcHist
instead ofnp.histogram
PlantCV v3.4.0
PlantCV v3.3.0
PlantCV v3.3.0 adds new functionality and fixes several bugs and usability issues. Big thanks to @HaleySchuhl, @dschneiderch, @JLJ90, @huberma, and @karnoldbio for work and guidance on the updates below.
Summary of changes:
- Added
plantcv.visualize
sub-package- Moved
pseudocolor
andhistogram
into sub-package - Added
colorize_masks
function to sub-package to make false-colored images from a set of binary masks (e.g. output masks from the naive Bayes classifier)
- Moved
- Added
plantcv.opening
andplantcv.closing
functions (removes salt and pepper noise) - Added
plantcv.threshold.custom_range
function (threshold based on upper and lower values) - Added
plantcv.within_frame
function (tests if object, in a binary image, is within the field of view) - Added
plantcv.morphology
sub-package- Added
skeletonize
function to sub-package (skeletonizes a binary image) - Added
prune
function to sub-package (removes spurs from skeleton) - Added
check_cycles
function to sub-package (checks for connected cycles in skeleton) - Added
find_branch_pts
function to sub-package (finds branch points in skeleton) - Added
find_tips
function to sub-package (finds tips in skeleton) - Added
segment_skeleton
function to sub-package (segments a skeleton into component paths) - Added
segment_sort
function to sub-package (sorts segments into primary and secondary groups) - Added
segment_id
function to sub-package (plots/labels segment IDs) - Added
segment_path_length
function to sub-package (calculates segment lengths) - Added
segment_euclidean_length
function to sub-package (calculates segment Euclidean lengths) - Added
segment_curvature
function to sub-package (calculates the ratio of path length to Euclidean length) - Added
segment_angle
function to sub-package (calculates the overall angle of the segment) - Added
segment_insertion_angle
function to sub-package (calculates the angle that a segment intersects another segment) - Added
segment_tangent_angle
function to sub-package (calculates the angle between the tangents of the ends of each segment)
- Added
- Added
parallel
sub-package.- The sub-package contains functions that were originally from the
plantcv-pipeline.py
script file - Renamed
plantcv-pipeline.py
toplantcv-workflow.py
- Removed SQLite database and requirements. Data are now output in a JSON-formatted text file
- The sub-package contains functions that were originally from the
plantcv.print_results
now outputs data in JSON format- The
Outputs
class now stores data in a single dictionary - Added
add_observation
method to theOutputs
class. Allows user to add custom observations to the output - Output observations are stored by a unique variable name along with a trait name, method, scale (units), data type, value, and label(s)
- Keep 1st generation sub contours when using 'largest' in
roi_objects
- In
analyze_color
, color and color property scales now use the conventional scale for each type (e.g. hue is a value from 0-359 degrees while green is a value from 0-255) - Added summary statistics for hue in
analyze_color
: median hue value, circular mean hue value, and the circular mean standard deviation of hue - Removed the
bins
argument fromanalyze_color
PlantCV v3.2.0
PlantCV v3.2.0 adds new functionality and fixes several bugs and usability issues.
Summary of changes:
- Added functionality to the
plantcv.print_results
function. It now allows users to print the data returned, naming the .txt file whatever they would like. - Added complete scripts at the bottom of each PlantCV tutorial in the documentation.
- Added new function
plantcv.roi.multi
, allowing users to specify parameters for a grid of regions of interest (ROIs) or supply a list of centers for ROIs if they are not in a grid arrangement.
Restructure the wayplantcv.analyze_*
functions return outputs. Each function now returns the images so the user can save them. - Enhancements to the
plantcv.pseudocolor
function including the addition of an “image” background option, adding the option to turn off titles/axes and colorbar, and an auto-crop option.
Changed Matplotlib import (now imported globally inplantcv.__init__.py
), fixing the non-fatal warning from setting the matplotlib backend multiple times. - Added debug mode to
plantcv.analyze_color
function.
plantcv.analyze_bound_horizontal
was previously determining line position differently than the rest of the functions in PlantCV. Instead ofline_position=0
signifying the bottom of the image, it will now signify the top of the image. - Add a
line_thickness
graphics options to theparams
class so users can change the line thickness for the functions plotting lines onto images (analyze_object, all ROI functions, analyze_bound_horizontal, analyze_bound_vertical, acute_vertex, x_axis_pseudolandmark, y_axis_pseudolandmark, scale_features, roi_objects, object_composition). - Add a link in the table of contents to the PlantCV Hyperspectral subproject documentation.
- Add an “image” background option to the
plantcv.auto_crop
function. - Improved code testing coverage to 100%.
- Allow string arguments to be case insensitive.
- Added a new option to
roi_type
inplantcv.roi_objects
which allows only the largest contour to to be kept. - Standardize argument order and naming across functions.
- Updated functionality of the
plantcv.plot_hist
function, including adding an optional mask argument and allowing users to save histograms.