تصور الفضاء المركب عن طريق تقليل أبعاد بصمة الإصبع

2019 10 年 月 日 26

دعنا نتخيل الفضاء المركب (الفضاء الكيميائي) بناءً على التركيب الكيميائي باستخدام مجموعة البيانات المركبة المفتوحة للجمهور.

التحفيز

تصور الفضاء المركب
-هل هناك أي مركبات فريدة في مجموعة البيانات؟
・ ما هو نوع المركب الموجود وكميته
سوف يساعدك على الفهم. عند إنشاء نماذج تنبؤية لـ QSAR والتعلم الآلي ، يمكنك تحديد ما إذا كانت بياناتك تحتوي على استقراء أم لا.

方法

حساب بصمات الأصابع

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

بالنسبة إلى بصمة الإصبع المستخدمة في التصور ، جرب بصمة Morgan وبصمة RDkit.

المرجع: بصمة الإصبع متوفرة في RDkit

طريقة تقليل الأبعاد

لتقليل الأبعاد ، حاول استخدام تحليل المكونات الرئيسية (PCA) و UMAP. يتم استخدام PCA بشكل شائع ، ولكنه ينضغط في مساحة ذات أبعاد أقل بناءً على خطية البيانات ، لذلك قد لا يكون مناسبًا لبيانات 0-1 مثل بصمات الأصابع.
من ناحية أخرى ، تعد UMAP إحدى طرق تقليل الأبعاد التي تأخذ في الاعتبار المكونات غير الخطية.يمكن إتمام تقليل الأبعاد مثل t-SNE القياسي لنفس الطريقة أسرع عدة مرات ، لذلك يمكن استخدامه لمجموعات البيانات الكبيرة.

استخدم طريقة kmeans والتكتل الطيفي للتجميع.
مجموعات طريقة kmeans عن طريق تكرار سلسلة من العمليات: (XNUMX) تثبيت العناقيد بشكل عشوائي ، (XNUMX) إضافة نقاط البيانات القريبة لتحديث موقع مركز الثقل ، و (XNUMX) إيجاد مركز الثقل مرة أخرى مع البيانات المحدثة بالقرب من مركز الثقل. من المعروف أن البيانات غير الخطية مثل Moon و Swiss roll لا يمكن تصنيفها جيدًا ، ولكن يبدو أن Spectral Clustering قادرة على التعامل مع مثل هذه البيانات. حتى ورقة الغش scikit Learn تعد خيارًا إذا لم تنجح طريقة kmeans.

أود دمج كل منها مع "طريقة PCA x kmeans" التي تفترض التوزيع الطبيعي والبيانات الخطية و "UMAP x Spectral Clustering" التي تدعم البيانات غير الخطية.

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

المرجع: تقليل الأبعاد وتقنيات التخطيط ثنائي الأبعاد للبيانات عالية الأبعاد
   التجميع الطيفي (التحليل العنقودي)

دعونا نتخيل الفضاء المركب

استخدم محبة الدهون لشبكة الجزيء لمجموعة البيانات.يحتوي ما يقرب من 4200 مركب على SMILES الخاصة بهم وسجل P التجريبي (مؤشر الكراهية للماء: معامل تقسيم الأوكتانول / الماء).

انظر أيضا:قائمة مجموعات البيانات المركبة

# استيراد حزمة استيراد الباندا مثل استيراد pd numpy مثل np من sklearn.cluster استيراد KMeans من sklearn.decomposition استيراد PCA من sklearn.cluster استيراد SpectralClustering umap من rdkit import Chem من rdkit.Chem استيراد AllChem استيراد matplotlib.pyplot كـ plt٪ matplotlib inline # قراءة مجموعة البيانات df = pd.read_csv ('Lipophilicity.csv') print (df.info ()) df.head (5)


RangeIndex: 4200 إدخال ، من 0 إلى 4199
أعمدة البيانات (إجمالي 3 أعمدة):
CMPD_CHEMBLID 4200 كائن غير فارغ
exp 4200 عوامة غير خالية 64
يبتسم 4200 كائن غير فارغ
dtypes: float64 (1) ، استخدام ذاكرة الكائن (2): 98.5+ كيلوبايت لا شيء

