Repository files navigation

MOFA+ in Python

PyPi version

Work with trained factor models in Python.

This library provides convenience functions to load and visualize factor models trained with MOFA+ in Python. For more information on the multi-omics factor analysis v2 framework please see mofapy2 and MOFA2 GitHub repositories as well as the website.

Getting started

Installation

pip install git+https://github.com/gtca/mofax
# or
pip install mofax

Training a factor model

Please see the MOFA+ GitHub repository for more information on training the factor models with MOFA+.

Loading the model

Import the module and create a connection to the HDF5 file with the trained model:

importmofaxasmfxmodel=mfx.mofa_model("trained_mofaplus_model.hdf5")

The connection is created in the readonly mode by default and can be terminated by calling the close() method on the model object at the end of the working session:

model.close()

Model object

Model object is an instance of a mofa_model class that wraps around the HDF5 connection and provides a simple way to address the parts of the trained model such as expectations for factors and for their loadings (weights) eliminating the need to traverse the HDF5 file manually. The original connection to the HDF5 file is exposed via the model.model attribute.

Model methods

Simple data structures (e.g. lists or dictionaries) are typically returned upon accessing the properties of the mofa model, e.g. model.shape:

model.shape# returns (10138, 1124)# samples^ ^features# (cells)

More complex structures are typically returned when calling methods such as model.get_samples() to get sample -> group assignment as a pandas.DataFrame while also providing the way to only get this information for specific groups or views of the model. model.get_cells() works the same way.

model.get_cells().head()
# returns a pandas.DataFrame object:# group	cell# 0	T_CD4	AATCCTGCACATCGCC-1# 1	T_CD4	AAGACGTGTGATGCCC-1# 2	T_CD4	AAGGAGCGTCGGCATG-1# 3	T_CD4	AATCCGTCACGAGACG-1# 4	T_CD4	ACACCGAGGAGGTTGA-1

Use model.metadata to get the metadata table — it's a shorhand for samples_metadata, there's also features_metadata available.

model.metadata.head()
# returns a pandas.DataFrame object:# group n_genes# sample# AATCCTGCACATCGCC-1 T_CD4 1087# AAGACGTGTGATGCCC-1 T_CD4 1836# AAGGAGCGTCGGCATG-1 T_CD4 2216# AATCCGTCACGAGACG-1 T_CD4 1615# ACACCGAGGAGGTTGA-1 T_CD4 1800

To get expectations of W (weights) and Z (factors) matrices, use get_weights() and get_factors(), respectively. There's also a df=True option to get expectations as a Pandas data frame rather than a NumPy 2D array.

model.get_factors(factors=range(3), df=True).head()
# Factor1 Factor2 Factor3# AATCCTGCACATCGCC-1 0.012582 -0.093512 -0.011228# AAGACGTGTGATGCCC-1 0.001091 -0.027217 -0.011331# AAGGAGCGTCGGCATG-1 -0.015097 0.093493 -0.010593# AATCCGTCACGAGACG-1 -0.046222 0.225920 0.010083# ACACCGAGGAGGTTGA-1 0.011766 -0.055964 -0.011298

Variance explained by each factor per view and per group is calculated during the tranining and stored in the model file and can be accessed with get_r2():

model.get_r2().head()
# Factor	View Group	R2# 0	Factor1	drugs group1	13.589131# 1	Factor1	methylation group1	17.330235# 2	Factor1	rna group1	7.032133# 3	Factor1	mutations group1	22.725224# 4	Factor2	drugs group1	26.374409

MEFISTO models support

MEFISTO models can feature a few additional concepts such as covariates and interpolated factors. Covariates can be accessed via model.covariates_names and model.covariates. If interpolated factors were learnt for new values during training, they are exposed at model.interpolated_factors and also can be obtained in a long DataFrame with model.get_interpolated_factors(df_long=True).

Utility functions

A few utility functions such as calculate_factor_r2 to calculate the variance explained by a factor are provided as well.

Plotting functions

A few basic plots can be constructed with plotting functions provided such as plot_factors and plot_weights. They rely on and limited by plotting functionality of Seaborn.

Please check the notebooks for detailed examples. Some of the implemented plots are demonstrated below.

mofax plots

Contributions

In case you work with MOFA+ models in Python, you might find mofax useful. Please consider contributing to this module by suggesting the missing functionality to be implemented in the form of issues and in the form of pull requests.

About

Work with trained factor models in Python

Topics

Resources

Stars

41 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

MOFA+ in Python

PyPi version

Work with trained factor models in Python.

This library provides convenience functions to load and visualize factor models trained with MOFA+ in Python. For more information on the multi-omics factor analysis v2 framework please see mofapy2 and MOFA2 GitHub repositories as well as the website.

Getting started

Installation

pip install git+https://github.com/gtca/mofax
# or
pip install mofax

Training a factor model

Please see the MOFA+ GitHub repository for more information on training the factor models with MOFA+.

Loading the model

Import the module and create a connection to the HDF5 file with the trained model:

importmofaxasmfxmodel=mfx.mofa_model("trained_mofaplus_model.hdf5")

The connection is created in the readonly mode by default and can be terminated by calling the close() method on the model object at the end of the working session:

model.close()

Model object

Model object is an instance of a mofa_model class that wraps around the HDF5 connection and provides a simple way to address the parts of the trained model such as expectations for factors and for their loadings (weights) eliminating the need to traverse the HDF5 file manually. The original connection to the HDF5 file is exposed via the model.model attribute.

Model methods

Simple data structures (e.g. lists or dictionaries) are typically returned upon accessing the properties of the mofa model, e.g. model.shape:

model.shape# returns (10138, 1124)# samples^ ^features# (cells)

More complex structures are typically returned when calling methods such as model.get_samples() to get sample -> group assignment as a pandas.DataFrame while also providing the way to only get this information for specific groups or views of the model. model.get_cells() works the same way.

model.get_cells().head()
# returns a pandas.DataFrame object:# group	cell# 0	T_CD4	AATCCTGCACATCGCC-1# 1	T_CD4	AAGACGTGTGATGCCC-1# 2	T_CD4	AAGGAGCGTCGGCATG-1# 3	T_CD4	AATCCGTCACGAGACG-1# 4	T_CD4	ACACCGAGGAGGTTGA-1

Use model.metadata to get the metadata table — it's a shorhand for samples_metadata, there's also features_metadata available.

model.metadata.head()
# returns a pandas.DataFrame object:# group n_genes# sample# AATCCTGCACATCGCC-1 T_CD4 1087# AAGACGTGTGATGCCC-1 T_CD4 1836# AAGGAGCGTCGGCATG-1 T_CD4 2216# AATCCGTCACGAGACG-1 T_CD4 1615# ACACCGAGGAGGTTGA-1 T_CD4 1800

To get expectations of W (weights) and Z (factors) matrices, use get_weights() and get_factors(), respectively. There's also a df=True option to get expectations as a Pandas data frame rather than a NumPy 2D array.

model.get_factors(factors=range(3), df=True).head()
# Factor1 Factor2 Factor3# AATCCTGCACATCGCC-1 0.012582 -0.093512 -0.011228# AAGACGTGTGATGCCC-1 0.001091 -0.027217 -0.011331# AAGGAGCGTCGGCATG-1 -0.015097 0.093493 -0.010593# AATCCGTCACGAGACG-1 -0.046222 0.225920 0.010083# ACACCGAGGAGGTTGA-1 0.011766 -0.055964 -0.011298

Variance explained by each factor per view and per group is calculated during the tranining and stored in the model file and can be accessed with get_r2():

model.get_r2().head()
# Factor	View Group	R2# 0	Factor1	drugs group1	13.589131# 1	Factor1	methylation group1	17.330235# 2	Factor1	rna group1	7.032133# 3	Factor1	mutations group1	22.725224# 4	Factor2	drugs group1	26.374409

MEFISTO models support

MEFISTO models can feature a few additional concepts such as covariates and interpolated factors. Covariates can be accessed via model.covariates_names and model.covariates. If interpolated factors were learnt for new values during training, they are exposed at model.interpolated_factors and also can be obtained in a long DataFrame with model.get_interpolated_factors(df_long=True).

Utility functions

A few utility functions such as calculate_factor_r2 to calculate the variance explained by a factor are provided as well.

Plotting functions

A few basic plots can be constructed with plotting functions provided such as plot_factors and plot_weights. They rely on and limited by plotting functionality of Seaborn.

Please check the notebooks for detailed examples. Some of the implemented plots are demonstrated below.

mofax plots

Contributions

In case you work with MOFA+ models in Python, you might find mofax useful. Please consider contributing to this module by suggesting the missing functionality to be implemented in the form of issues and in the form of pull requests.

About

Work with trained factor models in Python

Topics

Resources

Stars

41 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MOFA+ in Python

PyPi version

Work with trained factor models in Python.

This library provides convenience functions to load and visualize factor models trained with MOFA+ in Python. For more information on the multi-omics factor analysis v2 framework please see mofapy2 and MOFA2 GitHub repositories as well as the website.

Getting started

Installation

pip install git+https://github.com/gtca/mofax
# or
pip install mofax

Training a factor model

Please see the MOFA+ GitHub repository for more information on training the factor models with MOFA+.

Loading the model

Import the module and create a connection to the HDF5 file with the trained model:

importmofaxasmfxmodel=mfx.mofa_model("trained_mofaplus_model.hdf5")

The connection is created in the readonly mode by default and can be terminated by calling the close() method on the model object at the end of the working session:

model.close()

Model object

Model object is an instance of a mofa_model class that wraps around the HDF5 connection and provides a simple way to address the parts of the trained model such as expectations for factors and for their loadings (weights) eliminating the need to traverse the HDF5 file manually. The original connection to the HDF5 file is exposed via the model.model attribute.

Model methods

Simple data structures (e.g. lists or dictionaries) are typically returned upon accessing the properties of the mofa model, e.g. model.shape:

model.shape# returns (10138, 1124)# samples^ ^features# (cells)

More complex structures are typically returned when calling methods such as model.get_samples() to get sample -> group assignment as a pandas.DataFrame while also providing the way to only get this information for specific groups or views of the model. model.get_cells() works the same way.

model.get_cells().head()
# returns a pandas.DataFrame object:# group	cell# 0	T_CD4	AATCCTGCACATCGCC-1# 1	T_CD4	AAGACGTGTGATGCCC-1# 2	T_CD4	AAGGAGCGTCGGCATG-1# 3	T_CD4	AATCCGTCACGAGACG-1# 4	T_CD4	ACACCGAGGAGGTTGA-1

Use model.metadata to get the metadata table — it's a shorhand for samples_metadata, there's also features_metadata available.

model.metadata.head()
# returns a pandas.DataFrame object:# group n_genes# sample# AATCCTGCACATCGCC-1 T_CD4 1087# AAGACGTGTGATGCCC-1 T_CD4 1836# AAGGAGCGTCGGCATG-1 T_CD4 2216# AATCCGTCACGAGACG-1 T_CD4 1615# ACACCGAGGAGGTTGA-1 T_CD4 1800

To get expectations of W (weights) and Z (factors) matrices, use get_weights() and get_factors(), respectively. There's also a df=True option to get expectations as a Pandas data frame rather than a NumPy 2D array.

model.get_factors(factors=range(3), df=True).head()
# Factor1 Factor2 Factor3# AATCCTGCACATCGCC-1 0.012582 -0.093512 -0.011228# AAGACGTGTGATGCCC-1 0.001091 -0.027217 -0.011331# AAGGAGCGTCGGCATG-1 -0.015097 0.093493 -0.010593# AATCCGTCACGAGACG-1 -0.046222 0.225920 0.010083# ACACCGAGGAGGTTGA-1 0.011766 -0.055964 -0.011298

Variance explained by each factor per view and per group is calculated during the tranining and stored in the model file and can be accessed with get_r2():

model.get_r2().head()
# Factor	View Group	R2# 0	Factor1	drugs group1	13.589131# 1	Factor1	methylation group1	17.330235# 2	Factor1	rna group1	7.032133# 3	Factor1	mutations group1	22.725224# 4	Factor2	drugs group1	26.374409

MEFISTO models support

MEFISTO models can feature a few additional concepts such as covariates and interpolated factors. Covariates can be accessed via model.covariates_names and model.covariates. If interpolated factors were learnt for new values during training, they are exposed at model.interpolated_factors and also can be obtained in a long DataFrame with model.get_interpolated_factors(df_long=True).

Utility functions

A few utility functions such as calculate_factor_r2 to calculate the variance explained by a factor are provided as well.

Plotting functions

A few basic plots can be constructed with plotting functions provided such as plot_factors and plot_weights. They rely on and limited by plotting functionality of Seaborn.

Please check the notebooks for detailed examples. Some of the implemented plots are demonstrated below.

mofax plots

Contributions

In case you work with MOFA+ models in Python, you might find mofax useful. Please consider contributing to this module by suggesting the missing functionality to be implemented in the form of issues and in the form of pull requests.

About

Work with trained factor models in Python

Topics

Resources

Stars

