Skip to content

bio-ontology-research-group/mowl

Folders and files

NameName
Last commit message
Last commit date
Apr 27, 2022
May 14, 2022
Jun 1, 2022
Apr 18, 2022
Jan 30, 2022
Mar 7, 2022
Mar 7, 2022
Apr 18, 2022
Nov 11, 2021
Mar 2, 2021
May 14, 2022
Nov 10, 2021
Mar 7, 2022
Apr 24, 2022
Mar 7, 2022
Dec 14, 2021
Mar 7, 2022
Nov 9, 2021
Sep 3, 2021

Repository files navigation

mOWL: Machine Learning Library with Ontologies

mOWL is a library that provides different machine learning methods in which ontologies are used as background knowledge. mOWL is developed mainly in Python, but we have integrated the functionalities of OWLAPI, which is written in Java, for which we use JPype to bind Python with the Java Virtual Machine (JVM).

Table of contents

Installation

Test PyPi (beta version)

pip install -i https://test.pypi.org/simple/ mowl-borg

From GitHub

Installation can be done with the following commands:

git clone https://github.com/bio-ontology-research-group/mowl.git

cd mowl

conda env create -f environment.yml
conda activate mowl

./build_jars.sh

The last line will generate the necessary jar files to bind Python with the code that runs in the JVM

Examples of use

Basic example

In this example we use the training data (which is an OWL ontology) from the built-in dataset PPIYeasSlimDataset to build a graph representation using the subClassOf axioms.

from mowl.datasets.ppi_yeast import PPIYeastSlimDataset
from mowl.graph.taxonomy.model import TaxonomyParser

dataset = PPIYeastSlimDataset()
parser = TaxonomyParser(dataset.ontology, bidirectional_taxonomy = True)
edges = parser.parse()

The projected edges is an edge list of a graph. One use of this may be to generate random walks:

from mowl.walking.deepwalk.model import DeepWalk
walker = DeepWalk(edges,
	              100, # number of walks
				  20, # length of each walk
				  0.2, # probability of restart
				  workers = 4, # number of usable CPUs
				  )

walker.walk()
walks = walker.walks

Ontology to graph

In the previous example we called the class TaxonomyParser to perform the graph projection. However, there are more ways to perform the projection. We include the following four:

Instead of instantianting each of them separately, there is the following factory method:

from mowl.graph.factory import parser_factory

parser = parser_factory("taxonomy_rels", dataset.ontology, bidirectional_taxonomy = True)

Now parser will be an instance of the TaxonomyWithRelsParser class. The string parameters for each method are listed above.

For the random walks method we have a similar factory method that can be found in mowl.walking.factory and is called walking_factory.

List of contributors

License

Documentation

Full documentation and API reference can be found in our ReadTheDocs website.