{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "9fdd97b5", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import pylab as plt\n", "import networkx as nx\n", "\n", "from sklearn.covariance import GraphicalLassoCV, GraphicalLasso\n", "from sklearn.preprocessing import StandardScaler" ] }, { "cell_type": "code", "execution_count": 65, "id": "983c8c1e", "metadata": {}, "outputs": [], "source": [ "# Read data\n", "X = pd.read_csv(\"yeast.txt\",sep=\"\\t\")\n", "X.columns = (\"CBF1\", \"GAL4\", \"SWI5\", \"GAL80\", \"ASH1\")" ] }, { "cell_type": "code", "execution_count": 95, "id": "b30f43e0", "metadata": {}, "outputs": [], "source": [ "# Calculate precision matrix (GraphicalLasso calculates the covariance for you, there is also graphical_lasso(cov_matrix))\n", "cov = GraphicalLasso(alpha=0.3).fit(X)\n", "cov = cov.precision_\n", "\n", "# Calculate partial correlations from the precision matrix\n", "norm = np.eye(len(cov))*np.sqrt(1/cov.diagonal())\n", "part = -norm @ netw @ norm # normalize by sqrt(pii*pjj)\n", "\n", "# Remove the correlations and round (for visualization)\n", "np.fill_diagonal(part, 0)\n", "part = np.around(part, 3) \n", "\n", "# Convert to a pandas datafrmae\n", "Xn = pd.DataFrame(np.tril(part))\n", "Xn.columns = X.columns\n", "Xn.index = X.columns\n", "\n" ] }, { "cell_type": "code", "execution_count": 97, "id": "0e449e7d", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Create newtork\n", "G = nx.from_pandas_adjacency(Xn)\n", "pos = nx.kamada_kawai_layout(G, weight=None)\n", "labels = nx.get_edge_attributes(G,'weight')\n", "colors = [\"tomato\" if _>0 else \"cornflowerblue\" for _ in labels.values()]\n", "nx.draw(G, pos = pos,node_color=\"lightgray\", with_labels=True, width = 20*np.array(list(labels.values())), edge_color = colors)\n", "nx.draw_networkx_edge_labels(G,pos,edge_labels=labels,bbox={\"alpha\":0.5, \"color\": \"white\"})\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "1c01901c", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:st]", "language": "python", "name": "conda-env-st-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.1" } }, "nbformat": 4, "nbformat_minor": 5 }