Am 09.08.15 um 18:45 schrieb Eric Martz:
> Some PDB files have alternate locations (altlocs) for some atoms. Each
> atom that has altlocs is marked with an altloc identifier, typically A
> and B.
>
> In some cases, {%A}.count does not equal {%B}.count.
> For example, in *1ab9*:
>
> {%A}.count is 45
> {%B}.count is 38
>
> *How can I select the atoms in {%A} that have no corresponding atoms in
> {%B}? *
The following user-defined function should do the job. As parameter you
provide an atom set (e.g. "{*}" for all atoms) and the altLoc id.
In addition to the selection it does also print an overview on the
altLoc distribution as a hash dump.
It needs a Jmol version near 14.3.14 because it makes use of the latest
multi-level hash syntax options.
----- altLoc Selection Function -------------
function selectUniqueAltloc(atom_set, altloc_id) {
var altloc_list = {};
var result_list = [];
var altloc_atoms = select(x; {@atom_set}; x.altloc!="");
for (var altloc_atom IN altloc_atoms) {
var atom_key = altloc_atom.atomname + "_" + altloc_atom.group + "_"
+ altloc_atom.resno + altloc_atom.insertion + ":" + altloc_atom.chain
+ "-" + altloc_atom.modelindex;
if (altloc_list[atom_key].type != "hash") {
altloc_list[atom_key] = {};
}
altloc_list[atom_key]..[altloc_atom.altloc] = altloc_atom;
}
print " ==== altLoc overview ======";
print altloc_list;
for (var atom_key in altloc_list) {
if (altloc_list[atom_key].keys.size == 1) {
if (altloc_list[atom_key]..[altloc_id] != "") {
result_list.push(altloc_list[atom_key]..[altloc_id]);
}
}
}
select result_list;
}
-----------------------------------------------
The function calls for the two questions would look like this:
selectUniqueAltloc({*}, "A");
selectUniqueAltloc({*}, "B");
Regards,
Rolf
------------------------------------------------------------------------------
_______________________________________________
Jmol-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jmol-users