예제 #1
0
        /// <summary>
        /// returns the total depth given different sources of information
        /// </summary>
        public static int?GetTotalDepth(int?infoDepth, IntermediateSampleFields intermediateSampleFields)
        {
            // use TAR & TIR
            if (intermediateSampleFields.TAR != null && intermediateSampleFields.TIR != null)
            {
                return(GetTotalDepthUsingTarTir(intermediateSampleFields));
            }

            // use base counts
            if (intermediateSampleFields.TotalAlleleCount != null)
            {
                return(GetTotalDepthUsingAlleleCounts(intermediateSampleFields));
            }

            // use DPI
            if (intermediateSampleFields.FormatIndices.DPI != null)
            {
                return(GetTotalDepthUsingDpi(intermediateSampleFields));
            }

            // use DP
            if (intermediateSampleFields.FormatIndices.DP != null)
            {
                return(GetTotalDepthUsingDp(intermediateSampleFields));
            }

            // use NR
            if (intermediateSampleFields.NR != null && intermediateSampleFields.AltAlleles.Length == 1)
            {
                return(intermediateSampleFields.NR);
            }

            // use INFO DP (Pisces)
            return(infoDepth);
        }
예제 #2
0
        /// <summary>
        /// returns the genotype quality given different sources of information
        /// </summary>
        public static int?GetGenotypeQuality(IntermediateSampleFields intermediateSampleFields)
        {
            var hasGqx = intermediateSampleFields.FormatIndices.GQX != null;
            var hasGq  = intermediateSampleFields.FormatIndices.GQ != null;

            if (!hasGqx && !hasGq)
            {
                return(null);
            }

            var gqIndex = hasGqx ? intermediateSampleFields.FormatIndices.GQX.Value : intermediateSampleFields.FormatIndices.GQ.Value;

            if (intermediateSampleFields.SampleColumns.Length <= gqIndex)
            {
                return(null);
            }

            var gq = intermediateSampleFields.SampleColumns[gqIndex];

            if (int.TryParse(gq, out int num))
            {
                return(num);
            }
            return(null);
        }
        public void GetInteger_ReturnNull()
        {
            var observedResult = IntermediateSampleFields.GetInteger("test");

            Assert.Null(observedResult);

            observedResult = IntermediateSampleFields.GetInteger(null);
            Assert.Null(observedResult);
        }
        public void GetBool_ReturnFalse()
        {
            var observedResult = IntermediateSampleFields.GetBool("bob", "test");

            Assert.False(observedResult);

            observedResult = IntermediateSampleFields.GetBool(null, "test");
            Assert.False(observedResult);
        }
예제 #5
0
        /// <summary>
        /// returns the genotype flag
        /// </summary>
        public static string GetGenotype(IntermediateSampleFields intermediateSampleFields)
        {
            if (intermediateSampleFields.FormatIndices.GT == null)
            {
                return(null);
            }
            var genotype = intermediateSampleFields.SampleColumns[intermediateSampleFields.FormatIndices.GT.Value];

            return(genotype == "." ? null : genotype);
        }
예제 #6
0
        /// <summary>
        /// returns the failed filter flag
        /// </summary>
        public static bool GetFailedFilter(IntermediateSampleFields intermediateSampleFields)
        {
            if (intermediateSampleFields.FormatIndices.FT == null)
            {
                return(false);
            }
            var filterValue = intermediateSampleFields.SampleColumns[intermediateSampleFields.FormatIndices.FT.Value];

            return(filterValue != "PASS" && filterValue != ".");
        }
        public void IntermediateSampleFields_AlleleCounts()
        {
            const string vcfLine = "chr1\t5592503\t.\tC\tT\t900.00\tPASS\t.\tGT:AU:CU:GU:TU:DP:DPF:AD\t1/1:10,11:20,21:30,31:40,41:70:3:0,70";
            var          cols    = vcfLine.Split('\t');

            var formatIndices = FormatIndices.Extract(cols[VcfCommon.FormatIndex]);
            var sampleCols    = cols[VcfCommon.GenotypeIndex].Split(':');
            var sampleFields  = new IntermediateSampleFields(cols, formatIndices, sampleCols);

            Assert.Equal(10, sampleFields.ACount);
            Assert.Equal(20, sampleFields.CCount);
            Assert.Equal(30, sampleFields.GCount);
            Assert.Equal(40, sampleFields.TCount);
        }
예제 #8
0
        /// <summary>
        /// returns the total depth using DP
        /// </summary>
        private static int?GetTotalDepthUsingDp(IntermediateSampleFields intermediateSampleFields)
        {
            if (intermediateSampleFields.FormatIndices.DP == null || intermediateSampleFields.SampleColumns.Length <= intermediateSampleFields.FormatIndices.DP.Value)
            {
                return(null);
            }
            var depth = intermediateSampleFields.SampleColumns[intermediateSampleFields.FormatIndices.DP.Value];

            if (int.TryParse(depth, out int num))
            {
                return(num);
            }
            return(null);
        }
예제 #9
0
        public static int[] GetPairEndReadCounts(IntermediateSampleFields intermediateSampleFields)
        {
            if (intermediateSampleFields.FormatIndices.PR == null)
            {
                return(null);
            }
            var readCounts = intermediateSampleFields.SampleColumns[intermediateSampleFields.FormatIndices.PR.Value].Split(',');

            var pairEndReadCounts = new int[readCounts.Length];

            for (int i = 0; i < pairEndReadCounts.Length; i++)
            {
                if (!int.TryParse(readCounts[i], out var num))
                {
                    return(null);
                }
                pairEndReadCounts[i] = num;
            }

            return(pairEndReadCounts);
        }
예제 #10
0
        public static int[] GetSplitReadCounts(IntermediateSampleFields intermediateSampleFields)
        {
            if (intermediateSampleFields.FormatIndices.SR == null)
            {
                return(null);
            }
            var splitReadCounts = intermediateSampleFields.SampleColumns[intermediateSampleFields.FormatIndices.SR.Value].Split(',');

            var splitReads = new int[splitReadCounts.Length];

            for (int i = 0; i < splitReads.Length; i++)
            {
                if (!int.TryParse(splitReadCounts[i], out var num))
                {
                    return(null);
                }
                splitReads[i] = num;
            }

            return(splitReads);
        }
        public void GetBool_ReturnTrue()
        {
            var observedResult = IntermediateSampleFields.GetBool("test", "test");

            Assert.True(observedResult);
        }
        public void GetInteger_ReturnInteger()
        {
            var observedResult = IntermediateSampleFields.GetInteger("1234");

            Assert.Equal(1234, observedResult);
        }
        public void GetFloat_ReturnFloat()
        {
            var observedResult = IntermediateSampleFields.GetFloat("1.23");

            Assert.Equal(1.23f, observedResult);
        }
예제 #14
0
 /// <summary>
 /// returns the total depth using tier 1 allele counts
 /// </summary>
 private static int?GetTotalDepthUsingAlleleCounts(IntermediateSampleFields intermediateSampleFields)
 {
     return(intermediateSampleFields.TotalAlleleCount);
 }
예제 #15
0
 /// <summary>
 /// returns the total depth using TAR & TIR
 /// </summary>
 private static int?GetTotalDepthUsingTarTir(IntermediateSampleFields intermediateSampleFields)
 {
     return(intermediateSampleFields.TAR + intermediateSampleFields.TIR);
 }