On 15May2017 13:29, qasimp...@gmail.com <qasimp...@gmail.com> wrote:
I need to get the center of mass (COM) of each half of the ligand shown in the
figure (https://i.stack.imgur.com/dtdul.png). I get the main COM all the
ligand, lets say it is close to C1 atom. In addition to the main COM of all
the ligand, I need to find the COM of each half of the ligand. The atoms of
the first part/half according to the main COM of the ligand are C2, C7, C8 and
C9. As for the second part they are C3, C4, C5 and C6 atoms. The question is
how can I divide the ligand in two parts according to the main COM and
calculate the COM of each divided part (except for the atom closest to the
main COM, C1)? By the way I have multiple ligands. The code should be user
firendly.
Leaving aside that you are using numpy arrays, if sources like you need to
partition an existing array into 2 parts around the dividing element (C1).
Figure out how to find the position of C1 in the array. If your atoms are
unique in the sense that C1 != C2 even if they are both carbon atoms) you could
use the .index method of a list (hoping numpy array support that). But
otherwise, loop over the array until you find the element C1 and return the
index. Write a short function for this purpose, eg (incomplete):
def find_atom(atom, atoms):
for i, a in enumerate(atoms):
if a is the target atom "atom":
return i
raise IndexError("no such atom")
Then all you need to do is:
- figure out _which_ atom is your "C1"
- locate it in the main array of atoms
- extract the left and half subarrays
For the last part, remember that to get a sublist you can write L[a:b] to get
all the elements of L from a up to but excluding b. And that omitting "a"
implies index 0 and omitting "b" implies len(L).
The homework suggestion that the "code should be user firendly" I would take to
imply that the last step should itself be a function, eg:
def partition_atoms(atom, atoms):
which takes your target atom (C1) and the original array, calls find_atom to
locate C1, and returns the left and right sublists.
Cheers,
Cameron Simpson <c...@zip.com.au>
--
https://mail.python.org/mailman/listinfo/python-list