Skip to content

How searching works

A search asks the question "which cells express this sequence?" Malva answers it across every sample in the database and returns the cells that match. This page explains the model behind that answer.

The sequence index

Malva indexes the transcriptomic sequences of every cell as short k-mers. A search compares your query against that index and finds the cells whose measured sequences contain the query k-mers. Two consequences follow from this design:

  • A query is always about sequence content, never about a name. Gene names work because Malva translates them into their reference sequences first.
  • The search service reports how many cells in the database hit each k-mer. Those counts are the basis for the coverage and expression statistics you see in the results.

Query types

The Expression Explorer accepts three kinds of query.

Query Example What happens
Gene names CD3E or CD3E MS4A1 Each name is resolved to a reference sequence and searched.
DNA or FASTA a pasted sequence, or a dropped FASTA file The sequence is searched directly.
Natural language "endothelial cells in kidney" The Interpret assistant turns it into a structured search you can review before submitting.

You can add several queries to one job with Add search. See Running a search for the full tutorial.

Advanced options

When you open the New search drawer, the Advanced options section controls two settings.

Min and max k-mer count

The fields Min k-mer count and Max k-mer count are labelled cells / k-mer. They keep only the cells whose k-mer count for a query sequence falls inside the range you set.

  • The Min value filters out cells that match the sequence too rarely to be interesting, for example to focus on high-confidence hits.
  • The Max value filters out cells with implausibly high counts, which can be noisy.

The defaults are 0 and 100,000, which apply no filtering. These values map to the count_at_least and count_at_most parameters of the search API.

Unstranded mode

Unstranded mode searches both strands of the DNA simultaneously. When it is off, Malva searches the given strand only. Turn it on when you care about either strand, for example when the strand of a sequence is not known.

Coverage searches

The Coverage Explorer has no advanced options. Coverage searches always search both strands and always use the default k-mer count range. See Searching regions and sequences.

Dataset restriction

Restricting a search to specific datasets is possible through the search API, but it is not exposed in the web interface. Metadata filters offer the same control for most use cases.

Every submission of the search form counts as exactly one search, regardless of how many genes, sequences, or words the query contains. Each search consumes one unit of your daily quota, and each one appears as an entry in your job history. The quotas page explains the limits and how the daily reset works.

How coverage probing works

The Coverage Explorer measures how many reads in the database map to each part of a genomic region. It slides a 48-base window across the region you give it, and each window becomes a probe that is searched against the index. The result is a coverage value per position that the browser draws as a track.

Two limits apply:

  • A region query (chr1:1000000-2000000 or a gene name) covers at most 10 million bases.
  • A sequence query accepts a DNA string of at least 48 bases and at most 1 million bases.

See Searching regions and sequences for the tutorial.