EM算法的改进

源代码在线查看: update-plot-usage.txt

软件大小: 1644 K
上传用户: sunyuang
关键词: 法的改进
下载地址: 免注册下载 普通下载 VIP

相关代码

				#!@WHICHPERL@				#				# $Id: update-plot-usage.txt 1339 2006-09-21 19:46:28Z tbailey $				# $Log$				# Revision 1.3  2006/03/08 20:50:11  nadya				# merge chamges from v3_5_2 branch				#				# Revision 1.2.4.1  2006/01/24 20:45:42  nadya				# update copyright				#				# Revision 1.2  2005/10/05 06:18:35  nadya				# use full path for "rm". Asssume everybody has /bin/rm.				#				# Revision 1.1.1.1  2005/07/30 01:20:36  nadya				# Importing from meme-3.0.14, and adding configure/make				#				#				# AUTHOR: Timothy L. Bailey				# CREATE DATE:								$PGM = $0;			# name of program				$PGM =~ s#.*/##;                # remove part up to last slash				@args = @ARGV;			# arguments to program				$| = 1;				# flush after all prints				$SIG{'INT'} = 'cleanup';	# interrupt handler				# Note: so that interrupts work, always use for system calls:				# 	if ($status = system($command)) {&cleanup($status)}								# requires				push(@INC, split(":", $ENV{'PATH'}));	# look in entire path								# defaults								$usage = 				  USAGE:					$PGM  [  ]+										directory for report					 		program name							log file name (host:dir/name)							string containing one letter plot-usage types (rumc)									Move the log files to the current directory, appending					them to files named -log...					Run plot-usage to create usage figures.					Create usage report combining all figures in file usage-report.ps					and copy it to report directory.								        Copyright				        (2000-2006) The Regents of the University of California.				        All Rights Reserved.				        Author: Timothy L. Bailey				USAGE								$nargs = 4;			# number of required args				if ($#ARGV+1 < $nargs) { &print_usage("$usage", 1); }								# get input arguments				$rep_dir = shift;				while ($#ARGV >= 0) {				  $_ = shift;				  if ($_ eq "-h") {                             # help				    &print_usage("$usage", 0);				  } else {				    push(@pgms, $_);				    push(@logs, shift);				    push(@types, shift);				  }				}								# make file extension using date				($sec, $min, $hour, $mday, $mon, $year, @rest) = localtime(time);				$date = sprintf "%4d.%02d", 1900+$year, $mon+1;								# make the plot postscript files				for ($i=0; $i				  make_plots($pgms[$i], $logs[$i], $types[$i], $date);				}								# make the final report 				make_report($rep_dir, @pgms, @types);								# cleanup files				&cleanup($status);				 				################################################################################				#                       Subroutines                                            #				################################################################################				 				################################################################################				#				#       print_usage				#				#	Print the usage message and exit.				#				################################################################################				sub print_usage {				  local ($usage, $status) = @_;				 				  if (-c STDOUT) {			# standard output is a terminal				    open(C, "| more");				    print C $usage;				    close C;				  } else {				# standard output not a terminal				    print STDERR $usage;				  }								  exit $status;				}								################################################################################				#				#	make_plots				#				################################################################################				sub make_plots {				  my($pgm, $log, $types, $date) = @_;				  my($log_saved, $tmpfile, $type, @files);								  $tmpfile = "$PGM.$$.tmp";								  # save log in new file with date appended				  $log_saved = "$pgm-log.$date";								  # move (or append) the log file to the saved log				  print STDERR "Appending $log to $log_saved\n";				  ($host, $file) = split(':', $log);				  $status = system("scp $log $tmpfile");				  #$status = 1;				  unless ($status) {				# copy succeded				    system("ssh $host \"/bin/rm -f $file\""); 	# remove log file				    if (-e $log_saved) {			# append to saved file				      system("cat $tmpfile >> $log_saved"); unlink($tmpfile);				    } else {				      rename($tmpfile, $log_saved) 				    }				  }								  # get the log file names				  $_ = `ls -1 $pgm-log.*`;				  @files0 = split;				  @files = @files0;				  if (0) {				    @files = ();				    foreach $file (@files0) {				      unless ($file =~ /2004\.(04|05)/) {					push @files, $file				      }				    }				  }				  print STDERR "$pgm log files: @files\n";								  # make the requested types of plots				  foreach $type (split(//, $types)) {				    system("cat @files | plot-usage -$pgm -$type");				  }								} # make_plots								################################################################################				#				#	make_report				#				################################################################################				sub make_report {				  my($report_dir, @rest) = @_;				  my($i, $report, $text, $npgms, $pgm, $types, $users, $runs, $max, $cpu);								  $report = "usage-report";				  open(REP, ">$report.tex") || die "Can't open file $report.tex for output: $!\n"; 				  $text = 				\documentclass[12pt]{article}				\oddsidemargin -0.7in				\topmargin -0.25in				\textheight 9in				\textwidth 7in				\usepackage{graphicx}				\newcommand{\widtha}{3in}          % rectangular figure								\begin{document}								EOF								  $npgms = @rest/2;				  for ($i=0; $i				    $pgm = $rest[$i];				    $types = $rest[$i+$npgms];								    # set up the types of figures available				    $runs = ($types =~ /r/) ? "\\includegraphics[width=\\widtha]{plot-usage.runs.$pgm.ps}" : "";				    $users = ($types =~ /u/) ? "\\includegraphics[width=\\widtha]{plot-usage.users.$pgm.ps}" : "";				    $max = ($types =~ /m/) ? "\\includegraphics[width=\\widtha]{plot-usage.max.$pgm.ps}" : "";				    $cpu = ($types =~ /c/) ? "\\includegraphics[width=\\widtha]{plot-usage.cpu.$pgm.ps}" : "";								    $text .= 				\begin{figure}				\begin{center}				\begin{tabular}{cc}				  \multicolumn{2}{c}{\LARGE \sc				EOF								    $text .= "$pgm \} \\\\ \n";								    $text .= 				  {\em number of users} & {\em number of runs} \\				EOF								    $text .= "  $users \n    \& $runs \\\\ \n";								    $text .= 				  {\em cpu time} &				    {\em maximum runs} \\				EOF				    $text .= "  $cpu \n    \& $max \\\\ \n";				    $text .= 				\end{tabular}				\end{center}				\caption{{\bf Usage of 				EOF								    $text .= "\{\\sc $pgm} ";								    $text .= 				as of \today.}				The histograms show 				the number of different users submitting runs, 				the number of runs, 				the total cpu time of all runs, 				and 				the maximum number of runs for a single user				on a month-by-month basis.				}				\end{figure}				EOF								  } # pgm								  $text .= 				\end{document}				EOF								  #print STDERR $text;				  print REP $text;				  close(REP);								  print "texit $report ;cp $rep_dir\n";				  system("texit $report; cp $report.ps $rep_dir");				  system("ps2pdf $report.ps; cp $report.pdf $rep_dir");				} # make_report				 				################################################################################				#       cleanup				#				#       cleanup stuff				#				################################################################################				sub cleanup {				  local($status, $msg) = @_;				  				  #$status = system("/bin/rm plot-usage.*.ps");				  if ($status && "$msg") {print STDERR "$msg: $status\n";}				  exit($status);				}							

相关资源