/***************************************************************************** # Copyright (C) 1994-2008 by David Gordon. # All rights reserved. # # This software is part of a beta-test version of the Consed/Autofinish # package. It should not be redistributed or # used for any commercial purpose, including commercially funded # sequencing, without written permission from the author and the # University of Washington. # # This software is provided ``AS IS'' and any express or implied # warranties, including, but not limited to, the implied warranties of # merchantability and fitness for a particular purpose, are disclaimed. # In no event shall the authors or the University of Washington be # liable for any direct, indirect, incidental, special, exemplary, or # consequential damages (including, but not limited to, procurement of # substitute goods or services; loss of use, data, or profits; or # business interruption) however caused and on any theory of liability, # whether in contract, strict liability, or tort (including negligence # or otherwise) arising in any way out of the use of this software, even # if advised of the possibility of such damage. # # Building Consed from source is error prone and not simple which is # why I provide executables. Due to time limitations I cannot # provide any assistance in building Consed. Even if you do not # modify the source, you may introduce errors due to using a # different version of the compiler, a different version of motif, # different versions of other libraries than I used, etc. For this # reason, if you discover Consed bugs, I can only offer help with # those bugs if you first reproduce those bugs with an executable # provided by me--not an executable you have built. # # Modifying Consed is also difficult. Although Consed is modular, # some modules are used by many other modules. Thus making a change # in one place can have unforeseen effects on many other features. # It may takes months for you to notice these other side-effects # which may not seen connected at all. It is not feasable for me to # provide help with modifying Consed sources because of the # potentially huge amount of time involved. # #*****************************************************************************/ #include #include #include "consedParameters.h" #include "consedResources.h" #include #include "nPrimerFalseMatchScoreArray.h" #include "rwctokenizer.h" #include "tagTypes.h" #include "mbt_exception.h" #include "bIsNumericMaybeWithWhitespace.h" #include "guiFindRestrictionEnzymeSites.h" #define DEFINE_SOLINE #include "soLine.h" #include "rwcregexp.h" // // static class members // consedParameters* consedParameters::pGlobalConsedParameters_ = 0; // pointer to sole instance bool consedParameters::bConsedParametersCreated_ = false; // flag indicates instance exists RWCString consedParameters :: soGetDocumentation() { if ( soDocumentation_.isNull() ) setDocumentation(); return( soDocumentation_ ); } void consedParameters :: setParametersForSequencingPrimersNotPCRPrimers( const bool bSequencingNotPCR ) { if ( bSequencingNotPCR ) { nPrimersMinimumLengthOfAPrimerToUse_ = nPrimersMinimumLengthOfAPrimer_; nPrimersMaximumLengthOfAPrimerToUse_ = nPrimersMaximumLengthOfAPrimer_; nPrimersMinMeltingTempToUse_ = nPrimersMinMeltingTemp_; nPrimersMaxMeltingTempToUse_ = nPrimersMaxMeltingTemp_; nPrimersWindowSizeInLookingToUse_ = nPrimersWindowSizeInLooking_; nPrimersMaxMatchElsewhereScoreToUse_ = nPrimersMaxMatchElsewhereScore_; } else { nPrimersMinimumLengthOfAPrimerToUse_ = nPrimersMinimumLengthOfAPrimerForPCR_; nPrimersMaximumLengthOfAPrimerToUse_ = nPrimersMaximumLengthOfAPrimerForPCR_; nPrimersMinMeltingTempToUse_ = nPrimersMinMeltingTempForPCR_; nPrimersMaxMeltingTempToUse_ = nPrimersMaxMeltingTempForPCR_; nPrimersWindowSizeInLookingToUse_ = nPrimersWindowSizeInLookingForPCR_; nPrimersMaxMatchElsewhereScoreToUse_ = nPrimersMaxMatchElsewhereScoreForPCR_; } } consedParameters :: consedParameters() { // just zero-out the entire space memset( this, 0, sizeof( consedParameters ) ); } void consedParameters :: copyPrimerPickingParametersToSelf( consedParameters* pCPSource ) { // I wouldn't be surprised if I missed some... nPrimersMinimumLengthOfAPrimerToUse_ = pCPSource->nPrimersMinimumLengthOfAPrimerToUse_; nPrimersMaximumLengthOfAPrimerToUse_ = pCPSource->nPrimersMaximumLengthOfAPrimerToUse_; nPrimersMinMeltingTempToUse_ = pCPSource->nPrimersMinMeltingTempToUse_; nPrimersMaxMeltingTempToUse_ = pCPSource->nPrimersMaxMeltingTempToUse_; nPrimersWindowSizeInLookingToUse_ = pCPSource->nPrimersWindowSizeInLookingToUse_; nPrimersMaxMatchElsewhereScoreToUse_ = pCPSource->nPrimersMaxMatchElsewhereScoreToUse_; nPrimersMinMeltingTempForPCR_ = pCPSource->nPrimersMinMeltingTempForPCR_; nPrimersMaxMeltingTempForPCR_ = pCPSource->nPrimersMaxMeltingTempForPCR_; nPrimersMinMeltingTemp_ = pCPSource->nPrimersMinMeltingTemp_; nPrimersMaxMeltingTemp_ = pCPSource->nPrimersMaxMeltingTemp_; nPrimersWindowSizeInLooking_ = pCPSource->nPrimersWindowSizeInLooking_; nPrimersALittleLessThanAverageInsertSizeOfASubcloneToUse_ = pCPSource->nPrimersALittleLessThanAverageInsertSizeOfASubcloneToUse_; nPrimersTooManyVectorBasesInWalkingRead_ = pCPSource->nPrimersTooManyVectorBasesInWalkingRead_; nPrimersToleranceForDifferentBeginningLocationOfUniversalPrimerReads_ = pCPSource->nPrimersToleranceForDifferentBeginningLocationOfUniversalPrimerReads_; bPrimersScreenForVector_ = pCPSource->bPrimersScreenForVector_; dPrimersSaltConcentrationMillimolar_ = pCPSource->dPrimersSaltConcentrationMillimolar_; bPrimersPrintInfoOnRejectedTemplates_ = pCPSource->bPrimersPrintInfoOnRejectedTemplates_; nPrimersMinQuality_ = pCPSource->nPrimersMinQuality_; nPrimersMaxPrimerDimerScoreForPCR_ = pCPSource->nPrimersMaxPrimerDimerScoreForPCR_; nPrimersMaxSelfMatchScore_ = pCPSource->nPrimersMaxSelfMatchScore_; nPrimersMaxMatchElsewhereScoreForPCR_ = pCPSource->nPrimersMaxMatchElsewhereScoreForPCR_; nPrimersMaxMatchElsewhereScore_ = pCPSource->nPrimersMaxMatchElsewhereScore_; dPrimersDNAConcentrationNanomolar_ = pCPSource->dPrimersDNAConcentrationNanomolar_; nPrimersLookThisFarForForwardVectorInsertJunction_ = pCPSource->nPrimersLookThisFarForForwardVectorInsertJunction_; nPrimersLookForThisManyPCRPrimerPairsPerPairOfGroups_ = pCPSource->nPrimersLookForThisManyPCRPrimerPairsPerPairOfGroups_; nPrimersPCRPrimersGroupedIntoWindowOfThisManyBases_ = pCPSource->nPrimersPCRPrimersGroupedIntoWindowOfThisManyBases_; nPrimersWindowSizeInLookingForPCR_ = pCPSource->nPrimersWindowSizeInLookingForPCR_; nPrimersWhenChoosingATemplateMinPotentialReadLength_ = pCPSource->nPrimersWhenChoosingATemplateMinPotentialReadLength_; bPrimersChooseTemplatesByPositionInsteadOfQuality_ = pCPSource->bPrimersChooseTemplatesByPositionInsteadOfQuality_; filPrimersBadTemplatesFile_ = pCPSource->filPrimersBadTemplatesFile_; filPrimersLibrariesInfoFile_ = pCPSource->filPrimersLibrariesInfoFile_; filPrimersBadLibrariesFile_ = pCPSource->filPrimersBadLibrariesFile_; nPrimersMaxLengthOfMononucleotideRepeat_ = pCPSource->nPrimersMaxLengthOfMononucleotideRepeat_; nPrimersNumberOfTemplatesToDisplayInFront_ = pCPSource->nPrimersNumberOfTemplatesToDisplayInFront_; bPrimersCheckJustSomePCRPrimerPairsRatherThanAll_ = pCPSource->bPrimersCheckJustSomePCRPrimerPairsRatherThanAll_; nPrimersMaxPCRPrimerPairsToDisplay_ = pCPSource->nPrimersMaxPCRPrimerPairsToDisplay_; dPrimersMaxMeltingTempDifferenceForPCR_ = pCPSource->dPrimersMaxMeltingTempDifferenceForPCR_; nPrimersMaximumLengthOfAPrimerForPCR_ = pCPSource->nPrimersMaximumLengthOfAPrimerForPCR_; nPrimersMinimumLengthOfAPrimerForPCR_ = pCPSource->nPrimersMinimumLengthOfAPrimerForPCR_; nPrimersMaximumLengthOfAPrimer_ = pCPSource->nPrimersMaximumLengthOfAPrimer_; nPrimersMinimumLengthOfAPrimer_ = pCPSource->nPrimersMinimumLengthOfAPrimer_; nPrimersMinNumberOfTemplatesForPrimers_ = pCPSource->nPrimersMinNumberOfTemplatesForPrimers_; bPrimersOKToChoosePrimersInSingleSubcloneRegion_ = pCPSource->bPrimersOKToChoosePrimersInSingleSubcloneRegion_; bPrimersOKToChoosePrimersWhereHighQualityDiscrepancies_ = pCPSource->bPrimersOKToChoosePrimersWhereHighQualityDiscrepancies_; bPrimersOKToChoosePrimersWhereUnalignedHighQualityRegion_ = pCPSource->bPrimersOKToChoosePrimersWhereUnalignedHighQualityRegion_; } consedParameters::consedParameters( consedResources* pRes ) : bWarnUserAboutOverstrikingWithUppercase_( true ), bErrorMessageDisplayedAtStartup_( false ), nAutoFinishLastUsedPrimerNumber_( 0 ), bOKToUseGui_( true ), nAutoFinishNumberOfCloningSitesFound_( 0 ), nLastUsedExpID_( 0 ), nWhatIsRunning_( 0 ), bReadyToPickSecondPCRPrimer_( false ), pDefaultLibrary_( NULL ), bReadOnly_( false ), pAutoFinishFullOutput_( stdout ), bNeedToSetContigTemplateArrays_( true ), cFindRestrictionEnzymeSitesLastUsedWholeCloneOrPartOfCloneOrWholeContig_( guiFindRestrictionEnzymeSites::cWHOLE_CLONE ), soFindRestrictionEnzymeSitesLastUsedUserEnteredContigMap_( soEmptyString ), nFindRestrictionEnzymeSitesLastUsedStartUnpaddedConsPos_( -666 ), nFindRestrictionEnzymeSitesLastUsedEndUnpaddedConsPos_( -666 ), soFindRestrictionEnzymeSitesLastUsedContigAbbreviatedName_( soEmptyString ), bWarnUserAboutAmbiguityCodes_( true ), bAllowTimestampMismatch_( false ), bPrintInFigureOutContigOrderAndOrientation_( true ), bLimitNumberOfErrorsReported_( false ), nNumberOfStartupErrors_( 0 ) { // // fail crudely if one already exists - we may not have // a gui at all yet // if (bConsedParametersCreated_) { cerr << "Fatal program error: consedParameters ctor called twice." << endl; cerr.flush(); exit(-1); } // save pointer to yourself pGlobalConsedParameters_ = this; // remember you have been created (allow no others) bConsedParametersCreated_ = true; #ifdef NO_POUND_POUND_MACROS #define saveAConsedParameter( nameWithoutFinalUnderscore ) \ consedParameters::pGetConsedParameters()->nameWithoutFinalUnderscore ## _ \ = pRes->nameWithoutFinalUnderscore ## _ #else #define saveAConsedParameter( nameWithoutFinalUnderscore ) \ consedParameters::pGetConsedParameters()-> ## nameWithoutFinalUnderscore ## _ \ = pRes-> ## nameWithoutFinalUnderscore ## _ #endif // This macro expands saveAConsedParameter( nPrimersMaxSelfMatchScore ) // into // consedParameters::pGetConsedParameters()->nPrimersMaxSelfMatchScore_ // = pRes->nPrimersMaxSelfMatchScore_ if ( pRes->bShowProteinTranslation_ == true ) { consedParameters::pGetConsedParameters()->nShowProteinTranslation_ = nShowProteinTranslationTopStrand; } else { consedParameters::pGetConsedParameters()->nShowProteinTranslation_ = nDontShowProteinTranslation; } saveAConsedParameter( bPrintPS ); saveAConsedParameter( soDefaultTagType ); saveAConsedParameter( bDefaultTagOnConsensusNotReads ); saveAConsedParameter( dAutoFinishMinNumberOfErrorsFixedByAnExp ); saveAConsedParameter( dAutoFinishRedundancy ); saveAConsedParameter( nAutoFinishAverageInsertSize ); saveAConsedParameter( nPrimersMaxInsertSizeOfASubclone ); saveAConsedParameter( nPrimersMaxMeltingTemp ); saveAConsedParameter( nPrimersMaxMeltingTempForPCR ); saveAConsedParameter( bPrimersPickTemplatesForPrimers ); saveAConsedParameter( soPrimersSubcloneFullPathnameOfFileOfSequencesForScreening ); saveAConsedParameter( soPrimersCloneFullPathnameOfFileOfSequencesForScreening ); saveAConsedParameter( nPrimersMinMeltingTemp ); saveAConsedParameter( nPrimersMinMeltingTempForPCR ); saveAConsedParameter( bSearchFunctionsUseUnalignedEndsOfReads ); saveAConsedParameter( bSearchFunctionsUseLowQualityEndsOfReads ); saveAConsedParameter( nInexactSearchForStringMaxPerCentMismatch ); saveAConsedParameter( bOnlyAllowOneReadWriteConsedAtATime ); saveAConsedParameter( bAutoFinishAllowHighQualityDiscrepanciesInTemplateIfConsistentForwardReversePair ); saveAConsedParameter( soPrintWindowCommand ); saveAConsedParameter( filFileOfTagTypes ); saveAConsedParameter( bAssemblyViewShowConsistentFwdRevPairs ); saveAConsedParameter( bAssemblyViewShowConsistentFwdRevPairDepth ); saveAConsedParameter( bAssemblyViewShowConsistentFwdRevPairsBetweenDifferentScaffolds ); saveAConsedParameter( bAssemblyViewShowLegsOnSquaresForConsistentFwdRevPairs ); saveAConsedParameter( bAssemblyViewShowGapSpanningFwdRevPairs ); saveAConsedParameter( soAssemblyViewShowWhichInconsistentFwdRevPairs ); saveAConsedParameter( bAssemblyViewShowReadDepth ); saveAConsedParameter( bAssemblyViewShowMultipleHighQualityDiscrepancies ); saveAConsedParameter( bAssemblyViewShowRestrictionDigestCutSites ); saveAConsedParameter( bAssemblyViewFilterSequenceMatchesBySize ); saveAConsedParameter( nAssemblyViewSequenceMatchesMinSize ); saveAConsedParameter( nAssemblyViewSequenceMatchesMaxSize ); saveAConsedParameter( bAssemblyViewAutomaticallyStartWithConsed ); saveAConsedParameter( soAssemblyViewDisplayTheseTagTypesOnTheseLines ); saveAConsedParameter( bAssemblyViewShowTags ); saveAConsedParameter( bAutoEditRecalculateHighQualitySegmentsOfReads ); saveAConsedParameter( bAutoEditConvertCloneEndBasesToXs ); saveAConsedParameter( bAutoEditTellPhrapNotToOverlapMultiplyDiscrepantReads ); saveAConsedParameter( bAutoEditTagEditableLowConsensusQualityRegions ); saveAConsedParameter( bAutoEditMakeFakeRead ); saveAConsedParameter( soAutoEditMakeFakeReadFromRead1 ); saveAConsedParameter( soAutoEditMakeFakeReadFromRead2 ); saveAConsedParameter( soAutoEditMakeFakeReadName ); saveAConsedParameter( filAutoEditMakeFakeReadFastaFilename ); saveAConsedParameter( bAutoEditMergeAssembly ); saveAConsedParameter( filAutoEditSecondaryAceFile ); saveAConsedParameter( bAutoEditFixRunsInConsensus ); saveAConsedParameter( bShowAllTracesJustShowGoodTraces ); saveAConsedParameter( nAddAlignedSequenceQualityOfBases ); saveAConsedParameter( bMakeLightBackgroundInAlignedReadsWindowAndTracesWindow ); saveAConsedParameter( bPutVerticalLineAtCursor ); saveAConsedParameter( bPutHorizontalLineAtCursor ); saveAConsedParameter( filHighlightedReadsFile ); saveAConsedParameter( bAutoReportPrintReadNamesInRegion ); saveAConsedParameter( soAutoReportPrintReadNamesInRegionContig ); saveAConsedParameter( nAutoReportPrintReadNamesInRegionLeftPos ); saveAConsedParameter( nAutoReportPrintReadNamesInRegionRightPos ); saveAConsedParameter( bAutoReportPrintHighlyDiscrepantRegions ); saveAConsedParameter( bAutoReportPrintScaffolds ); saveAConsedParameter( bNumberUnpaddedConsensusAtUserDefined ); saveAConsedParameter( bAutoReportPrintHighQualityDiscrepancies ); saveAConsedParameter( bAutoReportHighQualityDiscrepanciesExcludeCompressionOrG_dropoutTags ); saveAConsedParameter( bAutoReportHighQualityDiscrepanciesExcludeMostPads ); saveAConsedParameter( bAutoReportPrintLowConsensusQualityRegions ); saveAConsedParameter( bAutoReportPrintSingleSubcloneRegions ); saveAConsedParameter( bAutoReportPrintSingleStrandedRegions ); saveAConsedParameter( bAutoReportPrintLinkingForwardReversePairs ); saveAConsedParameter( bAutoReportPrintFilteredInconsistentForwardReversePairs ); saveAConsedParameter( bAutoReportPrintAssemblySummary ); saveAConsedParameter( soShowAllTracesDoNotShowTraceIfTheseTagsPresent ); saveAConsedParameter( bNameOfFakeJoiningReadsIncludesAceFileName ); saveAConsedParameter( nWhenUserScrollsOffWindowMillisecondsBetweenScrolling ); saveAConsedParameter( nWhenUserScrollsOffWindowBasesToScrollEachTime ); saveAConsedParameter( bCompareContigsUseBandedRatherThanFullSmithWaterman ); saveAConsedParameter( nCompareContigsBandSize ); saveAConsedParameter( nAssemblyViewShowFwdRevPairDepthsInRedIfOnlyThisMany ); saveAConsedParameter( bAssemblyViewShowSequenceMatches ); saveAConsedParameter( bAssemblyViewOKToShowSequenceMatchesBetweenContigs ); saveAConsedParameter( bAssemblyViewOKToShowSequenceMatchesWithinContigs ); saveAConsedParameter( bAssemblyViewOKToShowDirectSequenceMatches ); saveAConsedParameter( bAssemblyViewOKToShowInvertedSequenceMatches ); saveAConsedParameter( bAssemblyViewOnlyShowSequenceMatchesToAParticularRegion ); saveAConsedParameter( soAssemblyViewOnlyShowSequenceMatchesToThisContig ); saveAConsedParameter( nAssemblyViewOnlyShowSequenceMatchesToThisRegionLeft ); saveAConsedParameter( nAssemblyViewOnlyShowSequenceMatchesToThisRegionRight ); saveAConsedParameter( bAssemblyViewOnlyShowSequenceMatchesToEndsOfContigs ); saveAConsedParameter( nAssemblyViewOnlyShowSequenceMatchesToEndsOfContigsThisFar ); saveAConsedParameter( soDefaultReadPrefix ); saveAConsedParameter( filReadPrefixesFile ); saveAConsedParameter( nMaxCharsDisplayedForReadPrefix ); saveAConsedParameter( nAutoFinishDoNotDoPCRIfThisManyAvailableGapSpanningTemplates ); saveAConsedParameter( nAutoFinishDoNotDoUnorientedPCRIfThisManyOrMoreUnorientedPCRReactions ); saveAConsedParameter( nAutoFinishDoNotDoOrientedPCRIfGapSizeLargerThanThis ); saveAConsedParameter( bAutoFinishDoNotDoPCRIfEndIsExtendedByReads ); saveAConsedParameter( nAutoFinishMaxAcceptableErrorsPerMegabase ); saveAConsedParameter( nAutoFinishIfNotEnoughFwdRevPairsUseThisPerCentOfInsertSize ); saveAConsedParameter( nPrimersNumberOfBasesToBackUpToStartLooking ); saveAConsedParameter( nPrimersMakePCRPrimersThisManyBasesBackFromEndOfHighQualitySegment ); saveAConsedParameter( bPrimersOKToChoosePrimersInSingleSubcloneRegion ); saveAConsedParameter( bPrimersOKToChoosePrimersWhereHighQualityDiscrepancies ); saveAConsedParameter( bPrimersOKToChoosePrimersWhereUnalignedHighQualityRegion ); saveAConsedParameter( bAutoFinishCallReversesToFlankGaps ); saveAConsedParameter( bAutoFinishAllowWholeCloneReads ); saveAConsedParameter( bAutoFinishAllowCustomPrimerSubcloneReads ); saveAConsedParameter( bAutoFinishAllowResequencingReads ); saveAConsedParameter( bAutoFinishAllowResequencingReadsOnlyForRunsAndStops ); saveAConsedParameter( bAutoFinishAllowDeNovoUniversalPrimerSubcloneReads ); saveAConsedParameter( bAutoFinishAllowMinilibraries ); saveAConsedParameter( bAutoFinishAllowPCR ); saveAConsedParameter( bAutoFinishAllowUnorientedPCRReactions ); saveAConsedParameter( bAutoFinishAllowResequencingAUniversalPrimerAutofinishRead ); saveAConsedParameter( bAutoFinishAlwaysCloseGapsUsingMinilibraries ); saveAConsedParameter( nAutoFinishMaximumFinishingReadLength ); saveAConsedParameter( nAutoFinishSuggestMinilibraryIfGapThisManyBasesOrLarger ); saveAConsedParameter( bAutoFinishSuggestSpecialChemistryForRunsAndStops ); saveAConsedParameter( nAutoFinishSuggestThisManyMinilibrariesPerGap ); saveAConsedParameter( nPrimersWindowSizeInLooking ); saveAConsedParameter( bPrimersAssumeTemplatesAreDoubleStrandedUnlessSpecified ); saveAConsedParameter( nAlignedReadsWindowInitialCharsWide ); saveAConsedParameter( nAlignedReadsWindowInitialCharsHigh ); saveAConsedParameter( nAlignedReadsWindowMaxCharsForReadNames ); saveAConsedParameter( bAlignedReadsWindowAutomaticallyExpandRoomForReadNames ); saveAConsedParameter( bAutoFinishAllowResequencingReadsToExtendContigs ); saveAConsedParameter( nAutoFinishCallHowManyReversesToFlankGaps ); saveAConsedParameter( bAutoFinishCloseGaps ); saveAConsedParameter( bAutoFinishContinueEvenThoughReadInfoDoesNotMakeSense ); saveAConsedParameter( dAutoFinishCostOfResequencingUniversalPrimerSubcloneReaction ); saveAConsedParameter( dAutoFinishCostOfCustomPrimerSubcloneReaction ); saveAConsedParameter( dAutoFinishCostOfCustomPrimerCloneReaction ); saveAConsedParameter( dAutoFinishCostOfDeNovoUniversalPrimerSubcloneReaction ); saveAConsedParameter( dAutoFinishCostOfMinilibrary ); saveAConsedParameter( bAutoFinishCoverSingleSubcloneRegions ); saveAConsedParameter( bAutoFinishCoverLowConsensusQualityRegions ); saveAConsedParameter( filAutoFinishDebugUniversalPrimerReadsFile ); saveAConsedParameter( filAutoFinishDebugCustomPrimerReadsFile ); saveAConsedParameter( nAutoFinishDoNotAllowSubcloneCustomPrimerReadsCloserThanThisManyBases ); saveAConsedParameter( nAutoFinishDoNotAllowWholeCloneCustomPrimerReadsCloserThanThisManyBases ); saveAConsedParameter( soAutoFinishDoNotFinishWhereTheseTagsAre ); saveAConsedParameter( soAutoFinishDoNotExtendContigsWhereTheseTagsAre ); saveAConsedParameter( nAutoFinishDoNotExtendContigsIfTagsAreThisCloseToContigEnd ); saveAConsedParameter( filDumpContigOrderAndOrientationInfoToThisFile ); saveAConsedParameter( bAutoFinishDumpTemplates ); saveAConsedParameter( nAutoFinishExcludeContigIfOnlyThisManyReadsOrLess ); saveAConsedParameter( dAutoFinishExcludeContigIfDepthOfCoverageGreaterThanThis ); saveAConsedParameter( nAutoFinishExcludeContigIfThisManyBasesOrLess ); saveAConsedParameter( nAutoFinishHowManyTemplatesYouIntendToUseForCustomPrimerSubcloneReactions ); saveAConsedParameter( nPrimersMinNumberOfTemplatesForPrimers ); saveAConsedParameter( nAutoFinishMinBaseOverlapBetweenAReadAndHighQualitySegmentOfConsensus ); saveAConsedParameter( nAutoFinishNumberOfVectorBasesAtBeginningOfAUniveralPrimerRead ); saveAConsedParameter( bAutoFinishCDNANotGenomic ); saveAConsedParameter( nAutoFinishConfidenceThatReadWillCoverSingleSubcloneRegion ); saveAConsedParameter( bAutoFinishPrintForwardOrReverseStrandWhenPrintingSubcloneTemplatesForCustomPrimerReads ); saveAConsedParameter( bAutoFinishPrintMinilibrariesSummaryFile ); saveAConsedParameter( bAutoFinishNearGapsSuggestEachMissingReadOfReadPairs ); saveAConsedParameter( nAutoFinishDoNotIgnoreLCQIfThisManyBasesFromEndOfContigForLCQTagger ); saveAConsedParameter( bCheckIfTooManyWalks ); saveAConsedParameter( nNumberOfColumnsBeforeReadNameInAlignedReadsWindow ); saveAConsedParameter( nCompareContigsAlignsThisManyBasesMax ); saveAConsedParameter( soCompressedChromatExtension ); saveAConsedParameter( bDimLowQualityEndsOfReads ); saveAConsedParameter( bDimUnalignedEndsOfReads ); saveAConsedParameter( bFakeReadsSpecifiedByFilenameExtension ); saveAConsedParameter( filFullPathnameOfAddReads2ConsedScript ); saveAConsedParameter( filFullPathnameOfFixContigEndScript ); saveAConsedParameter( bFixContigEndsCleanUpTemporaryFiles ); saveAConsedParameter( nFixContigEndsMinSmithWatermanScoreToMakeJoin ); saveAConsedParameter( nFixContigEndsMinNumberOfReadsInContig ); saveAConsedParameter( filFullPathnameOfCrossMatch ); saveAConsedParameter( filFullPathnameOfPhred ); saveAConsedParameter( filFullPathnameOfMiniassemblyScript ); saveAConsedParameter( soGunzipFullPath ); saveAConsedParameter( filFullPathnameOfFilter454ReadsScript ); saveAConsedParameter( filFilter454ReadsAgainstThis ); saveAConsedParameter( fil454LinkerSequences ); saveAConsedParameter( bHideSomeTagTypesAtStartup ); saveAConsedParameter( nMaximumNumberOfTracesShown ); saveAConsedParameter( bNavigateAutomaticTracePopup ); saveAConsedParameter( bNavigateAutomaticAllTracesPopup ); saveAConsedParameter( nPrimersMinimumLengthOfAPrimer ); saveAConsedParameter( nPrimersMaximumLengthOfAPrimer ); saveAConsedParameter( nPrimersMinimumLengthOfAPrimerForPCR ); saveAConsedParameter( nPrimersMaximumLengthOfAPrimerForPCR ); saveAConsedParameter( dPrimersMaxMeltingTempDifferenceForPCR ); saveAConsedParameter( nPrimersMaxPCRPrimerPairsToDisplay ); saveAConsedParameter( bPrimersCheckJustSomePCRPrimerPairsRatherThanAll ); saveAConsedParameter( nPrimersNumberOfTemplatesToDisplayInFront ); saveAConsedParameter( nPrimersMaxLengthOfMononucleotideRepeat ); saveAConsedParameter( filPrimersBadLibrariesFile ); saveAConsedParameter( filPrimersLibrariesInfoFile ); saveAConsedParameter( filPrimersBadTemplatesFile ); saveAConsedParameter( bPrimersChooseTemplatesByPositionInsteadOfQuality ); saveAConsedParameter( nPrimersWhenChoosingATemplateMinPotentialReadLength ); saveAConsedParameter( nPrimersWindowSizeInLookingForPCR ); saveAConsedParameter( nQualityThresholdForFindingHighQualityDiscrepancies ); saveAConsedParameter( nQualityThresholdForNavigateByDepthOfCoverage ); saveAConsedParameter( bNavigateByHighDepthOfCoverageNotLow ); saveAConsedParameter( nMinDepthForNavigateByDepthOfCoverage ); saveAConsedParameter( filDefaultVectorPathnameForRestrictionFragments ); saveAConsedParameter( filFileOfAdditionalRestrictionEnzymes ); saveAConsedParameter( soCommonRestrictionEnzymes ); saveAConsedParameter( soDefaultSelectedRestrictionEnzymes ); saveAConsedParameter( filRestrictionEnzymesActualFragmentsFile ); saveAConsedParameter( nRestrictionDigestInitialWindowSizeInTextRows ); saveAConsedParameter( nRestrictionDigestDoNoShowAreaOfFragmentsOverThisSize ); saveAConsedParameter( bShowReadsAlphabetically ); saveAConsedParameter( bShowReadsInAlignedReadsWindowOrderedByFile ); saveAConsedParameter( filShowReadsInAlignedReadsWindowOrderedByThisFile ); saveAConsedParameter( soShowReadsAtCursorSortedHow ); saveAConsedParameter( bShowABIBasesInTraceWindow ); saveAConsedParameter( nTracesWindowInitialPixelHeight ); saveAConsedParameter( nAssemblyViewWindowInitialPixelHeight ); saveAConsedParameter( filAssemblyViewFileOfTemplatesToNotShow ); saveAConsedParameter( nAssemblyViewCrossMatchMinmatch ); saveAConsedParameter( nAssemblyViewCrossMatchMinscore ); saveAConsedParameter( filAssemblyViewFindSequenceMatchesForConsedScript ); saveAConsedParameter( nAssemblyViewCrossmatchMinmatch ); saveAConsedParameter( nAssemblyViewCrossmatchMinscore ); saveAConsedParameter( nAssemblyViewSequenceMatchesMinimumSimilarity ); saveAConsedParameter( nTracesWindowInitialPixelWidth ); saveAConsedParameter( nAssemblyViewWindowInitialPixelWidth ); saveAConsedParameter( bAutomaticallyScaleTraces ); saveAConsedParameter( dAutomaticallyScaleTracesSamplePeakHeightFractionOfWindowHeight ); saveAConsedParameter( nAutomaticallyScaleTracesSamplePeakPercentile ); saveAConsedParameter( nVerticalTraceMagnification ); saveAConsedParameter( soUserDefinedKeys ); saveAConsedParameter( soProgramsForUserDefinedKeys ); saveAConsedParameter( soArgumentsToPassToUserDefinedPrograms ); saveAConsedParameter( soTagsToApplyWithUserDefinedKeys ); saveAConsedParameter( bSnpGenomeUseInsertionPolymorphisms ); saveAConsedParameter( soListOfTagTypesToHide ); saveAConsedParameter( soListOfOptionalWordsToSaveInListOfReadNames ); saveAConsedParameter( bExtendConsensusWithHighQuality ); saveAConsedParameter( bFastStartup ); saveAConsedParameter( filFastStartupFile ); saveAConsedParameter( soAlwaysRunProgramToGetChromats ); saveAConsedParameter( filProgramToRunToGetChromats ); saveAConsedParameter( filProgramToRunToGetChromatsOf454Reads ); saveAConsedParameter( bCreateFakeChromatsForSolexaReads ); saveAConsedParameter( bAutoFinishUseLongModelReadRatherThanShort ); saveAConsedParameter( nAskAgainIfWantToQuitConsedIfThisManyReads ); saveAConsedParameter( soPrintWindowInstructions ); saveAConsedParameter( bAllowMultipleSearchForStringWindows ); saveAConsedParameter( nAutoPCRAmplifyFalseProductsOKIfLargerThanThis ); saveAConsedParameter( bAutoPCRAmplifyMakePrimerOutOfFirstRegion ); saveAConsedParameter( nAutoPCRAmplifyMaybeRejectPrimerIfThisCloseToDesiredProduct ); saveAConsedParameter( bAddNewReadsRecalculateConsensusQuality ); saveAConsedParameter( soAddNewReadsPutReadIntoItsOwnContig ); saveAConsedParameter( bAddNewReadsCheckThatCrossMatchRunCorrectly ); saveAConsedParameter( nAssemblyViewNumberOfRowsOfTags ); saveAConsedParameter( bWarnUserWhenTryingToEditAllReads ); saveAConsedParameter( filMaybeXKEYSYMDBPath ); saveAConsedParameter( filMaybeXKEYSYMDBPath2 ); saveAConsedParameter( nAmountToMoveWithBigLeftAndRightArrows ); saveAConsedParameter( nNavigateByHighlyDiscrepantPositionsMinDiscrepantReads ); saveAConsedParameter( nNavigateByHighlyDiscrepantPositionsMaxDepthOfCoverage ); saveAConsedParameter( nNavigateByHighlyDiscrepantPositionsIgnoreBasesBelowThisQuality ); saveAConsedParameter( bNavigateByHighlyDiscrepantPositionsJustListIndels ); saveAConsedParameter( bNavigateByHighlyDiscrepantPositionsIgnoreOtherReadsStartingAtSameLocation ); saveAConsedParameter( bNavigateByHighlyDiscrepantPositionsIgnoreIfListedBasesInConsensus ); saveAConsedParameter( soNavigateByHighlyDiscrepantPositionsIgnoreIfTheseBasesInConsensus ); saveAConsedParameter( filPhdBallDirectory ); saveAConsedParameter( filNewAceFileFOF ); saveAConsedParameter( nNavigateByHighOrLowDepthCoalesceRegionsIfThisClose ); saveAConsedParameter( bRemoveReadsDeleteNotJustPutInOwnContig ); saveAConsedParameter( soPaired454LeftReadExtension ); saveAConsedParameter( soPaired454RightReadExtension ); saveAConsedParameter( filSnpGenome1MSnps ); saveAConsedParameter( bDiffChromosomesExcludeDeletions ); saveAConsedParameter( bSnpGenomeFilterByWeight ); saveAConsedParameter( nWantReadsUpToThisFarFromSnps ); saveAConsedParameter( soPhaster2PhdBallSaveWhichMate ); saveAConsedParameter( bPhaster2PhdBallSaveInPhasterFormat ); saveAConsedParameter( bPhaster2PhdBallCalculateNewLocationsFile ); saveAConsedParameter( bPhdBall2FastaIgnoreLowQualityReads ); saveAConsedParameter( nPhdBall2FastaLowestAverageQuality ); saveAConsedParameter( filNextPhredPipelineControlFile ); saveAConsedParameter( filNextPhredPipelineTiffPerlScript ); saveAConsedParameter( filNextPhredPipelinePhasterPerlScript ); saveAConsedParameter( soNextPhredPipelineVersion ); saveAConsedParameter( soNextPhredPipelineMainDirectory ); saveAConsedParameter( nMaxNumberOfReadsPerPhdBall ); saveAConsedParameter( filUserWantsToSaveToThisAceFile ); saveAConsedParameter( bAutoFinishEmulate9_66Behavior ); saveAConsedParameter( nPrimersPCRPrimersGroupedIntoWindowOfThisManyBases ); saveAConsedParameter( nPrimersLookForThisManyPCRPrimerPairsPerPairOfGroups ); saveAConsedParameter( dAutoFinishStandardDeviationsFromMeanFromGapToLookForTemplatesForSuggestingEachMissingReadOfReadPairs ); saveAConsedParameter( bAutoFinishCheckThatReadsFromTheSameTemplateAreConsistent ); saveAConsedParameter( bAutoFinishDoNotAllowSubcloneCustomPrimerReadsCloseTogether ); saveAConsedParameter( bAutoFinishDoNotAllowWholeCloneCustomPrimerReadsCloseTogether ); saveAConsedParameter( dAutoFinishMinilibrariesPreferTemplateIfSizeThisManyStdDevsFromMean ); saveAConsedParameter( nAutoFinishMinNumberOfForwardReversePairsInLibraryToCalculateAverageInsertSize ); saveAConsedParameter( dAutoFinishIfEnoughFwdRevPairsUseThisManyStdDevBelowMeanForInsertSize ); saveAConsedParameter( nAutoFinishNewCustomPrimerReadThisFarFromOldCustomPrimerRead ); saveAConsedParameter( nAutoFinishMinNumberOfSingleSubcloneBasesFixedByAnExp ); saveAConsedParameter( nAutoFinishNumberOfBasesBetweenContigsAssumed ); saveAConsedParameter( nAutoFinishPotentialHighQualityPartOfReadStart ); saveAConsedParameter( nAutoFinishPotentialHighQualityPartOfReadEnd ); saveAConsedParameter( bAutoFinishPrintCustomNavigationFileForChosenReads ); saveAConsedParameter( nAutoFinishReversesForFlankingGapsTemplateMustProtrudeFromContigThisMuch ); saveAConsedParameter( bAutoFinishTagOligosWhenDoExperiments ); saveAConsedParameter( bCountPads ); saveAConsedParameter( nDebugging ); saveAConsedParameter( nDebugging2 ); saveAConsedParameter( nDebugging3 ); saveAConsedParameter( soDebuggingString ); saveAConsedParameter( nIgnoreHighQualityDiscrepanciesThisManyBasesFromEndOfAlignedRegion ); saveAConsedParameter( nIgnoreUnalignedHighQualitySegmentsShorterThanThis ); saveAConsedParameter( nPrimersLookThisFarForForwardVectorInsertJunction ); saveAConsedParameter( dPrimersDNAConcentrationNanomolar ); saveAConsedParameter( nPrimersMaxMatchElsewhereScore ); saveAConsedParameter( nPrimersMaxMatchElsewhereScoreForPCR ); saveAConsedParameter( nPrimersMaxSelfMatchScore ); saveAConsedParameter( nPrimersMaxPrimerDimerScoreForPCR ); saveAConsedParameter( nPrimersMinQuality ); saveAConsedParameter( bPrimersPrintInfoOnRejectedTemplates ); saveAConsedParameter( dPrimersSaltConcentrationMillimolar ); saveAConsedParameter( bPrimersScreenForVector ); saveAConsedParameter( nPrimersToleranceForDifferentBeginningLocationOfUniversalPrimerReads ); saveAConsedParameter( nPrimersTooManyVectorBasesInWalkingRead ); saveAConsedParameter( nQualityThresholdForLowConsensusQuality ); saveAConsedParameter( nTagColorPerCentOfBase ); saveAConsedParameter( soUncompressedChromatDirectory ); saveAConsedParameter( fil454sff2scfDirectory ); saveAConsedParameter( nWhenMakingFakeReadToJoinContigsAddThisManyBasesOnEitherSideOfAlignedRegion ); saveAConsedParameter( nWriteThisAceFormat ); saveAConsedParameter( bDumpCoreIfBoundsError ); saveAConsedParameter( nAutoFinishMinSmithWatermanScoreOfARun ); saveAConsedParameter( dAutoFinishDoNotComparePCRPrimersMoreThanThisManyTimes ); saveAConsedParameter( nRestrictionDigestMaximumBasesToCompareToVector ); saveAConsedParameter( dRestrictionDigestZoomFactor ); saveAConsedParameter( dRestrictionDigestZoomFactorForNavigate ); saveAConsedParameter( nRestrictionDigestToleranceInPositionUnits ); saveAConsedParameter( nAutoPCRAmplifyTooManySeriousFalseMatches ); saveAConsedParameter( dAssemblyViewZoomFactor ); saveAConsedParameter( nAssemblyViewFilterInconsistentFwdRevPairsIfThisClose ); saveAConsedParameter( dAssemblyViewGridCellWidthInPixels ); saveAConsedParameter( nAssemblyViewCursorSensitivityInPixels ); saveAConsedParameter( nAssemblyViewReadDepthQuality ); saveAConsedParameter( nShowAllTracesMaxNumberOfTracesToShowAtOnce ); saveAConsedParameter( nAllowFwdRevPairScaffoldsToBeMergedIfThisManyBasesIntersectionOrLess ); saveAConsedParameter( bJustForPrimateProject ); saveAConsedParameter( filSolexaFilesAreAssumedToBeHere ); saveAConsedParameter( nSolexaAlignmentFilesPerInsertingPadsCycle ); saveAConsedParameter( nSolexaAlignmentsPerAlignmentFile ); saveAConsedParameter( bSolexaFastqFilesArePhredQualityNotSolexaQuality ); saveAConsedParameter( soSolexa64FastqOrSanger33Fastq ); saveAConsedParameter( nMaximumReadsInReadList ); saveAConsedParameter( nMaxLengthOfReadsInapLocatedFragment2 ); saveAConsedParameter( nMaximumStartupErrorsToReport ); saveAConsedParameter( n454LinkerAlignmentMatchScore ); saveAConsedParameter( n454LinkerAlignmentMismatchScore ); saveAConsedParameter( n454LinkerAlignmentIndelScore ); saveAConsedParameter( bFilter454ReadsDeleteCrossMatchOutput ); saveAConsedParameter( nAutoReportAllNeededSpeciesCode ); saveAConsedParameter( bAutoReportUseCommasInBigNumbers ); saveAConsedParameter( bAutoReportPrintToCompareToReich ); saveAConsedParameter( bAutoReportOnlyAllowSitesThatAreBetweenAcceptableSites ); saveAConsedParameter( bAutoReportDeaminationMutationsDeterminedByMoreAccurateMethod ); saveAConsedParameter( bAutoReportChooseTreesUsingBadData ); saveAConsedParameter( bAutoReportChooseTreesByCountingDeaminationMutations ); saveAConsedParameter( bAutoReportChooseTreesUsingKimura ); saveAConsedParameter( bAutoReportPrintCrudeChimpHumanMutations ); saveAConsedParameter( bAutoReportPrintPositionsForGraham ); saveAConsedParameter( bAutoReportPrintAncestralCpGs ); saveAConsedParameter( bAutoReportPrintCpGMutations ); saveAConsedParameter( bAutoReportPrintMutationsWithContext ); saveAConsedParameter( bAutoReportCountAllMutationsML ); saveAConsedParameter( bAutoReportCountAllMutations ); saveAConsedParameter( bAutoReportIgnoreMultipleTrees ); saveAConsedParameter( bAutoReportCountAcceptableColumnsWithNoneOnLeft ); saveAConsedParameter( bAutoReportPrintFlankedColumns4 ); saveAConsedParameter( bAutoReportUseAnnotationFormat ); saveAConsedParameter( bAutoReportPrintFlankedColumns3 ); saveAConsedParameter( bAutoReportPrintFlankedColumns2 ); saveAConsedParameter( bAutoReportPrintFlankedColumns ); saveAConsedParameter( bAutoReportHighQualitySegmentData ); saveAConsedParameter( bAutoReportGoodReadsBug ); saveAConsedParameter( bAutoReportDiscrepancyRateInFlankedRegions ); saveAConsedParameter( bAutoReportDiscrepancyRateInFlankedRegions2 ); saveAConsedParameter( bAutoReportDiscrepancyRateInFlankedRegions4 ); saveAConsedParameter( bAutoReportDiscrepancyRateInFlankedRegions5 ); saveAConsedParameter( bAutoReportSingleSignalOrQuality ); saveAConsedParameter( bAutoReportLowQualityBasesInHQS ); saveAConsedParameter( bAutoReportCompareHQSWithLQS ); saveAConsedParameter( bAutoReportCountColumnsForGroupsOfSpecies ); saveAConsedParameter( bAutoReportSingleSignalInfo ); saveAConsedParameter( bAutoReportSingleSignalInfo2 ); saveAConsedParameter( bAutoReportCompareTopAndBottomStrands ); saveAConsedParameter( bAutoReportCompareTopAndBottomStrandsNoHuman ); saveAConsedParameter( bAutoReportCompareTopAndBottomStrands2 ); saveAConsedParameter( bAutoReportCompareTopAndBottomStrands3 ); saveAConsedParameter( bAutoReportCompareTopAndBottomStrands4 ); saveAConsedParameter( nAutoReportTopStrandPinnedPosition ); saveAConsedParameter( nAutoReportBottomStrandPinnedPosition ); saveAConsedParameter( bAutoReportCompareTopAndBottomStrandsWithHuman ); saveAConsedParameter( bAutoReportPrintLengthsOfAlignedSegmentsOfReads ); saveAConsedParameter( bAutoReportPrintLengthsOfUnalignedHighQualitySegmentsOfReads ); saveAConsedParameter( bAutoReportPrintIfReadsAreCorrectlyAligned ); saveAConsedParameter( bAutoReportCalculateErrorProbabilitiesByComparingPTroPPan ); saveAConsedParameter( bAutoReportPrintAgreeDisagreeBetweenPairsOfSpecies ); saveAConsedParameter( bAutoReportPrintAgreeDisagreeBetweenPairsOfSpecies2 ); saveAConsedParameter( bAutoReportFilterSingleSignal ); saveAConsedParameter( filAutoReportGoodHitReads ); saveAConsedParameter( nAutoReportQualityWindowLow ); saveAConsedParameter( nAutoReportQualityWindowHigh ); saveAConsedParameter( bAutoReportPrintNumberOfIsolatedPadsForEachSpecies ); saveAConsedParameter( bAutoReportPrintNumberOfIsolatedPads ); saveAConsedParameter( soAutoReportIsolatedPadsOfReadsWithThisPattern ); saveAConsedParameter( nAutoReportMinNumberOfPerfectlyAlignedBasesBeforeDiscrepancy ); saveAConsedParameter( nAutoReportMaxSizeOfDiscrepantRegion ); saveAConsedParameter( nAutoReportSizeOfDiscrepantRegion ); saveAConsedParameter( bAutoReportPrintMinimumQualityHistogram ); saveAConsedParameter( bAutoReportPrintDiscrepantRegions ); saveAConsedParameter( bAutoReportPrintBasesInDiscrepantRegions ); saveAConsedParameter( soAutoReportPrintDiscrepantRegionsButIgnoreReadsContainingThis ); saveAConsedParameter( soAutoReportBackboneReadHasThisStringInIt ); saveAConsedParameter( bAutoReportPrintDiscrepantRegionsButOnlyIfAboveQualityThreshold ); saveAConsedParameter( bAutoReportPrintSpeciesAlignment ); saveAConsedParameter( bAutoReportPrintReadAlignment ); saveAConsedParameter( filAutoReportPrintTheseReads ); saveAConsedParameter( bAutoReportPrintReadPositions ); saveAConsedParameter( bAutoReportPrintChosenReadName ); saveAConsedParameter( nAutoReportNumbersOfCharactersOfChosenReadNameToBePrinted ); saveAConsedParameter( soAutoReportPrefix ); saveAConsedParameter( bAutoReportUseOldCriteriaForDeletingColumnsOfPads ); saveAConsedParameter( bAutoReportDeleteColumnsOfPadsBeforeAdjustingReadQualityValues ); saveAConsedParameter( bAutoReportFlankingBasesMustBeSingleSignal ); saveAConsedParameter( nAutoReportMinimumQualityOfFlankingBases ); saveAConsedParameter( bAutoReportFlankingBasesMustBeInHighQualitySegment ); saveAConsedParameter( soAutoReportSpecies ); postProcessing(); } // consedParameters() void consedParameters :: processDoNotFinishTagTypes() { aAutoFinishTagsToNotFinish_.clear(); RWCTokenizer tokTagTypes( soAutoFinishDoNotFinishWhereTheseTagsAre_ ); RWCString soDoNotFinishTag; while( !( soDoNotFinishTag = tokTagTypes() ).isNull() ) { if ( !tagTypes::pGetTagTypes()->bIsAValidTagType( soDoNotFinishTag ) ) { ostrstream ost; ost << "You specified consed.autoFinishDoNotFinishWhereTheseTagsAre: " << soAutoFinishDoNotFinishWhereTheseTagsAre_ << " but \"" << soDoNotFinishTag << "\" is not a recognized tag type." << ends; InputDataError ide(ost.str()); throw ide; } aAutoFinishTagsToNotFinish_.insert( soDoNotFinishTag ); } } void consedParameters :: processDoNotExtendTagTypes() { aAutoFinishTagsToNotExtend_.clear(); RWCTokenizer tokTagTypes( soAutoFinishDoNotExtendContigsWhereTheseTagsAre_ ); RWCString soDoNotExtendTag; while( !( soDoNotExtendTag = tokTagTypes() ).isNull() ) { if ( !tagTypes::pGetTagTypes()->bIsAValidTagType( soDoNotExtendTag ) ) { RWCString soError = "You specified consed.autoFinishDoNotExtendContigsWhereTheseTagsAre: "; soError += soAutoFinishDoNotExtendContigsWhereTheseTagsAre_; soError += " but \""; soError += soDoNotExtendTag; soError += "\" is not a recognized tag type."; THROW_ERROR( soError ); } aAutoFinishTagsToNotExtend_.insert( soDoNotExtendTag ); } } // this is useful for setting parameters that depend on other parameters void consedParameters :: postProcessing() { // dAutoFinishMinNumberOfErrorsFixedByAnExpToUse_ = // dAutoFinishMinNumberOfErrorsFixedByAnExp_ / // (double) dAutoFinishRedundancy_; dAutoFinishMinNumberOfErrorsFixedByAnExpToUse_ = dAutoFinishMinNumberOfErrorsFixedByAnExp_; RWCTokenizer tok( soUserDefinedKeys_ ); RWCString soWord; while( !( soWord = tok() ).isNull() ) { int nKey; if ( !bIsNumericMaybeWithWhitespace( soWord, nKey ) ) { PANIC_OST( ost ) << "resource consed.userDefinedKeys should contain just integers which are the values of keysyms of keys defined in /usr/include/X11/keysymdefs.h, but instead it contains " << soUserDefinedKeys_ << ends; InputDataError ide( ost.str() ); throw ide; } aUserDefinedKeys_.insert( nKey ); } RWCTokenizer tok2( soProgramsForUserDefinedKeys_ ); while( !( soWord = tok2() ).isNull() ) { aProgramsForUserDefinedKeys_.insert( soWord ); } RWCTokenizer tok3( soArgumentsToPassToUserDefinedPrograms_ ); while( !( soWord = tok3() ).isNull() ) { aArgumentsToPassToUserDefinedPrograms_.insert( soWord ); } RWCTokenizer tok4( soTagsToApplyWithUserDefinedKeys_ ); while( !( soWord = tok4() ).isNull() ) { aTagsToApplyWithUserDefinedKeys_.insert( soWord ); } if ( ! ( aUserDefinedKeys_.length() == aProgramsForUserDefinedKeys_.length() && aProgramsForUserDefinedKeys_.length() == aArgumentsToPassToUserDefinedPrograms_.length() && aArgumentsToPassToUserDefinedPrograms_.length() == aTagsToApplyWithUserDefinedKeys_.length() ) ) { PANIC_OST( ost ) << "resource consed.userDefinedKeys has # of keys: " << aUserDefinedKeys_.length() << " with value " << soUserDefinedKeys_ << " resource consed.programsForUserDefinedKeys has # of entries: " << aProgramsForUserDefinedKeys_.length() << " with value " << soProgramsForUserDefinedKeys_ << " resource consed.argumentsToPassToUserDefinedPrograms " << " has # of entries: " << aArgumentsToPassToUserDefinedPrograms_.length() << " with value " << soArgumentsToPassToUserDefinedPrograms_ << " but these should all have the same number of entries" << ends; InputDataError ide( ost.str() ); throw ide; } readFileToOrderReadsInAlignedReadsWindow(); // parse: // pCP->soAutoReportPrintDiscrepantRegionsButIgnoreReadsContainingThis_ // to load // pCP->aAutoReportPatternsOfReadsToIgnore_ RWCTokenizer tokReadsToIgnore( soAutoReportPrintDiscrepantRegionsButIgnoreReadsContainingThis_ ); RWCString soReadPatternToIgnore; while( !( soReadPatternToIgnore = tokReadsToIgnore() ).isNull() ) { aAutoReportPatternsOfReadsToIgnore_.insert( soReadPatternToIgnore ); } if ( soSolexa64FastqOrSanger33Fastq_ != "auto" && soSolexa64FastqOrSanger33Fastq_ != "solexa64" && soSolexa64FastqOrSanger33Fastq_ != "sanger33" ) { RWCString soError = "consed.solexa64FastqOrSanger33Fastq: should be one of auto, solexa64, or sanger33 but is " + soSolexa64FastqOrSanger33Fastq_; THROW_ERROR( soError ); } } void consedParameters :: postProcessingAfterTagTypes() { // add resource soAssemblyViewDisplayTheseTagTypesOnTheseLines_ // into pCP->aAssemblyViewDisplayTheseTagTypesOnTheseLines_ and sort it so ready // for binary search. #define ADD_ASSEMBLY_VIEW_LINE_TO_ERROR_MESSAGE \ soError += " in line: \nconsed.assemblyViewDisplayTheseTagTypesOnTheseLines: "; \ soError += soAssemblyViewDisplayTheseTagTypesOnTheseLines_; RWCTokenizer tokAssemblyViewDisplayTheseTagTypesOnTheseLines( soAssemblyViewDisplayTheseTagTypesOnTheseLines_ ); RWCString soTagType; while( !( soTagType = tokAssemblyViewDisplayTheseTagTypesOnTheseLines() ).isNull() ) { // is this really a tag type, or did the user make a typo? if ( ! tagTypes::pGetTagTypes()->bIsAValidTagType( soTagType ) ) { RWCString soError = "Warning: "; soError += soTagType; soError += " is not a valid tag type "; ADD_ASSEMBLY_VIEW_LINE_TO_ERROR_MESSAGE; // I think I will not make this error fatal. The users // can deal with it later (or not at all). cerr << soError << endl; break; } RWCString soLine = tokAssemblyViewDisplayTheseTagTypesOnTheseLines(); if ( soLine.isNull() ) { RWCString soError = "Warning: There must be a pair of tagType and line number but "; soError += soTagType; soError += " does not have an associated line number "; ADD_ASSEMBLY_VIEW_LINE_TO_ERROR_MESSAGE; cerr << soError << endl; break; } int nLine; if ( !bIsNumericMaybeWithWhitespace( soLine, nLine ) ) { RWCString soError = "Warning: "; soError += soLine; soError += " is not numeric but should be "; ADD_ASSEMBLY_VIEW_LINE_TO_ERROR_MESSAGE; cerr << soError << endl; break; } if ( nLine < 0 || nLine > nAssemblyViewDisplayTagMaxLineIndex ) { RWCString soError = "Warning: "; soError += soLine; soError += " is out of bounds. Should be between "; soError += RWCString( (long) 0 ); soError += " and "; soError += RWCString( (long) nAssemblyViewDisplayTagMaxLineIndex ); ADD_ASSEMBLY_VIEW_LINE_TO_ERROR_MESSAGE; cerr << soError << endl; break; } aAssemblyViewDisplayTheseTagTypes_.insert( new assemblyViewTagTypeAndLine( soTagType, nLine ) ); } aAssemblyViewDisplayTheseTagTypes_.resort(); } void consedParameters :: readFileToOrderReadsInAlignedReadsWindow() { aShowReadsInAlignedReadsWindowOrderGivenByFile_.clearAndDestroy(); FILE* pFileToOrderReads = fopen( filShowReadsInAlignedReadsWindowOrderedByThisFile_.data(), "r" ); if ( !pFileToOrderReads ) { fprintf( stderr, "couldn't open %s--that's ok\n", filShowReadsInAlignedReadsWindowOrderedByThisFile_.data() ); return; } while( fgets( soLine.sz_, nMaxLineSize, pFileToOrderReads ) != NULL ) { soLine.nCurrentLength_ = strlen( soLine.sz_ ); soLine.stripTrailingWhitespaceFast(); if ( soLine.isNull() ) continue; // convert * to the regexp expression .* for( int n = (int) soLine.length() - 1; n >= 0; --n ) { if ( soLine[n] == '*' ) { soLine.insert( n, "." ); } } // put ^ and $ around the string to make it completely // match the read name soLine.insert( 0, "^" ); soLine.append( "$" ); RWCRegexp* pRegExp = new RWCRegexp( soLine ); aShowReadsInAlignedReadsWindowOrderGivenByFile_.insert( pRegExp ); } fclose( pFileToOrderReads ); }