Closed nfahlgren closed 1 year ago
I want to briefly summarize a team meeting with @maliagehan, @HaleySchuhl and @josectovar.
Based on some testing we did, it looks like the simplest approach will be to read hyperspectral images directly with NumPy. This has the advantage of keeping the images in a format that is more easily compatible with existing PlantCV methods and does not increase dependency burden.
Given that, I propose that we actually put the hyperspectral submodule directly in the PlantCV main repository instead of the planned add-on package plan. It's going to be easier to work with the two packages if they are together and we can avoid duplicating CI and documentation infrastructure. We can always split them later if we decide we need to.
Thoughts?
Summary of today's team meeting:
Hyperspectral function wish list:
[X] Read ENVI hyperspectral images #441
[X] Generate a set of standard spectral indices from hyperspectral/multispectral data #443
[x] Analyze_spectral data #458
[x] Add hyperspectral image calibration function #442
[x] analyze_index
which would collect statistics about a specific index, such as mean, median, std? We don't want people to just find the mean of a masked index with numpy, for example, since the masked pixels skew the results if not handled. Observations stored to Outputs
should include which index it was (which should get attached to the array object).
[ ] analyze_derivative
to calculate the first derivative (with user defined interval?). Observations stored will likely look very similar to otheranalyze_*
functions that are storing frequency data. #472
[ ] Data reduction step? Reduce highly correlated bands?
[ ] PLSR
I've been adding unit testing as I go but will add documentation while preparing the branch to actually get merged into master.
Description
@maliagehan has been working on some hyperspectral data-related functions for PlantCV. We discussed the possibility of making these tools optional since there may end up being dependencies that users not working with hyperspectral data may not want/need to install. Based on a discussion in the TERRA-REF project, we are proposing to develop the hyperspectral submodule (and possibly other submodules) as a separate GitHub repository (https://github.com/danforthcenter/plantcv-hyperspectral). We would design it and the main repository in such a way that you could install PlantCV by itself as is done now and optionally install the hyperspectral module into the PlantCV package namespace so that it would function like it's part of the package if it's installed. This way it's optional but we can still do continuous integration testing and everything in the linked repository. We could use this framework for other submodules that could/should be optional.
Details
We will need to do some testing to figure out the best way to structure the submodule. We may need to refactor the main PlantCV repository somewhat to achieve the right structure.
Completion Criteria
This is a discussion/proposal, specific issues should be opened for implementing the various components of this plan.