<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif;" dir="ltr">
<p>Dear All,</p>
<p><br>
</p>
<p>I'm trying to fine tune a forward model by first constraining the dipoles to the gray matter and then selecting only a subset of structures. It looks as though I need to write a custom script for this, which I have and the commented code is included below.
 Once I generate the lead field with this code I add it to the cfg structure for ft_sourceanalysis and proceed as usual. </p>
<p><br>
</p>
<p>The error occurs when I attempt to interpolate the power to a structural MRI. ft_sourceinterpolate(cfg,sources,mri) - cfg.downsample=10; cfg.parameter='pow' - and 'mri' is FT's template structural scan. Calling ft_sourceinterpolate with sources generated
 using my custom forward model produces this error:</p>
<p><br>
</p>
<p>Error using interpn (line 153)</p>
<p>Wrong number of input arguments.</p>
<p><br>
</p>
<p>Error in ft_sourceinterpolate>my_interpn (line 693)</p>
<p>  av(sel) = interpn(fv, ax(sel), ay(sel), az(sel), interpmethod);</p>
<p><br>
</p>
<p>Error in ft_sourceinterpolate (line 535)</p>
<p>    interp.inside( sel) = my_interpn(double(functional.inside), ax(sel), ay(sel), az(sel), 'nearest',</p>
<p>    cfg.feedback);</p>
<p><br>
</p>
<p>The only hint I've found is that for some reason the source structure returns for this analysis doesn't contain the field '.dim' but I added it manually. Once that's done, the setup looks identical to data returned using a automatically generated grid so
 I must be missing something. </p>
<p><br>
</p>
<p>Thanks in advance if anyone can suggest where to look for the bug.</p>
<p><br>
</p>
<p>Alexander</p>
<p><br>
</p>
<p>Code:</p>
<p><br>
</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier;">
<span style="color: #0433ff">function</span> [lf] = fT_constrainFM(cfg)</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; min-height: 12px;">
 </p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45);">
%Creates a constrained forward model for source analysis in field trip. The</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45);">
%grid is constrained to a surface defined by two maps. One</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45);">
%restrains the dipoles to gray matter and the second is a list of labels corresponding to</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45);">
%ROIs within the GM. </p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45); min-height: 12px;">
 </p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45);">
%Example: Constrain grey matter to cortical sites of interest.</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45); min-height: 12px;">
 </p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45);">
%cfg.roi = labelsNDL; %A cell array of strings with the name of each ROI</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45);">
%cfg.atlas = aal; %aal is a variable returned by ft_readatlas</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45);">
%cfg.inputcoord = 'mni'; %Choose coordinates</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45);">
%cfg.mri = mri; %A template MRI or subject sMRI</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45);">
%cfg.thres = 0.95; %Threshold for probabilistic masks</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45);">
%cfg.lf = C; %C is a structure with fields *.elec and *.headmodel. See</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45);">
%ft_prepareleadfield</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45);">
%[lf] = fT_contrainFM(cfg)</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45); min-height: 12px;">
 </p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45); min-height: 12px;">
 </p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier;">
mri = cfg.mri;</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier;">
cfgLF = cfg.lf;</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier;">
thres = cfg.thres;</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier;">
cfg = rmfield(cfg,{<span style="color: #b245f3">'mri'</span>,<span style="color: #b245f3">'thres'</span>,<span style="color: #b245f3">'lf'</span>});</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45);">
%Get the masks</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier;">
seg = ft_volumesegment([],mri);</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier;">
tissue = logical(seg.gray>=thres);</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier;">
roiMask = logical(ft_volumelookup(cfg,mri));</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45);">
<span style="color: #000000">voxInds = tissue&roiMask; </span>%dipole placement locations</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier;">
[rows,cols,pages] = ind2sub(size(roiMask),find(voxInds));</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier;">
cfgLF.pos = zeros(length(rows),3);</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45);">
%adjustment vaues to move the origin</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier;">
rowAd = (size(roiMask,1)-1)/2;</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier;">
colAd = (size(roiMask,2)-1)/2;</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier;">
pageAd = (size(roiMask,3)-1)/2;</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(37, 153, 45);">
%collect dipole positions into an Nx3 matrix</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier;">
<span style="color: #0433ff">for</span> posInd = 1:length(rows)</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier;">
    cfgLF.pos(posInd,:) = [rows(posInd)-rowAd,cols(posInd)-colAd,pages(posInd)-pageAd]';</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; color: rgb(4, 51, 255);">
end</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier;">
lf = ft_prepare_leadfield(cfgLF);</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 10px; line-height: normal; font-family: Courier; min-height: 12px;">
 </p>
<p></p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 12px; line-height: normal; font-family: Courier; min-height: 14px;">
<br>
</p>
<p><br>
</p>
<div id="Signature">
<div id="divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; background-color:#FFFFFF; font-family:Calibri,Arial,Helvetica,sans-serif">
<p>Alexander Nakhnikian, Ph.D.</p>
<p>Research Investigator</p>
<p><span style="font-size:12pt">VA Boston Healthcare System</span><br>
</p>
<p>Instructor in Psychiatry, Harvard Medical School</p>
</div>
</div>
</div>
</body>
</html>