41 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MOFA+ in Python

PyPi version

Work with trained factor models in Python.

This library provides convenience functions to load and visualize factor models trained with MOFA+ in Python. For more information on the multi-omics factor analysis v2 framework please see mofapy2 and MOFA2 GitHub repositories as well as the website.

Getting started

Installation

pip install git+https://github.com/gtca/mofax
# or
pip install mofax

Training a factor model

Please see the MOFA+ GitHub repository for more information on training the factor models with MOFA+.

Loading the model

Import the module and create a connection to the HDF5 file with the trained model:

importmofaxasmfxmodel=mfx.mofa_model("trained_mofaplus_model.hdf5")

The connection is created in the readonly mode by default and can be terminated by calling the close() method on the model object at the end of the working session:

model.close()

Model object

Model object is an instance of a mofa_model class that wraps around the HDF5 connection and provides a simple way to address the parts of the trained model such as expectations for factors and for their loadings (weights) eliminating the need to traverse the HDF5 file manually. The original connection to the HDF5 file is exposed via the model.model attribute.

Model methods

Simple data structures (e.g. lists or dictionaries) are typically returned upon accessing the properties of the mofa model, e.g. model.shape:

model.shape# returns (10138, 1124)# samples^ ^features# (cells)

More complex structures are typically returned when calling methods such as model.get_samples() to get sample -> group assignment as a pandas.DataFrame while also providing the way to only get this information for specific groups or views of the model. model.get_cells() works the same way.

model.get_cells().head()
# returns a pandas.DataFrame object:# group	cell# 0	T_CD4	AATCCTGCACATCGCC-1# 1	T_CD4	AAGACGTGTGATGCCC-1# 2	T_CD4	AAGGAGCGTCGGCATG-1# 3	T_CD4	AATCCGTCACGAGACG-1# 4	T_CD4	ACACCGAGGAGGTTGA-1

Use model.metadata to get the metadata table — it's a shorhand for samples_metadata, there's also features_metadata available.

model.metadata.head()
# returns a pandas.DataFrame object:# group n_genes# sample# AATCCTGCACATCGCC-1 T_CD4 1087# AAGACGTGTGATGCCC-1 T_CD4 1836# AAGGAGCGTCGGCATG-1 T_CD4 2216# AATCCGTCACGAGACG-1 T_CD4 1615# ACACCGAGGAGGTTGA-1 T_CD4 1800

To get expectations of W (weights) and Z (factors) matrices, use get_weights() and get_factors(), respectively. There's also a df=True option to get expectations as a Pandas data frame rather than a NumPy 2D array.

model.get_factors(factors=range(3), df=True).head()
# Factor1 Factor2 Factor3# AATCCTGCACATCGCC-1 0.012582 -0.093512 -0.011228# AAGACGTGTGATGCCC-1 0.001091 -0.027217 -0.011331# AAGGAGCGTCGGCATG-1 -0.015097 0.093493 -0.010593# AATCCGTCACGAGACG-1 -0.046222 0.225920 0.010083# ACACCGAGGAGGTTGA-1 0.011766 -0.055964 -0.011298

Variance explained by each factor per view and per group is calculated during the tranining and stored in the model file and can be accessed with get_r2():

model.get_r2().head()
# Factor	View Group	R2# 0	Factor1	drugs group1	13.589131# 1	Factor1	methylation group1	17.330235# 2	Factor1	rna group1	7.032133# 3	Factor1	mutations group1	22.725224# 4	Factor2	drugs group1	26.374409

MEFISTO models support

MEFISTO models can feature a few additional concepts such as covariates and interpolated factors. Covariates can be accessed via model.covariates_names and model.covariates. If interpolated factors were learnt for new values during training, they are exposed at model.interpolated_factors and also can be obtained in a long DataFrame with model.get_interpolated_factors(df_long=True).

Utility functions

A few utility functions such as calculate_factor_r2 to calculate the variance explained by a factor are provided as well.

Plotting functions

A few basic plots can be constructed with plotting functions provided such as plot_factors and plot_weights. They rely on and limited by plotting functionality of Seaborn.

Please check the notebooks for detailed examples. Some of the implemented plots are demonstrated below.

mofax plots

Contributions

In case you work with MOFA+ models in Python, you might find mofax useful. Please consider contributing to this module by suggesting the missing functionality to be implemented in the form of issues and in the form of pull requests.

About

Work with trained factor models in Python

Topics

Resources

Stars

