الثلاثاء، 15 سبتمبر 2020

علم الصيدلة الجيني (Pharmacogenomis)

يعتبر علم الصيدلة الجيني مثالاً هاماً على مجال الطب الشخصي، الذي يهدف إلى تكييف العلاج الطبي لكل شخص أو لمجموعة محدودة من الأشخاص. فكرتة الأساسية هي الربط بين معلومات الحمض النووي الخاصة بالشخص ومؤشرات الاستجابة والتفاعل مع المركبات الدوائية المختلفة. في بعض الحالات كمثال، يميل بعض الأشخاص الى عدم الاستجابة لمركب دوائي معين أو يتعرضون لأعراض جانبية شديدة بدون تفسير واضح. علم الصيدلة الجيني يساعد على أجابه هذه الأسئلة. الفكرة المستقبلية لهذا العلم هو معرفة الأدوية المناسبة والضارة لشخص ما بواسطة التحليل الجيني فقط. يعتبر من الحقول الناشئة لكنه ينمو بسرعة كبيرة.


كيف يمكن لتركيبة الشخص الجينية التأثير على تفاعل جسمه مع الأدوية؟

تتفاعل الأدوية مع الجسم بطرق عديدة وذلك اعتمادًا على كيفية تناول الدواء بشكل أساسي. بعض الأدوية تحتاج الى عمليات تمثيل معينة لاستخلاص المادة الفعالة. تركيبة الحمض النووي لها تأثير على خطوات متعددة في هذه العملية مما يؤثر على كيفية الاستجابة للدواء لو التعرض لأعراض جانبية معينة.


بعض الأمثلة على هذه التفاعلات تشمل:

  • مُسْتَقْبِلاَتٌ الدواء (Drug Receptors)
بعض الأدوية تحتاج الى التفاعل والارتباط بنوع من بروتينات الخلية يسمى المُسْتَقْبِلاَتُ (Receptors) من أجل العمل بشكل صحيح. المُسْتَقْبِلاَتُ لها أنواع كثيرة بطبائع عمل مختلفة. معلومات الحمض النووي المختلفة تحدد نوع المُسْتَقْبِلاَتُ، عددها على الخلية، وقابلية ارتباطها بالمركب الدوائي الفعال. لهذا السبب نرى استجابة متباينة أو أعراض جانبية مختلفة لنفس الجرعة من المركب الدوائي عندما نقارن أشخاص مختلفين.


إحدى الأمثلة المطبقة حاليا هي علاج بعض مرضى سرطان الثدي باستخدام T-DM1(Trastuzumab emtansine). بعض سرطانات الثدي تتميز بإنتاج عدد ضخم من المُسْتَقْبِل HER2 الذي يساعد على تطور وانتشار السرطان بسرعة اكبر. يمكن استخدام T-DM1 لعلاج هذا النوع السرطانات حيث يعمل عن طريق الارتباط بهذه المُسْتَقْبِلاَتٌ تحديدا والقضاء عليها. يتم تحليل عينات من الورم عن طريق طبيب الأورام وتحديد جدوى العلاج ب T-DM1 بناء على وجود HER2.

  • القبط الخلوي للدواء (Drug Uptake)
بعض المركبات الدوائية يجب أن يتم نقلها الى داخل الخلية (بطرق حيوية مختلفة) لكي تصل الى مكان عملها. معلومات الحمض النووي المتباينة قد تعني سلوك مختلف لعملية الامتصاص لكل مجموعة من البشر. في بعض الأشخاص قد يؤدي الانخفاض الى تراكم المركب الدوائي في الجسم ووصوله الى درجة السمية. أيضا، المعلومات الجينية قد تؤثر على سرعة إخراج الدواء من الخلايا المستهدفة. في بعض الأحيان، تكون عملية التصفية سريعة الى درجة عدم إعطاء المركب الوقت للعمل بشكل كافي داخل الخلية.


