Skip to content

Commit

Permalink
Merge pull request #166 from TheJacksonLaboratory/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
pnrobinson authored Dec 8, 2023
2 parents 71a336b + 7123d1f commit 25d1083
Show file tree
Hide file tree
Showing 94 changed files with 494 additions and 323 deletions.
74 changes: 11 additions & 63 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,75 +1,23 @@
# isopret
# isopretGO

Isoform Interpretation (isopret) is Java tool to help interpret the potential biological
functions that are affected by differential alternative splicing. Isopret is
available as a Java desktop application. Most users should download the latest version from the
Releases page.



## Background
[Gene Ontology](http://geneontology.org/) traditionally has provided
annotations for genes rather than for specific isoforms. However, in
some cases, the functions of the individual isoforms of a gene are
differ with respect to one or more of the gene's function. In this project,
we have developed an algorithm for prediction of isoform-specific function
across the entire transcriptome. The isopret app offers a number of
ways to visualize and analyze RNA-seq datasets for Gene Ontology
functions that are overrepresented either among the differentially
expressed genes or the differentially spliced isoforms.

## HBA-DEALS
Isopret requires as input a file that has the fold changes and p-values
for genes and isoforms in a case-control cohort that has been studied
by RNA-seq. We have previously publised [HBA-DEALS](https://genomebiology.biomedcentral.com/articles/10.1186/s13059-020-02072-6),
a hierarchical Bayesian algorithm that performs such an analysis, and this
is the recommended input file.

## Note to Macintosh users

Isopret requires Java 17 and makes use of [JavaFX](https://openjfx.io/) to implement the
graphical user interface (GUI). We have noticed that JavaFX GUI apps including isopret have crashed on
Macintosh laptops with the new ARM M1 chip when using Oracle's SDK (version 17.0.2). We
have used [Azul Zulu](https://www.azul.com/downloads/?package=jdk) JDKs on M1 Macintoshes and
could run Isopret and other JavaFX apps without problems.

We offer pre-built installation files for MacIntosh (M1 and Intel) in the Release section.
Isoform Interpretation (isopret) with Gene Ontology (isopretGO) is Java desktop application to
visualize the functional implications of differential gene expression and differential alternative splicing
in RNA-seq data. isopretGO leverages isoform-specific functional (GO) annotations presented in
[Karlebach G, et al. (2023) Bioinformatics 39:btad132](https://pubmed.ncbi.nlm.nih.gov/36929917/)
for an approach towards GO overrepresentation analysis of differential transcripts, and presents
a graphicual user interface (GUI) application to perform the analysis and explore the results.

## Note to Linux users
See the [online documentation](https://thejacksonlaboratory.github.io/isopretGO/) for installation and usage instructions.

The easiest way to run isopret-gui on a linux system is to run the downloadable JAR file from the releases page.

```bash
java -jar isopret-gui.jar
```

Additionally, an installation file is provided as explained in [PACKAGE](PACKAGE.md).


### Further information
interpret the potential biological functions that are affected by differential alternative splicing. Isopret is
available as a Java desktop application. Most users should download the latest version from the
Releases page.

Please see the [ReadTheDocs](https://isopret.readthedocs.io/en/latest/).
A manuscript is in preparation.



## Set up documentation

Enter the following code to install mkdocs and run a server locally. The GitHub action will create a comparable site online.

```
python3 -m venv venv
source venv/bin/activate
pip install mkdocs
pip install mkdocs-material
pip install mkdocs-material[imaging]
pip install mkdocs-material-extensions
pip install pillow cairosvg
pip install mkdocstrings[python]
mkdocs serve
```





20 changes: 17 additions & 3 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,23 @@ IsopretGO (Isoform Interpretation for Gene Ontology) leverages predictions of is
made by the [isopret expectation maximization algorithm](https://pubmed.ncbi.nlm.nih.gov/36929917/){:target="\_blank"}.
to perform gene-level and isoform-level GO overrepresentation analysis.




## Background: Gene Ontology
[Gene Ontology](http://geneontology.org/) traditionally has provided
annotations for genes rather than for specific isoforms. However, in
some cases, the functions of the individual isoforms of a gene are
differ with respect to one or more of the gene's function. In this project,
we have developed an algorithm for prediction of isoform-specific function
across the entire transcriptome. The isopret app offers a number of
ways to visualize and analyze RNA-seq datasets for Gene Ontology
functions that are overrepresented either among the differentially
expressed genes or the differentially spliced isoforms.

## Background: HBA-DEALS
Isopret requires as input a file that has the fold changes and p-values
for genes and isoforms in a case-control cohort that has been studied
by RNA-seq. We have previously published [HBA-DEALS](https://genomebiology.biomedcentral.com/articles/10.1186/s13059-020-02072-6),
a hierarchical Bayesian algorithm that performs such an analysis, and this
is the recommended input file.
Isopret uses the analysis (output) file of
[HBA-DEALS](https://pubmed.ncbi.nlm.nih.gov/32660516/){:target="_blank"}.

Expand Down
22 changes: 22 additions & 0 deletions docs/setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,5 +44,27 @@ java -jar target/isopret.jar



## Set up documentation

This step is not needed to run the application, but rather describes the code we use to
generate the isopretGO documentation.
Enter the following code to install mkdocs and run a server with the documentation locally.
The GitHub action will create a comparable site online.

```
python3 -m venv venv
source venv/bin/activate
pip install mkdocs
pip install mkdocs-material
pip install mkdocs-material[imaging]
pip install mkdocs-material-extensions
pip install pillow cairosvg
pip install mkdocstrings[python]
mkdocs serve
```






7 changes: 6 additions & 1 deletion isopret-cli/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>org.jax.isopret</groupId>
<artifactId>isopret</artifactId>
<version>1.1.17</version>
<version>1.1.19</version>
</parent>

<artifactId>isopret-cli</artifactId>
Expand All @@ -19,6 +19,11 @@
<artifactId>isopret-core</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>org.jax.isopret</groupId>
<artifactId>isopret-data</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>org.jax.isopret</groupId>
<artifactId>isopret-io</artifactId>
Expand Down
2 changes: 2 additions & 0 deletions isopret-cli/src/main/java/module-info.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
requires org.jax.isopret.core;
requires org.jax.isopret.io;
requires org.monarchinitiative.phenol.analysis;
requires org.jax.isopret.data;
requires org.jax.isopret.exception;

opens org.jax.isopret.cli.command to info.picocli;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.jax.isopret.cli.command;

import org.jax.isopret.data.Transcript;
import org.jax.isopret.model.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
import org.jax.isopret.core.IsopretGoAnalysisRunner;
import org.jax.isopret.core.IsopretProvider;
import org.jax.isopret.core.analysis.IsopretStats;
import org.jax.isopret.except.IsopretRuntimeException;
import org.jax.isopret.data.AccessionNumber;
import org.jax.isopret.data.GoMethod;
import org.jax.isopret.data.MtcMethod;
import org.jax.isopret.data.Transcript;
import org.jax.isopret.exception.IsopretRuntimeException;
import org.jax.isopret.model.*;
import org.jax.isopret.core.impl.rnaseqdata.RnaSeqResultsParser;
import org.monarchinitiative.phenol.analysis.AssociationContainer;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import org.jax.isopret.core.*;
import org.jax.isopret.core.impl.rnaseqdata.IsoformSpecificThresholder;
import org.jax.isopret.core.impl.rnaseqdata.RnaSeqResultsParser;
import org.jax.isopret.data.AccessionNumber;
import org.jax.isopret.model.*;
import org.jax.isopret.visualization.InterproOverrepVisualizer;
import org.monarchinitiative.phenol.analysis.AssociationContainer;
Expand Down
18 changes: 6 additions & 12 deletions isopret-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>org.jax.isopret</groupId>
<artifactId>isopret</artifactId>
<version>1.1.17</version>
<version>1.1.19</version>
</parent>

<artifactId>isopret-core</artifactId>
Expand All @@ -17,6 +17,11 @@


<dependencies>
<dependency>
<groupId>org.jax.isopret</groupId>
<artifactId>isopret-data</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>org.monarchinitiative.phenol</groupId>
<artifactId>phenol-annotations</artifactId>
Expand Down Expand Up @@ -75,9 +80,6 @@
<scope>test</scope>
</dependency>



<!-- https://mvnrepository.com/artifact/org.mockito/mockito-all -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
Expand All @@ -91,10 +93,6 @@
<version>5.1.1</version>
<scope>test</scope>
</dependency>



<!-- https://mvnrepository.com/artifact/de.charite.compbio/Jannovar -->
<dependency>
<groupId>de.charite.compbio</groupId>
<artifactId>Jannovar</artifactId>
Expand All @@ -107,14 +105,11 @@
</exclusion>
</exclusions>
</dependency>

<!-- https://mvnrepository.com/artifact/de.charite.compbio/jannovar-core -->
<dependency>
<groupId>de.charite.compbio</groupId>
<artifactId>jannovar-core</artifactId>
<version>${jannovar.version}</version>
</dependency>

<dependency>
<groupId>org.monarchinitiative.svart</groupId>
<artifactId>svart</artifactId>
Expand All @@ -124,7 +119,6 @@
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>

</dependencies>


Expand Down
7 changes: 5 additions & 2 deletions isopret-core/src/main/java/module-info.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,17 @@
requires org.apache.commons.net;
requires org.monarchinitiative.phenol.io;
requires guava;
requires org.jax.isopret.data;
requires org.jax.isopret.exception;

exports org.jax.isopret.core.analysis;
exports org.jax.isopret.core.impl.go;
exports org.jax.isopret.model;
exports org.jax.isopret.except;
exports org.jax.isopret.core.impl.rnaseqdata;
exports org.jax.isopret.visualization;
exports org.jax.isopret.core;
exports org.jax.isopret.core.impl.interpro;
//exports org.jax.isopret.core.impl.hgnc;
exports org.jax.isopret.core.impl.go;
exports org.jax.isopret.core.impl.hgnc;

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.jax.isopret.core;

import org.jax.isopret.model.GoMethod;
import org.jax.isopret.model.MtcMethod;
import org.jax.isopret.data.GoMethod;
import org.jax.isopret.data.MtcMethod;
import org.monarchinitiative.phenol.analysis.stats.GoTerm2PValAndCounts;

import java.io.File;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package org.jax.isopret.core;

import org.jax.isopret.except.IsopretRuntimeException;
import org.jax.isopret.exception.IsopretRuntimeException;
import org.jax.isopret.core.impl.interpro.InterproDomainDescParser;
import org.jax.isopret.core.impl.interpro.InterproDomainParser;
import org.jax.isopret.model.AccessionNumber;
import org.jax.isopret.data.AccessionNumber;
import org.jax.isopret.model.DisplayInterproAnnotation;
import org.jax.isopret.model.InterproAnnotation;
import org.jax.isopret.model.InterproEntry;
import org.jax.isopret.data.InterproAnnotation;
import org.jax.isopret.data.InterproEntry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import org.jax.isopret.core.impl.go.DefaultIsopretGoAnalysisRunner;
import org.jax.isopret.core.impl.rnaseqdata.RnaSeqAnalysisMethod;
import org.jax.isopret.model.GoMethod;
import org.jax.isopret.model.MtcMethod;
import org.jax.isopret.data.GoMethod;
import org.jax.isopret.data.MtcMethod;

import java.io.File;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package org.jax.isopret.core;

import org.jax.isopret.core.impl.DefaultIsopretProvider;
import org.jax.isopret.model.AccessionNumber;
import org.jax.isopret.data.AccessionNumber;
import org.jax.isopret.model.GeneModel;
import org.jax.isopret.model.GeneSymbolAccession;
import org.jax.isopret.model.Transcript;
import org.jax.isopret.data.Transcript;
import org.monarchinitiative.phenol.analysis.AssociationContainer;
import org.monarchinitiative.phenol.ontology.data.Ontology;
import org.monarchinitiative.phenol.ontology.data.TermId;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package org.jax.isopret.core.analysis;

import org.jax.isopret.core.impl.rnaseqdata.TranscriptResultImpl;
import org.jax.isopret.model.InterproEntry;
import org.jax.isopret.model.AccessionNumber;
import org.jax.isopret.data.InterproEntry;
import org.jax.isopret.data.AccessionNumber;
import org.jax.isopret.model.AnnotatedGene;
import org.monarchinitiative.phenol.analysis.stats.Hypergeometric;
import org.slf4j.Logger;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.jax.isopret.core.analysis;

import org.jax.isopret.model.InterproEntry;
import org.jax.isopret.data.InterproEntry;

import java.util.Formatter;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
package org.jax.isopret.core.configuration;

//import org.jax.isopret.core.DownloadItem;
import org.jax.isopret.except.IsopretRuntimeException;
import org.jax.isopret.exception.IsopretRuntimeException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.net.MalformedURLException;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.Objects;
import java.util.Set;

public class IsopretDataResolver {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import org.jax.isopret.core.impl.go.TranscriptFunctionFileParser;
import org.jax.isopret.core.InterproMapper;
import org.jax.isopret.core.impl.jannovar.JannovarReader;
import org.jax.isopret.data.AccessionNumber;
import org.jax.isopret.data.Transcript;
import org.jax.isopret.model.*;
import org.monarchinitiative.phenol.analysis.AssociationContainer;
import org.monarchinitiative.phenol.io.OntologyLoader;
Expand Down Expand Up @@ -57,7 +59,7 @@ public Ontology geneOntology() {
if (geneOntology == null) {
Path goPath = dataResolver.goJson();
geneOntology = OntologyLoader.loadOntology(goPath.toFile());
int n_terms = geneOntology.countNonObsoleteTerms();
int n_terms = geneOntology.nonObsoleteTermIdCount();
LOGGER.info("Loaded Gene Ontology json file with {} terms.", n_terms);
}
return geneOntology;
Expand Down
Loading

0 comments on commit 25d1083

Please sign in to comment.