Source code for pygfa.graph_element.parser.gap

import re

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

[docs]class Gap(line.Line): def __init__(self): super().__init__('G') REQUIRED_FIELDS = { \ 'gid' : fv.GFA2_OPTIONAL_ID, \ 'sid1' : fv.GFA2_REFERENCE, \ 'sid2' : fv.GFA2_REFERENCE, \ 'distance' : fv.GFA2_INT, \ 'variance' : fv.GFA2_OPTIONAL_INT \ } @classmethod
[docs] def from_string(cls, string): """Extract the Gap fields from the string. The string can contains the G character at the begin or can only contains the fields of the Gap directly. """ if len(string.split()) == 0: raise line.InvalidLineError("Cannot parse the empty string.") fields = re.split('\t', string) gfields = [] if fields[0] == 'G': fields = fields[1:] if len(fields) < len(cls.REQUIRED_FIELDS): raise line.InvalidLineError("The minimum number of field for " + "Gap line is not reached.") gap = Gap() gid_f = fv.validate(fields[0], cls.REQUIRED_FIELDS['gid']) gfields.append(line.Field('gid', gid_f)) sid1_f = fv.validate(fields[1], cls.REQUIRED_FIELDS['sid1']) gfields.append(line.Field('sid1', sid1_f)) sid2_f = fv.validate(fields[2], cls.REQUIRED_FIELDS['sid2']) gfields.append(line.Field('sid2', sid2_f)) disp_f = fv.validate(fields[3], cls.REQUIRED_FIELDS['distance']) gfields.append(line.Field('distance', disp_f)) variance_f = fv.validate(fields[4], cls.REQUIRED_FIELDS['variance']) gfields.append(line.Field('variance', variance_f)) for field in fields[5:]: gfields.append(line.OptField.from_string(field)) for field in gfields: gap.add_field(field) return gap
if __name__ == '__main__': # pragma: no cover pass