كمثال، سنأخذ علاقة الستاتينات (Statins) مع العضلات. الستاتينات هي نوع من الأدوية التي تساعد على خفض الكوليسترول. لكي تعمل بطريقة صحيحة، يجب أن تؤخذ عن طريق الخلايا الكبدية عن طريق نوع من البروتينات مصنوع بواسطة جين SLCO1B1. .بعض الأشخاص لديهم سلسلة مختلفة من الجين تصنع بروتين غير قادر على امتصاص نوع من هذه الأدوية بشكل كافي. هذا البروتين المغاير للبروتين السائد يؤدي الى تراكم المركب في الدم بكميات كبيرة. مما يسبب مشكل في العضلات، بما في ذلك الضعف والألم.

  • استقلابُ الدواء (Drug Metabolism)
يمكن أن تؤثر معلوماتك الجينية على استقلاب بعض المركبات الدوائية (فصل أو تكسير المركب الى مركبات أصغر مثلا). أذا قام جسمك بتكسير أسرع للدواء سيؤدي ذلك الى تخلص جسمك من الدواء بشكل أسرع وقد تحتاج الى زيادة الجرعة أو حتى تغيير المركب الدوائي. إذا كان جسمك بتكسير أبطأ، قد تحتاج جرعة أقل.


سنأخذ استقلاب الأميتريبتيلين (Amitriptyline) كمثال. الأميتريبتيلين هو أحد الأدوية المستخدمة في علاج مرض الاكتئاب. يتأثر تفكك المركب الأولي للدواء في الجسم بجينين (CYP2D6 - CYP2C19) بالإضافة الى عوامل أخرى. اختلاف سرعة التفكك من شخص الى أخر قد تستدعي استخدام جرعات مختلفة. في بعض الأحيان، قد يوصي الطبيب النفسي باختبارات للجينات المذكورة لتحديد الجرعة الأمثل. 

  • تطوير الأدوية (Drug Development)
تستهدف أساليب علم الصيدلة الجيني لتطوير الأدوية علاج المشكلة الأساسية بدلاً من مجرد السيطرة على الأعراض. تحدث بعض الأمراض بسبب تغيرات محددة (طفرات) في الجين. يمكن أن يكون لنفس الجين طفرات متنوعة والتي تؤدي الى عواقب مختلفة. قد تؤدي بعض الطفرات إلى بروتين لا يعمل بشكل صحيح، بينما قد يعني البعض الآخر أن البروتين ليس مصنوعًا على الإطلاق. يمكن إنشاء الأدوية بناءً على كيفية تأثير الطفرة على البروتين، وهذه الأدوية ستعمل فقط لنوع معين من الطفرات.

سنأخذ مرض التليف الكيسي (Cystic Fibrosis) و Ivacaftor كمثال. يصاب الأشخاص بهذا المرض نتيجة لطفرات في جين CFTR مما يؤثر على عمل البروتين CFTR. هذا البروتين بالحالة الطبيعية يكون قناة على غشاء الخلوي يسمح بإدخال وإخراج مواد محددة. بعض الطفرات التي تسبب التليف الكيسي تؤدي إلى قناة مغلقة. Ivacaftor يعمل على إبقاء القناة مفتوحة.

شرح اكثر في هذا المقطع:




المصدر الأساسي (ترجمة بتصرف)

Pharmacogenomics: What does it mean for your health? | CDC. https://www.cdc.gov/genomics/disease/pharma.htm. Accessed September 14, 2020.

مصادر اخرى

ستاتين - ويكيبيديا. https://ar.wikipedia.org/wiki/ستاتين. Accessed September 14, 2020.

استقلابُ الدَّواء - الأدوية - دليل MSD الإرشادي إصدار المُستخدِم.

.SLCO1B1 gene - Genetics Home Reference - NIH. https://ghr.nlm.nih.gov/gene/SLCO1B1 

.Quest Diagnostics : Pharmacogenomics. https://www.questdiagnostics.com/home/physician

الأربعاء، 4 ديسمبر 2019

كيف ستؤثر الحوسبة الكمومية (Quantum Computing) على مجال الرعاية الصحية؟

تفتح الحوسبة الكمومية آفاقا جديدة تماما للرعاية الصحية شاملة تصميم أسرع للأدوية، محاكاة حاسوبية للمرضى "المرضى الافتراضيين"، تحليل الجينوم البشري في لحظات، الاعتماد الكلي على الخدمات السحابية في المستشفيات، تحقيق مفهوم الصحة التنبؤية، وحماية أفضل لبيانات المرضى.

ماهي الحوسبة الكمومية ببساطة؟

