> This page is for version v4.8.0 (default).
> For other versions, use one of these documentation indexes:
> - v4.8.0 (default): https://docs.nvidia.com/clara/parabricks/v4.8.0/llms.txt
> - v4.7.1: https://docs.nvidia.com/clara/parabricks/v4.7.1/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/clara/parabricks/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/clara/parabricks/_mcp/server.

# bamsort

Sort BAM files.

This tool can sort the reads within a BAM file in a variety of ways, including
by position in the genome (coordinate) or read name (queryname). This enables
compatibility with the requirements of different downstream tools.

Five sort modes are supported:

* coordinate (Picard-compatible)
* coordinate (fgbio-compatible)
* queryname (Picard-compatible)
* queryname (fgbio-compatible)
* template coordinate sort (fgbio-compatible)

Allowed values for **--sort-order** are as follows:

* coordinate \[default]
* queryname
* templatecoordinate

Allowed values for **--sort-compatibility** are as follows:

* picard \[default]
* fgbio

*coordinate* and *queryname* sorting can be done in either *picard* or *fgbio* mode.
*templatecoordinate* can only be done in fgbio mode.

Refer to the [bamsort Reference](#options) section for a detailed listing of all available options.

## Quick Start

```sh
# This command assumes all the inputs are in the current working directory and all the outputs go to the same place.
docker run --rm --gpus all --volume $(pwd):/workdir --volume $(pwd):/outputdir \
    --workdir /workdir \
    nvcr.io/nvidia/clara/clara-parabricks:4.8.0-1 \
    pbrun bamsort \
    --ref /workdir/${REFERENCE_FILE} \
    --in-bam /workdir/${INPUT_BAM} \
    --out-bam /outputdir/${OUTPUT_BAM} \
    --sort-order coordinate
```

## Compatible Picard Command

The command below is the Picard counterpart of the Parabricks command above. This command
will produce output equivalent to the output from the above command.

```sh
$ java -Xmx30g -jar picard.jar SortSam \
    I=<INPUT_DIR>/${INPUT_BAM} \
    O=<OUTPUT_DIR>/${OUTPUT_BAM} \
    SORT_ORDER=coordinate
```

## Options

| Type        | Name                                            | Required? | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ----------- | ----------------------------------------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| I/O         | `--in-bam IN_BAM`                               | Yes       | Path of BAM/CRAM for sorting. This option is required.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| I/O         | `--out-bam OUT_BAM`                             | Yes       | Path of BAM/CRAM file after sorting.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| I/O         | `--ref REF`                                     | Yes       | Path to the reference file.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Tool        | `--sort-order SORT_ORDER`                       | No        | Type of sort to be done. Possible values are \{coordinate,queryname,templatecoordinate}. (default: coordinate)                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| Tool        | `--sort-compatibility SORT_COMPATIBILITY`       | No        | Sort comparator compatibility to be used for compatibility with other tools. Possible values are \{picard,fgbio}. TemplateCoordinate will only use fgbio. (default: picard)                                                                                                                                                                                                                                                                                                                                                                                 |
| Performance | `--num-zip-threads NUM_ZIP_THREADS`             | No        | Number of CPUs to use for zipping BAM files in a run (default 16 for coordinate sorts and 10 otherwise).                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Performance | `--num-sort-threads NUM_SORT_THREADS`           | No        | Number of CPUs to use for sorting in a run (default 10 for coordinate sorts and 16 otherwise).                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| Performance | `--max-records-in-ram MAX_RECORDS_IN_RAM`       | No        | Maximum number of records in RAM when using a queryname or template coordinate sort mode; lowering this number will decrease maximum memory usage. (default: 65000000)                                                                                                                                                                                                                                                                                                                                                                                      |
| Performance | `--mem-limit MEM_LIMIT`                         | No        | Memory limit in GBs during sorting and postsorting. By default, the limit is 70% of the total system memory.                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| Performance | `--gpuwrite`                                    | No        | Use one GPU to accelerate writing final BAM/CRAM.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Performance | `--gpuwrite-deflate-algo GPUWRITE_DEFLATE_ALGO` | No        | Choose the nvCOMP DEFLATE algorithm to use with --gpuwrite. Note these options do not correspond to CPU DEFLATE options. Valid options are 1, 2, and 4. Option 1 is fastest, while options 2 and 4 have progressively lower throughput but higher compression ratios. The default value is 1 when the user does not provide an input (i.e., None)                                                                                                                                                                                                           |
| Performance | `--gpusort`                                     | No        | Use GPUs to accelerate sorting and marking.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Runtime     | `--verbose`                                     | No        | Enable verbose output.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| Runtime     | `--x3`                                          | No        | Show full command line arguments.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Runtime     | `--dry-run`                                     | No        | Check if the current command is valid.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| Runtime     | `--logfile LOGFILE`                             | No        | Path to the log file. If not specified, messages will only be written to the standard error output.                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| Runtime     | `--tmp-dir TMP_DIR`                             | No        | Full path to the directory where temporary files will be stored. (default: .)                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| Runtime     | `--with-petagene-dir WITH_PETAGENE_DIR`         | No        | Full path to the PetaGene installation directory. By default, this should have been installed at /opt/petagene. Use of this option also requires that the PetaLink library has been preloaded by setting the LD_PRELOAD environment variable. Optionally set the PETASUITE_REFPATH and PGCLOUD_CREDPATH environment variables that are used for data and credentials. Optionally set the PetaLinkMode environment variable that is used to further configure PetaLink, notably setting it to "+write" to enable outputting compressed BAM and .fastq files. |
| Runtime     | `--keep-tmp`                                    | No        | Do not delete the directory storing temporary files after completion.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| Runtime     | `--no-seccomp-override`                         | No        | Do not override seccomp options for docker.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Runtime     | `--version`                                     | No        | View compatible software versions.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| Runtime     | `--preserve-file-symlinks`                      | No        | Override default behavior to keep file symlinks intact and *not* resolve the symlink.                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| Runtime     | `--help-json`                                   | No        | Print out help message in JSON format.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |