@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(pdbName); sb.append('\t'); sb.append(resNum.getChainName()); sb.append('\t'); sb.append(resNum.getSeqNum()); if (resNum.getInsCode() != null) sb.append(resNum.getInsCode()); sb.append('\t'); return sb.toString(); }
public static StructureGroup fromXML(Node n) { String chainID = getAttribute(n, "chainID"); String pdbName = getAttribute(n, "pdbName"); String insCode = getAttribute(n, "insCode"); String resN = getAttribute(n, "residueNr"); String isAminoAcid = getAttribute(n,"isAminoAcid"); ResidueNumber resNum = new ResidueNumber(); resNum.setChainName(chainID); if ( ( insCode != null) && (! insCode.equals("null")) && insCode.length() == 1) resNum.setInsCode(insCode.charAt(0)); resNum.setSeqNum(Integer.parseInt(resN)); StructureGroup g = new StructureGroup(resNum, pdbName, Boolean.valueOf(isAminoAcid)); return g; }
@Override public boolean equals(Object obj) { if (obj == this) return true; if (!(obj instanceof StructureGroup)) return false; StructureGroup aGroup = (StructureGroup) obj; if (!resNum.equals(aGroup.resNum)) return false; return true; }
public void setResidueNumber(int seqNr){ if ( resNum == null) resNum = new ResidueNumber(); resNum.setSeqNum(seqNr); }
public void setInsCode(Character c){ if ( resNum == null) resNum = new ResidueNumber(); resNum.setInsCode(c); }
public ResidueRange(String chainName, String start, String end) { this.chainName = chainName; this.start = ResidueNumber.fromString(start); this.start.setChainName(chainName); this.end = ResidueNumber.fromString(end); this.end.setChainName(chainName); }
/** * The method will return a new reference to a Chain with any consecutive groups * having same residue numbers removed. * This is necessary to solve the microheterogeneity issue in entries like 3u7t (see github issue #160) * @param c * @return */ private static Chain removeSeqResHeterogeneity(Chain c) { Chain trimmedChain = new ChainImpl(); ResidueNumber lastResNum = null; for (Group g:c.getAtomGroups()) { // note we have to deep copy this, otherwise they stay linked and would get altered in addGroup(g) ResidueNumber currentResNum = new ResidueNumber( g.getResidueNumber().getChainName(), g.getResidueNumber().getSeqNum(), g.getResidueNumber().getInsCode()); if (lastResNum == null || !lastResNum.equals(currentResNum) ) { trimmedChain.addGroup(g); } else { logger.debug("Removing seqres group because it seems to be repeated in entity_poly_seq, most likely has hetero='y': "+g); } lastResNum = currentResNum; } return trimmedChain; }
pos1 = residueNumber.getSeqNum(); boolean hasInsertionCode = false; if ( residueNumber.getInsCode() != null) { hasInsertionCode = true; Character insCode = g.getResidueNumber().getInsCode(); if ( insCode != null) header2.append(insCode);
return null; ResidueNumber residueNumber = new ResidueNumber(); Integer resNum = null; String icode = null; residueNumber.setSeqNum(resNum); if ( icode == null) residueNumber.setInsCode(null); else if ( icode.length() > 0) residueNumber.setInsCode(icode.charAt(0)); return residueNumber;
public int getResidueNumber() { return resNum.getSeqNum(); }
/** get the position of PDB residue nr X in the ato marray * * @param pdbresnum pdbresidue number * @param authId chain name * @param atoms atom array * @return */ private static int getPositionForPDBresunm(String pdbresnum, String authId , Atom[] atoms){ ResidueNumber residueNumber = ResidueNumber.fromString(pdbresnum); residueNumber.setChainName(authId); boolean blankChain = authId == null || authId.equalsIgnoreCase("null") || authId.equals("_"); for ( int i =0; i< atoms.length ;i++){ Group g = atoms[i].getGroup(); // match _ to any chain if( blankChain ) { residueNumber.setChainName(g.getChain().getName()); } //System.out.println(g.getResidueNumber() + "< ? >" + residueNumber +"<"); if ( g.getResidueNumber().equals(residueNumber)){ //System.out.println(g + " == " + residueNumber ); Chain c = g.getChain(); if ( blankChain || c.getName().equals(authId)){ return i; } } } return -1; }
ResidueNumber rn2 = ca2[res2].getGroup().getResidueNumber(); String node1 = name1+rn1.getChainName()+rn1.toString(); String node2 = name2+rn2.getChainName()+rn2.toString(); String last = name1+rn.getChainName()+rn.toString(); for(int i=1;i<ca1.length;i++) { rn = ca1[i].getGroup().getResidueNumber(); String curr = name1+rn.getChainName()+rn.toString(); out.write(String.format("%s\t%s\t%s\n",last, backboneInteraction, curr)); last = curr; ca1.length!=ca2.length || (ca1.length>0 && ca1[0].getGroup()!=null && ca2[0].getGroup()!=null && !ca1[0].getGroup().getResidueNumber().equals(ca2[0].getGroup().getResidueNumber()) ) ) { rn = ca2[0].getGroup().getResidueNumber(); last = name2+rn.getChainName()+rn.toString(); for(int i=1;i<ca2.length;i++) { rn = ca2[i].getGroup().getResidueNumber(); String curr = name2+rn.getChainName()+rn.toString(); out.write(String.format("%s\t%s\t%s\n",last, backboneInteraction, curr)); last = curr;
public String getChainId() { return resNum.getChainName(); }
if ( iCode == ' ') iCode = null; ResidueNumber residueNumber = new ResidueNumber(chainName, Integer.valueOf(resNum), iCode); if ( ! residueNumber.equals(currentGroup.getResidueNumber())) {
public void setChainId(String chainId){ if ( resNum == null) resNum = new ResidueNumber(); resNum.setChainName(chainId); }
@Override public void setResidueNumber(String chainId, Integer resNum, Character iCode) { this.residueNumber = new ResidueNumber(chainId, resNum, iCode); }
for (ResidueNumber residueNumber : linkedGroups) { String pdbCode = residueNumber.toString(); String chain = residueNumber.getChainName();
chain = first.getChainName(); if( ! map.getNavMap().lastKey().getChainName().equals(chain) ) { logger.warn("Multiple possible chains match '_'. Using chain {}",chain); start.setChainName(chain); end.setChainName(chain);
/** * {@inheritDoc} */ @Override public void setChain(Chain chain) { this.parent = chain; //TODO: setChain(), getChainName() and ResidueNumber.set/getChainName() are //duplicating functionality at present and could give different values. if (residueNumber != null) { residueNumber.setChainName(chain.getName()); } }
@Override public int hashCode() { int result = 17; if ( resNum != null) result = result * 31 + resNum.hashCode(); return result; }