Htseq-Count-Merge-0.6.1app is used for generating counts from SAM or BAM files generated from aligners such as HISAT2, BWA, STAR, TOPHAT2 etc., This step is necessary for downstream analysis such as differential gene expression using DESeq2 or edgeR etc.,

When you search for HtSeq in DE, you might probably see that there are three different types of apps in there. Here is a summary of what each of the apps is doing

  1. HTSeq-count-0.6.1 - This generates raw counts from BAM files (sorted) but it doesn't generate the combined table of all samples which is what many of the differential expression analysis software such as edgeR and DESeq2 expects
  2. Merge_htseq_count-1.0 - Merge_htseq_count-1.0 app is used for combining the count files generated from apps such as Htseq-count or Featurecount into one table. The Htseq-count and Featurecount apps produce raw counts for individual samples and it is necessary to combine them into a single table for downstream analysis such as differential gene expression using DESeq2 or edgeR
  3. Htseq-Count-Merge-0.6.1 - (This app)

Mandatory arguments

  • Input SAM/BAM files: The alignment_files contains the aligned reads in the SAM or BAM format.

Make sure to use a splicing-aware aligner such as TopHat. HTSeq-count makes full use of the information in the CIGAR field.

  • Annotation file: The annotation file can be either gff_file or gtf_file and contains the features in the GFF format or GTF format


  • Input file type: Format of the input data. Possible values are sam (for text SAM files) and bam (for binary BAM files). The default is sam.

  • Sorting order of Alignment (For paired-end data): For paired-end data, the alignment has to be sorted either by read name or by alignment position. If your data is not sorted, use the samtools sort function of samtools to sort it. Use this option, with name or pos to indicate how the input data has been sorted. The default is "name". If "name" is indicated, htseq-count expects all the alignments for the reads of a given read pair to appear in adjacent records in the input data. For pos, this is not expected; rather, read alignments whose mate alignment have not yet been seen are kept in a buffer in memory until the mate is found. While, strictly speaking, the latter will also work with unsorted data, sorting ensures that most alignment mates appear close to each other in the data and hence the buffer is much less likely to overflow. If you have paired-end data, pay attention to the -r option described below.

  • Strand-specificity: Whether the data is from a strand-specific assay (default: yes). For stranded=no, a read is considered overlapping with a feature regardless of whether it is mapped to the same or the opposite strand as the feature. For stranded=yes and single-end reads, the read has to be mapped to the same strand as the feature. For paired-end reads, the first read has to be on the same strand and the second read on the opposite strand. For stranded=reverse, these rules are reversed. Important: The default for strandedness is yes. If your RNA-Seq data has not been made with a strand-specific protocol, this causes half of the reads to be lost. Hence, make sure to set the option --stranded=no unless you have strand-specific data!

  • Minimum quality: Skip all reads with alignment quality lower than the given minimum value (default: 10 — Note: the default used to be 0 until version 0.5.4.)

  • Feature type: Feature type (3rd column in GFF file) to be used, all features of other type are ignored (default, suitable for RNA-Seq analysis using an Ensembl GTF file: exon)

  • Feature attribute or feature id: GFF attribute to be used as feature ID. Several GFF lines with the same feature ID will be considered as parts of the same feature. The feature ID is used to identity the counts in the output table. The default, suitable for RNA-Seq analysis using an Ensembl GTF file, is gene_id.

  • Mode: Mode to handle reads overlapping more than one feature. Possible values for  the option are union, intersection-strict and intersection-nonempty (default: union)


The script outputs a table with counts for each feature, followed by the special counters, which count reads that were not counted for any feature for various reasons. The names of the special counters all start with a double underscore, to facilitate filtering. (Note: The double underscore was absent up to version 0.5.4). 

  • Output Folder Name for the counts: Name of the output folder for the counts

  • Output File Name: Name of the final merged counts file

Test Run

All files are located in the Community Data directory of the CyVerse Discovery Environment at the following path:

Community Data > iplantcollaborative > example_data > HISAT2-HTseqCount-DeSeq2 (/iplant/home/shared/iplantcollaborative/example_data/HISAT2-HTseqCount-DeSeq2)

Mandatory arguments: 

Input SAM/BAM files:


Annotation file: Sorghum_bicolor.Sorbi1.20.gtf (/iplant/home/shared/iplantcollaborative/example_data/HISAT2-HTseqCount-DeSeq2/Sorghum_bicolor.Sorbi1.20.gtf)


Input file type - BAM

Leave rest of the values as they are (Defaults)


In the case of test run, the output folder contains 'Featured_counts` and `output_final.txt` 

Tool Source for App