Motor

Hecho para consultar la biología a escala de terabytes

BioQ trabaja sobre 5.74 mil millones de proteínas metagenómicas y 149 millones de registros de UniProt sin cargarlos en una base de datos. Estas son las técnicas que lo hacen posible, con las cifras que medimos.

5.74Bproteínas metagenómicas consultables por ID
107 GBde índices sobre 1.15 TB de datos de origen
1.5M×respuestas «sin dominio Pfam» más rápidas: de 35.6 min a 1.4 ms
230 q/scon 64 usuarios simultáneos, mediana de 165 ms

La mayoría de las herramientas buscan lo que está registrado. BioQ busca lo que cumple una condición.

Los portales y las herramientas tipo BLAST responden a «muéstrame X» y «qué se parece a X». Las preguntas de descubrimiento son condiciones que cruzan conjuntos de datos, así que el motor combina sus capas por ti.

Búsqueda

Muéstrame UniProt P04637

Secuencias parecidas a la mía

Proteínas de muestras de suelo

Condición

Ensamblajes que contienen la proteína A pero no la B

Grandes familias de proteínas del suelo sin dominio conocido

Todas las bases de datos que conocen este ID, y todas las que nunca lo buscaron

Lo que cuesta hacerlo por tu cuenta

Seis preguntas reales, cronometradas de las dos formas. Los tiempos de descarga usan velocidades de transferencia que medimos desde los archivos públicos; tu conexión puede variar.

Recuperar una proteína metagenómica por ID, entre 5.74 mil millones
Por tu cuenta≈3 h

Descargar 1.11 TB y luego recorrer 46 303 row groups sin ordenar.

BioQ0.17 s

Una solicitud. 0.17 s para un representante de clúster; hasta 14.5 s en frío para los demás miembros.

64K×
¿Qué dominios Pfam tiene esta proteína, si tiene alguno?
Por tu cuenta≈7.5 h

Descargar 117.6 GB y luego construir un índice directo de 66 GB (74 min).

BioQ40 ms

Una solicitud, unos 40 ms por internet.

678K×
Ensamblajes con la proteína A en los que falta la proteína B
Por tu cuenta≈2.4 h

Descargar 26.1 GB de gzip sin acceso aleatorio y luego descomprimir 112 GB en cada pregunta.

BioQ≤1.5 s

Una solicitud lee un solo bloque de 5 MB.

6K×
La secuencia de un registro de UniProt TrEMBL
Por tu cuenta≈2.3 h

Descargar 40.6 GB y luego descomprimir todo lo que precede al registro.

BioQ76 s

76 s la primera vez a esa profundidad; cada repetición se sirve desde la caché.

110×
Bases en una coordenada, en 544 891 secuencias de RefSeq
Por tu cuenta≈1 h

Descargar 11.9 GB y luego construir índices BGZF y FASTA (19 min).

BioQ0.07 s

Una solicitud; 1.7 ms dentro del motor.

51K×
¿Qué bases de datos conocen este identificador y cuáles nunca lo buscaron?
Por tu cuenta≈3.3 h

Descargar ≈1.2 TB de archivos para revisarlos uno por uno.

BioQ0.12–0.48 s

Una solicitud consulta nueve capas a la vez.

25K×

Las barras usan una escala logarítmica de 1 milisegundo a 10 horas.

Cinco capas entre tú y 1.15 TB

Donde trabajas

Las mismas respuestas en todas partes
Web appREST APIResearch agentMCP · Claude · ChatGPT

Pasarela

Quién puede preguntar y cuánto
Google · email sign-inAPI keysDaily quotasParameter validationResponse scrubbing

Motor

20 de 22 capas activas
/whereis/search/lookup/domains/cooccur/depmap/affinity/interaction/dna+12

Índices propios

≈107 GB, verificados contra la fuente
parquet footer indexseekable C2 storeBGZF + .gzi/.fai32 MB co-occurrence blocksTrEMBL offset indexPfam forward + invertedMMseqs2 k-mer index

Fuentes públicas

Se leen in situ, nunca se copian enteras
UniProtMGnifyPfamPDBAlphaFold DBChEMBLDrugCentralGtoPdbClinVarSTRINGBioGRIDDepMapRefSeqGRCh38GRCm39

Seis decisiones de indexación que lo hacen rápido

El footer del propio archivo es el índice

1.11 TB de parquet ya guardan los ID mínimo y máximo de sus 46 303 row groups. Ese footer de 827 MB se convierte en un índice de 2 MB.

Antes1.11 TB
Después25.5 MB

Un formato pensado para muchos lectores

128.7 millones de secuencias representativas reescritas en un almacén con acceso aleatorio: cada búsqueda mueve 46 KB en lugar de hasta 242 MB.

Antes42.9 s
Después168 ms

Acceso aleatorio dentro de gzip

Un gzip normal hay que descomprimirlo desde el principio. Reescrito como BGZF con un índice de bloques, cualquier coordenada queda a un solo acceso.

Antes1.40 s
Después1.7 ms

Un bloque por pregunta

Un gzip de 26 GB sin acceso aleatorio pasó a ser 5773 bloques independientes, sin perder ningún registro y con un índice de 404 KB.

Antes715 ms
Después13.2 ms

En ambos sentidos, bien compactados