41 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

MOFA+ in Python

PyPi version

Work with trained factor models in Python.

This library provides convenience functions to load and visualize factor models trained with MOFA+ in Python. For more information on the multi-omics factor analysis v2 framework please see mofapy2 and MOFA2 GitHub repositories as well as the website.

Getting started

Installation

pip install git+https://github.com/gtca/mofax
# or
pip install mofax

Training a factor model

Please see the MOFA+ GitHub repository for more information on training the factor models with MOFA+.

Loading the model

Import the module and create a connection to the HDF5 file with the trained model:

importmofaxasmfxmodel=mfx.mofa_model("trained_mofaplus_model.hdf5")

The connection is created in the readonly mode by default and can be terminated by calling the close() method on the model object at the end of the working session:

model.close()

Model object

Model object is an instance of a mofa_model class that wraps around the HDF5 connection and provides a simple way to address the parts of the trained model such as expectations for factors and for their loadings (weights) eliminating the need to traverse the HDF5 file manually. The original connection to the HDF5 file is exposed via the model.model attribute.

Model methods

Simple data structures (e.g. lists or dictionaries) are typically returned upon accessing the properties of the mofa model, e.g. model.shape:

model.shape# returns (10138, 1124)# samples^ ^features# (cells)

More complex structures are typically returned when calling methods such as model.get_samples() to get sample -> group assignment as a pandas.DataFrame while also providing the way to only get this information for specific groups or views of the model. model.get_cells() works the same way.

model.get_cells().head()
# returns a pandas.DataFrame object:# group	cell# 0	T_CD4	AATCCTGCACATCGCC-1# 1	T_CD4	AAGACGTGTGATGCCC-1# 2	T_CD4	AAGGAGCGTCGGCATG-1# 3	T_CD4	AATCCGTCACGAGACG-1# 4	T_CD4	ACACCGAGGAGGTTGA-1

Use model.metadata to get the metadata table — it's a shorhand for samples_metadata, there's also features_metadata available.

model.metadata.head()
# returns a pandas.DataFrame object:# group n_genes# sample# AATCCTGCACATCGCC-1 T_CD4 1087# AAGACGTGTGATGCCC-1 T_CD4 1836# AAGGAGCGTCGGCATG-1 T_CD4 2216# AATCCGTCACGAGACG-1 T_CD4 1615# ACACCGAGGAGGTTGA-1 T_CD4 1800

To get expectations of W (weights) and Z (factors) matrices, use get_weights() and get_factors(), respectively. There's also a df=True option to get expectations as a Pandas data frame rather than a NumPy 2D array.

model.get_factors(factors=range(3), df=True).head()
# Factor1 Factor2 Factor3# AATCCTGCACATCGCC-1 0.012582 -0.093512 -0.011228# AAGACGTGTGATGCCC-1 0.001091 -0.027217 -0.011331# AAGGAGCGTCGGCATG-1 -0.015097 0.093493 -0.010593# AATCCGTCACGAGACG-1 -0.046222 0.225920 0.010083# ACACCGAGGAGGTTGA-1 0.011766 -0.055964 -0.011298

Variance explained by each factor per view and per group is calculated during the tranining and stored in the model file and can be accessed with get_r2():

model.get_r2().head()
# Factor	View Group	R2# 0	Factor1	drugs group1	13.589131# 1	Factor1	methylation group1	17.330235# 2	Factor1	rna group1	7.032133# 3	Factor1	mutations group1	22.725224# 4	Factor2	drugs group1	26.374409

MEFISTO models support

MEFISTO models can feature a few additional concepts such as covariates and interpolated factors. Covariates can be accessed via model.covariates_names and model.covariates. If interpolated factors were learnt for new values during training, they are exposed at model.interpolated_factors and also can be obtained in a long DataFrame with model.get_interpolated_factors(df_long=True).

Utility functions

A few utility functions such as calculate_factor_r2 to calculate the variance explained by a factor are provided as well.

Plotting functions

A few basic plots can be constructed with plotting functions provided such as plot_factors and plot_weights. They rely on and limited by plotting functionality of Seaborn.

Please check the notebooks for detailed examples. Some of the implemented plots are demonstrated below.

mofax plots

Contributions

In case you work with MOFA+ models in Python, you might find mofax useful. Please consider contributing to this module by suggesting the missing functionality to be implemented in the form of issues and in the form of pull requests.

About

Work with trained factor models in Python

Topics

Resources

Stars

