Hi Josh,

Thanks for the sample script.  With a few modifications to the variable
definitions I got your script to work. However, my stats file looks like
this:

# Table of FreeSurfer cortical parcellation anatomical statistics
#
# CreationTime 2012/05/10-17:03:40-GMT
# generating_program mris_anatomical_stats
# cvs_version $Id: mris_anatomical_stats.c,v 1.72 2011/03/02 00:04:26 nicks
Exp $
# mrisurf.c-cvs_version $Id: mrisurf.c,v 1.693.2.2 2011/04/27 19:21:05
nicks Exp $
# cmdline mris_anatomical_stats -l
051012_thickness_halluc_fwhm10_lh.fusiform.label -t lh.thickness -b -f
1014/stats/*051012_thickness_halluc_fwhm10_lh.fusiform.stats* 1014 lh
# sysname  Darwin
# hostname skip-macpro-lab.rush.edu
# machine  i386
# user     skip
#
# SUBJECTS_DIR
/Users/skip/Desktop/harlow_mount/JenG/ResearchAssistant/data/freesurfer_v5.1
# anatomy_type surface
# subjectname 1014
# hemi lh
# AnnotationFile *051012_thickness_halluc_fwhm10_lh.fusiform.label*
# AnnotationFileTimeStamp 2012/05/10 10:18:26
# Measure Cortex, NumVert, Number of Vertices, 119152, unitless
# Measure Cortex, WhiteSurfArea, White Surface Total Area, 76575.4, mm^2
# NTableCols 10
# TableCol  1 ColHeader StructName
# TableCol  1 FieldName Structure Name
# TableCol  1 Units     NA
# TableCol  2 ColHeader NumVert
# TableCol  2 FieldName Number of Vertices
# TableCol  2 Units     unitless
# TableCol  3 ColHeader SurfArea
# TableCol  3 FieldName Surface Area
# TableCol  3 Units     mm^2
# TableCol  4 ColHeader GrayVol
# TableCol  4 FieldName Gray Matter Volume
# TableCol  4 Units     mm^3
# TableCol  5 ColHeader ThickAvg
# TableCol  5 FieldName Average Thickness
# TableCol  5 Units     mm
# TableCol  6 ColHeader ThickStd
# TableCol  6 FieldName Thickness StdDev
# TableCol  6 Units     mm
# TableCol  7 ColHeader MeanCurv
# TableCol  7 FieldName Integrated Rectified Mean Curvature
# TableCol  7 Units     mm^-1
# TableCol  8 ColHeader GausCurv
# TableCol  8 FieldName Integrated Rectified Gaussian Curvature
# TableCol  8 Units     mm^-2
# TableCol  9 ColHeader  FoldInd
# TableCol  9 FieldName  Folding Index
# TableCol  9 Units      unitless
# TableCol 10 ColHeader CurvInd
# TableCol 10 FieldName Intrinsic Curvature Index
# TableCol 10 Units     unitless
# ColHeaders StructName NumVert SurfArea GrayVol ThickAvg ThickStd MeanCurv
GausCurv FoldInd CurvInd
*051012_thickness_halluc_fwhm10_lh.fusiform.label*   85     76    435
 3.697 0.350     0.325     0.129        6     0.5


I want to concatenate the last line for each subject, but since the string
shows up 3 times in the stat file, I get more output info than I need. Is
there a way to echo a line in the script only (using grep or some other
command)? In other words, how can I only extract the last line from the
stats file?

Thanks,

Vy

On Thu, May 17, 2012 at 5:32 PM, Joshua Lee <jki...@ucdavis.edu> wrote:

>  Here is a little script I wrote. It isn't very refined, and can be
> improved. It is also attached. It references a file you muct make in which
> you put all your subject names, one on each line of the text file like this:
>
> sub001
> sub002
> sub003
> ...
>
> Here is the script.
>
> #run this script from the Freesurfer Subjects Directory...alterntively,
> you can modify the script to work automatically
> #from the the FreeSurfer Subjects Directory Variable. However, since you
> might not be using the bash shell, maybe that variable wont be available.
> Anyway..
> filename=/home/local/AD3/jlee31/Desktop/NORA/segmentz     #This points to
> a file you will make in which every line contains a subject directory name.
>
> #The script will read this file line by line to get the data from each
> subject listed in the script
> statsfile=rh.curv.stats #Tells the scipt which kind of stat files you want
> to collect
>
> #Name the file you want to put your results into
> resultsFileName=results.txt
>
> #Ok here we go
> while read line; do
>
>         sub=`echo $line | cut -d\. -f1`  #gets the subject name from the
> file in the first line of this script
>
>     currentStatsFile=./"$sub"/stats/$statsfile #puts together the fullpath
> of the stats file
>
>     #Next Grep finds a line in the file (stored in the variable
> $myStatsFile) that mathces the criteria
>     #(for example here I find the line "Raw Total Surface Area:" and echos
> that out to a result text file
>     echo $sub"    "`grep "Raw Total Surface Area:" $currentStatsFile` #>>
> $resultsFileName  #creates a results txt file
>
>
> done < "$filename"
>
>
> -
> Joshua Lee
> Graduate Student
> Center for Mind and Brain &
> Department of Psychology
> University of California, Davis
> 530.747.3805
>
>
>
> On Thu, May 17, 2012 at 2:37 PM, Vy Dinh <vy_d...@rush.edu> wrote:
> > Thanks for the suggestion Josh! I have definitely thought about this, but
> > since I'm a total novice bash programmer, I thought that it would be
> quicker
> > to learn which option to add to asegstats2table and aparcstats2table.  I
> > would really appreciate it if you could help me come up with this code?
> What
> > shell function could I use to open each .stats file? How do I use grep to
> > call, say line 53 in the stats file?
> >
> > Many thanks,
> >
> > Vy
> >
> >
> > On Thu, May 17, 2012 at 4:19 PM, Joshua Lee <jki...@ucdavis.edu> wrote:
> >>
> >> Why not use a bash or csh script that loops through your subjects stat
> >> files, and use grep read the appropriate lines to a single text file
> >> with >>.
> >>
> >> -
> >> Josh
> >>
> >>
> >> On Thu, May 17, 2012 at 1:04 PM, Vy Dinh <vy_d...@rush.edu> wrote:
> >> > Dear Freesurfer Experts,
> >> >
> >> > I've created a couple of ROIs from qdec comparisons of thickness and
> >> > volume
> >> > between two groups. We extracted the data from these ROIs for each
> >> > subject
> >> > using mris_anatomical_stats.
> >> >
> >> > The stat files are located within each subjects folder:
> >> > sub/stats/rh.roi.stats
> >> >
> >> > Now, we would like to combine the data from each stat file to a text
> >> > file
> >> > using aparcstats2table and asegstats2table (for volume measures). I
> >> > already
> >> > have batch scripts that call these functions for multiple subjects.
> The
> >> > script basically concatenates all of the subject ids and inputs the
> >> > concatenated string into the aparcstats2table (or asegstats2table)
> >> > command.
> >> >
> >> > EX:
> >> > asegstats2table -s s1 -s s2 -s s3 -s s4 --hemi lh --meas volume
> >> > -tablefile
> >> > test_stats.txt
> >> >
> >> > I would like to modify my script so that I can extract the data from
> the
> >> > roi.stats file. This is only a matter of entering the correct inputs
> for
> >> > aparcstats2table and asegstats2table but I have tried with little
> >> > success.
> >> > The problems with each command are explained below.
> >> >
> >> > For asegstats2table:
> >> > According to documentation
> >> > (http://surfer.nmr.mgh.harvard.edu/fswiki/asegstats2table), I have
> tried
> >> > running "asegstats2table $STRING --meas volume --skip --tablefile
> >> > $OUTFILE " where string is "-i s1/stats/lh.roi.stats -i
> >> > s2/stats/lh.roi.stats ......etc" but get the error message:
> >> >
> >> > Building the table..
> >> > Traceback (most recent call last):
> >> >   File
> >> >
> >> >
> "/Users/skip/Desktop/harlow_mount/apps/fmri_progs/freesurfer_v51/freesurfer/bin/asegstats2table",
> >> > line 513, in <module>
> >> >     rows, columns, table = sanitize_table(options, pretable)
> >> >   File
> >> >
> >> >
> "/Users/skip/Desktop/harlow_mount/apps/fmri_progs/freesurfer_v51/freesurfer/bin/asegstats2table",
> >> > line 412, in sanitize_table
> >> >     _specs, _id_name_map, _measl = _t[0]
> >> > IndexError: list index out of range
> >> >
> >> >
> >> > For aparcstats2table:
> >> > when I run the command:
> >> >
> >> > aparcstats2table $STRING --hemi lh --parc roi_name --skip --tablefile
> >> > $OUTFILE
> >> >
> >> > where string is "-s s1 -s s2 -s s3 ", I get a text file with 3
> columns.
> >> > The
> >> > first column lists the subject ids, but what are the values for the
> 2nd
> >> > and
> >> > 3rd columns? Also, is it possible to input more than 2 .stats file for
> >> > the
> >> > command?
> >> >
> >> >
> >> > Looking forward to your responses,
> >> >
> >> >
> >> > Vy
> >> >
> >> >
> >> > Vy T.U. Dinh
> >> > Neurological Sciences
> >> > Rush University Medical Center
> >> > Phone: (312) 563-3853
> >> > Fax: (312) 563-4660
> >> > Email: vy_d...@rush.edu
> >> >
> >> >
> >> > _______________________________________________
> >> > 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.
> >> >
> >
> >
>
>
_______________________________________________
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