علم فيزياء الكم يصف سلوك الذرات والجزيئات الأساسية، مثل الإلكترونات والفوتونات. يعمل الحاسوب الكمومي من خلال السيطرة على سلوك هذه الجزيئات، والذي يختلف كثيرا عن الطريقة التي تعمل بها أجهزة الحاسوب التقليدية لدينا. الحاسوب الكمومي يجري حساباته بالاعتماد على البت الكمومي (qubit) بدلا من البت التقليدي. الفرق هنا ان البت الكمومي يشمل الواحد والصفر (كم في البت التقليدي) بالإضافة الى القيم بينهم مما يسمى فيزيائيا التراكب (superposition). هذا يعني أن للبت الكمومي هوية سائله تدل على نسب مئوية معينة واحتمالات بين نقطتي نهاية.

Image result for qubits

لا يمكن أن يتم حصر تفسير الظواهر الطبيعية  بالطرق الحاسوبية التقليدية (الآحاد والأصفار). في هذه الحالة، الحوسبة الكمومية يمكن أن تفتح طرقا أفضل لمحاكاة الطبيعة لاستخدامها نظريات الكم الميكانيكية الأقرب نظريا لهذه الظواهر. كما أن اختراع الكهرباء غير مجرى حياتنا بالكامل، فإن الحوسبة الكمومية لها القدرة على إحداث تغيير مشابه خصوصا في مجال الرعاية الصحية. والآن الى بعض الامثلة.

تصميم وإنتاج العلاجات بشكل سريع للغاية 

تطوير المستحضرات الصيدلانية من خلال التجارب السريرية الطويلة والمكلفة هو بالتأكيد سيصبح شيئا من الماضي. لذلك، بدأت شركات الأدوية بالبحث عن طرق بديلة، مثل استخدام الذكاء الاصطناعي، والرقائق الإلكترونية البيولوجية، لتسريع العملية وجعلها أقل تكلفة. علي سبيل المثال، شركة Atomwise تستخدم الحواسيب الفائقة وتقنيات تعلم الآلة لاستنباط علاجات محتملة من قواعد بيانات التراكيب البروتينية والجزيئية المختلفة. في عام 2015، وجدت الشركة علاجين محتملين لفيروس الإيبولا في بحث استغرق أقل من يوم واحد مقارنة مع الطرق الاعتيادية التي تستغرق شهورا وحتى سنوات. 

الحواسيب الكمومية ستمكن من القيام بعمليات أكثر تعقيدا تشمل الكشف جميع الجزيئات المحتملة مع سرعة لا يمكن تصورها و ستزيد من فعالية الطرق القائمة على البحث على المركبات لتشمل المعلومات الدقيقة للجزيئات التي لا يمكن تحليلها بالسرعة المطلوبة باستخدام الحواسيب التقليدية.

Image result for drug discovery Atomwise

تصميم الأجسام البشرية الافتراضية (البرمجية)

مع القدرات الخارقة لهذه الحواسيب، سنتمكن من القيام بالتجارب السريرية الافتراضية (In Silico Clinical Trials). في هذا النوع من الاختبارات لا نحتاج الى أجساد بشرية حقيقية، أو حتى خلايا بشرية معملية، لاختبار علاج محدد أو لفهم مرض ما. كل ما نحتاجه هو نظرية لكي يتم تطبيقها على الأجسام الافتراضية باستخدام المحاكاة الحاسوبية (simulated clinical trials). ولن يقتصر الأمر على تقصير الوقت اللازم للقيام بالأبحاث فحسب، بل أيضا على نوعيتها واكتمالها. 

هذا النوع من التجارب غير ممكن حاليا نظرا لقصور الحواسيب التقليدية. الحوسبة الكمومية يمكن ان تمكنا من بناء ما يسمى بالإنسان الافتراضي (virtual humans) والمحاكاة الكاملة لهذه الأجسام. كمثال، نموذج HumMod الذي يحتوي على 1500 معادلة و6500 متغير لوصف الوظائف العضوية في الإنسان كديناميكية سوائل الجسم، الدورة الدموية، الهرمونات، ودرجة حرارة الجلد...الخ.

Image result for in silico clinical trials

تسريع عمليات التحليل الجينومي

