Files @ 3e647eb7b5b3
Branch filter:

Location: AENC/switchchain/triangle_gcm_initial_analysis.m - annotation

3e647eb7b5b3 7.4 KiB application/vnd.wolfram.mathematica.package Show Source Show as Raw Download as Raw
Tom Bannink
Add improved construction rate dataset and plot
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
2e3f21cc591d
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
2e3f21cc591d
2e3f21cc591d
9c4226491043
9c4226491043
b9db6f3e92be
9c4226491043
9c4226491043
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
2e3f21cc591d
9c4226491043
b9db6f3e92be
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
3e67925ef7ec
3e67925ef7ec
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
b9db6f3e92be
3e67925ef7ec
b9db6f3e92be
3e67925ef7ec
b9db6f3e92be
b9db6f3e92be
3e67925ef7ec
b9db6f3e92be
b9db6f3e92be
b9db6f3e92be
b9db6f3e92be
b9db6f3e92be
b9db6f3e92be
b9db6f3e92be
3e67925ef7ec
3e67925ef7ec
3e67925ef7ec
b9db6f3e92be
b9db6f3e92be
b9db6f3e92be
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
9c4226491043
b9db6f3e92be
9c4226491043
9c4226491043
2e3f21cc591d
9c4226491043
b9db6f3e92be
b9db6f3e92be
b9db6f3e92be
9c4226491043
9c4226491043
b9db6f3e92be
9c4226491043
9c4226491043
9c4226491043
b9db6f3e92be
b9db6f3e92be
b9db6f3e92be
b9db6f3e92be
b9db6f3e92be
b9db6f3e92be
2e3f21cc591d
b9db6f3e92be
b9db6f3e92be
b9db6f3e92be
2e3f21cc591d
2e3f21cc591d
2e3f21cc591d
2e3f21cc591d
b9db6f3e92be
9c4226491043
b9db6f3e92be
2e3f21cc591d
2e3f21cc591d
2e3f21cc591d
2e3f21cc591d
2e3f21cc591d
2e3f21cc591d
2e3f21cc591d
08fe65e5454a
08fe65e5454a
08fe65e5454a
08fe65e5454a
3e647eb7b5b3
08fe65e5454a
08fe65e5454a
3e647eb7b5b3
3e647eb7b5b3
3e647eb7b5b3
3e647eb7b5b3
3e647eb7b5b3
3e647eb7b5b3
3e647eb7b5b3
3e647eb7b5b3
3e647eb7b5b3
08fe65e5454a
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
30d182b86860
08fe65e5454a
08fe65e5454a
08fe65e5454a
30d182b86860
08fe65e5454a
08fe65e5454a
08fe65e5454a
30d182b86860
08fe65e5454a
30d182b86860
08fe65e5454a
08fe65e5454a
08fe65e5454a
08fe65e5454a
30d182b86860
08fe65e5454a
08fe65e5454a
30d182b86860
08fe65e5454a
08fe65e5454a
30d182b86860
(* ::Package:: *)

Needs["ErrorBarPlots`"]


(* ::Section:: *)
(*Data import*)


