Open
Description
Just pasting the diffs of some of my packages to help identify new formatting issues. These overlap with #878 and #879. I’m using BlueStyle.
As you can see, many of these are superficial changes (though some be violating Blue, not sure). However, some of these formatting changes are semantic differences like #878.
Here's the diff for SymbolicRegression.jl
diff --git a/benchmark/benchmarks.jl b/benchmark/benchmarks.jl
index 9e486234..07ecd1c2 100644
--- a/benchmark/benchmarks.jl
+++ b/benchmark/benchmarks.jl
@@ -88,10 +88,10 @@ function create_utils_benchmark()
suite["best_of_sample"] = @benchmarkable(
best_of_sample(pop, rss, $options),
setup = (
- nfeatures = 1;
- dataset = Dataset(randn(nfeatures, 32), randn(32));
- pop = Population(dataset; npop=100, nlength=20, options=$options, nfeatures);
- rss = RunningSearchStatistics(; options=$options)
+ nfeatures=1;
+ dataset=Dataset(randn(nfeatures, 32), randn(32));
+ pop=Population(dataset; npop=100, nlength=20, options=($options), nfeatures);
+ rss=RunningSearchStatistics(; options=($options))
)
)
@@ -110,9 +110,9 @@ function create_utils_benchmark()
end
end,
setup = (
- nfeatures = 1;
- dataset = Dataset(randn(nfeatures, 32), randn(32));
- mutation_weights = MutationWeights(;
+ nfeatures=1;
+ dataset=Dataset(randn(nfeatures, 32), randn(32));
+ mutation_weights=MutationWeights(;
mutate_constant=1.0,
mutate_operator=1.0,
swap_operands=1.0,
@@ -125,21 +125,23 @@ function create_utils_benchmark()
form_connection=0.0,
break_connection=0.0,
);
- options = Options(;
- unary_operators=[sin, cos], binary_operators=[+, -, *, /], mutation_weights
+ options=Options(;
+ unary_operators=[sin, cos],
+ binary_operators=[+, -, *, /],
+ mutation_weights,
);
- recorder = RecordType();
- temperature = 1.0;
- curmaxsize = 20;
- rss = RunningSearchStatistics(; options);
- trees = [
+ recorder=RecordType();
+ temperature=1.0;
+ curmaxsize=20;
+ rss=RunningSearchStatistics(; options);
+ trees=[
gen_random_tree_fixed_size(15, options, nfeatures, Float64) for _ in 1:100
];
- expressions = [
+ expressions=[
Expression(tree; operators=options.operators, variable_names=["x1"]) for
tree in trees
];
- members = [
+ members=[
PopMember(dataset, expression, options; deterministic=false) for
expression in expressions
]
@@ -149,18 +151,18 @@ function create_utils_benchmark()
ntrees = 10
suite["optimize_constants_x10"] = @benchmarkable(
foreach(members) do member
- optimize_constants(dataset, member, $options)
+ return optimize_constants(dataset, member, $options)
end,
seconds = 20,
setup = (
- nfeatures = 1;
- T = Float64;
- dataset = Dataset(randn(nfeatures, 512), randn(512));
- ntrees = $ntrees;
- trees = [
+ nfeatures=1;
+ T=Float64;
+ dataset=Dataset(randn(nfeatures, 512), randn(512));
+ ntrees=($ntrees);
+ trees=[
gen_random_tree_fixed_size(20, $options, nfeatures, T) for i in 1:ntrees
];
- members = [
+ members=[
PopMember(dataset, tree, $options; deterministic=false) for tree in trees
]
)
@@ -176,12 +178,12 @@ function create_utils_benchmark()
)
s[T] = @benchmarkable(
foreach(trees) do tree
- compute_complexity(tree, $options)
+ return compute_complexity(tree, $options)
end,
setup = (
- T = Float64;
- nfeatures = 3;
- trees = [
+ T=Float64;
+ nfeatures=3;
+ trees=[
gen_random_tree_fixed_size(20, $options, nfeatures, T) for
i in 1:($ntrees)
]
@@ -194,12 +196,14 @@ function create_utils_benchmark()
if isdefined(SymbolicRegression.MutationFunctionsModule, :randomly_rotate_tree!)
suite["randomly_rotate_tree_x10"] = @benchmarkable(
foreach(trees) do tree
- SymbolicRegression.MutationFunctionsModule.randomly_rotate_tree!(tree)
+ return SymbolicRegression.MutationFunctionsModule.randomly_rotate_tree!(
+ tree
+ )
end,
setup = (
- T = Float64;
- nfeatures = 3;
- trees = [
+ T=Float64;
+ nfeatures=3;
+ trees=[
gen_random_tree_fixed_size(20, $options, nfeatures, T) for
i in 1:($ntrees)
]
@@ -209,14 +213,14 @@ function create_utils_benchmark()
suite["insert_random_op_x10"] = @benchmarkable(
foreach(trees) do tree
- SymbolicRegression.MutationFunctionsModule.insert_random_op(
+ return SymbolicRegression.MutationFunctionsModule.insert_random_op(
tree, $options, nfeatures
)
end,
setup = (
- T = Float64;
- nfeatures = 3;
- trees = [
+ T=Float64;
+ nfeatures=3;
+ trees=[
gen_random_tree_fixed_size(20, $options, nfeatures, T) for i in 1:($ntrees)
]
)
@@ -237,12 +241,12 @@ function create_utils_benchmark()
)
suite["check_constraints_x10"] = @benchmarkable(
foreach(trees) do tree
- check_constraints(tree, $options, $options.maxsize)
+ return check_constraints(tree, $options, $options.maxsize)
end,
setup = (
- T = Float64;
- nfeatures = 3;
- trees = [
+ T=Float64;
+ nfeatures=3;
+ trees=[
gen_random_tree_fixed_size(20, $options, nfeatures, T) for i in 1:($ntrees)
]
)
diff --git a/ext/SymbolicRegressionEnzymeExt.jl b/ext/SymbolicRegressionEnzymeExt.jl
index b8b8be60..9929567f 100644
--- a/ext/SymbolicRegressionEnzymeExt.jl
+++ b/ext/SymbolicRegressionEnzymeExt.jl
@@ -39,7 +39,7 @@ function (g::GradEvaluator{<:Any,<:AutoEnzyme})(_, G, x::AbstractVector{T}) wher
doutput = [one(T)]
with_stacksize(32 * 1024 * 1024) do
- autodiff(
+ return autodiff(
Reverse,
evaluator,
Duplicated(g.f.tree, g.extra.storage_tree),
diff --git a/ext/SymbolicRegressionJSON3Ext.jl b/ext/SymbolicRegressionJSON3Ext.jl
index 1384f690..a78cd2f0 100644
--- a/ext/SymbolicRegressionJSON3Ext.jl
+++ b/ext/SymbolicRegressionJSON3Ext.jl
@@ -5,7 +5,7 @@ import SymbolicRegression.UtilsModule: json3_write
function json3_write(record, recorder_file)
open(recorder_file, "w") do io
- JSON3.write(io, record; allow_inf=true)
+ return JSON3.write(io, record; allow_inf=true)
end
end
diff --git a/src/CheckConstraints.jl b/src/CheckConstraints.jl
index fb0bbb71..7c95ff7e 100644
--- a/src/CheckConstraints.jl
+++ b/src/CheckConstraints.jl
@@ -73,7 +73,7 @@ end
function check_constraints(
ex::AbstractExpression,
options::AbstractOptions,
- maxsize::Int,
+ maxsize::Int;
cursize::Union{Int,Nothing}=nothing,
)::Bool
tree = get_tree(ex)
@@ -82,7 +82,7 @@ end
function check_constraints(
tree::AbstractExpressionNode,
options::AbstractOptions,
- maxsize::Int,
+ maxsize::Int;
cursize::Union{Int,Nothing}=nothing,
)::Bool
((cursize === nothing) ? compute_complexity(tree, options) : cursize) > maxsize &&
@@ -102,8 +102,8 @@ function check_constraints(
return true
end
-check_constraints(
- ex::Union{AbstractExpression,AbstractExpressionNode}, options::AbstractOptions
-)::Bool = check_constraints(ex, options, options.maxsize)
+check_constraints(ex::Union{AbstractExpression,AbstractExpressionNode}, options::AbstractOptions)::Bool = check_constraints(
+ ex, options, options.maxsize
+)
end
diff --git a/src/Configure.jl b/src/Configure.jl
index 2b184e5c..9207eee1 100644
--- a/src/Configure.jl
+++ b/src/Configure.jl
@@ -1,6 +1,6 @@
const TEST_TYPE = Float32
-function test_operator(op::F, x::T, y=nothing) where {F,T}
+function test_operator(op::F, x::T; y=nothing) where {F,T}
local output
try
output = y === nothing ? op(x) : op(x, y)
@@ -196,12 +196,10 @@ function activate_env_on_workers(
)
verbosity > 0 && @info "Activating environment on workers."
@everywhere procs begin
- Base.MainInclude.eval(
- quote
- using Pkg
- Pkg.activate($$project_path)
- end,
- )
+ Base.MainInclude.eval(quote
+ using Pkg
+ Pkg.activate($$project_path)
+ end)
end
end
@@ -237,12 +235,9 @@ function import_module_on_workers(
# to JuliaLang.
for ext in relevant_extensions
- push!(
- expr.args,
- quote
- using $ext: $ext
- end,
- )
+ push!(expr.args, quote
+ using $ext: $ext
+ end)
end
verbosity > 0 && if isempty(relevant_extensions)
diff --git a/src/ConstantOptimization.jl b/src/ConstantOptimization.jl
index 92b5d0c5..2cd1fa46 100644
--- a/src/ConstantOptimization.jl
+++ b/src/ConstantOptimization.jl
@@ -125,7 +125,7 @@ function (g::GradEvaluator{<:Any,AD})(_, G, x::AbstractVector) where {AD}
AD isa AutoEnzyme && error("Please load the `Enzyme.jl` package.")
set_scalar_constants!(g.f.tree, x, g.f.refs)
(val, grad) = value_and_gradient(g.backend, g.f.tree) do tree
- eval_loss(tree, g.f.dataset, g.f.options; regularization=false, idx=g.f.idx)
+ return eval_loss(tree, g.f.dataset, g.f.options; regularization=false, idx=g.f.idx)
end
if G !== nothing && grad !== nothing
G .= extract_gradient(grad, g.f.tree)
diff --git a/src/Dataset.jl b/src/Dataset.jl
index f9e28bcc..64c2ad89 100644
--- a/src/Dataset.jl
+++ b/src/Dataset.jl
@@ -90,9 +90,9 @@ end
Construct a dataset to pass between internal functions.
"""
function Dataset(
- X::AbstractMatrix{T},
+ X::AbstractMatrix{T};
y::Union{AbstractVector,Nothing}=nothing,
- loss_type::Type{L}=Nothing;
+ loss_type::Type{L}=Nothing,
index::Int=1,
weights::Union{AbstractVector,Nothing}=nothing,
variable_names::Union{Array{String,1},Nothing}=nothing,
diff --git a/src/ExpressionBuilder.jl b/src/ExpressionBuilder.jl
index 709937ec..b3bbaaa2 100644
--- a/src/ExpressionBuilder.jl
+++ b/src/ExpressionBuilder.jl
@@ -27,7 +27,7 @@ import DynamicExpressions: get_operators
import ..CoreModule: create_expression
@unstable function create_expression(
- t::T, options::AbstractOptions, dataset::Dataset{T,L}, ::Val{embed}=Val(false)
+ t::T, options::AbstractOptions, dataset::Dataset{T,L}, (::Val{embed})=Val(false)
) where {T,L,embed}
return create_expression(
t, options, dataset, options.node_type, options.expression_type, Val(embed)
@@ -37,7 +37,7 @@ end
t::AbstractExpressionNode{T},
options::AbstractOptions,
dataset::Dataset{T,L},
- ::Val{embed}=Val(false),
+ (::Val{embed})=Val(false),
) where {T,L,embed}
return create_expression(
t, options, dataset, options.node_type, options.expression_type, Val(embed)
@@ -46,8 +46,8 @@ end
function create_expression(
ex::AbstractExpression{T},
options::AbstractOptions,
- ::Dataset{T,L},
- ::Val{embed}=Val(false),
+ ::Dataset{T,L};
+ (::Val{embed})=Val(false),
) where {T,L,embed}
return ex::options.expression_type
end
@@ -57,7 +57,7 @@ end
dataset::Dataset{T,L},
::Type{N},
::Type{E},
- ::Val{embed}=Val(false),
+ (::Val{embed})=Val(false),
) where {T,L,embed,N<:AbstractExpressionNode,E<:AbstractExpression}
return create_expression(constructorof(N)(; val=t), options, dataset, N, E, Val(embed))
end
@@ -67,7 +67,7 @@ end
dataset::Dataset{T,L},
::Type{<:AbstractExpressionNode},
::Type{E},
- ::Val{embed}=Val(false),
+ (::Val{embed})=Val(false),
) where {T,L,embed,E<:AbstractExpression}
return constructorof(E)(t; init_params(options, dataset, nothing, Val(embed))...)
end
diff --git a/src/HallOfFame.jl b/src/HallOfFame.jl
index a75b8293..91e27d80 100644
--- a/src/HallOfFame.jl
+++ b/src/HallOfFame.jl
@@ -102,7 +102,7 @@ function calculate_pareto_frontier(hallOfFame::HallOfFame{T,L,N}) where {T,L,N}
# We check if this member is better than all members which are smaller than it and
# also exist.
betterThanAllSmaller = true
- for i in 1:(size - 1)
+ for i in 1:(size-1)
if !hallOfFame.exists[i]
continue
end
diff --git a/src/LossFunctions.jl b/src/LossFunctions.jl
index 01dcca86..cfe47f47 100644
--- a/src/LossFunctions.jl
+++ b/src/LossFunctions.jl
@@ -162,7 +162,7 @@ function loss_to_score(
use_baseline::Bool,
baseline::L,
member,
- options::AbstractOptions,
+ options::AbstractOptions;
complexity::Union{Int,Nothing}=nothing,
)::L where {L<:LOSS_TYPE}
# TODO: Come up with a more general normalization scheme.
diff --git a/src/MLJInterface.jl b/src/MLJInterface.jl
index 4d7a1d14..8400f6d4 100644
--- a/src/MLJInterface.jl
+++ b/src/MLJInterface.jl
@@ -217,7 +217,7 @@ function _update(m, verbosity, old_fitresult, old_cache, X, y, w, options, class
variable_names=variable_names,
y_variable_names=y_variable_names,
y_is_table=MMI.istable(y),
- has_classes=!isnothing(classes),
+ has_classes=(!isnothing(classes)),
X_units=X_units_clean,
y_units=y_units_clean,
types=(
diff --git a/src/Mutate.jl b/src/Mutate.jl
index 7b828f6f..e61776fc 100644
--- a/src/Mutate.jl
+++ b/src/Mutate.jl
@@ -349,7 +349,7 @@ end
kws...,
) where {W<:AbstractMutationWeights}
mutation_choices = fieldnames(W)
- quote
+ return quote
Base.Cartesian.@nif(
$(length(mutation_choices)),
i -> mutation_choice == $(mutation_choices)[i],
diff --git a/src/MutationFunctions.jl b/src/MutationFunctions.jl
index 73e0367b..007b0738 100644
--- a/src/MutationFunctions.jl
+++ b/src/MutationFunctions.jl
@@ -47,7 +47,7 @@ Return a random node from the tree. You may optionally
filter the nodes matching some condition before sampling.
"""
function random_node(
- tree::AbstractNode, rng::AbstractRNG=default_rng(); filter::F=Returns(true)
+ tree::AbstractNode; rng::AbstractRNG=default_rng(), filter::F=Returns(true)
) where {F<:Function}
Base.depwarn(
"Instead of `random_node(tree, filter)`, use `rand(NodeSampler(; tree, filter))`",
@@ -73,7 +73,7 @@ end
"""Randomly convert an operator into another one (binary->binary; unary->unary)"""
function mutate_operator(
- ex::AbstractExpression{T}, options::AbstractOptions, rng::AbstractRNG=default_rng()
+ ex::AbstractExpression{T}, options::AbstractOptions; rng::AbstractRNG=default_rng()
) where {T<:DATA_TYPE}
tree, context = get_contents_for_mutation(ex, rng)
ex = with_contents_for_mutation(ex, mutate_operator(tree, options, rng), context)
@@ -81,7 +81,7 @@ function mutate_operator(
end
function mutate_operator(
tree::AbstractExpressionNode{T},
- options::AbstractOptions,
+ options::AbstractOptions;
rng::AbstractRNG=default_rng(),
) where {T}
if !(has_operators(tree))
@@ -100,7 +100,7 @@ end
function mutate_constant(
ex::AbstractExpression{T},
temperature,
- options::AbstractOptions,
+ options::AbstractOptions;
rng::AbstractRNG=default_rng(),
) where {T<:DATA_TYPE}
tree, context = get_contents_for_mutation(ex, rng)
@@ -112,7 +112,7 @@ end
function mutate_constant(
tree::AbstractExpressionNode{T},
temperature,
- options::AbstractOptions,
+ options::AbstractOptions;
rng::AbstractRNG=default_rng(),
) where {T<:DATA_TYPE}
# T is between 0 and 1.
@@ -147,8 +147,8 @@ end
function append_random_op(
ex::AbstractExpression{T},
options::AbstractOptions,
- nfeatures::Int,
- rng::AbstractRNG=default_rng();
+ nfeatures::Int;
+ rng::AbstractRNG=default_rng(),
makeNewBinOp::Union{Bool,Nothing}=nothing,
) where {T<:DATA_TYPE}
tree, context = get_contents_for_mutation(ex, rng)
@@ -160,8 +160,8 @@ end
function append_random_op(
tree::AbstractExpressionNode{T},
options::AbstractOptions,
- nfeatures::Int,
- rng::AbstractRNG=default_rng();
+ nfeatures::Int;
+ rng::AbstractRNG=default_rng(),
makeNewBinOp::Union{Bool,Nothing}=nothing,
) where {T<:DATA_TYPE}
node = rand(rng, NodeSampler(; tree, filter=t -> t.degree == 0))
@@ -193,7 +193,7 @@ end
function insert_random_op(
ex::AbstractExpression{T},
options::AbstractOptions,
- nfeatures::Int,
+ nfeatures::Int;
rng::AbstractRNG=default_rng(),
) where {T<:DATA_TYPE}
tree, context = get_contents_for_mutation(ex, rng)
@@ -205,7 +205,7 @@ end
function insert_random_op(
tree::AbstractExpressionNode{T},
options::AbstractOptions,
- nfeatures::Int,
+ nfeatures::Int;
rng::AbstractRNG=default_rng(),
) where {T<:DATA_TYPE}
node = rand(rng, NodeSampler(; tree))
@@ -229,7 +229,7 @@ end
function prepend_random_op(
ex::AbstractExpression{T},
options::AbstractOptions,
- nfeatures::Int,
+ nfeatures::Int;
rng::AbstractRNG=default_rng(),
) where {T<:DATA_TYPE}
tree, context = get_contents_for_mutation(ex, rng)
@@ -241,7 +241,7 @@ end
function prepend_random_op(
tree::AbstractExpressionNode{T},
options::AbstractOptions,
- nfeatures::Int,
+ nfeatures::Int;
rng::AbstractRNG=default_rng(),
) where {T<:DATA_TYPE}
node = tree
@@ -264,9 +264,9 @@ end
function make_random_leaf(
nfeatures::Int,
::Type{T},
- ::Type{N},
+ ::Type{N};
rng::AbstractRNG=default_rng(),
- ::Union{AbstractOptions,Nothing}=nothing,
+ (::Union{AbstractOptions,Nothing})=nothing,
) where {T<:DATA_TYPE,N<:AbstractExpressionNode}
if rand(rng, Bool)
return constructorof(N)(T; val=randn(rng, T))
@@ -292,7 +292,7 @@ end
function delete_random_op!(
ex::AbstractExpression{T},
options::AbstractOptions,
- nfeatures::Int,
+ nfeatures::Int;
rng::AbstractRNG=default_rng(),
) where {T<:DATA_TYPE}
tree, context = get_contents_for_mutation(ex, rng)
@@ -304,7 +304,7 @@ end
function delete_random_op!(
tree::AbstractExpressionNode{T},
options::AbstractOptions,
- nfeatures::Int,
+ nfeatures::Int;
rng::AbstractRNG=default_rng(),
) where {T<:DATA_TYPE}
node, parent, side = random_node_and_parent(tree, rng)
@@ -363,7 +363,7 @@ function randomize_tree(
::AbstractExpressionNode{T},
curmaxsize::Int,
options::AbstractOptions,
- nfeatures::Int,
+ nfeatures::Int;
rng::AbstractRNG=default_rng(),
) where {T<:DATA_TYPE}
tree_size_to_generate = rand(rng, 1:curmaxsize)
@@ -375,7 +375,7 @@ function gen_random_tree(
length::Int,
options::AbstractOptions,
nfeatures::Int,
- ::Type{T},
+ ::Type{T};
rng::AbstractRNG=default_rng(),
) where {T<:DATA_TYPE}
# Note that this base tree is just a placeholder; it will be replaced.
@@ -391,7 +391,7 @@ function gen_random_tree_fixed_size(
node_count::Int,
options::AbstractOptions,
nfeatures::Int,
- ::Type{T},
+ ::Type{T};
rng::AbstractRNG=default_rng(),
) where {T<:DATA_TYPE}
tree = make_random_leaf(nfeatures, T, options.node_type, rng, options)
@@ -409,7 +409,7 @@ function gen_random_tree_fixed_size(
end
function crossover_trees(
- ex1::E, ex2::E, rng::AbstractRNG=default_rng()
+ ex1::E, ex2::E; rng::AbstractRNG=default_rng()
) where {T,E<:AbstractExpression{T}}
if ex1 === ex2
error("Attempted to crossover the same expression!")
@@ -424,7 +424,7 @@ end
"""Crossover between two expressions"""
function crossover_trees(
- tree1::N, tree2::N, rng::AbstractRNG=default_rng()
+ tree1::N, tree2::N; rng::AbstractRNG=default_rng()
) where {T,N<:AbstractExpressionNode{T}}
if tree1 === tree2
error("Attempted to crossover the same tree!")
diff --git a/src/OptionsStruct.jl b/src/OptionsStruct.jl
index fa8a0035..c002a775 100644
--- a/src/OptionsStruct.jl
+++ b/src/OptionsStruct.jl
@@ -118,9 +118,11 @@ Controls level of specialization we compile into `Options`.
Overload if needed for custom expression types.
"""
-operator_specialization(
+function operator_specialization(
::Type{O}, ::Type{<:AbstractExpression}
-) where {O<:AbstractOperatorEnum} = O
+) where {O<:AbstractOperatorEnum}
+ return O
+end
@unstable operator_specialization(::Type{<:OperatorEnum}, ::Type{<:AbstractExpression}) =
OperatorEnum
@@ -288,7 +290,7 @@ end
# Return an options struct with concrete operators
type_parameters = O.parameters
fields = Any[:(getfield(options, $(QuoteNode(k)))) for k in fieldnames(O)]
- quote
+ return quote
operators = getfield(options, :operators)
Options{$(type_parameters[1]),typeof(operators),$(type_parameters[3:end]...)}(
$(fields...)
diff --git a/src/ParametricExpression.jl b/src/ParametricExpression.jl
index f98a1de0..5c9958ff 100644
--- a/src/ParametricExpression.jl
+++ b/src/ParametricExpression.jl
@@ -107,7 +107,7 @@ end
function MF.make_random_leaf(
nfeatures::Int,
::Type{T},
- ::Type{N},
+ ::Type{N};
rng::AbstractRNG=default_rng(),
options::Union{AbstractOptions,Nothing}=nothing,
) where {T<:DATA_TYPE,N<:ParametricNode}
@@ -132,7 +132,7 @@ end
function MF.crossover_trees(
ex1::ParametricExpression{T},
- ex2::ParametricExpression{T},
+ ex2::ParametricExpression{T};
rng::AbstractRNG=default_rng(),
) where {T}
tree1 = get_contents(ex1)
@@ -167,7 +167,7 @@ end
function MF.mutate_constant(
ex::ParametricExpression{T},
temperature,
- options::AbstractOptions,
+ options::AbstractOptions;
rng::AbstractRNG=default_rng(),
) where {T<:DATA_TYPE}
if rand(rng, Bool)
diff --git a/src/PopMember.jl b/src/PopMember.jl
index 63cfebfb..2f42ab48 100644
--- a/src/PopMember.jl
+++ b/src/PopMember.jl
@@ -60,9 +60,9 @@ and loss.
function PopMember(
t::AbstractExpression{T},
score::L,
- loss::L,
+ loss::L;
options::Union{AbstractOptions,Nothing}=nothing,
- complexity::Union{Int,Nothing}=nothing;
+ complexity::Union{Int,Nothing}=nothing,
ref::Int=-1,
parent::Int=-1,
deterministic=nothing,
@@ -108,8 +108,8 @@ Automatically compute the score for this tree.
function PopMember(
dataset::Dataset{T,L},
tree::Union{AbstractExpressionNode{T},AbstractExpression{T}},
- options::AbstractOptions,
- complexity::Union{Int,Nothing}=nothing;
+ options::AbstractOptions;
+ complexity::Union{Int,Nothing}=nothing,
ref::Int=-1,
parent::Int=-1,
deterministic=nothing,
diff --git a/src/Population.jl b/src/Population.jl
index 54aabd36..b3c19baa 100644
--- a/src/Population.jl
+++ b/src/Population.jl
@@ -173,7 +173,7 @@ const CACHED_WEIGHTS =
p = options.tournament_selection_p
# Computing the weights for the tournament becomes quite expensive,
return get!(CACHED_WEIGHTS, (n, p)) do
- k = collect(0:(n - 1))
+ k = collect(0:(n-1))
prob_each = p * ((1 - p) .^ k)
return StatsBase.Weights(prob_each, sum(prob_each))
diff --git a/src/Recorder.jl b/src/Recorder.jl
index 171a1f46..2348af36 100644
--- a/src/Recorder.jl
+++ b/src/Recorder.jl
@@ -4,7 +4,7 @@ using ..CoreModule: RecordType
"Assumes that `options` holds the user options::AbstractOptions"
macro recorder(ex)
- quote
+ return quote
if $(esc(:options)).use_recorder
$(esc(ex))
end
diff --git a/src/SearchUtils.jl b/src/SearchUtils.jl
index 23358d9d..f3d5fdca 100644
--- a/src/SearchUtils.jl
+++ b/src/SearchUtils.jl
@@ -262,8 +262,8 @@ macro sr_spawner(expr, kws...)
@assert all(ex -> ex.head == :(=), kws)
@assert any(ex -> ex.args[1] == :parallelism, kws)
@assert any(ex -> ex.args[1] == :worker_idx, kws)
- parallelism = kws[findfirst(ex -> ex.args[1] == :parallelism, kws)::Int].args[2]
- worker_idx = kws[findfirst(ex -> ex.args[1] == :worker_idx, kws)::Int].args[2]
+ parallelism = kws[findfirst(ex -> ex.args[1] == :parallelism, kws) :: Int].args[2]
+ worker_idx = kws[findfirst(ex -> ex.args[1] == :worker_idx, kws) :: Int].args[2]
return quote
if $(parallelism) == :serial
$(expr)
@@ -363,7 +363,7 @@ end
function _check_for_loss_threshold(halls_of_fame, f::F, options::AbstractOptions) where {F}
return all(halls_of_fame) do hof
any(hof.members[hof.exists]) do member
- f(member.loss, compute_complexity(member, options))::Bool
+ return f(member.loss, compute_complexity(member, options))::Bool
end
end
end
@@ -431,7 +431,7 @@ function update_progress_bar!(
dataset::Dataset{T,L},
options::AbstractOptions,
equation_speed::Vector{Float32},
- head_node_occupation::Float64,
+ head_node_occupation::Float64;
parallelism=:serial,
) where {T,L}
equation_strings = string_dominating_pareto_curve(
@@ -604,7 +604,7 @@ function save_to_file(
# Write file twice in case exit in middle of filewrite
for out_file in (output_file, output_file * ".bkup")
open(out_file, "w") do io
- write(io, s)
+ return write(io, s)
end
end
return nothing
diff --git a/src/SymbolicRegression.jl b/src/SymbolicRegression.jl
index 0530dba4..a4911266 100644
--- a/src/SymbolicRegression.jl
+++ b/src/SymbolicRegression.jl
@@ -800,9 +800,9 @@ function _main_search_loop!(
resource_monitor = ResourceMonitor(;
# Storing n times as many monitoring intervals as populations seems like it will
# help get accurate resource estimates:
- max_recordings=options.populations * 100 * nout,
- start_reporting_at=options.populations * 3 * nout,
- window_size=options.populations * 2 * nout,
+ max_recordings=(options.populations * 100 * nout),
+ start_reporting_at=(options.populations * 3 * nout),
+ window_size=(options.populations * 2 * nout),
)
while sum(state.cycles_remaining) > 0
kappa += 1
@@ -1093,7 +1093,7 @@ using ConstructionBase: ConstructionBase as _
include("precompile.jl")
redirect_stdout(devnull) do
redirect_stderr(devnull) do
- do_precompilation(Val(:precompile))
+ return do_precompilation(Val(:precompile))
end
end
diff --git a/src/TemplateExpression.jl b/src/TemplateExpression.jl
index dfc8b59c..fff6e79e 100644
--- a/src/TemplateExpression.jl
+++ b/src/TemplateExpression.jl
@@ -162,8 +162,8 @@ function EB.create_expression(
options::AbstractOptions,
dataset::Dataset{T,L},
::Type{<:AbstractExpressionNode},
- ::Type{E},
- ::Val{embed}=Val(false),
+ ::Type{E};
+ (::Val{embed})=Val(false),
) where {T,L,embed,E<:TemplateExpression}
function_keys = keys(options.expression_options.variable_mapping)
@@ -219,8 +219,8 @@ function DE.string_tree(
end
function DE.eval_tree_array(
tree::TemplateExpression{T},
- cX::AbstractMatrix{T},
- operators::Union{AbstractOperatorEnum,Nothing}=nothing;
+ cX::AbstractMatrix{T};
+ operators::Union{AbstractOperatorEnum,Nothing}=nothing,
kws...,
) where {T}
raw_contents = get_contents(tree)
@@ -294,7 +294,7 @@ end
"""We combine the operators of each inner expression."""
function DE.combine_operators(
- ex::TemplateExpression{T,N}, operators::Union{AbstractOperatorEnum,Nothing}=nothing
+ ex::TemplateExpression{T,N}; operators::Union{AbstractOperatorEnum,Nothing}=nothing
) where {T,N}
raw_contents = get_contents(ex)
function_keys = keys(raw_contents)
@@ -306,7 +306,7 @@ end
"""We simplify each inner expression."""
function DE.simplify_tree!(
- ex::TemplateExpression{T,N}, operators::Union{AbstractOperatorEnum,Nothing}=nothing
+ ex::TemplateExpression{T,N}; operators::Union{AbstractOperatorEnum,Nothing}=nothing
) where {T,N}
raw_contents = get_contents(ex)
function_keys = keys(raw_contents)
@@ -323,7 +323,7 @@ end
function CC.check_constraints(
ex::TemplateExpression,
options::AbstractOptions,
- maxsize::Int,
+ maxsize::Int;
cursize::Union{Int,Nothing}=nothing,
)::Bool
raw_contents = get_contents(ex)
@@ -333,7 +333,7 @@ function CC.check_constraints(
has_invalid_variables = any(keys(raw_contents)) do key
tree = raw_contents[key]
allowed_variables = variable_mapping[key]
- contains_other_features_than(tree, allowed_variables)
+ return contains_other_features_than(tree, allowed_variables)
end
if has_invalid_variables
return false
@@ -354,7 +354,7 @@ function contains_other_features_than(tree::AbstractExpression, features)
end
function contains_other_features_than(tree::AbstractExpressionNode, features)
any(tree) do node
- node.degree == 0 && !node.constant && node.feature ∉ features
+ return node.degree == 0 && !node.constant && node.feature ∉ features
end
end
diff --git a/src/Utils.jl b/src/Utils.jl
index da67bcf4..0f73a648 100644
--- a/src/Utils.jl
+++ b/src/Utils.jl
@@ -95,8 +95,9 @@ const max_ops = 8192
const vals = ntuple(Val, max_ops)
"""Return the bottom k elements of x, and their indices."""
-bottomk_fast(x::AbstractVector{T}, k) where {T} =
- _bottomk_dispatch(x, vals[k])::Tuple{Vector{T},Vector{Int}}
+function bottomk_fast(x::AbstractVector{T}, k) where {T}
+ return _bottomk_dispatch(x, vals[k])::Tuple{Vector{T},Vector{Int}}
+end
function _bottomk_dispatch(x::AbstractVector{T}, ::Val{k}) where {T,k}
if k == 1
@@ -113,7 +114,7 @@ function _bottomk!(x, minval, indmin)
if new_min
minval[end] = x[i]
indmin[end] = i
- for ki in lastindex(minval):-1:(firstindex(minval) + 1)
+ for ki in lastindex(minval):-1:(firstindex(minval)+1)
need_swap = minval[ki] < minval[ki - 1]
if need_swap
minval[ki], minval[ki - 1] = minval[ki - 1], minval[ki]
diff --git a/test/manual_distributed.jl b/test/manual_distributed.jl
index 0d6490c6..e9a9f4e9 100644
--- a/test/manual_distributed.jl
+++ b/test/manual_distributed.jl
@@ -5,12 +5,10 @@ procs = addprocs(2)
using Test, Pkg
project_path = splitdir(Pkg.project().path)[1]
@everywhere procs begin
- Base.MainInclude.eval(
- quote
- using Pkg
- Pkg.activate($$project_path)
- end,
- )
+ Base.MainInclude.eval(quote
+ using Pkg
+ Pkg.activate($$project_path)
+ end)
end
@everywhere using SymbolicRegression
@everywhere _inv(x::Float32)::Float32 = 1.0f0 / x
diff --git a/test/test_dataset.jl b/test/test_dataset.jl
index 50547197..20717f72 100644
--- a/test/test_dataset.jl
+++ b/test/test_dataset.jl
@@ -13,7 +13,7 @@ end
using SymbolicRegression
using DispatchDoctor: allow_unstable
dataset = allow_unstable() do
- Dataset(randn(ComplexF32, 3, 32), randn(ComplexF32, 32); loss_type=Float64)
+ return Dataset(randn(ComplexF32, 3, 32), randn(ComplexF32, 32); loss_type=Float64)
end
@test dataset isa Dataset{ComplexF32,Float64}
end
diff --git a/test/test_derivatives.jl b/test/test_derivatives.jl
index 9615a927..cbc411d0 100644
--- a/test/test_derivatives.jl
+++ b/test/test_derivatives.jl
@@ -135,7 +135,7 @@ function check_tree(
tree::AbstractExpressionNode, node_index::NodeIndex, constant_list::AbstractVector
)
if tree.degree == 0
- (!tree.constant) || tree.val == constant_list[node_index.val::UInt16]
+ (!tree.constant) || tree.val == constant_list[node_index.val:: UInt16]
elseif tree.degree == 1
check_tree(tree.l, node_index.l, constant_list)
else
diff --git a/test/test_expression_derivatives.jl b/test/test_expression_derivatives.jl
index c8cba75a..b8953d5e 100644
--- a/test/test_expression_derivatives.jl
+++ b/test/test_expression_derivatives.jl
@@ -17,7 +17,7 @@
x = @view X[1, :]
y = @view X[2, :]
- sum(i -> x[i] * x[i] - cos(2.5 * y[i]), eachindex(x))
+ return sum(i -> x[i] * x[i] - cos(2.5 * y[i]), eachindex(x))
end
δy_hat = ex'(X)
@@ -28,7 +28,7 @@
x = @view X[1, :]
y = @view X[2, :]
- sum(i -> (x[i] + x[i]) * sin(2.5 + y[i]), eachindex(x))
+ return sum(i -> (x[i] + x[i]) * sin(2.5 + y[i]), eachindex(x))
end
δy2_hat = ex'(X, options2)
@@ -98,7 +98,7 @@ end
X[1, i] * X[1, i] - cos(c[1] * X[2, i] + c[2]) + params[1, classes[i]] for
i in 1:32
]
- sum(abs2, pred .- y) / length(y)
+ return sum(abs2, pred .- y) / length(y)
end
options = Options(;
diff --git a/test/test_mlj.jl b/test/test_mlj.jl
index d2677348..b489fd63 100644
--- a/test/test_mlj.jl
+++ b/test/test_mlj.jl
@@ -102,7 +102,7 @@ end
rng = MersenneTwister(0)
X = (b1=randn(rng, 32), b2=randn(rng, 32))
- Y = (c1=X.b1 .* X.b2, c2=X.b1 .+ X.b2)
+ Y = (c1=(X.b1 .* X.b2), c2=(X.b1 .+ X.b2))
w = ones(32)
model = MultitargetSRRegressor(; niterations=10, stop_kws...)
mach = machine(model, X, Y, w)
@@ -189,7 +189,7 @@ end
# Ensure that the hall of fame is empty:
_, hofs = mach.fitresult.state
foreach(hofs) do hof
- hof.exists .= false
+ return hof.exists .= false
end
mach.report[:fit] = SymbolicRegression.MLJInterfaceModule.full_report(
model, mach.fitresult
diff --git a/test/test_params.jl b/test/test_params.jl
index b74b5801..f72386a0 100644
--- a/test/test_params.jl
+++ b/test/test_params.jl
@@ -77,7 +77,7 @@ test_info(f::F, ::Test.Fail) where {F} = f()
macro quiet(ex)
return quote
redirect_stderr(devnull) do
- $ex
+ return $ex
end
end |> esc
end
diff --git a/test/test_recorder.jl b/test/test_recorder.jl
index 95d7b734..02db0e56 100644
--- a/test/test_recorder.jl
+++ b/test/test_recorder.jl
@@ -25,7 +25,7 @@ hall_of_fame = equation_search(
)
data = open(options.recorder_file, "r") do io
- JSON3.read(io; allow_inf=true)
+ return JSON3.read(io; allow_inf=true)
end
@test haskey(data, :options)
diff --git a/test/test_template_expression.jl b/test/test_template_expression.jl
index 8f44d521..4cef4365 100644
--- a/test/test_template_expression.jl
+++ b/test/test_template_expression.jl
@@ -7,14 +7,14 @@
options = Options(; binary_operators=(+, *, /, -), unary_operators=(sin, cos))
operators = options.operators
variable_names = (i -> "x$i").(1:3)
- x1, x2, x3 =
- (i -> Expression(Node(Float64; feature=i); operators, variable_names)).(1:3)
+ x1, x2, x3 = (i -> Expression(Node(Float64; feature=i); operators, variable_names)).(
+ 1:3
+ )
# For combining expressions to a single expression:
- my_structure(nt::NamedTuple{<:Any,<:Tuple{Vararg{<:AbstractString}}}) =
- "sin($(nt.f)) + $(nt.g)^2"
- my_structure(nt::NamedTuple{<:Any,<:Tuple{Vararg{<:AbstractVector}}}) =
- @. sin(nt.f) + nt.g^2
+ my_structure(nt::NamedTuple{<:Any,<:Tuple{Vararg{<:AbstractString}}}) = "sin($(nt.f)) + $(nt.g)^2"
+ my_structure(nt::NamedTuple{<:Any,<:Tuple{Vararg{<:AbstractVector}}}) = @. sin(nt.f) +
+ nt.g^2
my_structure(nt::NamedTuple{<:Any,<:Tuple{Vararg{<:Expression}}}) =
sin(nt.f) + nt.g * nt.g
@@ -64,14 +64,14 @@ end
operators = OperatorEnum(; binary_operators=(+, *, /, -), unary_operators=(sin, cos))
variable_names = (i -> "x$i").(1:3)
- x1, x2, x3 =
- (i -> Expression(Node(Float64; feature=i); operators, variable_names)).(1:3)
+ x1, x2, x3 = (i -> Expression(Node(Float64; feature=i); operators, variable_names)).(
+ 1:3
+ )
# For combining expressions to a single expression:
- my_structure(nt::NamedTuple{<:Any,<:Tuple{Vararg{<:AbstractString}}}) =
- "sin($(nt.f)) + $(nt.g)^2"
- my_structure(nt::NamedTuple{<:Any,<:Tuple{Vararg{<:AbstractVector}}}) =
- @. sin(nt.f) + nt.g^2
+ my_structure(nt::NamedTuple{<:Any,<:Tuple{Vararg{<:AbstractString}}}) = "sin($(nt.f)) + $(nt.g)^2"
+ my_structure(nt::NamedTuple{<:Any,<:Tuple{Vararg{<:AbstractVector}}}) = @. sin(nt.f) +
+ nt.g^2
my_structure(nt::NamedTuple{<:Any,<:Tuple{Vararg{<:Expression}}}) =
sin(nt.f) + nt.g * nt.g
@@ -101,8 +101,11 @@ end
variable_names = (i -> "x$i").(1:3)
# Create expressions
- x1, x2, x3 =
- (i -> Expression(Node(Float64; feature=i); options.operators, variable_names)).(1:3)
+ x1, x2, x3 = (
+ i -> Expression(Node(Float64; feature=i); options.operators, variable_names)
+ ).(
+ 1:3
+ )
# Test with vector inputs:
nt_vector = NamedTuple{(:f, :g1, :g2, :g3)}((1:3, 4:6, 7:9, 10:12))
@@ -136,8 +139,9 @@ end
operators =
Options(; binary_operators=(+, *, /, -), unary_operators=(sin, cos)).operators
variable_names = (i -> "x$i").(1:3)
- x1, x2, x3 =
- (i -> Expression(Node(Float64; feature=i); operators, variable_names)).(1:3)
+ x1, x2, x3 = (i -> Expression(Node(Float64; feature=i); operators, variable_names)).(
+ 1:3
+ )
my_structure(nt) = nt.f
diff --git a/test/test_units.jl b/test/test_units.jl
index a586f5e3..5dff9a40 100644
--- a/test/test_units.jl
+++ b/test/test_units.jl
@@ -131,15 +131,15 @@ end
# Check that every cos(...) which contains x1 also has complexity
has_cos(tree) =
any(get_tree(tree)) do t
- t.degree == 1 && options.operators.unaops[t.op] == cos
+ return t.degree == 1 && options.operators.unaops[t.op] == cos
end
valid_trees = [
!has_cos(member.tree) || any(
t ->
t.degree == 1 &&
- options.operators.unaops[t.op] == cos &&
- Node(Float64; feature=1) in t &&
- compute_complexity(t, options) > 1,
+ options.operators.unaops[t.op] == cos &&
+ Node(Float64; feature=1) in t &&
+ compute_complexity(t, options) > 1,
get_tree(member.tree),
) for member in dominating
]
@@ -243,10 +243,10 @@ end
best = first(filter(m::PopMember -> m.loss < 1e-7, dominating)).tree
@test compute_complexity(best, options2) == 6
@test any(get_tree(best)) do t
- t.degree == 1 && options2.operators.unaops[t.op] == cbrt
+ return t.degree == 1 && options2.operators.unaops[t.op] == cbrt
end
@test any(get_tree(best)) do t
- t.degree == 1 && options2.operators.unaops[t.op] == safe_sqrt
+ return t.degree == 1 && options2.operators.unaops[t.op] == safe_sqrt
end
@testset "With MLJ" begin
@@ -268,10 +268,10 @@ end
best_idx = findfirst(report.losses .< 1e-7)::Int
@test report.complexities[best_idx] <= 6
@test any(get_tree(report.equations[best_idx])) do t
- t.degree == 1 && t.op == 2 # cbrt
+ return t.degree == 1 && t.op == 2 # cbrt
end
@test any(get_tree(report.equations[best_idx])) do t
- t.degree == 1 && t.op == 1 # safe_sqrt
+ return t.degree == 1 && t.op == 1 # safe_sqrt
end
# Prediction should have same units:
diff --git a/test/test_utils.jl b/test/test_utils.jl
index 67ceb0dc..2433476a 100644
--- a/test/test_utils.jl
+++ b/test/test_utils.jl
@@ -9,8 +9,8 @@ function simple_bottomk(x, k)
end
array_options = [
- (n=n, seed=seed, T=T) for n in (1, 5, 20, 50, 100, 1000), seed in 1:10,
- T in (Float32, Float64, Int)
+ (n=n, seed=seed, T=T) for
+ n in (1, 5, 20, 50, 100, 1000), seed in 1:10, T in (Float32, Float64, Int)
]
@testset "argmin_fast" begin
Metadata
Assignees
Labels
No labels