A curated list of open technology projects to sustain a stable climate, energy supply, biodiversity and natural resources.

Recent Releases of PlantCV

PlantCV - v4.7

What's Changed

New Contributors

Full Changelog: https://github.com/danforthcenter/plantcv/compare/v4.6...v4.7

Biosphere - Plants and Vegetation - Python
Published by HaleySchuhl 26 days ago

PlantCV - v4.6

What's Changed

New Contributors

Full Changelog: https://github.com/danforthcenter/plantcv/compare/v4.5.1...v4.6

Biosphere - Plants and Vegetation - Python
Published by HaleySchuhl 4 months ago

PlantCV - PlantCV v4.5.1

What's Changed

Full Changelog: https://github.com/danforthcenter/plantcv/compare/v4.5...v4.5.1

Biosphere - Plants and Vegetation - Python
Published by nfahlgren 7 months ago

PlantCV - v4.5

What's Changed

Full Changelog: https://github.com/danforthcenter/plantcv/compare/v4.4...v4.5

Biosphere - Plants and Vegetation - Python
Published by HaleySchuhl 7 months ago

PlantCV - PlantCV v4.4

What's Changed

Full Changelog: https://github.com/danforthcenter/plantcv/compare/v4.3.1...v4.4

Biosphere - Plants and Vegetation - Python
Published by nfahlgren 9 months ago

PlantCV - PlantCV v4.3.1

What's Changed

Full Changelog: https://github.com/danforthcenter/plantcv/compare/v4.3...v4.3.1

Biosphere - Plants and Vegetation - Python
Published by nfahlgren 11 months ago

PlantCV - PlantCV v4.3

What's Changed

New Contributors

Full Changelog: https://github.com/danforthcenter/plantcv/compare/v4.2.1...v4.3

Biosphere - Plants and Vegetation - Python
Published by nfahlgren 11 months ago

PlantCV - v4.2.1

What's Changed

Full Changelog: https://github.com/danforthcenter/plantcv/compare/v4.2...v4.2.1

Biosphere - Plants and Vegetation - Python
Published by HaleySchuhl over 1 year ago

PlantCV - v4.2

What's Changed

New Contributors

Full Changelog: https://github.com/danforthcenter/plantcv/compare/v4.0.1...v4.2

Biosphere - Plants and Vegetation - Python
Published by HaleySchuhl over 1 year ago

PlantCV - PlantCV v4.0.1

DOI

What's Changed

Full Changelog: https://github.com/danforthcenter/plantcv/compare/v4.0...v4.0.1

Biosphere - Plants and Vegetation - Python
Published by nfahlgren over 1 year ago

PlantCV - PlantCV v4.0

Many thanks to all the contributors for all that hard work that has gone into this release!

DOI

What's Changed

New Contributors

Full Changelog: https://github.com/danforthcenter/plantcv/compare/v3.14.3...v4.0

Biosphere - Plants and Vegetation - Python
Published by nfahlgren over 1 year ago

PlantCV - PlantCV v3.14.3

What's Changed

New Contributors

Full Changelog: https://github.com/danforthcenter/plantcv/compare/v3.14.2...v3.14.3

Biosphere - Plants and Vegetation - Python
Published by nfahlgren about 2 years ago

PlantCV - v3.14.2

What's Changed

New Contributors

Full Changelog: https://github.com/danforthcenter/plantcv/compare/v3.14.1...v3.14.2

Biosphere - Plants and Vegetation - Python
Published by HaleySchuhl over 2 years ago

PlantCV - PlantCV v3.14.1

What's Changed

Full Changelog: https://github.com/danforthcenter/plantcv/compare/v3.14...v3.14.1

Biosphere - Plants and Vegetation - Python
Published by nfahlgren over 2 years ago

PlantCV - PlantCV v3.14

What's Changed

New Contributors

Full Changelog: https://github.com/danforthcenter/plantcv/compare/v3.13.4...v3.14

Biosphere - Plants and Vegetation - Python
Published by nfahlgren about 3 years ago

PlantCV - PlantCV v3.13.4

DOI

What's Changed

Full Changelog: https://github.com/danforthcenter/plantcv/compare/v3.13.3...v3.13.4

Biosphere - Plants and Vegetation - Python
Published by nfahlgren over 3 years ago

PlantCV - PlantCV v3.13.3

DOI

What's Changed