gsraw=Import[NotebookDirectory[]<>"data/graphdata_ccm_initialtris.m"];
(* gsraw=SortBy[gsraw,{#[[1,1]]&,#[[1,2]]&}]; (* Sort by n and then by tau. The {} forces a *stable* sort because otherwise Mathematica sorts also on triangle count and other things. *) *)


gdata=GatherBy[gsraw,{#[[1,2]]&,#[[1,1]]&}];
(* Data format: *)
(* gdata[[ tau index, n index, run index , datatype index ]] *)
(* datatype index:
1: {n,tau}
2: avgtriangles when mixed
3: {GCM1 starting triangles average, GCM1 number of successes} <-- CCMu: get new highest degree vertex every time
4: {GCM2 starting triangles average, GCM2 number of successes} <-- CCMb: finish vertex completely
*)
nlabels=Map["n = "<>ToString[#]&,gdata[[1,All,1,1,1]]];
taulabels=Map["\[Tau] = "<>ToString[#]&,gdata[[All,1,1,1,2]]];


(* ::Subsection:: *)
(*New data format import*)


gsraw=Import[NotebookDirectory[]<>"data/graphdata_ccm_constructionrate.m"];
(* gsraw=SortBy[gsraw,{#[[1,1]]&,#[[1,2]]&}]; (* Sort by n and then by tau. The {} forces a *stable* sort because otherwise Mathematica sorts also on triangle count and other things. *) *)


gdata2=GatherBy[gsraw,{#[[1,2]]&,#[[1,1]]&}];
(* Data format: *)
(* gdata[[ tau index, n index, run index , datatype index ]] *)
(* datatype index:
1: {n,tau}
3: CCMdu construction rate <-- CCMdu: get new highest degree vertex every time
4: CCMd  construction rate <-- CCMd: finish vertex completely
*)


(* ::Section:: *)
(*Greedy configuration model*)


(* ::Subsection:: *)
(*Distribution of initial #triangles for GCM1,GCM2,EG compared to average #triangles.*)


 (* Consider all runs *)
getIt[x_,avg_]:=If[x[[2]]>=5, x[[1]]/avg,0]
getAverage[run_]:=Module[{avg},
    avg=run[[2]];
    If[avg>0,
    { getIt[run[[3]],avg], getIt[run[[4]],avg] }
    , {3,3}]
]
getTotalStats[runs_]:=Transpose[Map[getAverage,runs]];
totalStats=Map[getTotalStats,gdata,{2}];


(* Yellow: CCMu (take new highest everytime *)
(* Blue: CCMb (finish highest first, more similar to EG) *)
histogramsTotal=Map[Histogram[#,{0.05},PlotRange->{{-0.5,2},Automatic},ImageSize->300,AxesOrigin->{0,0}]&,totalStats,{2}];


TableForm[histogramsTotal,TableHeadings->{taulabels,nlabels}]


(* ::Subsubsection:: *)
(*Exporting plots*)


makeHistogram[datasets_,n_,tau_]:=Histogram[datasets,{0.05},"Probability",
PlotRange->{{0,1.3},{0,0.5}},
ImageSize->300,AxesOrigin->{0,0},
AspectRatio->3/5,
Frame->True,
FrameLabel->{"fraction of average #triangles at CCM start","frequency"},
ChartLegends->Placed[{"CCMu   avg = "<>ToString[NumberForm[N[Mean[datasets[[1]]]],2]],"CCMb   avg = "<>ToString[NumberForm[N[Mean[datasets[[2]]]],2]]},Center],
(*LabelingFunction->(Placed[NumberForm[#,{2,3}],Above]&),*)
(*LabelingFunction\[Rule](Placed[If[#2[[2]]\[Equal]1,NumberForm[#1,{2,3}],""],Above]&),*)
PlotLabel->n<>", "<>tau];
histogramsTotal=MapIndexed[makeHistogram[#1,nlabels[[#2[[2]]]],taulabels[[#2[[1]]]]]&,totalStats,{2}];


tauIndices={1,5,9};
nIndices={1};
(* TableForm[histogramsTotal[[tauIndices,nIndices]],TableHeadings->{taulabels[[tauIndices]],nlabels[[nIndices]]}]*)
plotgrid1=GraphicsGrid[histogramsTotal[[tauIndices,nIndices]],ImageSize->350,ItemAspectRatio->3/5]


Export[NotebookDirectory[]<>"plots/ccm_initialtris.pdf",plotgrid1]


(* ::Subsection:: *)
(*GCM1 vs GCM2 success rates*)


successrates=Map[{#[[3,2]]/100,#[[4,2]]/100}&,gdata,{3}];
successrates=Map[Transpose,successrates,{2}];
successratesDelta=Map[#[[3,2]]-#[[4,2]]&,gdata,{3}];
successratesAvg=Map[{Mean[#[[1]]],Mean[#[[2]]]}&,successrates,{2}];

rateHistograms=Map[Histogram[#,{0.1},"Probability",PlotRange->{{0,1},Automatic}]&,successrates,{2}];
rateDeltaHistograms=Map[Histogram[#,{10},"Probability",PlotRange->{{-100,100},Automatic}]&,successratesDelta,{2}];


TableForm[rateHistograms,TableHeadings->{taulabels,nlabels}]
TableForm[rateDeltaHistograms,TableHeadings->{taulabels,nlabels}]
(*TableForm[Transpose[rateHistograms],TableHeadings->{nlabels,taulabels}]*)


(* For export *)
makeHistogram2[datasets_,label_]:=Histogram[datasets,{0.1},"Probability",
PlotRange->{{0,1},{0,1}},
ImageSize->300,AxesOrigin->{0,0},
Frame->True,
FrameLabel->{"successrate of CCM construction","frequency"},
ChartLegends->Placed[{"CCMu   avg = "<>ToString[NumberForm[N[Mean[datasets[[1]]]],2]],"CCMb   avg = "<>ToString[NumberForm[N[Mean[datasets[[2]]]],2]]},Center],(*LabelingFunction->(Placed[NumberForm[#,{2,3}],Above]&),*)
(*LabelingFunction\[Rule](Placed[If[#2[[2]]\[Equal]1,NumberForm[#1,{2,3}],""],Above]&),*)
PlotLabel->label];

plot1=makeHistogram2[successrates[[1,1]],"n = 1000, \[Tau] = 2.1"]
plot2=makeHistogram2[successrates[[5,1]],"n = 1000, \[Tau] = 2.5"]
plot3=makeHistogram2[successrates[[9,1]],"n = 1000, \[Tau] = 2.9"]
(* columnplot1=GraphicsColumn[{plot1,plot2,plot3}] *)


Export[NotebookDirectory[]<>"plots/ccm_construction_successrate.pdf",columnplot1]


Export[NotebookDirectory[]<>"plots/ccm_construction_successrate1.pdf",plot1]
Export[NotebookDirectory[]<>"plots/ccm_construction_successrate5.pdf",plot2]
Export[NotebookDirectory[]<>"plots/ccm_construction_successrate9.pdf",plot3]


(* ::Section:: *)
(*CCMu rates only*)


successrates=Map[#[[3,2]]/100&,gdata,{3}]; (* Old datafile *)
legends=Map["\[Tau] = "<>ToString[#[[1,1,2]]]<>" ; avg = "<>ToString[NumberForm[N[Mean[#[[All,3,2]]/100]],3]]&,gdata,{2}];


successrates=gdata2[[All,All,All,2]]; (* New datafile *)
legends=Map["\[Tau] = "<>ToString[#[[1,1,2]]]<>" ; avg = "<>ToString[NumberForm[N[Mean[#[[All,2]]]],{4,4}]]&,gdata2,{2}];


successrates=Map[Clip[#,{0,0.99999}]&,successrates,{3}];

datasets={successrates[[1,1]], successrates[[2,1]], successrates[[3,1]]};
selectedLegends={legends[[1,1]],legends[[2,1]],legends[[3,1]]};

plot1=Histogram[datasets,{-0.025,1.025,0.05},"Probability",
PlotRange->{{0,1},{0,1}},
ChartStyle->Directive[FaceForm[Opacity[0.8]],EdgeForm[Thickness[0.001]]],
ImageSize->300,AxesOrigin->{0,0},
Frame->True,
FrameLabel->{"successrate of CCMdu construction\n(distribution over sampled degree sequences)","Probability"},
ChartLegends->Placed[selectedLegends,Center],
PlotLabel->"n = 1000"]

histogramlist = Map[Last[HistogramList[#,{-0.05,1.05,0.1},"Probability"]]&,datasets];
histogramlist = Transpose[histogramlist];
(* labels=ConstantArray["",Ceiling[1/0.05]];
labels[[2;;-1;;2]]=Map[ToString,Range[0.1,1,0.1]]; *)
labels=Map[ToString,Range[0,1,0.1]];
plot2=BarChart[histogramlist,
PlotRange->{All,{0,1}},
BarSpacing->{None,Medium},
ChartLabels->{labels,None},
ImageSize->300,AxesOrigin->{0,0},
Frame->True,
FrameLabel->{"successrate of CCMdu construction\n(distribution over sampled degree sequences)","Probability"},
ChartLegends->Placed[selectedLegends,Center],
PlotLabel->"n = 1000"]

plot3=SmoothHistogram[datasets,{0.01,"Gaussian"},"PDF",
PlotRange->{{0,1},All},
ImageSize->300,AxesOrigin->{0,0},
Frame->True,
FrameLabel->{"successrate of CCMdu construction\n(distribution over sampled degree sequences)","PDF"},
PlotLegends->Placed[selectedLegends,Center],
PlotLabel->"n = 1000"]

(*
Table[
SmoothHistogram[datasets,{0.01,weightKernel},"PDF",
PlotRange->{{0,1},All},
(*ChartStyle\[Rule]Directive[FaceForm[Opacity[0.5]],EdgeForm[Thickness[0.007]]],*)
ImageSize->300,AxesOrigin->{0,0},
Frame->True,
FrameLabel->{"successrate of CCMdu construction\n over sampled degree sequences","CDF"},
PlotLegends->Placed[selectedLegends,Center],
PlotLabel->"n = 1000"],{weightKernel,{"Biweight","Gaussian","Rectangular","Cosine","SemiCircle"}}]
*)


Export[NotebookDirectory[]<>"plots/ccm_construction_successrates.pdf",plot2]