semes_gaf/generate_gaf/generate_data.ipynb

570 lines
71 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import os\n",
"import matplotlib.pyplot as plt\n",
"# from pyts.image import GramianAngularField\n",
"from pyts.image import GramianAngularField, MarkovTransitionField\n",
"from tqdm import tqdm\n",
"from PIL import Image"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def standardize(df):\n",
" df_standardize = ((df - df.mean()) / df.std())\n",
" return df_standardize\n",
"\n",
"def normalize(df):\n",
" df_normalize = ((df - df.min()) / (df.max() - df.min()))\n",
" return df_normalize\n",
"\n",
"\n",
"def normalize_global(df, min_val, max_val):\n",
" df_normalize = ((df - min_val) / (max_val - min_val))\n",
" return df_normalize\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 89/89 [00:04<00:00, 19.61it/s]\n"
]
}
],
"source": [
"# find global min and max\n",
"files = [file for file in range(1,89+1)]\n",
"global_min = float('inf')\n",
"global_max = float('-inf')\n",
"\n",
"for img_num in tqdm(files):\n",
" data_path = f\"../data/testlog{img_num}.csv\"\n",
" df = pd.read_csv(data_path, header=0)\n",
"\n",
"\n",
" region = (df[\"Step_Count\"] == 6)\n",
" min = region.idxmax()\n",
" max = region[::-1].idxmax()\n",
"\n",
" data = (df[\"RF1_RefPwr\"][min:max].fillna(0) + df[\"RF2_RefPwr\"][min:max].fillna(0) + df[\"RF3_RefPwr\"][min:max].fillna(0))/3\n",
" data_min = np.min(data)\n",
" data_max = np.max(data)\n",
"\n",
" if data_min < global_min:\n",
" global_min = data_min\n",
"\n",
" if data_max > global_max:\n",
" global_max = data_max\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(np.float64(147.33333333333334), np.float64(0.0))"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"global_max, global_min"
]
},
{
"cell_type": "raw",
"metadata": {
"vscode": {
"languageId": "raw"
}
},
"source": [
"import plotly.graph_objs as go\n",
"\n",
"files = [file for file in range(1,89+1)]\n",
"segments = []\n",
"\n",
"for img_num in tqdm(files):\n",
" data_path = f\"../data/testlog{img_num}.csv\"\n",
" df = pd.read_csv(data_path, header=0)\n",
"\n",
"\n",
" region = (df[\"Step_Count\"] == 6)\n",
" min = region.idxmax()\n",
" max = region[::-1].idxmax()\n",
"\n",
" data = (df[\"RF1_RefPwr\"][min:max].fillna(0) + df[\"RF2_RefPwr\"][min:max].fillna(0) + df[\"RF3_RefPwr\"][min:max].fillna(0))/3\n",
" segments.append(normalize_global(data, global_min, global_max))\n",
"\n",
"data = []\n",
"for i, segment in enumerate(segments, start=1):\n",
" data.append(go.Scatter(y=segment, mode='lines', name=i))\n",
"\n",
"fig = go.Figure(data=data)\n",
"fig.update_traces(visible='legendonly')\n",
"fig.show()\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['Step_Count', 'Press_Set', 'Press_Value', 'Press_Position', 'Top_Temp',\n",
" 'Bottom_Temp', 'RF1_FwdPwr', 'RF1_RefPwr', 'RF2_FwdPwr', 'RF2_RefPwr',\n",
" 'RF3_FwdPwr', 'RF3_RefPwr', 'RF1_Vpp', 'RF1_Imag', 'RF1_Phase',\n",
" 'RF1_ESC_Vrms', 'RF2_Vpp', 'RF2_Imag', 'RF2_Phase', 'RF2_ESC_Vrms',\n",
" 'RF3_Vpp', 'RF3_Imag', 'RF3_Phase', 'RF3_ESC_Vrms', 'RF1_Cap1Pos',\n",
" 'RF1_Cap2Pos', 'RF2_Cap1Pos', 'RF2_Cap2Pos', 'RF3_Cap1Pos',\n",
" 'RF3_Cap2Pos', 'Wall_SetTemp', 'Wall_Temp', 'Wall_Output',\n",
" 'GDP_SetTemp', 'GDP_Temp', 'GDP_Output', 'Liner1_SetTemp',\n",
" 'Liner1_Temp', 'Liner1_Output', 'BC1_SetPress', 'BC1_Press', 'BC1_Flow',\n",
" 'BC1_LeakFlow', 'BC2_SetPress', 'BC2_Press', 'BC2_Flow', 'BC2_LeakFlow',\n",
" 'Chiller1_SetTemp', 'Chiller1_Temp', 'Chiller1_Press',\n",
" 'Chiller1_FlowRate', 'Chiller2_SetTemp', 'Chiller2_Temp',\n",
" 'Chiller2_Press', 'Chiller2_FlowRate', 'Valve_Position', 'eESC_Volt',\n",
" 'eESC_PosOut', 'EB_Cap', 'EB_Volt', 'EB_Current', 'EB_Phase',\n",
" 'EPD_Trend1', 'EPD_Trend2', 'EPD_Trend3', 'EPD_Trend4', 'EPD_Trend5',\n",
" 'CB_Leak'],\n",
" dtype='object')"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.columns"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Perform on all"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"def save_combined_image_as_img(gaf_image, mtf_image, file_path):\n",
" # Stack GAF and MTF images along the channel dimension\n",
" combined_image = np.stack([gaf_image, mtf_image], axis=2)\n",
" \n",
" # Convert to uint8 format (if necessary)\n",
" combined_image = (combined_image * 255).astype(np.uint8)\n",
" \n",
" # Convert numpy array to Image\n",
" combined_image_pil = Image.fromarray(combined_image)\n",
" \n",
" # Save the image\n",
" combined_image_pil.save(file_path)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def save_combined_image_as_np(gaf_image, mtf_image, file_path):\n",
" # Stack GAF and MTF images along the channel dimension\n",
" combined_image = np.stack([gaf_image, mtf_image], axis=2).astype(np.float32)\n",
" \n",
" # Convert to uint8 format (if necessary)\n",
" # combined_image = (combined_image * 255).astype(np.uint8)\n",
" \n",
" # Convert numpy array to Image\n",
" # combined_image_pil = Image.fromarray(combined_image)\n",
" \n",
" # Save the image\n",
" np.save(file_path,combined_image)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 89/89 [00:04<00:00, 18.06it/s]\n"
]
}
],
"source": [
"import warnings\n",
"from tqdm import tqdm\n",
"\n",
"warnings.filterwarnings(\"ignore\")\n",
"image_size = 400\n",
"gsaf = GramianAngularField(image_size=image_size, method=\"summation\")\n",
"mtf = MarkovTransitionField(image_size=image_size, n_bins=5)\n",
"\n",
"files = [file for file in range(1,89+1)]\n",
"\n",
"for img_num in tqdm(files):\n",
" data_path = f\"../data/testlog{img_num}.csv\"\n",
" df = pd.read_csv(data_path, header=0)\n",
"\n",
"\n",
" region = (df[\"Step_Count\"] == 6)\n",
" min = region.idxmax()\n",
" max = region[::-1].idxmax()\n",
"\n",
" data = (df[\"RF1_RefPwr\"][min:max].fillna(0) + df[\"RF2_RefPwr\"][min:max].fillna(0) + df[\"RF3_RefPwr\"][min:max].fillna(0))/3\n",
" # data_min = np.min(data_norm)\n",
" # if (np.max(data_norm) == 0):\n",
" # data_max = 1\n",
" # else:\n",
" # data_max = np.max(data_norm)\n",
"\n",
" data_array = np.array(data)\n",
" segment_size = 400\n",
" num_segments = len(data_array) // segment_size\n",
" remainder = len(data_array) - num_segments * segment_size\n",
" # remove some portion of data to fit into nice length segments\n",
" segments = np.array_split(data_array[remainder:], num_segments)\n",
" for i, segment in enumerate(segments):\n",
" data = normalize_global(segment, global_min, global_max)\n",
" # data = data.reshape((1,-1))\n",
" # values = np.array([0, 1])\n",
"\n",
" # data = np.concatenate((values, data))\n",
"\n",
"\n",
" # gaf_image = gsaf.transform(data)[0]\n",
" # gaf_image = normalize_global(gsaf.transform(data), data_min, data_max)[0]\n",
" # mtf_image = gaf_image # mtf works terribly on images of nearly empty data\n",
" # mtf_image = normalize_global(mtf.transform(data), data_min, data_max)[0]\n",
"\n",
" file_path = f\"../gaf_data/train/0/img{img_num}_{i}\"\n",
" # save_combined_image_as_np(gaf_image, mtf_image, file_path)\n",
" np.savez_compressed(file_path, data=data)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## visualize output"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import os\n",
"import matplotlib.pyplot as plt\n",
"# from pyts.image import GramianAngularField\n",
"from pyts.image import GramianAngularField, MarkovTransitionField\n",
"from tqdm import tqdm\n",
"from PIL import Image"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"data1 = np.load('../gaf_data/vpp/train/0/img7_21.npz')['data']\n",
"data2 = np.load('../gaf_data/vpp/train/0/img22_30.npz')['data']\n",
"\n",
"values = np.array([0, 1])\n",
"\n",
"# Add the values to the front\n",
"data1 = np.concatenate((values, data1))\n",
"data2 = np.concatenate((values, data2))\n",
"\n",
"# data_norm = normalize_global(data, global_min, global_max)\n",
"# data = data_norm.fillna(0).to_numpy().reshape((1,-1))\n",
"data1 = data1.reshape((1,-1))\n",
"data2 = data2.reshape((1,-1))\n",
"image_size = 400\n",
"gsaf = GramianAngularField(image_size=image_size, \n",
" method=\"summation\",\n",
"\t\t\t\t\t\t sample_range=(0,1))\n",
"# mtf = MarkovTransitionField(image_size=image_size, n_bins=5)\n",
"gaf_image1 = gsaf.transform(data1)[0]\n",
"gaf_image2 = gsaf.transform(data2)[0]\n",
"# gaf_image = normalize(gsaf.transform(data))[0]\n",
"# mtf_image = normalize(mtf.transform(data))[0]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7c66b971cd90>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.imshow(gaf_image1)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7c66b8c6f810>]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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HjyoFStWqKmpSZWVlZJO3WJZuHBh/PjKykodPXpU1dXVOnjwoLZs2aLNmzfr3nvvHblaAACAlJX0mJEFCxaoo6NDa9euVUtLi4qKilRbW6uCggJJUktLS8KaI4WFhaqtrdWKFSv0yCOPKC8vTw8//LBuueWWkasFAABIWRGTAo+q7ezsVE5Ojo4dO6aJEyfaLg4AABiCof7/7fSzaQAAgH2EEQAAYBVhBAAAWEUYAQAAVhFGAACAVYQRAABgFWEEAABYRRgBAABWEUYAAIBVSS8Hb0NskdjOzk7LJQEAAEMV+3/7XIu9p0QY6erqkiTl5+dbLgkAAEhWV1eXcnJyBv15Sjybpq+vT2+99ZYmTJigSCQyYn9vZ2en8vPz1dzcPGafeTPW60j9UttYr5809utI/VJb0PUzxqirq0t5eXlKSxt8ZEhK9IykpaVpxowZgf39EydOHJP/yPob63WkfqltrNdPGvt1pH6pLcj6na1HJIYBrAAAwCrCCAAAsMrpMBKNRrV69WpFo1HbRQnMWK8j9UttY71+0tivI/VLbaOlfikxgBUAAIxdTveMAAAA+wgjAADAKsIIAACwijACAACscjqMbNiwQYWFhcrOzlZxcbF2795tu0jDsmbNGkUikYTX1KlT4z83xmjNmjXKy8vTuHHj9NnPflb79++3WOKz27Vrl+bPn6+8vDxFIhH95je/Sfj5UOrT3d2tpUuXavLkyRo/frz+9V//VW+88UaItRjcuep3++23+87npz71qYRjRnP9ampq9IlPfEITJkzQlClT9O///u96/fXXE45J5XM4lPql8jncuHGjrrrqqvgiWKWlpfr9738f/3kqn7uYc9Uxlc/fQGpqahSJRLR8+fL4vlF3Ho2jnnrqKZOZmWl+8YtfmAMHDpi7777bjB8/3hw9etR20ZK2evVq8y//8i+mpaUl/mpra4v//KGHHjITJkww27dvN/v27TMLFiww06ZNM52dnRZLPbja2lqzatUqs337diPJPPPMMwk/H0p9KisrzfTp001dXZ159dVXzXXXXWfmzp1rTp48GXJt/M5Vv0WLFpkvfOELCeezo6Mj4ZjRXL8bb7zRPPbYY+a1114zjY2N5uabbzYzZ840x48fjx+TyudwKPVL5XP47LPPmt/97nfm9ddfN6+//rq5//77TWZmpnnttdeMMal97mLO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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(data1.reshape((-1,1)))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7c66b97fdf10>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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Xq+CwWCcphpszpw52rdvn6ZPn66vvvpKv/zlL1VcXKzz5887cw51Dl988UU8xh3SrcwZDAaVmpqqCRMmDFoT77+P0tJS/eAHP1Bubq5aW1v18ssva+HChWpqapLb7Y777MYYbdy4UY888ojy8/MlJcY1H2puye7r3dzcrKKiIn377be67777VFtbqxkzZjj/WNt6vYebW7L7eo+0hIrUdS6XK+qxMWbQvngqLS11/lxQUKCioiL94z/+o95++23nw03bz+G625nThnNZvXq18+f8/HzNnj1bubm5OnjwoFauXDns8+7W7Bs2bNC5c+d04sSJQcdsvubDzW3z9X7wwQd19uxZXb58We+//77KysrU0NDgHLf1eg8394wZM6y+3iMtob7dl5WVpaSkpEH/JdDZ2Tnov4ZskpaWpoKCAl28eNG5y8/2c7iVOX0+n/r6+tTV1TXsGlv4/X7l5ubq4sWLkuI7e3l5uT766CMdP3486v/szfZrPtzcQ7HpeqempuqBBx7Q7NmzVV1drVmzZumtt96y/noPN/dQbLreIy2hIpWamqrCwkLV1dVF7a+rq1NxcXGcprq5SCSiP/7xj/L7/crLy5PP54s6h76+PjU0NFh1DrcyZ2FhoVJSUqLWdHR0qKWlxapzkaRLly6pra1Nfr9fUnxmN8Zow4YN+uCDD3Ts2DHl5eVFHbf1mt9s7qHYcL2HY4xRJBKx9nrfbO6h2Hy979hdv1XjDl2/BX337t3m008/NRUVFSYtLc18/vnn8R7NsWnTJlNfX28+++wzc/LkSbNs2TKTnp7uzLht2zbj8XjMBx98YJqbm82PfvSjuNyC3t3dbc6cOWPOnDljJJnt27ebM2fOOLfz38qc69atM5MnTzZHjx41f/jDH8zChQvvym2u3zV7d3e32bRpk2lsbDStra3m+PHjpqioyNx///1xnf0nP/mJ8Xg8pr6+PurW4W+++cZZY+M1v9nctl5vY4yprKw0n3zyiWltbTXnzp0zW7ZsMePGjTNHjhwxxth5vW82t83XezQkXKSMMebf//3fTW5urklNTTXf+973om6FtcH1n7VISUkxgUDArFy50pw/f945fu3aNfPqq68an89n3G63efTRR01zc/Ndn/P48eNG0qCtrKzslufs7e01GzZsMJmZmWb8+PFm2bJl5ssvv4zr7N98840pKSkxkyZNMikpKWbKlCmmrKxs0Fx3e/ah5pVk9uzZ46yx8ZrfbG5br7cxxvz4xz92/q2YNGmSWbRokRMoY+y83jeb2+brPRr4v+oAAFgroT6TAgD8fSFSAABrESkAgLWIFADAWkQKAGAtIgUAsBaRAgBYi0gBAKxFpAAA1iJSAABrESkAgLWIFADAWv8P9sSB5QZ+h8cAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.imshow(gaf_image2)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7c66b992c090>]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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nTvXU76goED79u3TwoULtXPnTq1YsUIvvfSSHn300cFrBQAACFp+zxmZM2eOamtrtXTpUlVWViozM1NFRUVKT0+XJFVWVnpdcyQjI0NFRUV6+OGH9fzzzyslJUXPPfecbrvttsFrBQAACFp+X2fEBOaMAAAQfIZkzggAAMBgI4wAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjPL7cvAmuC8SW19fb7gmAACgv9y/t890sfegCCMNDQ2SpLS0NMM1AQAA/mpoaJDL5er19aC4N01nZ6cOHjyo2NhYORyOQdtufX290tLSVFFRMWzveTPc20j7gttwb580/NtI+4LbULfPsiw1NDQoJSVFISG9zwwJip6RkJAQpaamDtn24+LihuUP2emGextpX3Ab7u2Thn8baV9wG8r29dUj4sYEVgAAYBRhBAAAGGXrMOJ0OrVkyRI5nU7TVRkyw72NtC+4Dff2ScO/jbQvuJ0r7QuKCawAAGD4snXPCAAAMI8wAgAAjCKMAAAAowgjAADAKFuHkWXLlikjI0ORkZHKysrSpk2bTFdpQB5//HE5HA6vR1JSkud1y7L0+OOPKyUlRVFRUbrmmmu0fft2gzXu28aNG3XLLbcoJSVFDodDf/rTn7xe7097Wlpa9OCDDyohIUExMTH65je/qf379wewFb07U/vuuusun/15xRVXeJU5l9tXWFioyy+/XLGxsRo7dqxuvfVW7dq1y6tMMO/D/rQvmPfh8uXLdckll3gugpWTk6M///nPnteDed+5namNwbz/elJYWCiHw6EFCxZ41p1z+9GyqTfeeMMKDw+3fve731k7duywHnroISsmJsbat2+f6ar5bcmSJdZFF11kVVZWeh7V1dWe15966ikrNjbWWrVqlbVt2zZrzpw5VnJyslVfX2+w1r0rKiqyFi9ebK1atcqSZK1Zs8br9f60p6CgwBo3bpxVXFxsbd261br22mutadOmWe3t7QFuja8ztW/evHnW17/+da/9WVtb61XmXG7fjTfeaL388svWZ599ZpWVlVk333yzNX78eKuxsdFTJpj3YX/aF8z7cO3atdbbb79t7dq1y9q1a5f12GOPWeHh4dZnn31mWVZw7zu3M7UxmPdfdx9//LE1YcIE65JLLrEeeughz/pzbT/aNozMmDHDKigo8Fp3wQUXWD/72c8M1WjglixZYk2bNq3H1zo7O62kpCTrqaee8qw7ceKE5XK5rBdeeCFANRy47r+s+9OeY8eOWeHh4dYbb7zhKXPgwAErJCTEeueddwJW9/7oLYx861vf6vU9wdQ+y7Ks6upqS5K1YcMGy7KG3z7s3j7LGn77cNSoUdaLL7447Pbd6dxttKzhs/8aGhqs8847zyouLrauvvpqTxg5F/ejLYdpWltbVVJSory8PK/1eXl52rx5s6FanZ3du3crJSVFGRkZuuOOO7Rnzx5J0t69e1VVVeXVVqfTqauvvjoo29qf9pSUlKitrc2rTEpKijIzM4OmzevXr9fYsWM1ZcoU3Xvvvaqurva8Fmztq6urkyTFx8dLGn77sHv73IbDPuzo6NAbb7yhpqYm5eTkDLt9J/m20W047L/7779fN998s66//nqv9efifgyKG+UNtpqaGnV0dCgxMdFrfWJioqqqqgzVauBmzpypV199VVOmTNGhQ4f05JNPKjc3V9u3b/e0p6e27tu3z0R1z0p/2lNVVaWIiAiNGjXKp0ww7N/8/Hx997vfVXp6uvbu3at//dd/1ezZs1VSUiKn0xlU7bMsSwsXLtTXvvY1ZWZmShpe+7Cn9knBvw+3bdumnJwcnThxQiNGjNCaNWt04YUXen4JDYd911sbpeDff5L0xhtvaOvWrfrkk098XjsXj0FbhhE3h8PhtWxZls+6YJCfn+/598UXX6ycnBxNmjRJv//97z2TroZLW90G0p5gafOcOXM8/87MzFR2drbS09P19ttv6zvf+U6v7zsX2/fAAw/o008/1fvvv+/z2nDYh721L9j34fnnn6+ysjIdO3ZMq1at0rx587RhwwbP68Nh3/XWxgsvvDDo919FRYUeeughrVu3TpGRkb2WO5f2oy2HaRISEhQaGuqT7qqrq32SYjCKiYnRxRdfrN27d3vOqhkube1Pe5KSktTa2qqjR4/2WiaYJCcnKz09Xbt375YUPO178MEHtXbtWr333ntKTU31rB8u+7C39vUk2PZhRESEJk+erOzsbBUWFmratGl69tlnh82+k3pvY0+Cbf+VlJSourpaWVlZCgsLU1hYmDZs2KDnnntOYWFhnjqeS/vRlmEkIiJCWVlZKi4u9lpfXFys3NxcQ7UaPC0tLdq5c6eSk5OVkZGhpKQkr7a2trZqw4YNQdnW/rQnKytL4eHhXmUqKyv12WefBWWba2trVVFRoeTkZEnnfvssy9IDDzyg1atX669//asyMjK8Xg/2fXim9vUk2PZhd5ZlqaWlJej3XV/cbexJsO2/6667Ttu2bVNZWZnnkZ2dre9///sqKyvTxIkTz739OOhTYoOE+9Tel156ydqxY4e1YMECKyYmxvrqq69MV81vjzzyiLV+/Xprz5491kcffWR94xvfsGJjYz1teeqppyyXy2WtXr3a2rZtm/W9733vnD61t6GhwSotLbVKS0stSdbTTz9tlZaWek677k97CgoKrNTUVOvdd9+1tm7das2ePfucOe2ur/Y1NDRYjzzyiLV582Zr79691nvvvWfl5ORY48aNC5r2/eQnP7FcLpe1fv16r1Mjm5ubPWWCeR+eqX3Bvg8XLVpkbdy40dq7d6/16aefWo899pgVEhJirVu3zrKs4N53bn21Mdj3X29OP5vGss69/WjbMGJZlvX8889b6enpVkREhDV9+nSvU/OCifv88PDwcCslJcX6zne+Y23fvt3zemdnp7VkyRIrKSnJcjqd1lVXXWVt27bNYI379t5771mSfB7z5s2zLKt/7Tl+/Lj1wAMPWPHx8VZUVJT1jW98wyovLzfQGl99ta+5udnKy8uzxowZY4WHh1vjx4+35s2b51P3c7l9PbVNkvXyyy97ygTzPjxT+4J9H/7oRz/yfC+OGTPGuu666zxBxLKCe9+59dXGYN9/vekeRs61/eiwLMsa/P4WAACA/rHlnBEAAHDuIIwAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAw6v8D+P3ZFRKv7EwAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(data2.reshape((-1,1)))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[-1. , -1. , -0.61363122, -0.98978992, -1. ,\n",
" -1. , -1. , -1. , -1. , -1. ],\n",
" [-1. , -1. , -0.61363122, -0.98978992, -1. ,\n",
" -1. , -1. , -1. , -1. , -1. ],\n",
" [-0.61363122, -0.61363122, 0.24691345, -0.49482223, -0.61363122,\n",
" -0.61363122, -0.61363122, -0.61363122, -0.61363122, -0.61363122],\n",
" [-0.98978992, -0.98978992, -0.49482223, -0.95936815, -0.98978992,\n",
" -0.98978992, -0.98978992, -0.98978992, -0.98978992, -0.98978992],\n",
" [-1. , -1. , -0.61363122, -0.98978992, -1. ,\n",
" -1. , -1. , -1. , -1. , -1. ],\n",
" [-1. , -1. , -0.61363122, -0.98978992, -1. ,\n",
" -1. , -1. , -1. , -1. , -1. ],\n",
" [-1. , -1. , -0.61363122, -0.98978992, -1. ,\n",
" -1. , -1. , -1. , -1. , -1. ],\n",
" [-1. , -1. , -0.61363122, -0.98978992, -1. ,\n",
" -1. , -1. , -1. , -1. , -1. ],\n",
" [-1. , -1. , -0.61363122, -0.98978992, -1. ,\n",
" -1. , -1. , -1. , -1. , -1. ],\n",
" [-1. , -1. , -0.61363122, -0.98978992, -1. ,\n",
" -1. , -1. , -1. , -1. , -1. ]])"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gaf_image1[310:320, 310:320]\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[-1. , 0. , -1. , -0.99999744, -1. ,\n",
" -1. , -0.99998976, -1. , -1. , -0.99999744],\n",
" [ 0. , 1. , 0. , 0.00226244, 0. ,\n",
" 0. , 0.00452489, 0. , 0. , 0.00226244],\n",
" [-1. , 0. , -1. , -0.99999744, -1. ,\n",
" -1. , -0.99998976, -1. , -1. , -0.99999744],\n",
" [-0.99999744, 0.00226244, -0.99999744, -0.99998976, -0.99999744,\n",
" -0.99999744, -0.99997697, -0.99999744, -0.99999744, -0.99998976],\n",
" [-1. , 0. , -1. , -0.99999744, -1. ,\n",
" -1. , -0.99998976, -1. , -1. , -0.99999744],\n",
" [-1. , 0. , -1. , -0.99999744, -1. ,\n",
" -1. , -0.99998976, -1. , -1. , -0.99999744],\n",
" [-0.99998976, 0.00452489, -0.99998976, -0.99997697, -0.99998976,\n",
" -0.99998976, -0.99995905, -0.99998976, -0.99998976, -0.99997697],\n",
" [-1. , 0. , -1. , -0.99999744, -1. ,\n",
" -1. , -0.99998976, -1. , -1. , -0.99999744],\n",
" [-1. , 0. , -1. , -0.99999744, -1. ,\n",
" -1. , -0.99998976, -1. , -1. , -0.99999744],\n",
" [-0.99999744, 0.00226244, -0.99999744, -0.99998976, -0.99999744,\n",
" -0.99999744, -0.99997697, -0.99999744, -0.99999744, -0.99998976]])"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gaf_image2[0:10, 0:10]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.11.9"
}
},
"nbformat": 4,
"nbformat_minor": 2
}