Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions clams/app/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ def annotate(self, mmif: Union[str, dict, Mmif], **runtime_params: List[str]) ->
"""
if not isinstance(mmif, Mmif):
mmif = Mmif(mmif)
existing_view_ids = {view.id for view in mmif.views}
issued_warnings = []
for key in runtime_params:
if key not in self.annotate_param_spec:
Expand All @@ -156,7 +157,8 @@ def annotate(self, mmif: Union[str, dict, Mmif], **runtime_params: List[str]) ->
warnings_view = annotated.new_view()
self.sign_view(warnings_view, refined)
warnings_view.metadata.warnings = issued_warnings
td = datetime.now() - t
run_id = datetime.now()
td = run_id - t
runningTime = refined.get('runningTime', False)
hwFetch = refined.get('hwFetch', False)
runtime_recs = {}
Expand All @@ -180,7 +182,8 @@ def annotate(self, mmif: Union[str, dict, Mmif], **runtime_params: List[str]) ->
name, mem = gpu.split(', ')
runtime_recs['cuda'].append(self._cuda_device_name_concat(name, mem))
for annotated_view in annotated.views:
if annotated_view.metadata.app == self.metadata.identifier:
if annotated_view.id not in existing_view_ids and annotated_view.metadata.app == self.metadata.identifier:
annotated_view.metadata.timestamp = run_id
profiling_data = {}
if runningTime:
profiling_data['runningTime'] = str(td)
Expand Down
20 changes: 9 additions & 11 deletions tests/metadata.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
from mmif import AnnotationTypes, DocumentTypes

from clams import AppMetadata

from clams.appmetadata import AppMetadata
from mmif.vocabulary import DocumentTypes, AnnotationTypes

def appmetadata() -> AppMetadata:
metadata = AppMetadata(
name="Example CLAMS App for testing",
description="This app doesn't do anything",
name="Example Clams App",
description="An example app for testing.",
app_license="MIT",
identifier=f"https://apps.clams.ai/example",
output=[{'@type': AnnotationTypes.TimeFrame}],
dependencies=['clams-python==develop-ver', 'mmif-pyhon==0.0.999'],
url="https://fakegithub.com/some/repository"
identifier="example-app",
url="http://example.com/example-app",
)
metadata.add_input(DocumentTypes.TextDocument)
metadata.add_input_oneof(DocumentTypes.AudioDocument, str(DocumentTypes.VideoDocument))
metadata.add_parameter(name='raise_error', description='force raise a ValueError', type='boolean', default='false')
metadata.add_input_oneof(DocumentTypes.VideoDocument, DocumentTypes.AudioDocument)
metadata.add_output(AnnotationTypes.TimeFrame)
metadata.add_parameter(name='raise_error', description='a dummy parameter', type='boolean', default=False)
return metadata
24 changes: 23 additions & 1 deletion tests/test_clamsapp.py
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,9 @@ def test_annotate(self):
self.assertEqual(len(out_mmif.views), 4)
views = list(out_mmif.views)
# insertion order is kept
self.assertTrue(views[0].metadata.timestamp < views[1].metadata.timestamp)
self.assertEqual(views[0].metadata.timestamp, views[1].metadata.timestamp)
self.assertEqual(views[2].metadata.timestamp, views[3].metadata.timestamp)
self.assertTrue(views[1].metadata.timestamp < views[2].metadata.timestamp)

def test_annotate_returns_invalid_mmif(self):
m = Mmif(self.in_mmif)
Expand Down Expand Up @@ -409,6 +411,26 @@ def test_est_gpu_mem_typ_validation(self):
# Should have auto-corrected
self.assertEqual(metadata.est_gpu_mem_typ, metadata.est_gpu_mem_min)

def test_run_id(self):
# first run
out_mmif = Mmif(self.app.annotate(self.in_mmif))
app_views = [v for v in out_mmif.views if v.metadata.app == self.app.metadata.identifier]
self.assertTrue(len(app_views) > 0)
first_timestamp = app_views[0].metadata.timestamp
for view in app_views[1:]:
self.assertEqual(first_timestamp, view.metadata.timestamp)
# second run
out_mmif2 = Mmif(self.app.annotate(out_mmif))
app_views2 = [v for v in out_mmif2.views if v.metadata.app == self.app.metadata.identifier]
self.assertEqual(len(app_views2), len(app_views) * 2)
second_timestamp = app_views2[-1].metadata.timestamp
self.assertNotEqual(first_timestamp, second_timestamp)
for view in app_views2:
if view.id in [v.id for v in app_views]:
self.assertEqual(first_timestamp, view.metadata.timestamp)
else:
self.assertEqual(second_timestamp, view.metadata.timestamp)


class TestRestifier(unittest.TestCase):

Expand Down
Loading