#!/usr/bin/perl -w
use strict;
use warnings;
unless ($ARGV[0]){
print "sm_timecourse.pl version 2.0 (4/30/07) - szymon\@nmr.mgh.harvard.edu\n";
print "\n";
print "Takes screenshots of MEG data and arranges them in printable SVG figures\n";
print "\n";
print "Usage: sm_timecourse [options]\n";
print "\n";
print "Options:\n";
# Rob, please fill this in based on the arguments below
print "\n";
exit;
}
# set defaults here:
my $MEG_DIR=$ENV{MEG_DIR};
my @view=('lat');
my @hemi=('lh', 'rh');
my $sub='meg_normals';
my $comment='';
my $curv='sulc';
my $smooth=5;
my $web='/space/ventzl/15/users/szymon_web/meg_results/';
my $sizex=990; # width of page in px (use 990 for 8.5x11)
my $sizey=765; # height of page in px (use 765 for 8.5x11)
my $rowspace=25; # spacing between rows (px)
my $colspace=10; # spacing bewteen columns (px)
my $xmin=20; # left margin width (px)
my $ymin=80; # top edge of topmost brain (px)
my $width=182;
my $height=124;
# my $width=145;
# my $height=90;
#my $width=116;
#my $height=72;
my $offset=0;
my $dosvg=1;
my $dopng=1;
my $format='png';
my $sub='meg_normals';
my $comment='';
my $suf='';
my(@pre,$analysis,$tmin,$tmax,$tstep,$fthresh,$fmid,$fmax);
my($i,$j,$k,$l);
my @args=@ARGV;
if ($ARGV[0]){
while($ARGV[0]){
my $flag=shift;
if($flag eq '--pre'){
@pre=();
while ($ARGV[0]&&$ARGV[0]!~m/^--/){
$pre[$j++]=shift;
}
}elsif($flag eq '--hemi'){
@hemi=();
while ($ARGV[0]&&$ARGV[0]!~m/^--/){
$hemi[$k++]=shift;
}
}elsif($flag eq '--view'){
@view=();
while ($ARGV[0]&&$ARGV[0]!~m/^--/){
$view[$l++]=shift;
}
}elsif($flag eq '--suf'){
$suf=shift;
}elsif($flag eq '--sub'){
$sub=shift;
}elsif($flag eq '--analysis'){
$analysis=shift;
}elsif($flag eq '--tmin'){
$tmin=shift;
}elsif($flag eq '--tmax'){
$tmax=shift;
}elsif($flag eq '--tstep'){
$tstep=shift;
}elsif($flag eq '--offset'){
$offset=shift;
}elsif($flag eq '--fthresh'){
$fthresh=shift;
}elsif($flag eq '--fmid'){
$fmid=shift;
}elsif($flag eq '--fmax'){
$fmax=shift;
}elsif($flag eq '--format'){
$format=shift;
}elsif($flag eq '--pngonly'){
$dopng=1;$dosvg=0;
}elsif($flag eq '--svgonly'){
$dopng=0;$dosvg=1;
}elsif($flag eq '--comment'){
$comment=(shift);
}elsif($flag eq '--smooth'){
$smooth=(shift);
}else{
print "\nInvalid Argument: $flag !\n";
exit 1;
}
}
}
my $src="$MEG_DIR/$sub/$analysis/stc/";
my $trg="$src/svg";
if(!-d$trg){
system("mkdir $trg");
}
my $unique=int(rand 10000000)+1;
my $tmpf="/usr/tmp/png_${unique}.sh";
open (TMP,">$tmpf") or die;
print TMP "#\!/bin/csh -f\n";
print TMP "source /space/orsay/8/megdev/megsw/mne/setup/mne/mne_setup_analysis_csh\n";
my $tp;
if($dopng==1){
for(my $n=0;$n<@pre;$n++){
foreach my $v (@view){
my $dir="$trg/$pre[$n]-$tmin-$tmax-$v";
unless(-d$dir){
system("mkdir $dir");
}
print TMP "\n";
print TMP "mne_make_movie --stcin ${src}/${pre[$n]}${suf}-${hemi[1]}.stc --view $v --subject $sub --curv $curv --fthresh $fthresh --fmid $fmid --fmax $fmax --smooth $smooth --spm --noscalebar --nocomments --$format ${dir}/${pre[$n]} ";
for($tp=$tmin;$tp<=$tmax;$tp=$tp+$tstep){
print TMP "--pick $tp ";
}
print TMP "\n";
}
}
close (TMP);
chmod(0755, $tmpf);
system("$tmpf");
for(my $n=0;$n<@pre;$n++){
foreach my $v (@view){
my $dir="$trg/$pre[$n]-$tmin-$tmax-$v";
system("mogrify -fill \"#fff\" -opaque \"#000\" -trim ${dir}/${pre[$n]}-*-${v}-*h.${format}");
}
}
}
my $hy=$ymin-50; # vertical position of header (px)
my $tymin=$ymin-5; # vertical position of timepoint (offset) labels relative to brains
my $txmin=$xmin+$width/2; # horizontal position of timepoint (offset) labels relative to brains
if($dosvg==1){
for(my $n=0;$n<@pre;$n++){
foreach my $v (@view){
my $dir="$trg/$pre[$n]-$tmin-$tmax-$v";
foreach my $h (@hemi){
my @outputs;
my $x=$xmin;
my $y=$ymin;
my $tx=$txmin;
my $ty=$tymin;
my $tstart;
for($tp=$tmin;$tp<=$tmax;$tp=$tp+$tstep){
my $timepoint=$tp+($offset);
if($y==$ymin && $x==$xmin){
my $svgf="$dir/$pre[$n]-$tp-$tmax-$v-$h.svg";
$tstart=$tp;
open (SVG,">$svgf") or die;
print SVG "\n";
print SVG "\n";
print SVG "\n";
print SVG "\n";
close (SVG);
system("mv $dir/${pre[$n]}-$tstart-$tmax-$v-$h.svg $dir/${pre[$n]}-$tstart-$tp-$v-$h.svg");
push(@outputs,"${pre[$n]}-$tstart-$tp-$v-$h");
}
if($tp==$tmax){
print SVG "\n";
close (SVG);
push(@outputs,"${pre[$n]}-$tstart-$tp-$v-$h");
}
}
unless (-d"$web/$analysis/$v/$h"){
system("mkdir -p $web/$analysis/$v/$h");
open (IDX,">>$web/index.html") or die;
print IDX "$analysis : $v : $h
\n";
close (IDX);
}
foreach my $op (@outputs){
system("inkscape -e $web/$analysis/$v/$h/$op.png -b #ffffff $dir/$op.svg");
}
open (WWW,">$web/$analysis/$v/$h/${pre[$n]}-$tmin-$tmax-$v-$h.html") or die;
print WWW "