
Supaseqs ist ein Tool, mit dem dank der von Supabase angebotenen PostgreSQL -Implementierung die Datenbanken von DNA -Sequenzen lokal verwaltet werden kann.
Es nutzt PostgreSQL als Backend-Datenbankmanager, KMER-basierte Vektorisation und Vektorsuche, um die Funktionen der Explosion nachzuahmen.
Wenn Sie in einer Linux -Umgebung arbeiten, möchten Sie möglicherweise nur ein Setup herunterladen/kopieren und starten:
# Linux
wget https://raw.githubusercontent.com/AstraBert/SupaSeqs/main/scripts/setup.sh
bash setup.shStellen Sie sicher, dass Ihre Umgebung:
gitNode v18 oder folgtnpm und npxpython 3.10 oder nach dem Installationsprozess sollte sowohl unter Windows als auch unter Linux funktionieren. Klonen Sie zunächst dieses Repository:
# BOTH Windows and Linux
git clone https://github.com/AstraBert/SupaSeqs
cd SupaSeqs Holen Sie sich die supabase -Befehlszeile ausführbare Dienste:
# BOTH Windows and Linux
npm install supabaseErstellen und starten Sie eine Supabase -Instanz:
# BOTH Windows and Linux
npx supabase init
npx supabase start Rufen Sie die Verbindungszeichenfolge aus der DB URL ab, die nach diesem Befehl gedruckt wird:
# BOTH Windows and Linux
npx supabase statusErstellen Sie eine virtuelle Umgebung, aktivieren Sie sie und installieren Sie die erforderlichen Abhängigkeiten:
# Linux
python3 -m venv apienv
source apienv/bin/activate
python3 -m pip install -r requirements.txtOder
# Windows
python3 - m venv .apienv
.apienvScriptsactivate # For Command Prompt
# or
.apienvActivate.ps1 # For PowerShell
python3 - m pip install - r .requirements.txtRennen Sie in der virtuellen Umgebung:
# BOTH Windows and Linux
cd scripts
python3 -m fastapi dev Wenn Probleme mit der Verbindung zum Supabase -Client vorhanden sind, stellen Sie sicher, dass Sie die Verbindungszeichenfolge in einer Zeile von 16 main.py durch den, den Sie gefunden haben, durch supabase status ersetzen.
Die Anwendung arbeitet als API -Dienst und nutzt Fastapi. Die Verbindung zu Supabase wird über eine sqlalchemy -Implementierung eines Kunden behandelt, der der in der vecs -Bibliothek eingebauten ähnlich ist.
Die Anmeldung akzeptiert zwei Anfrage -Typen:
1- Post - Laden Sie eine Sequenz oder eine Fasta -Datei hoch :
# 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 " } " Jede Sequenz wird mit einer 5-mer-basierten Darstellung (ein 1024-DIM-Array) vektorisiert, das dann zusammen mit einer Beschreibung (falls im Fall der einzelnen Sequenz angegeben wird, die Header der Sequenzen für diejenigen in einer Fasta-Datei und die ursprüngliche Sequenz in die sequences Tabelle in Supabase hochgeladen werden.
2- Get - Suchen Sie die Sequenzdatenbank durch
curl -X ' GET ' ' http://localhost:8000/seqs/AACTTCTCAAACAGACTTGCTTGATGATCCGGATCAGATGAATGAAGACAAGCGTCATTCACAGGGTACATTCACCAGTGACTACAGCAAGTTCCTCGACACCAGGCGTGCTCAAGACTTCTTGGATTGGCTGAAGAACACCAAGAGGAACAGGAATGAAAT?limit=100&threshold=75 ' -H ' accept: application/json 'Die Abfragesequenz wird vektorisiert und die Datenbank wird durchsucht: Eine Reihe von Sequenzen (angegeben mit dem Grenzschlüssel , maximal 1000 beträgt), wird zurückgegeben, wenn sie mit einem Ähnlichkeitsschwellenwert konform sind (als prozentualer Wert mit der Taste des Schwellenwerts angegeben). Die typische Antwort sieht folgendermaßen aus:
{ "1" :{ "sequence" : " GGCAGAACCCAGGGCACCAGCACGCCGAAGGACCACCGCAGGCTGGCCAGCGCTCCACCCTCCCTGCACCACACCCTGCGAGCAAAAGGCAGCAGAAATGAAGAGCATTTACTTTGTGGCTGGATTGTTTGTAATGCTGGTACAAGGCAGCTGGCAACACCCACTTCAAGACACAGAGGAAAAACCCAGGTCTTTCTCAACTTCTCAAACAGACTTGCTTGATGATCCGGATCAGATGAATGAAGACAAGCGTCATTCACAGGGTACATTCACCAGTGACTACAGCAAGTTCCTCGACACCAGGCGTGCTCAAGACTTCTTGGATTGGCTGAAGAACACCAAGAGGAACAGGAATGAAAT " , "description" : " M57688.1 Octodon degus glucagon mRNA, complete cds " , "cos_dist" : 0.23987939711631145 }} Dies wird dank einer Funktion namens match_page_sections erreicht und wie folgt definiert:
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 );
$$;Beiträge sind mehr als willkommen! Weitere Informationen finden Sie unter Beitragsrichtlinien :)
Wenn Sie dieses Projekt nützlich empfanden, sollten Sie es in Betracht ziehen, es zu finanzieren und zu wachsen: Lassen Sie uns gemeinsam Open-Source unterstützen!?
Dieses Projekt wird im Rahmen der MIT-Lizenz bereitgestellt: Es wird immer Open-Source und kostenlos sein.
Wenn Sie dieses Projekt verwenden, zitieren Sie bitte den Autor: Astra Clelia Bertelli