flandre/us.ipynb

246 lines
1.0 MiB
Plaintext
Raw Permalink Normal View History

2025-04-13 16:47:14 +08:00
{
"cells": [
{
2025-06-10 20:35:01 +08:00
"cell_type": "code",
"execution_count": 1,
"id": "5518f8a97320440e",
2025-04-13 16:47:14 +08:00
"metadata": {
"ExecuteTime": {
2025-04-16 23:31:52 +08:00
"end_time": "2025-04-16T13:39:51.838738Z",
"start_time": "2025-04-16T13:39:50.042656Z"
2025-04-13 16:47:14 +08:00
}
},
2025-04-16 17:53:18 +08:00
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/lambda/source/scarlet/flandre/.venv/lib/python3.12/site-packages/cupyx/jit/_interface.py:173: FutureWarning: cupyx.jit.rawkernel is experimental. The interface can change in the future.\n",
" cupy._util.experimental('cupyx.jit.rawkernel')\n"
]
}
],
2025-06-10 20:35:01 +08:00
"source": [
"from pathlib import Path\n",
"\n",
"import cupy as cp\n",
"import cupyx.scipy.fft\n",
"import numpy as np\n",
"from matplotlib import pyplot as plt\n",
"\n",
"from flandre.beamformer.das import gen_pwi\n",
"from flandre.beamformer.dist import direct_dist\n",
"from flandre.utils.Config import DeviceConfig\n",
"from flandre.utils.RfMat import RfMat\n",
"from flandre.utils.RfMeta import RfFrameMeta, RfSequenceMeta\n",
"from flandre.utils.ScanData import ScanData"
]
2025-04-13 16:47:14 +08:00
},
{
2025-06-10 20:35:01 +08:00
"cell_type": "code",
"execution_count": 7,
"id": "734b0e53cbb44961",
2025-04-13 16:47:14 +08:00
"metadata": {
"ExecuteTime": {
"end_time": "2025-04-13T05:31:08.792101Z",
"start_time": "2025-04-13T05:31:08.334419Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7d27773fb2f0>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
2025-06-10 20:35:01 +08:00
"image/png": "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
2025-04-13 16:47:14 +08:00
"text/plain": [
"<Figure size 4000x2000 with 1 Axes>"
2025-06-10 20:35:01 +08:00
]
2025-04-13 16:47:14 +08:00
},
"metadata": {},
"output_type": "display_data"
}
],
2025-06-10 20:35:01 +08:00
"source": [
"dc = DeviceConfig(v2=1540, rows=1490)\n",
"pwi, _ = gen_pwi(direct_dist(dc, p=cp), dc)\n",
"\n",
"input_path = Path(\n",
" \"/run/media/lambda/b86dccdc-f134-464b-a310-6575ee9ae85c/uf/cap-30/328_parallel.bin\"\n",
")\n",
"input_sd = ScanData.from_file(input_path, (256, 1502), p=cp)\n",
"plt.figure(figsize=(40, 20))\n",
"dctm = cupyx.scipy.fft.dctn(input_sd.m)\n",
"dctm = cupyx.scipy.fft.dctn(input_sd.m)\n",
"\n",
"# dctm[mask[:,:,3]!=0] = 0\n",
"dctm[:30, :800] = 0\n",
"m2 = cupyx.scipy.fft.idctn(dctm)\n",
"input_sd.m = m2\n",
"\n",
"input_sd = input_sd.dct(80, 1500)\n",
"# pass.hib().abs().filter_min(300)\n",
"plt.imshow(input_sd.m.get()[:, 600:], cmap=\"grey\")\n",
"plt.imshow(pwi(input_sd.m).get(), cmap=\"grey\")"
]
2025-04-13 16:47:14 +08:00
},
{
"cell_type": "code",
2025-06-10 20:35:01 +08:00
"execution_count": 2,
2025-04-13 16:47:14 +08:00
"id": "initial_id",
"metadata": {
"ExecuteTime": {
2025-04-16 23:31:52 +08:00
"end_time": "2025-04-16T13:39:52.175499Z",
"start_time": "2025-04-16T13:39:51.863827Z"
2025-06-10 20:35:01 +08:00
},
"collapsed": true
2025-04-13 16:47:14 +08:00
},
2025-06-10 20:35:01 +08:00
"outputs": [
{
"ename": "FileNotFoundError",
"evalue": "[Errno 2] No such file or directory: '/run/media/lambda/b86dccdc-f134-464b-a310-6575ee9ae85c/uf/cap-30/328_parallel.bin'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[2], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m input_path \u001b[38;5;241m=\u001b[39m Path(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/run/media/lambda/b86dccdc-f134-464b-a310-6575ee9ae85c/uf/cap-30/328_parallel.bin\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m----> 2\u001b[0m input_bytes \u001b[38;5;241m=\u001b[39m \u001b[43minput_path\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread_bytes\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3\u001b[0m mat \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mfrombuffer(input_bytes, dtype\u001b[38;5;241m=\u001b[39mnp\u001b[38;5;241m.\u001b[39mint16)\u001b[38;5;241m.\u001b[39mcopy()\n\u001b[1;32m 4\u001b[0m mat \u001b[38;5;241m=\u001b[39m mat\u001b[38;5;241m.\u001b[39mreshape((\u001b[38;5;241m256\u001b[39m, \u001b[38;5;241m1502\u001b[39m))\n",
"File \u001b[0;32m~/.local/share/uv/python/cpython-3.12.9-linux-x86_64-gnu/lib/python3.12/pathlib.py:1019\u001b[0m, in \u001b[0;36mPath.read_bytes\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1015\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mread_bytes\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m 1016\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 1017\u001b[0m \u001b[38;5;124;03m Open the file in bytes mode, read it, and close the file.\u001b[39;00m\n\u001b[1;32m 1018\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m-> 1019\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmode\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mrb\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m f:\n\u001b[1;32m 1020\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m f\u001b[38;5;241m.\u001b[39mread()\n",
"File \u001b[0;32m~/.local/share/uv/python/cpython-3.12.9-linux-x86_64-gnu/lib/python3.12/pathlib.py:1013\u001b[0m, in \u001b[0;36mPath.open\u001b[0;34m(self, mode, buffering, encoding, errors, newline)\u001b[0m\n\u001b[1;32m 1011\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m mode:\n\u001b[1;32m 1012\u001b[0m encoding \u001b[38;5;241m=\u001b[39m io\u001b[38;5;241m.\u001b[39mtext_encoding(encoding)\n\u001b[0;32m-> 1013\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mio\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbuffering\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43merrors\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnewline\u001b[49m\u001b[43m)\u001b[49m\n",
"\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '/run/media/lambda/b86dccdc-f134-464b-a310-6575ee9ae85c/uf/cap-30/328_parallel.bin'"
]
}
],
2025-04-13 16:47:14 +08:00
"source": [
2025-06-10 20:35:01 +08:00
"input_path = Path(\n",
" \"/run/media/lambda/b86dccdc-f134-464b-a310-6575ee9ae85c/uf/cap-30/328_parallel.bin\"\n",
")\n",
2025-04-13 16:47:14 +08:00
"input_bytes = input_path.read_bytes()\n",
"mat = np.frombuffer(input_bytes, dtype=np.int16).copy()\n",
"mat = mat.reshape((256, 1502))\n",
"mat = cp.asarray(mat)\n",
"\n",
"dc = DeviceConfig(v2=1540, rows=1490)\n",
"pwi, _ = gen_pwi(direct_dist(dc, p=cp), dc)\n",
"\n",
"rfmat = RfMat(mat, RfFrameMeta(), RfSequenceMeta(shape=(256, 1502)))\n",
"rfmat = rfmat.dct(80, 1500)\n",
"rfmat = rfmat.call(pwi)\n",
2025-06-10 20:35:01 +08:00
"rfmat = rfmat.call(cp.asarray, order=\"C\")\n",
2025-04-13 16:47:14 +08:00
"rfmat = rfmat.argrelextrema()\n",
"rfmat = rfmat.conv_guass(b=18 * 0.01)\n",
"rfmat = rfmat.cpu()\n",
"\n",
"plt.figure(figsize=(40, 20))\n",
2025-06-10 20:35:01 +08:00
"plt.imshow(rfmat.m, cmap=\"grey\")"
]
2025-04-16 17:53:18 +08:00
},
{
2025-06-10 20:35:01 +08:00
"cell_type": "code",
"execution_count": 8,
"id": "4acfc7303fa58cf",
2025-04-16 17:53:18 +08:00
"metadata": {
"ExecuteTime": {
2025-04-16 23:31:52 +08:00
"end_time": "2025-04-16T13:41:32.147154Z",
"start_time": "2025-04-16T13:41:31.430625Z"
2025-04-16 17:53:18 +08:00
}
},
2025-04-16 18:11:03 +08:00
"outputs": [
{
"data": {
2025-06-10 20:35:01 +08:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAADGQAAAD3CAYAAADhCmN+AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs/UmMbMl1Ho5/N6fKrMzKzJpevfm9br5usiey6eZokYREyZZs07BgwMPGkG144YUMC4IX1sKWDS8MeCMLtheWAWvlhQUP+HkAaMuSKGugSIlic2iy53795pqzcqrKysq8/8XDF/XleRH33qz32PrTuAdIZOa9cSNOnDhx4kTc70REcRzHyCmnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyikzFf6kGcgpp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccvphozwgI6eccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKaU7KAzJyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5zmpDwgI6eccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKaU7KAzJyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5zmpDwgI6eccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKaU7KAzJyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5zmpDwgI6eccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKaU7KAzJyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn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
2025-04-16 18:11:03 +08:00
"text/plain": [
"<Figure size 4000x2000 with 1 Axes>"
2025-06-10 20:35:01 +08:00
]
2025-04-16 18:11:03 +08:00
},
"metadata": {},
"output_type": "display_data"
}
],
2025-06-10 20:35:01 +08:00
"source": [
"from flandre.utils.RfSequence import RfSequence\n",
"\n",
"rff = RfSequence(\"/home/lambda/source/scarlet/flandre/@DS/t111,S=(256 4002),M=PWI,U=80\")\n",
"RfMat.from_rf_frame(rff.frames[0]).time_gain_compensation_linear_max(2).jupyter()"
]
2025-04-16 17:53:18 +08:00
},
{
2025-06-10 20:35:01 +08:00
"cell_type": "code",
"execution_count": 2,
"id": "75e9c5f82736241",
2025-04-16 17:53:18 +08:00
"metadata": {
"ExecuteTime": {
2025-05-08 00:25:52 +08:00
"end_time": "2025-05-07T13:04:34.708223Z",
"start_time": "2025-05-07T13:04:34.699244Z"
2025-04-16 17:53:18 +08:00
}
},
2025-06-10 20:35:01 +08:00
"outputs": [
{
"ename": "NameError",
"evalue": "name 'RfSequence' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[2], line 8\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mflandre\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mMsg\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m ImageArgMsg\n\u001b[1;32m 3\u001b[0m arg \u001b[38;5;241m=\u001b[39m ImageArgMsg(\n\u001b[1;32m 4\u001b[0m sender\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[1;32m 5\u001b[0m t_start\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m,\n\u001b[1;32m 6\u001b[0m t_end\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m,\n\u001b[1;32m 7\u001b[0m )\n\u001b[0;32m----> 8\u001b[0m rff \u001b[38;5;241m=\u001b[39m \u001b[43mRfSequence\u001b[49m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/run/media/lambda/b86dccdc-f134-464b-a310-6575ee9ae85c/us/baby789,S=(256 6002),M=PWI,U=120\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 10\u001b[0m dc \u001b[38;5;241m=\u001b[39m DeviceConfig(v2\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1540\u001b[39m, rows\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1490\u001b[39m)\n\u001b[1;32m 11\u001b[0m pwi, _ \u001b[38;5;241m=\u001b[39m gen_pwi(direct_dist(dc, p\u001b[38;5;241m=\u001b[39mcp), dc)\n",
"\u001b[0;31mNameError\u001b[0m: name 'RfSequence' is not defined"
]
}
],
2025-05-08 00:25:52 +08:00
"source": [
"from flandre.utils.Msg import ImageArgMsg\n",
"\n",
"arg = ImageArgMsg(\n",
2025-06-10 20:35:01 +08:00
" sender=\"\",\n",
2025-05-08 00:25:52 +08:00
" t_start=0,\n",
" t_end=1,\n",
")\n",
2025-06-10 20:35:01 +08:00
"rff = RfSequence(\n",
" \"/run/media/lambda/b86dccdc-f134-464b-a310-6575ee9ae85c/us/baby789,S=(256 6002),M=PWI,U=120\"\n",
")\n",
2025-05-08 00:25:52 +08:00
"\n",
"dc = DeviceConfig(v2=1540, rows=1490)\n",
"pwi, _ = gen_pwi(direct_dist(dc, p=cp), dc)\n",
"\n",
"data = RfMat.from_rf_frame(rff.frames[0])\n",
"data = data.dct_center(arg.dct_center, arg.dct_bandwidth)\n",
"data = data.call(lambda m: m.astype(cp.int16))\n",
"data = data.call(pwi)\n",
2025-06-10 20:35:01 +08:00
"data = data.call(cp.asarray, order=\"C\")\n",
2025-05-08 00:25:52 +08:00
"data = data.argrelextrema()\n",
"data = data.conv_guass(b=arg.beta * 0.01)\n",
"data = data.crop_center(arg.t_start, arg.t_end)\n",
"data = data.time_gain_compensation_global((1 - arg.g8 * (1.0 / 128)) ** 2)\n",
2025-06-10 20:35:01 +08:00
"data.jupyter()"
]
2025-04-13 16:47:14 +08:00
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}