Public

map a numerical range

Options
Registered Posts: 3 ✭✭✭

Hello everybody,

I would need your ideas for an advanced use of the "Formula" process

the needed:

in a "prepare receipt", and more particularly in a "Formula" process, I would have liked to be able to create a custom function.

Is it possible ?

Why this ?

==> I need to create a special math function, which maps one numeric range to another numeric range, similar to Arduino's MAP function for those who know)

Thank you

Operating system used: Windows - Linux Subsystem

• Dataiker, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 1,209 Dataiker
Options

Hi,

If you are referring to something like.

https://www.arduino.cc/reference/en/language/functions/math/map/

One option is using python functions are available directly in the prepare recipe.

The columns for x, in_min in_max , out_min and out_max need to be replaced with the actual column names in your dataset instead of of "num_1" , "num_2" in the code below.

```def _map(x, in_min, in_max, out_min, out_max):
return int((x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)

def process(row):

y = _map(int(row["num_1"]),int(row["num_2"]), int(row["num_3"]), int(row["num_4"]), int(row["num_5"]))
return (y)
```

. Let me know if that helps or if you are looking for something else.

This can also be done with a DSS formula in the above example it would be :

(num_1 - num_2) * (num_5 - num_4)/ (num_3 - num_2) + num_4

• Registered Posts: 3 ✭✭✭
Options

AlexT, your solution was the right one.
In fact, I had already written the whole formula with the "FORMULA" process. So my idea was to create an additional "MAP" function to use with "Formula".

But in the end, I completely rewrote my formula with the Python process, which works fine for him.

Thanks for the help

Help me…