Skip to main content

No project description provided

Project description

Righor

Companion to righor, to publish the python package. Install with pip install righor.

Load a model:

import righor
import matplotlib.pyplot as plt
import seaborn
import pandas as pd
from tqdm.notebook import tqdm
from collections import Counter
import numpy as np


igor_model = righor.load_model("human", "trb")

# alternatively, you can load a model from igor files
# igor_model = righor.load_model_from_files(params.txt, marginals.txt, anchor_v.csv, anchor_j.csv)

Generate sequences fast:

# Create a generator object
generator = igor_model.generator(seed=42) # or igor_model.generator() to run it without a seed

# Generate 10'000 functional sequences (not out-of-frame, no stop codons, right boundaries)
for _ in tqdm(range(10000)):
    # generate_without_errors ignore Igor error model, use "generate" if this is needed
    sequence = generator.generate_without_errors(functional=True)
    if "IGH" in sequence.cdr3_aa:
        print("TRB CDR3 containing \"IGH\":", sequence.cdr3_aa)

# Generate one sequence with a particular V/J genes family
V_genes = righor.genes_matching("TRBV5", igor_model) # return all the V genes that match TRBV5
J_genes = righor.genes_matching("TRBJ", igor_model) # all the J genes
generator = igor_model.generator(seed=42, available_v=V_genes, available_j=J_genes)
generation_result = generator.generate_without_errors(functional=True)
print("Result:")
print(generation_result)
print("Explicit recombination event:")
print(generation_result.recombination_event)

Evaluate a given sequence:

## Evaluate a given sequence

my_sequence = "ACCCTCCAGTCTGCCAGGCCCTCACATACCTCTCAGTACCTCTGTGCCAGCAGTGAGGACAGGGACGTCACTGAAGCTTTCTTTGGACAAGGCACC"

# evaluate the sequence
result_inference = igor_model.evaluate(my_sequence)

# Most likely scenario
best_event = result_inference.best_event

print(f"Probability that this specific event chain created the sequence: {best_event.likelihood / result_inference.likelihood:.2f}.")
print(f"Reconstructed sequence (without errors):", best_event.reconstructed_sequence)
print(f"Pgen: {result_inference.pgen:.1e}")

Infer a model:

# Inference of a model 
# use a very small number of sequences to keep short (takes ~30s)

# here we just generate the sequences needed
generator = igor_model.generator()
example_seq = generator.generate(False)
sequences = [generator.generate(False).full_seq for _ in range(500)]

# define parameters for the alignment and the inference (also possible for the evaluation)
align_params = righor.AlignmentParameters()
align_params.left_v_cutoff = 70
infer_params = righor.InferenceParameters()

# generate an uniform model as a starting point 
# (it's generally *much* faster to start from an already inferred model)
model = igor_model.copy()
model.p_ins_vd = np.ones(model.p_ins_vd.shape)
model.error_rate = 0

# align multiple sequences at once
aligned_sequences = model.align_all_sequences(sequences, align_params)

# multiple round of expectation-maximization to infer the model
models = {}
model = igor_model.uniform()
model.error_rate = 0
models[0] = model
for ii in tqdm(range(35)):
    models[ii+1] = models[ii].copy()
    models[ii+1].infer(aligned_sequences, infer_params)

Visualize and save the model

# visualisation of the results
fig = righor.plot_vdj(*[models[ii] for ii in [10, 2, 1, 0]] + [igor_model],
            plots_kws=[{'label':f'Round #{ii}', 'alpha':0.8} for ii in [10,2, 1, 0]] + [{'label':f'og'}] )
# save the model in the Igor format
# will return an error if the directory already exists
models[10].save_model('test_save')
# load the model
igor_model = righor.vdj.Model.load_model_from_files('test_save/model_params.txt',
                                          'test_save/model_marginals.txt',
                                          'test_save/V_gene_CDR3_anchors.csv',
                                          'test_save/J_gene_CDR3_anchors.csv')

# save the model in json format (one file)
models[10].save_json('test_save.json')
# load the model in json
igor_model = righor.vdj.Model.load_json('test_save.json')

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

righor-0.2.8.tar.gz (1.1 MB view hashes)

Uploaded Source

Built Distributions

righor-0.2.8-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.3 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

