[PYTHON] J'ai essayé d'intégrer un réseau d'interaction protéine-protéine dans un espace à deux voies avec Poincarē embarquant de gensim

introduction

En utilisant l'inclusion Poincarē de Genism, j'ai essayé d'intégrer un réseau d'interaction protéine-protéine dans des boules de Poancare.

  1. Espace twin L'espace jumeau est l'un des espaces non euclidiens, qui est un espace courbe avec une courbure négative. Il a la propriété que l'espace se dilate vers la périphérie, et est dit approprié pour incorporer des réseaux avec une structure hiérarchique.

  2. Bal de Poancare Le bal Poancare est l'un des modèles de l'espace musical jumeau. La distance entre deux points sur le ballon Poancare$d(u,v) = \mathrm{arccosh}\left(1+2\frac{||u-v||^{2}}{(1-||u||^{2})(1-||v||^{2})}\right).$ Il est exprimé comme. Nous définissons la fonction de perte en fonction de la distance sur la boule de Poancare comme suit: $\Theta'\leftarrow \mathrm{arg min}\mathcal{L}(\Theta)\;\;\;\mathrm{s.t.}\forall\theta_{i}\in\Theta:||\theta_{i}||<1.$ Poincarē intégrant les coordonnées de sorte que cette fonction de perte soit minimisée.

Réseau de liaisons interprotéines

  1. Prote-protein interaction network
    Diverses protéines fonctionnent dans le corps, mais beaucoup d'entre elles fonctionnent en se liant les unes aux autres plutôt que seules. Le réseau d'interaction protéine-protéine est un réseau construit en connectant des protéines qui se lient les unes aux autres.
  2. Caractéristiques du réseau d'interaction protéine-protéine Les protéines se lient les unes aux autres, mais le nombre de partenaires de liaison n'est pas uniforme. La plupart des protéines se lient uniquement à des protéines spécifiques. Très peu de protéines se lient à plusieurs. En conséquence, le réseau de liaison interprotéine a une structure dans laquelle un petit nombre de protéines sert de plaque tournante pour le réseau et connecte la majorité des protéines terminales. Les éléments du réseau sont appelés nœuds, les branches reliant les nœuds sont appelées arêtes et le nombre d'arêtes pour chaque nœud est appelé degré. Dans le réseau des liaisons interprotéines, le degré est inégalement réparti. Les réseaux dont la distribution des degrés suit la règle de puissance sont appelés réseaux sans échelle ou petits réseaux mondiaux. Les réseaux sans échelle sont souvent observés dans les réseaux naturels. Le réseau de liaisons interprotéines est également connu pour être sans tartre.
  3. Ensemble de données Obtenez des informations sur la liaison interprotein à partir de la base de données. Cette fois, j'ai utilisé l'ensemble de données sur les interactions protéine-protéine NURSA. Téléchargez la Gene attribute Edge List dans ce fichier. Ce fichier répertorie les paires de protéines qui se lient. À partir de ces informations, nous allons construire un réseau de protéines de liaison et l'intégrer dans des boules de Poancare.

literie gensim Poin carē em

L'incorporation de Poincarē est implémentée dans le génisme de la bibliothèque de traitement du langage naturel de python, alors utilisez-la. Si vous donnez une liste de paires de mots, elle intégrera un réseau de mots dans Poancareball.

# import de bibliothèque
import pandas as pd
import numpy as np
from gensim.models.poincare import PoincareModel
from genism.viz.poincare import poincare_2d_visualization
from plotly.offline import iplot
# Charger le jeu de données
# Téléchargez et décompressez gene_attribute_edges.txt.gz.
# Les paires de protéines qui se lient aux sections source et cible sont répertoriées.
dataset = pd.read_csv('gene_attribute_edges.txt', delimiter = '\t', usecols = [0,3], skiprows = [1])
# Créer une liste de paires de protéines liées
relations = []
for i in range(len(dataset)):
    relations.append((dataset.source[i], dataset.target[i]))
# Appliquer le modèle Poancare à la paire de protéines
# Nous le visualiserons en deux dimensions plus tard, définissez donc size = 2.
model = PoincareModel(relations, size = 2)
model.train(epochs = 1000)
# Visualisation
# Si toutes les liaisons entre protéines sont reliées par des lignes, il sera trop compliqué de comprendre la figure, donc le nombre de lignes est limité à 5 avec num_nodes.
map = poincare_2d_visualization(model = model, tree = relations, figure_title = 'PPI network', num_nodes = 5)
iplot(map)

PPI_10epochs.png PPI_100epochs.png PPI_1000epochs.png

Chaque point représente une protéine et les protéines de liaison sont reliées par une ligne. Au fur et à mesure que la valeur des époques augmente progressivement, l'apprentissage progresse et à mesure que la fonction de perte diminue, la protéine avec moins de liaison est placée à la périphérie et la protéine qui sert de centre est située au centre, ce qui donne une structure hiérarchique.

Conclusion

J'ai utilisé l'incorporation de Poincar gens de gensim pour intégrer un réseau de liaisons interprotéines dans des boules Poancare. Il a été constaté qu'au fur et à mesure que l'apprentissage progresse, les protéines avec moins de liaison sont placées dans la partie périphérique, tandis que les protéines qui servent de hubs restent dans la partie centrale et une structure hiérarchique est acquise. L'intégration de Poincarē semble être un bon moyen d'intégrer un réseau sans échelle.

référence

Maximillian Nickel and Douwe Kiela, “Poincaré Embeddings for Learning Hierarchical Representations” genism Nuclear Receptor Signaling Atlas Malovannaya, A et al., "Analysis of the human endogenous coregulator complexome"

Recommended Posts

J'ai essayé d'intégrer un réseau d'interaction protéine-protéine dans un espace à deux voies avec Poincarē embarquant de gensim
J'ai écrit un doctest dans "J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python"
J'ai essayé de créer une liste de nombres premiers avec python
J'ai essayé de créer un mécanisme de contrôle exclusif avec Go
J'ai essayé d'afficher la valeur d'altitude du DTM dans un graphique
J'ai essayé d'implémenter le jeu de cartes de Trump en Python
J'ai essayé d'intégrer Keras dans TFv1.1
J'ai fait une application d'envoi de courrier simple avec tkinter de Python
[Azure] J'ai essayé de créer une machine virtuelle Linux avec Azure de Microsoft Learn
J'ai essayé de créer un modèle avec l'exemple d'Amazon SageMaker Autopilot
[Python & SQLite] J'ai analysé la valeur attendue d'une course avec des chevaux dans la fourchette 1x win ①
Je voulais connaître le nombre de lignes dans plusieurs fichiers et j'ai essayé de l'obtenir avec une commande
Introduction à la création d'IA avec Python! Partie 2 J'ai essayé de prédire le prix de l'immobilier dans la ville de Boston avec un réseau neuronal
Je souhaite intégrer une variable dans une chaîne Python
J'ai essayé de faire quelque chose comme un chatbot avec le modèle Seq2Seq de TensorFlow
J'ai essayé de créer un environnement avec WSL + Ubuntu + VS Code dans un environnement Windows
J'ai essayé d'extraire des fonctionnalités avec SIFT d'OpenCV
Je veux faire la transition avec un bouton sur le ballon
J'ai essayé d'implémenter un pseudo pachislot en Python
Je veux travailler avec un robot en python.
[Python] J'ai essayé de créer automatiquement un rapport quotidien de YWT avec la messagerie Outlook
J'ai essayé de faire de l'art créatif avec l'IA! J'ai programmé une nouveauté! (Article: Réseau Adversaire Créatif)
J'ai essayé de créer une classe pour rechercher des fichiers avec la méthode Glob de Python dans VBA
J'ai aussi essayé d'imiter la fonction monade et la monade d'état avec le générateur en Python
J'ai essayé un réseau de neurones convolutifs (CNN) avec un tutoriel TensorFlow sur Cloud9-Classification des images manuscrites-
[Dessin graphique] J'ai essayé d'écrire un graphique à barres multi-séries avec matplotlib et seaborn
J'ai essayé d'implémenter une ligne moyenne mobile de volume avec Quantx
J'ai essayé de trouver l'entropie de l'image avec python
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
J'ai essayé d'implémenter un automate cellulaire unidimensionnel en Python
J'ai essayé de créer automatiquement un rapport avec la chaîne de Markov
J'ai essayé de résoudre le problème d'optimisation des combinaisons avec Qiskit
J'ai essayé "Comment obtenir une méthode décorée en Python"
J'ai essayé de commencer avec Hy ・ Définir une classe
J'ai essayé d'implémenter ListNet d'apprentissage de rang avec Chainer
J'ai essayé de trier une colonne FizzBuzz aléatoire avec un tri à bulles.
J'ai fait un chronomètre en utilisant tkinter avec python
J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python
J'ai essayé d'implémenter le blackjack du jeu Trump en Python
J'ai essayé d'écrire dans un modèle de langage profondément appris
J'ai essayé de créer un article dans Wiki.js avec SQL Alchemy
J'ai essayé de déverrouiller l'entrée 2 lock sésame d'une simple pression sur le bouton AWS IoT
J'ai essayé de prédire le nombre de personnes infectées au niveau national de la nouvelle corona avec un modèle mathématique
Une histoire qui n'a pas fonctionné lorsque j'ai essayé de me connecter avec le module de requêtes Python
[5e] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé d'obtenir une base de données sur les courses de chevaux en utilisant Pandas
J'ai essayé d'automatiser l'arrosage du pot avec Raspberry Pi
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python
Un mémorandum lors de l'acquisition automatique avec du sélénium
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de traiter l'image en "style croquis" avec OpenCV