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
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
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))
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))