#!/usr/bin/perl # tab2bugs # Memory efficient script for turning a tabular MCMC # output file into BUGS output files # Darren Wilkinson # d.j.wilkinson@ncl.ac.uk # http://www.staff.ncl.ac.uk/d.j.wilkinson/ $filestem=$ARGV[0]; $filein=$filestem.".tab"; $fileout=$filestem.".out"; $fileind=$filestem.".ind"; unless ($filestem) { print STDERR "Usage: tab2bugs .tab is a tabular MCMC output file.\n"; exit (1); } unless (-e $filein) { print STDERR "File $filein does not exist.\n"; exit (1); } print "Parsing $filein into $fileout and $fileind.\n"; open(FILEOUT,">".$fileout); open(FILEIND,">".$fileind); open(FILEIN,$filein); $_=; chop; @head=split; close(FILEIN); print "$#head variables.\n"; $count=1; $colind=1; while ($colind <= $#head) { print "Parsing variable $colind - $head[$colind]\n"; open(FILEIN,$filein); $header=; $start=$count; while () { chop; @linebits=split; print FILEOUT "$linebits[0] $linebits[$colind]\n"; $count=$count+1; } $end=$count-1; print FILEIND "$head[$colind] $start $end\n"; $colind=$colind+1; close(FILEIN); } close(FILEOUT); close(FILEIND); print "Finished.\n"; exit (0);