Learn R Programming

misha

The misha package is a toolkit for analysis of genomic data. it implements an efficient data structure for storing genomic data, and provides a set of functions for data extraction, manipulation and analysis.

Installation

You can install the released version of misha from CRAN with:

install.packages("misha")

Or from conda:

conda install -c aviezerl r-misha

And the development version from GitHub with:

remotes::install_github("tanaylab/misha")

Quick start

The package ships a small example database, so there is nothing to download before the first query:

library(misha)
gdb.init_examples() # a tiny example genome, unpacked into tempdir()
gtrack.ls() # what is in it
#> [1] "array_track"         "dense_track"         "rects_track"        
#> [4] "sparse_track"        "subdir.dense_track2"
gextract("dense_track", gintervals(1, 0, 500), iterator = 100) # signal in 100 bp bins
#>   chrom start end dense_track intervalID
#> 1  chr1     0 100   0.1688889          1
#> 2  chr1   100 200   0.1700000          1
#> 3  chr1   200 300   0.1800000          1
#> 4  chr1   300 400   0.1600000          1
#> 5  chr1   400 500   0.1100000          1
head(gscreen("dense_track > 0.2", gintervals(1, 0, 50000), iterator = 100)) # bins above a threshold
#>   chrom start   end
#> 1  chr1 17200 17300
#> 2  chr1 20000 20100
#> 3  chr1 23300 23400
#> 4  chr1 26200 26300
#> 5  chr1 32600 32800
#> 6  chr1 32900 33000

Every misha analysis is that shape: a scope (where to look), an iterator (in what chunks), and a track expression evaluated over it.

Usage

Start with the Misha Basics short guide.

See the Genomes vignette for instructions on how to create a misha database for common genomes.

See the user manual for more usage details.

Using misha with an LLM agent

Drop-in prompt (no clone needed). Paste the block below into your agent at the start of a misha task. It points the agent at the raw files on GitHub, so it works without a local checkout:

Before writing any misha code, fetch and read:

- https://raw.githubusercontent.com/tanaylab/misha/master/agent-guides/misha-core.md  (mandatory: concepts + everyday recipes)
- https://raw.githubusercontent.com/tanaylab/misha/master/agent-guides/misha-anti-patterns.md  (silent footguns; cross-referenced from core)
- https://raw.githubusercontent.com/tanaylab/misha/master/agent-guides/misha-advanced.md  (consult on demand: 2D / Hi-C, PWM, import/export, new genomes)

Follow the conventions in those files. When you hit a recipe with an "Avoid:" block, treat it as a hard rule.

For agents (Claude Code, Copilot, Cursor, etc.) writing misha analysis code in a downstream project, point them at the maintained agent guides in this repo:

The core guide is ~4k words and targets a system-prompt-sized context. For Claude Code-style setups, dropping misha-core.md (or all three) into the project’s CLAUDE.md / AGENTS.md is the intended use.

Running scripts from old versions of misha (< 4.2.0)

Starting in misha 4.2.0, the package no longer stores global variables such as ALLGENOME or GROOT. Instead, these variables are stored in a special environment called .misha. This means that scripts written for older versions of misha will no longer work. To run such scripts, either add a prefix of .misha$ to all those variables (.misha$ALLGENOME instead of ALLGENOME), or run the following command before running the script:

ALLGENOME <<- .misha$ALLGENOME
GROOT <<- .misha$GROOT
ALLGENOME <<- .misha$ALLGENOME
GINTERVID <<- .misha$GINTERVID
GITERATOR.INTERVALS <<- .misha$GITERATOR.INTERVALS
GROOT <<- .misha$GROOT
GWD <<- .misha$GWD
GTRACKS <<- .misha$GTRACKS

Copy Link

Version

Install

install.packages('misha')

Monthly Downloads

149

Version

5.11.23

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Aviezer Lifshitz

Last Published

August 24th, 2026

Functions in misha (5.11.23)

gdb.genome_info

Inspect a resolved genome recipe without building
gdb.get_readonly_attrs

Returns a list of read-only track attributes
gdb.install_intervals

Install interval sets onto an existing groot
gdb.install_gff3_converter

Pre-install UCSC's gff3ToGenePred binary
gdb.init_examples

Initialise the example Genomic Database
gdb.export_fasta

Export a database genome as FASTA
gdb.info

Get Database Information
gdb.install_gtf_converter

Pre-install UCSC's gtfToGenePred binary
gdb.create_linked

Create a linked database with symlinks to a parent database
gdb.init

Initializes connection with Genomic Database
gdir.create

Creates a new directory in Genomic Database
gdb.list_genomes

List resolvable genome names
gdb.mark_cache_dirty

Mark cached track list as dirty
gdist

Calculates distribution of track expressions
gdb.unload

Unloads the genome database
gdb.reload

Reloads database from the disk
gdir.rm

Deletes a directory from Genomic Database
gdb.set_readonly_attrs

