[PYTHON] Utilisez des applications notebook pour développer des visualisations personnalisées 2

introduction

スクリーンショット 2015-12-25 4.28.18.png

(Cependant, le serveur Beamer est requis pour l'exécution réelle, reportez-vous donc à la procédure ci-dessous.)

Dans Partie 1, un exemple concret de création d'un widget JS personnalisé intégré avec Jupyter et Beaker Notebook Je vous ai présenté. Cette fois, je voudrais jeter un oeil à la procédure pour utiliser réellement Beamer.

Préparer l'environnement

Dans la plupart des cas, "plain Python / R / JS" est rarement la voie à suivre. Par exemple, lors de la préparation des données, vous voudrez souvent utiliser pandas, et vous voudrez souvent dessiner avec matplotlib. __ Les applications de type bloc-notes permettent de conserver le processus de travail, mais il n'est pas possible d'enregistrer l'environnement dans lequel le travail a été effectué __.

Environnement de visualisation portable utilisant Docker

C'est donc une technologie de conteneur telle que Docker qui peut encore améliorer la reproductibilité en l'utilisant en combinaison avec une application de type notebook. Comme mentionné ci-dessus, le problème avec le travail de visualisation / analyse en utilisation multilingue est qu'il est difficile de garder une trace du type d'environnement dans lequel le travail a été effectué. Bien sûr, il existe une main appelée image de machine virtuelle, mais ce genre de chose peut être enregistré sous la forme d'un environnement de conteneur pour un ordinateur portable, et il est possible de créer facilement un nouvel environnement de travail en les héritant. La compatibilité entre le travail et Docker est bonne pour la situation.

Le projet Beaker Notebook utilise également les langages pris en charge tels que Python, Node.js, R et Julia immédiatement l'image Docker est disponible .. Cette fois, nous allons travailler sur l'extension de cette image. Étant donné que ce thème n'apprend pas Docker, j'omettrai les détails sur Docker, mais après la sortie de Docker Toolbox, même ceux qui n'ont presque aucune connaissance préalable Il est devenu assez facile à utiliser, alors essayez-le.

Ajoutez ce dont vous avez besoin à l'image

L'image sur la page officielle est fournie avec un ensemble de langages de programmation à l'avance, mais ajoutons un package supplémentaire ici. En gros, il suffit d'appeler la commande requise pour l'installation avec `` RUN```.

Dockerfile à utiliser cette fois

FROM beakernotebook/beaker
# Add Extra library for data analysis

# R Libraries
RUN Rscript -e "install.packages('igraph',,'http://cran.us.r-project.org')"

# Python 3 libraries
RUN /home/beaker/py3k/bin/pip install requests networkx py2cytoscape

# Add a new directory for user's notebooks
RUN mkdir /home/beaker/notebooks

Dans cet exemple, igraph, qui est souvent utilisé pour l'analyse de graphes en langage R, NetworkX, qui est également utilisé en Python, et J'ai installé py2cytoscape, qui comprend un utilitaire de conversion de données vers Cytoscape.js.

Cahier Run Beaker

Beaker, comme Jupyter, gère les blocs-notes sous forme de fichiers au format JSON. Pour cette raison, il est très pratique de placer les fichiers Docker et les blocs-notes sur votre système de fichiers local et d'exécuter le conteneur avec eux montés.

Construire l'image

docker build -t keiono/beaker .

Lancer l'image

docker run -p 8800:8800 -v $PWD:/home/beaker/notebooks -t keiono/beaker

Le serveur de notebook fonctionnera maintenant avec le répertoire actuel monté dans le conteneur.

Après cela, le mot de passe de connexion sera affiché, alors utilisez-le pour accéder via https. Si l'hôte Docker est `` 192.168.99.100 '', vous serez invité à entrer le mot de passe lorsque vous accédez à l'adresse suivante avec un navigateur, alors entrez-le affiché sur le terminal.

https://192.168.99.100:8800

Le Dockerfile utilisé dans cet exemple se trouve également dans here, vous pouvez donc ajouter librement des commandes après avoir utilisé la fourche pour créer l'environnement requis pour votre travail. Veuillez remodeler.

Travailler avec un ordinateur portable

Ouvrir un exemple de cahier

Ouvrez l'exemple de bloc-notes (graph-final.bkr) dans le Référentiel ici.

スクリーンショット 2015-12-25 3.50.04.png

Faites ceci. La méthode d'exécution de la cellule est la même que Jupyter, CTR + Return. Si vous l'exécutez dans l'ordre, vous verrez la dernière cellule ressembler à ceci:

スクリーンショット 2015-12-25 3.53.03.png

Cela signifie que la cellule de visualisation réelle est en cours d'exécution, donc si vous remontez d'une cellule, vous devriez voir quelque chose comme ça.

スクリーンショット 2015-12-25 3.55.34.png

Si vous cliquez sur un nœud dans celui-ci, l'affichage devrait changer pour ne révéler que ceux qui sont directement connectés à ce nœud.

スクリーンショット 2015-12-25 3.59.21.png

Cette cellule interactive a été créée sur un ordinateur portable avec Cytoscape.js intégré. Dans cet exemple, nous avons créé une cellule de rendu réseau personnalisée, mais vous pouvez en fait utiliser n'importe quoi. D3.js est préparé depuis le début, vous pouvez donc commencer à écrire du code dans les cellules JavaScript soudainement.

À partir de maintenant, regardons de plus près le processus réel.

Partage de données: Autotranslation

Dans cet exemple, les données sont échangées entre trois langages, R, Python3 et JavaScript, pour mettre en valeur la fonctionnalité principale de Beamer, Autotranslation. C'est une caractéristique de Beamer, qui permet un échange direct de données entre __ plusieurs langues. __

Dans cet exemple, R est utilisé dans la première cellule pour charger la liste d'arêtes dans le bloc de données.

df1 <- read.table('/home/beaker/notebooks/fbnet.edges', header=FALSE, sep=' ')
colnames(df1) <- c('source', 'target')

# Save it as a shared beaker object
beaker::set('df1', df1)

Vous pouvez trouver une notation inconnue sur la dernière ligne, mais il s'agit de la traduction automatique de Beamer. En bref, en passant des objets et des valeurs de chaque langue à cet objet bécher exposé globalement, il est automatiquement traduit en JSON et des données peuvent être échangées entre chaque cellule.

Si vous souhaitez accéder à ces données à partir de Python, vous pouvez utiliser le DataFrame converti automatiquement de pandas.

R DataFrame → Pandas DataFrame → NetworkX Graph → Cytoscape.js JSON

df2 = beaker.df1 #Cela seul le convertira automatiquement en Pandas DF

df2[["source", "target"]] = df2[["source", "target"]].astype('str')

#Convertir cette trame de données en un objet NetworkX
g2 = nx.from_pandas_dataframe(df2, "source", "target")

# Calculate Betweenness Centrarity of the graph
cent_1 = nx.betweenness_centrality(g2)
deg = nx.degree(g2)

nx.set_node_attributes(g2, 'b-cent', cent_1)
nx.set_node_attributes(g2, 'deg', deg)

# Convert networkX data into Cytoscape.js JSON
net1 = nxutil.from_networkx(g2)

# Save it into Beaker object
beaker.net1 = net1 #Enfin, enregistrez à nouveau le graphique avec la fréquence, etc.

# Save range
beaker.net1_deg_range = (min(deg.values()), max(deg.values()))

Dans la dernière partie, un utilitaire que j'ai créé précédemment transforme un objet NetworkX en une forme qui peut être rendue avec Cytoscape.js. Vous disposez désormais de données pouvant être utilisées pour la visualisation.

Créer un modèle HTML

Une fois que vous avez les données, créez une cellule en HTML pour la dessiner. Cela dit, il devrait généralement s'agir d'un CSS simple et d'un simple qui ne contient que les balises que vous souhaitez dessiner:

<style>
#cyjs {
  width: 100%;
  height: 600px;
  background-color: #000000;
}

h1 {
  color: #555555;
}
</style>

<h1>Anonymized Facebook Network Data from Stanford Network Analysis Project</h1>

<div id="cyjs"></div>

<h3>(Cytoscape.js Demo)</h3>

Créer un composant de visualisation

À ce stade, tout ce que vous avez à faire est de visualiser les données par essais et erreurs. Les détails de Cytoscape.js sortent du cadre de ce sujet, je n'entrerai donc pas trop dans les détails, mais le point est ici:

elements: beaker.net1["elements"]

La version convertie au format Cytoscape.js à l'aide de Python est directement importée via l'objet bécher. Avec cela, même si vous souhaitez inclure de nouvelles données dans la visualisation, vous pouvez retraiter les données dans la cellule Python ou R précédente, revenir à la cellule JS telle quelle et continuer à coder la partie de visualisation à nouveau. Je vais. C'est quelque chose que Jupyter ne peut pas faire pour le moment, et je pense que c'est le plus grand avantage de Beaker.

finalement

En utilisant Docker et Bearker Notebook de cette manière, il est possible d'enregistrer tout, du traitement des données à la visualisation sous une forme qui peut être reproduite dans un bloc-notes tout en utilisant plusieurs langues. Si vous le créez dans un navigateur et un éditeur, vous devez souvent modifier les données dans une autre application, mais avec cela, vous pouvez tout faire avec juste une note.

Il existe encore peu d'exemples d'utilisation, mais si vous souhaitez utiliser plusieurs langues ou si vous souhaitez visualiser avec des composants JS compliqués, veuillez l'utiliser.

Recommended Posts

Utilisez des applications notebook pour développer des visualisations personnalisées 2
Utilisez des applications de type notebook pour développer des visualisations personnalisées (partie 1)
Comment utiliser IPython Notebook
Comment utiliser Jupyter Notebook
Bloc-notes Jupyter facile à utiliser (Python3.5)
Comment utiliser le notebook Jupyter avec ABCI
Jupyter Notebook Principes d'utilisation
Comment utiliser le bloc-notes Jupyter [super basique]
Paramètres de Jupyter Notebook - Comment utiliser (EC2 Amazon Linux 2)
Comment utiliser xml.etree.ElementTree
Comment utiliser Python-shell
Remarques sur l'utilisation de tf.data
Comment utiliser virtualenv
Comment utiliser Seaboan
Comment utiliser la correspondance d'image
Comment utiliser le shogun
Comment utiliser Pandas 2
Comment utiliser Virtualenv
Comment utiliser numpy.vectorize
Flacon facile à utiliser
Comment utiliser partiel
Comment utiliser Bio.Phylo
Comment utiliser SymPy
Comment utiliser WikiExtractor.py
Comment utiliser IPython
Comment utiliser virtualenv
Comment utiliser Matplotlib
Comment utiliser iptables
Comment utiliser numpy
Raisons d'utiliser le journal
Comment utiliser TokyoTechFes2015
Comment utiliser venv
Comment utiliser le dictionnaire {}
Facile à utiliser SQLite3
Comment utiliser la liste []
Comment utiliser python-kabusapi
Python-Comment utiliser pyinstaller
Comment utiliser OptParse
Comment utiliser le retour
Comment utiliser pyenv-virtualenv
Comment utiliser imutils
Je souhaite utiliser facilement les fonctions R avec le notebook ipython
Je souhaite utiliser un environnement virtuel avec jupyter notebook!