README-work

Data::Transformers

Raku package with algorithms for transforming and smoothing data. Provides the subs:

  • DONE accumulate

  • DONE array-pad

  • TODO array-filter

  • DONE center-array

  • TODO clip

  • TODO difference

  • TODO list-convolve

  • TODO list-correlate

  • TODO moving-average

  • TODO moving-map

  • TODO moving-median

  • DONE rescale

  • TODO standardize

Installation

From Zef ecosystem:

zef install Data::Tranformers

From GitHub:

zef install https://github.com/antononcube/Raku-Data-Tranformers.git

accumulate

Cumulative sums:

use Data::Transformers;

accumulate([3, 8, 4, 11, 9, 2]);

Cumulative sums for a list of lists of numbers:

accumulate((1...10).rotor(2))

Applications

Triangular numbers:

(1..10) ==> accumulate

Random walk:

use Text::Plot;
use Data::Generators;

text-list-plot(accumulate(random-real([-1, 1], 100)))

array-pad

Pad the edges with 0s:

array-pad([1,2,3], 1)

Specify different padding on each side:

array-pad(1..3, [2, 4])

Pad the edges of a matrix:

.say for array-pad([[1, 2], [3, 4]], 2)

Pad according to a named rule:

array-pad(1..3, 2, "Fixed")

Pad only on the right:

array-pad(1..3, [0, 2])

Remove elements from each edge of an array:

array-pad(1..10, -2)

This is equivalent to dropping the first two elements:

array-pad([1, 2, 3, 4], [-2, 0]);

This is equivalent to dropping the last two elements:

array-pad([1, 2, 3, 4], [0, -2]);

Named rules

Pad by repeating periodically:

array-pad(1..6, 4, "Periodic")
array-pad(1..3, 4, "Periodic")

Pad with the reversal of the list:

array-pad(1..3, 4, "Reversed")

Pad with the negative of the reversal:

array-pad(1..3, 4, "ReversedNegation")

Pad by reflecting about the edge:

array-pad(1..3, 4, "Reflected")

center-array

Create a list of length 5 with a single 1 at the center:

center-array(5)

Create a list of length 5 with the specified element at the center:

center-array('x', 5)

Place an element at the center of a 2D array:

.say for center-array('x', [5, 5])

Center a list in a 2D array:

.say for center-array(1..3, [5, 5])

The default padding is zero:

center-array([1, 2, 3], 6)

rescale

Rescale to run from 0 to 1 over the range -10 to 10:

rescale(2.5, [-10, 10])
rescale(12.5, [-10, 10])
rescale(3, [-9, 7], [11, 28])

Complex number inputs:

rescale(1 + 2i, [0, 5])
rescale(1 + 2i, [0, 1 + 1i])

Rescale so that all the list elements run from 0 to 1:

rescale([-.7, .5, 1.2, 5.6, 1.8])

clip

Not implemented yet.

Data::Transformers v0.0.2

Raku package with algorithms for transforming and smoothing data.

Authors

  • Anton Antonov

License

Artistic-2.0

Dependencies

Data::TypeSystem

Test Dependencies

Provides

  • Data::Transformers
  • Data::Transformers::Arrays
  • Data::Transformers::Rescale

The Camelia image is copyright 2009 by Larry Wall. "Raku" is a trademark of the Yet Another Society. All rights reserved.

Built with Podlite — the markup and publishing tools behind this site.