#!/usr/bin/perl -w use strict; use File::Basename; use File::stat; my $skip = 0; my $only; my $file; my $start; # Horrible option processing if ( $ARGV[0] eq "--indexed" ) { $only = "indexed"; $file = $ARGV[1]; $start = 2; } elsif ( $ARGV[0] eq "--not-indexed" ) { $only = "notindexed"; $file = $ARGV[1]; $start = 2; } else { $only = ""; $file = $ARGV[0]; $start = 1; } my $args = join(" ", splice(@ARGV, $start, scalar(@ARGV)-1)); if ( !($args eq "") ) { printf("Extra arguments for hdfsee: %s\n", $args); } else { # Default arguments - feel free to override! $args = "--binning=2 --int-boost=10"; printf("Using default arguments for hdfsee: %s\n", $args); } open(FH, $file); open(TMP, "> list.tmp"); my $statbuf = stat($file); if ( not $statbuf ) { printf("Couldn't stat stream. Check the filename.\n"); exit; } my $stream_mtime = $statbuf->mtime; my $in_image = 0; my $line; my $filename; my $event = ""; my $indexed; my $n_seen = 0; while ( $line = ) { chomp $line; if ( $in_image ) { printf(TMP "%s\n", $line); } if ( $line =~ /^Peaks\ from\ peak\ search$/ ) { $in_image = 1; } if ( $line =~ /^Image\ filename:\ (.+)$/ ) { $filename = $1; } if ( $line =~ /^Event:\ (.+)$/ ) { $event = $1; } if ( $line =~ /^indexed_by\ =\ (.*)$/ ) { if ( $1 eq "none" ) { $indexed = 0; } else { $indexed = 1; } } if ( $line =~ /^End\ of\ peak\ list$/ ) { close(TMP); my $show; if ( $only eq "indexed" ) { if ( $indexed ) { $show = 1; } else { $show = 0; } } elsif ( $only eq "notindexed" ) { if ( $indexed ) { $show = 0; } else { $show = 1; } } else { $show = 1; } if ( !$show ) { printf(STDERR "Not showing %s\n", $filename); unlink("list.tmp"); open(TMP, "> list.tmp"); $in_image = 0; next; } # Example of how to do "basename" and "prefix": # $filename = "images-old/".basename($filename); my $ev; my $evr; if ( $event eq "" ) { $ev = ""; $evr = ""; } else { $ev = " --event=".$event; $evr = ", event ".$event; } $n_seen++; if ( $n_seen > $skip ) { my $statbuf = stat($filename); if ( not $statbuf ) { printf("Couldn't stat image file '%s' - does it exist?\n", $filename); exit; } my $image_mtime = $statbuf->mtime; if ( $image_mtime > $stream_mtime ) { printf(STDERR "WARNING: Image file is newer than stream\n"); } printf(STDERR "Viewing %s%s\n", $filename, $evr); system("hdfsee ".$filename.$ev. " --peak-overlay=list.tmp ".$args); if ( $? != 0 ) { exit; } } else { printf(STDERR "Skipping %s%s\n", $filename, $evr); } unlink("list.tmp"); open(TMP, "> list.tmp"); $in_image = 0; $event = ""; } }