diff --git a/jupyternotebook/lecturefichier/test4.ipynb b/jupyternotebook/lecturefichier/test4.ipynb deleted file mode 100644 index 9726dd0..0000000 --- a/jupyternotebook/lecturefichier/test4.ipynb +++ /dev/null @@ -1,377 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "c:\\Users\\yazan\\anaconda3\\Lib\\site-packages\\paramiko\\transport.py:219: CryptographyDeprecationWarning: Blowfish has been deprecated\n", - " \"class\": algorithms.Blowfish,\n" - ] - } - ], - "source": [ - "# Import data\n", - "import time\n", - "import numpy as np\n", - "from skimage import io\n", - "import plotly.graph_objects as go\n", - "from scipy.ndimage import uniform_filter1d\n", - "from scipy.signal import savgol_filter\n", - "from scipy import *\n", - "from scipy.signal import *\n", - "from util import *" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Shear_x001-x101_y010_Rot00.csv', 'Shear_x001-x101_y011_Rot00.csv', 'Shear_x001-x101_y012_Rot00.csv', 'Shear_x001-x101_y013_Rot00.csv', 'Shear_x001-x101_y014_Rot00.csv', 'Shear_x001-x101_y015_Rot00.csv', 'Shear_x001-x101_y016_Rot00.csv', 'Shear_x001-x101_y017_Rot00.csv', 'Shear_x001-x101_y018_Rot00.csv', 'Shear_x001-x101_y019_Rot00.csv', 'Shear_x001-x101_y020_Rot00.csv', 'Shear_x001-x101_y021_Rot00.csv', 'Shear_x001-x101_y022_Rot00.csv', 'Shear_x001-x101_y023_Rot00.csv', 'Shear_x001-x101_y024_Rot00.csv', 'Shear_x001-x101_y025_Rot00.csv', 'Shear_x001-x101_y026_Rot00.csv', 'Shear_x001-x101_y027_Rot00.csv', 'Shear_x001-x101_y028_Rot00.csv', 'Shear_x001-x101_y029_Rot00.csv', 'Shear_x001-x101_y030_Rot00.csv', 'Shear_x001-x101_y031_Rot00.csv', 'Shear_x001-x101_y032_Rot00.csv', 'Shear_x001-x101_y033_Rot00.csv', 'Shear_x001-x101_y034_Rot00.csv', 'Shear_x001-x101_y035_Rot00.csv', 'Shear_x001-x101_y036_Rot00.csv', 'Shear_x001-x101_y037_Rot00.csv', 'Shear_x001-x101_y038_Rot00.csv', 'Shear_x001-x101_y039_Rot00.csv', 'Shear_x001-x101_y040_Rot00.csv', 'Shear_x001-x101_y041_Rot00.csv', 'Shear_x001-x101_y042_Rot00.csv', 'Shear_x001-x101_y043_Rot00.csv', 'Shear_x001-x101_y044_Rot00.csv', 'Shear_x001-x101_y045_Rot00.csv', 'Shear_x001-x101_y046_Rot00.csv', 'Shear_x001-x101_y047_Rot00.csv', 'Shear_x001-x101_y048_Rot00.csv', 'Shear_x001-x101_y049_Rot00.csv', 'Shear_x001-x101_y050_Rot00.csv', 'Shear_x001-x101_y051_Rot00.csv', 'Shear_x001-x101_y052_Rot00.csv', 'Shear_x001-x101_y053_Rot00.csv', 'Shear_x001-x101_y054_Rot00.csv', 'Shear_x001-x101_y055_Rot00.csv', 'Shear_x001-x101_y056_Rot00.csv', 'Shear_x001-x101_y057_Rot00.csv', 'Shear_x001-x101_y058_Rot00.csv', 'Shear_x001-x101_y059_Rot00.csv', 'Shear_x001-x101_y060_Rot00.csv', 'Shear_x001-x101_y061_Rot00.csv']\n" - ] - } - ], - "source": [ - "\n", - "\"\"\"\n", - "vol = io.imread(\"https://s3.amazonaws.com/assets.datacamp.com/blog_assets/attention-mri.tif\")\n", - "volume = vol.T\n", - "r, c = volume[0].shape\n", - "\"\"\"\n", - "\n", - "# Import data\n", - "dossier = \"dataverse_files\\Dataset\\Shear_Wave_Rot00_CSV_Data\"\n", - "fichiers_selectionnes= fichiers_selectionnes = ['Shear_x001-x101_y{:03d}_Rot00.csv'.format(i) for i in range(10, 62)]\n", - "print(fichiers_selectionnes)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "def butter_lowpass(cutoff, fs, order=5):\n", - " nyq = 0.5 * fs\n", - " normal_cutoff = cutoff / nyq\n", - " b, a = butter(order, normal_cutoff, btype='low', analog=False)\n", - " return b, a\n", - "\n", - "def butter_lowpass_filter(data, cutoff, fs, order=5):\n", - " b, a = butter_lowpass(cutoff, fs, order=order)\n", - " y = lfilter(b, a, data)\n", - " return y" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "pre_volume= np.array(lire_fichier_csv(dossier,fichiers_selectionnes))\n", - "\n", - "pre_traitement = abs(hilbert(pre_volume))\n", - "fs = 600.0\n", - "cutoff = 3.667\n", - "filtered_m_hat = butter_lowpass_filter(pre_traitement, cutoff, fs)\n", - "traitement = savgol_filter(pre_traitement, window_length=50, polyorder=5)\n", - "\n", - "volume = traitement[:, ::10, :]\n", - "#volume = np.load('Dataset/3D_Dataset_All_Wave_PY_Data/3D_Dataset_shear_Wave_Rot00.npy')\n", - "r, c = volume[0].shape\n", - "# Define the number of frames based on the depth of the 3D volume\n", - "nb_frames = volume.shape[0]\n", - "\n", - "# Define the z-scale based on the number of frames\n", - "z_scale = 6.7 / nb_frames\n", - "\n", - "#custom_colorscale = [(0, 'blue'), (0.5, 'cyan'), (1, 'red')]\n", - "\n", - "fig = go.Figure(frames=[go.Frame(data=go.Surface(\n", - " z=(z_scale * nb_frames - k * z_scale) * np.ones((r, c)),\n", - " surfacecolor=np.flipud(volume[nb_frames - 1 - k]),\n", - " cmin=0, cmax=20000,\n", - " colorscale='Jet'\n", - " ),\n", - " name=str(k) # you need to name the frame for the animation to behave properly\n", - " )\n", - " for k in range(nb_frames)])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Add data to be displayed before animation starts\n", - "fig.add_trace(go.Surface(\n", - " z=z_scale * nb_frames * np.ones((r, c)),\n", - " surfacecolor=np.flipud(volume[nb_frames - 1]),\n", - " colorscale='Jet',\n", - " cmin=-20000, cmax=20000,\n", - " colorbar=dict(thickness=20, ticklen=4)\n", - " ))\n", - "\n", - "def frame_args(duration):\n", - " return {\n", - " \"frame\": {\"duration\": duration},\n", - " \"mode\": \"immediate\",\n", - " \"fromcurrent\": True,\n", - " \"transition\": {\"duration\": duration, \"easing\": \"linear\"},\n", - " }\n", - "\n", - "sliders = [\n", - " {\n", - " \"pad\": {\"b\": 10, \"t\": 60},\n", - " \"len\": 0.9,\n", - " \"x\": 0.1,\n", - " \"y\": 0,\n", - " \"steps\": [\n", - " {\n", - " \"args\": [[f.name], frame_args(0)],\n", - " \"label\": str(k),\n", - " \"method\": \"animate\",\n", - " }\n", - " for k, f in enumerate(fig.frames)\n", - " ],\n", - " }\n", - " ]\n", - "\n", - "# Layout\n", - "fig.update_layout(\n", - " title='Slices in volumetric data',\n", - " width=600,\n", - " height=600,\n", - " scene=dict(\n", - " zaxis=dict(range=[-0.1, z_scale * nb_frames], autorange=False),\n", - " aspectratio=dict(x=1, y=1, z=1),\n", - " ),\n", - " updatemenus = [\n", - " {\n", - " \"buttons\": [\n", - " {\n", - " \"args\": [None, frame_args(50)],\n", - " \"label\": \"▶\", # play symbol\n", - " \"method\": \"animate\",\n", - " },\n", - " {\n", - " \"args\": [[None], frame_args(0)],\n", - " \"label\": \"◼\", # pause symbol\n", - " \"method\": \"animate\",\n", - " },\n", - " ],\n", - " \"direction\": \"left\",\n", - " \"pad\": {\"r\": 10, \"t\": 70},\n", - " \"type\": \"buttons\",\n", - " \"x\": 0.1,\n", - " \"y\": 0,\n", - " }\n", - " ],\n", - " sliders=sliders\n", - ")\n", - "\n", - "fig.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fig = go.Figure()\n", - "\n", - "for k in range(nb_frames):\n", - " fig.add_trace(go.Surface(\n", - " z=np.ones((r, c)) * (z_scale * nb_frames - k * z_scale),\n", - " surfacecolor=np.flipud(volume[k]),\n", - " colorscale='Jet',\n", - " cmin=0, cmax=20000\n", - " ))\n", - "\n", - "fig.update_layout(\n", - " title='Volumetric Data Visualization',\n", - " scene=dict(\n", - " xaxis=dict(title='X'),\n", - " yaxis=dict(title='Y'),\n", - " zaxis=dict(title='Z'),\n", - " )\n", - ")\n", - "fig.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "seuil = 10000\n", - "indices = np.argwhere(volume > seuil)\n", - "x, y, z = indices[:, 1], indices[:, 2], indices[:, 0] * z_scale \n", - "\n", - "fig = go.Figure(data=[go.Scatter3d(\n", - " x=x,\n", - " y=y,\n", - " z=z,\n", - " mode='markers',\n", - " marker=dict(\n", - " size=2,\n", - " color=volume[indices[:, 0], indices[:, 1], indices[:, 2]], \n", - " colorscale='Jet',\n", - " opacity=0.8,\n", - " colorbar=dict(title='Intensité')\n", - " )\n", - ")])\n", - "fig.update_layout(\n", - " title='Volumetric Data Points',\n", - " scene=dict(\n", - " xaxis=dict(title='X'),\n", - " yaxis=dict(title='Y'),\n", - " zaxis=dict(title='Z'),\n", - " )\n", - ")\n", - "fig.show()\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "\n", - "pre_volume_transposed = np.transpose(pre_volume)\n", - "\n", - "# Apply the Hilbert transform to the transposed array\n", - "pre_traitement = abs(hilbert(pre_volume_transposed))\n", - "\n", - "traitement = savgol_filter(pre_traitement, window_length=50, polyorder=5)\n", - "\n", - "volume = traitement[:, ::10, :]\n", - "r, c = volume[0].shape\n", - "\n", - "# Définition du nombre de frames basé sur la profondeur du volume 3D\n", - "nb_frames = volume.shape[0]\n", - "\n", - "# Définition de l'échelle Z basée sur le nombre de frames\n", - "z_scale = 6.7 / nb_frames\n", - "\n", - "# Création de la figure avec les frames\n", - "fig = go.Figure(frames=[go.Frame(data=go.Surface(\n", - " z=(z_scale * nb_frames - k * z_scale) * np.ones((r, c)),\n", - " surfacecolor=np.flipud(volume[nb_frames - 1 - k]),\n", - " cmin=0, cmax=20000,\n", - " colorscale='Jet'\n", - " ),\n", - " name=str(k) # vous devez nommer la frame pour que l'animation se comporte correctement\n", - " )\n", - " for k in range(nb_frames)])\n", - "\n", - "# Ajout des données à afficher avant le début de l'animation\n", - "fig.add_trace(go.Surface(\n", - " z=z_scale * nb_frames * np.ones((r, c)),\n", - " surfacecolor=np.flipud(volume[nb_frames - 1]),\n", - " colorscale='Jet',\n", - " cmin=-20000, cmax=20000,\n", - " colorbar=dict(thickness=20, ticklen=4)\n", - " ))\n", - "\n", - "def frame_args(duration):\n", - " return {\n", - " \"frame\": {\"duration\": duration},\n", - " \"mode\": \"immediate\",\n", - " \"fromcurrent\": True,\n", - " \"transition\": {\"duration\": duration, \"easing\": \"linear\"},\n", - " }\n", - "\n", - "sliders = [\n", - " {\n", - " \"pad\": {\"b\": 10, \"t\": 60},\n", - " \"len\": 0.9,\n", - " \"x\": 0.1,\n", - " \"y\": 0,\n", - " \"steps\": [\n", - " {\n", - " \"args\": [[f.name], frame_args(0)],\n", - " \"label\": str(k),\n", - " \"method\": \"animate\",\n", - " }\n", - " for k, f in enumerate(fig.frames)\n", - " ],\n", - " }\n", - " ]\n", - "\n", - "# Layout\n", - "fig.update_layout(\n", - " title='Slices in volumetric data',\n", - " width=600,\n", - " height=600,\n", - " scene=dict(\n", - " zaxis=dict(range=[-0.1, z_scale * nb_frames], autorange=False),\n", - " aspectratio=dict(x=1, y=1, z=1),\n", - " xaxis=dict(title=\"X Axis\"),\n", - " yaxis=dict(title=\"Y Axis\"),\n", - " ),\n", - " updatemenus = [\n", - " {\n", - " \"buttons\": [\n", - " {\n", - " \"args\": [None, frame_args(50)],\n", - " \"label\": \"▶\", # play symbol\n", - " \"method\": \"animate\",\n", - " },\n", - " {\n", - " \"args\": [[None], frame_args(0)],\n", - " \"label\": \"◼\", # pause symbol\n", - " \"method\": \"animate\",\n", - " },\n", - " ],\n", - " \"direction\": \"left\",\n", - " \"pad\": {\"r\": 10, \"t\": 70},\n", - " \"type\": \"buttons\",\n", - " \"x\": 0.1,\n", - " \"y\": 0,\n", - " }\n", - " ],\n", - " sliders=sliders\n", - ")\n", - "\n", - "fig.show()\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "base", - "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.4" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -}