def __init__(self, parser, writer=None): self.parser = parser self.writer = writer self.graf = graf.Graph() self.tier_hierarchies = [] self.meta_information = None self.primary_data = None
def write(self, outputfile, ag): """Writes an AnnotationGraph object as GrAF files. Parameters ---------- outputfile : str The filename of the output file. The filename should be the header file for GrAF with the extension ".hdr". ag : poioapi.annotationgraph.AnnotationGraph An AnnotationGraph object. The AG object containes the data that will be use for output. """ (basedirname, _) = os.path.splitext(outputfile) self._get_parents(ag.tier_hierarchies) standoffrenderer = graf.StandoffHeaderRenderer( "{0}.hdr".format(basedirname)) for tier_name in self._flatten_hierarchy_elements(ag.tier_hierarchies): annotation_space = tier_name.split(GRAFSEPARATOR)[0] out_graf = graf.Graph() renderer = graf.GrafRenderer("{0}-{1}.xml".format( basedirname, annotation_space)) out_graf.nodes = [ n for n in ag.graf.nodes if n.id.startswith(tier_name) ] out_graf.edges = [ e for e in ag.graf.edges if e.to_node.id.startswith(tier_name) ] out_graf.regions = [ r for r in ag.graf.regions if r.id.startswith(tier_name) ] out_graf.annotation_spaces.add( graf.AnnotationSpace(annotation_space)) out_graf.header.add_dependency(self._parent[tier_name]) out_graf = self._add_root_nodes(ag.graf, annotation_space, out_graf) renderer.render(out_graf) basename = os.path.basename(basedirname) self.standoffheader.datadesc.add_annotation( "{0}-{1}.xml".format(basename, annotation_space), annotation_space) self._add_primary_data(ag.primary_data, basedirname) standoffrenderer.render(self.standoffheader) self._generate_metafile(basedirname, ag.meta_information)
def write(self, outputfile, graf_graph, tier_hierarchies, primary_data=None, meta_information=None): """Writes the converter object as GrAF files. Parameters ---------- outputfile : str The filename of the output file. The filename should be the header file for GrAF with the extension ".hdr". graf_graph : GrAF tier_hierarchies : array_like primary_data : object This object will contain the information to the dataDesc primaryData. meta_information : ElementTree Element tree contains extra information about a specific object. """ (basedirname, _) = os.path.splitext(outputfile) self._get_parents(tier_hierarchies) standoffrenderer = graf.StandoffHeaderRenderer( "{0}.hdr".format(basedirname)) for tier_name in self._flatten_hierarchy_elements(tier_hierarchies): annotation_space = tier_name.split(GRAFSEPARATOR)[0] out_graf = graf.Graph() renderer = graf.GrafRenderer("{0}-{1}.xml".format( basedirname, annotation_space)) out_graf.nodes = [ n for n in graf_graph.nodes if n.id.startswith(tier_name) ] out_graf.edges = [ e for e in graf_graph.edges if e.to_node.id.startswith(tier_name) ] out_graf.regions = [ r for r in graf_graph.regions if r.id.startswith(tier_name) ] out_graf.annotation_spaces.add( graf.AnnotationSpace(annotation_space)) out_graf.header.add_dependency(self._parent[tier_name]) out_graf = self._add_root_nodes(graf_graph, annotation_space, out_graf) renderer.render(out_graf) basename = os.path.basename(basedirname) self.standoffheader.datadesc.add_annotation( "{0}-{1}.xml".format(basename, annotation_space), annotation_space) self._add_primary_data(primary_data, basedirname) standoffrenderer.render(self.standoffheader) self._generate_metafile(basedirname, meta_information)