From 168338d6574efb897a18b4d6e9d42eb704c687d5 Mon Sep 17 00:00:00 2001 From: Martin Bies Date: Fri, 12 Jul 2024 14:14:23 +0200 Subject: [PATCH] [FTheoryTools] Overhaul serialization --- .../src/Serialization/weierstrass_models.jl | 80 +++++++------------ 1 file changed, 28 insertions(+), 52 deletions(-) diff --git a/experimental/FTheoryTools/src/Serialization/weierstrass_models.jl b/experimental/FTheoryTools/src/Serialization/weierstrass_models.jl index 6e37745732ea..ec227639cb1c 100644 --- a/experimental/FTheoryTools/src/Serialization/weierstrass_models.jl +++ b/experimental/FTheoryTools/src/Serialization/weierstrass_models.jl @@ -42,20 +42,6 @@ function save_type_params(s::SerializerState, w::WeierstrassModel) save_typed_object(s, weierstrass_polynomial_ring, :weierstrass_polynomial_ring) end - if serialize_with_id(explicit_model_section_ring) - parent_ref = save_as_ref(s, explicit_model_section_ring) - save_object(s, parent_ref, :explicit_model_section_ring) - else - save_typed_object(s, explicit_model_section_ring, :explicit_model_section_ring) - end - - if serialize_with_id(defining_section_parametrization_ring) - parent_ref = save_as_ref(s, defining_section_parametrization_ring) - save_object(s, parent_ref, :defining_section_parametrization_ring) - else - save_typed_object(s, defining_section_parametrization_ring, :defining_section_parametrization_ring) - end - end end end @@ -69,8 +55,6 @@ function load_type_params(s::DeserializerState, ::Type{<: WeierstrassModel}) load_typed_object(s, :base_space), load_typed_object(s, :ambient_space), load_typed_object(s, :weierstrass_polynomial_ring), - load_typed_object(s, :explicit_model_section_ring), - load_typed_object(s, :defining_section_parametrization_ring) ) end @@ -86,38 +70,25 @@ function save_object(s::SerializerState, w::WeierstrassModel) # Save information save_data_dict(s) do - # Save keys of explicit_model_sections - save_data_array(s, :explicit_model_section_keys) do - for (key, value) in explicit_model_sections(w) - save_object(s, key) - end - end - - # Save values of explicit_model_sections - save_data_array(s, :explicit_model_section_values) do - for (key, value) in explicit_model_sections(w) - save_object(s, value) - end + # Save explicit_model_sections(w) + if !is_empty(explicit_model_sections(w)) + save_object(s, explicit_model_sections(w), :explicit_model_sections) end - # Save keys of defining_section_parametrization - save_data_array(s, :defining_section_parametrization_keys) do - for (key, value) in defining_section_parametrization(w) - save_object(s, key) - end + # Save defining_section_parametrization(w) + if !is_empty(defining_section_parametrization(w)) + save_object(s, defining_section_parametrization(w), :defining_section_parametrization) end - # Save keys of defining_section_parametrization - save_data_array(s, :defining_section_parametrization_values) do - for (key, value) in defining_section_parametrization(w) - save_object(s, value) - end + # save_defining_classes(w) + if !is_empty(defining_classes(w)) + save_object(s, defining_classes(w), :defining_classes) end - # Tate polynomial + # Weierstrass polynomial save_object(s, weierstrass_polynomial(w), :weierstrass_polynomial) - # Boolean values, that are always known for Tate models + # Boolean values, that are always known for Weierstrass models save_data_array(s, :boolean_data) do save_object(s, is_partially_resolved(w)) end @@ -125,7 +96,7 @@ function save_object(s::SerializerState, w::WeierstrassModel) end ######################################### -# This function loads a global Tate model +# This function loads a Weierstrass model ######################################### function load_object(s::DeserializerState, ::Type{<: WeierstrassModel}, params::Tuple{NormalToricVariety, NormalToricVariety, MPolyDecRing, MPolyDecRing, <:Union{MPolyDecRing, MPolyRing}}) @@ -134,23 +105,28 @@ function load_object(s::DeserializerState, ::Type{<: WeierstrassModel}, params:: base_space = params[1] ambient_space = params[2] - # Extract Tate polynomial + # Extract Weierstrass polynomial pw = load_object(s, MPolyDecRingElem, params[3], :weierstrass_polynomial) # Extract explicit_model_sections - values = load_object(s, Vector, params[4], :explicit_model_section_values) - keys = load_object(s, Vector, String, :explicit_model_section_keys) - explicit_model_sections = Dict{String, MPolyRingElem}() - for i in 1:length(keys) - explicit_model_sections[keys[i]] = values[i] + if haskey(s, :explicit_model_sections) + explicit_model_sections = load_object(s, :explicit_model_sections) + else + explicit_model_sections = Dict{String, MPolyRingElem}() end # Extract defining_section_parametrization - values = load_object(s, Vector, params[5], :defining_section_parametrization_values) - keys = load_object(s, Vector, String, :defining_section_parametrization_keys) - defining_section_parametrization = Dict{String, MPolyRingElem}() - for i in 1:length(keys) - defining_section_parametrization[keys[i]] = values[i] + if haskey(s, :defining_section_parametrization) + defining_section_parametrization = load_object(s, :defining_section_parametrization) + else + defining_section_parametrization = Dict{String, MPolyRingElem}() + end + + # Extract defining_classes + if haskey(s, :defining_classes) + defining_classes = load_object(s, :defining_classes) + else + defining_classes = Dict{String, ToricDivisorClass}() end # Construct the model