[pymvpa] selecting features by mask

Michael Hanke michael.hanke at gmail.com
Fri Aug 28 10:43:50 UTC 2009


Hi,

On Thu, Aug 27, 2009 at 09:02:29PM -0400, John Clithero wrote:
> Hi Michael,
> 
> Thanks. I took that and just made one (very) minor change --
> "new_mask.data" instead of "new_mask", for ndarray -- and it appears
> to have worked perfectly!
> Hopefully this is what you had in mind:


Yes, something like that. Glad it works.


Michael

> ##wb data##
> dataset_wb = NiftiDataset((wb_file),
>        labels=attr.labels,
>        chunks=attr.chunks,
>        mask=os.path.join(roidir,'wb.nii.gz'))
> ##New mask##
> new_mask=NiftiImage(os.path.join(roidir,'vmpfc.nii.gz'))
> comb_mask = N.logical_and(new_mask.data != 0,
>                                   dataset_wb.mapper.getMask(copy=False) != 0)
> fmask = dataset_wb.mapper.forward( comb_mask != 0 )
> dataset_vmpfc=dataset_wb.selectFeatures(fmask.nonzero()[0], plain=True)
> 
> Cheers,
> John
> 
> On Thu, Aug 27, 2009 at 8:09 PM, Michael Hanke<michael.hanke at gmail.com> wrote:
> > Hi,
> >
> > On Thu, Aug 27, 2009 at 07:22:03PM -0400, John Clithero wrote:
> >> Hi all,
> >>
> >> Another relatively simple question (I think).
> >> I can load/create a dataset as follows:
> >>
> >> dataset_wb = NiftiDataset((wb_file),
> >>       labels=attr.labels,
> >>       chunks=attr.chunks,
> >>       mask=os.path.join(roidir,'wb.nii.gz'))
> >>
> >> And then, after this, I want to use SelectFeatures based on a mask I
> >> have to run some additional classifiers on a subset of the features
> >> using a new mask, say:
> >>
> >> roi_mask=os.path.join(roidir,'vmpfc.nii.gz')
> >>
> >> It is advantageous for me to create the dataset_wb as wholebrain using
> >> the 'wb.nii.gz' mask and then after analyses, use this other mask on
> >> the dataset (I want to detrend etc. at the whole-brain, not the ROI
> >> level).
> >> It seems like something that used to exist,
> >> "selectFeaturesByMask(mask, plain=False)"
> >> would have been perfect for this. It seems that now, based on a post
> >> earlier, a list of Ids from my roi_mask is needed for selectFeatures.
> >>
> >> My question then, is given all of my fMRI data are in the same 3D
> >> space (or, each timepoint is in the same 3D space as my masks), there
> >> must be some way to use getOutId to get a list of Ids (say, Z) from
> >> roi_mask to plug into
> >>
> >> new_dataset_roi=dataset_wb.selectFeatures(Z).
> >
> > Congrats, you fell into a pit we digged out for construction works and
> > never closed ;-)
> >
> > The quickest way for you is probably to take a look at
> > MaskedDataset.selectFeaturesByMask(). That is a 3-liner that should to
> > what you need. It should be relatively straightforward to apply that to
> > any NiftiDataset without having to subclass it.
> >
> >
> > HTH,
> >
> > Michael
> >
> > --
> > GPG key:  1024D/3144BE0F Michael Hanke
> > http://apsy.gse.uni-magdeburg.de/hanke
> >
> > _______________________________________________
> > Pkg-ExpPsy-PyMVPA mailing list
> > Pkg-ExpPsy-PyMVPA at lists.alioth.debian.org
> > http://lists.alioth.debian.org/mailman/listinfo/pkg-exppsy-pymvpa
> >
> 
> _______________________________________________
> Pkg-ExpPsy-PyMVPA mailing list
> Pkg-ExpPsy-PyMVPA at lists.alioth.debian.org
> http://lists.alioth.debian.org/mailman/listinfo/pkg-exppsy-pymvpa

-- 
GPG key:  1024D/3144BE0F Michael Hanke
http://apsy.gse.uni-magdeburg.de/hanke



More information about the Pkg-ExpPsy-PyMVPA mailing list