Full Changelog: https://github.com/danforthcenter/plantcv/compare/v3.13.2...v3.13.3

Biosphere - Plants and Vegetation - Python
Published by nfahlgren over 3 years ago

PlantCV - PlantCV v3.13.2

DOI

What's Changed

Full Changelog: https://github.com/danforthcenter/plantcv/compare/v3.13.1...v3.13.2

Biosphere - Plants and Vegetation - Python
Published by nfahlgren over 3 years ago

PlantCV - PlantCV v3.13.1

What's Changed

New Contributors

Full Changelog: https://github.com/danforthcenter/plantcv/compare/v3.13.0...v3.13.1

Biosphere - Plants and Vegetation - Python
Published by nfahlgren over 3 years ago

PlantCV - PlantCV v3.13.0

DOI

PlantCV Version 3.13 Updates

  • Update imports to discontinue the deprecation warnings in pcv.watershed
  • Update scikit-image requirement to scikit-image>=0.13
  • Reorganizes our tutorials in several ways:
    • There is now a main tutorials page that is organized as a gallery of tutorial "cards" that can be filtered by keyword tags. Each card has a launch Binder button to access the interactive tutorial and a link to the static tutorial.
    • The tutorial card images and links to notebooks are remote and can be hosted from any GitHub (or other) repository.
    • The static tutorial pages are now grouped in a directory called "tutorials."
    • The static tutorial pages now only have a launch Binder button and render the complete Jupyter notebooks using nbviewer, rather than having a page that recreates the workflow and has a script version of the workflow.
  • Added pcv.transform.gamma_correct which performs gamma correction on the input image (wrapper of the skimage gamma correction function).
  • Updated the debug method in the backend within more miscellaneous functions.
  • Expand the functionality of the metadata matcher portion of plantcv-workflow to support the matching of multiple metadata values.
    • Syntax at the command line (--match id:1,id:2,id:3)
    • Also supports lists in configuration file based parallelization
  • Updates plantcv.hyperspectral.read_data to support Band Sequential (BSQ) in addition to Band Interleaved by Line (BIL) raw data formats for ENVI type multi/hyperspectral datasets.
  • Adds pcv.visualize.obj_sizes function for annotating the sizes of separate objects onto a visualization.
  • Add pcv.visualize. obj_size_ecdf for a new way to visualize: empirical cumulative distribution function (eCDF).
  • Converted to base python classes int and bool since numpy is deprecating np.int and np.bool datatypes.
  • Update the fill_segments function in the morphology sub-package
    • The added observations are corrected.
    • Also return the filled_mask (which is a label image as an output) along with the filled_image as outputs.
    • The filled_img is generate by calling the added colorize_label_img visualization function.

Biosphere - Plants and Vegetation - Python
Published by HaleySchuhl over 3 years ago

PlantCV - PlantCV v3.12.1

DOI

