package org.genedb.db.loading; import org.gmod.schema.mapped.Analysis; import org.gmod.schema.mapped.DbXRef; import org.gmod.schema.utils.SimilarityI; import java.util.ArrayList; import java.util.Collection; /** * Represents a similarity record (corresponding to a /similarity qualifier in a PSU "embl" file). * Just a data-holder really. * * @author rh11 * */ public class Similarity implements SimilarityI { private String analysisProgram; private String analysisProgramVersion = ""; private Analysis analysis; // If this is set, it's used instead of analysisProgram and analysisProgramVersion private String organismName; private String geneName; private String product; private DbXRef primaryDbXRef; private Collection<DbXRef> secondaryDbXRefs = new ArrayList<DbXRef>(); private int length; private Double rawScore; private Double eValue; private int overlap; private int queryStart = 0, queryEnd = -1; private int targetStart = 0, targetEnd = -1; private Double identity, ungappedId; private String uniqueIdentifier; public String getAnalysisProgram() { return analysisProgram; } public void setAnalysisProgram(String analysisProgram) { this.analysisProgram = analysisProgram; } public String getAnalysisProgramVersion() { return analysisProgramVersion; } public void setAnalysisProgramVersion(String analysisProgramVersion) { this.analysisProgramVersion = analysisProgramVersion; } public Analysis getAnalysis() { return analysis; } public void setAnalysis(Analysis analysis) { this.analysis = analysis; } public String getOrganismName() { return organismName; } public void setOrganismName(String organismName) { this.organismName = organismName; } public String getGeneName() { return geneName; } public void setGeneName(String geneName) { this.geneName = geneName; } public String getProduct() { return product; } public void setProduct(String product) { this.product = product; } public DbXRef getPrimaryDbXRef() { return primaryDbXRef; } public void setPrimaryDbXRef(DbXRef primaryDbXRef) { this.primaryDbXRef = primaryDbXRef; } public Collection<DbXRef> getSecondaryDbXRefs() { return secondaryDbXRefs; } public void addDbXRef(DbXRef dbXRef) { this.secondaryDbXRefs.add(dbXRef); } public int getLength() { return length; } public void setLength(int length) { this.length = length; } public Double getRawScore() { return rawScore; } public void setRawScore(Double rawScore) { this.rawScore = rawScore; } public Double getEValue() { return eValue; } public void setEValue(Double eValue) { this.eValue = eValue; } public int getOverlap() { return overlap; } public void setOverlap(int overlap) { this.overlap = overlap; } public int getQueryStart() { return queryStart; } public void setQueryStart(int queryStart) { this.queryStart = queryStart; } public int getQueryEnd() { return queryEnd; } public void setQueryEnd(int queryEnd) { this.queryEnd = queryEnd; } public int getTargetStart() { return targetStart; } public void setTargetStart(int targetStart) { this.targetStart = targetStart; } public int getTargetEnd() { return targetEnd; } public void setTargetEnd(int targetEnd) { this.targetEnd = targetEnd; } public Double getId() { return identity; } public void setId(Double id) throws DataError { if (id != null && (id < 0.0 || id > 100.0)) { throw new DataError(String.format("id percentage (%g) must be between 0 and 100", id)); } this.identity = id; } public Double getUngappedId() { return ungappedId; } public void setUngappedId(Double ungappedId) throws DataError { if (ungappedId != null && (ungappedId < 0.0 || ungappedId > 100.0)) { throw new DataError(String.format("ungapped id percentage (%g) must be between 0 and 100", ungappedId)); } this.ungappedId = ungappedId; } public String getUniqueIdentifier() { if (uniqueIdentifier == null) { throw new IllegalStateException("The unique identifier has not been set!"); } return uniqueIdentifier; } public void setUniqueIdentifier(String uniqueIdentifier) { this.uniqueIdentifier = uniqueIdentifier; } @Override public String toString() { return String.format("%s (analysisProgram=%s, version=%s; analysis=%s; " + "organism=%s; gene=%s; product=%s; dbxref=%s (%s); length=%d; raw score=%s; e=%s; " + "overlap=%d; query=%d-%d; target=%d-%d; identity=%s; ungapped id=%s)", uniqueIdentifier, analysisProgram, analysisProgramVersion, analysis, organismName, geneName, product, primaryDbXRef, secondaryDbXRefs, length, rawScore, eValue, overlap, queryStart, queryEnd, targetStart, targetEnd, identity, ungappedId); } }