On 09/19/2012 01:17 PM, Katie Bettencourt wrote:
I am still having some trouble with this. As a test, used mri_label2label to convert a label I had in freesurfer to the fsaverage brain, as I couldn't get it to covert just to talairach (see my last email, included below as well). Then I removed all the vertex numbers and replaced them with -1. I could not then use mri_label2label to convert using --regmethod surface (gave me a error: there is a vertex in the label that cannot be match to the surface...) and when I tried the volume method it ran, but then loading the label into tksurfer showed that it was really incorrect (several disjointed blobs across the brain instead of one focus label). However, if I first loaded the label file with the -1 for the vertices into the fsaverage brain, it came up correctly, if I then saved it again, and used mri_label2label and --regmethod surface to convert it back to my original subject brain, it ended up being very close to the original label it was made from.

So, my questions are:
1). Should I be using the fsaverage brain for the talairach coordinates I get from Brain Voyager, even though my understanding was that the fsaverage brain was MNI not talairach?
It won't be perfect, but it is the closest we have. You can try converting them to MNI305 through Matt Brett's transform. matlab code attached. This still won't be perfect.
2). Do I need to bring the label up on the fsaverage brain and save it before converting it to the appropriate subject? Or should it work without this intermediate step? 3). What is the difference between regmethod volume and regmethod surface and why does this cause me to get very different results? Is there something I need to do to the volume method ones to display them on the surface?
Use the "paint" option to mri_label2label, something like
mri_label2label --s subject --hemi lh --regmethod surface --srclabel your.label --trglabel lh.your.label --paint 2 The "--paint 2" indicates that a label has to be within 2mm of a vertex to be assigned to the vertex. You may need to play with this a bit.

doug


Thanks,

Katie



On Tue, Sep 18, 2012 at 12:48 PM, Katie Bettencourt <k...@wjh.harvard.edu <mailto:k...@wjh.harvard.edu>> wrote:

    So I was looking into mri_label2label and it suggests you can map
    a label to talairach by using --trgsubject talairach, which I
    thought may be good to do as a test, creating a label I already
    have in talairach space, then doing the back transformation you
    suggested.  However, when I tried to do this, I ran across 2
    problems.  1) it appears you can't register a subject label to
    talairach in surface space (ie. --regmethod surface), is this
    correct? and 2) when I tried to do it in volume, it gave me the
    error: "Cannot find subject talairach in <my subject directory>".
     I have the fsaverage brain in there, but is there a talairach
    brain I need to download as well?

    Katie

    On Mon, Sep 17, 2012 at 1:25 PM, Bruce Fischl
    <fis...@nmr.mgh.harvard.edu <mailto:fis...@nmr.mgh.harvard.edu>>
    wrote:

        Hi Katie

        if you set the vertex numbers to -1 then tksurfer will search
        for the closest vertex to each point and fill them in. So
        start with a list of tal points (and -1 for the vertex), then
        use mri_label2label to map them to the individual subject
        space and visualize it in tkmedit or freeview to make sure it
        is right. Then load it into tksurfer, which will assign vertex
        #s to each point, after which you can save the label again to
        make them permanent.


        cheers
        Bruce


         On Mon, 17 Sep 2012, Katie Bettencourt wrote:

            Hi Bruce,
            So my understanding of the label file is that it has a
            list of the # of
            vertices in the label, then each line is the vertex number
            followed by the
            RAS coordinates and then some 5th column.  I think you are
            saying that I
            could use my text file of talairach coordinates (with each
            line as a new
            coordinate) like a label file for the talairach brain (is
            this different
            from the fsaverage brain?).  However, I'm not exactly how
            to create that
            sort of file from a list of talairach points since I don't
            have the vertex
            number for each coordinate.  Am I misunderstanding something?

            Is there someway to do some sort of scripting where I
            create a label from
            the vertex selected by select_talairach_point using the
            first talairach
            point I have and then repeatedly use select_talairach
            point to load each
            talairach point onto a subject, then add that point to the
            label file?  I
            don't quite understand all the tcl commands to understand
            if this is
            possible.

            In then end, our issue is that we seem to be getting
            different results
            between freesurfer and brain voyager from identical data
            analyzed in a ROI
            defined off of identical data in identical subjects (ie.
            we take data set 1,
            define a ROI in FS and BV, then take data set 2, analyzed
            the response in
            the ROI, and get different results).  We aren't sure why
            we are getting
            different results and so wanted to check on where the ROIs
            were located in
            relation to each other.  Since there doesn't seem to be a
            way to load BV
            ROIs into FS, we were trying to work around it by using
            what we can get out
            of BV that should be transferrable, the talairach
            coordinates).
             Unfortunately, we have to cross platforms like this
            because historically
            the data has been done in BV and has produced consistent,
            published results,
            but we need to use FS's retinotopic analysis capabilities
            for future work,
            but aren't getting the same results on these ROIs and
            can't figure out why,
            or even begin to understand it until we can examine
            whether we are in the
            same brain space for our ROIs.

            Thanks,

            Katie

            On Mon, Sep 17, 2012 at 12:14 PM, Bruce Fischl
            <fis...@nmr.mgh.harvard.edu
            <mailto:fis...@nmr.mgh.harvard.edu>>
            wrote:
                  Hi Katie

                  you might be able to create a label file with the
            tal coords,
                  then use mri_label2label to map it from tal to the
            individual
                  subject, then load it in tksurfer which will map it
            to the
                  surface. It will probably look spotty though.

                  cheers
                  Bruce


                  On Mon, 17 Sep 2012, Katie Bettencourt wrote:

                        I'm still trying to figure out a way to display an
                        ROI made elsewhere on my
                        freesurfer data.  I can get all ROI I need in
                        freesurfer in talairach points
                        (ie. a list of talairach points that cover the
                        entirety of the ROI space),
                        but as far as I can see, I can only load one
                        talairach point at a time
                        (using select_talairach_point), and then the last
                        point is lost with each
                        subsequent call.
                        What I really want to do is select a region on the
                        surface that covers a set
                        of talairach coordinates (instead of say, dilating
                        from 1 talairach point).
                          Is there any way to do this?  Should I use
                        something like the talairach
                        transform file to change it into surface
            coordinates
                        and load those like a
                        label somehow, or is there some other way?

                        Katie




            The information in this e-mail is intended only for the
            person to whom
            it is
            addressed. If you believe this e-mail was sent to you in
            error and the
            e-mail
            contains patient information, please contact the Partners
            Compliance
            HelpLine at
            http://www.partners.org/complianceline . If the e-mail was
            sent to you
            in error
            but does not contain patient information, please contact
            the sender
            and properly
            dispose of the e-mail.






