7. Frequently Asked Questions

7.1. Can I reduce portcullis’ memory usage?

Portcullis is optimised to reduce memory usage where possible, so in most cases memory usage should not be an issue if you were able to align your reads in the first place. However, if you are encountering out of memory issues, there are a few factors that can influence memory usage in portcullis, particularly during the junction analysis stage. The first is the number of threads used, more threads require more memory. You can therefore reduce memory usage at the expense of runtime. Second, we have an ability to process additional metrics in the junction analysis stage called --extra, this can require large amounts of memory, so unless you really need this option on (there should be no direct impact on the default filtering setup) the switch this off. Finally, the main driver for memory usage is the depth of the dataset, specifically highly covered junctions. Should have have tens of thousands of reads supporting a single junction, all these reads must be kept in memory. You can therefore reduce memory usage by pre-processing the BAM files to either cap the depth (you can use the Kmer Analysis Toolkit to identify high coverage kmers then remove reads associated with those kmers), or downsample using samtools view -s.