مجموعة بيانات logP

 

#Morgan و RDkit الحصول على Fingerprint mols = [Chem.MolFromSmiles (x) for x in df.smiles] morgan_fps = [AllChem.GetMorganFingerprintAsBitVect (x، 2، 1024) for x in mols] rdkit_fps = [Chem.RDKFingerprint (x = 1024) لـ x في mols] # تخزين بصمة الإصبع في DF df_morgan_fps = pd.DataFrame (np.array (morgan_fps)) df_rdkit_fps = pd.DataFrame (np.array (rdkit_fps))

تحسب بصمة مورغان البنى التحتية ضمن نصف قطر محدد من الذرة. خوارزمية مشابهة لبصمة ECFP (بصمة الاتصال الممتد) ، حيث يتوافق نصف قطر Morgan 2 مع ECFP4.هنا ، نحسب بصمة نصف القطر = 2،1024 بت.
تحسب بصمة RDkit الهياكل الجزئية بناءً على طول الرابطة بدلاً من نصف قطر الذرة.هذا مشابه لبصمة ضوء النهار.بشكل افتراضي ، الحد الأدنى لطول المسار: وصلة واحدة - أقصى طول للمسار: 1 وصلات تؤخذ في الاعتبار.

البصمة التي تم الحصول عليها هينظرًا لأنه لا يمكن إجراء المعالجة اللاحقة كما هو الحال مع كائن مثل ، قم بتصحيحه في إطار بيانات.
 

# kmeans clustering kmeans = KMeans (n_clusters = 8، n_jobs = -1) kmeans.fit (df_morgan_fps) # تقليل الأبعاد باستخدام PCA pca = PCA (n_components = 2) decomp = pca.fit_transform (df_morgan_fps) x = decomp [:، 0 ] y = decomp [:، 1] #Visualization plt.figure (figsize = (15,5،1,2,1)) # مجموعات مشفرة بالألوان تم الحصول عليها عن طريق kmeans plt.subplot (0.7،1,2,2،0.7) plt.scatter (x، y)، c = kmeans.labels_، alpha = XNUMX) plt.title ("PCA: morgan_fps، الكتلة") plt.colorbar () # لون مشفر باستخدام logP plt.subplot (XNUMX،XNUMX،XNUMX) plt.scatter (x ، y ، c = df.exp، alpha = XNUMX، cmap = 'spring') plt.title ("PCA: morgan_fps، logP") plt.colorbar ()

نتيجة تصور المساحة المركبة باستخدام بصمة RDkit.

وبالمثل ، قم بتغيير جزء df_morgan_fps إلى df_rdkit_fps وتصوره باستخدام بصمة RDkit.بطريقة ما الانطباع بأن بصمة RDkit يتم عرضها بشكل أكثر جمالًا ↓

# RDkit بصمات الأصابع مع تصور "UMAP x Spectral Clustering" sc = Spectral Clustering (n_clusters = 50 ، التقارب = 'الأقرب_الجيران' ، n_jobs = -1) تضمين sc.fit (df_rdkit_fps) = umap.UMAP (n_neighbours = 50، n_components = 2 min_dist = 0.5) .fit_transform (df_rdkit_fps) x = التضمين [:، 0] y = التضمين [:، 1] fig = plt.figure (figsize = (15,5،1,2,1)) plt.subplot (0.7،1,2,2،0.7)) مبعثر plt. (x، y، c = sc.labels_، alpha = XNUMX) plt.title ("rdkit_fps، SpectralCluster") plt.colorbar () plt.subplot (XNUMX،XNUMX،XNUMX) plt.scatter (x، y ، c = df.exp، alpha = XNUMX، cmap = 'spring') plt.title ("rdkit_fps، logP") plt.colorbar ()

أشعر أن "UMAP x Spectral Clustering" مليء بشكل أكثر كثافة بمركبات مماثلة من "PCA x kmeans" ، ولكن كلاهما جيد.

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