Ticket #4010: pseudobond_test.py

File pseudobond_test.py, 1.3 KB (added by daniel.palma.i@…, 5 years ago)

Added by email2trac

Line 
1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3"""
4Created on Thu Dec 3 11:17:08 2020
5
6.. codeauthor:: Daniel Esteban Palma Igor <daniel.palma.i@ug.uchile.cl>
7"""
8
9from chimerax.core.commands import run
10from chimerax.atomic.struct_edit import add_atom
11
12# if num_atoms == 1, the atom is added to the original Chain,
13# but if num_atoms >= 2 a new Chain is created
14num_atoms = 2
15
16def print_chains(info, structure):
17 for chain in structure.chains:
18 info(str(chain))
19 for residue in chain.existing_residues[-5:]:
20 info(str(residue))
21 info("")
22
23def filter_backbone(atoms):
24 return atoms.filter(atoms.is_backbones())
25
26info = session.logger.info
27structure = run(session, "open 2efv")[0][0]
28info(f"num_atoms: {num_atoms}")
29info("Before adding atoms:")
30print_chains(info, structure) # print
31sel_atoms = filter_backbone(structure.atoms)
32last_atom = sel_atoms[-1]
33i = last_atom.residue.number + 1
34pbgroup = structure.pseudobond_group("missing structure")
35chain_id = last_atom.residue.chain_id
36for _ in range(num_atoms):
37 res = structure.new_residue("UNK", chain_id, i)
38 new_atom = add_atom("CA", "C", res, last_atom.coord - 4)
39 pbgroup.new_pseudobond(last_atom, new_atom)
40 last_atom = new_atom
41 i += 1
42info("After adding atoms:")
43print_chains(info, structure) # print