| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- #!/usr/bin/env wolframscript
- (* ::Package:: *)
- dataFile0="../example_stat_report0.txt";
- dataFile1="../example_stat_report1.txt";
- graphWidth=480;
- graphColours={Darker[Blue],Darker[Red]};
- (* functions *)
- readFileFunc[fileName_]:=(
- SetStreamPosition[fileName,0];
- dat=<|"FileName"->fileName,
- Read[fileName,Word]->Read[fileName,Number],
- Read[fileName,Word]->Read[fileName,Number],
- Read[fileName,Word]->Read[fileName,Number],
- Read[fileName,Word]->Read[fileName,Real],
- Read[fileName,Word]->Read[fileName,Real],
- Read[fileName,Word]->Read[fileName,Real],
- Read[fileName,Word]->Read[fileName,Real],
- Read[fileName,Word]->Read[fileName,Number],
- Read[fileName,Word]->Read[fileName,Real],
- Read[fileName,Word]->ToExpression[StringSplit[Read[fileName,String]," "]],
- Read[fileName,Word]->ToExpression[StringSplit[Read[fileName,String]," "]],
- Read[fileName,Word]->ToExpression[StringSplit[Read[fileName,String]," "]],
- Read[fileName,Word]->ToExpression[StringSplit[Read[fileName,String]," "]],
- Read[fileName,Word]->ToExpression[StringSplit[Read[fileName,String]," "]],
- Read[fileName,Word]->ToExpression[StringSplit[Read[fileName,String]," "]],
- Read[fileName,Word]->ToExpression[StringSplit[Read[fileName,String]," "]],
- Read[fileName,Word]->ToExpression[StringSplit[Read[fileName,String]," "]],
- Read[fileName,Word]->ToExpression[StringSplit[Read[fileName,String]," "]]
- |>;
- Close[fileName];
- Return[dat];
- )
- calcUncListFunc[dat_,member_]:=Table[
- {dat["Sensor_uncertainty"][[i]],dat[member][[i]]},
- {i,1,Length[dat["Sensor_uncertainty"]]}];
- calcSigListFuncUp[dat_,exp_,member_]:=Table[
- {dat["Sensor_uncertainty"][[i]],dat[exp][[i]]+
- dat[member][[i]]},
- {i,1,Length[dat["Sensor_uncertainty"]]}];
- mainLeg[datLeg_]:="Dim:"<>ToString[datLeg["Dimensionality"]]<>
- "; Known spheres:"<>ToString[datLeg["Number_of_known_spheres"]]<>
- "; Mult:"<>ToString[datLeg["Multiplier"]]<>
- "; Runs:"<>ToString[datLeg["Number_of_runs"]]<>
- ";\nUncertainties:["<>ToString[datLeg["Start_uncertainty"]]<>
- ", "<>ToString[datLeg["End_uncertainty"]]<>"], increment:"<>
- ToString[datLeg["Uncertainty_incr"]]<>"\nSamples: "<>
- ToString[datLeg["Samples_for_one_uncertainty_value"]]<>" x Uncertainties"<>
- ";Statistical discretisation: "<>
- ToString[datLeg["Statistical_discretisation"]];
- (* get data *)
- data0=readFileFunc[dataFile0]; data1=readFileFunc[dataFile1];
- (* error calculations *)
- expErrList0=calcUncListFunc[data0,"Expected_err"];
- expErrList1=calcUncListFunc[data1,"Expected_err"];
- sigmaErrList0up=calcSigListFuncUp[data0,"Expected_err","Sigma_err"];
- sigmaErrList1up=calcSigListFuncUp[data1,"Expected_err","Sigma_err"];
- minsErrList0=calcUncListFunc[data0,"Min_err"];
- maxsErrList0=calcUncListFunc[data0,"Max_err"];
- minsErrList1=calcUncListFunc[data1,"Min_err"];
- maxsErrList1=calcUncListFunc[data1,"Max_err"];
- (* error drawing *)
- expErrGraph=ListLinePlot[{Legended[expErrList0,mainLeg[data0]],
- Legended[sigmaErrList0up,"\[Mu]+\[Sigma]"],
- Legended[minsErrList0,"min/max"],maxsErrList0,
- Legended[expErrList1,mainLeg[data1]],
- Legended[sigmaErrList1up,"\[Mu]+\[Sigma]"],
- Legended[minsErrList1,"min/max"],maxsErrList1},
- PlotStyle->{graphColours[[1]],
- {Dashed,Lighter[graphColours[[1]]]},
- {Dotted,Lighter[graphColours[[1]]]},{Dotted,Lighter[graphColours[[1]]]},
- graphColours[[2]],
- {Dashed,Lighter[graphColours[[2]]]},
- {Dotted,Lighter[graphColours[[2]]]},{Dotted,Lighter[graphColours[[2]]]}},
- ImageSize->graphWidth,PlotLabel->"Expected Error",
- Frame->True,FrameLabel->{"Sensor uncertainty","Expected value"},
- GridLines->Automatic,GridLinesStyle->Directive[Gray,Dashed]]
- (* solves calculations *)
- expSlvList0=calcUncListFunc[data0,"Expected_solves"];
- expSlvList1=calcUncListFunc[data1,"Expected_solves"];
- sigmaSlvList0up=calcSigListFuncUp[data0,"Expected_solves","Sigma_solves"];
- sigmaSlvList1up=calcSigListFuncUp[data1,"Expected_solves","Sigma_solves"];
- minsSlvList0=calcUncListFunc[data0,"Min_solves"];
- maxsSlvList0=calcUncListFunc[data0,"Max_solves"];
- minsSlvList1=calcUncListFunc[data1,"Min_solves"];
- maxsSlvList1=calcUncListFunc[data1,"Max_solves"];
- (* solves drawing *)
- expSlvGraph=ListLinePlot[{Legended[expSlvList0,mainLeg[data0]],
- Legended[sigmaSlvList0up,"\[Mu]+\[Sigma]"],
- Legended[minsSlvList0,"min/max"],maxsSlvList0,
- Legended[expSlvList1,mainLeg[data1]],
- Legended[sigmaSlvList1up,"\[Mu]+\[Sigma]"],
- Legended[minsSlvList1,"min/max"],maxsSlvList1},
- PlotStyle->{graphColours[[1]],
- {Dashed,Lighter[graphColours[[1]]]},
- {Dotted,Lighter[graphColours[[1]]]},{Dotted,Lighter[graphColours[[1]]]},
- graphColours[[2]],
- {Dashed,Lighter[graphColours[[2]]]},
- {Dotted,Lighter[graphColours[[2]]]},{Dotted,Lighter[graphColours[[2]]]}},
- ImageSize->graphWidth,PlotLabel->"Expected Solves",
- Frame->True,FrameLabel->{"Sensor uncertainty","Expected value"},
- GridLines->Automatic,GridLinesStyle->Directive[Gray,Dashed]]
- Export["errors.png",expErrGraph]
- Export["errors.svg",expErrGraph]
- Export["solves.png",expSlvGraph]
- Export["solves.svg",expSlvGraph]
|