Source code for owmeta_movement.wcon_ds

import json

from owmeta_core.datasource import DataTranslator
from owmeta_core.data_trans.local_file_ds import LocalFileDataSource
from owmeta.data_trans.data_with_evidence_ds import DataWithEvidenceDataSource
from owmeta.document import SourcedFrom
from owmeta.evidence import Evidence

from . import WormTracks, CONTEXT, WCONWormTracksCreator_2020_07


[docs]class WCONDataSource(LocalFileDataSource): ''' A `LocalFileDataSource` for a *valid* WCON file ''' class_context = CONTEXT
# This is just a marker at this point
[docs]class WCONDataTranslator(DataTranslator): ''' Takes valid WCON data and turns it into WormTracks ''' class_context = CONTEXT input_type = (WCONDataSource,) output_type = DataWithEvidenceDataSource def translate(self, source): with source.file_contents() as wcon: wcon_json = json.load(wcon) res = self.make_new_output((source,)) res.data_context.add_import(WormTracks.definition_context) source_documents = source.attach_property(SourcedFrom).get() if source_documents: res.evidence_context.add_import(Evidence.definition_context) for source_document in source_documents: res.evidence_context(Evidence)( reference=source_document, supports=res.data_context) tracks = res.data_context(WormTracks)(key=res.identifier, direct_key=False) WCONWormTracksCreator_2020_07.fill_in(tracks, wcon_json, context=res.data_context) return res