use of org.nextprot.api.core.utils.seqmap.GeneMasterCodonPosition in project nextprot-api by calipho-sib.
the class SingleFeatureQuerySuccessImpl method addMappedFeature.
public void addMappedFeature(Isoform isoform, int firstIsoPosition, int lastIsoPosition) {
IsoformFeatureResult result = new IsoformFeatureResult();
result.setIsoformAccession(isoform.getUniqueName());
result.setIsoformName(isoform.getMainEntityName().getName());
result.setBeginIsoformPosition(firstIsoPosition);
result.setEndIsoformPosition(lastIsoPosition);
result.setCanonical(isoform.isCanonicalIsoform());
result.setIsoSpecificFeature(feature.formatIsoSpecificFeature(isoform, firstIsoPosition, lastIsoPosition));
GeneMasterCodonPosition firstCodonOnMaster = IsoformSequencePositionMapper.getCodonPositionsOnMaster(firstIsoPosition, isoform);
GeneMasterCodonPosition lastCodonOnMaster = IsoformSequencePositionMapper.getCodonPositionsOnMaster(lastIsoPosition, isoform);
if (firstCodonOnMaster.isValid() && lastCodonOnMaster.isValid()) {
result.setBeginMasterPosition(firstCodonOnMaster.getNucleotidePosition(0));
result.setEndMasterPosition(lastCodonOnMaster.getNucleotidePosition(2));
}
SequenceVariation proteinVariation = newIsoformSequenceVariation(feature.getProteinVariation(), firstIsoPosition, lastIsoPosition);
setVariantSequenceBuildingInfos(result, isoform.getSequence(), proteinVariation);
data.put(result.getIsoformAccession(), result);
}
use of org.nextprot.api.core.utils.seqmap.GeneMasterCodonPosition in project nextprot-api by calipho-sib.
the class IsoformMappingServiceImpl method propagate.
// TODO: refactor this method, it is too complex (probably a propagator object with strategy pattern for the mapping)
private void propagate(SingleFeatureQuerySuccessImpl successResults) throws ParseException {
SingleFeatureQuery query = successResults.getQuery();
query.setPropagableFeature(true);
SequenceFeature isoFeature = successResults.getIsoformSequenceFeature();
Isoform featureIsoform = isoFeature.getIsoform(successResults.getEntry());
SequenceVariation variation = isoFeature.getProteinVariation();
OriginalAminoAcids originalAminoAcids = getOriginalAminoAcids(featureIsoform.getSequence(), variation);
GeneMasterCodonPosition originalFirstMasterCodonPos = IsoformSequencePositionMapper.getCodonPositionsOnMaster(originalAminoAcids.getFirstAAPos(), featureIsoform);
GeneMasterCodonPosition originalLastMasterCodonPos = IsoformSequencePositionMapper.getCodonPositionsOnMaster(originalAminoAcids.getLastAAPos(), featureIsoform);
// try to propagate the feature to other isoforms
for (Isoform otherIsoform : IsoformUtils.getOtherIsoforms(successResults.getEntry(), featureIsoform.getIsoformAccession())) {
Integer firstIsoPos = IsoformSequencePositionMapper.getProjectedPosition(featureIsoform, originalAminoAcids.getFirstAAPos(), otherIsoform);
Integer lastIsoPos = IsoformSequencePositionMapper.getProjectedPosition(featureIsoform, originalAminoAcids.getLastAAPos(), otherIsoform);
boolean propagable = false;
if (firstIsoPos != null && lastIsoPos != null) {
if (variation.getVaryingSequence().isMultipleAminoAcids()) {
int originalSequenceLength = lastIsoPos - firstIsoPos + 1;
int isoformSequenceLength = originalAminoAcids.getAas().length();
if (originalSequenceLength == isoformSequenceLength) {
String isoformSequence = otherIsoform.getSequence().substring(firstIsoPos - 1, lastIsoPos);
if (isoformSequence.equals(originalAminoAcids.getAas())) {
GeneMasterCodonPosition firstMasterCodonPos = IsoformSequencePositionMapper.getCodonPositionsOnMaster(firstIsoPos, otherIsoform);
GeneMasterCodonPosition lastMasterCodonPos = IsoformSequencePositionMapper.getCodonPositionsOnMaster(lastIsoPos, otherIsoform);
propagable = firstMasterCodonPos.getNucleotidePosition(0).intValue() == originalFirstMasterCodonPos.getNucleotidePosition(0) && lastMasterCodonPos.getNucleotidePosition(2).intValue() == originalLastMasterCodonPos.getNucleotidePosition(2);
}
}
} else // check a single amino-acid
{
propagable = IsoformSequencePositionMapper.checkAminoAcidsFromPosition(otherIsoform, firstIsoPos, originalAminoAcids.getAas());
}
}
if (propagable) {
addPropagation(otherIsoform, firstIsoPos, lastIsoPos, originalAminoAcids.isExtensionTerminal(), successResults);
} else {
successResults.addUnmappedFeature(otherIsoform);
}
}
}
Aggregations