PlantCV Version 3.12.1 Updates

  • Bugfix (from #770 ) for an update since OpenCV function pointPolygonTest was impacting 3 analysis functions from PCV.

  • Numpy is deprecating np.int and np.bool; converted these to base python classes int and bool.

Biosphere - Plants and Vegetation - Python
Published by HaleySchuhl almost 4 years ago

PlantCV - PlantCV v3.12.0

PlantCV Version 3.12 Updates

DOI

  • Updated the pcv.apply_mask(), changed the rgb_img parameter to img since the function is now able to handle grayscale, NIR, and hyperspectral data.
  • Add json datatype check in the add_observation method.
  • Started to move some internal code within functions across the package to start using a debug module rather than having repetitive code for plotting/printing debugging images.
  • Extend the pcv.cluster_contours_splitimg functionality to grayscale images.
  • Added a bounding parameter to pcv.clustered_contours() function so circles can be turned on or off (default behavior as on).
  • Added a pcv.deprecation_warning function for warning statements internal use within functions.
    • Add a "verbose" variable to pcv.params such that users have the option to turn off (deprecation) warnings by setting it to "False".
  • Update and resolve a bug within the random_sample utility function so that it works as intended on datasets with subdirectories.
  • Added a new method (save_results) to the Outputs class. outputs.save_results supports two output formats, JSON and CSV. The code from plantcv.print_results was moved to the save_results method and a deprecation warning is now printed via print_results. When run with outformat = "json", outputs.save_results has the same functionality as plantcv.print_results. When run with outformat = "csv", a single CSV table in "long" format is produced that is compatible with use in R. CSV format is useful for a user who runs workflows only in Jupyter or wants to utilize data for testing from Jupyter. The output format JSON must be used for parallel workflows as before.
    • Users will need to migrate workflows from pcv.print_results(args.result) to pcv.outputs.save_results(args.result) before pcv.print_results is removed.
  • Addition of RGB2CMYK function to PlantCV to allow the conversion of images from the RGB colour space to CMYK colour space and split the channels.
  • Updated the way PlantCV handles subdaily timestamps for parallelization. Now will work with months and days even where there are no years.

Version 3.12.0 breaking changes

  • pcv.apply_mask(), changed the rgb_img parameter to img
  • pcv.cluster_contours_splitimg, changed the rgb_img parameter to img

Biosphere - Plants and Vegetation - Python
Published by HaleySchuhl about 4 years ago

PlantCV - PlantCV v3.11.1

Release v3.11.1

This release is an update of v3.11.0 to correctly trigger a deployment to PyPI and conda-forge.

Biosphere - Plants and Vegetation - Python
Published by nfahlgren about 4 years ago

PlantCV - PlantCV v3.11.0

3.11.0 updates

DOI

  • Added a label parameter to all PlantCV functions that save observations. The label parameter can be used to set a sample name when saving observations. Multiple samples can be saved per image now, allowing for repeated measurements, which simplifies workflows that measure multiple objects or regions of interest
  • Added a sample parameter to Outputs.add_observation. Outputs class observations are now organized under sample names so that multiple samples can be associated with a single workflow.
  • Add function pcv.transform.warp to fuse images that have different size/scale/proportions, e.g. from two (different) cameras in different locations. The function accepts 2 images and 4 pairs of points in order to compute a perspective transformation matrix so the images overlay nicely.
  • Update the function pcv.hyperspectral.analyze_index to be more robust to NaN values and to also only consider finite values when calculating index statistics even when values range to positive or negative infinity.
  • Documentation updates
  • Prioritize the conda-forge channel in environment.yml
  • Minor updates/bug fixes
  • Add conda-forge badge to README
  • Set .gitattributes to use Linux line endings on all platforms
  • A handful of minor changes to functions inside the morphology sub-package.
    • Segment insertion angle was failing on skeleton structures that should have been successful, so a tweak to the part of the algorithm that combines the stem segments into a single object helps.
    • Branch and tip points should be integers.
  • Bugfix within pcv.canny_edge_detect function where the debug parameter had no effect when the line thickness is set.
  • Replaced MAINTAINER command in Dockerfile with LABEL because MAINTAINER is deprecated
  • The workflow parallelization was duplicating the name of the image for the metadata "image". Removed the concatenation of the path (including name) and the name.
  • Moved pcv.resize to the transform sub-packed. Also extended the functionality into the new pcv.transform.resize and pcv.transform.resize_factor.

Version 3.11.0 breaking changes

  • A new sample input was added to the Outputs.add_observations class method.
  • Observations stored in Outputs class instances have an extra hierarchical layer to account for sample names. To access an observation, the sample name needs to be included, for example:
  • pcv.resize deprecated and replaced with pcv.transform.resize and pcv.transform.resize_factor
pcv.outputs.observations["sample_name"]["variable_name"]

Biosphere - Plants and Vegetation - Python
Published by nfahlgren about 4 years ago

PlantCV - PlantCV v3.10.1

DOI

3.10.1 updates:

  • Updates plantcv.plot_image and various other plotting methods to create a new figure for each plot. PlantCV now works better with the %matplotlib notebook plotting method in Jupyter.
  • Fixes an issue where plantcv.visualize.pseudocolor plotted the image even when debug mode was disabled.
  • Various documentation updates, corrections, and reformatting.

Biosphere - Plants and Vegetation - Python
Published by nfahlgren over 4 years ago

PlantCV - PlantCV v3.10.0

DOI

3.10 updates:

  • Integration with GitHub actions.
    • More specifically, makes the deploy packaging Actions job dependent on the proceeding build job. I.e. we should only upload packages to PyPI if tests pass.
  • Update plantcv.auto_crop to allow users to separately parameterize the padding.
    • This edit allows users to add custom padding to the top, bottom, left, and right of a cropped image.
      ‘padding_x’ and ‘padding_y’ can both accept tuples (optionally)
  • Modified the Dockerfile to install dependencies (other than OpenCV) from the requirements.txt file (Dockerfile had previously hardcoded dependencies for PlantCV). The Docker container is now built with the correct dependencies each time without manually updating the Dockerfile.
  • Python multiprocessing was local parallelization (i.e. computing took place where the program plantcv-workflow.py was run). This functionality is maintained by using the dask.distributed LocalCluster option. However, using dask-jobqueue, we now support remote, distributed computing using cluster options available through dask-jobqueue, currently: HTCondorCluster, LSFCluster, MoabCluster, OARCluster, PBSCluster, SGECluster, and SLURMCluster.
  • Add and revise testing to bring code coverage to 100%!
  • Added plantcv.morphology.fill_segments
    • This function propogates the labels of a segmented skeleton to fill a mask, using a watershed algorithm. Data about the area of each filled segments automatically gets store to Outputs.
  • Added a photosynthesis sub-package
    • Refactored plantcv.fluor_fvfm which is now plantcv.photosynthesis.analyze_fvfm to be consistent with the naming of other analysis functions. Also fixed a bug within this function. Previously, the function returned the Fm image to users. Now corrected so that Fv/Fm image is getting returned.
    • Added support for CropReported fluorescence image data. This was achieved by adding a new function, called plantcv.photosynthesis.read_cropreporter, that reads in, reshapes, and pulls out fdark, fmin, and fmax from a .DAT file which also utilizing the metadata recorded about image data in the corresponding .INF file.

Version 3.10 breaking changes:

  • Refactored plantcv.fluor_fvfm which is now plantcv.photosynthesis.analyze_fvfm to be consistent with the naming of other analysis functions. Input parameters are unchanged.

Biosphere - Plants and Vegetation - Python
Published by HaleySchuhl over 4 years ago

PlantCV - PlantCV v3.9.0

DOI

Version 3.9 updates:

  • plantcv.morphology.find_tips and plantcv.morphology.find_branch_pts now saves observations (a list of coordinates of the relevant points identified from a skeleton image) to the Outputs class.
  • Reworked the plantcv.color_palette function to use matplotlib colormaps instead, so users now have a wide range of coloring options.
    • Added three new parameters to pcv.params to control color_palette (and functions that use it). The parameters are color_scale: the name of the colormap, color_sequence: "sequential" or "random", and saved_color_scale: stores the last color scale. The latter is important for the morphology functions to plot results correctly as the colors of the segments need to get reused to match up from function to function.
  • Add plantcv.morphology.analyze_stem
    • This function measures stem height, length, and angle from sorted segments of a skeletonized plant.
    • Plots debug image that shows detected height and angle
  • Internal updates to the plantcv.transform.find_color_card function
    • Updates to the contour sorting algorithm to compensate for changes in the outputs of the OpenCV function cv2.minAreaRect in version 3.4.10. Their updates were having implications in the sensitivity of the PlantCV algorithm and causing colorcards to stop being identified in example images.
    • This function now also stores observations to the Outputs class for the mean/median (user defined) color chip area, height, and width. This functionality should remove the need to to include a size marker for scaling measurements in images that already have a color card.
  • Updates the documentation and README file to fix a few typos/formatting issues and update some content for relevance to the current version of PlantCV.
  • Update/bugfix to plantcv.hyperspectral.calibrate
    • There was a mistake in the calibration code that resulted in the actual algorithm differing slightly from the proposed (raw-dark)/(white-dark).
    • Now also truncate any negative values to 0
  • PEP8 and other miscellaneous code cleanup to clear the way for GitHub Actions
  • Replace prior continuous integration platform with GitHub Actions
  • Add plantcv.spatial_clustering
    • New function that segments features of images based on their distance from each other.
    • Takes a binary mask, minimum number of clusters, which algorithm to use (either “DBSCAN” or “OPTICS”), the maximum distance between two pixels before they can be considered part of the same cluster, and outputs a clustered image as well as the masks of each cluster.
  • Update Dockerfile recipe to fix missing libGL dependency, which was causing an ImportError
  • Update plantcv.hyperspectral.read_data, which is used if mode=”ENVI” during plantcv.readimage so that we now set a default wavelength units to “nm” to enable more flexibility in the image files that we can read in.
  • Bugfix to the data getting saved out to the hue_circular_std observation while running plantcv.analyze_color.
  • Add summary statistics to the observations recorded while running plantcv.analyze_nir so they now include mean, median, and stdev observations in the Outputs class while running NIR workflows.
  • Update the order of debug images plotted to match the order of outputs in plantcv.rectangle_mask and plantcv.threshold.*.
  • Updated and improved documentation for the machine learning tutorial.
  • Update plantcv.threshold.custom_range to be R,G,B instead of B,G,R
  • Added many new indices and completely restructured the spectral index family of options into their own functions beneath the spectral_index sub-package.
    • See here for the latest list of supported spectral indices.
  • Add plantcv.visualize.auto_threshold_methods which aims to assist in streamlining workflow development.
  • Update input parameter in the function plantcv.threshold.custom_range from rgb_img to img since the function also works on grayscale images.
  • Internal enhancements to the plantcv.hyperspectral.extract_index to significantly increase speed and decrease memory needed for hyperspectral workflows.
  • Add plantcv.stdev_filter
    • Creates a grayscale image of pixel-wise standard deviation from a grayscale input image
  • Made two small updates to plantcv.utils.sample_images
    • Removes newline characters from each row of SnapshotInfo.csv
    • Only appends rows of SnapshotInfor.csv to a list for random sampling if the row has image data records
  • Removed a Non-ascii character causing an error.

Version 3.9 breaking changes:

  • Update input parameter in the function plantcv.threshold.custom_range from rgb_img to img since the function also works on grayscale images.
  • Removed plantcv.hyperspectral.extract_index and replaced it with the plantcv.spectral_index subpackage (see above).

Biosphere - Plants and Vegetation - Python
Published by HaleySchuhl almost 5 years ago

PlantCV - PlantCV v3.8.0

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).