شهد العقدين الماضيين تطورات جذرية في علم الوراثة وعلم الجينوم. أحد نتائج هذا التطور هو إنتاج ملفات ضخمة جدا للجينوم البشري وتفاعلاته التي من شبه المستحيل أن يتم تحليلها بشكل كامل بالحواسيب الحالية.

الحوسبة الكمومية ستساعد بشكل كبير في هذا المجال عن طريق تمكين تحليل حاسوبي أشمل وأسرع للبيانات الجينومية الحالية. بالإضافة إلى ذلك، ستكون التنبؤات أكثر موثوقية حيث أن أجهزة الكمبيوتر الكمومية يمكن أن تأخذ في الاعتبار معلومات أكثر من الأجهزة التقليدية مما يضمن معلومات أدق وصحة أفضل للجميع.




تحسين جودة الحياة للمجتمعات البشرية

في المستقبل القريب، سنكون قادرين على قياس ومتابعة عدد كبير البيانات الصحية وتخزين أحجام هائلة منها. يمكن لأجهزة الاستشعار الصحية، والقابلة للارتداء، والأدوات الطبية الصغيرة إرسال 4.4 زيتابايت (44,000,000,000,000 غيغابايت) من البيانات عن المرضى الى السحب الإلكترونية ابتداء من عام 2020 والحجم سيصبح في ازدياد. المشكلة ان القدرات الحاسوبية الحالية غير قادرة على استيعاب وتحليل هذا الكم من المعلومات.

ستكون الحواسيب الكمومية قادرة على تحليل وربط هذا الكم الهائل من البيانات، واستنباط معلومات مفيدة بناء عليها عن صحة المجتمع ككل. مراقبة المرضى من خلال الأنظمة الحسية المتصلة قد تجعل فكرة الحضور الى المركز الصحي للكشف العام شيئا من الماضي. أيضا، سترفع هذه التكنولوجيا الرائدة التنبؤ بنمط الحياة إلى مستوى جديد كليا محولة الطب الوقائي الى طب تنبؤي مستقبلا. كمثال، هناك تطبيق لتخصص طب العيون يظهر تطور حالة المياه البيضاء مع الحفاظ أو تغيير الأنماط الحالية لديهم في مدة ما.

استخدام الحوسبة الكمومية، التي تغذيها كميات ضخمة من المؤشرات الصحية ، والمعلومات الوراثية ، والبيانات الحسية ، وغيرها من المعلومات الصحية الشخصية ، قد تكون قادرة على إعطاء التنبؤ الشامل حول صحة الشخص المعين في المستقبل. هذا ما يمكن أن نسميه حقا الصحة التنبؤية.


الوصول إلى نظم دعم قرارات مثالية في المجال الصحي

في الوقت الحالي، من المستحيل للممارس الصحي أن يتمكن من الإلمام والاطلاع على الدراسات الجديدة في مجاله. مثلا على Pubmed، هناك أكثر من 31,000,000 ورقه علمية. في هذه الحالة، الممارس الصحي يحتاج عشرات السنين إذا قرر قراءة ورقة علمية واحدة في مجاله كل يوم، وفي الوقت نفسه العديد من الدراسات الجديدة سوف يخرج. لحل مثل هذه المشكلة، أنشأت IBM جهاز واتسون للتدقيق من خلال الملايين من الدراسات في الثانية. لكن تظل قدراته محدودة ولعدد قليل من المستفيدين.

سوف الحوسبة الكمومية تأخذ نظم دعم القرارات إلى مستوى جديد كليا. حيث ستمكن من تحليل جميع الدراسات الموجودة لسؤال أو مرض معين في سرعة لحظية، ولن يقتصر أداؤها على إيجاد الدراسات المرتبطة بالسؤال بحسب، بل بتوظيف خوارزميات متطورة لاستنباط القرارات المناسبة للمريض. أيضا نظرا لسرعتها الفائقة وإتمامها المهام في وقت قياسي، سيكون هناك فرصة أكبر للجميع من الاستفادة من هذه التقنيات.

Image result for decision support systems healthcare

الحوسبة الكمومية لديها نظريا إمكانيات مذهلة. مع ذلك، لا يزال علينا الانتظار طويلا حتى يتم الاستفادة من هذه القدرات .

المصادر:

الاثنين، 28 أكتوبر 2019

التنبؤ بأسعار الأسهم باستخدام احدى تقنيات التعلم العميق (باستخدام البايثون)

في هذا الدرس، أحببت أن أشارككم نموذج تعلم عميق للتنبؤ بأسعار الأسهم لشركة مدرجة بالسوق. لست ضليعا في مجالي الاقتصاد ولا الذكاء الاصطناعي، لكن احسست إن الموضوع ممتع وأحببت مشاركته معكم.

التقنية المستخدمة تحديدا تسمى Long short-term memory التي تندرج تحت Recurrent neural network. هذه التقنية فعالة للغاية لحل مشاكل البيانات التسلسلية في خط ثابت.مثلا، تحويل المعلومات في ملف صوتي إلى جمل (Speech-to-Text).

Related image

تم استخدام هذة التقنية،بالدمج مع تقنيات اخرى، لبناء نموذج للتنبؤ بأعتلالات القلب عن طريق تحليل مُخَطَّطُ كَهْرَبِيَّةِ القَلب Electrocardiogram. هذه إحدى الأوراق العلمية التي تتناول الموضوع.

Image result for ecg lstm

على حسب علمي، التنبؤ بأداء سوق الأسهم يعتبر من أصعب الأمور بسبب جوانب كثيرة. هذا مقال في كيورا يناقش الموضوع بإسهاب. التحليل الذي سنقوم فيه يعتبر جزء من التحليل التقني للأسهم وهو جزء من التحليل الكلي لأداء الشركات.

سنقوم في البداية سنقوم أولا بتحميل البيانات وتحديد المتغير المناسب لتصميم النموذج. حمل البيانات من هنا او من صفحتي على الجيت هب.

#import packages - تحميل الحزم
#نحتاج حزمتي باندا ونمباي للتعامل مع البيانات
import pandas as pd 
import numpy as np

#to plot تحميل حزمة التخطيط البياني 
import matplotlib.pyplot as plt
%matplotlib inline

#setting figure size 
from matplotlib.pylab import rcParams
rcParams['figure.figsize'] = 20,10

#read the file
#لقرائة الملف - تأكد ان الملف بنفس المجلد
df = pd.read_csv('NSE-TATAGLOBAL11.csv')

#print the head
#يقوم بطباعة أول عشرة طور بالملف
df.head(10)

Expected Output

Date Open High Low Last Close Total Trade Quantity Turnover (Lacs)
0 2018-10-08 208.00 222.25 206.85 216.00 215.15 4642146.0 10062.83
1 2018-10-05 217.00 218.60 205.90 210.25 209.20 3519515.0 7407.06
2 2018-10-04 223.50 227.80 216.15 217.25 218.20 1728786.0 3815.79
3 2018-10-03 230.00 237.50 225.75 226.45 227.60 1708590.0 3960.27
4 2018-10-01 234.55 234.60 221.05 230.30 230.90 1534749.0 3486.05
5 2018-09-28 234.05 235.95 230.20 233.50 233.75 3069914.0 7162.35
6 2018-09-27 234.55 236.80 231.10 233.80 233.25 5082859.0 11859.95
7 2018-09-26 240.00 240.00 232.50 235.00 234.25 2240909.0 5248.60
8 2018-09-25 233.30 236.75 232.00 236.25 236.10 2349368.0 5503.90
9 2018-09-24 233.55 239.20 230.75 234.00 233.30 3423509.0 7999.55

الخطوة التالية تشمل الفحص بالتخطيط البياني لعلاقة الوقت مع سعر إغلاق السهم (Close). في البداية سنقوم بتحويل بيانات التاريخ إلى الصيغة البرمجية المطلوبة (أو نوع البيانات المطلوب) باستخدام حزمة باندا ومن ثم تحويل التاريخ الجديد إلى دليل للبيانات.

#setting index as date
df['Date'] = pd.to_datetime(df.Date,format='%Y-%m-%d') # تحويل التاريخ إلى الصيغة المطلوبة 
df.index = df['Date'] # تحويل التاريخ إلى دليل #plot التخطيط plt.figure(figsize=(16,8)) plt.plot(df['Close'], label='Close Price history') # تختار سعر الاغلاق للتخطيط

Expected Output




سوف نحمل الآن بعض وظائف حزمتي sklearn و keras التي تستخدم غالبا في تطبيقات تعلم الآلة. أيضا  سنقوم بعمل إطار بيانات جديد مناسب لعمل النموذج.

#importing required libraries
# MinMaxScaler لتوحيد البيانات
# Dense, Dropout, LSTM تصميم النموذج
from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import Dense, Dropout, LSTM

#creating dataframe
# عمل اطار بيانات جديد
data = df.sort_index(ascending=True, axis=0) # ترتيب البيانات القديمة بناء على التاريخ
new_data = pd.DataFrame(index=range(0,len(df)),columns=['Date', 'Close']) #اطار جديد
# حلقة تكرار لتخزين البيانات في الإطار الجديد
for i in range(0,len(data)):
    new_data['Date'][i] = data['Date'][i]
    new_data['Close'][i] = data['Close'][i]

#setting index
new_data.index = new_data.Date  # تحويل التاريخ إلى دليل
new_data.drop('Date', axis=1, inplace=True) # للتخلص من المتغير لعدم الحاجة إليه
new_data.head(10)

الان سوف نجهز البيانات للنموذج. في البداية يتم تقسيم البيانات إلى قسمين:70% من البيانات تستخدم لتدريب النموذج والبقية تستخدم للتحقق من فعالية النموذج. بيانات التدريب سيتم تقسيمها ايضا الى قسمين.

#creating train and test sets
dataset = new_data.values #  نأخذ القيم فقط بدون التواريخ

train = dataset[0:987,:] # تدريب
valid = dataset[987:,:] # تحقق فيما بعد

#converting dataset into x_train and y_train تقسيم بيانات التدريب فقط 
scaler = MinMaxScaler(feature_range=(0, 1)) # توحيد البيانات
scaled_data = scaler.fit_transform(dataset)  

x_train, y_train = [], []
for i in range(60,len(train)):
    x_train.append(scaled_data[i-60:i,0])
    y_train.append(scaled_data[i,0])
x_train, y_train = np.array(x_train), np.array(y_train)

x_train = np.reshape(x_train, (x_train.shape[0],x_train.shape[1],1))

والان سوف  نبني وندرب النموذج. نبدأ بأمر Sequential ومن بعده تبدأ تصميم الطبقات بالترتيب. هذا مصدر ممتاز لفهم العملية. لل optimization بنستخدم ال MSE ك loss function و ADAM كخوارزمية. هنا معلومات مفيدة عن الفرق بين batch و epoch. بعد تدريب النموذج، يمكننا تقييم أدائه و دقته باستخدام بيانات (valid) بناء على 60 نقطة تسبقها من النموذج.

# create and fit the LSTM network # بناء النموذج
model = Sequential() # تبدأ بهذا الامر ومن بعده تضع الطبقات
model.add(LSTM(units=50, return_sequences=True, input_shape=(x_train.shape[1],1)))
model.add(LSTM(units=50))
model.add(Dense(1))

model.compile(loss='mean_squared_error', optimizer='adam') #  البحث عن الحل الأمثل
model.fit(x_train, y_train, epochs=1, batch_size=1, verbose=2) # تدريب النموذج

#predicting 246 values, using past 60 from the train data #توقع valid 
inputs = new_data[len(new_data) - len(valid) - 60:].values
inputs = inputs.reshape(-1,1)
inputs  = scaler.transform(inputs)

X_test = []
for i in range(60,inputs.shape[0]):
    X_test.append(inputs[i-60:i,0])
X_test = np.array(X_test)

X_test = np.reshape(X_test, (X_test.shape[0],X_test.shape[1],1))
closing_price = model.predict(X_test) # التوقع
closing_price = scaler.inverse_transform(closing_price) # إعادة البيانات إلى الصيغة الاصلية

الان سنقوم بتخطيط البيانات الأساسية والفعلية والبيانات التي تم توقعها بأستخدام النموذج. اللون الأزرق يمثل البيانات المستخدمة في صناعة النموذج ، البرتقالي يمثل البيانات الفعلية الي حاولنا توقعها بأستخدام النموذج، واللون الأخضر يمثل البيانات المتوقعة من النموذج اللون البرتقالي.  

#for plotting
train = new_data[:987]
valid = new_data[987:]
valid['Predictions'] = closing_price
plt.plot(train['Close'])
plt.plot(valid[['Close','Predictions']])