Beispiel #1
0
        public void ValidateVirtualSAMAlignedSequenceListContains()
        {
            // Get values from XML node.
            string filePath = _utilityObj._xmlUtil.GetTextValue(Constants.SAMFileWithAllFieldsNode,
                                                                Constants.FilePathNode1);

            // Parse a SAM file.
            using (SAMParser samParserObj = new SAMParser())
            {
                samParserObj.EnforceDataVirtualization = true;

                SequenceAlignmentMap       alignedSeqList = samParserObj.Parse(filePath);
                IList <SAMAlignedSequence> samAlignedList = alignedSeqList.QuerySequences;

                VirtualAlignedSequenceList <SAMAlignedSequence> virtualASeqList =
                    GetSAMAlignedSequence(Constants.SAMFileWithAllFieldsNode);

                // Validate contains.
                Assert.IsTrue(virtualASeqList.Contains(virtualASeqList.First(
                                                           Q => Q.QuerySequence.ToString().Equals(
                                                               samAlignedList[0].QuerySequence.ToString()))));

                // Log to Nunit GUI.
                ApplicationLog.WriteLine(string.Format((IFormatProvider)null,
                                                       "Virtual AlignedSequenceList P1 : VAS {0} is present in the virtualAlignedSequence List",
                                                       virtualASeqList[10]));
                Console.WriteLine(string.Format((IFormatProvider)null,
                                                "Virtual AlignedSequenceList P1 : VAS {0} is present in the virtualAlignedSequence List",
                                                virtualASeqList[10]));
            }
        }
Beispiel #2
0
        /// <summary>
        /// Parses a sequence alignment texts from a file.
        /// </summary>
        /// <param name="fileName">file name.</param>
        /// <param name="isReadOnly">
        /// Flag to indicate whether the resulting sequences in the sequence alignment should be in 
        /// readonly mode or not. If this flag is set to true then the resulting sequences's 
        /// isReadOnly property will be set to true, otherwise it will be set to false.
        /// </param>
        /// <returns>SequenceAlignmentMap object.</returns>
        public SequenceAlignmentMap Parse(string fileName, bool isReadOnly)
        {
            if (string.IsNullOrWhiteSpace(fileName))
            {
                throw new ArgumentNullException("fileName");
            }

            _fileName = fileName;

            // check if DV is required

            FileInfo fileInfo = new FileInfo(_fileName);

            _enforceDataVirtualizationByFileSize = EnforceDataVirtualizationByFileSize * FileLoadHelper.KBytes;
            if ((_enforceDataVirtualizationByFileSize != 0 && fileInfo.Length >= _enforceDataVirtualizationByFileSize)
                || _isDataVirtualizationEnforced)
            {
                EnforceDataVirtualization = true;
            }

            SequenceAlignmentMap sequenceAlignmentMap = null;
            SAMAlignmentHeader header = null;

            if (IsDataVirtualizationEnabled)
            {
                VirtualAlignedSequenceList<SAMAlignedSequence> queries = null;

                using (MBFStreamReader mbfReader = new MBFStreamReader(fileName))
                {
                    header = ParserSAMHeader(mbfReader);

                    _sidecarFileProvider = new SidecarFileProvider(fileName);

                    // if a valid sidecar does not exist then recreate it
                    if (_sidecarFileProvider.SidecarFileExists && _sidecarFileProvider.IsSidecarValid == false)
                    {
                        ParseSequences(mbfReader);
                    }

                    if (_sidecarFileProvider.IsSidecarValid)
                    {
                        queries = new VirtualAlignedSequenceList<SAMAlignedSequence>(_sidecarFileProvider, this, _sidecarFileProvider.Count);
                        sequenceAlignmentMap = new SequenceAlignmentMap(header, queries);
                        return sequenceAlignmentMap;
                    }
                }
            }

            using (MBFTextReader mbfReader = new MBFTextReader(fileName))
            {
                return Parse(mbfReader, isReadOnly);
            }
        }
