diff --git a/src/DistributedFactorGraphs.jl b/src/DistributedFactorGraphs.jl index 91df59f3..8155b154 100644 --- a/src/DistributedFactorGraphs.jl +++ b/src/DistributedFactorGraphs.jl @@ -109,6 +109,9 @@ export listTags, mergeTags!, removeTags!, emptyTags! #this isn't acttually implemented. TODO remove or implement export addTags! +import Base: copy +export copy + ##------------------------------------------------------------------------------ # Variable ##------------------------------------------------------------------------------ diff --git a/src/entities/DFGVariable.jl b/src/entities/DFGVariable.jl index 789d4968..0a0561d8 100644 --- a/src/entities/DFGVariable.jl +++ b/src/entities/DFGVariable.jl @@ -87,6 +87,28 @@ VariableNodeData(val::Array{Float64,2}, VariableNodeData(softtype::T; solverKey::Symbol=:default) where T <: InferenceVariable = VariableNodeData{T}(zeros(1,1), zeros(1,1), Symbol[], Int[], 0, false, :NOTHING, Symbol[], softtype, false, 0.0, false, false, 0, 0, solverKey) +## Copying +function copy(vnd::VariableNodeData; solverKey::Union{Nothing,Symbol}=nothing) + return VariableNodeData( + deepcopy(vnd.val), + deepcopy(vnd.bw), + deepcopy(vnd.BayesNetOutVertIDs), + deepcopy(vnd.dimIDs), + vnd.dims, + vnd.eliminated, + vnd.BayesNetVertID, + deepcopy(vnd.separator), + vnd.softtype, + vnd.initialized, + vnd.inferdim, + vnd.ismargin, + vnd.dontmargin, + vnd.solveInProgress, + vnd.solvedCount, + solverKey == nothing ? vnd.solverKey : solverKey) +end + + ##============================================================================== ## PackedVariableNodeData.jl ##============================================================================== @@ -194,6 +216,15 @@ end MeanMaxPPE(solverKey::Symbol, suggested::Vector{Float64}, max::Vector{Float64}, mean::Vector{Float64}) = MeanMaxPPE(solverKey, suggested, max, mean, now(UTC)) +## Copying +function copy(ppe::MeanMaxPPE; solverKey::Union{Nothing,Symbol}=nothing) + return MeanMaxPPE(solverKey == nothing ? ppe.solverKey : solverKey, + ppe.suggested, + ppe.max, + ppe.mean, + ppe.lastUpdatedTimestamp) +end + ## Metadata """ $SIGNATURES @@ -315,15 +346,6 @@ Base.setproperty!(x::DFGVariable,f::Symbol, val) = begin end end - -##------------------------------------------------------------------------------ -# TODO: can't see the reason to overwrite copy, leaving it here for now -# function Base.copy(o::DFGVariable)::DFGVariable -# return DFGVariable(o.label, getSofttype(o)(), tags=copy(o.tags), estimateDict=copy(o.estimateDict), -# solverDataDict=copy(o.solverDataDict), smallData=copy(o.smallData), -# dataDict=copy(o.dataDict), solvable=getSolvable(o)) -# end - ##------------------------------------------------------------------------------ ## DFGVariableSummary lv1 ##------------------------------------------------------------------------------