package uk.co.flax.biosolr.pdbe.fasta; public class PDb { public static class Id { public String id; public Id(String value) { this.id = value; } @Override public String toString() { return id; } @Override public boolean equals(Object that) { if (this == that) return true; if (! (that instanceof Id)) return false; return this.id.equals(((Id)that).id); } @Override public int hashCode() { return id.hashCode(); } } public static class Alignment { private StringBuilder querySeq = new StringBuilder(); private StringBuilder retSeq = new StringBuilder(); // set in constructor private double eValue; private Id pdbId; private String chain; // set by set() methods private Integer queryOverlapStart = null; private Integer queryOverlapEnd = null; private Integer dbOverlapStart = null; private Integer dbOverlapEnd = null; private Double percentIdentity = null; public Alignment(Id pdbId, String chain, double eValue) { this.pdbId = pdbId; this.chain = chain; this.eValue = eValue; } public boolean isComplete() { return percentIdentity != null; } public void addQuerySequence(String q) { querySeq.append(q); } public String getQuerySequenceString() { return querySeq.toString(); } public void setQueryOverlapStart(int n) { queryOverlapStart = n; } public void setQueryOverlapEnd(int n) { queryOverlapEnd = n; } public void addReturnSequence(String r) { retSeq.append(r); } public String getReturnSequenceString() { return retSeq.toString(); } public void setDbOverlapStart(int n) { dbOverlapStart = n; } public void setDbOverlapEnd(int n) { dbOverlapEnd = n; } public void setPercentIdentity(double d) { percentIdentity = d; } public double getPercentIdentity() { return percentIdentity; } public double getEValue() { return eValue; } public Id getPdbId() { return pdbId; } public String getChain() { return chain; } public int getQueryOverlapStart() { if (queryOverlapStart == null) { throw new RuntimeException("queryOverlapStart not set"); } return queryOverlapStart; } public int getQueryOverlapEnd() { if (queryOverlapEnd == null) { throw new RuntimeException("queryOverlapEnd not set"); } return queryOverlapEnd; } public int getDbOverlapStart() { if (dbOverlapStart == null) { throw new RuntimeException("dbOverlapStart not set"); } return dbOverlapStart; } public int getDbOverlapEnd() { if (dbOverlapEnd == null) { throw new RuntimeException("dbOverlapEnd not set"); } return dbOverlapEnd; } public String getPdbIdChain() { return String.format("%s_%s", pdbId.id, chain); } public String toString() { return String.format("[%s:%0.2f]", getPdbIdChain(), eValue); } } }