RNAlysis 4.1.2
RNAlysis is an analysis software for RNA sequencing data. RNAlysis can help to filter, visualize, explore, analyze, and share your data.
License: MIT license
Requires Python: <3.14,>=3.10
Keywords: RNAlysis

.. image:: https://raw.githubusercontent.com/GuyTeichman/RNAlysis/master/docs/source/logo.png
    :target: https://guyteichman.github.io/RNAlysis
    :width: 250
    :align: center
    :alt: logo


`Documentation <https://guyteichman.github.io/RNAlysis>`_ |
`Source code <https://github.com/GuyTeichman/RNAlysis>`_ |
`Bug reports <https://github.com/GuyTeichman/RNAlysis/issues>`_ |
|pipimage| | |versionssupported| |
|githubactions| | |coveralls| | |downloads|

----

🧬 What is *RNAlysis*?
----------------------

*RNAlysis* is a powerful, user-friendly software that allows you to analyze your RNA sequencing data without writing a single line of code.
This Python-based tool offers a complete solution for your RNA-seq analysis needs, from raw data processing to advanced statistical analyses and beautiful visualizations, all through an intuitive graphical interface.

----

🎥 See *RNAlysis* in Action
---------------------------

|quicksearch|

*Instantly access gene information from various biological databases with a simple right-click.*

|setops|

*Perform advanced set operations to extract and analyze specific subsets of your data.*

|autoreport|

*Easily generate comprehensive and intuitive analysis reports to promote reproducibility. Track the entire analysis path with just a click!*


----

🚀 Key Features
----------------

- **Code-Free Analysis**: Perform complex analyses with just a few clicks.
- **Comprehensive Analysis Pipeline**: From data import to enrichment analysis, all in one place.
- **Interactive Visualizations**: Explore your data with dynamic, publication-ready graphs.
- **Customizable Workflows**: Build and share analysis pipelines tailored to your research questions.
- **Integration with Popular Tools**: Seamless compatibility with DESeq2, kallisto, bowtie2, and more.
- **Rapid Gene Information Lookup**: Instantly access gene information from various biological databases.
- **Advanced Set Operations**: Easily extract and analyze specific subsets of your data.
- **Reproducible Research**: Generate comprehensive, interactive analysis reports with a single click.

To get an overview of what *RNAlysis* can do, read the `tutorial <https://guyteichman.github.io/RNAlysis/build/tutorial.html>`_ and the `user guide <https://guyteichman.github.io/RNAlysis/build/user_guide.html>`_.

----



🛠️ How do I install it?
------------------------
You can either install *RNAlysis* as a stand-alone app, or via PyPI.
To learn how to install *RNAlysis*, visit the `Installation page <https://guyteichman.github.io/RNAlysis/build/installation.html>`_.

----


📊 How do I use it?
---------------------
If you installed *RNAlysis* as a stand-alone app, simply open the app ("RNAlysis.exe" on Windows, "RNAlysis.dmg" on MacOS) and wait for it to load (it may take a minute or two, so be patient!).

If you installed *RNAlysis* from PyPi, you can launch *RNAlysis* by typing the following command::

    rnalysis-gui

Or through a python console::

    >>> from rnalysis import gui
    >>> gui.run_gui()

In addition, you can write Python code that uses *RNAlysis* functions as described in the `programmatic interface user guide <https://guyteichman.github.io/RNAlysis/build/user_guide.html>`_.

----

Dependencies
------------
All of *RNAlysis*'s dependencies can be installed automatically via PyPI.

* `numpy <https://numpy.org/>`_
* `polars <https://pola.rs/>`_
* `pandas <https://pandas.pydata.org/>`_
* `scipy <https://www.scipy.org/>`_
* `matplotlib <https://matplotlib.org/>`_
* `numba <http://numba.pydata.org/>`_
* `requests <https://github.com/psf/requests/>`_
* `scikit-learn <https://scikit-learn.org/>`_
* `kmedoids <https://github.com/kno10/python-kmedoids>`_
* `hdbscan <https://github.com/scikit-learn-contrib/hdbscan>`_
* `seaborn <https://seaborn.pydata.org/>`_
* `statsmodels <https://www.statsmodels.org/>`_
* `joblib <https://joblib.readthedocs.io/en/latest/>`_
* `tqdm <https://github.com/tqdm/tqdm>`_
* `appdirs <https://github.com/ActiveState/appdirs>`_
* `grid_strategy <https://github.com/matplotlib/grid-strategy>`_
* `pyyaml <https://github.com/yaml/pyyaml>`_
* `UpSetPlot <https://github.com/jnothman/UpSetPlot>`_
* `matplotlib-venn <https://github.com/konstantint/matplotlib-venn>`_
* `xlmhglite <https://github.com/GuyTeichman/xlmhglite>`_
* `pairwisedist <https://github.com/GuyTeichman/pairwisedist/>`_
* `typing_extensions <https://github.com/python/typing_extensions>`_
* `PyQt6 <https://www.riverbankcomputing.com/software/pyqt/>`_
* `qdarkstyle <https://github.com/ColinDuquesnoy/QDarkStyleSheet>`_
* `defusedxml <https://https://github.com/tiran/defusedxml>`_
* `cutadapt <https://github.com/marcelm/cutadapt>`_
* `aiohttp <https://docs.aiohttp.org/>`_
* `aiodns <https://github.com/saghul/aiodns>`_
* `aiolimiter <https://aiolimiter.readthedocs.io/>`_
* `Brotli <https://github.com/google/brotli>`_
* `networkx <https://networkx.org>`_
* `pyvis <https://github.com/WestHealth/pyvis>`_
* `tenacity <https://github.com/jd/tenacity>`_

