Topology in neuroscience
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

312 lines
69 KiB

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Separability of phase and orientation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Imports**"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"\n",
"import sys\n",
"import seaborn as sns\n",
"import sympy as sp\n",
"import numpy as np\n",
"import pandas as pd\n",
"from matplotlib import pyplot as plt\n",
"sys.path.insert(0, './model')\n",
"sys.path.insert(0, './numerical')\n",
"\n",
"from sym_model import *\n",
"from model import decoding\n",
"from model import persistence\n",
"from utils import get_orientation_phase_grid"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"p_func = sp.lambdify(\n",
" (x0, y0, k, sigma, phi_rf, theta_rf, phi_grating, theta_grating, ),\n",
" p, 'numpy')\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"\n",
"n_theta, n_phi = 36, 72\n",
"# n_theta, n_phi = 9, 12\n",
"step_phi, step_theta = 360 // n_phi, 180 // n_theta"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"grid = get_orientation_phase_grid(step_phi, step_theta)\n",
"grid = grid.reshape((-1, 2))"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
"res = (np.abs(p_func(0, 0, 6, 1, 0, 0, grid[:, 1], grid[:, 0])) * 10).reshape((n_phi, n_theta))\n",
"get_res = lambda x, y: (np.abs(p_func(x, y, 6, 1, 0, 0, grid[:, 1], grid[:, 0])) * 10).reshape((n_phi, n_theta))"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"def reconstruct(img: np.ndarray):\n",
" x_avg = np.mean(img, axis=0)\n",
" y_avg = np.mean(img, axis=1)\n",
" new_image = np.outer(y_avg, x_avg)\n",
" new_image *= np.sum(img) / np.sum(new_image)\n",
" return new_image"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7ffa82808d00>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.imshow(res)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7ffa7e4078e0>"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.imshow(reconstruct(res))"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/latex": [
"$\\displaystyle 1100.34214154386$"
],
"text/plain": [
"1100.342141543863"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"def separability(img):\n",
" return (np.mean(np.abs(img)) - np.mean(np.abs(img - reconstruct(img)))) / np.mean(np.abs(img))"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAABkAAAAOCAYAAADaOrdAAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABLklEQVQ4Ea2U+w3BUBTGEQM0bMAGHhvUBtgAa/Q/MQImEDbQDYQNdIM23aB+X3NvQ3Mj5PYkX8+j53Vfp10URctSFEUj5DMYI+fW/gvHf2f8UvgQ7LAlsnURAvgRZGACBuAvIsedgC38okCT8w6fgaTDJwcLsOH/SU7/EHFr/AN4WUCxyNoF6XvpHX08aUH8w5Hjhi2kYNBEkZBk2uo6leeBMfQqoi7rmR16z6sICXsm6beb2Mh2OZr/MPV9V+I6C1vBrjL1KmKuqpK6zsbaEq8ipuUYPjDyO7MriZsoojGkSVGnMYaHVlsv0jeetosqUNcVFEAjpCL0A0oGn1sjsrZqCVaytTUgMaobkR6WHPSC9Ziu/FOSkpCfCDFcI6gidMVoQOZAA3IKNMvKSfACZ3hjjjX0FpgAAAAASUVORK5CYII=",
"text/latex": [
"$\\displaystyle 1.0$"
],
"text/plain": [
"0.9999999999999996"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"separability(res)"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 0, 'x')"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"xs = np.linspace(0, 100, 10001)\n",
"data = [separability(get_res(0, x)) for x in xs]\n",
"plt.scatter(xs, data)\n",
"plt.ylabel('Separability score (0-1) at point (0, x)')\n",
"plt.xlabel('x')"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7ffa7e394400>]"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.10.5 64-bit",
"language": "python",
"name": "python3"
},
"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.5"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "e7370f93d1d0cde622a1f8e1c04877d8463912d04d973331ad4851f04de6915a"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}