ptrc_statistics.wls 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #!/usr/bin/env wolframscript
  2. (* ::Package:: *)
  3. dataFile0="../example_stat_report0.txt";
  4. dataFile1="../example_stat_report1.txt";
  5. graphWidth=480;
  6. graphColours={Darker[Blue],Darker[Red]};
  7. (* functions *)
  8. readFileFunc[fileName_]:=(
  9. SetStreamPosition[fileName,0];
  10. dat=<|"FileName"->fileName,
  11. Read[fileName,Word]->Read[fileName,Number],
  12. Read[fileName,Word]->Read[fileName,Number],
  13. Read[fileName,Word]->Read[fileName,Number],
  14. Read[fileName,Word]->Read[fileName,Real],
  15. Read[fileName,Word]->Read[fileName,Real],
  16. Read[fileName,Word]->Read[fileName,Real],
  17. Read[fileName,Word]->Read[fileName,Real],
  18. Read[fileName,Word]->Read[fileName,Number],
  19. Read[fileName,Word]->Read[fileName,Real],
  20. Read[fileName,Word]->ToExpression[StringSplit[Read[fileName,String]," "]],
  21. Read[fileName,Word]->ToExpression[StringSplit[Read[fileName,String]," "]],
  22. Read[fileName,Word]->ToExpression[StringSplit[Read[fileName,String]," "]],
  23. Read[fileName,Word]->ToExpression[StringSplit[Read[fileName,String]," "]],
  24. Read[fileName,Word]->ToExpression[StringSplit[Read[fileName,String]," "]],
  25. Read[fileName,Word]->ToExpression[StringSplit[Read[fileName,String]," "]],
  26. Read[fileName,Word]->ToExpression[StringSplit[Read[fileName,String]," "]],
  27. Read[fileName,Word]->ToExpression[StringSplit[Read[fileName,String]," "]],
  28. Read[fileName,Word]->ToExpression[StringSplit[Read[fileName,String]," "]]
  29. |>;
  30. Close[fileName];
  31. Return[dat];
  32. )
  33. calcUncListFunc[dat_,member_]:=Table[
  34. {dat["Sensor_uncertainty"][[i]],dat[member][[i]]},
  35. {i,1,Length[dat["Sensor_uncertainty"]]}];
  36. calcSigListFuncUp[dat_,exp_,member_]:=Table[
  37. {dat["Sensor_uncertainty"][[i]],dat[exp][[i]]+
  38. dat[member][[i]]},
  39. {i,1,Length[dat["Sensor_uncertainty"]]}];
  40. mainLeg[datLeg_]:="Dim:"<>ToString[datLeg["Dimensionality"]]<>
  41. "; Known spheres:"<>ToString[datLeg["Number_of_known_spheres"]]<>
  42. "; Mult:"<>ToString[datLeg["Multiplier"]]<>
  43. "; Runs:"<>ToString[datLeg["Number_of_runs"]]<>
  44. ";\nUncertainties:["<>ToString[datLeg["Start_uncertainty"]]<>
  45. ", "<>ToString[datLeg["End_uncertainty"]]<>"], increment:"<>
  46. ToString[datLeg["Uncertainty_incr"]]<>"\nSamples: "<>
  47. ToString[datLeg["Samples_for_one_uncertainty_value"]]<>" x Uncertainties"<>
  48. ";Statistical discretisation: "<>
  49. ToString[datLeg["Statistical_discretisation"]];
  50. (* get data *)
  51. data0=readFileFunc[dataFile0]; data1=readFileFunc[dataFile1];
  52. (* error calculations *)
  53. expErrList0=calcUncListFunc[data0,"Expected_err"];
  54. expErrList1=calcUncListFunc[data1,"Expected_err"];
  55. sigmaErrList0up=calcSigListFuncUp[data0,"Expected_err","Sigma_err"];
  56. sigmaErrList1up=calcSigListFuncUp[data1,"Expected_err","Sigma_err"];
  57. minsErrList0=calcUncListFunc[data0,"Min_err"];
  58. maxsErrList0=calcUncListFunc[data0,"Max_err"];
  59. minsErrList1=calcUncListFunc[data1,"Min_err"];
  60. maxsErrList1=calcUncListFunc[data1,"Max_err"];
  61. (* error drawing *)
  62. expErrGraph=ListLinePlot[{Legended[expErrList0,mainLeg[data0]],
  63. Legended[sigmaErrList0up,"\[Mu]+\[Sigma]"],
  64. Legended[minsErrList0,"min/max"],maxsErrList0,
  65. Legended[expErrList1,mainLeg[data1]],
  66. Legended[sigmaErrList1up,"\[Mu]+\[Sigma]"],
  67. Legended[minsErrList1,"min/max"],maxsErrList1},
  68. PlotStyle->{graphColours[[1]],
  69. {Dashed,Lighter[graphColours[[1]]]},
  70. {Dotted,Lighter[graphColours[[1]]]},{Dotted,Lighter[graphColours[[1]]]},
  71. graphColours[[2]],
  72. {Dashed,Lighter[graphColours[[2]]]},
  73. {Dotted,Lighter[graphColours[[2]]]},{Dotted,Lighter[graphColours[[2]]]}},
  74. ImageSize->graphWidth,PlotLabel->"Expected Error",
  75. Frame->True,FrameLabel->{"Sensor uncertainty","Expected value"},
  76. GridLines->Automatic,GridLinesStyle->Directive[Gray,Dashed]]
  77. (* solves calculations *)
  78. expSlvList0=calcUncListFunc[data0,"Expected_solves"];
  79. expSlvList1=calcUncListFunc[data1,"Expected_solves"];
  80. sigmaSlvList0up=calcSigListFuncUp[data0,"Expected_solves","Sigma_solves"];
  81. sigmaSlvList1up=calcSigListFuncUp[data1,"Expected_solves","Sigma_solves"];
  82. minsSlvList0=calcUncListFunc[data0,"Min_solves"];
  83. maxsSlvList0=calcUncListFunc[data0,"Max_solves"];
  84. minsSlvList1=calcUncListFunc[data1,"Min_solves"];
  85. maxsSlvList1=calcUncListFunc[data1,"Max_solves"];
  86. (* solves drawing *)
  87. expSlvGraph=ListLinePlot[{Legended[expSlvList0,mainLeg[data0]],
  88. Legended[sigmaSlvList0up,"\[Mu]+\[Sigma]"],
  89. Legended[minsSlvList0,"min/max"],maxsSlvList0,
  90. Legended[expSlvList1,mainLeg[data1]],
  91. Legended[sigmaSlvList1up,"\[Mu]+\[Sigma]"],
  92. Legended[minsSlvList1,"min/max"],maxsSlvList1},
  93. PlotStyle->{graphColours[[1]],
  94. {Dashed,Lighter[graphColours[[1]]]},
  95. {Dotted,Lighter[graphColours[[1]]]},{Dotted,Lighter[graphColours[[1]]]},
  96. graphColours[[2]],
  97. {Dashed,Lighter[graphColours[[2]]]},
  98. {Dotted,Lighter[graphColours[[2]]]},{Dotted,Lighter[graphColours[[2]]]}},
  99. ImageSize->graphWidth,PlotLabel->"Expected Solves",
  100. Frame->True,FrameLabel->{"Sensor uncertainty","Expected value"},
  101. GridLines->Automatic,GridLinesStyle->Directive[Gray,Dashed]]
  102. Export["errors.png",expErrGraph]
  103. Export["errors.svg",expErrGraph]
  104. Export["solves.png",expSlvGraph]
  105. Export["solves.svg",expSlvGraph]