----

Credits
-------

How do I cite *RNAlysis*?
**************************
If you use *RNAlysis* in your research, please cite::

    Teichman, G., Cohen, D., Ganon, O., Dunsky, N., Shani, S., Gingold, H., and Rechavi, O. (2023).
    RNAlysis: analyze your RNA sequencing data without writing a single line of code. BMC Biology, 21, 74.
    https://doi.org/10.1186/s12915-023-01574-6

If you use the *CutAdapt* adapter trimming tool in your research, please cite::

    Martin, M. (2011). Cutadapt removes adapter sequences from high-throughput sequencing reads.
    EMBnet.journal, 17(1), pp. 10-12.
    https://doi.org/10.14806/ej.17.1.200

If you use the *kallisto* RNA sequencing quantification tool in your research, please cite::

    Bray, N., Pimentel, H., Melsted, P. et al.
    Near-optimal probabilistic RNA-seq quantification.
    Nat Biotechnol 34, 525–527 (2016).
    https://doi.org/10.1038/nbt.3519

If you use the bowtie2 aligner in your research, please cite::

    Langmead, B., and Salzberg, S.L. (2012).
    Fast gapped-read alignment with Bowtie 2. Nat. Methods 2012 94 9, 357–359.
    https://doi.org/10.1038/nmeth.1923

If you use the ShortStack aligner in your research, please cite::

    Axtell, MJ. (2013).
    ShortStack: Comprehensive annotation and quantification of small RNA genes. RNA 19:740-751.
    https://doi.org/10.1261/rna.035279.112


If you use the *DESeq2* differential expression tool in your research, please cite::

    Love MI, Huber W, Anders S (2014).
    “Moderated estimation of fold change and dispersion for RNA-seq data with DESeq2.”
    Genome Biology, 15, 550.
    https://doi.org/10.1186/s13059-014-0550-8

If you use the *Limma-Voom* differential expression pipeline in your research, please cite::

    Ritchie, M.E., Phipson, B., Wu, D., Hu, Y., Law, C.W., Shi, W., and Smyth, G.K. (2015).
    limma powers differential expression analyses for RNA-sequencing and microarray studies.
    Nucleic Acids Res. 43, e47–e47.
    https://doi.org/10.1093/nar/gkv007

    Law, C.W., Chen, Y., Shi, W., and Smyth, G.K. (2014).
    Voom: Precision weights unlock linear model analysis tools for RNA-seq read counts.
    Genome Biol. 15, 1–17.
    https://doi.org/10.1186/gb-2014-15-2-r29


If you use the *HDBSCAN* clustering feature in your research, please cite::

     L. McInnes, J. Healy, S. Astels, hdbscan: Hierarchical density based clustering
    Journal of Open Source Software, The Open Journal, volume 2, number 11. 2017
    https://doi.org/10.1371/journal.pcbi.0030039

If you use the *XL-mHG* single-set enrichment test in your research, please cite::

    Eden, E., Lipson, D., Yogev, S., and Yakhini, Z. (2007).
     Discovering Motifs in Ranked Lists of DNA Sequences. PLOS Comput. Biol. 3, e39.
    https://doi.org/10.1371/journal.pcbi.0030039>doi.org/10.1371/journal.pcbi.0030039</a>

    Wagner, F. (2017). The XL-mHG test for gene set enrichment. ArXiv.
    https://doi.org/10.48550/arXiv.1507.07905