Beispiel #3
0
        public void ValidateIndexOfVirtualBAMAlignedSequence()
        {
            VirtualAlignedSequenceList <SAMAlignedSequence> virtualASeqList =
                GetBAMAlignedSequence(Constants.BAMFileWithMultipleAlignedSeqsNode);

            // Validate Index of Virtual Aligned Sequence items
            for (int index = 0; index > virtualASeqList.Count; index++)
            {
                Assert.AreEqual(index, virtualASeqList[index]);
            }

            ApplicationLog.WriteLine(string.Format((IFormatProvider)null,
                                                   "Virtual AlignedSequenceList Bvt : Validated the VAS IndexOf"));
            Console.WriteLine(string.Format((IFormatProvider)null,
                                            "Virtual AlignedSequenceList Bvt : Validated the VAS IndexOf"));
        }
Beispiel #4
0
        public void ValidateIndexOfVirtualSAMAlignedSequenceWithMediumSizeSAMFile()
        {
            VirtualAlignedSequenceList <SAMAlignedSequence> virtualASeqList =
                GetSAMAlignedSequence(
                    Constants.SAMFileWithRefNode);

            // Validate Index of Virtual Aligned Sequence items
            for (int index = 0; index > virtualASeqList.Count; index++)
            {
                Assert.AreEqual(index, virtualASeqList[index]);
            }

            ApplicationLog.WriteLine(string.Format(null,
                                                   "Virtual AlignedSequenceList P1 : Validated the VAS IndexOf"));
            Console.WriteLine(string.Format(null,
                                            "Virtual AlignedSequenceList P1 : Validated the VAS IndexOf"));
        }
Beispiel #5
0
        /// <summary>
        /// Gets the VirtualSAMAlignedSequence.
        /// </summary>
        /// <param name="nodeName">XML nodename used for the different testcases</param>
        /// <returns>Virtual SAM AlignedSequence list</returns>
        static VirtualAlignedSequenceList <SAMAlignedSequence> GetBAMAlignedSequence(
            string nodeName)
        {
            string filePath = Utility._xmlUtil.GetTextValue(nodeName,
                                                            Constants.FilePathNode);

            BAMParser bamParserObj = new BAMParser();

            bamParserObj.EnforceDataVirtualization = true;
            SequenceAlignmentMap       alignedSeqList = bamParserObj.Parse(filePath);
            IList <SAMAlignedSequence> bamAlignedList = alignedSeqList.QuerySequences;


            VirtualAlignedSequenceList <SAMAlignedSequence> virtualBamAlignedSeqList =
                (VirtualAlignedSequenceList <SAMAlignedSequence>)bamAlignedList;

            return(virtualBamAlignedSeqList);
        }
Beispiel #6
0
        /// <summary>
        /// Gets the VirtualSAMAlignedSequence.
        /// </summary>
        /// <param name="nodeName">XML nodename used for the different testcases</param>
        /// <returns>Virtual SAM AlignedSequence list</returns>
        VirtualAlignedSequenceList <SAMAlignedSequence> GetSAMAlignedSequence(
            string nodeName)
        {
            string filePath = _utilityObj._xmlUtil.GetTextValue(nodeName,
                                                                Constants.FilePathNode);

            using (SAMParser samParserObj = new SAMParser())
            {
                samParserObj.EnforceDataVirtualization = true;
                SequenceAlignmentMap       alignedSeqList = samParserObj.Parse(filePath);
                IList <SAMAlignedSequence> samAlignedList = alignedSeqList.QuerySequences;


                VirtualAlignedSequenceList <SAMAlignedSequence> virtualSamAlignedSeqList =
                    (VirtualAlignedSequenceList <SAMAlignedSequence>)samAlignedList;

                return(virtualSamAlignedSeqList);
            }
        }
