예제 #1
0
        public void ExtendAlleleBlock_AsExpected()
        {
            var alleleBlock1   = new AlleleBlock(2, new [] { 1, 1 }, 2, 2);
            var extendedBlock1 = AlleleBlockMerger.ExtendAlleleBlock(alleleBlock1, 2, 2);

            var expectedBlock1 = new AlleleBlock(0, new [] { 0, 0, 1, 1, 0, 0 }, -1, -1);

            Assert.Equal(extendedBlock1, expectedBlock1);
        }
예제 #2
0
        public void GetPositionsAndRefAltAlleles_AsExpected()
        {
            var genotypeBlock    = new GenotypeBlock(new[] { "1|2", "1/1", "0|1", "0/1" }.Select(Genotype.GetGenotype).ToArray());
            var genotypeToSample =
                new Dictionary <GenotypeBlock, List <int> > {
                { genotypeBlock, new List <int> {
                      0
                  } }
            };
            var indexOfUnsupportedVars = Enumerable.Repeat(new HashSet <int>(), genotypeBlock.Genotypes.Length).ToArray();
            var starts = new[] { 356, 358, 360, 361 };
            var functionBlockRanges = new List <int> {
                358, 360, 362, 364
            };
            var          alleles     = new[] { new[] { "G", "C", "T" }, new[] { "A", "T" }, new[] { "C", "G" }, new[] { "G", "T" } };
            const string refSequence = "GAATCG";
            var          alleleBlockToSampleHaplotype       = AlleleBlock.GetAlleleBlockToSampleHaplotype(genotypeToSample, indexOfUnsupportedVars, starts, functionBlockRanges, out var alleleBlockGraph);
            var          mergedAlleleBlockToSampleHaplotype =
                AlleleBlockMerger.Merge(alleleBlockToSampleHaplotype, alleleBlockGraph).ToArray();
            var alleleSet    = new AlleleSet(ChromosomeUtilities.Chr1, starts, alleles);
            var alleleBlocks = mergedAlleleBlockToSampleHaplotype.Select(x => x.Key).ToArray();
            var sequence     = new NSequence();

            var result1 = VariantGenerator.GetPositionsAndRefAltAlleles(alleleBlocks[0], alleleSet, refSequence, starts[0], null, sequence, _vidCreator);
            var result2 = VariantGenerator.GetPositionsAndRefAltAlleles(alleleBlocks[1], alleleSet, refSequence, starts[0], null, sequence, _vidCreator);

            var expectedVarPosIndexes1 = new List <int> {
                0, 1
            };
            var expectedVarPosIndexes2 = new List <int> {
                0, 1, 2
            };

            Assert.Equal((356, 360, "GAATC", "CATTC"), (result1.Start, result1.End, result1.Ref, result1.Alt));
            for (var i = 0; i < expectedVarPosIndexes1.Count; i++)
            {
                Assert.Equal(expectedVarPosIndexes1[i], result1.VarPosIndexesInAlleleBlock[i]);
            }

            Assert.Equal((356, 360, "GAATC", "TATTG"), (result2.Start, result2.End, result2.Ref, result2.Alt));
            for (var i = 0; i < expectedVarPosIndexes2.Count; i++)
            {
                Assert.Equal(expectedVarPosIndexes2[i], result2.VarPosIndexesInAlleleBlock[i]);
            }
        }
예제 #3
0
        public void Merge_AsExpected()
        {
            var genotypeBlock1   = new GenotypeBlock(new[] { "1|0", "1|1", "1|1" }.Select(Genotype.GetGenotype).ToArray());
            var genotypeBlock2   = new GenotypeBlock(new[] { "0|0", "1|0", "1|1" }.Select(Genotype.GetGenotype).ToArray());
            var genotypeToSample =
                new Dictionary <GenotypeBlock, List <int> >
            {
                { genotypeBlock1, new List <int> {
                      0
                  } },
                { genotypeBlock2, new List <int> {
                      1
                  } }
            };
            var indexOfUnsupportedVars = Enumerable.Repeat(new HashSet <int>(), 3).ToArray();
            var starts = Enumerable.Range(100, 3).ToArray();
            var functionBlockRanges          = starts.Select(x => x + 2).ToList();
            var alleleBlockToSampleHaplotype = AlleleBlock.GetAlleleBlockToSampleHaplotype(genotypeToSample,
                                                                                           indexOfUnsupportedVars, starts, functionBlockRanges, out var alleleBlockGraph);
            var mergedAlleleBlockToSampleHaplotype =
                AlleleBlockMerger.Merge(alleleBlockToSampleHaplotype, alleleBlockGraph);

            var expectedBlock1 = new AlleleBlock(0, new[] { 1, 1, 1 }, -1, -1);
            var expectedBlock2 = new AlleleBlock(0, new[] { 0, 1, 1 }, -1, -1);
            var expectedBlock3 = new AlleleBlock(0, new[] { 0, 0, 1 }, -1, -1);

            Assert.True(mergedAlleleBlockToSampleHaplotype.ContainsKey(expectedBlock1));
            Assert.True(mergedAlleleBlockToSampleHaplotype[expectedBlock1]
                        .SequenceEqual(new[] { new SampleHaplotype(0, 0) }));
            Assert.True(mergedAlleleBlockToSampleHaplotype.ContainsKey(expectedBlock2));
            Assert.True(mergedAlleleBlockToSampleHaplotype[expectedBlock2]
                        .SequenceEqual(new[] { new SampleHaplotype(0, 1), new SampleHaplotype(1, 0) }));
            Assert.True(mergedAlleleBlockToSampleHaplotype.ContainsKey(expectedBlock3));
            Assert.True(mergedAlleleBlockToSampleHaplotype[expectedBlock3]
                        .SequenceEqual(new[] { new SampleHaplotype(1, 1) }));
        }