--
Douglas N. Greve, Ph.D.
MGH-NMR Center
gr...@nmr.mgh.harvard.edu
Phone Number: 617-724-2358
Fax: 617-726-7422

Bugs: surfer.nmr.mgh.harvard.edu/fswiki/BugReporting
FileDrop: www.nmr.mgh.harvard.edu/facility/filedrop/index.html

function outpoints = tal2mni(inpoints)
% Converts coordinates from Talairach coordinates to best guess
%  of equivalent MNI brain coordinates
%
% FORMAT outpoints = tal2mni(inpoints)
%
% inpoints is N by xyz or xyz by N matrix of coordinates
%  (N being the number of points)
%
% outpoints is the coordinate matrix with Talairach points
%

dimdim = find(size(inpoints) == 3);
if isempty(dimdim)
  error('input must be a N by 3 or 3 by N matrix')
end
if dimdim == 2
  inpoints = inpoints'; %'
end

N = size(inpoints,2);
inpoints = [inpoints; ones(1,N)];
% inpoints is now 4 x N %

% MNI2Tal Transformation matrices, different zooms above/below AC
TAbove = spm_matrix([0 0 0 0.05 0 0 0.99 0.97 0.92]);
TBelow = spm_matrix([0 0 0 0.05 0 0 0.99 0.97 0.84]);

% Find mni z coordinate at which talairach z = 0 %
[tmp1 tmp2 mniz0] = mni2tal([0 0 0]);

indBelow = find(inpoints(3,:) <  0);  % Below AC/PC
indAbove = find(inpoints(3,:) >= 0);  % Below AC/PC

outpoints = zeros(size(inpoints));
outpoints(:,indBelow) = TBelow * inpoints(:,indBelow);
outpoints(:,indAbove) = TAbove * inpoints(:,indAbove);
outpoints = outpoints(1:3,:);

if dimdim == 2
  outpoints = outpoints'; %'
end

_______________________________________________
Freesurfer mailing list
Freesurfer@nmr.mgh.harvard.edu
https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer


The information in this e-mail is intended only for the person to whom it is
addressed. If you believe this e-mail was sent to you in error and the e-mail
contains patient information, please contact the Partners Compliance HelpLine at
http://www.partners.org/complianceline . If the e-mail was sent to you in error
but does not contain patient information, please contact the sender and properly
dispose of the e-mail.

Reply via email to