Skip to content

Commit

Permalink
Merge pull request #1594 from danforthcenter/add_metadata_to_outputs
Browse files Browse the repository at this point in the history
Add metadata to outputs
  • Loading branch information
nfahlgren authored Sep 18, 2024
2 parents 0d60cc6 + 9169662 commit 0f0a7f7
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 4 deletions.
2 changes: 2 additions & 0 deletions plantcv/plantcv/analyze/size.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,8 @@ def _analyze_size(img, mask, label):
(255, 0, 255), params.line_thickness)

# Store outputs
outputs.add_metadata(term="image_height", datatype=int, value=np.shape(img)[0])
outputs.add_metadata(term="image_width", datatype=int, value=np.shape(img)[1])
outputs.add_observation(sample=label, variable='area', trait='area',
method='plantcv.plantcv.analyze.size', scale='pixels', datatype=int,
value=area, label='pixels')
Expand Down
9 changes: 8 additions & 1 deletion plantcv/plantcv/classes.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import cv2
import json
import numpy as np
import datetime
from plantcv.plantcv import __version__ as ver
from plantcv.plantcv import fatal_error
from plantcv.plantcv.annotate.points import _find_closest_pt
import matplotlib.pyplot as plt
Expand Down Expand Up @@ -150,7 +152,7 @@ def add_metadata(self, term, datatype, value):
# Save the observation for the sample and variable
self.metadata[term] = {
"datatype": str(datatype),
"value": value
"value": [value]
}

# Method to save observations to a file
Expand All @@ -164,6 +166,11 @@ def save_results(self, filename, outformat="json"):
:param filename: str
:param outformat: str
"""
# Add current date & time to metadata in UTC format
run_datetime = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S.%fZ")
self.add_metadata(term="run_date", datatype=str, value=run_datetime)
self.add_metadata(term="plantcv_version", datatype=str, value=ver)

if outformat.upper() == "JSON":
if os.path.isfile(filename):
with open(filename, 'r') as f:
Expand Down
6 changes: 3 additions & 3 deletions tests/plantcv/test_outputs.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ def test_save_results_csv(test_data, tmpdir):
results = fp.read()
with open(test_data.outputs_results_csv, "r") as fp:
test_results = fp.read()
assert results == test_results
assert results[-18:] == test_results[-18:]


def test_save_results_csv_add_metadata(tmpdir):
Expand All @@ -96,8 +96,8 @@ def test_save_results_csv_add_metadata(tmpdir):
outputs.save_results(filename=outfile, outformat="csv")
with open(outfile, "r") as fp:
results = fp.read()
x = slice(0, 33)
assert results[x] == "add_date,sample,trait,value,label"
x = slice(0, 58)
assert results[x] == "add_date,run_date,plantcv_version,sample,trait,value,label"


def test_add_metadata_invalid_type():
Expand Down

0 comments on commit 0f0a7f7

Please sign in to comment.