From 9319fb2186fba15cac8feba5845c200feecc88ca Mon Sep 17 00:00:00 2001 From: Marek Kaluba Date: Mon, 17 Jan 2022 22:36:58 +0100 Subject: [PATCH] add script to generate json --- data/Manifest.toml | 30 ++++++++++++++++++++++++++++++ data/Project.toml | 2 ++ data/create_json.jl | 45 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 data/Manifest.toml create mode 100644 data/Project.toml create mode 100644 data/create_json.jl diff --git a/data/Manifest.toml b/data/Manifest.toml new file mode 100644 index 0000000..70f26b7 --- /dev/null +++ b/data/Manifest.toml @@ -0,0 +1,30 @@ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.7.1" +manifest_format = "2.0" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "8076680b162ada2a031f707ac7b4953e30667a37" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.2" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[deps.Parsers]] +deps = ["Dates"] +git-tree-sha1 = "92f91ba9e5941fc781fecf5494ac1da87bdac775" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.2.0" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" diff --git a/data/Project.toml b/data/Project.toml new file mode 100644 index 0000000..723a4c6 --- /dev/null +++ b/data/Project.toml @@ -0,0 +1,2 @@ +[deps] +JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" diff --git a/data/create_json.jl b/data/create_json.jl new file mode 100644 index 0000000..e31ed66 --- /dev/null +++ b/data/create_json.jl @@ -0,0 +1,45 @@ +using Pkg +Pkg.activate(@__DIR__) +using DelimitedFiles +using JSON + +include(joinpath(@__DIR__, "parse_presentations.jl")) +include(joinpath(@__DIR__, "smallhyperbolicgrp.jl")) + +all_grps_presentations = + let tables = [ + joinpath(@__DIR__, f) for f in readdir(@__DIR__) if + isfile(joinpath(@__DIR__, f)) && endswith(f, ".txt") + ] + mapreduce(parse_grouppresentations_abstract, union, tables) |> Dict + end + +tr_grps = + let csvs = [ + joinpath(@__DIR__, f) for f in readdir(@__DIR__) if + isfile(joinpath(@__DIR__, f)) && endswith(f, ".csv") + ] + + trGrps = map(csvs) do file + data = readdlm(file, '&') + labels = Symbol.(replace.(strip.(data[1, :]), ' ' => '_', '-' => '_')) + groups = data[2:end, :] + grps = map(enumerate(eachrow(groups))) do (i, props) + nt = (; (Symbol(l) => v for (l, v) in zip(labels, props))...) + @debug i, grp_name(nt) + P = all_grps_presentations[grp_name(nt)] + grp = TriangleGrp(P.generators, P.relations, nt) + latex_name(grp) => grp + end |> Dict + + m = match(r".*_(\d)_(\d)_(\d).csv", basename(file)) + @assert !isnothing(m) + type = parse.(Int, tuple(m[1], m[2], m[3])) + type => grps + end |> Dict + # Dict(name(G) => G for G in trGrps) + end + +open(joinpath(@__DIR__, "triangle_groups.json"), "w") do io + JSON.print(io, tr_grps, 4) +end