
SUPASEQS هي أداة يمكن استخدامها لإدارة قواعد بيانات تسلسل الحمض النووي محليًا ، وذلك بفضل تطبيق PostgreSQL الذي تقدمه SUPABASE .
إنه يعزز PostgreSQL كمدير قاعدة بيانات الخلفية ، وتجارة القائمة على KMER والبحث في المتجهات لتقليد وظائف الانفجار.
إذا كنت تعمل في بيئة Linux ، فقد ترغب فقط في تنزيل/نسخ الإعداد.
# 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 supabaseإنشاء وبدء مثيل supabase:
# 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 عبر تنفيذ sqlalchemy لعميل يشبه تلك التي بنيت في مكتبة vecs .
يقبل التطبيق نوعين من الطلبات:
1- POST - قم بتحميل تسلسل أو ملف 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) ، والذي يتم تحميله بعد ذلك إلى جدول sequences على supabase جنبًا إلى جنب مع وصف (إذا تم توفيره في حالة التسلسل المفرد ، ورؤوس التسلسلات لأولئك الموجودين في ملف 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 );
$$;المساهمات أكثر من موضع ترحيب! انظر إرشادات المساهمة لمزيد من المعلومات :)
إذا وجدت هذا المشروع مفيدًا ، فيرجى النظر في تمويله وجعله ينمو: دعنا ندعم المصدر المفتوح معًا!؟
يتم توفير هذا المشروع بموجب ترخيص معهد ماساتشوستس للتكنولوجيا: سيكون دائمًا مفتوحًا ومجاني للاستخدام.
إذا كنت تستخدم هذا المشروع ، فيرجى الاستشهاد بالمؤلف: Astra Clelia Bertelli