JAL-629 Updated help docs and fixed structure image subvalues
[jalview.git] / help / help / html / features / clarguments-basic.html
index 8b64625..626fb8c 100644 (file)
  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
  * The Jalview Authors are detailed in the 'AUTHORS' file.
  -->
-<title>Jalview Command Line Arguments: basic usage</title>
+<title>Command Line: basic usage</title>
 <body>
 
-  <h1>Jalview Command Line Arguments: basic usage</h1>
+  <h1>Command Line: basic usage</h1>
 
   <p>
-  <a href="clarguments.html">Jalview Command Line Arguments: summary</a>
+  <a href="clarguments.html">Command Line: introduction</a>
   <br/>
-  <a href="clarguments-intro.html">Jalview Command Line Arguments: introduction</a>
+  Command Line: basic usage
   <br/>
-  Jalview Command Line Arguments: basic usage
+  <a href="clarguments-advanced.html">Command Line: advanced usage</a>
   <br/>
-  <a href="clarguments-advanced.html">Jalview Command Line Arguments: advanced usage</a>
+  <a href="clarguments-argfiles.html">Command Line: argument files</a>
   <br/>
-  <a href="clarguments-argfiles.html">Jalview Command Line Arguments: argfiles</a>
+  <a href="clarguments-reference.html">Command Line: reference</a>
   </p>
 
   <hr/>
@@ -44,6 +44,7 @@
   <li><a href="#adding3dstructures">Adding 3D structures</a></li>
   <li><a href="#outputtingalignmentfiles">Outputting/converting alignment files and images</a></li>
   <li><a href="#filenamesubstitutionsandbatchprocessing">Filename substitutions and batch processing</a></li>
+  <li><a href="#alloutputwildcard">The all output wildcard</a></li>
   </ul>
 
   <h2><a name="openingalignments"></a>Opening alignments (<code>--open</code>, <code>--append</code>, <code>--new</code>)</h2>
   </p>
 
   <h3><a name="image"></a><code>--image</code></h3>
+  To export the open alignment window as an image, use the <code>--image</code> argument, which will give an image of the alignment and annotations as it appears (or would appear if not in <code>--headless</code> mode) in the alignment window if it was large enough for the whole alignment, including colour choice and features.
+  <p>
+  <pre>
+  jalview --open examples/plantfdx.fa --colour gecos-blossom --features examples/plantfdx.features --annotations examples/plantfdx.annotations --image plantfdx.png --headless
+  </pre>
+  </p>
+
+  <p>
+  This by default produces a PNG image of screen or webpage resolution, which you may want to improve upon.  There are two ways of doing this with Jalview: increasing the scale of the PNG image, or using a vector based image format (EPS, SVG, HTML).
+  <p>
+
+  <h3><a name="bitmap"></a>Bitmap image types (<code>png</code>)</h3>
+
+  <p>
+  Bitmap images are composed of an array of pixels.  Bitmap images with a low resolution that are blown up to a larger size appear "blocky", so it is important to get the resolution for your purpose correct.  Older screens only require a modest resolution, whilst newer HiDPI screens look better with a higher resolution.  For print you will want an even higher resolution although in this case you would probably want to use a vector image format.  In general creating a bitmap image that has a large resolution means you can scale the image down if needed, although if you are running a batch process this will take more time and resources.
+  </p>
+  <p>
+  Jalview only produces a PNG bitmap image type.  This is a high-colour lossless format which can also use lossless compression so is suitable for alignment figures.
+  </p>
+  <p>
+  Let's increase the resolution of the PNG image:
+  </p>
+
+  <h3><a name="scale"></a><code>--scale</code></h3>
 
   <p>
+  We can increase the size of the PNG image by a factor of <em>S</em> by following the <code>--image</code> argument with a <code>--scale <em>S</em></code> argument and value.  The value doesn't have to be an integer and should be given as an integer or floating point formatted number, e.g.
   <pre>
+  jalview --open examples/uniref50.fa --colour gecos-ocean --image mypic.png --scale 5.5 --headless
   </pre>
