From 0bcec81ffb207da3636e917bafdf8b17b94f76b6 Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Tue, 6 Aug 2024 10:46:53 +0200 Subject: [PATCH] display one frame in notebook + cleanups --- .../paraview_hello_world.ipynb | 214 ++++++++++++++++-- 1 file changed, 192 insertions(+), 22 deletions(-) diff --git a/examples/PySDM_examples/Arabas_et_al_2015/paraview_hello_world.ipynb b/examples/PySDM_examples/Arabas_et_al_2015/paraview_hello_world.ipynb index 1485c06de..b7f848fa2 100644 --- a/examples/PySDM_examples/Arabas_et_al_2015/paraview_hello_world.ipynb +++ b/examples/PySDM_examples/Arabas_et_al_2015/paraview_hello_world.ipynb @@ -2,25 +2,28 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "ee889545", "metadata": {}, "outputs": [], "source": [ + "import subprocess\n", + "import glob\n", + "import os\n", + "import platform\n", + "\n", "from PySDM_examples.Arabas_et_al_2015 import Settings, SpinUp\n", "from PySDM_examples.Szumowski_et_al_1998 import Simulation, Storage\n", "from PySDM.exporters import VTKExporter\n", "from PySDM_examples.utils import ProgBarController\n", "from PySDM import products as PySDM_products\n", - "import subprocess\n", - "import glob\n", - "import os\n", - "import platform" + "\n", + "from IPython.display import IFrame, display" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "f0d2581f", "metadata": {}, "outputs": [], @@ -40,10 +43,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "74c00944", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "a670072d708f480092e35ea5acf98b3a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "FloatProgress(value=0.0, description='progress:', max=1.0)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "settings = Settings()\n", "storage = Storage()\n", @@ -66,10 +84,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "id": "2030d8e7", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Overwriting pvscript.py\n" + ] + } + ], "source": [ "%%writefile pvscript.py\n", "\n", @@ -113,7 +139,7 @@ "palette_invert = False\n", "color_range = [0, 10]\n", "logscale = False\n", - "title = var + ' [um]'\n", + "title = var + ' [μm]'\n", "\n", "calculator = pvs.Calculator(reader_attr)\n", "calculator.Function = f'{var}*{multiplier}'\n", @@ -155,7 +181,7 @@ "palette_invert = True\n", "color_range = [0, 10]\n", "logscale = False\n", - "title = var + ' [um]'\n", + "title = var + ' [μm]'\n", "\n", "display_prod = pvs.Show(reader_prod)\n", "display_prod.SetRepresentationType('Surface')\n", @@ -193,7 +219,9 @@ "cam.Dolly(1.45)\n", "\n", "# save animation to an Ogg Vorbis file\n", - "pvs.SaveAnimation('output/anim.ogv', view, FrameRate=10)\n", + "anim_file = 'output/anim.ogv'\n", + "print(anim_file)\n", + "pvs.SaveAnimation(anim_file, view, FrameRate=10)\n", "\n", "# save animation frame as pdfs\n", "exporters = pvs.servermanager.createModule('exporters')\n", @@ -202,10 +230,11 @@ "exporter.GL2PSdepthsortmethod = 'BSP sorting (slow, best)'\n", "for t in reader_prod.TimestepValues:\n", " view.ViewTime = t\n", + " exporter.FileName = f'output/anim_frame_{t}.pdf'\n", + " print(exporter.FileName)\n", " for reader in (reader_prod, reader_attr):\n", " reader.UpdatePipeline(t)\n", " exporter.SetView(view)\n", - " exporter.FileName = f'output/anim_frame_{t}.pdf'\n", " exporter.Write()" ] }, @@ -219,13 +248,114 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "id": "79477d3d", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "output/anim_frame_0.0.pdf\n", + "output/anim_frame_60.0.pdf\n", + "output/anim_frame_120.0.pdf\n", + "output/anim_frame_180.0.pdf\n", + "output/anim_frame_240.0.pdf\n", + "output/anim_frame_300.0.pdf\n", + "output/anim_frame_360.0.pdf\n", + "output/anim_frame_420.0.pdf\n", + "output/anim_frame_480.0.pdf\n", + "output/anim_frame_540.0.pdf\n", + "output/anim_frame_600.0.pdf\n", + "output/anim_frame_660.0.pdf\n", + "output/anim_frame_720.0.pdf\n", + "output/anim_frame_780.0.pdf\n", + "output/anim_frame_840.0.pdf\n", + "output/anim_frame_900.0.pdf\n", + "output/anim_frame_960.0.pdf\n", + "output/anim_frame_1020.0.pdf\n", + "output/anim_frame_1080.0.pdf\n", + "output/anim_frame_1140.0.pdf\n", + "output/anim_frame_1200.0.pdf\n", + "output/anim_frame_1260.0.pdf\n", + "output/anim_frame_1320.0.pdf\n", + "output/anim_frame_1380.0.pdf\n", + "output/anim_frame_1440.0.pdf\n", + "output/anim_frame_1500.0.pdf\n", + "output/anim_frame_1560.0.pdf\n", + "output/anim_frame_1620.0.pdf\n", + "output/anim_frame_1680.0.pdf\n", + "output/anim_frame_1740.0.pdf\n", + "output/anim_frame_1800.0.pdf\n", + "output/anim_frame_1860.0.pdf\n", + "output/anim_frame_1920.0.pdf\n", + "output/anim_frame_1980.0.pdf\n", + "output/anim_frame_2040.0.pdf\n", + "output/anim_frame_2100.0.pdf\n", + "output/anim_frame_2160.0.pdf\n", + "output/anim_frame_2220.0.pdf\n", + "output/anim_frame_2280.0.pdf\n", + "output/anim_frame_2340.0.pdf\n", + "output/anim_frame_2400.0.pdf\n", + "output/anim_frame_2460.0.pdf\n", + "output/anim_frame_2520.0.pdf\n", + "output/anim_frame_2580.0.pdf\n", + "output/anim_frame_2640.0.pdf\n", + "output/anim_frame_2700.0.pdf\n", + "output/anim_frame_2760.0.pdf\n", + "output/anim_frame_2820.0.pdf\n", + "output/anim_frame_2880.0.pdf\n", + "output/anim_frame_2940.0.pdf\n", + "output/anim_frame_3000.0.pdf\n", + "output/anim_frame_3060.0.pdf\n", + "output/anim_frame_3120.0.pdf\n", + "output/anim_frame_3180.0.pdf\n", + "output/anim_frame_3240.0.pdf\n", + "output/anim_frame_3300.0.pdf\n", + "output/anim_frame_3360.0.pdf\n", + "output/anim_frame_3420.0.pdf\n", + "output/anim_frame_3480.0.pdf\n", + "output/anim_frame_3540.0.pdf\n", + "output/anim_frame_3600.0.pdf\n", + "output/anim_frame_3660.0.pdf\n", + "output/anim_frame_3720.0.pdf\n", + "output/anim_frame_3780.0.pdf\n", + "output/anim_frame_3840.0.pdf\n", + "output/anim_frame_3900.0.pdf\n", + "output/anim_frame_3960.0.pdf\n", + "output/anim_frame_4020.0.pdf\n", + "output/anim_frame_4080.0.pdf\n", + "output/anim_frame_4140.0.pdf\n", + "output/anim_frame_4200.0.pdf\n", + "output/anim_frame_4260.0.pdf\n", + "output/anim_frame_4320.0.pdf\n", + "output/anim_frame_4380.0.pdf\n", + "output/anim_frame_4440.0.pdf\n", + "output/anim_frame_4500.0.pdf\n", + "output/anim_frame_4560.0.pdf\n", + "output/anim_frame_4620.0.pdf\n", + "output/anim_frame_4680.0.pdf\n", + "output/anim_frame_4740.0.pdf\n", + "output/anim_frame_4800.0.pdf\n", + "output/anim_frame_4860.0.pdf\n", + "output/anim_frame_4920.0.pdf\n", + "output/anim_frame_4980.0.pdf\n", + "output/anim_frame_5040.0.pdf\n", + "output/anim_frame_5100.0.pdf\n", + "output/anim_frame_5160.0.pdf\n", + "output/anim_frame_5220.0.pdf\n", + "output/anim_frame_5280.0.pdf\n", + "output/anim_frame_5340.0.pdf\n", + "output/anim_frame_5400.0.pdf\n" + ] + } + ], "source": [ "if not ('CI' in os.environ and platform.system() == 'Windows'):\n", - " subprocess.check_output(['pvpython', 'pvscript.py'], shell=True)" + " subprocess.run(\n", + " ('pvpython', '--force-offscreen-rendering', 'pvscript.py'),\n", + " check=True,\n", + " )" ] }, { @@ -238,20 +368,60 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 35, "id": "23e0cf61", "metadata": {}, "outputs": [], "source": [ "for file in glob.glob('output/anim_frame_*.pdf'):\n", - " subprocess.run(['ps2pdf', file, file+'_'], capture_output=True, check=True)\n", - " subprocess.call(['mv', file+'_', file])" + " subprocess.run(('ps2pdf', file, file + '_'), check=True, capture_output=True)\n", + " subprocess.run(('mv', file + '_', file), check=True)" + ] + }, + { + "cell_type": "markdown", + "id": "07365c36-7d4a-437f-b280-31259a35c1e3", + "metadata": {}, + "source": [ + "#### 5. display one frame in the notebook" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "f1a1db54-3516-4fce-8bb8-62f2c83a0b19", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(IFrame(\"./output/anim_frame_600.0.pdf\", width=1100, height=500))" ] }, { "cell_type": "code", "execution_count": null, - "id": "9d3e4a35", + "id": "d6dbad77-51d6-4dc3-b78e-15c75d8131d2", "metadata": {}, "outputs": [], "source": [] @@ -273,7 +443,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.4" + "version": "3.9.2" }, "vscode": { "interpreter": {