
Reversible Linkages Linkages in BuildAMol are directional; they are defined to regulate the flow of atoms from one molecule (source) into another molecule (target) by aligning some atoms and deleting others. Previously, one had to define linkages with these molecule roles specifically in mind. Now, when two molecules are connected, they automatically check if the Linkage can be applied in the desired direction and if not, whether the linkage can be applied in reverse (i.e. by reversing target and source roles). Thus, linkages should now be more reusable and widely applicable than before. Linkages can also be manually reversed using Linkage.reverse(). Note that reversal currently only works for linkages that do not specify internal coordinates. Linkages with internal coordinates can still be reversed, but their internal coordinates are dropped in the process! Here is an example import buildamol as bam mol_A = bam.molecule("CCl") mol_B = bam.molecule("CCO") # define linkage using A as target and B as source link = bam.linkage("C1", "O1", delete_in_target=["CL1"]) # this same linkage object can be used to # link both A<-B and B<-A mol_AB = bam.connect(mol_A, mol_B, link) # ✅ mol_BA = bam.connect(mol_B, mol_A, link) # ✅ (in <= 1.2.9 this would not have worked) Changed Bond Inference Previously, the method Molecule.infer_bonds_for would accept any identifier that points to a Residue and infer all bonds for atoms within that residue. This has been changed and can now also work with Atoms directly. As a consequence, the method from now on only accepts Residue and Atom instances and cannot work with arbitrary identifiers anymore. The substitute methods infer_bonds_for_residues and infer_bonds_for_atoms retain the original behaviour of accepting identifiers. Improved Molecule Organisation Several new features have been introduced to help with organising molecules. The most notable are: Splitting contiguous atom groups If a single input file contains multiple separate molecules (e.g. complexed molecules) the new Molecule.split_contiguous method can split these into multiple residues based on atom connectivity (requires bonds to be set or inferred beforehand). Splitting residues into Molecules Similar to the above functionality, the Molecule.split_residues method will assign each residue to a separate new Molecule and return a list of Molecules. This is an in-place operation and will leave the original Molecule empty. Chain compression Similar to the already existing functionality of collapsing molecules down to a single chain (Molecule.squash and Molecule.squash_chains), a new method Molecule.collapse_chains now turns all residues within each chain into a single residue but does not alter the chain organisation. Improved child/parent object references All container classes (Residues, Chains, Models) now have an accessible attribute that provides a more intuitive name to their child_list attribute. I.e. Residue.child_list can now be accessed as Residue.atoms, or Chains.child_list is now synonymous to Chains.residues etc. Inversely, the Molecule.set_parent method now allows the reassignment of children to new parents in another and more straightforward way. Extensions Biobb-Amber Solvation Backend The solvate backend can now also use biobb_amber to solvate molecules in addition to the already available PDBFixer. Extended Bio-Protein features The sequence function can now be used to retrieve the amino acid sequence from a peptide Molecule. Conversion tools for 3-1 letter code translation (and vice versa) are also available. The newamino_acids access point can be used to obtain amino acids via their 1-letter code, 3-letter code, or full names in code. For example via: from buildamol.extensions.bio.proteins import amino_acids # amino acids (individual new molecules) can be obtained via amino_acids.proline # names # or amino_acids.R # 1-letter # or amino_acids.SER # 3-letter Other changes xyz format is now supported
| selected citations These citations are derived from selected sources. This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | 0 | |
| popularity This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network. | Average | |
| influence This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | Average | |
| impulse This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network. | Average |