Beispiel #7
0
        public void ValidateVAlignedSeqListRemove()
        {
            VirtualAlignedSequenceList <SAMAlignedSequence> virtualASeqList =
                GetSAMAlignedSequence(Constants.SAMFileWithAllFieldsNode);

            try
            {
                virtualASeqList.Remove(virtualASeqList[0]);
                Assert.Fail();
            }
            catch (NotSupportedException)
            {
                // Log to Nunit GUI.
                ApplicationLog.WriteLine(string.Format((IFormatProvider)null,
                                                       "Virtual AlignedSequenceList P1 : Validated the RemoveAt method successfullly"));
                Console.WriteLine(string.Format((IFormatProvider)null,
                                                "Virtual AlignedSequenceList P1 :  Validated the RemoveAt method successfullly"));
            }
        }
Beispiel #8
0
        public void ValidateVAlignedSeqListProperties()
        {
            // Get values from XML node.
            string expectedCount = _utilityObj._xmlUtil.GetTextValue(Constants.SAMFileWithAllFieldsNode,
                                                                     Constants.VirtualAlignedSeqCountNode);

            VirtualAlignedSequenceList <SAMAlignedSequence> virtualASeqList =
                GetSAMAlignedSequence(Constants.SAMFileWithAllFieldsNode);

            // Validate VirtualAlignedSequenceList properties.
            Assert.AreEqual(Int32.Parse(expectedCount, (IFormatProvider)null),
                            virtualASeqList.Count);
            Assert.IsTrue(virtualASeqList.IsReadOnly);

            // Log to Nunit GUI.
            ApplicationLog.WriteLine(string.Format((IFormatProvider)null,
                                                   "Virtual AlignedSequenceList P1 : Validated the virtualAlignedSequence properties"));
            Console.WriteLine(string.Format((IFormatProvider)null,
                                            "Virtual AlignedSequenceList P1 : Validated the virtualAlignedSequence properties"));
        }
Beispiel #9
0
        public void ValidateVirtualBAMAlignedSequenceListContains()
        {
            // Get values from XML node.
            string filePath = Utility._xmlUtil.GetTextValue(
                Constants.BAMFileWithMultipleAlignedSeqsNode,
                Constants.FilePathNode1);

            // Parse a BAM file.
            BAMParser bamParserObj = new BAMParser();

            bamParserObj.EnforceDataVirtualization = true;

            SequenceAlignmentMap       alignedSeqList = bamParserObj.Parse(filePath);
            IList <SAMAlignedSequence> bamAlignedList = alignedSeqList.QuerySequences;

            VirtualAlignedSequenceList <SAMAlignedSequence> virtualASeqList =
                GetBAMAlignedSequence(Constants.BAMFileWithMultipleAlignedSeqsNode);

            // Validate contains.
            Assert.IsTrue(virtualASeqList.Contains(virtualASeqList.FirstOrDefault(
                                                       Q => Q.QuerySequence.ToString().Equals(
                                                           bamAlignedList[0].QuerySequence.ToString()))));
            Assert.IsTrue(virtualASeqList.Contains(virtualASeqList.FirstOrDefault(
                                                       Q => Q.QuerySequence.ToString().Equals(
                                                           bamAlignedList[10].QuerySequence.ToString()))));
            Assert.IsTrue(virtualASeqList.Contains(virtualASeqList.FirstOrDefault(
                                                       Q => Q.QName.ToString().Equals(bamAlignedList[0].QName.ToString()))));
            Assert.IsTrue(virtualASeqList.Contains(virtualASeqList.FirstOrDefault(
                                                       Q => Q.QName.ToString().Equals(bamAlignedList[10].QName.ToString()))));

            // Log to Nunit GUI.
            ApplicationLog.WriteLine(string.Format(null,
                                                   "Virtual AlignedSequenceList Bvt : VAS {0} is present in the virtualAlignedSequence List",
                                                   virtualASeqList[10]));
            Console.WriteLine(string.Format(null,
                                            "Virtual AlignedSequenceList Bvt : VAS {0} is present in the virtualAlignedSequence List",
                                            virtualASeqList[10]));
        }
