> However, in the present state, there is no way to pass masked data to
> NiftiMapsMasker, meaning that self.components_ will have to be unmasked
> at some point.

How about short-circuiting this object and using it's internals rather
than the full object (i.e. a function that does the work rather than the
method)?

> Another performance issue: it seems that components_img_ is computed
> twice in some cases. CanICA.fit calls MultiPCA.fit, and both call
> masker_.inverse_transform. This precise problem can be solved by doing
> lazy evaluation.

But also by better organisation of the code, which we should attempt.