
Supaseqs adalah alat yang dapat digunakan untuk mengelola database urutan DNA secara lokal, berkat implementasi PostgreSQL yang ditawarkan oleh Supabase .
Ini memanfaatkan PostgreSQL sebagai Backend Database Manager, vektorisasi berbasis KMER dan pencarian vektor untuk meniru fungsi ledakan.
Jika Anda bekerja di lingkungan Linux, Anda mungkin hanya ingin mengunduh/menyalin setup.sh dan meluncurkannya:
# Linux
wget https://raw.githubusercontent.com/AstraBert/SupaSeqs/main/scripts/setup.sh
bash setup.shPastikan lingkungan Anda memiliki:
gitNode v18 atau mengikutinpm dan npxpython 3.10 atau mengikuti proses instalasi harus berfungsi baik di Windows dan di Linux. Pertama -tama, klon repositori ini:
# BOTH Windows and Linux
git clone https://github.com/AstraBert/SupaSeqs
cd SupaSeqs Dapatkan Eksekusi Baris Perintah supabase :
# BOTH Windows and Linux
npm install supabaseBuat dan mulai contoh Supabase:
# BOTH Windows and Linux
npx supabase init
npx supabase start Ambil string koneksi dari DB URL yang akan dicetak setelah perintah ini:
# BOTH Windows and Linux
npx supabase statusBuat lingkungan virtual, aktifkan dan pasang dependensi yang diperlukan:
# Linux
python3 -m venv apienv
source apienv/bin/activate
python3 -m pip install -r requirements.txtAtau
# Windows
python3 - m venv .apienv
.apienvScriptsactivate # For Command Prompt
# or
.apienvActivate.ps1 # For PowerShell
python3 - m pip install - r .requirements.txtDalam lingkungan virtual, jalankan:
# BOTH Windows and Linux
cd scripts
python3 -m fastapi dev Jika ada masalah dengan koneksi ke klien Supabase, pastikan untuk mengganti string koneksi sesuai dengan 16 main.py dengan yang Anda temukan menjalankan supabase status .
Aplikasi ini berfungsi sebagai layanan API, memanfaatkan FASTAPI. Koneksi ke Supabase ditangani melalui implementasi sqlalchemy dari klien yang mirip dengan yang dibangun di perpustakaan vecs .
Aplikasi menerima dua jenis permintaan:
1- Posting - Unggah urutan atau file 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 " } " Setiap urutan mendapat vektor dengan representasi berbasis 5-mer (array 1024-DIM), yang kemudian diunggah ke tabel sequences pada Supabase bersama dengan deskripsi (jika disediakan dalam kasus urutan tunggal, header urutan untuk yang ada dalam file FASTA) dan urutan asli.
2- Dapatkan - Cari melalui database urutan
curl -X ' GET ' ' http://localhost:8000/seqs/AACTTCTCAAACAGACTTGCTTGATGATCCGGATCAGATGAATGAAGACAAGCGTCATTCACAGGGTACATTCACCAGTGACTACAGCAAGTTCCTCGACACCAGGCGTGCTCAAGACTTCTTGGATTGGCTGAAGAACACCAAGAGGAACAGGAATGAAAT?limit=100&threshold=75 ' -H ' accept: application/json 'Urutan kueri akan di vektor dan database dicari: sejumlah urutan (ditentukan dengan tombol batas , maksimum 1000) dikembalikan jika sesuai dengan ambang kesamaan (ditentukan sebagai nilai persentase dengan tombol ambang ); Respons khasnya terlihat seperti ini:
{ "1" :{ "sequence" : " GGCAGAACCCAGGGCACCAGCACGCCGAAGGACCACCGCAGGCTGGCCAGCGCTCCACCCTCCCTGCACCACACCCTGCGAGCAAAAGGCAGCAGAAATGAAGAGCATTTACTTTGTGGCTGGATTGTTTGTAATGCTGGTACAAGGCAGCTGGCAACACCCACTTCAAGACACAGAGGAAAAACCCAGGTCTTTCTCAACTTCTCAAACAGACTTGCTTGATGATCCGGATCAGATGAATGAAGACAAGCGTCATTCACAGGGTACATTCACCAGTGACTACAGCAAGTTCCTCGACACCAGGCGTGCTCAAGACTTCTTGGATTGGCTGAAGAACACCAAGAGGAACAGGAATGAAAT " , "description" : " M57688.1 Octodon degus glucagon mRNA, complete cds " , "cos_dist" : 0.23987939711631145 }} Ini dicapai berkat fungsi yang disebut match_page_sections dan didefinisikan sebagai berikut:
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 );
$$;Kontribusi lebih dari diterima! Lihat Pedoman Kontribusi untuk informasi lebih lanjut :)
Jika Anda menemukan proyek ini bermanfaat, harap pertimbangkan untuk mendanai dan membuatnya tumbuh: mari kita dukung sumber terbuka bersama!?
Proyek ini disediakan di bawah lisensi MIT: Ini akan selalu open-source dan gratis untuk digunakan.
Jika Anda menggunakan proyek ini, silakan kutip penulis: Astra Clelia Bertelli