X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Fpymol%2FPymolCommands.java;h=08521a28aab9255f373b6788de26b6279739dd81;hb=c1e71094304dcd2b975c485416ec5e25cca30815;hp=ae91aa581954bec873a4314a28ad3fbfaf0b619e;hpb=0b6e9403e96ee9f0d41211b2f90130ff850c4e98;p=jalview.git diff --git a/src/jalview/ext/pymol/PymolCommands.java b/src/jalview/ext/pymol/PymolCommands.java index ae91aa5..08521a2 100644 --- a/src/jalview/ext/pymol/PymolCommands.java +++ b/src/jalview/ext/pymol/PymolCommands.java @@ -1,3 +1,23 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.ext.pymol; import java.awt.Color; @@ -106,21 +126,27 @@ public class PymolCommands extends StructureCommandsBase @Override public List superposeStructures(AtomSpecModel refAtoms, - AtomSpecModel atomSpec, boolean isNucleotide) + AtomSpecModel atomSpec, AtomSpecType specType) { + // https://pymolwiki.org/index.php/Super List commands = new ArrayList<>(); - String refAtomsAlphaOnly = "("+getAtomSpec(refAtoms, true)+" and (altloc '' or altloc 'a'))"; - String atomSpec2AlphaOnly = "("+getAtomSpec(atomSpec, true)+" and (altloc '' or altloc 'a'))"; + String refAtomsAlphaOnly = "(" + getAtomSpec(refAtoms, specType) + + " and (altloc '' or altloc 'a'))"; + String atomSpec2AlphaOnly = "(" + getAtomSpec(atomSpec, specType) + + " and (altloc '' or altloc 'a'))"; // pair_fit mobile -> reference - commands.add(new StructureCommand("pair_fit", - atomSpec2AlphaOnly, refAtomsAlphaOnly)); + // crashes when undo is enabled on 2.5.2 (incentive) + commands.add(new StructureCommand("undo_disable")); + commands.add(new StructureCommand("pair_fit", atomSpec2AlphaOnly, + refAtomsAlphaOnly)); + commands.add(new StructureCommand("undo_enable")); /* * and show superposed residues as cartoon */ - String refAtomsAll = getAtomSpec(refAtoms, false); - String atomSpec2All = getAtomSpec(atomSpec, false); + String refAtomsAll = getAtomSpec(refAtoms, AtomSpecType.RESIDUE_ONLY); + String atomSpec2All = getAtomSpec(atomSpec, AtomSpecType.RESIDUE_ONLY); commands.add(new StructureCommand("show", "cartoon", refAtomsAll + " " + atomSpec2All)); @@ -154,7 +180,7 @@ public class PymolCommands extends StructureCommandsBase * @see https://pymolwiki.org/index.php/Selection_Macros */ @Override - public String getAtomSpec(AtomSpecModel model, boolean alphaOnly) + public String getAtomSpec(AtomSpecModel model, AtomSpecType specType) { StringBuilder sb = new StringBuilder(64); boolean first = true; @@ -185,10 +211,14 @@ public class PymolCommands extends StructureCommandsBase } } sb.append("/"); - if (alphaOnly) + if (specType == AtomSpecType.ALPHA) { sb.append("CA"); } + if (specType == AtomSpecType.PHOSPHATE) + { + sb.append("P"); + } } } return sb.toString(); @@ -262,7 +292,7 @@ public class PymolCommands extends StructureCommandsBase StringBuilder sb = new StringBuilder(128); sb.append("p.").append(attributeName).append("='") .append(attributeValue).append("'"); - String atomSpec = getAtomSpec(atomSpecModel, false); + String atomSpec = getAtomSpec(atomSpecModel, AtomSpecType.RESIDUE_ONLY); return new StructureCommand("iterate", atomSpec, sb.toString()); } @@ -333,4 +363,11 @@ public class PymolCommands extends StructureCommandsBase return CLOSE_PYMOL; } + @Override + public List centerViewOn(List residues) + { + // TODO Auto-generated method stub + return null; + } + }