Sets read-only track attributes
gdir.cd

Changes current working directory in Genomic Database
gdir.cwd

Returns the current working directory in Genomic Database
ggenome.implant

Implant donor sequences into a reference genome
gintervals

Creates a set of 1D intervals
gintervals.2d.band_intersect

Intersects two-dimensional intervals with a band
gintervals.2d

Creates a set of 2D intervals
gintervals.2d.union

Unites two sets of 2D intervals
gintervals.2d.convert_to_indexed

Convert 2D interval set to indexed format
ggenome.transplant

Transplant sequences from one genome into another
gintervals.2d.intersect

Intersects two sets of 2D intervals
gintervals.2d.all

Returns 2D intervals that cover the whole genome
gextract

Returns evaluated track expression
gintervals.all

Returns 1D intervals that cover the whole genome
gintervals.convert_to_indexed

Convert 1D interval set to indexed format
gintervals.annotate

Annotates 1D intervals using nearest neighbors
gintervals.chrom_sizes

Returns number of intervals per chromosome
gintervals.attr.import

Imports interval set attributes values
gintervals.attr.export

Returns interval set attributes values
gintervals.canonic

Converts intervals to canonic form
gintervals.as_chain

Transforms existing intervals to a chain format
gintervals.attr.set

Assigns value to an interval set attribute
gintervals.attr.get

Returns value of an interval set attribute
gintervals.import_bed

Import intervals from a BED file
gintervals.from_mat

Convert an interval-indexed matrix back to an intervals + values data.frame
gintervals.force_range

Limits intervals to chromosomal range
gintervals.diff

Calculates difference of two intervals sets
gintervals.from_strings

Creates 1D intervals from coordinate strings
gintervals.exists

Tests for a named intervals set existence
gintervals.coverage_fraction

Calculate fraction of genomic space covered by intervals
gintervals.dataset

Returns the database/dataset path for interval sets
gintervals.covered_bp

Calculate total base pairs covered by intervals
gintervals.dbs

Returns all database paths containing an interval set
gintervals.is.bigset

Tests for big intervals set
gintervals.intersect

Calculates an intersection of two sets of intervals
gintervals.load

Loads a named intervals set
gintervals.import_genes

Imports genes and annotations from files
gintervals.liftover

Converts intervals from another assembly
gintervals.load_chain

Loads assembly conversion table from a chain file
gintervals.ls

Returns a list of named intervals sets
gintervals.import_vcf

Import intervals from a VCF file
gintervals.mapply

Applies a function to values of track expressions
gintervals.normalize

Normalize intervals to fixed or variable sizes
gintervals.import_gff

Import intervals from a GFF/GTF file
gintervals.rbind

Combines several sets of intervals
gintervals.mark_overlaps

Mark overlapping intervals with a group ID
gintervals.random

Generate random genome intervals
gintervals.quantiles

Calculates quantiles of a track expression for intervals
gintervals.save

Creates a named intervals set
gintervals.rm

Deletes a named intervals set
gintervals.path

Returns the path on disk of an interval set
gintervals.summary

Calculates summary statistics of track expression for intervals
gintervals.neighbors

Finds neighbors between two sets of intervals
gintervals.union

Calculates a union of two sets of intervals
gintervals.to_mat

Convert intervals + values data.frame to an interval-indexed matrix
grevcomp

Get reverse complement of DNA sequence
giterator.intervals

Returns iterator intervals
gpartition

Partitions the values of track expression
gintervals.update

Updates a named intervals set
gsample

Returns samples from the values of track expression
giterator.cartesian_grid

Creates a cartesian-grid iterator
gquantiles

Calculates quantiles of a track expression
glookup

Returns values from a lookup table based on track expression
gseq.pwm

Score DNA sequences with a PWM over a region of interest
gscreen

Finds intervals that match track expression
gseq.read_jaspar

Read motifs from a JASPAR PFM format file
gseq.kmer.dist

Compute k-mer distribution in genomic intervals
gseq.pwm_edits

Show optimal edits to reach a PWM score threshold
gseq.comp

Complement DNA sequence
gseq.kmer

Score DNA sequences with a k-mer over a region of interest
gseq.read_homer

Read motifs from a HOMER motif format file
gsegment

Divides track expression into segments
gseq.extract

Returns DNA sequences
gsynth.bin_map

Create a bin mapping from value-based merge specifications
gsynth.load

Load a gsynth.model from disk
gseq.rev

Reverse DNA sequence
gseq.read_meme

Read motifs from a MEME minimal motif format file
gsynth.random

Generate random genome sequences
gsynth.forbid_kmer

Forbid a k-mer pattern in a trained gsynth model
gsynth.convert

Convert a legacy RDS gsynth model to .gsm format
gsynth.cell_merge

Resolve a cell-level merge specification into flat bin indices
gseq.revcomp

Get reverse complement of DNA sequence
gsummary

