package org.nextprot.api.core.utils.seqmap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nextprot.api.core.domain.Isoform;
/**
* Responsible to search a position from a sequence isoform matching the corresponding master (gene level)
* or other sequence isoforms (protein level)
*/
public class IsoformSequencePositionMapper {
private static final Log logger = LogFactory.getLog(IsoformSequencePositionMapper.class);
public static GeneMasterCodonPosition getCodonPositionsOnMaster(int aaPosition, Isoform isoform) {
logger.debug("gettingCodonPositionOnMaster for isoform " + isoform.getIsoformAccession() + " and aa position " + aaPosition);
return SequencePositionMapper.getCodonPositionOnMaster(aaPosition, isoform.getMasterMapping());
}
public static CodonNucleotideIndices getCodonNucleotideIndices(GeneMasterCodonPosition nuPositions, Isoform isoform) {
logger.debug("getCodonNucleotideIndices for isoform " + isoform.getIsoformAccession() + " and nu positions " + nuPositions );
return SequencePositionMapper.getCodonNucleotideIndices(nuPositions, isoform.getMasterMapping());
}
/**
* Computed the projected position in srcIsoform to trgIsoform
* @param srcIsoform the source isoform
* @param srcPosition the aa position on the src isoform
* @param trgIsoform the isoform to project position on
* @return a position on target isoform or null if cannot project
*/
public static Integer getProjectedPosition(Isoform srcIsoform, int srcPosition, Isoform trgIsoform) {
logger.debug("gettingProjectedPosition of aa at pos " + srcPosition + " of isoform " + srcIsoform.getIsoformAccession() + " on isoform " + trgIsoform.getIsoformAccession() );
logger.debug("gettingCodonPositionOnMaster for isoform " + srcIsoform.getIsoformAccession() + " and aa position " + srcPosition);
GeneMasterCodonPosition codonPositionOnMaster =
SequencePositionMapper.getCodonPositionOnMaster(srcPosition, srcIsoform.getMasterMapping());
logger.debug("getCodonNucleotideIndices for isoform " + trgIsoform.getIsoformAccession() + " and nu positions " + codonPositionOnMaster );
CodonNucleotideIndices codonPositionOnTranscript =
SequencePositionMapper.getCodonNucleotideIndices(codonPositionOnMaster, trgIsoform.getMasterMapping());
return codonPositionOnTranscript.getAminoAcidPosition();
}
public static boolean checkAminoAcidsFromPosition(Isoform isoform, int pos, String aa) {
return SequencePositionMapper.checkAminoAcidsFromPosition(isoform.getSequence(), pos, aa);
}
public static boolean checkSequencePosition(Isoform isoform, int pos, boolean insertionMode) {
return SequencePositionMapper.checkSequencePosition(isoform.getSequence(), pos, insertionMode);
}
}