Biosphere - Plants and Vegetation - Python
Published by HaleySchuhl about 5 years ago

PlantCV - PlantCV v3.7.0

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

Biosphere - Plants and Vegetation - Python
Published by HaleySchuhl over 5 years ago

PlantCV - 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.

Biosphere - Plants and Vegetation - Python
Published by HaleySchuhl over 5 years ago

PlantCV - PlantCV v3.6.1

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.

Biosphere - Plants and Vegetation - Python
Published by HaleySchuhl over 5 years ago

PlantCV - PlantCV v3.6.0

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

Biosphere - Plants and Vegetation - Python
Published by nfahlgren over 5 years ago

PlantCV - PlantCV v3.5.0

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

Biosphere - Plants and Vegetation - Python
Published by HaleySchuhl almost 6 years ago

PlantCV - PlantCV v3.4.1

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

Biosphere - Plants and Vegetation - Python
Published by nfahlgren almost 6 years ago

PlantCV - PlantCV v3.4.0

DOI

Biosphere - Plants and Vegetation - Python
Published by HaleySchuhl almost 6 years ago

PlantCV - PlantCV v3.3.0

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

Biosphere - Plants and Vegetation - Python
Published by nfahlgren almost 6 years ago

PlantCV - PlantCV v3.2.0

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.