+  which will produce a PNG image 5.5 times larger (and more detailed) than without the <code>--scale</code> argument.
   </p>
+  <p>
+  However, since you won't necessarily already know the size of an alignment's exported image you can specify either an exact width or height (in pixels) with either one of the
+  <code>--width</code> and <code>--height</code> arguments:
 
-  <h3><a name=""></a><code>--</code></h3>
+  <h3><a name="width"></a><code>--width</code></h3>
 
   <p>
+  Specify an exact width of an exported PNG image with <code>--width</code>:
   <pre>
+  jalview --headless --open https://www.ebi.ac.uk/interpro/api/entry/pfam/PF03760/?annotation=alignment%3Aseed --noshowannotations --colour gecos-sunset --image wallpaper.png --width 3840
   </pre>
   </p>
 
-  <h3><a name=""></a><code>--</code></h3>
+  <h3><a name="height"></a><code>--height</code></h3>
 
   <p>
+  Alternatively specify an exact height with the <code>--height</code> argument:
   <pre>
+  jalview --headless --open https://www.ebi.ac.uk/interpro/api/entry/pfam/PF03760/?annotation=alignment%3Aseed --noshowannotations --colour gecos-ocean --image wallpaper.png --height 2160
   </pre>
   </p>
 
-  <h3><a name=""></a><code>--</code></h3>
+  <p>
+  You can specify two or all of <code>--scale</code>, <code>--width</code> and <code>--height</code> as limits to the size of the image (think of one or two bounding boxes) and the one which produces the smallest scale of image is used.  You can also specify each of these as sub-value modifiers to the <code>--image</code> value:
+  <pre>
+  jalview --headless --open https://www.ebi.ac.uk/interpro/api/entry/pfam/PF03760/?annotation=alignment%3Aseed --noshowannotations --colour gecos-flower --image [scale=0.25,width=320,height=240]thumbnail.png
+  </pre>
+  </p>
 
   <p>
+  Next we look at vector image formats, which maintain detail at all resolutions.
+  </p>
+
+  <h3><a name="vector"></a>Vector image export</h3>
+
+  <p>
+  Jalview can export an alignment in Encapsulated PostScript (<code>eps</code>), Scalable Vector Graphics (<code>svg</code>), HTML (<code>html</code>) or BioJSON -- another HTML format (<code>biojs</code>), by using, e.g.
+  <pre>
+  jalview --open examples/uniref50.fa --colour gecos-flower --image printable.eps
+  </pre>
+  The image format can be specified with the <code>--type</code> argument or as a sub-value modifier on the <code>--image</code> value.  If neither is used the <code>type</code> will be guessed from the image file extension.  The following three examples should produce the same contents:
   <pre>
+  jalview --open examples/uniref50.fa --colour gecos-flower --image printable.eps
+  jalview --open examples/uniref50.fa --colour gecos-flower --image printable.postscript --type eps
+  jalview --open examples/uniref50.fa --colour gecos-flower --image [type=eps]printable.postscript
   </pre>
   </p>
 
+  <h3><a name="textrenderer"></a><code>--textrenderer</code></h3>
 
-  <h2><a name="filenamesubstitutionsandbatchprocessing"></a>Filename substitutions and batch processing (<code>--substitutions</code>, <code>--new</code>, <code>--close</code>, <code>--all</code>)</h2>
+  <p>
+  In a vector format any text that appears on the page (including residue/base labels) can be saved in the image file either as <code>text</code> or as <code>lineart</code> using the <code>--textrenderer</code> argument.  This is only available for <code>eps</code>, <code>svg</code> and <code>html</code> formats.
+  </p>
 
-  <h3><a name=""></a><code>--</code></h3>
+  <p>
+  The difference is potentially in the appearance of the file, and definitely in the filesize!  Saving with <code>text</code> requires the font used to display the text characters in the alignment to be present on the viewing platform to look exactly the same.  If it isn't then another suitable font will probably be used.  The filesize using <code>text</code> is relatively small.
+  </p>
+  <p>
+  When using <code>lineart</code> each individual character that appears in the alignment (including names/titles and resisdues/bases) is stored in the image with its own vector lines.  This means that the appearance of the text is retained exactly independent of installed fonts, but the filesize is increased.  You will also be unable to copy what appears to be text as text.
+  </p>
 
   <p>