41 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MOFA+ in Python

PyPi version

Work with trained factor models in Python.

This library provides convenience functions to load and visualize factor models trained with MOFA+ in Python. For more information on the multi-omics factor analysis v2 framework please see mofapy2 and MOFA2 GitHub repositories as well as the website.

Getting started

Installation

pip install git+https://github.com/gtca/mofax
# or
pip install mofax

Training a factor model

Please see the MOFA+ GitHub repository for more information on training the factor models with MOFA+.

Loading the model

Import the module and create a connection to the HDF5 file with the trained model:

importmofaxasmfxmodel=mfx.mofa_model("trained_mofaplus_model.hdf5")

The connection is created in the readonly mode by default and can be terminated by calling the close() method on the model object at the end of the working session:

model.close()

Model object

Model object is an instance of a mofa_model class that wraps around the HDF5 connection and provides a simple way to address the parts of the trained model such as expectations for factors and for their loadings (weights) eliminating the need to traverse the HDF5 file manually. The original connection to the HDF5 file is exposed via the model.model attribute.

Model methods

Simple data structures (e.g. lists or dictionaries) are typically returned upon accessing the properties of the mofa model, e.g. model.shape:

model.shape# returns (10138, 1124)# samples^ ^features# (cells)

More complex structures are typically returned when calling methods such as model.get_samples() to get sample -> group assignment as a pandas.DataFrame while also providing the way to only get this information for specific groups or views of the model. model.get_cells() works the same way.

model.get_cells().head()
# returns a pandas.DataFrame object:# group	cell# 0	T_CD4	AATCCTGCACATCGCC-1# 1	T_CD4	AAGACGTGTGATGCCC-1# 2	T_CD4	AAGGAGCGTCGGCATG-1# 3	T_CD4	AATCCGTCACGAGACG-1# 4	T_CD4	ACACCGAGGAGGTTGA-1

Use model.metadata to get the metadata table — it's a shorhand for samples_metadata, there's also features_metadata available.

model.metadata.head()
# returns a pandas.DataFrame object:# group n_genes# sample# AATCCTGCACATCGCC-1 T_CD4 1087# AAGACGTGTGATGCCC-1 T_CD4 1836# AAGGAGCGTCGGCATG-1 T_CD4 2216# AATCCGTCACGAGACG-1 T_CD4 1615# ACACCGAGGAGGTTGA-1 T_CD4 1800

To get expectations of W (weights) and Z (factors) matrices, use get_weights() and get_factors(), respectively. There's also a df=True option to get expectations as a Pandas data frame rather than a NumPy 2D array.

model.get_factors(factors=range(3), df=True).head()
# Factor1 Factor2 Factor3# AATCCTGCACATCGCC-1 0.012582 -0.093512 -0.011228# AAGACGTGTGATGCCC-1 0.001091 -0.027217 -0.011331# AAGGAGCGTCGGCATG-1 -0.015097 0.093493 -0.010593# AATCCGTCACGAGACG-1 -0.046222 0.225920 0.010083# ACACCGAGGAGGTTGA-1 0.011766 -0.055964 -0.011298

Variance explained by each factor per view and per group is calculated during the tranining and stored in the model file and can be accessed with get_r2():

model.get_r2().head()
# Factor	View Group	R2# 0	Factor1	drugs group1	13.589131# 1	Factor1	methylation group1	17.330235# 2	Factor1	rna group1	7.032133# 3	Factor1	mutations group1	22.725224# 4	Factor2	drugs group1	26.374409

MEFISTO models support

MEFISTO models can feature a few additional concepts such as covariates and interpolated factors. Covariates can be accessed via model.covariates_names and model.covariates. If interpolated factors were learnt for new values during training, they are exposed at model.interpolated_factors and also can be obtained in a long DataFrame with model.get_interpolated_factors(df_long=True).

Utility functions

A few utility functions such as calculate_factor_r2 to calculate the variance explained by a factor are provided as well.

Plotting functions

A few basic plots can be constructed with plotting functions provided such as plot_factors and plot_weights. They rely on and limited by plotting functionality of Seaborn.

Please check the notebooks for detailed examples. Some of the implemented plots are demonstrated below.

mofax plots

Contributions

In case you work with MOFA+ models in Python, you might find mofax useful. Please consider contributing to this module by suggesting the missing functionality to be implemented in the form of issues and in the form of pull requests.

About

Work with trained factor models in Python

Topics

Resources

Stars

41 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MOFA+ in Python

PyPi version

Work with trained factor models in Python.

This library provides convenience functions to load and visualize factor models trained with MOFA+ in Python. For more information on the multi-omics factor analysis v2 framework please see mofapy2 and MOFA2 GitHub repositories as well as the website.

Getting started

Installation

pip install git+https://github.com/gtca/mofax
# or
pip install mofax

Training a factor model

Please see the MOFA+ GitHub repository for more information on training the factor models with MOFA+.

Loading the model

Import the module and create a connection to the HDF5 file with the trained model:

importmofaxasmfxmodel=mfx.mofa_model("trained_mofaplus_model.hdf5")

The connection is created in the readonly mode by default and can be terminated by calling the close() method on the model object at the end of the working session:

model.close()

Model object

Model object is an instance of a mofa_model class that wraps around the HDF5 connection and provides a simple way to address the parts of the trained model such as expectations for factors and for their loadings (weights) eliminating the need to traverse the HDF5 file manually. The original connection to the HDF5 file is exposed via the model.model attribute.

Model methods

Simple data structures (e.g. lists or dictionaries) are typically returned upon accessing the properties of the mofa model, e.g. model.shape:

model.shape# returns (10138, 1124)# samples^ ^features# (cells)

More complex structures are typically returned when calling methods such as model.get_samples() to get sample -> group assignment as a pandas.DataFrame while also providing the way to only get this information for specific groups or views of the model. model.get_cells() works the same way.

model.get_cells().head()
# returns a pandas.DataFrame object:# group	cell# 0	T_CD4	AATCCTGCACATCGCC-1# 1	T_CD4	AAGACGTGTGATGCCC-1# 2	T_CD4	AAGGAGCGTCGGCATG-1# 3	T_CD4	AATCCGTCACGAGACG-1# 4	T_CD4	ACACCGAGGAGGTTGA-1

Use model.metadata to get the metadata table — it's a shorhand for samples_metadata, there's also features_metadata available.

model.metadata.head()
# returns a pandas.DataFrame object:# group n_genes# sample# AATCCTGCACATCGCC-1 T_CD4 1087# AAGACGTGTGATGCCC-1 T_CD4 1836# AAGGAGCGTCGGCATG-1 T_CD4 2216# AATCCGTCACGAGACG-1 T_CD4 1615# ACACCGAGGAGGTTGA-1 T_CD4 1800

To get expectations of W (weights) and Z (factors) matrices, use get_weights() and get_factors(), respectively. There's also a df=True option to get expectations as a Pandas data frame rather than a NumPy 2D array.

model.get_factors(factors=range(3), df=True).head()
# Factor1 Factor2 Factor3# AATCCTGCACATCGCC-1 0.012582 -0.093512 -0.011228# AAGACGTGTGATGCCC-1 0.001091 -0.027217 -0.011331# AAGGAGCGTCGGCATG-1 -0.015097 0.093493 -0.010593# AATCCGTCACGAGACG-1 -0.046222 0.225920 0.010083# ACACCGAGGAGGTTGA-1 0.011766 -0.055964 -0.011298

Variance explained by each factor per view and per group is calculated during the tranining and stored in the model file and can be accessed with get_r2():

model.get_r2().head()
# Factor	View Group	R2# 0	Factor1	drugs group1	13.589131# 1	Factor1	methylation group1	17.330235# 2	Factor1	rna group1	7.032133# 3	Factor1	mutations group1	22.725224# 4	Factor2	drugs group1	26.374409

MEFISTO models support

MEFISTO models can feature a few additional concepts such as covariates and interpolated factors. Covariates can be accessed via model.covariates_names and model.covariates. If interpolated factors were learnt for new values during training, they are exposed at model.interpolated_factors and also can be obtained in a long DataFrame with model.get_interpolated_factors(df_long=True).

Utility functions

A few utility functions such as calculate_factor_r2 to calculate the variance explained by a factor are provided as well.

Plotting functions

A few basic plots can be constructed with plotting functions provided such as plot_factors and plot_weights. They rely on and limited by plotting functionality of Seaborn.

Please check the notebooks for detailed examples. Some of the implemented plots are demonstrated below.

mofax plots

Contributions

In case you work with MOFA+ models in Python, you might find mofax useful. Please consider contributing to this module by suggesting the missing functionality to be implemented in the form of issues and in the form of pull requests.

About

Work with trained factor models in Python

Topics

Resources

Stars

41 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

