
SupaseQSは、 Supabaseが提供するPostgreSQLの実装のおかげで、DNAシーケンスデータベースをローカルで管理するために使用できるツールです。
PostgreSQLをバックエンドデータベースマネージャー、KMERベースのベクトル化、およびベクトル検索として活用して、BLASTの機能を模倣します。
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を実行していることがわかったものと交換してください。
アプリケーションはAPIサービスとして機能し、Fastapiを活用します。 Supabaseへの接続は、 vecsライブラリに組み込まれたものと同様のクライアントのsqlalchemy実装を介して処理されます。
アプリケーションは2つの要求タイプを受け入れます。
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アレイ)でベクトル化され、その後、Supabaseのsequencesテーブルに説明と説明(単一シーケンスの場合、FASTAファイルのシーケンスのヘッダーのヘッダーと元のシーケンス)とともにアップロードされます。
2-取得-シーケンスデータベースを検索します
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