Matrix Science Mascot Parser toolkit
 
Loading...
Searching...
No Matches
tools_imputation.cs

Using matrix_science::ms_imputation class.

/*
##############################################################################
# file: tools_imputation.cs #
# 'msparser' imputation example code #
##############################################################################
# COPYRIGHT NOTICE #
# Copyright 1998-2024 Matrix Science Limited All Rights Reserved. #
# #
##############################################################################
# $Source: parser/examples/test_csharp/tools_imputation.cs $ #
# $Author: robertog@matrixscience.com $ #
# $Date: 2024-09-04 10:23:46 +0100 $ #
# $Revision: 526921a73137894bb1eae0b0fc8ccb4bb52ea662 | MSPARSER_REL_3_0_0-2024-09-24-0-g93ebaeb4f4 $ #
# $NoKeywords:: $ #
##############################################################################
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using matrix_science.msparser;
using System.Numerics;
using static matrix_science.msparser.ms_imputation;
namespace MsParserExamples
{
class tools_imputation
{
public static void Main(string[] args)
{
// Read Distiller log output from peptides-table report for Reading6 repliate project
List<string[]> propsCsv = new List<string[]>();
using (var reader = new StreamReader(@"C:/MSData/Quantitation/ReadingReplicate6/tPeptidesHit9Props.csv"))
{
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(',');
for (int i = 0; i < values.Length; i++)
{
if (values[i].Length == 1)
{
values[i] = values[i].Substring(1, values[i].Length - 1);
}
else
{
values[i] = values[i].Substring(1, values[i].Length - 2);
}
}
propsCsv.Add(values);
}
}
// Relevant paths from read csv file
string[] datFilePaths = new string[] { propsCsv[7][1], propsCsv[7][2], propsCsv[7][3], propsCsv[7][4], propsCsv[7][5], propsCsv[7][6] };
string mascotDotDatPath = propsCsv[1][3];
string cdbPath = propsCsv[6][3];
string cachePath = propsCsv[6][4];
string xmlPath = propsCsv[6][propsCsv[6].Count() - 2];
string resCachePath = propsCsv[6].Last();
// Hard coded paths to schema locations
string quantSchema = "http://www.matrixscience.com/xmlns/schema/quantitation_2 " + @"file:///C:\\ProgramData\\Matrix%20Science\\Mascot%20Distiller\\schema\\quantitation_2.xsd" + " http://www.matrixscience.com/xmlns/schema/quantitation_1 " + @"file:///C:\ProgramData\Matrix%20Science\Mascot%20Distiller\schema\quantitation_1.xsd";
string unimodSchema = "http://www.unimod.org/xmlns/schema/unimod_2 " + @"file:///C:\ProgramData\Matrix%20Science\Mascot%20Distiller\schema\unimod_2.xsd";
// Create ms_mascotresfilebase
ms_mascotresfilebase resFile = ms_mascotresfilebase.createResfile(datFilePaths[0], 0, "<!-- %d seconds-->\n", (uint)ms_mascotresfilebase.FLAGS.RESFILE_USE_CACHE, resCachePath);
resFile.setXMLschemaFilePath(ms_mascotresfilebase.XML_SCHEMA.XML_SCHEMA_QUANTITATION, quantSchema);
resFile.setXMLschemaFilePath(ms_mascotresfilebase.XML_SCHEMA.XML_SCHEMA_UNIMOD, unimodSchema);
// Add multi dat files
for (int i = 1; i < datFilePaths.Length; i++)
{
resFile.appendResfile(datFilePaths[i]);
}
// Create mascot dot dat file
ms_datfile mascotDotDat = new ms_datfile(mascotDotDatPath);
// Set percolator features
resFile.setPercolatorFeatures(mascotDotDat.getMascotOptions(), "");
// Create ms_peptidesummary
ms_mascotoptions opts = new ms_mascotoptions();
ms_mascotresults_params resParams = new ms_mascotresults_params();
string returnVals = resFile.get_ms_mascotresults_params(opts, resParams);
ms_peptidesummary pepSum = new ms_peptidesummary(resFile, resParams);
// Create qMethod
ms_quant_method qMethod = new ms_quant_method();
ms_quant_configfile qConfigFile = new ms_quant_configfile(xmlPath, quantSchema);
qMethod = qConfigFile.getMethodByNumber(0);
ms_quant_protocol quantProtocol = qMethod.getProtocol();
string typeStr = quantProtocol.getType();
// Create ms_ms1quantitation
ms_ms1quantitation ms1Quant = new ms_ms1quantitation(pepSum, qMethod);
bool loadQuant = ms1Quant.loadCdbFile(cdbPath, cachePath, false);
// Create KNN Imputation
ms_imputation_knn knnImputation = new ms_imputation_knn();
// Set KNN Parameters
knnImputation.setKnnNumNeighbours(5);
knnImputation.setKnnUseWeightedAverage(true);
// Create ms_imputation
ms_imputation ImputationKnn = new ms_imputation(ms1Quant, knnImputation, IMPUTATION_VARIABLE.IMPUTE_PEPTIDE_RATIO);
// Set handling of ms1 excluded values - default is to impute negative values only.
ImputationKnn.setImputeMs1PeptideExcludedByStdErrThr(true);
// Do Knn Imputation and get results
VecVecdouble imputationResKnn = ImputationKnn.impute();
// Get raw data
VecVecMissingValue imputationRaw = knnImputation.getDataWithMissing();
// Print Raw Data
Console.WriteLine("=/=/=/=/= READING6 HIT9 RAW PEPTIDE RATIOS =/=/=/=/=");
Console.WriteLine("=/=/=/=/= STD ERR THRESHOLD SET TO 0.1 =/=/=/=/=");
for (int i = 0; i < imputationRaw.Count; i++)
{
string tempStr = "";
for (int j = 0; j < imputationRaw[i].Count; j++)
{
if (imputationRaw[i][j].isMissing())
{
tempStr += "MissVal,";
}
else
{
tempStr += Math.Round(imputationRaw[i][j].getVal(), 5) + ",";
}
}
Console.WriteLine(tempStr);
}
// Blank rows for formatting
Console.WriteLine("");
Console.WriteLine("");
// Print Imputed Data
Console.WriteLine("=/=/=/=/= KNN IMPUTED PEPTIDE RATIOS =/=/=/=/=");
Console.WriteLine("=/=/= NB: KNN DOES NOT IMPUTE BLANK ROWS =/=/=");
for (int i = 0; i < imputationResKnn.Count; i++)
{
string tempStr = "";
for (int j = 0; j < imputationResKnn[i].Count; j++)
{
tempStr += Math.Round(imputationResKnn[i][j], 5).ToString() + ",";
}
Console.WriteLine(tempStr);
}
// Create Miss Forest Imputation
ms_imputation_missforest missForestImputation = new ms_imputation_missforest();
// Create another ms_imputation for use with miss forest.
ms_imputation ImputationMissForest = new ms_imputation(ms1Quant, missForestImputation, IMPUTATION_VARIABLE.IMPUTE_PEPTIDE_RATIO);
// Set handling of ms1 excluded values - default is to impute negative values only.
ImputationMissForest.setImputeMs1PeptideExcludedByStdErrThr(true);
// Do Miss Forest Imputation and get results
VecVecdouble imputationMissForestRes = ImputationMissForest.impute();
// Blank row for formatting
Console.WriteLine("");
Console.WriteLine("");
// Print Imputed Data
Console.WriteLine("=/=/=/=/= MISS FOREST IMPUTED PROTEIN RATIOS =/=/=/=/=");
Console.WriteLine("=/=/=/= NB: MISS FOREST HAS IMPUTED BLANK ROWS =/=/=/=");
for (int i = 0; i < imputationMissForestRes.Count; i++)
{
string tempStr = "";
for (int j = 0; j < imputationMissForestRes[i].Count; j++)
{
tempStr += Math.Round(imputationMissForestRes[i][j], 5).ToString() + ",";
}
Console.WriteLine(tempStr);
}
}
}
}
//=/=/=/=/= READING6 HIT9 RAW PEPTIDE RATIOS =/=/=/=/=
//=/=/=/=/= STD ERR THRESHOLD SET TO 0.1 =/=/=/=/=
//2.28732,2.93964,2.94553,2.99029,3.23196,
//MissVal,2.54313,2.92111, MissVal,3.11723,
//2.10104,2.22602,2.22403,2.32379,2.19702,
//2.1067,2.03963,2.08156,2.09965,2.13775,
//2.44945,2.20403,2.46889,2.75888, MissVal,
//2.18101,2.14522,2.13038,2.06266,2.04468,
//1.70053,1.73612,1.76628,1.80507,2.05639,
//3.71123,4.95397,7.00681,5.77567, MissVal,
//2.42429,2.4783,2.52357,2.48775, MissVal,
//2.17554,2.60881,2.80434,3.35736,3.27036,
//2.20251,2.17324,2.12744,2.28025,2.27098,
//2.23966,2.13916,2.18431,2.19506,2.05491,
//2.24945,2.21507,2.36328,2.22853,2.26598,
//2.19153,1.73771, MissVal,2.22835,2.75656,
//2.01395,1.85933, MissVal, MissVal, MissVal,
//MissVal, MissVal, MissVal, MissVal, MissVal,
//MissVal, MissVal, MissVal, MissVal,3.86644,
//2.08719,2.13798,2.21096,2.1524,2.23132,
//2.26798,2.24856,1.99524,2.00491,2.04314,
//3.87692, MissVal,5.85286,4.12125,7.61054,
//2.13265,2.19603,2.10388,2.16322,2.16913,
//2.17102,2.24979,2.08552,1.94413,1.98189,
//2.16255,2.30718,2.19743,2.19632,2.00476,
//2.39249,2.87498,3.27444,3.5588,3.40519,
//1.69698,2.03158,1.8336,2.22068,2.26823,
//1.84005, MissVal, MissVal, MissVal, MissVal,
//2.27795,2.36076,2.37257,2.36192,2.28409,
//2.03489,2.1482,2.17228,2.17117,2.01231,
//1.74423,1.91595,1.93315,2.21298,2.20868,
//2.24148,2.31477,2.38172,2.44899,2.28945,
//2.31746,2.01841,2.15034,2.15422,2.01965,
//2.16648,2.2371,2.17527,2.18308,2.2383,
//2.16726,1.94434,2.36001,2.08456,2.64126,
//MissVal, MissVal, MissVal, MissVal, MissVal,
//2.05607,1.93286,2.14959,2.24674,2.05334,
//MissVal,5.24276, MissVal, MissVal,15.93856,
//2.10792,1.90854,1.97447,1.87013,1.89933,
//2.80549,3.43199,3.74465,3.70837,4.70967,
//2.0601,1.94181,2.29396,2.01845, MissVal,
//2.11873,2.22137,1.99319,1.88892,1.98038,
//2.09306,2.25344,1.99198,1.9527,2.00931,
//2.23777,1.89507,1.79208,1.9828,1.90807,
//MissVal,3.25899,3.14027, MissVal,4.78865,
//2.05658,2.13022,1.79034,1.99281,1.88877,
//1.72383,1.55478,1.30086, MissVal,1.10509,
//MissVal,2.54313,2.92111, MissVal,3.11723,
//2.1067,2.03963,2.08156,2.09965,2.13775,
//3.71123,4.95397,7.00681,5.77567, MissVal,
//2.42429,2.4783,2.52357,2.48775, MissVal,
//2.17554,2.60881,2.80434,3.35736,3.27036,
//2.20251,2.17324,2.12744,2.28025,2.27098,
//2.23966,2.13916,2.18431,2.19506,2.05491,
//2.24945,2.21507,2.36328,2.22853,2.26598,
//2.19153,1.73771, MissVal,2.22835,2.75656,
//MissVal, MissVal, MissVal, MissVal, MissVal,
//MissVal, MissVal, MissVal, MissVal,3.86644,
//2.08719,2.13798,2.21096,2.1524,2.23132,
//2.26798,2.24856,1.99524,2.00491,2.04314,
//3.87692, MissVal,5.85286,4.12125,7.61054,
//2.13265,2.19603,2.10388,2.16322,2.16913,
//2.17102,2.24979,2.08552,1.94413,1.98189,
//2.03489,2.1482,2.17228,2.17117,2.01231,
//2.24148,2.31477,2.38172,2.44899,2.28945,
//2.31746,2.01841,2.15034,2.15422,2.01965,
//2.16648,2.2371,2.17527,2.18308,2.2383,
//2.16726,1.94434,2.36001,2.08456,2.64126,
//2.05607,1.93286,2.14959,2.24674,2.05334,
//MissVal,5.24276, MissVal, MissVal,15.93856,
//2.09306,2.25344,1.99198,1.9527,2.00931,
//2.05658,2.13022,1.79034,1.99281,1.88877,
//1.72383,1.55478,1.30086, MissVal,1.10509,
//2.23935,1.97996,2.43986,1.70304,2.10461,
//2.09355,2.17266,2.10816,2.05042,2.20883,
//MissVal,1.98668,2.15741, MissVal,2.19651,
//MissVal, MissVal, MissVal,2.0442, MissVal,
//MissVal, MissVal, MissVal, MissVal, MissVal,
//2.29044, MissVal,2.34337,2.17659, MissVal,
//MissVal, MissVal, MissVal, MissVal, MissVal,
//2.43357,2.29485,2.09299,2.21304,2.05638,
//MissVal,1.35263, MissVal, MissVal, MissVal,
//2.28732,2.93964,2.94553,2.99029,3.23196,
//MissVal,2.54313,2.92111, MissVal,3.11723,
//2.1067,2.03963,2.08156,2.09965,2.13775,
//3.71123,4.95397,7.00681,5.77567, MissVal,
//2.42429,2.4783,2.52357,2.48775, MissVal,
//2.17554,2.60881,2.80434,3.35736,3.27036,
//2.20251,2.17324,2.12744,2.28025,2.27098,
//2.23966,2.13916,2.18431,2.19506,2.05491,
//2.01395,1.85933, MissVal, MissVal, MissVal,
//MissVal, MissVal, MissVal, MissVal, MissVal,
//MissVal, MissVal, MissVal, MissVal,3.86644,
//2.08719,2.13798,2.21096,2.1524,2.23132,
//2.26798,2.24856,1.99524,2.00491,2.04314,
//3.87692, MissVal,5.85286,4.12125,7.61054,
//2.17102,2.24979,2.08552,1.94413,1.98189,
//2.03489,2.1482,2.17228,2.17117,2.01231,
//2.24148,2.31477,2.38172,2.44899,2.28945,
//2.31746,2.01841,2.15034,2.15422,2.01965,
//2.16648,2.2371,2.17527,2.18308,2.2383,
//2.16726,1.94434,2.36001,2.08456,2.64126,
//MissVal, MissVal, MissVal, MissVal, MissVal,
//2.05607,1.93286,2.14959,2.24674,2.05334,
//MissVal,5.24276, MissVal, MissVal,15.93856,
//2.09306,2.25344,1.99198,1.9527,2.00931,
//2.05658,2.13022,1.79034,1.99281,1.88877,
//1.72383,1.55478,1.30086, MissVal,1.10509,
//2.23935,1.97996,2.43986,1.70304,2.10461,
//MissVal, MissVal, MissVal,2.0442, MissVal,
//MissVal,1.35263, MissVal, MissVal, MissVal,
//2.23314,2.83237,2.67282,2.38664,2.17458,
//MissVal,2.54313,2.92111, MissVal,3.11723,
//2.03489,2.1482,2.17228,2.17117,2.01231,
//2.05607,1.93286,2.14959,2.24674,2.05334,
//MissVal,5.24276, MissVal, MissVal,15.93856,
//1.8827,1.98454,2.21712,2.36144,2.25082,
//MissVal, MissVal, MissVal, MissVal, MissVal,
//2.15333,2.26575,2.4063,2.0972,2.32841,
//MissVal,2.59228,2.46514,2.58271,2.6772,
//MissVal,2.15095,2.30981,2.37582,2.50603,
//2.34115,2.62947,2.25557,2.41524,2.33103,
//2.11785,1.76479,2.06785, MissVal, MissVal,
//2.54718,2.54348,2.98224,3.00757,3.02623,
//2.282,2.26129,2.07016,2.13402,2.12106,
//2.24495,2.28488,2.37796,2.36089,2.42768,
//2.33991,2.33838, MissVal,2.12408, MissVal,
//2.48604,3.83616,3.65871,4.18903,4.31684,
//MissVal,2.48445,2.30975,2.34887,2.31431,
//MissVal, MissVal,2.59739, MissVal, MissVal,
//MissVal, MissVal, MissVal, MissVal, MissVal,
//MissVal, MissVal, MissVal, MissVal,2.29587,
//MissVal, MissVal, MissVal,2.15193, MissVal,
//MissVal,1.78524, MissVal, MissVal, MissVal,
//2.03489,2.1482,2.17228,2.17117,2.01231,
//2.05607,1.93286,2.14959,2.24674,2.05334,
//MissVal,5.24276, MissVal, MissVal,15.93856,
//1.8827,1.98454,2.21712,2.36144,2.25082,
//2.33991,2.33838, MissVal,2.12408, MissVal,
//2.48604,3.83616,3.65871,4.18903,4.31684,
//MissVal,2.48445,2.30975,2.34887,2.31431,
//2.02515, MissVal,2.2607,2.29982,1.92539,
//MissVal,2.38214, MissVal,2.77502,2.40252,
//5.68077, MissVal,6.65737, MissVal,6.50563,
//2.65984,2.71265,2.86734,2.75978,2.3408,
//MissVal,2.14336,2.84518,2.66687,2.68445,
//2.62913,3.00089,3.38146,3.91478,3.58221,
//MissVal, MissVal, MissVal, MissVal, MissVal,
//MissVal,2.5489, MissVal,2.26972,2.20756,
//MissVal,2.31406,2.34074, MissVal,2.57514,
//=/=/=/=/= KNN IMPUTED PEPTIDE RATIOS =/=/=/=/=
//=/=/= NB: KNN DOES NOT IMPUTE BLANK ROWS =/=/=
//2.28732,2.93964,2.94553,2.99029,3.23196,
//2.27222,2.54313,2.92111,3.21399,3.11723,
//2.10104,2.22602,2.22403,2.32379,2.19702,
//2.1067,2.03963,2.08156,2.09965,2.13775,
//2.44945,2.20403,2.46889,2.75888,2.31603,
//2.18101,2.14522,2.13038,2.06266,2.04468,
//1.70053,1.73612,1.76628,1.80507,2.05639,
//3.71123,4.95397,7.00681,5.77567,4.06615,
//2.42429,2.4783,2.52357,2.48775,2.2967,
//2.17554,2.60881,2.80434,3.35736,3.27036,
//2.20251,2.17324,2.12744,2.28025,2.27098,
//2.23966,2.13916,2.18431,2.19506,2.05491,
//2.24945,2.21507,2.36328,2.22853,2.26598,
//2.19153,1.73771,2.31709,2.22835,2.75656,
//2.01395,1.85933,2.14959,2.24674,2.05334,
//0,0,0,0,0,
//2.43385,3.2314,3.35553,3.8418,3.86644,
//2.08719,2.13798,2.21096,2.1524,2.23132,
//2.26798,2.24856,1.99524,2.00491,2.04314,
//3.87692,3.39604,5.85286,4.12125,7.61054,
//2.13265,2.19603,2.10388,2.16322,2.16913,
//2.17102,2.24979,2.08552,1.94413,1.98189,
//2.16255,2.30718,2.19743,2.19632,2.00476,
//2.39249,2.87498,3.27444,3.5588,3.40519,
//1.69698,2.03158,1.8336,2.22068,2.26823,
//1.84005,1.93055,1.99345,2.19232,2.20699,
//2.27795,2.36076,2.37257,2.36192,2.28409,
//2.03489,2.1482,2.17228,2.17117,2.01231,
//1.74423,1.91595,1.93315,2.21298,2.20868,
//2.24148,2.31477,2.38172,2.44899,2.28945,
//2.31746,2.01841,2.15034,2.15422,2.01965,
//2.16648,2.2371,2.17527,2.18308,2.2383,
//2.16726,1.94434,2.36001,2.08456,2.64126,
//0,0,0,0,0,
//2.05607,1.93286,2.14959,2.24674,2.05334,
//2.55984,5.24276,3.54359,3.912,15.93856,
//2.10792,1.90854,1.97447,1.87013,1.89933,
//2.80549,3.43199,3.74465,3.70837,4.70967,
//2.0601,1.94181,2.29396,2.01845,2.43985,
//2.11873,2.22137,1.99319,1.88892,1.98038,
//2.09306,2.25344,1.99198,1.9527,2.00931,
//2.23777,1.89507,1.79208,1.9828,1.90807,
//2.55984,3.25899,3.14027,3.912,4.78865,
//2.05658,2.13022,1.79034,1.99281,1.88877,
//1.72383,1.55478,1.30086,1.95326,1.10509,
//2.27222,2.54313,2.92111,3.21399,3.11723,
//2.1067,2.03963,2.08156,2.09965,2.13775,
//3.71123,4.95397,7.00681,5.77567,4.06615,
//2.42429,2.4783,2.52357,2.48775,2.2967,
//2.17554,2.60881,2.80434,3.35736,3.27036,
//2.20251,2.17324,2.12744,2.28025,2.27098,
//2.23966,2.13916,2.18431,2.19506,2.05491,
//2.24945,2.21507,2.36328,2.22853,2.26598,
//2.19153,1.73771,2.31709,2.22835,2.75656,
//0,0,0,0,0,
//2.43385,3.2314,3.35553,3.8418,3.86644,
//2.08719,2.13798,2.21096,2.1524,2.23132,
//2.26798,2.24856,1.99524,2.00491,2.04314,
//3.87692,3.39604,5.85286,4.12125,7.61054,
//2.13265,2.19603,2.10388,2.16322,2.16913,
//2.17102,2.24979,2.08552,1.94413,1.98189,
//2.03489,2.1482,2.17228,2.17117,2.01231,
//2.24148,2.31477,2.38172,2.44899,2.28945,
//2.31746,2.01841,2.15034,2.15422,2.01965,
//2.16648,2.2371,2.17527,2.18308,2.2383,
//2.16726,1.94434,2.36001,2.08456,2.64126,
//2.05607,1.93286,2.14959,2.24674,2.05334,
//2.55984,5.24276,3.54359,3.912,15.93856,
//2.09306,2.25344,1.99198,1.9527,2.00931,
//2.05658,2.13022,1.79034,1.99281,1.88877,
//1.72383,1.55478,1.30086,1.95326,1.10509,
//2.23935,1.97996,2.43986,1.70304,2.10461,
//2.09355,2.17266,2.10816,2.05042,2.20883,
//2.0171,1.98668,2.15741,2.20436,2.19651,
//2.2157,2.21271,2.04485,2.0442,2.07658,
//0,0,0,0,0,
//2.29044,2.05263,2.34337,2.17659,2.49115,
//0,0,0,0,0,
//2.43357,2.29485,2.09299,2.21304,2.05638,
//1.9693,1.35263,1.92311,2.02354,2.02516,
//2.28732,2.93964,2.94553,2.99029,3.23196,
//2.27222,2.54313,2.92111,3.21399,3.11723,
//2.1067,2.03963,2.08156,2.09965,2.13775,
//3.71123,4.95397,7.00681,5.77567,4.06615,
//2.42429,2.4783,2.52357,2.48775,2.2967,
//2.17554,2.60881,2.80434,3.35736,3.27036,
//2.20251,2.17324,2.12744,2.28025,2.27098,
//2.23966,2.13916,2.18431,2.19506,2.05491,
//2.01395,1.85933,2.14959,2.24674,2.05334,
//0,0,0,0,0,
//2.43385,3.2314,3.35553,3.8418,3.86644,
//2.08719,2.13798,2.21096,2.1524,2.23132,
//2.26798,2.24856,1.99524,2.00491,2.04314,
//3.87692,3.39604,5.85286,4.12125,7.61054,
//2.17102,2.24979,2.08552,1.94413,1.98189,
//2.03489,2.1482,2.17228,2.17117,2.01231,
//2.24148,2.31477,2.38172,2.44899,2.28945,
//2.31746,2.01841,2.15034,2.15422,2.01965,
//2.16648,2.2371,2.17527,2.18308,2.2383,
//2.16726,1.94434,2.36001,2.08456,2.64126,
//0,0,0,0,0,
//2.05607,1.93286,2.14959,2.24674,2.05334,
//2.55984,5.24276,3.54359,3.912,15.93856,
//2.09306,2.25344,1.99198,1.9527,2.00931,
//2.05658,2.13022,1.79034,1.99281,1.88877,
//1.72383,1.55478,1.30086,1.95326,1.10509,
//2.23935,1.97996,2.43986,1.70304,2.10461,
//2.2157,2.21271,2.04485,2.0442,2.07658,
//1.9693,1.35263,1.92311,2.02354,2.02516,
//2.23314,2.83237,2.67282,2.38664,2.17458,
//2.27222,2.54313,2.92111,3.21399,3.11723,
//2.03489,2.1482,2.17228,2.17117,2.01231,
//2.05607,1.93286,2.14959,2.24674,2.05334,
//2.55984,5.24276,3.54359,3.912,15.93856,
//1.8827,1.98454,2.21712,2.36144,2.25082,
//0,0,0,0,0,
//2.15333,2.26575,2.4063,2.0972,2.32841,
//2.26211,2.59228,2.46514,2.58271,2.6772,
//2.24377,2.15095,2.30981,2.37582,2.50603,
//2.34115,2.62947,2.25557,2.41524,2.33103,
//2.11785,1.76479,2.06785,2.17142,2.02254,
//2.54718,2.54348,2.98224,3.00757,3.02623,
//2.282,2.26129,2.07016,2.13402,2.12106,
//2.24495,2.28488,2.37796,2.36089,2.42768,
//2.33991,2.33838,2.02978,2.12408,2.06137,
//2.48604,3.83616,3.65871,4.18903,4.31684,
//2.26871,2.48445,2.30975,2.34887,2.31431,
//2.20814,2.33337,2.59739,2.24946,2.39651,
//0,0,0,0,0,
//2.24098,2.29566,2.32903,2.39783,2.29587,
//2.1793,2.09015,2.18671,2.15193,2.14665,
//1.9693,1.78524,1.92311,2.02354,2.02516,
//2.03489,2.1482,2.17228,2.17117,2.01231,
//2.05607,1.93286,2.14959,2.24674,2.05334,
//2.55984,5.24276,3.54359,3.912,15.93856,
//1.8827,1.98454,2.21712,2.36144,2.25082,
//2.33991,2.33838,2.02978,2.12408,2.06137,
//2.48604,3.83616,3.65871,4.18903,4.31684,
//2.26871,2.48445,2.30975,2.34887,2.31431,
//2.02515,2.1482,2.2607,2.29982,1.92539,
//2.32585,2.38214,2.47809,2.77502,2.40252,
//5.68077,3.39604,6.65737,3.912,6.50563,
//2.65984,2.71265,2.86734,2.75978,2.3408,
//2.30332,2.14336,2.84518,2.66687,2.68445,
//2.62913,3.00089,3.38146,3.91478,3.58221,
//0,0,0,0,0,
//2.30713,2.5489,2.29691,2.26972,2.20756,
//2.22455,2.31406,2.34074,2.36101,2.57514,
//=/=/=/=/= MISS FOREST IMPUTED PROTEIN RATIOS =/=/=/=/=
//=/=/=/= NB: MISS FOREST HAS IMPUTED BLANK ROWS =/=/=/=
//2.28732,2.93964,2.94553,2.99029,3.23196,
//2.45976,2.54313,2.92111,2.99595,3.11723,
//2.10104,2.22602,2.22403,2.32379,2.19702,
//2.1067,2.03963,2.08156,2.09965,2.13775,
//2.44945,2.20403,2.46889,2.75888,2.55546,
//2.18101,2.14522,2.13038,2.06266,2.04468,
//1.70053,1.73612,1.76628,1.80507,2.05639,
//3.71123,4.95397,7.00681,5.77567,15.93856,
//2.42429,2.4783,2.52357,2.48775,2.51525,
//2.17554,2.60881,2.80434,3.35736,3.27036,
//2.20251,2.17324,2.12744,2.28025,2.27098,
//2.23966,2.13916,2.18431,2.19506,2.05491,
//2.24945,2.21507,2.36328,2.22853,2.26598,
//2.19153,1.73771,2.24307,2.22835,2.75656,
//2.01395,1.85933,2.67569,2.66278,2.79527,
//2.09166,1.35263,2.59739,3.22764,3.80954,
//2.05613,1.78524,2.57342,2.66731,3.86644,
//2.08719,2.13798,2.21096,2.1524,2.23132,
//2.26798,2.24856,1.99524,2.00491,2.04314,
//3.87692,4.12522,5.85286,4.12125,7.61054,
//2.13265,2.19603,2.10388,2.16322,2.16913,
//2.17102,2.24979,2.08552,1.94413,1.98189,
//2.16255,2.30718,2.19743,2.19632,2.00476,
//2.39249,2.87498,3.27444,3.5588,3.40519,
//1.69698,2.03158,1.8336,2.22068,2.26823,
//1.84005,2.00862,2.13687,2.21001,2.16289,
//2.27795,2.36076,2.37257,2.36192,2.28409,
//2.03489,2.1482,2.17228,2.17117,2.01231,
//1.74423,1.91595,1.93315,2.21298,2.20868,
//2.24148,2.31477,2.38172,2.44899,2.28945,
//2.31746,2.01841,2.15034,2.15422,2.01965,
//2.16648,2.2371,2.17527,2.18308,2.2383,
//2.16726,1.94434,2.36001,2.08456,2.64126,
//2.09166,1.35263,2.59739,3.22764,3.80954,
//2.05607,1.93286,2.14959,2.24674,2.05334,
//3.71123,5.24276,7.0068,5.77567,15.93856,
//2.10792,1.90854,1.97447,1.87013,1.89933,
//2.80549,3.43199,3.74465,3.70837,4.70967,
//2.0601,1.94181,2.29396,2.01845,2.39064,
//2.11873,2.22137,1.99319,1.88892,1.98038,
//2.09306,2.25344,1.99198,1.9527,2.00931,
//2.23777,1.89507,1.79208,1.9828,1.90807,
//2.63647,3.25899,3.14027,3.73393,4.78865,
//2.05658,2.13022,1.79034,1.99281,1.88877,
//1.72383,1.55478,1.30086,1.94008,1.10509,
//2.45976,2.54313,2.92111,2.99595,3.11723,
//2.1067,2.03963,2.08156,2.09965,2.13775,
//3.71123,4.95397,7.00681,5.77567,15.93856,
//2.42429,2.4783,2.52357,2.48775,2.51525,
//2.17554,2.60881,2.80434,3.35736,3.27036,
//2.20251,2.17324,2.12744,2.28025,2.27098,
//2.23966,2.13916,2.18431,2.19506,2.05491,
//2.24945,2.21507,2.36328,2.22853,2.26598,
//2.19153,1.73771,2.24307,2.22835,2.75656,
//2.09166,1.35263,2.59739,3.22764,3.80954,
//2.05613,1.78524,2.57342,2.66731,3.86644,
//2.08719,2.13798,2.21096,2.1524,2.23132,
//2.26798,2.24856,1.99524,2.00491,2.04314,
//3.87692,4.12522,5.85286,4.12125,7.61054,
//2.13265,2.19603,2.10388,2.16322,2.16913,
//2.17102,2.24979,2.08552,1.94413,1.98189,
//2.03489,2.1482,2.17228,2.17117,2.01231,
//2.24148,2.31477,2.38172,2.44899,2.28945,
//2.31746,2.01841,2.15034,2.15422,2.01965,
//2.16648,2.2371,2.17527,2.18308,2.2383,
//2.16726,1.94434,2.36001,2.08456,2.64126,
//2.05607,1.93286,2.14959,2.24674,2.05334,
//3.71123,5.24276,7.0068,5.77567,15.93856,
//2.09306,2.25344,1.99198,1.9527,2.00931,
//2.05658,2.13022,1.79034,1.99281,1.88877,
//1.72383,1.55478,1.30086,1.94008,1.10509,
//2.23935,1.97996,2.43986,1.70304,2.10461,
//2.09355,2.17266,2.10816,2.05042,2.20883,
//2.05644,1.98668,2.15741,2.16099,2.19651,
//2.10486,2.09901,2.10677,2.0442,2.26507,
//2.09166,1.35263,2.59739,3.22764,3.80954,
//2.29044,2.38057,2.34337,2.17659,2.38378,
//2.09166,1.35263,2.59739,3.22764,3.80954,
//2.43357,2.29485,2.09299,2.21304,2.05638,
//2.09166,1.35263,2.59739,3.22764,3.80954,
//2.28732,2.93964,2.94553,2.99029,3.23196,
//2.45976,2.54313,2.92111,2.99595,3.11723,
//2.1067,2.03963,2.08156,2.09965,2.13775,
//3.71123,4.95397,7.00681,5.77567,15.93856,
//2.42429,2.4783,2.52357,2.48775,2.51525,
//2.17554,2.60881,2.80434,3.35736,3.27036,
//2.20251,2.17324,2.12744,2.28025,2.27098,
//2.23966,2.13916,2.18431,2.19506,2.05491,
//2.01395,1.85933,2.67569,2.66278,2.79527,
//2.09166,1.35263,2.59739,3.22764,3.80954,
//2.05613,1.78524,2.57342,2.66731,3.86644,
//2.08719,2.13798,2.21096,2.1524,2.23132,
//2.26798,2.24856,1.99524,2.00491,2.04314,
//3.87692,4.12522,5.85286,4.12125,7.61054,
//2.17102,2.24979,2.08552,1.94413,1.98189,
//2.03489,2.1482,2.17228,2.17117,2.01231,
//2.24148,2.31477,2.38172,2.44899,2.28945,
//2.31746,2.01841,2.15034,2.15422,2.01965,
//2.16648,2.2371,2.17527,2.18308,2.2383,
//2.16726,1.94434,2.36001,2.08456,2.64126,
//2.09166,1.35263,2.59739,3.22764,3.80954,
//2.05607,1.93286,2.14959,2.24674,2.05334,
//3.71123,5.24276,7.0068,5.77567,15.93856,
//2.09306,2.25344,1.99198,1.9527,2.00931,
//2.05658,2.13022,1.79034,1.99281,1.88877,
//1.72383,1.55478,1.30086,1.94008,1.10509,
//2.23935,1.97996,2.43986,1.70304,2.10461,
//2.10486,2.09901,2.10677,2.0442,2.26507,
//2.09166,1.35263,2.59739,3.22764,3.80954,
//2.23314,2.83237,2.67282,2.38664,2.17458,
//2.45976,2.54313,2.92111,2.99595,3.11723,
//2.03489,2.1482,2.17228,2.17117,2.01231,
//2.05607,1.93286,2.14959,2.24674,2.05334,
//3.71123,5.24276,7.0068,5.77567,15.93856,
//1.8827,1.98454,2.21712,2.36144,2.25082,
//2.09166,1.35263,2.59739,3.22764,3.80954,
//2.15333,2.26575,2.4063,2.0972,2.32841,
//2.41851,2.59228,2.46514,2.58271,2.6772,
//2.0839,2.15095,2.30981,2.37582,2.50603,
//2.34115,2.62947,2.25557,2.41524,2.33103,
//2.11785,1.76479,2.06785,2.11764,2.251,
//2.54718,2.54348,2.98224,3.00757,3.02623,
//2.282,2.26129,2.07016,2.13402,2.12106,
//2.24495,2.28488,2.37796,2.36089,2.42768,
//2.33991,2.33838,2.19425,2.12408,2.20371,
//2.48604,3.83616,3.65871,4.18903,4.31684,
//2.28809,2.48445,2.30975,2.34887,2.31431,
//2.09166,1.35263,2.59739,3.22764,3.80954,
//2.09166,1.35263,2.59739,3.22764,3.80954,
//2.24975,2.27782,2.359,2.34066,2.29587,
//2.10896,2.19319,2.13714,2.15193,2.20934,
//2.05613,1.78524,2.57342,2.66785,3.86644,
//2.03489,2.1482,2.17228,2.17117,2.01231,
//2.05607,1.93286,2.14959,2.24674,2.05334,
//3.71123,5.24276,7.0068,5.77567,15.93856,
//1.8827,1.98454,2.21712,2.36144,2.25082,
//2.33991,2.33838,2.19425,2.12408,2.20371,
//2.48604,3.83616,3.65871,4.18903,4.31684,
//2.28809,2.48445,2.30975,2.34887,2.31431,
//2.02515,2.08341,2.2607,2.29982,1.92539,
//2.40972,2.38214,2.65437,2.77502,2.40252,
//5.68077,4.12522,6.65737,4.63412,6.50563,
//2.65984,2.71265,2.86734,2.75978,2.3408,
//2.31955,2.14336,2.84518,2.66687,2.68445,
//2.62913,3.00089,3.38146,3.91478,3.58221,
//2.09166,1.35263,2.59739,3.22764,3.80954,
//2.27101,2.5489,2.38081,2.26972,2.20756,
//2.27264,2.31406,2.34074,2.3131,2.57514,