public void GenerateOutput_NoRecomposable_ReturnOriginalVcfFieldList() { var positionMock1 = new Mock <IPosition>(); var positionMock2 = new Mock <IPosition>(); var positionMock3 = new Mock <IPosition>(); positionMock1.SetupGet(x => x.VcfFields).Returns(new[] { "chr1", "2", ".", "A", ".", ".", "PASS", ".", "GT", "0/0" }); var position1 = positionMock1.Object; positionMock2.SetupGet(x => x.VcfFields).Returns(new[] { "chr1", "4", ".", "C", ".", ".", "PASS", ".", "GT", "0/0" }); var position2 = positionMock2.Object; positionMock3.SetupGet(x => x.VcfFields).Returns(new[] { "chr1", "6", ".", "G", ".", ".", "PASS", ".", "GT", "0/0" }); var position3 = positionMock3.Object; var positions = new List <ISimplePosition> { position1, position2, position3 }; var recomposable = new List <bool> { false, false, false }; var functionBlockRanges = new List <int>(); var bufferedPositions = new BufferedPositions(positions, recomposable, functionBlockRanges); var positionProcessor = new PositionProcessor(_positionBufferMock.Object, _variantGeneratorMock.Object); var output = positionProcessor.GenerateOutput(bufferedPositions).ToArray(); for (int i = 0; i < output.Length; i++) { Assert.True(positions[i].VcfFields.SequenceEqual(output[i].VcfFields)); } }
public void GenerateOutput_NothingRecomposed_ReturnOriginalVcfFieldList() { var mockSequenceProvider = new Mock <ISequenceProvider>(); mockSequenceProvider.SetupGet(x => x.RefNameToChromosome) .Returns(new Dictionary <string, IChromosome> { { "chr1", new Chromosome("chr1", "1", 0) } }); mockSequenceProvider.SetupGet(x => x.Sequence).Returns(new SimpleSequence("CAGCTGAA")); var sequenceProvider = mockSequenceProvider.Object; var variantGenerator = new VariantGenerator(sequenceProvider); var position1 = AnnotationUtilities.GetSimplePosition("chr1 2 . A T . PASS . GT:PS 0|1:123", sequenceProvider.RefNameToChromosome); var position2 = AnnotationUtilities.GetSimplePosition("chr1 4 . C G . PASS . GT 0/1", sequenceProvider.RefNameToChromosome); var position3 = AnnotationUtilities.GetSimplePosition("chr1 6 . G C . PASS . GT 0|1", sequenceProvider.RefNameToChromosome); var positions = new List <ISimplePosition> { position1, position2, position3 }; var recomposable = new List <bool> { true, true, true }; var functionBlockRanges = new List <int> { 4, 6, 8 }; var bufferedPositions = new BufferedPositions(positions, recomposable, functionBlockRanges); var positionProcessor = new PositionProcessor(_positionBufferMock.Object, variantGenerator); var output = positionProcessor.GenerateOutput(bufferedPositions).ToArray(); for (int i = 0; i < output.Length; i++) { Assert.True(positions[i].VcfFields.SequenceEqual(output[i].VcfFields)); } }
public void GenerateOutput_Return_OriginalAndRecomposed_VcfFieldList() { var mockSequenceProvider = new Mock <ISequenceProvider>(); mockSequenceProvider.SetupGet(x => x.RefNameToChromosome) .Returns(new Dictionary <string, IChromosome> { { "chr1", new Chromosome("chr1", "1", 0) } }); mockSequenceProvider.SetupGet(x => x.Sequence).Returns(new SimpleSequence("CAGCTGAA")); var sequenceProvider = mockSequenceProvider.Object; var variantGenerator = new VariantGenerator(sequenceProvider); var position1 = AnnotationUtilities.GetSimplePosition("chr1 2 . A T . PASS . GT:PS 0|1:.", sequenceProvider.RefNameToChromosome); var position2 = AnnotationUtilities.GetSimplePosition("chr1 4 . C G . PASS . GT 1/1", sequenceProvider.RefNameToChromosome); var position3 = AnnotationUtilities.GetSimplePosition("chr1 6 . G C . PASS . GT 0|1", sequenceProvider.RefNameToChromosome); var positions = new List <ISimplePosition> { position1, position2, position3 }; var recomposable = new List <bool> { true, true, true }; var functionBlockRanges = new List <int> { 4, 6, 8 }; var bufferedPositions = new BufferedPositions(positions, recomposable, functionBlockRanges); var positionProcessor = new PositionProcessor(_positionBufferMock.Object, variantGenerator); var output = positionProcessor.GenerateOutput(bufferedPositions).ToArray(); var expectedOutput = new string[4][]; expectedOutput[0] = position1.VcfFields; expectedOutput[1] = new[] { "chr1", "2", ".", "AGCTG", "AGGTG,TGGTC", ".", "PASS", "RECOMPOSED", "GT", "1|2" }; expectedOutput[2] = position2.VcfFields; expectedOutput[3] = position3.VcfFields; for (int i = 0; i < output.Length; i++) { Assert.True(expectedOutput[i].SequenceEqual(output[i].VcfFields)); } }
public void GetRecomposablePositions_OnlyRecomposablePositions_Returned() { var positions = new List <ISimplePosition> { GetMockedIPositionOnChr1(99, 99), GetMockedIPositionOnChr1(101, 101, "."), GetMockedIPositionOnChr1(105, 105, "T"), GetMockedIPositionOnChr1(110, 110, ".") }; var recomposable = new List <bool> { true, false, true, false }; var functionBlockRanges = new List <int> { 102, 110 }; var recomposablePositions = new BufferedPositions(positions, recomposable, functionBlockRanges).GetRecomposablePositions(); Assert.Equal(2, recomposablePositions.Count); Assert.True(positions[0].Equals(recomposablePositions[0])); Assert.True(positions[2].Equals(recomposablePositions[1])); }
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)); }