Skip to content

Commit 68cf9ba

Browse files
committed
Merge branch 'main' into update-4.x
2 parents a99eff0 + c3b0578 commit 68cf9ba

3 files changed

Lines changed: 10 additions & 12 deletions

File tree

docs/analyze_spectral.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ the values out as observations to get saved out. Can also print out a histogram
1414
- label - Optional label parameter, modifies the variable name of observations recorded. (default `label="default"`)
1515
- **Example use:**
1616
- Below
17-
- **Output data stored:** Data ('max_reflectance', 'min_reflectance', 'median_reflectance', 'spectral_std', 'spectral_frequencies', 'global_mean_reflectance', 'global_median_reflectance', 'global_spectral_std') automatically gets stored to the
17+
- **Output data stored:** Data ('global_mean_reflectance', 'global_median_reflectance', 'global_spectral_std', 'wavelength_means', 'max_reflectance',
18+
'min_reflectance', 'spectral_std', 'spectral_frequencies') automatically gets stored to the
1819
[`Outputs` class](outputs.md) when this function is ran.
1920
These data can always get accessed during a workflow (example below). For more detail about data output see [Summary of Output Observations](output_measurements.md#summary-of-output-observations)
2021

plantcv/plantcv/hyperspectral/analyze_spectral.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def analyze_spectral(array, mask, histplot=None, label="default"):
3939
wavelength_data = array_data[np.where(mask > 0)]
4040

4141
# Calculate mean reflectance across wavelengths
42-
wavelength_freq = wavelength_data.mean(axis=0)
42+
wavelength_means = wavelength_data.mean(axis=0)
4343
max_per_band = wavelength_data.max(axis=0)
4444
min_per_band = wavelength_data.min(axis=0)
4545
std_per_band = wavelength_data.std(axis=0)
@@ -51,14 +51,14 @@ def analyze_spectral(array, mask, histplot=None, label="default"):
5151
# Create lists with wavelengths in float format rather than as strings
5252
# and make a list of the frequencies since they are in an array
5353
new_wavelengths = []
54-
new_freq = []
54+
band_averages = []
5555
new_std_per_band = []
5656
new_max_per_band = []
5757
new_min_per_band = []
5858

5959
for i, wavelength in enumerate(array.wavelength_dict):
6060
new_wavelengths.append(wavelength)
61-
new_freq.append((wavelength_freq[i]).astype(float))
61+
band_averages.append((wavelength_means[i]).astype(float))
6262
new_std_per_band.append(std_per_band[i].astype(float))
6363
new_max_per_band.append(max_per_band[i].astype(float))
6464
new_min_per_band.append(min_per_band[i].astype(float))
@@ -83,9 +83,9 @@ def analyze_spectral(array, mask, histplot=None, label="default"):
8383
trait='pixel-wise standard deviation per band',
8484
method='plantcv.plantcv.hyperspectral.analyze_spectral', scale='None', datatype=float,
8585
value=float(std_reflectance), label='reflectance')
86-
outputs.add_observation(sample=label, variable='global_spectral_std', trait='pixel-wise standard deviation ',
87-
method='plantcv.plantcv.hyperspectral.analyze_spectral', scale='None', datatype=float,
88-
value=float(std_reflectance), label='reflectance')
86+
outputs.add_observation(sample=label, variable='wavelength_means', trait='mean reflectance per band',
87+
method='plantcv.plantcv.hyperspectral.analyze_spectral', scale='reflectance', datatype=list,
88+
value=band_averages, label=wavelength_labels)
8989
outputs.add_observation(sample=label, variable='max_reflectance', trait='maximum reflectance per band',
9090
method='plantcv.plantcv.hyperspectral.analyze_spectral', scale='reflectance', datatype=list,
9191
value=new_max_per_band, label=wavelength_labels)
@@ -95,12 +95,9 @@ def analyze_spectral(array, mask, histplot=None, label="default"):
9595
outputs.add_observation(sample=label, variable='spectral_std', trait='pixel-wise standard deviation per band',
9696
method='plantcv.plantcv.hyperspectral.analyze_spectral', scale='None', datatype=list,
9797
value=new_std_per_band, label=wavelength_labels)
98-
outputs.add_observation(sample=label, variable='spectral_frequencies', trait='spectral frequencies',
99-
method='plantcv.plantcv.hyperspectral.analyze_spectral', scale='frequency', datatype=list,
100-
value=new_freq, label=wavelength_labels)
10198

10299
dataset = pd.DataFrame({'Wavelength (' + array.wavelength_units + ')': new_wavelengths,
103-
'Reflectance': wavelength_freq})
100+
'Reflectance': wavelength_means})
104101
mean_spectra = (ggplot(data=dataset,
105102
mapping=aes(x='Wavelength (' + array.wavelength_units + ')', y='Reflectance'))
106103
+ geom_line(color='purple')

tests/plantcv/hyperspectral/test_analyze_spectral.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ def test_analyze_spectral(hyperspectral_test_data):
1010
mask = cv2.imread(hyperspectral_test_data.hsi_mask_file, -1)
1111
_ = analyze_spectral(array=hyperspectral_test_data.load_hsi(hyperspectral_test_data.hsi_file), mask=mask,
1212
histplot=True, label="prefix")
13-
assert len(outputs.observations['prefix']['spectral_frequencies']['value']) == 978
13+
assert len(outputs.observations['prefix']['wavelength_means']['value']) == 978

0 commit comments

Comments
 (0)