엔진
테라바이트급 생물학 데이터를 바로 검색하는 엔진
BioQ는 메타게놈 단백질 57.4억 개와 UniProt 레코드 1.49억 건을 데이터베이스에 옮기지 않고 그 자리에서 답합니다. 그 뒤에 있는 기술을, 직접 잰 숫자로 소개합니다.
대부분의 도구는 등록된 것을 찾습니다. BioQ는 조건을 만족하는 것을 찾습니다.
포털과 BLAST류 도구는 「X를 보여 줘」, 「X와 비슷한 것」에 답합니다. 발견은 여러 데이터셋에 걸친 조건이라, 엔진이 층들을 대신 엮어 줍니다.
UniProt P04637 보여 줘
내 서열과 비슷한 서열
토양에서 채취된 단백질
단백질 A는 있고 단백질 B는 없는 어셈블리
알려진 도메인이 없는 토양의 대형 단백질 패밀리
이 ID를 아는 데이터베이스와, 아예 찾아보지 않은 데이터베이스
직접 하면 얼마나 걸리는가
실제 질문 여섯 개를 양쪽 방식으로 쟀습니다. 다운로드 시간은 공개 아카이브에서 저희가 측정한 전송 속도 기준이며, 사용자 환경에 따라 다를 수 있습니다.
막대는 1밀리초~10시간 로그 눈금입니다.
사용자와 1.15 TB 사이의 다섯 층
쓰는 곳
어디서든 같은 답게이트웨이
누가, 얼마나 물을 수 있는지엔진
22개 층 중 20개 서비스 중직접 만든 인덱스
약 107 GB, 원본과 대조 검증공개 원본
통째로 복사하지 않고 그 자리에서 읽음속도를 만든 인덱싱 결정 여섯 가지
파일의 푸터가 곧 인덱스
1.11 TB parquet은 이미 로우그룹 46,303개 전부의 최소·최대 ID를 담고 있습니다. 827 MB 푸터가 2 MB 인덱스가 됩니다.
많은 사용자를 위한 배치
대표 서열 1.287억 개를 탐색 가능한 저장소로 다시 써서, 조회 한 번에 최대 242 MB 대신 46 KB만 옮깁니다.
gzip 안에서의 임의 접근
일반 gzip은 처음부터 풀어야 합니다. 블록 인덱스가 있는 BGZF로 다시 쓰면 어떤 좌표든 한 번에 찾습니다.
질문 하나에 블록 하나
탐색할 수 없던 26 GB gzip을 독립 블록 5,773개로 바꿨습니다. 잃어버린 레코드 0건, 인덱스 404 KB.
양방향 인덱스, 촘촘하게
46.2억 쌍에 대한 Pfam 단백질→도메인, 도메인→단백질 인덱스를 66 GB에서 18 GB로 다시 묶었습니다.
데이터와 함께 쓰는 인덱스
나중에 붙인 희소 인덱스는 한 시간 넘게 걸렸지만, 빌드 중에 쓰면 비용이 없습니다. 작은 파일 102,074개를 4개로 묶었습니다.
기억하는 상동성 검색
미리 만든 k-mer 인덱스로 MMseqs2를 돌립니다. 결과는 서열·매개변수·데이터베이스 버전의 지문으로 캐시돼, 같은 질문은 즉시 답하면서도 언제 계산했는지 함께 알려 줍니다.
인터넷 너머 첫 검색
0.04 s같은 검색을 다시 할 때
양성 대조
| Query | E-value | Identity |
|---|---|---|
| HIV reverse transcriptase | 1.3×10⁻¹³ | 36.7% |
| Human hemoglobin α | 1.1×10⁻¹¹ | 99.0% |
| E. coli β-lactamase | 2.6×10⁻³³ | 50.0% |
인덱스를 신중하게 만드는 이유
k-mer 인덱스는 데이터베이스의 20~46배 크기입니다. Swiss-Prot(서열 575,748개)은 서비스 중이고, 더 큰 코퍼스는 인덱싱 중입니다.
질문 하나, 모든 층, 정직한 답
/whereis는 9개 층에 각자 마감 시간을 두고 동시에 묻고, 각 층이 실제로 무엇을 했는지 그대로 보고합니다. 인터넷 너머로 0.12~0.48초에 답합니다.
GET /api/v1/whereis?id=MGYP000000149140found주장에는 독립된 근거가 필요합니다
연관 주장에는 서로 다른 채취 실행에서 나온 어셈블리가 최소 3개 필요합니다. 모든 답에 판정이 붙습니다.
모집단 없는 비율은 없습니다
같은 겹침도 모집단에 따라 1.000이 되기도, 212.5가 되기도 합니다. 엔진은 이를 추측하지 않습니다.
부하가 걸릴수록 빨라집니다
탐색 가능한 저장소에서는 동시 접속이 늘수록 중앙값 지연이 오히려 줄었고, 실패는 0건이었습니다.
초당 질의 수
중앙값 지연
서비스를 시작하기 전, 엔진은 실제 질문 다섯 개에 맞게 답해야 합니다
- KRAS: 가장 의존적인 계통은 췌장
- TP53–MDM2 상호작용 점수 700 이상
- RefSeq에서 SARS-CoV-2 스파이크 염기 반환
- 헤모글로빈 검색이 상동체를 찾음
- 음성 대조가 부재를 증명
저희가 찾아내고, 측정하고, 설계로 막은 「조용한 오답」
구간 탐색이 서열 395,688개를 놓치고 「없음」이라 답했습니다.
이제 모든 로우그룹을 확인합니다. 회귀 시험 4/4 통과.
TrEMBL 샤드 19개 중 2개만 적재됐을 때, 레코드의 89.2%가 없는 것처럼 보일 뻔했습니다.
적재 범위를 보고하고, 부재를 가정하지 않습니다.
한 칸 밀림 오류로 모든 단백질의 도메인이 한 행씩 어긋났는데, 합계는 전부 맞았습니다.
빌더가 자가 점검하고, 리더가 적재 시 길이를 확인합니다.
검증기가 양쪽이 모두 비어 있을 때 「일치」로 기록했습니다.
검증기는 무언가를 찾은 뒤에만 비교합니다.
실제 212.5배 농축이 1.000으로 보고됐습니다.
모집단이 명시되지 않으면 비율을 내지 않습니다.
AlphaFold 「잔기 수」가 실제로는 원자 수여서 7.8배 컸습니다.
Cα 레코드로 다시 만들었고 대조 4/4를 통과했습니다.
모든 층이 따르는 다섯 가지 규칙
- 모든 답에 출처를 붙인다.
- 인덱스는 원본과 대조한다. 자기 자신과 비교하지 않는다.
- 일부만 적재되면 이유와 함께 503으로 답한다. 조용히 「없음」이라 하지 않는다.
- 빌드는 합계를 단언한다.
- 양성 대조 없이는 완료가 아니다.
시험 스위트는 일부러 망가뜨린 계약 13개를 13개 모두 잡아냅니다.
다음 단계: 단백질 언어 모델로 의미 기반 검색
Swiss-Prot 단백질 575,748개 전부를 ESM-2(650M)로 GPU 한 대에서 47.6분 만에 임베딩하고, 원거리 상동체에서 MMseqs2와 비교했습니다.
MMseqs2가 정렬하지 못하는 쌍
MMseqs2가 정렬할 수 있는 쌍
두 방법은 서로를 보완하므로, MMseqs2로 먼저 찾고 ESM-2로 다시 정렬하는 구조로 갑니다. 아직 서비스 전입니다.