Thanks Chris
> On 5 Oct 2019, at 16:34, Maciek Wójcikowski <mac...@wojcikowski.pl> wrote: > > Paolo and Chris, > > There actually is Rdkit function to do this very task: SplitMolByPDBChainId > http://rdkit.org/docs/source/rdkit.Chem.rdmolops.html#rdkit.Chem.rdmolops.SplitMolByPDBChainId > > <http://rdkit.org/docs/source/rdkit.Chem.rdmolops.html#rdkit.Chem.rdmolops.SplitMolByPDBChainId> > > > sob., 5 paź 2019, 14:42 użytkownik Paolo Tosco <paolo.tosco.m...@gmail.com > <mailto:paolo.tosco.m...@gmail.com>> napisał: > Hi Chris, > > The following, though quite inefficient, will work: > > from rdkit import Chem > mol = Chem.MolFromPDBFile("1CX2.pdb") > chains = {a.GetPDBResidueInfo().GetChainId() for a in mol.GetAtoms()} > chain_mols = {c: Chem.RWMol(mol) for c in chains} > for c, m in chain_mols.items(): > bonds_to_remove = [(b.GetBeginAtomIdx(), b.GetEndAtomIdx()) for b in > m.GetBonds() if b.GetBeginAtom().GetPDBResidueInfo().GetChainId() != c or > b.GetEndAtom().GetPDBResidueInfo().GetChainId() != c] > atoms_to_remove = [a.GetIdx() for a in m.GetAtoms() if > a.GetPDBResidueInfo().GetChainId() != c] > [m.RemoveBond(*b) for b in bonds_to_remove] > [m.RemoveAtom(a) for a in sorted(atoms_to_remove, reverse=True)] > Chem.MolToPDBFile(m, "{0:s}.pdb".format(c)) > > Individual chains are saved to <chain_id.pdb>. > > As chains will be separate fragments, a more efficient way would to use > rdmolops.GetMolFrags(asMols=True) which would avoid the bond/atom removal. > > Sorry for the poor formatting but this is what I could come up with IPython > on the iPhone :-( > > p. > > > On 5 Oct 2019, at 12:46, Chris Swain via Rdkit-discuss > > <rdkit-discuss@lists.sourceforge.net > > <mailto:rdkit-discuss@lists.sourceforge.net>> wrote: > > > > Hi, > > > > I have a number of PDB files (foo.pdb.gz) and I want to separate each chain > > in each file out into a separate file. So if a file contains 4 chains it > > will generate 4 separate files. > > > > Can I do this using RDKit, if so how? > > > > Cheers > > > > Chris > > > > _______________________________________________ > > Rdkit-discuss mailing list > > Rdkit-discuss@lists.sourceforge.net > > <mailto:Rdkit-discuss@lists.sourceforge.net> > > https://lists.sourceforge.net/lists/listinfo/rdkit-discuss > > <https://lists.sourceforge.net/lists/listinfo/rdkit-discuss> > > > _______________________________________________ > Rdkit-discuss mailing list > Rdkit-discuss@lists.sourceforge.net > <mailto:Rdkit-discuss@lists.sourceforge.net> > https://lists.sourceforge.net/lists/listinfo/rdkit-discuss > <https://lists.sourceforge.net/lists/listinfo/rdkit-discuss>
_______________________________________________ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss