SpliceBERT (مخطوطة، نسخة ما قبل الطباعة) هو نموذج لغة تسلسل RNA أساسي تم تدريبه مسبقًا على أكثر من 2 مليون تسلسل RNA للفقاريات. يمكن استخدامه لدراسة ربط الحمض النووي الريبي (RNA) والمشكلات البيولوجية الأخرى المتعلقة بتسلسل الحمض النووي الريبي (RNA).
للحصول على معايير وتطبيقات إضافية لـ SpliceBERT (على سبيل المثال، في مجموعات بيانات SpliceAI و DeepSTARR)، راجع تحليل SpliceBERT.
توفر البيانات
كيفية استخدام SpliceBERT؟
إعادة إنتاج التحليل
اتصال
الاقتباس
تتوفر أوزان النموذج وبيانات التحليل على zenodo:7995778.
يتم تنفيذ SpliceBERT باستخدام transformers
Huggingface وFlashAttention في PyTorch. يجب على المستخدمين تثبيت pytorch، والمحولات، وFlashAttention (اختياري) لتحميل نموذج SpliceBERT.
تثبيت باي تورش: https://pytorch.org/get-started/locally/
تثبيت محولات Huggingface: https://huggingface.co/docs/transformers/installation
تثبيت FlashAttention (اختياري): https://github.com/Dao-AILab/flash-attention
يمكن استخدام SpliceBERT بسهولة لسلسلة من المهام النهائية من خلال واجهة برمجة التطبيقات الرسمية. راجع الدليل الرسمي لمزيد من التفاصيل.
تحميل SpliceBERT
يمكن تنزيل أوزان SpliceBERT من zenodo: https://zenodo.org/record/7995778/files/models.tar.gz?download=1
متطلبات النظام
نوصي بتشغيل SpliceBERT على نظام Linux مع وحدة معالجة الرسومات NVIDIA بذاكرة لا تقل عن 4 جيجابايت. (من الممكن تشغيل نموذجنا باستخدام وحدة المعالجة المركزية فقط، ولكنه سيكون بطيئًا للغاية.)
أمثلة
نحن نقدم نصًا تجريبيًا لإظهار كيفية استخدام SpliceBERT من خلال واجهة برمجة التطبيقات الرسمية لمحولات Huggingface في الجزء الأول من كتلة التعليمات البرمجية التالية.
يمكن للمستخدمين أيضًا استخدام SpliceBERT مع FlashAttention عن طريق استبدال واجهة برمجة التطبيقات الرسمية بواجهة برمجة التطبيقات المخصصة، كما هو موضح في الجزء الثاني من مقطع التعليمات البرمجية التالي. لاحظ أن تنبيه الفلاش يتطلب تمكين وضع الدقة المختلطة التلقائي (amp) وهو لا يدعم حاليًا attention_mask
استخدم SpliceBERT من خلال واجهة برمجة التطبيقات الرسمية لمحولات Huggingface:
SPLICEBERT_PATH = "/path/to/SpliceBERT/models/model_folder" # قم بتعيين المسار إلى مجلد شعلة SpliceBERTimport المدربة مسبقًا من المحولات import AutoTokenizer, AutoModel, AutoModelForMaskedLM, AutoModelForTokenClassification#load tokenizertokenizer = AutoTokenizer.from_pretrained(SPLICEBERT_PATH)# تحضير تسلسل الإدخالseq = "ACGUACGuacguaCGu" ## تحذير: هذا مجرد عرض توضيحي. قد لا يعمل SpliceBERT على تسلسلات أقصر من 64nt حيث تم تدريبه على تسلسلات 64-1024nt في lengthseq = ' '.join(list(seq.upper().replace("U", "T"))) # U - > T وأضف Whitespaceinput_ids = tokenizer.encode(seq) # N -> 5, A -> 6, C -> 7, G -> 8, T(U) -> 9. ملاحظة: ستتم إضافة رمز [CLS] ورمز [SEP] إلى بداية ونهاية seqinput_ids = torch.as_tensor(input_ids) # تحويل قائمة بايثون إلى Tensorinput_ids = input_ids.unsqueeze(0) # add Batch البعد والشكل: (حجم الدفعة، طول التسلسل)# استخدم واجهة برمجة التطبيقات الرسمية لـ Huggerface لاستخدام SpliceBERT# احصل على النوكليوتيدات التضمين (الحالات المخفية)model = AutoModel.from_pretrained(SPLICEBERT_PATH) # تحميل modellast_hidden_state = model(input_ids).last_hidden_state # الحصول على الحالات المخفية من الطبقة الأخيرةhiddens_states = model(input_ids,put_hidden_states=True).hidden_states # الحالات المخفية من طبقة التضمين (nn .التضمين) والمحولات 6 طبقات التشفير # احصل على سجلات نوع النوكليوتيدات في نمذجة اللغة المقنعةmodel = AutoModelForMaskedLM.from_pretrained(SPLICEBERT_PATH) # تحميل modellogits = model(input_ids).logits # Shape: (batch_size, serial_length, vocab_size)# Finetuning SpliceBERT لمهام تصنيف الرمز المميزmodel = AutoModelForTokenClassification.from_pretrained( SPLICEBERT_PATH، num_labels=3) # افترض أن رقم الفصل هو 3، الشكل: (batch_size, serial_length, num_labels)# Finetuning SpliceBERT لمهام تصنيف التسلسلmodel = AutoModelForSequenceClassification.from_pretrained(SPLICEBERT_PATH, num_labels=3) # افترض أن رقم الفصل هو 3، الشكل: ( حجم الدُفعة، طول التسلسل، عدد_التسميات)
أو استخدم SpliceBERT مع FlashAttention عن طريق استبدال واجهة برمجة التطبيقات الرسمية بواجهة برمجة التطبيقات المخصصة (حاليًا لا يدعم flash-attention انتباه_قناع. ونتيجة لذلك، يجب أن يكون طول التسلسلات في كل دفعة هو نفسه)
SPLICEBERT_PATH = "/path/to/SpliceBERT/models/model_folder" # قم بتعيين المسار إلى مجلد SpliceBERTimport المُدرب مسبقًا torchimport syssys.path.append(os.path.dirname(os.path.abspath(SPICEBERT_PATH)))from تقوم المحولات باستيراد AutoTokenizerfrom splicebert_model import BertModel، BertForMaskedLM، BertForTokenClassification#load tokenizertokenizer = AutoTokenizer.from_pretrained(SPLICEBERT_PATH)# تحضير تسلسل الإدخالseq = "ACGUACGuacguaCGu" ## تحذير: هذا مجرد عرض توضيحي. قد لا يعمل SpliceBERT على تسلسلات أقصر من 64nt لأنه تم تدريبه على تسلسلات 64-1024nt في lengthseq = ' '.join(list(seq.upper().replace("U", "T"))) # U - > T وأضف Whitespaceinput_ids = tokenizer.encode(seq) # N -> 5, A -> 6, C -> 7, G -> 8, T(U) -> 9. ملاحظة: ستتم إضافة رمز [CLS] ورمز [SEP] إلى بداية ونهاية seqinput_ids = torch.as_tensor(input_ids) # تحويل قائمة بايثون إلى Tensorinput_ids = input_ids.unsqueeze(0) # add Batch البعد والشكل: (حجم الدفعة، طول التسلسل)# أو استخدم BertModel المخصص مع FlashAttention# احصل على النوكليوتيدات التضمينات (الحالات المخفية)model = BertModel.from_pretrained(SPLICEBERT_PATH) # تحميل النموذج مع autocast(): last_hidden_state = model(input_ids).last_hidden_state # الحصول على الحالات المخفية من الطبقة الأخيرة Hiddens_states = model(input_ids,put_hidden_states=True).hidden_states # الحالات المخفية من طبقة التضمين (nn.Embedding) و6 طبقات تشفير المحولات # احصل على سجلات نوع النوكليوتيدات في نمذجة اللغة المقنعةmodel = BertForMaskedLM.from_pretrained(SPLICEBERT_PATH) # نموذج تحميل مع autocast(): logits = model(input_ids).logits # Shape: (batch_size, serial_length, vocab_size)# Finetuning SpliceBERT لتصنيف الرمز المميز المهام مع البث التلقائي (): النموذج = BertForTokenClassification.from_pretrained(SPLICEBERT_PATH, num_labels=3) # افترض أن رقم الفصل هو 3، الشكل: (batch_size, serial_length, num_labels)# ضبط دقيق SpliceBERT لمهام تصنيف التسلسل باستخدام autocast(): model = BertForSequenceClassification.from_pretrained(SPLICEBERT_PATH, num_labels=3) # افترض أن رقم الفصل هو 3، الشكل: (حجم الدفعة، طول التسلسل، عدد_العلامات)
تكوين البيئة.
نقوم بتشغيل البرامج النصية في بيئة كوندا باستخدام python 3.9.7 على نظام Linux (Ubuntu 20.04.3 LTS). الحزم المطلوبة هي :
ملحوظة: رقم الإصدار يستخدم فقط لتوضيح إصدار البرامج المستخدمة في دراستنا. في معظم الحالات، لا يحتاج المستخدمون إلى التأكد من أن الإصدارات متطابقة تمامًا مع إصداراتنا لتشغيل الرموز
bedtools (2.30.0)
MaxEntScan (2004)
gtfToGenePred (v377)
Python (3.9.7)
transformers (4.24.0)
pytorch (1.12.1)
h5py (3.2.1)
numpy (1.23.3)
scipy (1.8.0)
scikit-learn (1.1.1)
scanpy (1.8.2)
matplotlib (3.5.1)
seaborn (0.11.2)
tqdm (4.64.0)
pyBigWig (0.3.18)
cython (0.29.28)
حزم بايثون:
أدوات سطر الأوامر (اختياري):
استنساخ هذا المستودع، وتنزيل البيانات والبرامج النصية للإعداد.
git clone [email protected]:biomed-AI/SpliceBERT.gitcd SpliceBERT bash download.sh # تنزيل أوزان النماذج وبياناتها، أو تنزيلها يدويًا من أمثلة [zenodo](https://doi.org/10.5281/zenodo.7995778)cd bash setup.sh # تجميع أدوات selene، مطلوب cython
(اختياري) قم بتنزيل النتائج المحسوبة مسبقًا للقسم 1-4 من Google Drive وفك ضغطها في مجلد examples
.
# يجب على المستخدمين تنزيل `pre-computed_results.tar.gz` يدويًا ووضعه في المجلد `./examples` وتشغيل الأمر التالي لفك ضغط ittar -zxvf pre-computed_results.tar.gz
إذا تم تنزيل النتائج المحسوبة مسبقًا وفك ضغطها بشكل صحيح، فيمكن للمستخدمين تخطي تشغيل pipeline.sh
في دفاتر ملاحظات jupyter في القسم 1-4.
قم بتشغيل دفاتر ملاحظات jupyter (القسم 1-4) أو bash scripts pipeline.sh
(القسم 5-6):
تحليل الحفظ التطوري (متعلق بالشكل 1)
تحليل تضمين النوكليوتيدات (المتعلق بالشكل 2)
تحليل وزن الانتباه (متعلق بالشكل 3)
تحليل التأثير المتغير (المتعلق بالشكل 4)
التنبؤ بالنقطة الفرعية (متعلق بالشكل 5)
التنبؤ بموقع الوصلة (يتعلق بالشكل 6)
بالنسبة للمشكلات المتعلقة بالبرامج النصية، قم بإنشاء مشكلة على https://github.com/biomed-AI/SpliceBERT/issues.
إذا كانت لديك أي أسئلة أخرى، فلا تتردد في الاتصال بـ chenkenbio {at} gmail.com.
@المادة{تشن2023.01.31.526427، المؤلف = {تشن، كين وتشو، يو ودينغ، ماولين ووانغ، يو ورن، تشيشيانغ ويانغ، يويدونغ}، title = {التعلم الخاضع للإشراف الذاتي على الملايين من تسلسلات الحمض النووي الريبي (RNA) الأولية من 72 فقرية يحسن التنبؤ بربط الحمض النووي الريبي (RNA) القائم على التسلسل}، السنة = {2024}، دوى = {10.1093/bib/bbae163}، الناشر = {مطبعة جامعة أكسفورد}، عنوان URL = {https://doi.org/10.1093/bib/bbae163}، مجلة = {موجزات في المعلوماتية الحيوية} }