MOFA+ in Python

PyPi version

Work with trained factor models in Python.

This library provides convenience functions to load and visualize factor models trained with MOFA+ in Python. For more information on the multi-omics factor analysis v2 framework please see mofapy2 and MOFA2 GitHub repositories as well as the website.

Getting started

Installation

pip install git+https://github.com/gtca/mofax
# or
pip install mofax

Training a factor model

Please see the MOFA+ GitHub repository for more information on training the factor models with MOFA+.

Loading the model

Import the module and create a connection to the HDF5 file with the trained model:

importmofaxasmfxmodel=mfx.mofa_model("trained_mofaplus_model.hdf5")

The connection is created in the readonly mode by default and can be terminated by calling the close() method on the model object at the end of the working session:

model.close()

Model object

Model object is an instance of a mofa_model class that wraps around the HDF5 connection and provides a simple way to address the parts of the trained model such as expectations for factors and for their loadings (weights) eliminating the need to traverse the HDF5 file manually. The original connection to the HDF5 file is exposed via the model.model attribute.

Model methods

Simple data structures (e.g. lists or dictionaries) are typically returned upon accessing the properties of the mofa model, e.g. model.shape:

model.shape# returns (10138, 1124)# samples^ ^features# (cells)

More complex structures are typically returned when calling methods such as model.get_samples() to get sample -> group assignment as a pandas.DataFrame while also providing the way to only get this information for specific groups or views of the model. model.get_cells() works the same way.

model.get_cells().head()
# returns a pandas.DataFrame object:# group	cell# 0	T_CD4	AATCCTGCACATCGCC-1# 1	T_CD4	AAGACGTGTGATGCCC-1# 2	T_CD4	AAGGAGCGTCGGCATG-1# 3	T_CD4	AATCCGTCACGAGACG-1# 4	T_CD4	ACACCGAGGAGGTTGA-1

Use model.metadata to get the metadata table — it's a shorhand for samples_metadata, there's also features_metadata available.

model.metadata.head()
# returns a pandas.DataFrame object:# group n_genes# sample# AATCCTGCACATCGCC-1 T_CD4 1087# AAGACGTGTGATGCCC-1 T_CD4 1836# AAGGAGCGTCGGCATG-1 T_CD4 2216# AATCCGTCACGAGACG-1 T_CD4 1615# ACACCGAGGAGGTTGA-1 T_CD4 1800

To get expectations of W (weights) and Z (factors) matrices, use get_weights() and get_factors(), respectively. There's also a df=True option to get expectations as a Pandas data frame rather than a NumPy 2D array.

model.get_factors(factors=range(3), df=True).head()
# Factor1 Factor2 Factor3# AATCCTGCACATCGCC-1 0.012582 -0.093512 -0.011228# AAGACGTGTGATGCCC-1 0.001091 -0.027217 -0.011331# AAGGAGCGTCGGCATG-1 -0.015097 0.093493 -0.010593# AATCCGTCACGAGACG-1 -0.046222 0.225920 0.010083# ACACCGAGGAGGTTGA-1 0.011766 -0.055964 -0.011298

Variance explained by each factor per view and per group is calculated during the tranining and stored in the model file and can be accessed with get_r2():

model.get_r2().head()
# Factor	View Group	R2# 0	Factor1	drugs group1	13.589131# 1	Factor1	methylation group1	17.330235# 2	Factor1	rna group1	7.032133# 3	Factor1	mutations group1	22.725224# 4	Factor2	drugs group1	26.374409

MEFISTO models support

MEFISTO models can feature a few additional concepts such as covariates and interpolated factors. Covariates can be accessed via model.covariates_names and model.covariates. If interpolated factors were learnt for new values during training, they are exposed at model.interpolated_factors and also can be obtained in a long DataFrame with model.get_interpolated_factors(df_long=True).

Utility functions

A few utility functions such as calculate_factor_r2 to calculate the variance explained by a factor are provided as well.

Plotting functions

A few basic plots can be constructed with plotting functions provided such as plot_factors and plot_weights. They rely on and limited by plotting functionality of Seaborn.

Please check the notebooks for detailed examples. Some of the implemented plots are demonstrated below.

mofax plots

Contributions

In case you work with MOFA+ models in Python, you might find mofax useful. Please consider contributing to this module by suggesting the missing functionality to be implemented in the form of issues and in the form of pull requests.

About

Work with trained factor models in Python

Topics

Resources

Stars

41 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages