- This topic has 2 replies, 2 voices, and was last updated 7 years ago by
Duzzo.
Viewing 1 reply thread
-
AuthorPosts
-
-
October 9, 2018 at 9:54 am #1524
hi Davide –
We don’t have tools for that as part of the package, but if you are familiar with Matlab or C++ you can calculate these lengths pretty easily. If you save out the curves as a .dfc file, you can then read them with one of our file readers.
You can find a Matlab function for reading the dfc file at the bottom of this page: http://brainsuite.org/formats/dfc/. (I think it is out
function [curves,hdr,xml]=readdfc(filename) % READDFC reads a BrainSuite curve file. % % Author : David Shattuck, UCLA Brain Mapping Center fid=fopen(filename,'rb'); if (fid<0) error(['unable to open file ' filename(:)']); end; hdr.magic=char(fread(fid,8,'char')'); hdr.version=fread(fid,4,'uchar'); hdr.headerSize=fread(fid,1,'uint32'); hdr.dataStart=fread(fid,1,'uint32'); hdr.metadataOffset=fread(fid,1,'int32'); hdr.subjectDataOffset=fread(fid,1,'int32'); hdr.nCurves=fread(fid,1,'int32'); fseek(fid,hdr.metadataOffset,'bof'); xml=char(fread(fid,hdr.dataStart-hdr.metadataOffset,'char')'); curves=cell(hdr.nCurves,1); fseek(fid,hdr.dataStart,'bof'); for i=1:hdr.nCurves; nPoints=fread(fid,1,'uint32'); curves{i}=fread(fid,[3 nPoints],'float32')'; end; fclose(fid);The curves are represented as a series of points in mm coordinates, so you can compute the path lengths very easily:
function curvelength=curvelength(curve) curvelength=sum(sqrt(sum((curve(2:size(curve,1),:)-curve(1:size(curve,1)-1,:)).^2,2)));If you then read in a dfc, you can easily compute the length of any of the curves:
curveset=readdfc('/Applications/BrainSuite18a/svreg/BCI-DNI_brain_atlas/BCI-DNI_brain.right.dfc'); curvelength(curveset{1})Let us know if that does what you need.
thanks,
David Shattuck -
October 9, 2018 at 2:24 pm #1525
Thank you David for your answer! That’s exactly what I was looking for!
Best
Davide
-
-
AuthorPosts
Viewing 1 reply thread
- You must be logged in to reply to this topic.