<!--
  ~ Copyright (c) 2012, The Broad Institute
  ~
  ~ Permission is hereby granted, free of charge, to any person
  ~ obtaining a copy of this software and associated documentation
  ~ files (the "Software"), to deal in the Software without
  ~ restriction, including without limitation the rights to use,
  ~ copy, modify, merge, publish, distribute, sublicense, and/or sell
  ~ copies of the Software, and to permit persons to whom the
  ~ Software is furnished to do so, subject to the following
  ~ conditions:
  ~
  ~ The above copyright notice and this permission notice shall be
  ~ included in all copies or substantial portions of the Software.
  ~ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  ~ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
  ~ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  ~ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  ~ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  ~ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  ~ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  ~ OTHER DEALINGS IN THE SOFTWARE.
  -->

<?php

    include '../../../common/include/common.php';
    $module = modules::GATK;
    printHeader($module, "GATK | Tool Documentation Index", "Guides");
?>

<div class='row-fluid' id="top">

<#include "common.html"/>

<#macro argumentlist name myargs>
    <#if myargs?size != 0>
        <tr>
            <th colspan="4" id="row-divider">${name}</th>
        </tr>
        <#list myargs as arg>
            <tr>
                <td><a href="#${arg.name}">${arg.name}</a><br />
                	<#if arg.synonyms != "NA">
                		<#if arg.name[2..] != arg.synonyms[1..]>
                			&nbsp;<em>${arg.synonyms}</em>
                		</#if>
                	</#if>
                </td>
                <!--<td>${arg.type}</td> -->
                <td>${arg.defaultValue!"NA"}</td>
                <td>${arg.summary}</td>
            </tr>
        </#list>
    </#if>
</#macro>

<#macro argumentDetails arg>
	<hr style="border-bottom: dotted 1px #C0C0C0;" />
	<h3><a name="${arg.name}">${arg.name} </a>
		<#if arg.synonyms??> / <small>${arg.synonyms}</small></#if>
	</h3>
	<p class="args">
		<b>${arg.summary}</b><br />
		${arg.fulltext}
	</p>
	<!-- Not sure what this can contain apart from "required" and "deprecated" (which args are @hidden) so removing it provisionally -->
	<!--<#if arg.attributes??>
		<p>${arg.attributes}</p> 
	</#if>-->
	<#if arg.rodTypes != "NA">
		<p>${arg.name} binds reference ordered data. This argument supports ROD files of the following types: ${arg.rodTypes}</p>
	</#if>
	<#if arg.options?has_content>
		<p>
		The ${arg.name} argument is an enumerated type (${arg.type}), which can have one of the following values:
		<dl class="enum">
			<#list arg.options as option>
				<dt class="enum">${option.name}</dt>
				<dd class="enum">${option.summary}</dd>
			</#list>
		</dl>
		</p>
	</#if>
	<p><#if arg.required != "NA">
			<#if arg.required == "yes">
				<span class="badge badge-important">R</span>
			</#if>
		</#if>
		<span class="label label-info ">${arg.type}</span> 
		<#if arg.defaultValue?is_number>
			&nbsp;<span class="label">${arg.defaultValue}</span>
		</#if>
		<#if arg.minValue?is_number>
			&nbsp;<span class="label label-warning">[ [ ${arg.minValue}</span>
		</#if>
		<#if arg.minRecValue?is_number>
			&nbsp;<span class="label label-success">[ ${arg.minRecValue}</span>
		</#if>
		<#if arg.maxRecValue?is_number>
			&nbsp;<span class="label label-success">${arg.maxRecValue} ]</span>
		</#if>
		<#if arg.maxValue?is_number>
			&nbsp;<span class="label label-warning">${arg.maxValue} ] ]</span>
		</#if>
	</p>