If you use the *Ensembl* database in your research, please cite::

    Martin FJ, Amode MR, Aneja A, Austine-Orimoloye O, Azov AG, Barnes I, et al.
    Ensembl 2023. Nucleic Acids Res [Internet]. 2023 Jan 6;51(D1):D933–41.
    doi.org/10.1093/nar/gkac958

If you use the *PANTHER* database in your research, please cite::

    Thomas PD, Ebert D, Muruganujan A, Mushayahama T, Albou L-P, Mi H.
    PANTHER: Making genome-scale phylogenetics accessible to all. Protein Sci [Internet]. 2022 Jan 1;31(1):8–22.
    doi.org/10.1002/pro.4218

If you use the *OrthoInspector* database in your research, please cite::

    Nevers Y, Kress A, Defosset A, Ripp R, Linard B, Thompson JD, et al.
    OrthoInspector 3.0: open portal for comparative genomics. Nucleic Acids Res [Internet]. 2019 Jan 8;47(D1):D411–8.
    doi.org/10.1093/nar/gky1068

If you use the *PhylomeDB* database in your research, please cite::

    Fuentes D, Molina M, Chorostecki U, Capella-Gutiérrez S, Marcet-Houben M, Gabaldón T.
    PhylomeDB V5: an expanding repository for genome-wide catalogues of annotated gene phylogenies. Nucleic Acids Res [Internet]. 2022 Jan 7;50(D1):D1062–8.
    doi.org/10.1093/nar/gkab966

If you use the *UniProt* gene ID mapping service in your research, please cite::

    The UniProt Consortium.
    UniProt: the Universal Protein Knowledgebase in 2023. Nucleic Acids Res [Internet]. 2023 Jan 6;51(D1):D523–31.
    doi.org/10.1093/nar/gkac1052

Development Lead
******************

* Guy Teichman: guyteichman@gmail.com

Contributors
*************

* Dror Cohen
* Or Ganon
* Netta Dunsky
* Shachar Shani
* `Mintxoklet <https://github.com/Mintxoklet>`_
* `Bipin Kumar <https://github.com/kbipinkumar>`_
* Matthias Wilm
* `sandyl27 <https://github.com/sandyl27>`_
* `clockgene <https://github.com/clockgene>`_
* `NeuroRookie <https://github.com/NeuroRookie>`_

----

This package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.

.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage



.. |pipimage| image:: https://img.shields.io/pypi/v/rnalysis.svg
    :target: https://pypi.python.org/pypi/rnalysis
    :alt: PyPI version
.. |downloads| image:: https://pepy.tech/badge/rnalysis
    :target: https://pepy.tech/project/rnalysis
    :alt: Downloads
.. |versionssupported| image:: https://img.shields.io/pypi/pyversions/RNAlysis.svg
    :target: https://pypi.python.org/pypi/rnalysis
    :alt: Python versions supported

..  |githubactions| image:: https://github.com/guyteichman/RNAlysis/actions/workflows/build_ci.yml/badge.svg
    :target: https://github.com/GuyTeichman/RNAlysis/actions/workflows/build_ci.yml
    :alt: Build status

.. |coveralls| image:: https://coveralls.io/repos/github/GuyTeichman/RNAlysis/badge.svg?branch=master
    :target: https://coveralls.io/github/GuyTeichman/RNAlysis?branch=master
    :alt: Coverage
    :align: middle

..  |quicksearch| image:: https://github.com/GuyTeichman/RNAlysis/raw/master/rnalysis/gui/videos/quick_search.webp
    :alt: Rapid Gene Information Lookup
    :width: 600px


.. |setops| image:: https://github.com/GuyTeichman/RNAlysis/raw/master/rnalysis/gui/videos/set_operations.webp
    :alt: Set Operations
    :width: 600px


.. |autoreport| image:: https://github.com/GuyTeichman/RNAlysis/raw/master/rnalysis/gui/videos/report_overview.webp
    :alt: Interactive Analysis Report
    :width: 600px


=======
History
=======

4.1.2 (2025-06-04)
-------------------

Changed
*******
* Added Python 3.13 support

Fixed
******
* Fixed bug that caused Windows standalone version to sometimes fail to launch
* Fixed bug that caused RNAlysis to crash when trying to clear app cache without write access

4.1.1 (2025-01-11)
-------------------

Changed
*******
* Updated dependency versions
* Made jdk an optional dependency

Fixed
******
* Fixed bug where kallisto quantification would sometimes fail to sum transcripts to genes properly.
* Fixed bug where automatic mapping of gene IDs would sometimes raise an exception.

4.1.0 (2024-09-16)
-------------------
Version 4.1.0 of RNAlysis features improved performance and stability across the board, thanks to a switch to Qt6 and Numpy 2.


