Re: [AMBER] Assigning am1-bcc charges to a whole library of ligands

From: Liao <>
Date: Mon, 28 Oct 2019 13:55:21 +0800

Thanks for sharing the phenix suite info. Yes basically I was talking about Chimera or MOE being able to automatically recognize net charge on each molecule-is there a simple way of doing it on the command line?

So in the meantime I had written a python script that can read the ion charges in a pdb file (if there are ion charges written). I started with an sdf database of 77 molecules with no H, no ions or any charges. Software like MOE which I am using can automatically assign protonation states, save a molecule in pdb format containing the ion charges (which is column 79 and 80 in the file, mostly N1+ or O1-). However when Chimera saves the newly protonated pdb, it does not write ion charges.

With the ion charges prepared in the pdbs, one can extract those values and determine the net charge for each molecule. The net charge of each molecule is then loaded to the -nc parameter. I've copied and pasted the python3 script below:

import os

for n in range(1, total+1):
    with open (f"{n}.pdb", "r") as file:
        for line in file:
            if str(line.split()[0])=='ATOM' or str(line.split()[0])=='HETATM':
                if line[79]=='+':
                elif line[79]=='-':
        print(f"Net charge for {n}.pdb=",charge)
        print(f"Assigning partial charges for {n}.pdb")
    os.system(f'antechamber -i {n}.pdb -fi pdb -o {n}.mol2 -fo mol2 -at sybyl -c bcc -rn LIG{n} -nc {charge}')

Essentially, this should work once the pdb files and the ion charges inside them are all ready and correct. The pdb file names should contain a sequential number to them.


Sender:David Case <>
Sent At:2019 Oct. 27 (Sun.) 22:12
Recipient:AMBER Mailing List <>
Subject:Re: [AMBER] Assigning am1-bcc charges to a whole library of ligands

On Sat, Oct 26, 2019, Liao wrote:
>I wrote a simple python script to call antechamber from the command line
>and load each and every single ligand for charge assignment and saving
>each as a mol2. It works with one caveat: the net charge parameter for
>each ligand is different, it can be -1, 0, or 1 etc (the -nc parameter),
>but I can only put in one value.

Why can you only put in one value? Isn't this a script that you wrote
yourself? If you don't know the net charge of each ligand, you'll need
some way (i.e. some program that has chemical knowledge) to figure it
out. The "phenix.elbow" program (part of the phenix suite) can do this
(and is what I use for large scale parameterization). Maybe users on
the list can suggest other scriptable software that does this.


AMBER mailing list
AMBER mailing list
Received on Sun Oct 27 2019 - 23:00:02 PDT
Custom Search