Skip to content
Snippets Groups Projects
Commit 4c714395 authored by siranipour's avatar siranipour
Browse files

Writing pseudodata to file

parent b8737e44
No related branches found
No related tags found
1 merge request!920Writing pseudodata to file
......@@ -137,6 +137,7 @@ public:
FlMutProperty const& GetFlMutProp(int i) const { return fFlMutProperty[i]; }
vector<int> const& GetArch() const { return fArch; }
map<string,string> const& GetTheoryMap() const { return fTheory; }
bool SavePseudodata() const;
bool IsQED() const;
bool IsIC() const;
bool IsThUncertainties() const { return fThUncertainties; }
......
......@@ -600,6 +600,14 @@ void NNPDFSettings::SetPlotFile(string const& plotfile)
}
}
bool NNPDFSettings::SavePseudodata() const
{
if(NNPDFSettings::Exists("fitting", "savepseudodata"))
return Get("fitting", "savepseudodata").as<bool>();
return false;
}
bool NNPDFSettings::IsQED() const
{
const basisType isqed = NNPDFSettings::getFitBasisType(Get("fitting","fitbasis").as<string>());
......
......@@ -48,9 +48,10 @@ void CreateResultsFolder(const NNPDFSettings &settings, const int replica)
void LoadAllDataAndSplit(NNPDFSettings const& settings,
vector<Experiment*> & training,
vector<Experiment*> & validation,
vector<PositivitySet> & pos);
vector<PositivitySet> & pos,
int const& replica);
void TrainValidSplit(const NNPDFSettings &settings, Experiment* const& exp, Experiment *&tr, Experiment *&val);
void TrainValidSplit(const NNPDFSettings &settings, Experiment* const& exp, Experiment *&tr, Experiment *&val, int const& replica);
// Add chi^2 results to fit log
......
......@@ -117,7 +117,7 @@ int main(int argc, char **argv)
vector<Experiment*> training;
vector<Experiment*> validation;
vector<PositivitySet> pos;
LoadAllDataAndSplit(settings, training, validation, pos);
LoadAllDataAndSplit(settings, training, validation, pos, replica);
// Fit Basis
std::unique_ptr<FitBasis> fitbasis(getFitBasis(settings, NNPDFSettings::getFitBasisType(settings.Get("fitting","fitbasis").as<string>()), replica));
......@@ -385,7 +385,8 @@ int main(int argc, char **argv)
void LoadAllDataAndSplit(NNPDFSettings const& settings,
vector<Experiment*> & training,
vector<Experiment*> & validation,
vector<PositivitySet> & pos)
vector<PositivitySet> & pos,
int const& replica)
{
auto T0Set = std::make_unique<LHAPDFSet>(settings.Get("datacuts","t0pdfset").as<string>(), PDFSet::erType::ER_MCT0);
for (int i = 0; i < settings.GetNExp(); i++)
......@@ -418,7 +419,7 @@ void LoadAllDataAndSplit(NNPDFSettings const& settings,
training.push_back(NULL);
validation.push_back(NULL);
TrainValidSplit(settings, exp.get(), training.back(), validation.back());
TrainValidSplit(settings, exp.get(), training.back(), validation.back(), replica);
}
// Read Positivity Sets
......@@ -505,13 +506,16 @@ void LogChi2(const FitPDFSet* pdf,
}
void TrainValidSplit(NNPDFSettings const& settings,
Experiment* const& exp, Experiment* &tr, Experiment* &val)
Experiment* const& exp, Experiment* &tr, Experiment* &val,
int const& replica)
{
vector<DataSet> trainingSets;
vector<DataSet> validationSets;
vector<int> trCovMatMask(0);
vector<int> valCovMatMask(0);
// Vector containg vectors of masks
vector<vector<int>> trMasks, valMasks;
int AccumulatedData = 0;
int expValSize = 0; // size of validation experiment
......@@ -535,6 +539,10 @@ void TrainValidSplit(NNPDFSettings const& settings,
std::sort(trMaskset.begin(), trMaskset.end());
std::sort(valMaskset.begin(), valMaskset.end());
trMasks.push_back(trMaskset);
valMasks.push_back(valMaskset);
if (settings.IsThUncertainties())
{
/*
......@@ -574,6 +582,33 @@ void TrainValidSplit(NNPDFSettings const& settings,
if (expValSize != 0)
val = new Experiment(*exp, validationSets);
if(settings.SavePseudodata())
{
// Save the pseudodata if requested in the runcard
std::ofstream training_file, validation_file;
training_file.open(settings.GetResultsDirectory() + "/nnfit/replica_" + std::to_string(replica) + "/training.dat", std::ios_base::app);
validation_file.open(settings.GetResultsDirectory() + "/nnfit/replica_" + std::to_string(replica) + "/validation.dat", std::ios_base::app);
for(int i=0; i < tr->GetNSet(); ++i)
{
auto ds = tr->GetSet(i);
// The training mask for set i
vector<int> tr_mask = trMasks[i];
for(int j=0; j < ds.GetNData(); ++j){
training_file << tr->GetExpName() << "\t" << ds.GetSetName() << "\t" << tr_mask[j] << "\t" << ds.GetData(j) << "\n";
}
}
for(int i=0; i < val->GetNSet(); ++i)
{
auto ds = val->GetSet(i);
vector<int> val_mask = valMasks[i];
for(int j=0; j < ds.GetNData(); ++j){
validation_file << val->GetExpName() << "\t" << ds.GetSetName() << "\t" << val_mask[j] << "\t" << ds.GetData(j) << "\n";
}
}
}
// read covmat from file if specified in the runcard
if (settings.IsThUncertainties())
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment