<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE pise SYSTEM "PARSER/pise.dtd">

<pise>

  <head>
    <title>SMILE</title>
    <version>1.44</version>
    <description>Structured Motif Inference and Evaluation</description>
    <authors>L. Marsan, J. Allali</authors>
    <reference>Marsan L, Sagot MF (2001). Algorithms for extracting structured motifs using a suffix-tree with application to promoter and regulatory site consensus identification. J. of Computational Biology, 7:345-360.</reference>
  </head>

  <command>smile</command>

  <parameters>

    <parameter iscommand="1" ishidden="1" type="String">
      <name>smile</name>
      <attributes>
	<format>
	  <language>perl</language>
	  <code> "smile params" </code>
	</format>
	<group>0</group>
      </attributes>
    </parameter>

    <parameter type="Results">
      <name>param</name>
      <attributes>
	<filenames>params</filenames>
      </attributes>
    </parameter>

    <parameter ismandatory="1" issimple="1" type="Sequence">
      <name>seq</name>
      <attributes>

	<prompt>Sequences File</prompt>
	<format>
	  <language>perl</language>
	  <code>"FASTA file\t\t\t$value\\n"</code>
	</format>
	<group>1</group>
	<seqfmt>
	  <value>8</value>
	</seqfmt>
	<group>1</group>
	<paramfile>params</paramfile>

      </attributes>
    </parameter>

    <parameter ismandatory="1" issimple="1" type="Excl">
      <name>alphabet</name>
      <attributes>

	<prompt>Alphabet</prompt>
	<paramfile>params</paramfile>
	<format>
	  <language>perl</language>
	  <code>"Alphabet file\t\t\t/local/gensoft/lib/SMILE/$value\\n"</code>
	</format>
	<vdef><value>dna.alphabet</value></vdef>
	<group>2</group>
	<vlist>
		<value>dna.alphabet</value>
		<label>DNA</label>
		<value>dnadeg.alphabet</value>
		<label>degenerated DNA</label>
		<value>aa-barton.alphabet</value>
		<label>protein (Zvelebil Barton Taylor Sternberg, JMolBiol 195 (1987))</label>
		<value>aa-smiths.alphabet</value>
		<label>protein (Smith and Smith 1990)</label>
	</vlist>

      </attributes>
    </parameter>

    <parameter ismandatory="1" issimple="1"  type="Integer">
      <name>how_many_N</name>
      <attributes>
	<precond>
	  <language>perl</language>
	  <code>$alphabet ne "dna.alphabet"</code>
	</precond>
	<vdef><value>0</value></vdef>
	<prompt>Maximum number of N in a motif (degenerated DNA or protein alphabet)</prompt>
	<format>
	  <language>perl</language>
	  <code>"Composition in *\t\t$value\\n"</code>
	</format>
	<group>3</group>
	<paramfile>params</paramfile>
      </attributes>
    </parameter>

    <parameter ismandatory="1" issimple="1"  type="Integer">
      <name>how_many_R</name>
      <attributes>
	<precond>
	  <language>perl</language>
	  <code>$alphabet eq "dnadeg.alphabet"</code>
	</precond>
	<vdef><value>0</value></vdef>
	<prompt>Maximum number of R (purine) in a motif (degenerated DNA)</prompt>
	<format>
	  <language>perl</language>
	  <code>"Composition in AG\t\t$value\\n"</code>
	</format>
	<group>3</group>
	<paramfile>params</paramfile>
      </attributes>
    </parameter>

    <parameter ismandatory="1" issimple="1"  type="Integer">
      <name>how_many_Y</name>
      <attributes>
	<precond>
	  <language>perl</language>
	  <code>$alphabet eq "dnadeg.alphabet"</code>
	</precond>
	<vdef><value>0</value></vdef>
	<prompt>Maximum number of Y (pyrimidine) in a motif (degenerated DNA)</prompt>
	<format>
	  <language>perl</language>
	  <code>"Composition in CT\t\t$value\\n"</code>
	</format>
	<group>3</group>
	<paramfile>params</paramfile>
      </attributes>
    </parameter>

    <parameter ismandatory="1" type="Integer">
      <name>quorum</name>
      <attributes>
	<prompt>Minimum percentage of sequences containing a motif (quorum)</prompt>
	<format>
	  <language>perl</language>
	  <code>"Quorum\t\t\t\t$value\\n"</code>
	</format>
	<paramfile>params</paramfile>
	<group>10</group>

      </attributes>
    </parameter>

    <parameter ismandatory="1" issimple="1" type="Integer">
      <name>minlen</name>
      <attributes>
	<prompt>Total min length</prompt>
	<format>
	  <language>perl</language>
	  <code>"Total min length\t\t$value\\n"</code>
	</format>
	<paramfile>params</paramfile>
	<group>11</group>
	<comment>
	  <value>Length parameters should be close to the expected motifs. A too large range between min/max might produce too many insignificant results.</value>
	</comment>
      </attributes>
    </parameter>

    <parameter type="Integer">
      <name>maxlen</name>
      <attributes>
	<prompt>Total max length</prompt>
	<format>
	  <language>perl</language>
	  <code>(defined $value)? "Total max length\t\t$value\\n" : "Total max length\t\t0\\n"</code>
	</format>
	<paramfile>params</paramfile>
	<group>12</group>
      </attributes>
    </parameter>

    <parameter ismandatory="1" issimple="1" type="Integer">
      <name>subst</name>
      <attributes>
	<prompt>Total substitutions</prompt>
	<format>
	  <language>perl</language>
	  <code>"Total substitutions\t\t$value\\n"</code>
	</format>
	<paramfile>params</paramfile>
	<group>13</group>
	<ctrls>
	  <ctrl>
	    <message>Too many substitutions (number of substitutions
	    must be smaller than min length)</message>
	    <language>perl</language>
	    <code>defined $subst &amp;&amp; ! ($subst &lt; $minlen)</code>
	  </ctrl>
	</ctrls>
      </attributes>
    </parameter>

    <parameter ishidden="1" type="String">
      <name>boxes</name>
      <attributes>
	<format>
	  <language>perl</language>
	  <code> "Boxes\t\t\t\t1\\n" </code>
	</format>
	<group>1</group>
	<paramfile>params</paramfile>
	<group>20</group>
      </attributes>
    </parameter>

    <parameter ishidden="1" type="String">
      <name>shuffling</name>
      <attributes>
	<format>
	  <language>perl</language>
	  <code> "Shufflings\t\t\t\t100\\n" </code>
	</format>
	<group>100</group>
	<paramfile>params</paramfile>
      </attributes>
    </parameter>

    <parameter ishidden="1" type="String">
      <name>kmer</name>
      <attributes>
	<format>
	  <language>perl</language>
	  <code> "Size k-mer\t\t\t\t2\\n" </code>
	</format>
	<group>100</group>
	<paramfile>params</paramfile>
      </attributes>
    </parameter>

    <parameter ishidden="1" type="OutFile">
      <name>result</name>
      <attributes>
	<format>
	  <language>perl</language>
	  <code> "Output file\t\t\tsmile.result\\n" </code>
	</format>
	<group>1</group>
	<paramfile>params</paramfile>
      </attributes>
    </parameter>

    <parameter type="Results">
      <name>resultsfiles</name>
      <attributes>
	<filenames>smile.result smile.result.shuffle</filenames>
      </attributes>
    </parameter>

  </parameters>
</pise>