Índices Pfam proteína→dominio y dominio→proteína sobre 4.62 mil millones de pares, recompactados de 66 GB a 18 GB.

Antes35.6 min
Después1.4 ms

Índices escritos junto con los datos

Un índice disperso añadido después tardó más de una hora; escrito durante la construcción no cuesta nada. 102 074 archivos pequeños empaquetados en cuatro.

Antes6,829 ms
Después374 ms

Búsqueda de homología con memoria

MMseqs2 con un índice de k-mers precalculado. Cada resultado se guarda en caché bajo una huella de la secuencia, los parámetros y la versión de la base de datos, así que una repetición vuelve al instante y sigue indicando cuándo se calculó.

8.8–10 s

primera búsqueda por internet

0.04 s

la misma búsqueda otra vez

Controles positivos

QueryE-valueIdentity
HIV reverse transcriptase1.3×10⁻¹³36.7%
Human hemoglobin α1.1×10⁻¹¹99.0%
E. coli β-lactamase2.6×10⁻³³50.0%

Por qué indexamos con criterio

Un índice de k-mers ocupa 20–46× el tamaño de su base de datos. Swiss-Prot (575 748 secuencias) ya está activo; los corpus más grandes se están indexando.

DB1.59 GB
Index73 GB

Una pregunta, todas las capas, respuestas honestas

/whereis consulta nueve capas en paralelo, cada una con su propio límite de tiempo, e informa de lo que hizo realmente cada una. Por internet responde en 0.12–0.48 s.

GET /api/v1/whereis?id=MGYP000000149140found
MGnify C2Encontrado1.05 ms
MGnify proteinsEncontrado2,017 ms
MGnify assembliesEncontrado103 ms
Pfam domainsBuscado, ausente0.13 ms
UniProt TrEMBLNo aplicable
Pfam domain indexNo aplicable
StructuresNo aplicable
BindingNo aplicable
ClinVarNo aplicable

Toda afirmación requiere evidencia independiente

Una asociación necesita al menos tres ensamblajes de muestreos distintos. Cada respuesta lleva su veredicto.

testable · ≥3weak · <3no claim · 1 run

Sin universo no hay ratio

El mismo solapamiento da 1.000 o 212.5 según el universo. El motor se niega a adivinarlo.

Supuesto1.000
Declarado212.5

Más rápido bajo carga

En el almacén con acceso aleatorio, la latencia mediana mejora a medida que sube la concurrencia, sin ningún fallo.

Consultas por segundo

1×5.4 q/s
32×138.9 q/s
64×230.2 q/s

Latencia mediana

1×179 ms
32×168 ms
64×165 ms

Antes de servir, el motor debe responder cinco preguntas reales

  1. KRAS: el linaje más dependiente es el páncreas
  2. La interacción TP53–MDM2 obtiene una puntuación de al menos 700
  3. RefSeq devuelve las bases de la espícula del SARS-CoV-2
  4. Una búsqueda de hemoglobina encuentra su homólogo
  5. Un control negativo demuestra la ausencia

Respuestas erróneas silenciosas que encontramos, medimos y eliminamos por diseño

395,688

Una búsqueda por ventanas pasó por alto 395 688 secuencias y respondió «no encontrado».

Ahora se revisan todos los row groups; la prueba de regresión pasa 4 de 4.

89.2%

Con 2 de 19 shards de TrEMBL cargados, el 89.2 % de los registros habría parecido ausente.

Se informa la cobertura; la ausencia nunca se da por supuesta.

+1

Un error off-by-one desplazó una fila los dominios de cada proteína mientras todos los totales cuadraban.

Los procesos de construcción se autoverifican; los lectores comprueban las longitudes al cargar.

∅ = ∅

Un verificador registró «coincide» cuando ambos lados estaban vacíos.

Los verificadores deben encontrar algo antes de comparar.

212.5×

Un enriquecimiento real de 212.5× se informó como 1.000.

Ningún ratio si no se declara el universo.

7.8×

Los «residuos» de AlphaFold eran recuentos de átomos, 7.8× demasiado altos.

Reconstruido a partir de los registros Cα; pasan 4 de 4 controles.

Cinco reglas que cumple cada capa

  1. Procedencia en cada respuesta.
  2. Un índice se verifica contra su fuente, nunca contra sí mismo.
  3. Una carga parcial responde 503 con un motivo, nunca un «ninguno» silencioso.
  4. Cada construcción comprueba sus totales.
  5. Nada está terminado sin un control positivo.

La batería de pruebas detecta 13 de 13 contratos rotos a propósito.

En fase piloto

Lo próximo: búsqueda semántica con modelos de lenguaje de proteínas

Generamos embeddings de las 575 748 proteínas de Swiss-Prot con ESM-2 (650M) en 47.6 minutos en una GPU y los comparamos con MMseqs2 en homólogos lejanos.

Pares que MMseqs2 no puede alinear

MMseqs240.7%
ESM-246.9%

Pares que MMseqs2 puede alinear

MMseqs286.8%
ESM-278.2%

Se complementan, así que el plan es MMseqs2 primero y después reordenación con ESM-2. Aún no está activo.

Mira cómo responde a tu pregunta

Las cuentas gratuitas tienen el motor completo: todas las capas, el agente y la API.

Empezar gratisAPI