Skip to content

Commit

Permalink
[FTheoryTools] Overhaul serialization
Browse files Browse the repository at this point in the history
  • Loading branch information
HereAround committed Jul 19, 2024
1 parent a8d2911 commit 168338d
Showing 1 changed file with 28 additions and 52 deletions.
80 changes: 28 additions & 52 deletions experimental/FTheoryTools/src/Serialization/weierstrass_models.jl
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand All @@ -86,46 +70,33 @@ 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
end
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}})
Expand All @@ -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
Expand Down

0 comments on commit 168338d

Please sign in to comment.