public PositionMapping(MZTabColumnFactory factory, string[] headerList)
 {
     for (int physicalPosition = 0; physicalPosition < headerList.Length; physicalPosition++){
         string header = headerList[physicalPosition];
         MZTabColumn column = factory.FindColumnByHeader(header);
         if (column != null){
             put(physicalPosition, column.LogicPosition);
         }
     }
 }
        /**
         * valueLabel pattern like: column_name=param_string
         */
        private MZTabError checkColUnit(string valueLabel, MZTabColumnFactory factory)
        {
            string[] items = valueLabel.Split('=');
            string columnName = items[0].Trim();
            string value = items[1].Trim();

            MZTabColumn column = factory.FindColumnByHeader(columnName);
            if (column == null){
                // column_name not exists in the factory.
                return new MZTabError(FormatErrorType.ColUnit, _lineNumber, valueLabel, columnName);
            }
            Param param = MZTabUtils.ParseParam(value);
            if (param == null){
                return new MZTabError(FormatErrorType.Param, _lineNumber, valueLabel, value);
            }
            if (factory.Section.Equals(Section.Protein_Header)){
                _metadata.AddProteinColUnit(column, param);
            }
            else if (factory.Section.Equals(Section.Peptide_Header)){
                _metadata.AddPeptideColUnit(column, param);
            }
            else if (factory.Section.Equals(Section.PSM_Header)){
                _metadata.AddPSMColUnit(column, param);
            }
            else if (factory.Section.Equals(Section.Small_Molecule_Header)){
                _metadata.AddSmallMoleculeColUnit(column, param);
            }

            return null;
        }