@@ -38,7 +38,6 @@ FilterModifier(columns::Symbol...) = FilterModifier([columns...])
3838function apply! (modifier:: FilterModifier , data:: DataFrame , event:: Int )
3939 columns = Symbol[]
4040 for col in modifier. columns
41- # TODO : Não ficou boa essa checagem.
4241 if ! (col in propertynames (data))
4342 # TODO : Colocar para avisar somente uma única vez do problema.
4443 @warn " O stream não possui a $col "
@@ -50,6 +49,7 @@ function apply!(modifier::FilterModifier, data::DataFrame, event::Int)
5049 select! (data, columns)
5150 return nothing
5251end
52+
5353struct DriftModifier <: Modifier
5454 column:: Symbol
5555 filter:: Function
@@ -61,4 +61,16 @@ function apply!(modifier::DriftModifier, data::DataFrame, event::Int)
6161 data[elements, modifier. column] = data[elements, modifier. column] .+ modifier. drift (event)
6262
6363 return nothing
64+ end
65+
66+ sigmoid (x; c1 = 1.0 , c2 = 0.0 ) = 1 / (1 + ℯ ^ (- c1 * (x - c2)))
67+
68+ function IncrementalVirtualDriftModifier (vetor:: Dict{Symbol, T} , filter:: Function ; c1 = 1.0 , c2 = 0.0 ):: Modifiers where T <: Number
69+ modifiers = EasyStream. Modifier[]
70+ for (column, value) in vetor
71+ drift = DriftModifier (column, filter, x -> value .* sigmoid (x; c1 = c1, c2 = c2))
72+ push! (modifiers, drift)
73+ end
74+
75+ return Modifiers (modifiers)
6476end
0 commit comments