Пример #1
0
def pack_sequences(structure, lines):
    try:
        for chain in sorted(structure.chains(), key=lambda c: c.id):
            residues = valerius.from_string(chain.sequence).codes
            length = len(residues)
            line_count = ceil(length / 13)
            for line_num in range(line_count):
                lines += ["SEQRES {:>3} {} {:>4}  {}".format(
                 line_num + 1, chain.id, length,
                 " ".join(residues[line_num * 13: (line_num + 1) * 13])
                )]
    except AttributeError: pass
Пример #2
0
def pack_sequences(structure, lines):
    """Adds SEQRES lines from polymer sequence data.

    :param AtomStructure structure: the structure to convert.
    :param list lines: the string lines to update."""

    try:
        for chain in sorted(structure.chains(), key=lambda c: c.id):
            residues = valerius.from_string(chain.sequence).codes
            length = len(residues)
            line_count = ceil(length / 13)
            for line_num in range(line_count):
                lines += [
                    "SEQRES {:>3} {} {:>4}  {}".format(
                        line_num + 1, chain.id, length,
                        " ".join(residues[line_num * 13:(line_num + 1) * 13]))
                ]
    except AttributeError:
        pass
Пример #3
0
def update_lines_with_entities(lines, entities):
    """Updates a list of .cif lines with relevant information about entities.

    :param list lines: the list of lines to update.
    :param list entities: the entities to pack."""

    lines += ["#", "loop_", "_entity.id", "_entity.type"]
    for i, entity in enumerate(entities, start=1):
        lines.append("{} {}".format(i, "polymer" if isinstance(entity, Chain)
         else "water" if entity.water else "non-polymer"))
    if any(isinstance(entity, Chain) for entity in entities):
        lines += ["#", "loop_", "_entity_poly_seq.entity_id",
         "_entity_poly_seq.num", "_entity_poly_seq.mon_id"]
        for ei, entity in enumerate(entities, start=1):
            if isinstance(entity, Chain):
                for ci, code in enumerate(
                 valerius.from_string(entity.sequence).codes, start=1
                ):
                    lines.append("{} {} {}".format(ei, ci, code))
Пример #4
0
def update_lines_with_entities(lines, entities):
    """Updates a list of .cif lines with relevant information about entities.

    :param list lines: the list of lines to update.
    :param list entities: the entities to pack."""

    lines += ["#", "loop_", "_entity.id", "_entity.type"]
    for i, entity in enumerate(entities, start=1):
        lines.append("{} {}".format(i, "polymer" if isinstance(entity, Chain)
         else "water" if entity.is_water else "non-polymer"))
    if any(isinstance(entity, Chain) for entity in entities):
        lines += ["#", "loop_", "_entity_poly_seq.entity_id",
         "_entity_poly_seq.num", "_entity_poly_seq.mon_id"]
        for ei, entity in enumerate(entities, start=1):
            if isinstance(entity, Chain):
                for ci, code in enumerate(
                 valerius.from_string(entity.sequence).codes, start=1
                ):
                    lines.append("{} {} {}".format(ei, ci, code))