
Supaseqs는 Supabase 가 제공하는 PostgreSQL 구현 덕분에 DNA 서열 데이터베이스를 로컬로 관리하는 데 사용할 수있는 도구입니다.
PostgreSQL을 백엔드 데이터베이스 관리자, KMER 기반 벡터화 및 벡터 검색으로 활용하여 폭발 기능을 모방합니다.
Linux 환경에서 작업하는 경우 Setup.sh를 다운로드/복사하여 시작하는 것만 큼 :
# Linux
wget https://raw.githubusercontent.com/AstraBert/SupaSeqs/main/scripts/setup.sh
bash setup.sh환경이 있는지 확인하십시오.
gitNode v18 또는 다음npm 및 npxpython 3.10 또는 설치 프로세스 다음은 Windows와 Linux에서 작동해야합니다. 우선,이 저장소를 복제하십시오.
# BOTH Windows and Linux
git clone https://github.com/AstraBert/SupaSeqs
cd SupaSeqs supabase 명령 행 실행 파일을 가져옵니다.
# BOTH Windows and Linux
npm install supabaseSupabase 인스턴스를 작성하고 시작하십시오.
# BOTH Windows and Linux
npx supabase init
npx supabase start 이 명령 후 인쇄 될 DB URL 에서 연결 문자열을 검색하십시오.
# BOTH Windows and Linux
npx supabase status가상 환경을 만들고 활성화하고 필요한 종속성을 설치하십시오.
# Linux
python3 -m venv apienv
source apienv/bin/activate
python3 -m pip install -r requirements.txt또는
# Windows
python3 - m venv .apienv
.apienvScriptsactivate # For Command Prompt
# or
.apienvActivate.ps1 # For PowerShell
python3 - m pip install - r .requirements.txt가상 환경 내에서 실행 :
# BOTH Windows and Linux
cd scripts
python3 -m fastapi dev Supabase 클라이언트와의 연결에 문제가있는 경우 16 main.py 라인으로 연결 문자열을 supabase status 실행 한 것으로 바꾸십시오.
응용 프로그램은 Fastapi를 활용하여 API 서비스로 작동합니다. Supabase와의 연결은 vecs 라이브러리에 내장 된 것과 유사한 클라이언트의 sqlalchemy 구현을 통해 처리됩니다.
응용 프로그램은 두 가지 요청 유형을 수락합니다.
1- 게시 - 시퀀스 또는 Fasta 파일 업로드 :
# Single sequence
curl -X POST " http://127.0.0.1:8000/seqs/ " -H " accept: application/json " -H " Content-Type: application/json " -d " { " sequence " : " GGCAGAACCCAGGGCACCAGCACGCCGAAGGACCACCGCAGGCTGGCCAGCGCTCCACCCTCCCTGCACCACACCCTGCGAGCAAAAGGCAGCAGAAATGAAGAGCATTTACTTTGTGGCTGGATTGTTTGTAATGCTGGTACAAGGCAGCTGGCAACACCCACTTCAAGACACAGAGGAAAAACCCAGGTCTTTCTCAACTTCTCAAACAGACTTGCTTGATGATCCGGATCAGATGAATGAAGACAAGCGTCATTCACAGGGTACATTCACCAGTGACTACAGCAAGTTCCTCGACACCAGGCGTGCTCAAGACTTCTTGGATTGGCTGAAGAACACCAAGAGGAACAGGAATGAAAT " , " description " : " M57688.1 Octodon degus glucagon mRNA, complete cds " } "
# FASTA file
curl -X POST " http://127.0.0.1:8000/seqs/ " -H " accept: application/json " -H " Content-Type: application/json " -d " { " sequence " : " sequence.fasta " } " 각 시퀀스는 5-mer 기반 표현 (1024-dim 어레이)으로 벡터화 된 다음 설명 (단일 시퀀스의 경우 제공되는 경우, FASTA 파일의 시퀀스의 헤더) 및 원래 시퀀스와 함께 Supabase의 sequences 테이블에 업로드됩니다.
2- GET- 시퀀스 데이터베이스를 통해 검색하십시오
curl -X ' GET ' ' http://localhost:8000/seqs/AACTTCTCAAACAGACTTGCTTGATGATCCGGATCAGATGAATGAAGACAAGCGTCATTCACAGGGTACATTCACCAGTGACTACAGCAAGTTCCTCGACACCAGGCGTGCTCAAGACTTCTTGGATTGGCTGAAGAACACCAAGAGGAACAGGAATGAAAT?limit=100&threshold=75 ' -H ' accept: application/json '쿼리 시퀀스가 벡터화되고 데이터베이스가 검색됩니다. 유사성 임계 값 ( 임계 값 키가있는 백분율 값으로 지정됨)을 준수하면 여러 시퀀스 ( 한계 키로 지정되고 최대 값이 1000)가 반환됩니다. 일반적인 응답은 다음과 같습니다.
{ "1" :{ "sequence" : " GGCAGAACCCAGGGCACCAGCACGCCGAAGGACCACCGCAGGCTGGCCAGCGCTCCACCCTCCCTGCACCACACCCTGCGAGCAAAAGGCAGCAGAAATGAAGAGCATTTACTTTGTGGCTGGATTGTTTGTAATGCTGGTACAAGGCAGCTGGCAACACCCACTTCAAGACACAGAGGAAAAACCCAGGTCTTTCTCAACTTCTCAAACAGACTTGCTTGATGATCCGGATCAGATGAATGAAGACAAGCGTCATTCACAGGGTACATTCACCAGTGACTACAGCAAGTTCCTCGACACCAGGCGTGCTCAAGACTTCTTGGATTGGCTGAAGAACACCAAGAGGAACAGGAATGAAAT " , "description" : " M57688.1 Octodon degus glucagon mRNA, complete cds " , "cos_dist" : 0.23987939711631145 }} 이것은 match_page_sections 라는 함수 덕분에 다음과 같이 정의됩니다.
create or replace function public .match_page_sections (
embedding vector( 1024 ),
match_threshold float,
match_count int
)
returns setof public . sequences
language sql
as $$
select *
from public . sequences
where public . sequences .embedding <=> embedding < 1 - match_threshold
order by public . sequences .embedding <=> embedding asc
limit least(match_count, 1000 );
$$;기부금은 환영받는 것 이상입니다! 자세한 내용은 기여 가이드 라인을 참조하십시오. :)
이 프로젝트가 유용하다는 것을 알게되면 자금을 조달하고 성장하도록 고려하십시오. 오픈 소스를 함께 지원합시다!?
이 프로젝트는 MIT 라이센스에 따라 제공됩니다. 항상 오픈 소스이며 무료로 사용할 수 있습니다.
이 프로젝트를 사용하는 경우 저자를 인용하십시오 : Astra Clelia Bertelli