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.