[pymvpa] Zscore creates nan in dataset

Yaroslav Halchenko debian at onerussian.com
Fri Jan 30 17:44:36 UTC 2015


On Fri, 30 Jan 2015, gal star wrote:

>    Hello,
>    Unfortunately it did not remove the nan's vectors.
>    I've also tried to remove those specific scans from the samples list,
>    It still created nan vectors out of different scans.
>    Do you have any idea what can i do to remove/avoid those from the dataset?

we "recently" added remove_nonfinite_features function
https://github.com/PyMVPA/PyMVPA/blob/HEAD/mvpa2/datasets/miscfx.py#L58
which is just that:

def remove_nonfinite_features(dataset):
    """Returns a new dataset with all non-finite (NaN,Inf) features removed

    Removes all feature for which not all values are finite

    Parameters
    ----------
    dataset : Dataset
        Input dataset

    Returns
    -------
    finite_dataset: Dataset
        Dataset based on data form the input, but only the features
        for which all samples are finite are kept.
    """

    return dataset[:, np.all(np.isfinite(dataset.samples),axis=0)]

so just do

fds = remove_invariant_features(fds)
fds = remove_nonfinite_features(fds)  # shouldn't even be needed unless you had NaNs from the beginning somehow

>    My code looks like so:
>    attr = A SampleAttributes (os.path.join(source, map_name))
>    fds = fmri_dataset(samples=os.path.join(source,map_name),
>    targets=attr.targets, chunks=attr.chunks)
>    int = numpy.array([l in ['221','211','23'] for l in fds.sa.targets])
>    fds = fds[int]
>    zscore(fds, param_est=('targets',['23']), chunks_attr='chunks')
-- 
Yaroslav O. Halchenko, Ph.D.
http://neuro.debian.net http://www.pymvpa.org http://www.fail2ban.org
Research Scientist,            Psychological and Brain Sciences Dept.
Dartmouth College, 419 Moore Hall, Hinman Box 6207, Hanover, NH 03755
Phone: +1 (603) 646-9834                       Fax: +1 (603) 646-1419
WWW:   http://www.linkedin.com/in/yarik        



More information about the Pkg-ExpPsy-PyMVPA mailing list