The Which application is a command$-$line tool that has several options that can be customized.  The version of Which that we have used in the
experiments uses a collection of parameters with the default values.  It is entirely possible to change these values to suit the needs of the user.
The Which source code and documentation can be downloaded at \textit{http://www.unbox.org/wisp/tags/which/which.tar} and is produced under
GPL 3.0.

\begin{table}[!ht]
\begin{center}
\begin{tabular}{rcl}
		\textbf{Flag} & \textbf{Argument} & \textbf{Description} \\
        $-$t &  FILE & Sets the train file. \\
        $-$T &  FILE & Sets the test file. \\
        $-$E &  FILE& Sets the file to read in the lines of code from \\
        $-$rep & NUMBER & Sets the number of Rules to report. \\
        $-$score & TYPE & Sets the type of scoring. \\
		&& \begin{tabular}{rl}
			   lift & cores the Rules via lift. \\
               effort & Scores the Rules via effort. \\
               pdpf & Scores the Rules via probability of detection \\
			        & and probability of false alarm. \\
               probsupt & Scores the Rules via the equation $\frac{pd^2}{pd+pf}$. \\
               pd/effort & Scores the Rules via pd/effort. \\
               ripper & Scores the Rules via Ripper's method according \\
			          & to ROC n' Rule paper. \\
               precision & Scores the Rules via precision's method \\
			             & according to ROC n' Rule paper. \\
               pd/loc & Scores the Rules via pd over the sum of the LOC \\
			          & it fires on.  LOCs are normalized for this. \\
               accuracy & Scores the rules via accuracy.  This will be a \\
			            & low score as it is synthetic in that we cannot assume a binary \\
			            & class system. \\
		\end{tabular} \\
        $-$ssize & NUMBER &  Sets the size of the stack( $-$1 for infinite size. ) \\
        $-$imp & NUMBER & Sets the minimum improvement required per $-$check picks.\\
		       && Stopping criteria. \\
        $-$picks & NUMBER & Sets the max number of picks for this run of Which. \\
        $-$check & NUMBER & Sets how many picks in a row before a $-$imp case is \\
		         && checked. \\
        $-$loc & NUMBER & If scoring type is effort, this is the location in the file of \\
		       && the line$-$of$-$code attribute. \\
        $-$bins & NUMBER & How many bins to use to discretize the data. \\
        $-$alpha & NUMBER & Sets the weight of PD in all scoring methods that use it. \\
        $-$beta & NUMBER & Sets the weight of PF in all scoring methods that use it. \\
        $-$gamma & NUMBER & Sets the weight of effort in all scoring methods that use it. \\
        $-$micro & NUMBER& Creates a data set of even distribution of classes from the \\
		         && train set and removes all but the amount sent in. \\
        $-$stat & & Output only the stats of each rule. \\
        $-$p & & Tells Which to print the got want table. \\
        $-$noeff & & Tells which to ignore effort calculation. \\
        $-$rule & & Tells which to only print the Rule in a condensed format. \\
        $-$seed & NUMBER & Tells which which seed to use for the random number generator. \\
        $-$? & & Prints this help file. \\
\end{tabular}
\caption{Breif Description of the Which command$-$interface.}
\label{tb:whichhelptb}
\end{center}
\end{table}

Which was written in an attempt to mimic the command$-$line interface of the wEka\cite{weka} and retains some similarities with that interface.
The following is a table of possible command$-$line flags that one can use to alter the behavior of Which.  Most of these flags are
self$-$explanitory, however a few need further discussion.

The first few flags in \tab{whichhelptb} are $-$t, $-$T, and $-$E.  These flags work together to give Which the information it requires to build
and test its rules.  It is required for all of the scoring methods to include the $-$t flag, the other two are optional however.  If $-$T is not
specified in the command$-$line call, Which will use the train set as the test set. $-$E is used only in special cases where
the user wants to use a scoring method that requires the effort (IE effort, pd/loc, and pd/effort) information, but the train and test sets
contain discretized data.  The data file sent in with $-$E should be the same as the test file but without the discretized data.  This is to ensure
accurate scoring calculations.

The got want table mentioned under the description of the $-$p flag is a special table that is used in evaluating a rule's performace.  This table
does not give any statistics about the rule's score but instead lists all of the instances that this rule fired on in a form like \fig{gotwant}.
This table can be interpreted as the first column being a counter, the second column being the class the rule predicted the instance to be, the
third column being the instance number in the test set that this instance was, the fourth column being the class this instance actually was, 
and the fifth column being the number of lines of code that instance had.  This flag was created when we decided to do our Koru Diagrams for
evaluation in \chap{experiments}.  This flag has uses for any of the scoring methods, however.  It can be used to calculate the pd and pf for the
rule.

\begin{figure}[!ht]
\begin{center}
\begin{tabular}{ccccc}
	1 & true & 23 & true & (34) \\
	2 & true & 27 & true & (30) \\
	3 & true & 30 & false & (2) \\
	4 & true & 45 & true & (1) \\
	5 & true & 52 & true & (5) \\
	6 & true & 65 & false & (101) \\
	7 & true & 100 & true & (12) \\
	8 & true & 101 & true & (423) \\
\end{tabular}
\caption{Example Got Want Table.}
\label{fig:gotwant}
\end{center}
\end{figure}

As a final remark, the $-$noeff flag is a special flag that was an artifact of the addition of the line of code based scoring models.  It should
always be set unless the model is an effort model.