Calculates summary statistics of track expression
gtrack.2d.convert_to_indexed

Convert 2D track to indexed format
gtrack.2d.import_contacts

Creates a track from a file of inter-genomic contacts
gsynth.train

Train a stratified Markov model from genome sequences
gsynth.save

Save a gsynth.model to disk in .gsm format
gsynth.score

Score the genome under a trained gsynth model
gtrack.2d.create

Creates a 'Rectangles' track from intervals and values
gsynth.sample

Sample a synthetic genome from a trained Markov model
gtrack.2d.import

Creates a 2D track from tab-delimited file
gsynth.replace_kmer

Iteratively replace a k-mer in the genome
gtrack.array.extract

Returns values from 'Array' track
gtrack.array.set_colnames

Sets column names of array track
gtrack.convert_to_indexed

Convert a track to indexed format
gtrack.attr.import

Imports track attributes values
gtrack.copy

Copies one or more tracks
gtrack.attr.get

Returns value of a track attribute
gtrack.array.import

Creates an array track from array tracks or files
gtrack.attr.set

Assigns value to a track attribute
gtrack.convert

Converts a track to the most current format
gtrack.exists

Tests for a track existence
gtrack.array.get_colnames

Returns column names of array track
gtrack.export_bigwig

Export a track to BigWig format
gtrack.attr.export

Returns track attributes values
gtrack.create_dirs

Create directories needed for track creation
gtrack.dbs

Returns the database paths that contain track(s)
gtrack.create_sparse

Creates a 'Sparse' track from intervals and values
gtrack.export_bedgraph

Export a track to bedGraph format
gtrack.create

Creates a track from a track expression
gtrack.create_pwm_energy

Creates a new track from PSSM energy function
gtrack.dataset

Returns the database/dataset path for a track
gtrack.create_dense

Creates a 'Dense' track from intervals and values
gtrack.modify

Modifies track contents
gtrack.ls

Returns a list of track names
gtrack.info

Returns information about a track
gtrack.import_set

Creates one or more tracks from multiple WIG / BigWig / BedGraph / tab-delimited files on disk or FTP
gtrack.mv

Renames or moves a track
gtrack.lookup

Creates a new track from a lookup table based on track expression
gtrack.import

Creates a track from WIG / BigWig / BedGraph / BED / tab-delimited file
gtrack.import_mappedseq

Creates a track from a file of mapped sequences
gtrack.liftover

Imports a track from another assembly
gtrack.path

Returns the path on disk of a track
gvtrack.clear

Deletes all virtual tracks
gtrack.var.rm

Deletes a track variable
gtrack.var.get

Returns value of a track variable
gtrack.var.set

Assigns value to a track variable
gtrack.rm

Deletes a track
gtrack.smooth

Creates a new track from smoothed values of track expression
gtrack.var.ls

Returns a list of track variables for a track
gvtrack.filter

Attach or clear a genomic mask filter on a virtual track
gvtrack.array.slice

Defines rules for a single value calculation of a virtual 'Array' track
gvtrack.create

Creates a new virtual track
gvtrack.iterator.2d

Defines modification rules for a two-dimensional iterator in a virtual track
misha-package

Toolkit for analysis of genomic data
%>%

Pipe operator
gvtrack.iterator

Defines modification rules for a one-dimensional iterator in a virtual track
print.gsynth.model

Print summary of a gsynth.model
gwilcox

Calculates Wilcoxon test on sliding windows over track expression
gvtrack.ls

Returns a list of virtual track names
gvtrack.info

Returns the definition of a virtual track
rbind.intervs_mat

Row-bind intervs_mat objects concatenating their intervals
[.intervs_mat

Subset an intervs_mat preserving interval identity
gvtrack.rm

Deletes a virtual track
misha-NaN

How misha treats NaN values
gwget

Downloads files from FTP server
.misha

An environment for storing the package global variables
gcor

Calculates correlation between track expressions
gintervals.neighbors.upstream

Directional neighbor finding functions
.gmultitasking_strategy

Choose the multitasking strategy for gextract
gcis_decay

Calculates distribution of contact distances
.gextract_track_parallel

Track-parallel gextract via mclapply
gbins.summary

Calculates summary statistics of a track expression for bins
gcluster.run

Runs R commands on a cluster
gdataset.example_path

Create an example dataset on the fly
gcompute_strands_autocorr

Computes auto-correlation between the strands for a file of mapped sequences
gbins.quantiles

Calculates quantiles of a track expression for bins
gdb.build_genome

Build a misha genome database from a name
gdb.convert_to_indexed

Change Database to Indexed Genome Format
gdataset.save

Save a dataset
gdataset.unload

Unload a dataset from the namespace
gdb.create

Creates a new Genomic Database
gdb.create_genome

Create and Load a Genome Database
gdataset.load

Load a dataset into the namespace
gdataset.info

Get dataset information
gdataset.ls

List working database and loaded datasets