def __init__(self, seq, encoder=AminoAcid, mods=None, parse=True, parser_ignore=None, mod_position='right'):
    '\n        :param mod_position\n        Indicate the position of the modifications relative to the base block it is supposed to modify\n        :type mod_position: str\n        :param mods\n        Dictionary whose keys are the positions within the sequence and values are array of modifications at those\n        positions\n        :type mods: dict\n        :param encoder\n        Class for encoding of sequence.\n        :type encoder: BaseBlock\n        :param seq\n        String or array of strings or array of AminoAcid objects. The parser will recursively look over each string at\n        deepest level and identify individual modifications or amino acids for processing\n        :type seq: iterable\n        Python iterable where the deepest level is a string\n            \n        '
    if (type(seq) is not Sequence):
        if (not mods):
            self.mods = {}
        else:
            self.mods = mods
        self.encoder = encoder
        if (not parser_ignore):
            self.parser_ignore = []
        else:
            self.parser_ignore = parser_ignore
        self.seq = []
        current_mod = []
        current_position = 0
        if parse:
            self.sequence_parse(current_mod, current_position, mod_position, mods, seq)
    else:
        for k in seq.__dict__:
            if (k != 'mods'):
                setattr(self, k, deepcopy(seq.__dict__[k]))
    self.seq_length = len(self.seq)
:param mod_position
Indicate the position of the modifications relative to the base block it is supposed to modify
:type mod_position: str
:param mods
Dictionary whose keys are the positions within the sequence and values are array of modifications at those
positions
:type mods: dict
:param encoder
Class for encoding of sequence.
:type encoder: BaseBlock
:param seq
String or array of strings or array of AminoAcid objects. The parser will recursively look over each string at
deepest level and identify individual modifications or amino acids for processing
:type seq: iterable
Python iterable where the deepest level is a string
def __init__(self, seq, encoder=AminoAcid, mods=None, parse=True, parser_ignore=None, mod_position='right'):
    '\n        :param mod_position\n        Indicate the position of the modifications relative to the base block it is supposed to modify\n        :type mod_position: str\n        :param mods\n        Dictionary whose keys are the positions within the sequence and values are array of modifications at those\n        positions\n        :type mods: dict\n        :param encoder\n        Class for encoding of sequence.\n        :type encoder: BaseBlock\n        :param seq\n        String or array of strings or array of AminoAcid objects. The parser will recursively look over each string at\n        deepest level and identify individual modifications or amino acids for processing\n        :type seq: iterable\n        Python iterable where the deepest level is a string\n            \n        '
    if (type(seq) is not Sequence):
        if (not mods):
            self.mods = {}
        else:
            self.mods = mods
        self.encoder = encoder
        if (not parser_ignore):
            self.parser_ignore = []
        else:
            self.parser_ignore = parser_ignore
        self.seq = []
        current_mod = []
        current_position = 0
        if parse:
            self.sequence_parse(current_mod, current_position, mod_position, mods, seq)
    else:
        for k in seq.__dict__:
            if (k != 'mods'):
                setattr(self, k, deepcopy(seq.__dict__[k]))
    self.seq_length = len(self.seq)