From: Nomi H. <no...@us...> - 2006-03-23 01:27:36
|
Update of /cvsroot/gmod/apollo/src/java/apollo/datamodel In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17675/apollo/datamodel Modified Files: FeatureSet.java Log Message: If setTranslationEndFromStart finds that translation_start is not in the range of the feature set, it was trying to call calcTranslationStartForLongestPeptide() but this sometimes resulted in infinite loops where it'd try to set the translation start, then the end, then the start... What I'm having it do now is that if translation start is not in the range of the transcript, and missing_5prime is set (which it is, in this case), then it doesn't try to calculate the correct translation start or end--it just gives up. That means that if there's some weird transcript with a weird translation start value that *doesn't* have missing_5prime set to true, Apollo could still loop, but I think that situation will be rare. Index: FeatureSet.java =================================================================== RCS file: /cvsroot/gmod/apollo/src/java/apollo/datamodel/FeatureSet.java,v retrieving revision 1.164 retrieving revision 1.165 diff -C2 -d -r1.164 -r1.165 *** FeatureSet.java 30 Jan 2006 23:02:17 -0000 1.164 --- FeatureSet.java 23 Mar 2006 01:27:32 -0000 1.165 *************** *** 843,850 **** // First set the end to the end of the last exon if (!this.contains (translation_start) && isProteinCodingGene()) { System.out.println ("Warning: translation start set inappropriately to " + translation_start + " for " + ! getName() + ! "--setting to first codon"); System.out.println(" (low = " + getLow() + ", high = " + getHigh() + ")"); // DEL calcTranslationStartForLongestPeptide(); } --- 843,860 ---- // First set the end to the end of the last exon if (!this.contains (translation_start) && isProteinCodingGene()) { + // Usually this means something is screwy with the data System.out.println ("Warning: translation start set inappropriately to " + translation_start + " for " + ! getName()); System.out.println(" (low = " + getLow() + ", high = " + getHigh() + ")"); // DEL + // If it was already marked as missing the start codon, don't try to set + // the translation start or end + if (missing_5prime) { + translation_start = 0; // give up + translation_end = 0; // can't set the end if we can't set the start + setMissing3prime(true); + return; + } + // This can cause an infinite loop if the transcript is weird and it's + // not marked as missing_5prime--should we not do it? calcTranslationStartForLongestPeptide(); } |