+  The type of <code>--textrenderer</code> can be specified with an argument following <code>--image</code> or as a sub-value modifier:
   <pre>
+  jalview --open examples/uniref50.fa --colour gecos-flower --image printable.html --type biojs
+  jalview --open examples/uniref50.fa --colour gecos-flower --image [type=eps,textrenderer=lineart]printable.ps
   </pre>
   </p>
 
-  <h3><a name=""></a><code>--</code></h3>
+
+  <h2><a name="filenamesubstitutionsandbatchprocessing"></a>Filename substitutions and batch processing (<code>--substitutions</code>, <code>--close</code>, <code>--all</code>)</h2>
+
+  <p>
+  One of the more powerful aspects of Jalview's command line operations is that stores all of the different opened alignment arguments (before opening them) and can apply some arguments to <em>all</em> of the alignments as they are opened.  This includes display and output arguments.
+  </p>
+
+  <p>
+  When outputting a file you will obviously want to use a different filename for each of the alignments that are opened.  There are several ways you can specify how that filename differs, but the easiest way is to refer to the input filename and change the extension.  In the case of an alignment where multiple files are appended, the filename of the first file to be appended or opened is used.
+  </p>
+
+  <p>
+  To refer to different parts of the opening filename, you can use the strings
+  <ul>
+  <li><code>{dirname}</code> -- is replaced by the directory path to the opened file.</li>
+  <li><code>{basename}</code> -- is replaced by the base of the filename of the opened file. This is without the path or file extension (if there is one).</li>
+  <li><code>{extension}</code> -- is replaced by the extension of the filename of the opened file.</li>
+  </ul>
+  The braces (curly brackets '{', '}') are important!
+  </p>
+
+  <p>
+  These filename substitutions are on by default, but if for whatever reason you wish to disable the substitutions, they can be turned off (or back on again) through the list of arguments with:
+  </p>
+
+  <h3><a name="substitutions"></a><code>--substitutions / --nosubstitutions</code></h3>
 
   <p>
+  Enable (or disable) filename substitutions in the following argument values and sub-value modifier values.
   <pre>
+  jalview --open exampes/uniref50.fa --nosubstitutions --output I_Want_A_Weird_Output_Filname_With_{basename}_Curly_Brackets_In_And_A_Sensible_One_Next.stk --substitutions --output tmp/{basename}.stk --headless
   </pre>
   </p>
 
-  <h3><a name=""></a><code>--</code></h3>
+  <p>
+  For opening single files this is less useful, since you could obviously just type the output filename, but for multiple opened alignments you can also use these substituted values and they will be replaced by the relevant part of the filename given for each opened alignment window.  Normally an <code>--output</code> or <code>--image</code> argument will only be applied to the latest opened alignment window, but you can tell Jalview to apply some arguments to all alignments that have been opened (so far) by using the <code>--all</code> argument.
+  </p>
+
+  <h3><a name="all"></a><code>--all / -noall</code></h3>
 
   <p>
