Skip to content

Commit a088dec

Browse files
committed
added new strip_metadata fn for AbstractPopMember.
1 parent 38a4a75 commit a088dec

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

src/ExpressionBuilder.jl

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,31 @@ function strip_metadata(
153153
) where {T,L}
154154
return with_metadata(ex; init_params(options, dataset, ex, Val(false))...)
155155
end
156+
function strip_metadata(
157+
member::PM, options::AbstractOptions, dataset::Dataset{T,L}
158+
) where {T,L,N,PM<:AbstractPopMember{T,L,N}}
159+
stripped_tree = strip_metadata(member.tree, options, dataset)
160+
new_member = create_child(
161+
member,
162+
stripped_tree,
163+
member.cost,
164+
member.loss,
165+
options;
166+
complexity=nothing,
167+
parent_ref=member.parent,
168+
)
169+
new_member.ref = member.ref
170+
new_member.parent = member.parent
171+
setfield!(new_member, :complexity, -1)
172+
173+
for field in fieldnames(PM)
174+
if field in (:tree, :cost, :loss, :birth, :complexity, :ref, :parent)
175+
continue
176+
end
177+
setfield!(new_member, field, getfield(member, field))
178+
end
179+
return new_member
180+
end
156181
function strip_metadata(
157182
member::PopMember, options::AbstractOptions, dataset::Dataset{T,L}
158183
) where {T,L}
@@ -166,6 +191,19 @@ function strip_metadata(
166191
deterministic=options.deterministic,
167192
)
168193
end
194+
function strip_metadata(
195+
member::PopMember{T,L,N}, options::AbstractOptions, dataset::Dataset{T,L}
196+
) where {T,L,N}
197+
return PopMember(
198+
strip_metadata(member.tree, options, dataset),
199+
member.cost,
200+
member.loss,
201+
nothing;
202+
ref=member.ref,
203+
parent=member.parent,
204+
deterministic=options.deterministic,
205+
)
206+
end
169207
function strip_metadata(
170208
pop::Population, options::AbstractOptions, dataset::Dataset{T,L}
171209
) where {T,L}

test/test_abstract_popmember.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,4 +191,12 @@
191191
@test !isnothing(best_idx)
192192
best_member = hall_of_fame.members[best_idx]
193193
@test best_member isa CustomPopMember
194+
195+
dataset = SymbolicRegression.Dataset(X, y)
196+
stripped_member = SymbolicRegression.strip_metadata(best_member, options, dataset)
197+
@test stripped_member isa CustomPopMember
198+
@test stripped_member !== best_member
199+
@test stripped_member.ref == best_member.ref
200+
@test stripped_member.parent == best_member.parent
201+
@test stripped_member.generation == best_member.generation
194202
end

0 commit comments

Comments
 (0)