Biosphere - Plants and Vegetation - Python
Published by nfahlgren about 6 years ago

PlantCV - PlantCV v3.1.0

DOI

PlantCV v3.1.0 addresses several bugs and usability issues. Big thanks to @HaleySchuhl and @dschneiderch!

  • All analysis functions now output visualization images rather than attempting to save them directly. This removes the filename input parameter and gives users the flexibility to save, plot, etc. what they want to where they want.
  • A new function pseudocolor was added to give users the ability and flexibility to take grayscale images and colorize them with any matplotlib colormap, autocrop them to the plant (or other object), mask out background, etc. This function can be used with the changes made above to customize visualization of output images. Colorized images have a built-in color scale bar.
  • Due to the changes above, the plot_colorbar function was removed as it's no longer used.
  • Histograms are now plotted with plotnine instead of matplotlib.
  • A Canny edge detection function was added (canny_edge_detect).
  • A color standard card auto-detection method (transform.find_color_card) was added.

Biosphere - Plants and Vegetation - Python
Published by nfahlgren about 6 years ago

PlantCV - PlantCV v3.0.5

DOI

This release modifies the Travis CI build procedure to use dependencies installed from PyPI rather than conda. This should fix issues with deployed versions of PlantCV on PyPI and allow us to identify dependency incompatibilities faster. It also decreased build and testing types by more than half.

