Source code for pygfa.graph_element.parser.edge

import re

from pygfa.graph_element.parser import line
from pygfa.graph_element.parser import field_validator as fv

[docs]class Edge(line.Line): def __init__(self): super().__init__('E') REQUIRED_FIELDS = { \ 'eid' : fv.GFA2_OPTIONAL_ID, \ 'sid1' : fv.GFA2_REFERENCE, \ 'sid2' : fv.GFA2_REFERENCE, \ 'beg1' : fv.GFA2_POSITION, \ 'end1' : fv.GFA2_POSITION, \ 'beg2' : fv.GFA2_POSITION, \ 'end2' : fv.GFA2_POSITION, \ 'alignment' : fv.GFA2_ALIGNMENT \ } @classmethod
[docs] def from_string(cls, string): """Extract the Edge fields from the string. The string can contains the E character at the begin or can only contains the fields of the Edge directly. """ if len(string.split()) == 0: raise line.InvalidLineError("Cannot parse the empty string.") fields = re.split('\t', string) efields = [] if fields[0] == 'E': fields = fields[1:] if len(fields) < len(cls.REQUIRED_FIELDS): raise line.InvalidLineError("The minimum number of field for " + "Edge line is not reached.") edge = Edge() eid_f = fv.validate(fields[0], cls.REQUIRED_FIELDS['eid']) efields.append(line.Field('eid', eid_f)) sid1_f = fv.validate(fields[1], cls.REQUIRED_FIELDS['sid1']) efields.append(line.Field('sid1', sid1_f)) sid2_f = fv.validate(fields[2], cls.REQUIRED_FIELDS['sid2']) efields.append(line.Field('sid2', sid2_f)) beg1_f = fv.validate(fields[3], cls.REQUIRED_FIELDS['beg1']) efields.append(line.Field('beg1', beg1_f)) end1_f = fv.validate(fields[4], cls.REQUIRED_FIELDS['end1']) efields.append(line.Field('end1', end1_f)) beg2_f = fv.validate(fields[5], cls.REQUIRED_FIELDS['beg2']) efields.append(line.Field('beg2', beg2_f)) end2_f = fv.validate(fields[6], cls.REQUIRED_FIELDS['end2']) efields.append(line.Field('end2', end2_f)) alignment_f = fv.validate(fields[7], cls.REQUIRED_FIELDS['alignment']) efields.append(line.Field('alignment', alignment_f)) for field in fields[8:]: efields.append(line.OptField.from_string(field)) for field in efields: edge.add_field(field) return edge
if __name__ == '__main__': # pragma: no cover pass