Ejemplo n.º 1
0
        public void TestConstructorWithByteArray()
        {
            byte[] sequenceData = new byte[6];
            sequenceData[0] = (byte)'C';
            sequenceData[1] = (byte)'A';
            sequenceData[2] = (byte)'A';
            sequenceData[3] = (byte)'G';
            sequenceData[4] = (byte)'C';
            sequenceData[5] = (byte)'T';

            byte[] qualityScores = new byte[6];
            qualityScores[0] = 65;
            qualityScores[1] = 65;
            qualityScores[2] = 65;
            qualityScores[3] = 65;
            qualityScores[4] = 110;
            qualityScores[5] = 125;

            string expectedSequence = "CAAGCT";
            QualitativeSequence qualitativeSequence = new QualitativeSequence(Alphabets.DNA, FastQFormatType.Illumina_v1_3, sequenceData, qualityScores);

            string actual = "";
            foreach (byte bt in qualitativeSequence)
            {
                actual += (char)bt;
            }
            Assert.AreEqual(expectedSequence, actual);

            Assert.AreEqual(qualitativeSequence.Alphabet, Alphabets.DNA);
            Assert.AreEqual(qualitativeSequence.Count, 6);
            // 
            // Test for indexer
            Assert.AreEqual(qualitativeSequence[0], (byte)'C');
            Assert.AreEqual(qualitativeSequence[1], (byte)'A');
            Assert.AreEqual(qualitativeSequence[2], (byte)'A');
            Assert.AreEqual(qualitativeSequence[3], (byte)'G');
            Assert.AreEqual(qualitativeSequence[4], (byte)'C');
            Assert.AreEqual(qualitativeSequence[5], (byte)'T');

            int index = 0;
            foreach (byte qualityScore in qualitativeSequence.GetEncodedQualityScores())
            {
                Assert.AreEqual(qualityScores[index++], qualityScore);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Convert quality values to string array
        /// </summary>
        /// <param name="sequence">Sequence which has the quality values</param>
        /// <param name="maxColumns">Max number of columns to write to</param>
        /// <returns>string array with quality values</returns>
        public static string[,] FastQQualityValuesToRange(QualitativeSequence sequence, int maxColumns)
        {
            var qualityScoreArray = sequence.GetEncodedQualityScores();
            long rowCount = (int)Math.Ceiling((decimal)qualityScoreArray.Length / (decimal)maxColumns);
            long columnCount = sequence.Count > maxColumns ? maxColumns : sequence.Count;
            string[,] rangeData = new string[rowCount, columnCount];

            int count = 0;

            for (int row = 0; row < rowCount; row++)
            {
                for (int col = 0; col < columnCount && count < qualityScoreArray.Length; col++, count++)
                {
                    rangeData[row, col] = (qualityScoreArray[count]).ToString(CultureInfo.InvariantCulture);
                }
            }

            return rangeData;
        }