/** * @param range : the range to convert * @return the range as a String * If the range is invalid, will return fromIntervalStart-toIntervalEnd */ public static String convertRangeIntoString(Range range) { if (range == null) { throw new IllegalArgumentException("The range cannot be null."); } if (isABadRange(range, null)) { return range.getFromIntervalStart() + RANGE_SEPARATOR + range.getToIntervalEnd(); //throw new IllegalRangeException(getBadRangeInfo(range, null)); } String startPosition = positionToString(range.getFromCvFuzzyType(), range.getFromIntervalStart(), range.getFromIntervalEnd()); String endPosition = positionToString(range.getToCvFuzzyType(), range.getToIntervalStart(), range.getToIntervalEnd()); return startPosition + RANGE_SEPARATOR + endPosition; }
protected Range cloneRange(Range range) throws IntactClonerException { if (range == null) { throw new IllegalArgumentException("You must give a non null range"); } Range clone = new Range(); clonerManager.addClone(range, clone); clone.setFromIntervalStart(range.getFromIntervalStart()); clone.setFromIntervalEnd(range.getFromIntervalEnd()); clone.setToIntervalStart(range.getToIntervalStart()); clone.setToIntervalEnd(range.getToIntervalEnd()); clone.setSequence(range.getSequence()); clone.setFullSequence(range.getFullSequence()); clone.setUpStreamSequence(range.getUpStreamSequence()); clone.setDownStreamSequence(range.getDownStreamSequence()); clone.setFromCvFuzzyType(clone(range.getFromCvFuzzyType())); clone.setToCvFuzzyType(clone(range.getToCvFuzzyType())); clone.setFeature(clone(range.getFeature())); return clone; }
public Range createRange(int beginFrom, int endFrom, int beginTo, int endTo) { Range range = new Range(institution, beginFrom, endTo, null); range.setFromIntervalStart(beginFrom); range.setFromIntervalEnd(endFrom); range.setToIntervalStart(beginTo); range.setToIntervalEnd(endTo); CvFuzzyType fuzzyType = createCvObject(CvFuzzyType.class, "MI:0339", CvFuzzyType.UNDETERMINED); range.setFromCvFuzzyType(fuzzyType); range.setToCvFuzzyType(fuzzyType); return range; }
public Range createRangeCTerminal(int beginFrom, int endFrom, int beginTo, int endTo) { Range range = new Range(institution, beginFrom, endFrom, beginTo, endTo, null); final CvFuzzyType fuzzyType = createCvObject(CvFuzzyType.class, CvFuzzyType.C_TERMINAL_MI_REF, CvFuzzyType.C_TERMINAL); range.setFromCvFuzzyType(fuzzyType); range.setToCvFuzzyType(fuzzyType); return range; }
/** * compare two ranges. * * @param range * @param location * * @return */ public static boolean areRangeEquals( Range range, LocationTag location ) { boolean equals = ( range.getFromIntervalStart() == location.getFromIntervalStart() && range.getFromIntervalEnd() == location.getFromIntervalEnd() && range.getToIntervalStart() == location.getToIntervalStart() && range.getToIntervalEnd() == location.getToIntervalEnd() ); if ( DEBUG ) { System.out.print( "RANGE from " + range.getFromIntervalStart() + ".." + range.getFromIntervalEnd() ); System.out.println( " to " + range.getToIntervalStart() + ".." + range.getToIntervalEnd() ); System.out.print( "LOCATION from " + location.getFromIntervalStart() + ".." + location.getFromIntervalEnd() ); System.out.println( " to " + location.getToIntervalStart() + ".." + location.getToIntervalEnd() ); if ( equals ) { System.out.println( "EQUALS" ); } else { System.out.println( "DIFFERENT" ); } } return equals; }
if ( range.getFromCvFuzzyType() != null ) { CvObject2xmlPSI2.getInstance().createStartStatus( session, locationElement, range.getFromCvFuzzyType() ); } else { if ( range.getFromIntervalStart() == range.getFromIntervalEnd() ) { beginElement.setAttribute( "position", "" + range.getFromIntervalEnd() ); beginElement.setAttribute( "begin", "" + range.getFromIntervalStart() ); beginElement.setAttribute( "end", "" + range.getFromIntervalEnd() ); if ( range.getFromCvFuzzyType() != null ) { CvObject2xmlPSI2.getInstance().createEndStatus( session, locationElement, range.getFromCvFuzzyType() ); } else { if ( range.getToIntervalStart() == range.getToIntervalEnd() ) { endElement.setAttribute( "position", "" + range.getToIntervalEnd() ); endElement.setAttribute( "begin", "" + range.getToIntervalStart() ); endElement.setAttribute( "end", "" + range.getToIntervalEnd() ); if ( range.isLinked() ) {
if ( range.isUndetermined() ) { if ( range.getFromIntervalStart() == range.getFromIntervalEnd() ) { beginElement.setAttribute( "position", "" + range.getFromIntervalEnd() ); beginElement.setAttribute( "begin", "" + range.getFromIntervalStart() ); beginElement.setAttribute( "end", "" + range.getFromIntervalEnd() ); if ( range.getToIntervalStart() == range.getToIntervalEnd() ) { endElement.setAttribute( "position", "" + range.getToIntervalEnd() ); endElement.setAttribute( "begin", "" + range.getToIntervalStart() ); endElement.setAttribute( "end", "" + range.getToIntervalEnd() ); if ( range.isLinked() ) {
int startFrom = range.getFromIntervalStart() - diffStart; int startTo = range.getToIntervalStart() - diffStart; int endFrom = range.getFromIntervalEnd() - diffStart; int endTo = range.getToIntervalEnd() - diffStart; if (startFrom < protein.getStartMatch() || range.getFromIntervalStart() < protein.getStartQuery()){ report.addWarning("The feature range is " + range.getFromIntervalStart() + "-" + range.getToIntervalStart() + " and the alignment with the Swissprot sequence starts after " + range.getFromIntervalStart() + ". We can't change the previous sequence with the sequence of the Swissprot entry because it will be incoherent with the current feature(s) of the protein."); return false; else if (startTo > protein.getEndMatch() || range.getToIntervalStart() > protein.getEndQuery()){ report.addWarning("The feature range is " + range.getFromIntervalStart() + "-" + range.getToIntervalStart() + " and the alignment with the Swissprot sequence finishes before " + range.getToIntervalStart() + ". We can't change the previous sequence with the sequence of the Swissprot entry because it will be incoherent with the current feature(s) of the protein."); return false; else if (endFrom < protein.getStartMatch() || range.getFromIntervalEnd() < protein.getStartQuery()){ report.addWarning("The feature range is " + range.getFromIntervalEnd() + "-" + range.getToIntervalEnd() + " and the alignment with the Swissprot sequence starts after " + range.getFromIntervalStart() + ". We can't change the previous sequence with the sequence of the Swissprot entry because it will be incoherent with the current feature(s) of the protein."); return false; else if (endTo > protein.getEndMatch() || range.getToIntervalEnd() > protein.getEndQuery()){ report.addWarning("The feature range is " + range.getFromIntervalEnd() + "-" + range.getToIntervalEnd() + " and the alignment with the Swissprot sequence finishes before " + range.getToIntervalStart() + ". We can't change the previous sequence with the sequence of the Swissprot entry because it will be incoherent with the current feature(s) of the protein."); return false; String rangeSequence = range.getFullSequence(); rangeSequence = range.getFullSequence(); report.addWarning("The feature " + range.getFeature().getAc() + " doesn't contain any sequence or full sequence but has range positions. This entry needs to ce checked by a curator"); return false; report.addWarning("The sequence of the Swissprot entry from " + range.getFromIntervalStart() + " to " + range.getToIntervalStart() + " is different from the previous feature sequence, we can't replace the previous sequence with the sequence of the Swissprot entry." );
public Range(CvFuzzyType fromStatus, int fromStart, int fromEnd, CvFuzzyType toStatus, int toStart, int toEnd, String seq){ super(); if (fromStatus == null){ throw new IllegalArgumentException("The start range status cannot be null."); } if (toStatus == null){ throw new IllegalArgumentException("The end range status cannot be null."); } setFromCvFuzzyType(fromStatus); setToCvFuzzyType(toStatus); setRangePositions(fromStart, fromEnd, toStart, toEnd, seq); if (seq != null){ if (seq.trim().length() > 0){ prepareSequence(seq); } } }
private Collection<Range> synchronizeRanges( Collection<Range> rangesToSychronize, Feature parentFeature ) { List<Range> ranges = new ArrayList<Range>(rangesToSychronize.size()); for ( Range range : rangesToSychronize ) { if (range.getAc() != null && IntactContext.getCurrentInstance().getDataContext().getDaoFactory().getRangeDao().isTransient(range)) { range = IntactContext.getCurrentInstance().getDataContext().getDaoFactory().getRangeDao().getByAc(range.getAc()); } range.setFromCvFuzzyType( synchronize( range.getFromCvFuzzyType() ) ); range.setToCvFuzzyType( synchronize( range.getToCvFuzzyType() ) ); range.setFeature(parentFeature); ranges.add(range); } return ranges; }
CvFuzzyType startStatus = range.getFromCvFuzzyType(); CvFuzzyType endStatus = range.getToCvFuzzyType(); range.setFromIntervalStart(0); range.setFromIntervalEnd(0); } else if (startStatus.isNTerminal()) { range.setFromIntervalStart(1); range.setFromIntervalEnd(1); } else if (startStatus.isCTerminal()) { if (proteinSequence != null) { range.setFromIntervalStart(proteinSequence.length()); range.setFromIntervalEnd(proteinSequence.length()); } else { range.setFromIntervalStart(0); range.setFromIntervalEnd(0); range.setToIntervalStart(0); range.setToIntervalEnd(0); } else if (endStatus.isNTerminal()) { range.setToIntervalStart(1); range.setToIntervalEnd(1); } else if (endStatus.isCTerminal()) { if (proteinSequence != null) { range.setToIntervalStart(proteinSequence.length()); range.setToIntervalEnd(proteinSequence.length()); } else { range.setToIntervalStart(0); range.setToIntervalEnd(0);
if ( range.getFromCvFuzzyType() != null ) { CvFuzzyType synchedFromFuzzyType = (CvFuzzyType) cvObjectPersister.syncIfTransient(range.getFromCvFuzzyType()); range.setFromCvFuzzyType(synchedFromFuzzyType); if ( range.getToCvFuzzyType() != null ) { CvFuzzyType syncedToCvFuzzyType = (CvFuzzyType) cvObjectPersister.syncIfTransient(range.getToCvFuzzyType()); range.setToCvFuzzyType(syncedToCvFuzzyType); range.setOwner(InstitutionPersister.getInstance().syncIfTransient(range.getOwner()));
CvFuzzyType fromStatus = findCvFuzzyTypeInDatabase(r.getFromCvFuzzyType()); CvFuzzyType toStatus = findCvFuzzyTypeInDatabase(r.getToCvFuzzyType()); r.setFromCvFuzzyType(fromStatus); r.setToCvFuzzyType(toStatus); throw new PersisterException( "Cannot convert the range " + r.toString() + ". " + FeatureUtils.getBadRangeInfo(r, seq) );
protected void traverseRange(Range range, IntactVisitor... visitors) { if (range == null) return; for (IntactVisitor visitor : visitors) { visitor.visitRange(range); } // check if this element has been traversed already, to avoid cyclic recursion if (recursionChecker.isAlreadyTraversed(range)) { return; } traverse(range.getFromCvFuzzyType(), visitors); traverse(range.getToCvFuzzyType(), visitors); }
Range range = new Range( institution, (int) location.getFromIntervalStart(), (int) location.getFromIntervalEnd(), range.setLinked( false ); range.setUndetermined();
public Collection<GeneralMessage> check( Feature feature ) throws SanityRuleException { Collection<GeneralMessage> messages = new ArrayList<GeneralMessage>(); if ( feature.getCvFeatureType() == null ) { return messages; } String cvFeatureTypeIdentityMi = feature.getCvFeatureType().getMiIdentifier(); if ( CvFeatureType.MUTATION_DECREASING_MI_REF.equals( cvFeatureTypeIdentityMi ) || CvFeatureType.MUTATION_INCREASING_MI_REF.equals( cvFeatureTypeIdentityMi ) || CvFeatureType.MUTATION_MI_REF.equals( cvFeatureTypeIdentityMi ) || CvFeatureType.MUTATION_DISRUPTING_MI_REF.equals( cvFeatureTypeIdentityMi ) ) { Collection<Range> ranges = feature.getRanges(); for ( Range range : ranges ) { // tointervalstart - r.fromintervalend int width = range.getToIntervalStart() - range.getFromIntervalEnd(); if ( width > 2 ) { messages.add( new GeneralMessage(MessageDefinition.FEATURE_DELETION_FEATURE_TOO_LONG, feature ) ); } } } return messages; } }
int toEnd = intervalEnd[1]; final Range range = new Range(fromStatus, fromStart, fromEnd, toStatus, toStart, toEnd, null); range.prepareSequence(proteinSequence, enforceConsistency);
Range range = new Range(fromFuzzyType, beginIntervalFrom, beginIntervalTo, toFuzzyType, endIntervalFrom, endIntervalTo, seq); range.setOwner(getInstitution()); throw new PsiConversionException( "Cannot convert the range " + range.toString() + ". The start position is undetermined and we should have a position null" + " or equal to 0 instead of "+beginIntervalFrom+"-"+beginIntervalTo+". A position interval is not allowed for this status."); throw new PsiConversionException( "Cannot convert the range " + range.toString() + ". The start position is n-terminal and we should have a position equal to 1" + " instead of "+beginIntervalFrom+"-"+beginIntervalTo+". A position interval is not allowed for this status."); throw new PsiConversionException( "Cannot convert the range " + range.toString() + ". The start position is c-terminal and we should have a position equal to the sequence length" + " (or 0 if we don't know the sequence length) instead of "+beginIntervalFrom+"-"+beginIntervalTo+". A position interval is not allowed for this status."); throw new PsiConversionException( "Cannot convert the range " + range.toString() + ". The end position is undetermined and we should have a position null" + " or equal to 0 instead of "+endIntervalFrom+"-"+endIntervalTo+". A position interval is not allowed for this status."); throw new PsiConversionException( "Cannot convert the range " + range.toString() + ". The end position is n-terminal and we should have a position equal to 1" + " instead of "+endIntervalFrom+"-"+endIntervalTo+". A position interval is not allowed for this status."); throw new PsiConversionException( "Cannot convert the range " + range.toString() + ". The start position is c-terminal and we should have a position equal to the sequence length" + " (or 0 if we don't know the sequence length) instead of "+endIntervalFrom+"-"+endIntervalTo+". A position interval is not allowed for this status.");
private Collection<Field> fieldsForAnnotation( Interactor interactor ) { Collection<Field> fields = new ArrayList<Field>(); addField( "Interactor AC", ( range.isUndetermined() ? "Yes" : "No" ), fields ); final CvInteractorType type = interactor.getCvInteractorType(); if ( type != null ) { addField( "Type", type.getShortLabel(), fields ); } if ( interactor instanceof Polymer ) { Polymer polymer = ( Polymer ) interactor; final int length = ( polymer.getSequence() == null ? 0 : polymer.getSequence().length() ); addField( "Seq. length", String.valueOf( length ), fields ); } return fields; }
if ( range.getFromIntervalStart() == range.getFromIntervalEnd() ) { beginElement.setAttribute( "position", "" + range.getFromIntervalEnd() ); beginElement.setAttribute( "begin", "" + range.getFromIntervalStart() ); beginElement.setAttribute( "end", "" + range.getFromIntervalEnd() ); if ( range.getToIntervalStart() == range.getToIntervalEnd() ) { endElement.setAttribute( "position", "" + range.getToIntervalEnd() ); endElement.setAttribute( "begin", "" + range.getToIntervalStart() ); endElement.setAttribute( "end", "" + range.getToIntervalEnd() );