Skip to content

Releases: danforthcenter/plantcv

PlantCV v3.8.0

06 Mar 22:49
a002ab3
Compare
Choose a tag to compare

DOI

  • 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 to plantcv.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

04 Dec 02:05
7cd6ccb
Compare
Choose a tag to compare

DOI

  • 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.
  • Add documentation
    • Underlying functions used in plantcv-workflow.
    • Information about updating PlantCV.
  • 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

28 Oct 19:03
5ce6ace
Compare
Choose a tag to compare
  • 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

11 Oct 16:14
15d38df
Compare
Choose a tag to compare

DOI

  • 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

22 Aug 22:21
dc27ad6
Compare
Choose a tag to compare

DOI

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

16 Jul 21:30
cafdd67
Compare
Choose a tag to compare

DOI

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 using pcv.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

18 Jun 20:59
245232e
Compare
Choose a tag to compare

DOI

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 a json2csv conversion tool for exporting CSV files from the JSON output data
  • plantcv-workflow.py, plantcv-train.py, and plantcv-utils.py are now installed in the environment bin directory
  • pcv.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 use cv2.calcHist instead of np.histogram

PlantCV v3.4.0

31 May 14:12
e226678
Compare
Choose a tag to compare

PlantCV v3.3.0

22 May 04:09
cf90068
Compare
Choose a tag to compare

DOI

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 and histogram 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)
  • Added plantcv.opening and plantcv.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 parallel sub-package.
    • The sub-package contains functions that were originally from the plantcv-pipeline.py script file
    • Renamed plantcv-pipeline.py to plantcv-workflow.py
    • Removed SQLite database and requirements. Data are now output in a JSON-formatted text file
  • plantcv.print_results now outputs data in JSON format
  • The Outputs class now stores data in a single dictionary
  • Added add_observation method to the Outputs 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 from analyze_color

PlantCV v3.2.0

08 Mar 20:18
ad35fe5
Compare
Choose a tag to compare

DOI

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 way plantcv.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 in plantcv.__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 of line_position=0 signifying the bottom of the image, it will now signify the top of the image.
  • Add a line_thickness graphics options to the params 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 in plantcv.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.