Biosphere - Plants and Vegetation - Python
Published by nfahlgren over 6 years ago

PlantCV - PlantCV v3.0.4

DOI

This release fixes an issue that prevents PlantCV from being installed with OpenCV v4, which is not currently supported. The documentation and docstrings were thoroughly revised for correctness, completeness, and consistency. The installation instructions were updated to include methods for installing PlantCV from PyPI and Bioconda.

Biosphere - Plants and Vegetation - Python
Published by nfahlgren over 6 years ago

PlantCV - PlantCV v3.0.3

DOI

PlantCV v3.0.3 fixes some minor issues with PyPI deployment.

Biosphere - Plants and Vegetation - Python
Published by nfahlgren over 6 years ago

PlantCV - PlantCV v3.0.2

DOI

PlantCV v3.0.2 only changes PyPI authentication information.

Biosphere - Plants and Vegetation - Python
Published by nfahlgren over 6 years ago

PlantCV - PlantCV v3.0.1

DOI

PlantCV v3.0.1 adds a new Travis CI build method on git tags that should also trigger auto-deployment to PyPI.

Biosphere - Plants and Vegetation - Python
Published by nfahlgren over 6 years ago

PlantCV - PlantCV v3.0

DOI

With PlantCV v3.0 PlantCV should be available on PyPI (if all goes well). Big thanks to @HaleySchuhl and @dschneiderch for all the pull requests and all the other contributors.

PlantCV v3.0 contains the following new features/changes:

  • plantcv.fill is now significantly faster using a scikit-image backend
  • plantcv.median_blur now allows the kernel size to be asymmetric (a two-element tuple)
  • Fixed issues with Read the Docs rendering
  • Documentation was updated to fix typos, command examples, etc.
  • Some test data was reduced in size to shrink the memory footprint during build tests
  • Fixed some package usage syntax to avoid future method deprecation issues
  • Added color card mask helper function
  • Added color card checker analysis function
  • Added color card auto detection method (thanks to @bhive01 for the method inspiration)
  • Improved code testing coverage to 98%
  • Added method to read raw Bayer images
  • Updated plantcv.fluor_fvfm to accept 8-bit images in addition to 16-bit images
  • Added conda environment YAML configuration files for quick conda installation

Biosphere - Plants and Vegetation - Python
Published by nfahlgren over 6 years ago

PlantCV - PlantCV v3.0.dev2

PlantCV v3.0.dev2 is an early release in the v3 release cycle. A full v3 will be released at a later date. While this is an early release, it should be considered essentially production-ready. Note that this release breaks previous syntax/functionality with the goal of making things easier. Updating existing code to the new styles should be fairly straightforward.

DOI

Overview of changes:

  • The input and output device has been eliminated for all functions. The step counter still exists in the background.
  • The input debug has been eliminated for all functions. It can now be set globally with the class Params: https://plantcv.readthedocs.io/en/latest/params/.
  • The output location of images printed in debug mode can now be set using the plantcv.params.debug_outdir global setting: https://plantcv.readthedocs.io/en/latest/params/
  • Some function arguments were refactored. Many were changed to make it more explicit what type of input image is required. The new vocabulary is generally: img = all image types, rgb_img = RGB images only, gray_img = Grayscale images only, bin_img or mask = Binary images only. Some other inputs were renamed for consistency and/or PEP8 formatting guidelines. All function call changes are summarized here: https://plantcv.readthedocs.io/en/latest/updating/#updating-to-v3.
  • Several functions were removed and replaced with updated versions.
    • define_roi: replaced with the functions in the subpackage roi.
    • analyze_bound: replaced with the functions analyze_bound_horizontal and analyze_bound_vertical.
    • rotate_img: replaced with the function rotate.
    • The threshold functions binary_threshold, adaptive_threshold, otsu_auto_threshold, and triangle_auto_threshold were moved to a new subpackage and are now: plantcv.threshold.binary, plantcv.threshold.gaussian, plantcv.threshold.mean, plantcv.threshold.otsu, plantcv.threshold.triangle.
    • These changes are also summarized here: https://plantcv.readthedocs.io/en/latest/updating/#updating-to-v3.
  • Testing coverage was increased to 94%.
  • Some additional general documentation and docstring reformatting for consistency.
  • The FAQ was updated.

Biosphere - Plants and Vegetation - Python
Published by nfahlgren over 6 years ago

