Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)