Changed
*******
* RNAlysis now runs on Qt6 instead of Qt5. This change should improve both performance and stability across RNAlysis.
* When importing parameters for differential expression analysis, RNAlysis will now automatically load the design matrix and chosen comparisons. This should work even with parameters that were exported in previous versions of RNAlysis.
* Made small improvements to the RNAlysis graphical interface.
* RNAlysis and its dependencies now run on Numpy 2 instead of Numpy 1.
* RNAlysis now uses a different implementation of the K-Medoids clustering algorithm, which should be more stable and faster than the previous implementation. However, note that the two implementations may give slightly different results.
* When running differential expression or feature counting, RNAlysis session reports will automatically include a logfile with R session info.
* Added optional parameters to all differential expression functions, allowing users to return a path to a logfile with R session info.

Fixed
******
* Fixed bug where table previews in the graphical interface would sometimes fail to update when applying functions inplace.

4.0.0 (2024-06-29)
-------------------
Version 4.0.0 of RNAlysis introduces two major improvements:
First, the software has switched from Pandas to Polars, which should substantially improve overall performance, particularly when generating automatic analysis reports.

Second, significant enhancements have been made to the automatic analysis reports.
These include new interactive features such as the ability to highlight analysis paths and filter the report by node types,
improved hierarchical layout for better readability, performance optimizations, and additional customization options.
The reports now offer a more comprehensive and user-friendly way to navigate and understand analysis workflows.

This update also includes various bug fixes and minor improvements to other functions within the software.

Happy analysis!

Added
******
* Added additional optional parameters to automatic report generation.
* Added additional parameters to 'Hierarchical clustergram plot' (CountFilter.clustergram).

Changed
*******
* RNAlysis now uses Polars instead of Pandas. This change should improve the performance of RNAlysis by an order of magnitude, especially when generating automatic analysis reports.
* Automatic analysis reports are now laid out in a hierarchical structure, making it easier to navigate through the report.
* When clicking on a node in an automatic analysis report, the analysis path leading to that node will be highlighted.
* When clicking on a legend node in an automatic analysis report, all nodes of that type will be highlighted.
* The 'Hierarchical clustergram plot' function should now run faster on large datasets.
* Added support for running tasks using 'sequential' backend on standalone releases of RNAlysis.

Fixed
******
* Fixed bug where the visualization functions 'Plot histogram of p-values' and 'Histogram of a column' would not display a graph immediately when using the stand-alone app.
* Fixed bug re-loading a saved session report would sometimes lead to missing connections in the analysis flow graph.
* Fixed bug where applying not-inplace operations to differential expression tables would change the expected name of the p-value column.
* Fixed bug where table previews in automatic analysis reports would display an extra empty line.

Backwards-incompatible changes
*******************************
* Since RNAlysis now uses Polars instead of Pandas, all functions that previously returned Pandas DataFrames will now return Polars DataFrames. To keep your code compatible with the new version, you may need to adjust the way you interact with the returned DataFrames, or convert them back into Pandas DataFrames.
* Sessions saved with previous versions of RNAlysis are mostly compatible with RNAlysis 4.0.0, but some of the new features of automatic analysis reports (such as highlighting the report by node type) may not work in older sessions.

3.12.0 (2024-05-14)
-------------------
I'm happy to announce the latest release of RNAlysis, which brings a variety of new features and improvements.

One of the key additions in this version is expanded support for advanced differential expression analysis using DESeq2 and Limma-Voom.
You can now test continuous covariates, perform likelihood ratio tests for factors, interactions, and polynomials, and take advantage of sample quality weights in Limma-Voom analysis.
We've also added several new visualization options, such as a p-value histogram plot and more customization choices for gene expression plots.

This release also includes various usability enhancements and bug fixes to provide a smoother analysis experience. We've clarified error messages, improved parameter annotations, and resolved issues that could lead to crashes or incorrect results in certain scenarios. RNAlysis now integrates with the latest versions of the OrthoInspector and ShortStack APIs as well.

As always, your support and feedback are greatly appreciated.
If you have any questions, encounter issues, or have suggestions for future development, please don't hesitate to reach out.
Happy analysis!
Guy

Added
******
* Added support for advanced differential expression analysis with DESeq2/Limma-Voom, including testing continuous covariates, as well as likelihood ratio tests for factors, interactions, and polynomials.
* Added support for sample quality weights in Limma-Voom differential expression analysis.
* Added support for the 'cooksCutoff' parameter in DESq2 differential expression analysis.
* Added support for user-provided scaling factors in DESeq2 differential expression analysis.
* bowtie2 and kallisto paired-end modes now support the new file naming method 'smart', that attempts to automatically determine the common name of each pair of paired-end fastq files.
* Added a p-value histogram plot (DESeqFilter.pval_histogram) that displays the distribution of p-values in a differential expression table.
* Added new visualization options for 'plot expression of specific genes' function (CountFilter.plot_expression).
* Added new function 'Histogram of a column' (Filter.histogram) that generates a histogram of a column in a table.
* Added new function 'Concatenate two tables' (Filter.concatenate) that concatenates two tables along their rows.
* The filtering function 'Filter with a number filter' now supports filtering based on absolute values.

Changed
********
* When running differential expression analysis, RNAlysis will automatically ensure that the order of samples in your design matrix matches the order of samples in your count matrix, avoiding erronious results.
* The 'Filter genes with low expression in all columns' function (CountFilter.filter_low_reads) now supports the 'n_samples' parameter, allowing users to filter genes with a minimal expression threshold in a specific number of samples.
* The 'Plot expressino of specific genes' function (CountFilter.plot_expression) now supports the 'jitter', 'group_names' and 'log_scale' parameters, allowing users to further customize the plot.
* The 'Scatter plot - sample VS sample' function (CountFilter.scatter_sample_vs_sample) now always displays highlighted points on top of the plot, making it easier to see which points are highlighted.
* Kallisto quantification (kallisto_quantify_single_end and kallisto_quantify_paired_end) now supports the 'summation_method' parameter, allowing users to choose between 'raw' and 'scaled_tpm' transcript summation methods. The default behavior of the functions did not change (it corresponds to 'scaled_tpm').
* Enrichment bar plots now have optional parameters that control font sizes for titles and labels.
* Moved the enrichment analysis and enrichment graphs actions to the "Enrichment" menu in the graphical interface to make the actions easier to find.
* Improved the clarity of error messages when attempting to read an invalid GTF file.
* RNAlysis now supports the latest version of OrthoInspector API.
* RNAlysis now supports the latest version of Ensembl Ortholog API.
* Improved annotation for the 'metric' parameter of the 'Hierarchical clustergram plot' function (CountFilter.clustergram).
* Improved performance of RNAlysis when generating automatic session reports.
* RNAlysis now offers default values for differential expression tables' column names.
* Functions that average replicates now display clearer group names by default.
* The RNAlysis interface to ShortStack now uses the most recent API (replaced 'knownRNAs' with 'known_miRNAs').
* When running differential expression, RNAlysis session reports will automatically include the auto-generated R script, as well as the sanitized design matrix used.
* Added optional parameters to all differential expression functions, allowing users to return a path to the auto-generated R script and data sanitized design matrix used.

Fixed
*******
* Fixed bug where some FASTQ/SAM functions could not be added to a FASTQ pipeline.
* Fixed bug where bowtie2 could not be run in/from directories with spaces in their names.
* Fixed bug where RNAlysis would crash when launched without an internet connection.
* Fixed bug that cause ID-mapping functions to raise an error when called from the MacOS stand-alone app (thanks to `Mitchzw <https://github.com/Mitchzw>`_ in `#34 <https://github.com/GuyTeichman/RNAlysis/issues/34>`_).
* Fixed bug that caused R package installations (DESeq2, limma, etc) to fail on some computers (thanks to `Celine-075 <https://github.com/Celine-075>`_ in `#35 <https://github.com/GuyTeichman/RNAlysis/issues/35>`_).
* Fixed bug where Limma-Voom differential expression would fit numerical covariates as categorical factors.
* Fixed bug where generating enrichment bar plots with ylim='auto' would cause bars with 100% depletion (log2FC=-inf) to disappear.
* Fixed bug where defining 10 or more sample groups in the graphical interface would cause the groups to be ordered incorrectly in graphs.
* Fixed bug where the 'return_scaling_factors' argument would not return the normalization scaling factors on the graphical interface.
* Fixed various visual issues in the graphical interface
* Fixed bug where the 'filter_by_row_sum' function would raise an error when the table contains non-numerical columns
* Fixed bug where running enrichment on an empty gene set would raise an error.
* Fixed bug where RNAlysis would suggest resuming an auto-report from loaded session even when auto-report is turned off.
* Fixed bug where disabling auto-report in the middle of the session would raise errors when trying to create new graphs.
* Fixed bug where generating multiple gene expression plots (split_plots=True) with auto-generated report would only add the last graph to the session report.
* Fixed bug where the function 'normalize_to_quantile' generated unclear table names.
* Fixed bug where sometimes the first operation performed in a session would not display correctly in the automatic session report.

New Contributors
*****************
* `Mitchzw`_ in `#34`_
* `Celine-075`_ in `#35`_

3.11.0 (2024-01-05)
-------------------
This release brings several exciting new features.
Notably, these inclue the ability to run functions from the Picardtools suite, and the ability to automatically save interactive session reports and later resume them from any saved session.
In addition, this release includes several visual upgrades, bug fixes, and quality-of-life improvements.
Happy analysis!

Added
*******
* *RNAlysis* can now run functions from the Picardtools suite, including conversion functions (BAM to SAM, SAM to FASTQ, FASTQ to SAM, etc), quality control (validate SAM), and post-processing functions (remove PCR duplicates, sort SAM, create BAM index).
* *RNAlysis* interactive session reports can now be resumed from any saved session, instead of having to start a new report from scratch. When loading a session created by *RNAlysis* 3.11 and beyond, you will have the option to resume the interactive report from the last saved state.

Changed
********
* CutAdapt adapter trimming functions can now receive an optional "new_filenames" parameter, which allows users to specify the names of the output files.
* Hierarchical clustergram plot (CountFilter.clustergram) now supports the 'colormap' parameter, which allows users to specify a custom color map for the plot.
* Hierarchical clustergram plot (CountFilter.clustergram) now displays continuous values on the color bar, instead of discrete values.
* Generally improved the looks of Hierarchical clustergram plot (CountFilter.clustergram).
* Previously-added functions (such as ortholog/paralog mapping, biotype summary by GTF file, etc) can now be applied to gene sets. Previously, some of these functions could only be applied to data tables.

Fixed
*******
* Function "Summarize feature biotypes (based on a reference table)" (biotypes_from_ref_table) now treats rows with missing values as "_missing_from_biotype_reference" instead of ignoring them entirely.
* Fixed bug where the Ensembl paralog-finding function would appear under the wrong tab in the graphical interface.
* Fixed bug where the description of the MA Plot function and parameters would not display correctly in the graphical interface.

3.10.1 (2023-11-22)
-------------------
Version 3.10.1 introduces several bug fixes, as well as well as support for random effect analysis in Limma-Voom differential expression.

Added
*******
* Limma-Voom differential expression can now fit mixed linear models containing a random effect (e.g. nested design).


Fixed
*******
* Fixed bug where trying to load sessions created with RNAlysis version 3.10.0 would result in an error.
* Fixed bug where using the OrthoInspector ortholog mapping function with database='auto' would sometimes fail to find an appropriate mapping database, even when one exists.
* Fixed bug where kallisto paired-end quantification window would display the 'read1' and 'read2' parameters twice.
* Fixed bug where empty sub-menus would appear under the FASTQ menu. These sub-menus will be implemented in future versions of RNAlysis.

3.10.0 (2023-10-31)
-------------------
I'm thrilled to introduce RNAlysis version 3.10.0.
This version includes features that were requested by users for a while, alongside quality-of-life improvements and bug fixes.
Here is a brief highlight of the most important additions:

**Ortholog Mapping:** *RNAlysis* can now map genes to their closest orthologs in different organisms.
You can map genes to their orthologs using four different databases - Ensembl, Panther, PhylomeDB, and OrthoInspector - extracting both one-to-one and one-to-many ortholog relationships and filtering them based on their reliability.

**Discovering Paralogs:** In the same vein, *RNAlysis* now facilitates the discovery of paralogs within a specific organism, using either the Ensembl or Panther databases.

**New visualization and analysis options for Principal Component Analysis (PCA):** We've introduced new functions and parameters to allow you to get more out of your principal component analysis.

I would also like to extend my personal apology for the delay in bringing you this update.
Due to personal reasons, this release, originally scheduled for the end of August, took longer than expected.
Your patience and support have been invaluable, and I'm eager to share these exciting additions with you.
Thank you for being a part of the RNAlysis community, and stay tuned for more updates in the near future!

Added
*******
* Added new functions to the filtering module that map genes to their closest orthologs in a different organism, using four different databases: Ensembl, Panther, PhylomeDB, and OrthoInspector.
* Added new functions to the filtering module that find paralogs of genes in a given organism, using two different databases: Ensembl and Panther.
* Added new function 'Sort table by contribution to a Principal Component (PCA)' (CountFilter.sort_by_principal_component), which allows sorting of genes in a count matrix by their contribution (gene loadings) to a principal component.
* Added a new parameter called 'legend' to 'Principal Component Analysis (PCA) plot' (CountFilter.pca), which allows users to display a legend on the PCA plot with a name for each sample group/color.

Changed
********
* RNAlysis now issues a warning when users run PCA or PCA-based functions on an unnormalized count matrix.
* The 'seek_fusion_genes' and 'learn_bias' arguments for kallisto quantification (fastq.kallisto_quant_single_end and fastq.kallisto_quant_paired_end), which were depracated in kallisto versions >0.48, are no longer displayed on the graphical interface. Old Pipelines that contain these arguments will still run, but new Pipelines will not contain them.
* Long-running functions now run in the background even when the 'inplace' parameter is set to True, instead of freezing the entire graphical interface.

Fixed
*******
* Fixed bug where functions would sometimes fail to run without displaying an error message.
* Fixed bug where progress bars in the graphical interface would sometimes not disappear after reaching 100% completion.
* RNAlysis should no longer display warning messages about graph layout when graphs are scaled down.
* Fixed bug where the clustergram function (CountFilter.clustergram) would raise an error with specific sets of dependecy versions.
* Loading tables no longer raises a depracation warning when using newer versions of Pandas.

3.9.2 (2023-06-23)
------------------
This patch contains bug fixes and improved functionality for enrichment lollipop plots,
as well as bug fixes for issues with the stand-alone version.

Changed
********
* Single-set enrichment result tables now contain observed/expected values based on the XL-mHG test cutoff.
* When loading a differential expression design matrix, RNAlysis now issues an error if the design matrix column names contain invalid characters.
* Updated the scaling of enrichment lollipop plots to make small 'observed' values easier to discern.

Fixed
*******
* Fixed bug where an error message would sometimes appear after RNAlysis finishes generating an automatic session report on the stand-alone app.
* Fixed bug where enrichment lollipop plots in horizontal mode would display the observed/expected values in reverse order.
* Fixed bug where enrichment lollipop plots and the 'show_exp' parameter would not work on single-set enrichment data.
* Fixed bug where sometimes the tab label of clustering/differential expression output tables would not match the name of the generated table.

3.9.1 (2023-06-19)
------------------

Version 3.9.1 of RNAlysis introduces several improvements and fixes to further improve your analysis experience.
The release includes new optional parameters for single-set enrichment functions, compatibility improvements with newer Python versions,
improved error messaging for R scripts, and adresses minor issues related to enrichment analysis, documentation, plotting parameters, and Pipeline saving.

Added
*******
* Added new optional parameters to single-set enrichment functions, allowing users to determine the top and bottom cutoffs for the XL-mHG test ("X" and "L").

Changed
********
* RNAlysis single-set enrichment analysis using the XL-mHG test now supports Python versions >= 3.8.
* RNAlysis stand-alone app is now built on Python 3.11, improving overall performance.
* Error messages caused by running R tools such as DESeq2, Limma-Voom, and FeatureCounts will now clearly state the reason the script failed, making it easier to understand what went wrong.

Fixed
*******
* Fixed bug where enrichment analysis would raise an error when running enrichment analysis on a gene set with no relevant annotations, or a gene set that does not intersect at all with the background gene set.
* Added missing documentation for plotting parameters in some enrichment functions.
* Depracation Warning should no longer appear when generating a box-plot or enhanced box-plot with scatter=True (CountFilter.box_plot, CountFilter.enhanced_box_plot)
* Fixed bug in featureCounts single-end mode where the 'output_folder' parameter could appear as disabled.
* Fixed bug where RNAlysis would raise an error message after saving a Pipeline, even when the Pipeline was saved successfully.

3.9.0 (2023-06-09)
------------------
Version 3.9.0 of *RNAlysis* introduces several enhancements and fixes to improve your experience.
The release includes additional enrichment plot styles, a new option for PCA plots,
the ability to load and save data tables in Parquet format, and new actions in the Help menu for reporting issues and suggesting improvements.
The update also improves the performance of various functions, ensures consistency in font and theme settings,
and addresses multiple bug fixes, including issues with automatic session reports and visualization functions.

Added
*******
* Added additional parameters to enrichment bar plots (enrichment.enrichment_bar_plot), including a new plot style ('lollipop') and observed/expected labels on the graph.
* Added a new parameter to Principal Component Analysis plots (CountFilter.pca) 'plot_grid', which can enable or disable adding a grid to PCA plots.
* RNAlysis can now load and save data tables in Parquet format (.parquet)
* Added new actions to the Help menu, allowing users to report issues, suggest issues, or open discussions.

Changed
********
* Functions in the FASTQ model are now added to automatic session reports.
* Many of the functions in RNAlysis should now run faster.
* Font type, size, and color for help tooltips should now match the global font settings.
* True/False toggle switches now scale with font size.
* When loading data tables into RNAlysis, you will now see only supported file formats by default.
* Clustering PCA plots are now plotted in proportion to the % variance explained by each PC.
* The legend in clustering PCA plots is now draggable.

Fixed
*******
* Fixed bug where data tables generated through the FASTQ model would not display properly in automatic session reports.
* Fixed bug where graphs generated through the Visualize Gene Sets window would not be added to automatic analysis report.
* When saving a file through the graphical interface, automatically-suggested filenames no longer contain illegal characters.
* Improved clarity of error message when R installation folder is not found.
* Fixed bug where some input parameter widgets in the RNAlysis graphical interface would not display properly.
* RNAlysis now provides a clearer warning message when attempting to run HDBSCAN clustering, if the hdbscan package is not installed.
* Label text in PCA plots and hierarchical clustergrams should no longer be cropped outside of the visible region of the plot.
* Fixed bug where some visualization functions, such as pair-plot (CountFilter.pairplot) would not display properly due to version mismatches between pandas and seaborn.
* Improved clarity of error messages when external apps' (kallisto, bowtie2, etc) installation folders are not found.
* Fixed bug where running the RNAlysis graphical interface on a new computer would sometimes raise an error (thanks to `NeuroRookie <https://github.com/NeuroRookie>`_ in `#25 <https://github.com/GuyTeichman/RNAlysis/issues/25>`_).
* Fixed a bug where the 'min_samples' parameter in HDBSCAN clustering could not be disabled.
* Fixed a bug where applying a function to a gene set with inplace=False would cause the new gene set to be called 'New Table'.
* Fixed a bug where RNAlysis would display the message "Pipeline saved successfully", even when the user cancels the save operation.

New Contributors
*****************
* `NeuroRookie`_ in `#25`_

3.8.0 (2023-05-07)
------------------
Version 3.8.0 of *RNAlysis* comes with several exciting new features, including the ability to generate interactive analysis reports automatically.
This feature allows users to create an interactive graph of all the datasets they loaded into RNAlysis, the functions applied, and the outputs generated during the analysis.
You can read more about this feature in the `Tutorial chapter <https://guyteichman.github.io/RNAlysis/build/tutorial.html#create-analysis-report>`_ and the `User Guide chapter <https://guyteichman.github.io/RNAlysis/build/user_guide_gui.html#rnalysis-interactive-analysis-reports>`_.

The new release also includes Pipelines for FASTQ functions, the ability to export normalization scaling factors, and other changes to improve the software's performance.
RNAlysis now supports Python 3.11, and many functions should now run faster. The software's graphic interface has also improved significantly, and users will now see a clearer error message when attempting to load unsupported file formats.
Lastly, the release also fixes several bugs.

Please note that, since Python 3.7 will be reaching end of life as of June 2023, new versions of *RNAlysis* will no longer support it.

Added
*******
* You can now generate interactive analysis reports automatically using the RNAlysis graphical interface. Read more about this feature `here <https://guyteichman.github.io/RNAlysis/build/user_guide_gui.html>`_.
* Added Pipelines for the FASTQ module (SingleEndPipeline and PairedEndPipeline), allowing you to apply a series of functions (adapter trimming, alignment, quantification, etc) to a batch of sequence/alignment files.
* Added new parameter 'return_scaling_factors' to normalization functions, that allows you to access the scaling factors calculated by RNAlysis.
* Added new parameter 'gzip_output' to CutAdapt adapter trimming (fastq.trim_adapters_single_end and fastq.trim_adapters_paired_end), allowing users to determine whether or not the output files will be gzipped.

Changed
*******
* RNAlysis now supports Python 3.11, and no longer supports Python 3.7.
* Many of the functions in RNAlysis should now run faster.
* The RNAlysis graphic interface should now boot up significantly faster.
* RNAlysis now shows an easier to understand error message when users attempt to load a table in an unsupported format (e.g. Excel files).
* CutAdapt adapter trimming (fastq.trim_adapters_single_end and fastq.trim_adapters_paired_end) now outputs non-gzipped files by default.
* Standardized all plotting functions in the filtering module to return a matplotlib Figure object, which can be further modified by users.

Fixed
*******
* RNAlysis failing to map gene IDs during GO enrichment analysis should no longer raise an error (thanks to `clockgene <https://github.com/clockgene>`_ in `#16 <https://github.com/GuyTeichman/RNAlysis/issues/16>`_).
* Fixed bug where the Command History window would not display history of the current tab immediately after clearing the current session.
* Fixed bug where adapter trimming would fail to run when using CutAdapt version >= 4.4.0.
* Fixed bug where 'Filter rows with duplicate names/IDs' (Filter.filter_duplicat