package org.nextprot.api.core.utils.peff;
import org.nextprot.api.commons.constants.AnnotationCategory;
import org.nextprot.api.core.domain.Isoform;
import org.nextprot.api.core.domain.annotation.Annotation;
import java.util.HashMap;
import java.util.Map;
/**
* Created by fnikitin on 05/05/15.
*/
class IsoformProcessingProductPeffFormatter extends IsoformAnnotationPeffFormatter {
private static final Map<AnnotationCategory, String> PSI_PEFF_MAP;
static {
PSI_PEFF_MAP = new HashMap<>();
PSI_PEFF_MAP.put(AnnotationCategory.SIGNAL_PEPTIDE, "SIGNAL");
PSI_PEFF_MAP.put(AnnotationCategory.MATURATION_PEPTIDE, "PROPEP");
PSI_PEFF_MAP.put(AnnotationCategory.MATURE_PROTEIN, "CHAIN");
PSI_PEFF_MAP.put(AnnotationCategory.PEROXISOME_TRANSIT_PEPTIDE, "TRANSIT");
PSI_PEFF_MAP.put(AnnotationCategory.MITOCHONDRIAL_TRANSIT_PEPTIDE, "TRANSIT");
}
IsoformProcessingProductPeffFormatter() {
super(PSI_PEFF_MAP.keySet(), PeffKey.PROCESSED);
}
@Override
public String asPeffValue(Isoform isoform, Annotation... annotations) {
StringBuilder sb = new StringBuilder("");
for (Annotation annotation : annotations) {
if (support(annotation))
sb.append("(").append(annotation.getStartPositionForIsoform(isoform.getUniqueName()))
.append("|").append(annotation.getEndPositionForIsoform(isoform.getUniqueName()))
.append("|").append(PSI_PEFF_MAP.get(annotation.getAPICategory())).append(")");
}
return sb.toString();
}
}