=======================
IGV DISTRIBUTION
=======================

Prerequisites:

Java 17 or greater is required.  A free open source distributions of Java is available at https://adoptium.net/.


Instructions:
-------------

1. Download and unzip the distribution file to a directory of your choice.

2. To start IGV execute one of the following launcher scripts from the command line:

igv-launcher.bat  (for Windows)
igv.bat           (for Windows batch jobs)
igv.sh            (for Linux and macOS)
igv_hidpi.sh      (for Linux with HiDPI displays)
igv.command       (for macOS, double-click to start)

Some of these may not be present depending on the distribution you downloaded.  You might have to
make the script executable (e.g. chmod a+x igv.sh) depending on the way the bundle was unpacked.


Advanced options follow -- these are not common:
------------------------------------------------

The bat and shell scripts are configured to start IGV with 4GB of memory.  This is a 
reasonable default for most machines but if you are working with very large datasets
you can override this setting (and other Java-related defaults) by editing IGV's
java_arguments file, found here (create it if it doesn't exist):
   $HOME/.igv/java_arguments           (Mac and Linux)
   %USERPROFILE%/.igv/java_arguments   (Windows)

Specifically set the value of the "-Xmx" parameter, which will be commented-out (with
a '#' character) by default when this file is created.  For example, to start IGV with 
8 GB of memory, uncomment this line and set the value to 

   -Xmx8g

This will override the default 4GB memory specification.

Other Java-related command-line options can also be set in this file, though changing anything
beyond the memory specification is for advanced users only and is not recommended.  See
   https://docs.oracle.com/en/java/javase/11/tools/java.html
for more information on the Java 11 command line, and
   https://docs.oracle.com/en/java/javase/11/tools/java.html#GUID-4856361B-8BFD-4964-AE84-121F5F6CF111
in particular for specifics of the "java_arguments" file format.

The igv_hidpi.sh script is set up for 2x scaling.  To modify it to do 4x scaling, for 
example, change the value

   -Dsun.java2d.uiScale=2

to

   -Dsun.java2d.uiScale=4


Fractional values are *NOT* supported at this time.  Note that here again, you can add
this specification to the java_arguments file instead of editing the launcher scripts.
Doing so will allow the standard 'igv.sh' to work properly on HiDPI screens without
the need for the 'igv_hidpi.sh' script.

Java command-line usage

We don't recommend running IGV directly as a Java command-line launch as this has become more complex
with Java 11 compared to Java 8.  We recommend the launcher scripts listed above instead.  The following 
is for advanced users only.

If it's really necessary to use the Java command directly for some reason, here is the appropriate 
command-line.  To use the default Java, independently installed (java 11 required)

     java --module-path=lib -Xmx4g @igv.args --module=org.igv/org.broad.igv.ui.Main
     
To use the java included with our packaged bundles substitute "./jdk-21/bin/java" for "java", as follows.

    ./jdk-21/bin/java --module-path=lib -Xmx4g @igv.args --module=org.igv/org.broad.igv.ui.Main

The above commands assume that you are launching IGV from the directory where it was unpacked.

Note that this lists the memory specification directly, and that the java_arguments file will be skipped.
If you wish to use the java_arguments file (assuming one exists), modify the above to (substituting ./jdk-21/bin/java for java as required):

     java --module-path=lib @igv.args @"$HOME/.igv/java_arguments" --module=org.igv/org.broad.igv.ui.Main

on Linux & Mac.  On Windows, use:

java --module-path=lib @igv.args @"%USERPROFILE%/.igv/java_arguments" --module=org.igv/org.broad.igv.ui.Main

In this case you can list the memory spec, HiDPI uiScaling, log4j config, etc either directly on the 
command-line  or in the java_arguments file, as you prefer.