+  When using the <code>--all</code> argument, following arguments will apply to all of the previously opened alignment windows.  You can turn this behaviour off again for following arguments using the <code>--noall</code> argument.  The arguments that can apply to all previously opened alignments are:
+  <br/>
+  <code>--colour</code>
+  <br/>
+  <code>--sortbytree</code>
+  <br/>
+  <code>--showannotations</code>
+  <br/>
+  <code>--wrap</code>
+  <br/>
+  <code>--nostructure</code>
+  <br/>
+  <code>--notempfac</code>
+  <br/>
+  <code>--showssannotations</code>
+  <br/>
+  <code>--image</code>
+  <br/>
+  <code>--type</code>
+  <br/>
+  <code>--textrenderer</code>
+  <br/>
+  <code>--scale</code>
+  <br/>
+  <code>--width</code>
+  <br/>
+  <code>--height</code>
+  <br/>
+  <code>--output</code>
+  <br/>
+  <code>--format</code>
+  <br/>
+  <code>--groovy</code>
+  <br/>
+  <code>--backups</code>
+  <br/>
+  <code>--overwrite</code>
+  <br/>
+  <code>--close</code>
+  </p>
+  <p>
+  In particular, for our example above, we can use <code>-all</code> and <code>--output</code> like this (<code>--close</code> will be explained in a moment):
+  <pre>
+  jalview --open all_my_fasta_files/*.fa --all --output all_my_converted_stockholm_files/{basename}.stk --close --headless
+  </pre>
+  </p>
+
+  <p>
+  Another example would be to create a print quality coloured postscript image for every Fasta file in several directories and place the image next to the alignment:
+  <pre>
+  jalview --open */*.fa --all --colour gecos-flower --image {dirname}/{basename}.eps --textrenderer text --close --headless
+  </pre>
+  or thumbnails for every Fasta file with
   <pre>
+  jalview --open */*.fa --all --colour gecos-flower --image {dirname}/{basename}.png --width 256 --height 256 --close --headless
   </pre>
   </p>
 
-  <h3><a name=""></a><code>--</code></h3>
+  <h3><a name="close"></a><code>--close</code></h3>
 
   <p>
+  The <code>--close</code> tag is used to close an alignment window after all output files or image exports are performed.  This reduces memory use, especially if an <code>--open</code> value is set to open many files.  These will be opened, formatted and output sequentially so since they are closed before the next one is opened memory use will not build up over a large number of alignments.
   <pre>
   </pre>
   </p>
 
-  <h3><a name=""></a><code>--</code></h3>
+
+  <h2><a name="alloutputwildcard"></a>The all output wildcard: <code>--output "*.ext"</code>,  <code>--image "*.ext"</code></h2>
 
   <p>
+  Purely as an intuitive syntactic sweetener, you can use the <code>--output</code> wildcard <code>*</code> <em>at the beginning of the output filename</em> as shorthand for <code>--all --output {dirname}/{basename}</code> followed by whatever you put after the '<code>*</code>'.  For example, to achieve the same as the thumbnails example above, you could use
   <pre>
+  jalview --open */*.fa --image "*.png" --colour gecos-flower --width 256 --height 256 --close --headless
   </pre>
+  Here we move the <code>--colour</code> argument after the <code>--output</code> argument (it will still be applied before the image export or file output) so that it is included after the implied <code>--all</code> argument.  The thumbnails will be placed in the same directory as the alignment file with the same filename except for a different extension of <code>.png</code>.
   </p>
 
-  Continue to <a href="clarguments-advanced.html">Jalview Command Line Arguments: advanced usage</a>.
+  <p>
+  For a simple conversion of many fasta files into Stockholm format, simply use
+  <pre>
+  jalview --open all_my_fasta_files/*.fa --output "*.stk" --close --headless
+  </pre>
+  </p>
 
+  <p>
+  <strong>Important!</strong>  Please note that using a bareword <code>*.ext</code> (i.e. without an escape or quotation marks) in a shell command line will potentially be expanded by the shell to a list of all the files in the current directory ending with <code>.ext</code> <em>before</em> this value is passed to Jalview.  This will result in the first of these files being overwritten (multiple times)!  If you shell-escape the <code>*</code> (usually with a backslash '\') or enclose the value in quotation marks (<code>"*.ext"</code> - that's including the quotation marks) then the shell will not expand the wildcard.
+  </p>
 
+  <p>
+  An alternative is to use an equals sign ('=') with no spaces between the argument and the value, <code>--output=*.ext</code>, which Jalview will interpret the same, but the shell will not automatically expand before it is sent to Jalview, e.g.
+  <pre>
+  jalview --open all_my_fasta_files/*.fa --output=*.stk --close --headless
+  </pre>
+  </p>
+
+  <hr/>
+  Continue to <a href="clarguments-advanced.html">Command Line: advanced usage</a>.
+  <br/>
+  <a href="clarguments-reference.html">Command Line: reference</a>
 
 </body>
 </html>