Skip to content

tidyomics/omicslog_dev

Repository files navigation

Omicslog

Importing packages

from omicslog import log_start
import numpy as np
import pandas as pd
import anndata as ad
from scipy.sparse import csr_matrix
📝 Note
The AnnData object were generated using code from the original AnnData documentation.
counts = csr_matrix(np.random.poisson(1, size=(100, 2000)), dtype=np.float32)
adata = ad.AnnData(counts)

adata.obs_names = [f"Cell_{i:d}" for i in range(adata.n_obs)]
adata.var_names = [f"Gene_{i:d}" for i in range(adata.n_vars)]

logdata = log_start(adata)
print(logdata)

ct = np.random.choice(["B", "T", "Monocyte"], size=(logdata.n_obs,))
logdata.obs["cell_type"] = pd.Categorical(ct)  # Categoricals are preferred for efficiency
print(logdata)
logdata.uns["_omicslog"]
AnnData object with n_obs × n_vars = 100 × 2000
    uns: '_omicslog'
AnnData object with n_obs × n_vars = 100 × 2000
    obs: 'cell_type'
    uns: '_omicslog'

Operation log:
[2026-05-20 13:49:41] obs: 'cell_type' added
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
Time Operation Message
0 2026-05-20 13:49:41 obs 'cell_type' added

Fltrating by Cells (.obs)

logdata = logdata[logdata.obs.cell_type == "B"]
print(logdata)
logdata.uns["_omicslog"]
AnnData object with n_obs × n_vars = 27 × 2000
    obs: 'cell_type'
    uns: '_omicslog'

Operation log:
[2026-05-20 13:49:41] obs: 'cell_type' added
[2026-05-20 13:49:43] subset: removed 73 samples (73%), 27 samples remaining
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
Time Operation Message
0 2026-05-20 13:49:41 obs 'cell_type' added
1 2026-05-20 13:49:43 subset removed 73 samples (73%), 27 samples remaining

Filtering by Genes (.var)

logdata = logdata[:,logdata.var_names.str.endswith("1")]
print(logdata)
logdata.uns["_omicslog"]
AnnData object with n_obs × n_vars = 27 × 200
    obs: 'cell_type'
    uns: '_omicslog'

Operation log:
[2026-05-20 13:49:41] obs: 'cell_type' added
[2026-05-20 13:49:43] subset: removed 73 samples (73%), 27 samples remaining
[2026-05-20 13:49:46] subset: removed 1800 genes (90%), 200 genes remaining
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
Time Operation Message
0 2026-05-20 13:49:41 obs 'cell_type' added
1 2026-05-20 13:49:43 subset removed 73 samples (73%), 27 samples remaining
2 2026-05-20 13:49:46 subset removed 1800 genes (90%), 200 genes remaining

Adding observatons and variables

logdata.obsm["X_umap"] = np.random.normal(0, 1, size=(logdata.n_obs, 2))
logdata.varm["gene_stuff"] = np.random.normal(0, 1, size=(logdata.n_vars, 5))
print(logdata)
logdata.uns["_omicslog"]
AnnData object with n_obs × n_vars = 27 × 200
    obs: 'cell_type'
    uns: '_omicslog'
    obsm: 'X_umap'
    varm: 'gene_stuff'

Operation log:
[2026-05-20 13:49:41] obs: 'cell_type' added
[2026-05-20 13:49:43] subset: removed 73 samples (73%), 27 samples remaining
[2026-05-20 13:49:46] subset: removed 1800 genes (90%), 200 genes remaining
[2026-05-20 13:49:48] obsm: 'X_umap' added
[2026-05-20 13:49:48] varm: 'gene_stuff' added
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
Time Operation Message
0 2026-05-20 13:49:41 obs 'cell_type' added
1 2026-05-20 13:49:43 subset removed 73 samples (73%), 27 samples remaining
2 2026-05-20 13:49:46 subset removed 1800 genes (90%), 200 genes remaining
3 2026-05-20 13:49:48 obsm 'X_umap' added
4 2026-05-20 13:49:48 varm 'gene_stuff' added

Adding layers

logdata.layers["log_transformed"] = np.log1p(logdata.X)
print(logdata)
logdata.uns["_omicslog"]
AnnData object with n_obs × n_vars = 27 × 200
    obs: 'cell_type'
    uns: '_omicslog'
    obsm: 'X_umap'
    varm: 'gene_stuff'
    layers: 'log_transformed'

Operation log:
[2026-05-20 13:49:41] obs: 'cell_type' added
[2026-05-20 13:49:43] subset: removed 73 samples (73%), 27 samples remaining
[2026-05-20 13:49:46] subset: removed 1800 genes (90%), 200 genes remaining
[2026-05-20 13:49:48] obsm: 'X_umap' added
[2026-05-20 13:49:48] varm: 'gene_stuff' added
[2026-05-20 13:49:50] layers: 'log_transformed' added
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
Time Operation Message
0 2026-05-20 13:49:41 obs 'cell_type' added
1 2026-05-20 13:49:43 subset removed 73 samples (73%), 27 samples remaining
2 2026-05-20 13:49:46 subset removed 1800 genes (90%), 200 genes remaining
3 2026-05-20 13:49:48 obsm 'X_umap' added
4 2026-05-20 13:49:48 varm 'gene_stuff' added
5 2026-05-20 13:49:50 layers 'log_transformed' added

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors