Exemplo n.º 1
0
        public BufferedPositions Purge()
        {
            var copyOfBuffer = BufferedPositions;

            BufferedPositions = BufferedPositions.CreatEmptyBufferedPositions();
            return(copyOfBuffer);
        }
Exemplo n.º 2
0
        }                                                         // used to find overlap genes for now

        public PositionBuffer(ICodonInfoProvider codonInfoProvider, IIntervalForest <IGene> geneIntervalForest)
        {
            CodonInfoProvider  = codonInfoProvider;
            GeneIntervalForest = geneIntervalForest;
            CurrentChromosome  = new EmptyChromosome(string.Empty);
            BufferedPositions  = BufferedPositions.CreatEmptyBufferedPositions();
        }
Exemplo n.º 3
0
        private void ResetBuffer(ISimplePosition simplePosition, bool recomposable)
        {
            var functionBlockRanges = recomposable ? new List <int> {
                CodonInfoProvider.GetLongestFunctionBlockDistance(simplePosition)
            } : new List <int>();

            BufferedPositions = new BufferedPositions(new List <ISimplePosition> {
                simplePosition
            }, new List <bool> {
                recomposable
            }, functionBlockRanges);
            CurrentChromosome = simplePosition.Chromosome;
        }
Exemplo n.º 4
0
        public BufferedPositions AddPosition(ISimplePosition simplePosition)
        {
            bool recomposable          = IsRecomposable(simplePosition);
            bool isPositionWithinRange = !simplePosition.Chromosome.IsEmpty() && PositionWithinRange(simplePosition);

            if (isPositionWithinRange)
            {
                BufferedPositions.SimplePositions.Add(simplePosition);
                BufferedPositions.Recomposable.Add(recomposable);
                if (recomposable)
                {
                    UpdateFunctionBlockRanges(simplePosition);
                }
                return(BufferedPositions.CreatEmptyBufferedPositions());
            }
            var copyOfBuffer = BufferedPositions;

            ResetBuffer(simplePosition, recomposable);
            return(copyOfBuffer);
        }
Exemplo n.º 5
0
        internal IEnumerable <ISimplePosition> GenerateOutput(BufferedPositions bufferedPositions)
        {
            if (bufferedPositions.SimplePositions.Count == 0)
            {
                return(new List <ISimplePosition>());                                             // nothing to output
            }
            var recomposablePositions = bufferedPositions.GetRecomposablePositions();

            if (recomposablePositions.Count <= 1)
            {
                return(bufferedPositions.SimplePositions);                                  // nothing to recompose
            }
            var functionBlockRanges = bufferedPositions.FunctionBlockRanges;
            var recomposedPositions = _variantGenerator.Recompose(recomposablePositions, functionBlockRanges).ToList();

            if (recomposedPositions.Count == 0)
            {
                return(bufferedPositions.SimplePositions);                                // nothing has been recomposed
            }
            return(bufferedPositions.SimplePositions.Concat(recomposedPositions).OrderBy(x => x.Start));
        }