public void ProcessInputDataBuAdditionTestLength7Number3Pattern4Step987() { // arrange int patternLength = 4; int acceptibleDistance = 0; bool isOptimizitaion = false; bool isSumAsCriteria = false; bool isAllResult = true; int step = 98798111; int numberOfSequence = 3; int sequenceLength = 7; var sequenceLengthes = string.Join(",", Enumerable.Repeat(sequenceLength, numberOfSequence)); var statisticAccumulator = new RegulatoryMotifsStatisticAccumulator(new RegulatoryMotifSaver(), patternLength, sequenceLengthes, isOptimizitaion, isSumAsCriteria, isAllResult, acceptibleDistance, bufferSize: 10000); statisticAccumulator.Delete("RegulatoryMotifsBoundaryBranchEnumeration"); char[] alphabet = new char[] { 'a', 'c', 'g', 't' }; long max = 1L << 42; //Convert.ToInt64(Math.Pow(4,21)); long sequenceAsNumber = 0; int size = numberOfSequence * sequenceLength; int[] sequence = new int[size]; char[] charSequence = new char[size]; long[] masks = new long[size]; long mask = 3; for (int i = 0; i < size; i++) { masks[i] = mask; mask <<= 2; } // act while (sequenceAsNumber < max) { int shift = 0; for (int i = 0; i < size; i++) { sequence[i] = (int)((sequenceAsNumber & masks[i]) >> shift); shift += 2; } sequenceAsNumber += step; charSequence = sequence.Select(j => alphabet[j]).ToArray(); char[][] charSets = Enumerable.Range(0, numberOfSequence).Select(i => Enumerable.Range(0, sequenceLength).Select(j => charSequence[j * numberOfSequence + i]).ToArray()).ToArray(); RegulatoryMotifsBoundaryBranchEnumeration enumeration = new RegulatoryMotifsBoundaryBranchEnumeration(alphabet, charSets, patternLength, pIsAllResult: false, pIsOptimizitaion: isOptimizitaion, pIsSumAsCriteria: isSumAsCriteria, pAcceptibleDistance: acceptibleDistance) { StatisticAccumulator = statisticAccumulator }; // act enumeration.Execute(); } // assert }
//-------------------------------------------------------------------------------------- public EnumerateCharSetForMotifsPatternBranch(char[] pCharSet, int pSequenceLength, int pNumberOfSequence, int pPatternLength, bool pIsAllResult, bool pIsOptimizitaion = false, bool pIsSumAsCriteria = false, int pAcceptibleDistance = 0, int pStep = 1) : base(pCharSet, pSequenceLength * pNumberOfSequence, 0) { _patternLength = pPatternLength; _acceptibleDistance = pAcceptibleDistance; _isOptimizitaion = pIsOptimizitaion; _isSumAsCriteria = pIsSumAsCriteria; _isAllResult = pIsAllResult; _step = pStep; _stepCounter = 1; _numberOfSequence = pNumberOfSequence; _sequenceLength = pSequenceLength; var sequenceLengthes = string.Join(",", Enumerable.Repeat(_sequenceLength, _numberOfSequence)); _statisticAccumulator = new RegulatoryMotifsStatisticAccumulator(new RegulatoryMotifSaver(), _patternLength, sequenceLengthes, _isOptimizitaion, _isSumAsCriteria, _isAllResult, _acceptibleDistance, bufferSize: 10000); _statisticAccumulator.Delete("RegulatoryMotifsBoundaryBranchEnumeration"); }