righor-0.2.8-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (16.7 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

righor-0.2.8-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (14.4 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

righor-0.2.8-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (12.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

righor-0.2.8-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.2 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

righor-0.2.8-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.whl (14.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.12+ i686

righor-0.2.8-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.3 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

righor-0.2.8-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (16.7 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

righor-0.2.8-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (14.4 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

righor-0.2.8-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (12.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

righor-0.2.8-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.2 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

righor-0.2.8-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.whl (14.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.12+ i686

righor-0.2.8-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.3 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

righor-0.2.8-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (16.7 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

righor-0.2.8-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (14.4 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

righor-0.2.8-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (12.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

righor-0.2.8-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.2 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

righor-0.2.8-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl (14.5 MB view hashes)

Uploaded PyPy manylinux: glibc 2.12+ i686

righor-0.2.8-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.3 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

righor-0.2.8-pp37-pypy37_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (16.7 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

righor-0.2.8-pp37-pypy37_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (14.4 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

righor-0.2.8-pp37-pypy37_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (12.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

righor-0.2.8-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.2 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

righor-0.2.8-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl (14.5 MB view hashes)

Uploaded PyPy manylinux: glibc 2.12+ i686

righor-0.2.8-cp312-none-win_amd64.whl (1.7 MB view hashes)

Uploaded CPython 3.12 Windows x86-64

righor-0.2.8-cp312-none-win32.whl (1.6 MB view hashes)

Uploaded CPython 3.12 Windows x86

righor-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.4 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

righor-0.2.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (16.8 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

righor-0.2.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (14.5 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

righor-0.2.8-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (12.6 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

righor-0.2.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.2 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

righor-0.2.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl (14.5 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.12+ i686

righor-0.2.8-cp312-cp312-macosx_11_0_arm64.whl (1.9 MB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

righor-0.2.8-cp312-cp312-macosx_10_12_x86_64.whl (2.0 MB view hashes)

Uploaded CPython 3.12 macOS 10.12+ x86-64

righor-0.2.8-cp311-none-win_amd64.whl (1.7 MB view hashes)

Uploaded CPython 3.11 Windows x86-64

righor-0.2.8-cp311-none-win32.whl (1.6 MB view hashes)

Uploaded CPython 3.11 Windows x86

righor-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.4 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

righor-0.2.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (16.7 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

righor-0.2.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (14.5 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

righor-0.2.8-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (12.6 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

righor-0.2.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.2 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

righor-0.2.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl (14.6 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.12+ i686

righor-0.2.8-cp311-cp311-macosx_11_0_arm64.whl (1.9 MB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

righor-0.2.8-cp311-cp311-macosx_10_12_x86_64.whl (2.0 MB view hashes)

Uploaded CPython 3.11 macOS 10.12+ x86-64

righor-0.2.8-cp310-none-win_amd64.whl (1.7 MB view hashes)

Uploaded CPython 3.10 Windows x86-64

righor-0.2.8-cp310-none-win32.whl (1.6 MB view hashes)

Uploaded CPython 3.10 Windows x86

righor-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.4 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

righor-0.2.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (16.7 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

righor-0.2.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (14.5 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

righor-0.2.8-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (12.6 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARMv7l

righor-0.2.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.2 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

righor-0.2.8-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl (14.6 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.12+ i686

righor-0.2.8-cp310-cp310-macosx_11_0_arm64.whl (1.9 MB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

righor-0.2.8-cp310-cp310-macosx_10_12_x86_64.whl (2.0 MB view hashes)

Uploaded CPython 3.10 macOS 10.12+ x86-64

righor-0.2.8-cp39-none-win_amd64.whl (1.7 MB view hashes)

Uploaded CPython 3.9 Windows x86-64

righor-0.2.8-cp39-none-win32.whl (1.6 MB view hashes)

Uploaded CPython 3.9 Windows x86

righor-0.2.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.4 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

righor-0.2.8-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (16.7 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

righor-0.2.8-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (14.5 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

righor-0.2.8-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (12.6 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARMv7l

righor-0.2.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.2 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

righor-0.2.8-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl (14.6 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.12+ i686

righor-0.2.8-cp38-none-win_amd64.whl (1.7 MB view hashes)

Uploaded CPython 3.8 Windows x86-64

righor-0.2.8-cp38-none-win32.whl (1.6 MB view hashes)

Uploaded CPython 3.8 Windows x86

righor-0.2.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.4 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

righor-0.2.8-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (16.7 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ s390x

righor-0.2.8-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (14.5 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64le

righor-0.2.8-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (12.7 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARMv7l

righor-0.2.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.2 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

righor-0.2.8-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl (14.6 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.12+ i686

righor-0.2.8-cp37-none-win_amd64.whl (1.7 MB view hashes)

Uploaded CPython 3.7 Windows x86-64

righor-0.2.8-cp37-none-win32.whl (1.6 MB view hashes)

Uploaded CPython 3.7 Windows x86

righor-0.2.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.4 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

righor-0.2.8-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl (16.8 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ s390x

righor-0.2.8-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (14.5 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ppc64le

righor-0.2.8-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (12.6 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARMv7l

righor-0.2.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.2 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

righor-0.2.8-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl (14.6 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.12+ i686

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page