> To me ProductFlattenMapper name suggests that there is a product done on flattened data... definitely not something about (feature) attributes.

It's a FlattenMapper (that flattens the data) using a product [*] over feature attributes. So the more 'correct' name would be FeatureAttributesProductFlattenMapper. But that is sooo long....

[*] by product I mean something like cartesian set product but then applied to lists. For example if as, bs and cs are lists with lengths na, nb, nc, their product would be abc=[(a,b,c) for a in as for b in bs for c in cs] with nabc=na*nb*nc.  

> good point about 'slicing' loosing it... unless we agree upon the name and add necessary handling to the Dataset's getitem

isn't that very messy?

> trying to encapsulate the relevant information within the dataset itself so I/O could load it all up while then mapper could make use of that without requiring user to keep track of all the pieces of the puzzle. But anyways this probably would require more of thought/work to do it right... so later

Currently we don't do that in the very popular use case fmri_dataset, do we? My understanding is that this function returns a dataset that has already a mapper attached to it, and I/O then load the dataset+mapper in one go. For ProductFlattenMapper the same should work, no [note: just added I/O support + unit test for h5save and h5load]?