Beispiel #1
0
        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
        }
Beispiel #2
0
        //--------------------------------------------------------------------------------------
        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");
        }