Ejemplo n.º 1
0
 public MzTabWriter(string filePath)
 {
     FilePath      = filePath;
     _writer       = new StreamWriter(FilePath, false, MzTab.DefaultEncoding);
     IsOpen        = true;
     _currentState = MzTab.States.None;
 }
Ejemplo n.º 2
0
        public void WriteMetaData(string key, object value)
        {
            if (_currentState > MzTab.States.MetaData)
            {
                throw new ArgumentException("Unable to write Metadata, incorrect location. Only one Metadata section per file");
            }
            _currentState |= MzTab.States.MetaData;

            WriteLine(MzTab.LinePrefix.MetaData, key, value);
        }
Ejemplo n.º 3
0
        private void ReadDataTable(MzTab.States dataState, object[] data, DataTable table)
        {
            if (table == null)
            {
                throw new ArgumentException("No header information loaded for " + dataState + ", unable to parse data");
            }

            // Set the we have entered the current state
            _currentState |= dataState;

            // Add the row to the Protein data table
            table.Rows.Add(data.SubArray(1, table.Columns.Count));
        }
Ejemplo n.º 4
0
        private void ReadMetaData(string[] data, int lineNumber)
        {
            // Set that we have enter in Metadata section
            _currentState |= MzTab.States.MetaData;

            // Grab the key-value pair, which should correspond to index 1 and 2, respectively
            string key   = data[1];
            string value = data[2];

            if (string.IsNullOrWhiteSpace(key))
            {
                throw new ArgumentException("No key was specified in the metadata section at line #" + lineNumber);
            }

            MetaData.SetValue(key, value);
        }
Ejemplo n.º 5
0
        public void WriteMetaData(MzTabMetaData metaData)
        {
            if (_currentState > MzTab.States.MetaData)
            {
                throw new ArgumentException("Unable to write Metadata, incorrect location. Only one Metadata section per file");
            }
            _currentState |= MzTab.States.MetaData;

            foreach (KeyValuePair <string, string> kvp in metaData.GetKeyValuePairs())
            {
                _writer.Write(MzTab.MetaDataLinePrefix);
                _writer.Write(MzTab.FieldSeparator);
                _writer.Write(kvp.Key);
                _writer.Write(MzTab.FieldSeparator);
                _writer.WriteLine(kvp.Value);
            }

            // Save meta data
            _metaData = metaData;
        }
Ejemplo n.º 6
0
        private void ReadTableDefinition(MzTab.States headerState, string[] data, DataTable table)
        {
            if ((_currentState & MzTab.States.MetaData) != MzTab.States.MetaData)
            {
                throw new ArgumentException("The MetaData section MUST occur before the " + table.TableName + " Section. Invalid input file");
            }

            if ((_currentState & headerState) == headerState)
            {
                throw new ArgumentException("The " + table.TableName + " Table Header has already been parsed once, only one  " + table.TableName + " section is allowed per mzTab file.");
            }

            // Set the we have entered the current state
            _currentState |= headerState;

            int i = 1;

            while (i < data.Length && !string.IsNullOrWhiteSpace(data[i]))
            {
                table.Columns.Add(data[i].Trim());
                i++;
            }
        }
Ejemplo n.º 7
0
        private void WriteData <T>(MzTabSection section, IEnumerable <T> data, bool includeCommentLine = false) where T : MzTabEntity
        {
            if ((_currentState & MzTab.States.MetaData) != MzTab.States.MetaData)
            {
                throw new ArgumentException("Unable to write the " + section + " section, incorrect location. The Meta Data section must come first.");
            }

            List <T> objects = data.ToList();

            if (objects.Count == 0)
            {
                return;
            }

            MzTab.LinePrefix headerPrefix = MzTab.LinePrefix.Comment;
            MzTab.LinePrefix prefix       = MzTab.LinePrefix.Comment;

            switch (section)
            {
            case MzTabSection.SmallMolecule:
                headerPrefix   = MzTab.LinePrefix.SmallMoleculeTable;
                prefix         = MzTab.LinePrefix.SmallMoleculeData;
                _currentState |= MzTab.States.SmallMoleculeData;
                _currentState |= MzTab.States.SmallMoleculeHeader;
                break;

            case MzTabSection.Peptide:
                headerPrefix   = MzTab.LinePrefix.PeptideTable;
                prefix         = MzTab.LinePrefix.PeptideData;
                _currentState |= MzTab.States.PeptideData;
                _currentState |= MzTab.States.PeptideHeader;
                break;

            case MzTabSection.PSM:
                headerPrefix   = MzTab.LinePrefix.PsmTable;
                prefix         = MzTab.LinePrefix.PsmData;
                _currentState |= MzTab.States.PsmData;
                _currentState |= MzTab.States.PsmHeader;
                break;

            case MzTabSection.Protein:
                headerPrefix   = MzTab.LinePrefix.ProteinTable;
                prefix         = MzTab.LinePrefix.ProteinData;
                _currentState |= MzTab.States.ProteinData;
                _currentState |= MzTab.States.ProteinHeader;
                break;
            }

            // Write Header
            string[] header = MzTabEntity.GetHeader(objects).ToArray();
            WriteLine(headerPrefix, header);

            if (includeCommentLine)
            {
                WriteComment(string.Join("\t", header));
            }

            // Write table
            foreach (string[] values in objects.Select(datum => datum.GetStringValues(header).ToArray()))
            {
                WriteLine(prefix, values);
            }
        }