2 * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3 * Copyright (C) $$Year-Rel$$ The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3
10 * of the License, or (at your option) any later version.
12 * Jalview is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19 * The Jalview Authors are detailed in the 'AUTHORS' file.
23 import jalview.schemes.ResidueProperties;
25 import java.awt.Color;
39 public String resName;
43 public char insCode = ' ';
45 public String resNumIns = null;
49 Color color = Color.lightGray;
54 * this is a temporary value - designed to store the position in sequence that
55 * this atom corresponds to after aligning the chain to a SequenceI object. Do
56 * not rely on its value being correct when visualizing sequence colourings on
57 * the structure - use the StructureSelectionManager's mapping instead.
59 public int alignmentMapping = -1;
63 public float occupancy = 0;
65 public float tfactor = 0;
67 // need these if we ever want to export Atom data
68 // public boolean tfacset=true,occset=true;
69 public boolean isSelected = false;
71 public Atom(String str)
73 atomIndex = Integer.parseInt(str.substring(6, 11).trim());
75 name = str.substring(12, 15).trim();
77 resName = str.substring(17, 20);
78 // JAL-1828 treat MSE Selenomethionine as MET (etc)
79 resName = ResidueProperties.getCanonicalAminoAcid(resName);
81 chain = str.substring(21, 22);
83 resNumber = Integer.parseInt(str.substring(22, 26).trim());
84 resNumIns = str.substring(22, 27).trim();
85 insCode = str.substring(26, 27).charAt(0);
86 this.x = (new Float(str.substring(30, 38).trim()).floatValue());
87 this.y = (new Float(str.substring(38, 46).trim()).floatValue());
88 this.z = (new Float(str.substring(47, 55).trim()).floatValue());
89 // optional entries - see JAL-730
90 String tm = str.substring(54, 60).trim();
93 occupancy = (new Float(tm)).floatValue();
97 occupancy = 1f; // default occupancy
98 // see note above: occset=false;
100 tm = str.substring(60, 66).trim();
103 tfactor = (new Float(tm).floatValue());
108 // see note above: tfacset=false;
113 public boolean equals(Object that)
115 if (this == that || that == null)
119 if (that instanceof Atom)
121 Atom other = (Atom) that;
122 return other.resName.equals(this.resName)
123 && other.resNumber == this.resNumber
124 && other.resNumIns.equals(this.resNumIns)
125 && other.chain.equals(this.chain);
130 public Atom(float x, float y, float z)