</#macro>
<#macro relatedByType name type>
    <#list relatedDocs as relatedDoc>
        <#if relatedDoc.relation == type>
            <h3>${name}</h3>
            <ul>
                <#list relatedDocs as relatedDoc>
                    <#if relatedDoc.relation == type>
                        <li><a href="${relatedDoc.filename}">${relatedDoc.name}</a> is a ${relatedDoc.relation}</li>
                    </#if>
                </#list>
            </ul>
            <#break>
        </#if>
    </#list>
</#macro>

<?php $group = '${group}'; ?>

<section class="span4">
    <aside class="well">
        <a href="index"><h4><i class='fa fa-chevron-left'></i> Back to Tool Docs Index</h4></a>
    </aside>
    <aside class="well">
        <h2>Categories</h2>
        <@getCategories groups=groups />
    </aside>
    <?php getForumPosts( '${name}' ) ?>

</section>

<div class="span8">

    <h1>${name}</h1>

    <p class="lead">${summary}</p>
    <#-- using goto dev annotation instead, see above footer
    <#if author??>
        <h3>Author
            <small> ${author}</small>
        </h3>
    </#if> -->
    <#if group?? >
        <h3>Category
            <small> ${group}</small>
        </h3>
    </#if>
	<#if walkertype != "">
		<h3>Traversal
			<small>${walkertype}</small>
		</h3>
	</#if>
	<#if walkertype != "">
		<h3>PartitionBy
			<small>${partitiontype}</small>
		</h3>
	</#if>
	<#if annotfield != "" >
		<h3>VCF Field
			<small>${annotfield}</small>
		</h3>
	</#if>
	<#if annotinfo != "" >
		<h3>Type
			<small>${annotinfo}</small>
		</h3>
	</#if>
    <#if annotdescript?has_content >
        <h3>Header definition line <br />
            <small>
                <#list annotdescript as line>
                <li><pre>${line}</pre></li>
            </#list>
            </small>
        </h3>
    </#if>

	<hr>
    <h2>Overview</h2>
    ${description}
    
	<#-- Create references to additional capabilities if appropriate -->
		<#if readfilters?size != 0 || parallel?size != 0>
			<hr>
			<h2>Additional Information</h2>
			<p></p>
		</#if>
		<#if readfilters?size != 0>
			<h3>Read filters</h3>
			<#if readfilters?size = 1>
				<p>This Read Filter is automatically applied to the data by the Engine before processing by ${name}.</p>
			</#if>
			<#if (readfilters?size > 1) >
				<p>These Read Filters are automatically applied to the data by the Engine before processing by ${name}.</p>
			</#if>
			<ul>
				<#list readfilters as filter>
					<li><a href="${filter.filename}">${filter.name}</a></li>	
				</#list>
			</ul>
		</#if>
		<#if parallel?size != 0>
			<h3>Parallelism options</h3>
			<#if parallel?size == 1>
				<p>This tool can be run in multi-threaded mode using this option.</p>
			</#if>
			<#if (parallel?size > 1)>
				<p>This tool can be run in multi-threaded mode using these options.</p>
			</#if>
			<ul>
				<#list parallel as option>
					<li><a href="${option.link}">${option.name} (${option.arg})</a></li>
				</#list>
			</ul>
		</#if>
		<#if downsampling?size != 0>
			<h3>Downsampling settings</h3>
			<#if downsampling.by == "NONE">
				<p>This tool does not apply any downsampling by default.</p>
			</#if>
			<#if downsampling.by != "NONE">
				<p>This tool applies the following downsampling settings by default.</p>
				<ul>
					<li>Mode: <b>${downsampling.by}</b></li>
					<li>To coverage: <b>${downsampling.to_cov}</b></li>
				</ul>
			</#if>
		</#if>
		<#if refwindow?size != 0>
			<h3>Window size</h3>
			<p>This tool uses a sliding window on the reference.</p>
			<ul>
				<li>Window start: <b>${refwindow.start}</b> bp before the locus</li>
				<li>Window stop: <b>${refwindow.stop}</b> bp after the locus</li>
			</ul> 
		</#if>
		<#if activeregion?size != 0>
			<h3>ActiveRegion settings</h3>
			<p>This tool uses ActiveRegions on the reference.</p>
			<ul>
				<li>Minimum region size: <b>${activeregion.min}</b> bp</li>
				<li>Maximum region size: <b>${activeregion.max}</b> bp</li>
				<li>Extension increments: <b>${activeregion.ext}</b> bp</li>
			</ul> 
		</#if>
		<#if extradocs?size != 0 || arguments.all?size != 0>
			<hr>
			<h2>Command-line Arguments</h2>
			<p></p>
		</#if>
		<#if extradocs?size != 0>
			<h3>Engine arguments</h3>
			<p>All tools inherit arguments from the GATK Engine' "CommandLineGATK" argument collection, which can be
				used to modify various aspects of the tool's function. For example, the -L argument directs the GATK
				engine to restrict processing to specific genomic intervals; or the -rf argument allows you to apply
				certain read filters to exclude some of the data from the analysis.</p>
			<ul>
				<#list extradocs as extradoc>
					<li><a href="${extradoc.filename}">${extradoc.name}</a></li>
				</#list>
			</ul>
		</#if>
   
		<#-- This class is related to other documented classes via sub/super relationships -->
			<#if relatedDocs?? && relatedDocs?size != 0>
				<h3>Related capabilities</h3>
				<@relatedByType name="Superclasses" type="superclass"/>
				<@relatedByType name="Subclasses" type="subclass"/>
			</#if>
		
		<#-- Create the argument summary -->
			<#if arguments.all?size != 0>
				<h3>${name} specific arguments</h3>
				<p>This table summarizes the command-line arguments that are specific to this tool. For more details on each argument, see the list further down below the table or click on an argument name to jump directly to that entry in the list.</p>
				<table class="table table-striped table-bordered table-condensed">
					<thead>
					<tr>
						<th>Argument name(s)</th>
						<!--<th>Short name</th> -->
						<th>Default value</th>
						<th>Summary</th>
					</tr>
					</thead>
					<tbody>
					<@argumentlist name="Required Inputs" myargs=arguments.required_in/>
					<@argumentlist name="Required Outputs" myargs=arguments.required_out/>
					<@argumentlist name="Required Parameters" myargs=arguments.required_param/>
					<@argumentlist name="Required Flags" myargs=arguments.required_flag/>
					<@argumentlist name="Optional Inputs" myargs=arguments.optional_in/>
					<@argumentlist name="Optional Outputs" myargs=arguments.optional_out/>
					<@argumentlist name="Optional Parameters" myargs=arguments.optional_param/>
					<@argumentlist name="Optional Flags" myargs=arguments.optional_flag/>
					<@argumentlist name="Advanced Inputs" myargs=arguments.advanced_in/>
					<@argumentlist name="Advanced Outputs" myargs=arguments.advanced_out/>
					<@argumentlist name="Advanced Parameters" myargs=arguments.advanced_param/>
					<@argumentlist name="Advanced Flags" myargs=arguments.advanced_flag/>
					<@argumentlist name="Hidden" myargs=arguments.hidden/>
					<@argumentlist name="Deprecated" myargs=arguments.deprecated/>
					</tbody>
				</table>
			</#if>
	
		<#-- List all of the -->
				<#if arguments.all?size != 0>
					<#-- Create the argument details -->
						<h3>Argument details</h3>
						<p>Arguments in this list are specific to this tool. Keep in mind that other arguments are available that are shared with other tools (e.g. command-line GATK arguments); see Inherited arguments above.</p>
						<#list arguments.all as arg>
							<@argumentDetails arg=arg/>
						</#list>
				</#if>
		
			<@footerInfo />
		<#-- Specify go-to developer (for internal use) -->
			<#if gotoDev??>
				<small>GTD: ${gotoDev}</small>
			</#if>
			<@footerClose />

</div>

<?php printFooter($module); ?>