package org.nextprot.api.core.domain; import org.jsondoc.core.annotation.ApiObject; import org.jsondoc.core.annotation.ApiObjectField; import org.nextprot.api.core.domain.annotation.AnnotationIsoformSpecificity; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @ApiObject(name = "peptide", description = "The peptide mapping") @Deprecated public class PeptideMapping implements Serializable, IsoformSpecific { private static final long serialVersionUID = 7304469815021872304L; @ApiObjectField(description = "The peptide unique name") private String peptideUniqueName; @ApiObjectField(description = "The peptide evidences") private List<PeptideEvidence> evidences; @ApiObjectField(description = "The peptide isoform specificity") private Map<String, AnnotationIsoformSpecificity> isoformSpecificity; private List<PeptideProperty> properties; public PeptideMapping() { this.isoformSpecificity = new HashMap<>(); } public String getPeptideUniqueName() { return peptideUniqueName; } public void setPeptideUniqueName(String peptideUniqueName) { this.peptideUniqueName = peptideUniqueName; } public void addProperty(PeptideProperty prop) { if (this.properties==null) this.properties= new ArrayList<>(); this.properties.add(prop); } public void addEvidence(PeptideEvidence evidence) { if(this.evidences == null) this.evidences = new ArrayList<>(); this.evidences.add(evidence); } public List<PeptideEvidence> getEvidences() { return this.evidences; } public Map<String, AnnotationIsoformSpecificity> getIsoformSpecificity() { return this.isoformSpecificity; } public void setIsoformSpecificity(Map<String, AnnotationIsoformSpecificity> isoformSpecificity) { this.isoformSpecificity = isoformSpecificity; } public void addIsoformSpecificity(AnnotationIsoformSpecificity newIsoformSpecificity) { String isoName = newIsoformSpecificity.getIsoformAccession(); if(this.isoformSpecificity.containsKey(isoName)) { // add position AnnotationIsoformSpecificity isospec = this.isoformSpecificity.get(isoName); isospec.setFirstPosition(newIsoformSpecificity.getFirstPosition()); isospec.setLastPosition(newIsoformSpecificity.getLastPosition()); } else { this.isoformSpecificity.put(isoName, newIsoformSpecificity); } } /** Obsolete, see mail Amos, 11 May 2015 * A peptide created artificially (SRM peptides) and not observed by breaking natural proteins should not be * counted as being proteotypic otherwise computation of protein existence would be altered. * @return true if the peptide has both properties "is proteotypic" and "is natural" set to "Y" (true) public boolean isProteotypic() { boolean isTypic = false; boolean isNatural = false; if (this.properties!=null) { for (PeptideProperty prop: properties) { if (prop.getNameId()==51 && prop.getValue().equals("Y")) isTypic = true; if (prop.getNameId()==52 && prop.getValue().equals("Y")) isNatural = true; } } return isTypic && isNatural; } */ public boolean isProteotypic() { if (this.properties!=null) { for (PeptideProperty prop: properties) { if (prop.getNameId()==51 && prop.getValue().equals("Y")) return true; } } return false; } public boolean isNatural() { if (this.properties!=null) { for (PeptideProperty prop: properties) { if (prop.getNameId()==52 && prop.getValue().equals("Y")) return true; } } return false; } public boolean isSynthetic() { if (this.properties!=null) { for (PeptideProperty prop: properties) { if (prop.getNameId()==53 && prop.getValue().equals("Y")) return true; } } return false; } /** * * @param isoformName a nextprot isoform unique name (starting with NX_) * @return true if the mapping applies to the isoform otherwise false */ @Override public boolean isSpecificForIsoform(String isoformName) { return this.isoformSpecificity.containsKey(isoformName); } public List<PeptideProperty> getProperties() { return properties; } public void setProperties(List<PeptideProperty> properties) { this.properties = properties; } public static class PeptideEvidence implements Serializable{ private static final long serialVersionUID = -6416415250105609274L; private String peptideName; private String accession; private String databaseName; private String assignedBy; private Long resourceId; private String resourceType; public String getPeptideName() { return peptideName; } public void setPeptideName(String peptideName) { this.peptideName = peptideName; } public String getAccession() { return accession; } public void setAccession(String accession) { this.accession = accession; } public String getDatabaseName() { return databaseName; } public void setDatabaseName(String databaseName) { this.databaseName = databaseName; } public String getAssignedBy() { return assignedBy; } public void setAssignedBy(String assignedBy) { this.assignedBy = assignedBy; } public Long getResourceId() { return resourceId; } public void setResourceId(Long resourceId) { this.resourceId = resourceId; } public String getResourceType() { return resourceType; } public void setResourceType(String resourceType) { this.resourceType = resourceType; } } public static class PeptideProperty implements Serializable { private static final long serialVersionUID = 7484965874568857427L; private Long peptideId; private Long id; private Long nameId; private String name; private String value; private String peptideName; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public Long getPeptideId() { return peptideId; } public void setPeptideId(Long peptideId) { this.peptideId = peptideId; } public String getPeptideName() { return peptideName; } public void setPeptideName(String peptideName) { this.peptideName = peptideName; } public Long getNameId() { return nameId; } public void setNameId(Long nameId) { this.nameId = nameId; } } }