PlantCV - PlantCV v3.0.dev1

PlantCV v3.0.dev1 is an early release in the v3 release cycle. A full v3 will be released at a later date. While this is an early release, it should be considered essentially production-ready.

DOI

Some features already included in the v3 release:

  • Distance transformation
  • Release of PlantCV through Docker containerization
  • Full and tested Python2/3 and OpenCV2/3 compatibility
  • Global settings and simplified API framework
  • New boundary line tools
  • Simplified region of interest (ROI) tools
  • Color correction/standardization
  • Package namespace reorganization
  • Documentation improvements and bug fixes

Biosphere - Plants and Vegetation - Python
Published by nfahlgren almost 7 years ago

PlantCV - PlantCV v2.1

The PlantCV release v2.1 is an update to the v2.0 release. The release contains some minor bug fixes and updated documentation based on feedback we received for the PlantCV v2.0 preprint.

DOI

Biosphere - Plants and Vegetation - Python
Published by nfahlgren over 7 years ago

PlantCV - PlantCV v2.0

The PlantCV release v2.0 marks the final commit used in our upcoming manuscript describing improvements to PlantCV since v1.0. If you are updating from v1, please see our instructions here.

DOI

A brief description of changes since the v1.0 release:

  • Changed license from GPLv2 to MIT
  • Reformatted code for PEP8 compliance
  • General improvements for Python2.7 and 3 compatibility
  • Updated documentation (installation methods, tutorials, contribution guide, function documentation)
  • Added issue and pull request templates
  • Added continuous integration (Travis CI)
  • Added unit test coverage (Coveralls)
  • Added continuous documentation (Read the Docs)
  • Added Jupyter notebook integration
  • Improved metadata parsing
  • Rewrote the parallelization and data management tool in Python (plantcv-pipeline.py)
  • New functions
    • White balance (white_balance)
    • Triangle auto-threshold (triangle_auto_threshold)
    • Otsu auto-threshold (otsu_auto_threshold)
    • Adaptive threshold (adaptive_threshold)
    • Gaussian blur (gaussian_blur)
    • Size marker normalization (report_size_marker_area)
    • Multi-plant detection (cluster_contours, cluster_contours_split_img, rotate_img, shift_img)
    • Combined image processing (get_nir, resize, crop_position_mask)
    • Watershed segmentation (watershed_segmentation)
    • Landmarking functions for morphometrics (acute, acute_vertex, x_axis_pseudolandmarks, y_axis_pseudolandmarks, scale_features)
  • Added machine learning training (plantcv.learn submodule) and classifier tools
    • Training program (plantcv-train.py) with two methods:
      • Naive Bayes (naive_bayes)
      • Naive Bayes multiclass (naive_bayes_multiclass)
    • Classifier (naive_bayes_classifier)

Citation

Gehan MA., Fahlgren N., Abbasi A., Berry JC., Callen ST., Chavez L., Doust AN., Feldman MJ., Gilbert KB., Hodge JG., Steen Hoyer J., Lin A., Liu S., Lizárraga C., Lorence A., Miller M., Platon E., Tessman M., Sax T. 2017. PlantCV v2.0: Image analysis software for high-throughput plant phenotyping. PeerJ Preprints 5:e3225v1. DOI: 10.7287/peerj.preprints.3225v1.

Biosphere - Plants and Vegetation - Python
Published by nfahlgren over 7 years ago

PlantCV - PlantCV v1.1

This is a minor release that adds mkdocs build files to the v1.0 release so that documentation can be built automatically with readthedocs.

DOI

Biosphere - Plants and Vegetation - Python
Published by nfahlgren almost 9 years ago

PlantCV - PlantCV v1.0

PlantCV release v1.0 marks the final commit used in our manuscript [1]. If you want to repeat an analysis from the paper, checkout tag v1.0 after cloning the repository.

  1. Fahlgren N, Feldman M, Gehan MA, Wilson MS, Shyu C, Bryant DW, Hill ST, McEntee CJ, Warnasooriya SN, Kumar I, Ficor T, Turnipseed S, Gilbert KB, Brutnell TP, Carrington JC, Mockler TC, Baxter I (2015) A versatile phenotyping system and analytics platform reveals diverse temporal responses to water availability in Setaria. Molecular Plant, in press.

Biosphere - Plants and Vegetation - Python
Published by nfahlgren almost 10 years ago