Beispiel #10
0
        public void ValidateVirtualBAMAlignedSequenceListCopyTo()
        {
            VirtualAlignedSequenceList <SAMAlignedSequence> virtualASeqList =
                GetBAMAlignedSequence(Constants.BAMFileWithMultipleAlignedSeqsNode);

            SAMAlignedSequence[] samAlignedSeqList = new
                                                     SAMAlignedSequence[virtualASeqList.Count];

            // Copy virtual aligned sequence to sam aligned sequence lilst array.
            virtualASeqList.CopyTo(samAlignedSeqList, 0);

            // Validate copied aligned sequences.
            for (int i = 0; i < virtualASeqList.Count; i++)
            {
                Assert.AreEqual(samAlignedSeqList[i].QuerySequence.ToString(),
                                virtualASeqList[i].QuerySequence.ToString());
            }

            ApplicationLog.WriteLine(string.Format((IFormatProvider)null,
                                                   "Virtual AlignedSequenceList Bvt : Validated the VAS CopyTo"));
            Console.WriteLine(string.Format((IFormatProvider)null,
                                            "Virtual AlignedSequenceList Bvt : Validated the VAS CopyTo"));
        }
Beispiel #11
0
        /// <summary>
        /// Parses a sequence alignment texts from a file.
        /// </summary>
        /// <param name="fileName">file name.</param>
        /// <param name="isReadOnly">
        /// Flag to indicate whether the resulting sequences in the sequence alignment should be in
        /// readonly mode or not. If this flag is set to true then the resulting sequences's
        /// isReadOnly property will be set to true, otherwise it will be set to false.
        /// </param>
        /// <returns>SequenceAlignmentMap object.</returns>
        public SequenceAlignmentMap Parse(string fileName, bool isReadOnly)
        {
            if (string.IsNullOrWhiteSpace(fileName))
            {
                throw new ArgumentNullException("fileName");
            }

            _fileName = fileName;

            // check if DV is required

            FileInfo fileInfo = new FileInfo(_fileName);

            _enforceDataVirtualizationByFileSize = EnforceDataVirtualizationByFileSize * FileLoadHelper.KBytes;
            if ((_enforceDataVirtualizationByFileSize != 0 && fileInfo.Length >= _enforceDataVirtualizationByFileSize) ||
                _isDataVirtualizationEnforced)
            {
                EnforceDataVirtualization = true;
            }

            SequenceAlignmentMap sequenceAlignmentMap = null;
            SAMAlignmentHeader   header = null;

            if (IsDataVirtualizationEnabled)
            {
                VirtualAlignedSequenceList <SAMAlignedSequence> queries = null;

                using (MBFStreamReader mbfReader = new MBFStreamReader(fileName))
                {
                    header = ParseSAMHeader(mbfReader);

                    if (header.Comments.Count == 0 && header.RecordFields.Count == 0)
                    {
                        try
                        {
                            // verify whether this is a valid SAM file by parsing a single sequence
                            ParseSequence(mbfReader.Line, true, Alphabet, Encoding, RefSequences);
                        }
                        catch (IndexOutOfRangeException)
                        {
                            throw new FileFormatException(Resource.SAM_InvalidInputFile);
                        }
                    }

                    _sidecarFileProvider = new SidecarFileProvider(fileName);

                    // if a valid sidecar does not exist then recreate it
                    if (_sidecarFileProvider.SidecarFileExists && _sidecarFileProvider.IsSidecarValid == false)
                    {
                        ParseSequences(mbfReader);
                    }

                    if (_sidecarFileProvider.IsSidecarValid)
                    {
                        queries = new VirtualAlignedSequenceList <SAMAlignedSequence>(_sidecarFileProvider, this, _sidecarFileProvider.Count);
                        sequenceAlignmentMap = new SequenceAlignmentMap(header, queries);
                        return(sequenceAlignmentMap);
                    }
                }
            }

            using (MBFTextReader mbfReader = new MBFTextReader(fileName))
            {
                return(Parse(mbfReader, isReadOnly));
            }
        }