From 28dff4ed007cd29e875c0c9e25ad9bf2b786fa7d Mon Sep 17 00:00:00 2001 From: nataliejpg Date: Wed, 5 Dec 2018 17:28:46 +0100 Subject: [PATCH 1/8] plot saving to be specified in config.user --- qdev_wrappers/dataset/doNd.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/qdev_wrappers/dataset/doNd.py b/qdev_wrappers/dataset/doNd.py index 2d60c35a..6486afa8 100644 --- a/qdev_wrappers/dataset/doNd.py +++ b/qdev_wrappers/dataset/doNd.py @@ -274,8 +274,10 @@ def _save_image(datasaver) -> AxesTupleList: os.makedirs(png_dir, exist_ok=True) os.makedirs(pdf_dif, exist_ok=True) - save_pdf = True - save_png = True + save_settings = config.user.get( + 'plot_save', {'pdf': True, 'png': True}) + save_pdf = save_settings['pdf'] + save_png = save_settings['png'] for i, ax in enumerate(axes): if save_pdf: From af2bf27da31e0068e565c3fccf922b299c77bafd Mon Sep 17 00:00:00 2001 From: nataliejpg Date: Wed, 5 Dec 2018 17:42:21 +0100 Subject: [PATCH 2/8] make requirement for config.user section to be flatter --- qdev_wrappers/dataset/doNd.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/qdev_wrappers/dataset/doNd.py b/qdev_wrappers/dataset/doNd.py index 6486afa8..fb264b91 100644 --- a/qdev_wrappers/dataset/doNd.py +++ b/qdev_wrappers/dataset/doNd.py @@ -274,10 +274,8 @@ def _save_image(datasaver) -> AxesTupleList: os.makedirs(png_dir, exist_ok=True) os.makedirs(pdf_dif, exist_ok=True) - save_settings = config.user.get( - 'plot_save', {'pdf': True, 'png': True}) - save_pdf = save_settings['pdf'] - save_png = save_settings['png'] + save_pdf = config.user.get('save_pdf', True) + save_png = config.user.get('save_png', True) for i, ax in enumerate(axes): if save_pdf: From d47932bf118fe6ea406a176661fa5279fbebc53f Mon Sep 17 00:00:00 2001 From: nataliejpg Date: Wed, 5 Dec 2018 17:47:30 +0100 Subject: [PATCH 3/8] remove plottr import from doNd example notebook --- examples/dataset/Example of doND wrappers.ipynb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/dataset/Example of doND wrappers.ipynb b/examples/dataset/Example of doND wrappers.ipynb index 3d977ab3..cd08d90f 100644 --- a/examples/dataset/Example of doND wrappers.ipynb +++ b/examples/dataset/Example of doND wrappers.ipynb @@ -24,7 +24,6 @@ "from qcodes.dataset.database import initialise_database\n", "from qcodes.dataset.experiment_container import new_experiment\n", "from qcodes.dataset.plotting import plot_by_id\n", - "import plottr\n", "import qcodes.config\n", "from qcodes.tests.instrument_mocks import DummyChannelInstrument" ] @@ -377,7 +376,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.7" + "version": "3.6.6" } }, "nbformat": 4, From 000a3993591224854c687985594431ee5e52481b Mon Sep 17 00:00:00 2001 From: nataliejpg Date: Mon, 8 Apr 2019 17:03:53 +0200 Subject: [PATCH 4/8] make save_image more flexible so that it can be used outside of the doNd functions --- qdev_wrappers/dataset/doNd.py | 69 ++++++++++++++++++++++++----------- 1 file changed, 47 insertions(+), 22 deletions(-) diff --git a/qdev_wrappers/dataset/doNd.py b/qdev_wrappers/dataset/doNd.py index fb264b91..0358ec64 100644 --- a/qdev_wrappers/dataset/doNd.py +++ b/qdev_wrappers/dataset/doNd.py @@ -54,7 +54,16 @@ def do0d(*param_meas: Union[_BaseParameter, Callable[[], None]], dataid = datasaver.run_id if do_plot is True: - ax, cbs = _save_image(datasaver) + plt.ioff() + start = time.time() + axes, cbs = plot_by_id(dataid) + stop = time.time() + print(f"plot by id took {stop-start}") + plt.ion() + experiment_name = datasaver._dataset.exp_name + sample_name = datasaver._dataset.sample_name + _save_image(axes, experiment_name=experiment_name, + sample_name=sample_name, run_id=dataid) else: ax = None, cbs = None @@ -136,7 +145,16 @@ def do1d(param_set: _BaseParameter, start: number, stop: number, dataid = datasaver.run_id # convenient to have for plotting if do_plot is True: - ax, cbs = _save_image(datasaver) + plt.ioff() + start = time.time() + axes, cbs = plot_by_id(dataid) + stop = time.time() + print(f"plot by id took {stop-start}") + plt.ion() + experiment_name = datasaver._dataset.exp_name + sample_name = datasaver._dataset.sample_name + _save_image(axes, experiment_name=experiment_name, + sample_name=sample_name, run_id=dataid) else: ax = None, cbs = None @@ -235,7 +253,16 @@ def do2d(param_set1: _BaseParameter, start1: number, stop1: number, dataid = datasaver.run_id if do_plot is True: - ax, cbs = _save_image(datasaver) + plt.ioff() + start = time.time() + axes, cbs = plot_by_id(dataid) + stop = time.time() + print(f"plot by id took {stop-start}") + plt.ion() + experiment_name = datasaver._dataset.exp_name + sample_name = datasaver._dataset.sample_name + _save_image(axes, experiment_name=experiment_name, + sample_name=sample_name, run_id=dataid) else: ax = None, cbs = None @@ -245,7 +272,8 @@ def do2d(param_set1: _BaseParameter, start1: number, stop1: number, return dataid, ax, cbs -def _save_image(datasaver) -> AxesTupleList: +def save_image(axes, experiment_name=None, sample_name=None, + run_id=None, name_extension=None) -> AxesTupleList: """ Save the plots created by datasaver as pdf and png @@ -254,35 +282,32 @@ def _save_image(datasaver) -> AxesTupleList: as plot. """ - plt.ioff() - dataid = datasaver.run_id - start = time.time() - axes, cbs = plot_by_id(dataid) - stop = time.time() - print(f"plot by id took {stop-start}") - + run_id = run_id or 0 mainfolder = config.user.mainfolder - experiment_name = datasaver._dataset.exp_name - sample_name = datasaver._dataset.sample_name - storage_dir = os.path.join(mainfolder, experiment_name, sample_name) - os.makedirs(storage_dir, exist_ok=True) - - png_dir = os.path.join(storage_dir, 'png') - pdf_dif = os.path.join(storage_dir, 'pdf') + if experiment_name and sample_name: + storage_dir = os.path.join(mainfolder, experiment_name, sample_name) + os.makedirs(storage_dir, exist_ok=True) + png_dir = os.path.join(storage_dir, 'png') + pdf_dir = os.path.join(storage_dir, 'pdf') + else: + png_dir = 'png' + pdf_dir = 'pdf' os.makedirs(png_dir, exist_ok=True) - os.makedirs(pdf_dif, exist_ok=True) + os.makedirs(pdf_dir, exist_ok=True) save_pdf = config.user.get('save_pdf', True) save_png = config.user.get('save_png', True) for i, ax in enumerate(axes): + filename = f'{run_id}_{i}' + if name_extension is not None: + filename += name_extension if save_pdf: - full_path = os.path.join(pdf_dif, f'{dataid}_{i}.pdf') + full_path = os.path.join(pdf_dir, filename + '.pdf') ax.figure.savefig(full_path, dpi=500) if save_png: - full_path = os.path.join(png_dir, f'{dataid}_{i}.png') + full_path = os.path.join(png_dir, filename + '.png') ax.figure.savefig(full_path, dpi=500) - plt.ion() return axes, cbs From 5cbebbbf1a6aa68bc2cfae86dabbd9023afc747a Mon Sep 17 00:00:00 2001 From: nataliejpg Date: Mon, 8 Apr 2019 17:27:29 +0200 Subject: [PATCH 5/8] fix bugs where old private function name used and name extension added in less good place --- qdev_wrappers/dataset/doNd.py | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/qdev_wrappers/dataset/doNd.py b/qdev_wrappers/dataset/doNd.py index 0358ec64..40a8cb4e 100644 --- a/qdev_wrappers/dataset/doNd.py +++ b/qdev_wrappers/dataset/doNd.py @@ -62,13 +62,13 @@ def do0d(*param_meas: Union[_BaseParameter, Callable[[], None]], plt.ion() experiment_name = datasaver._dataset.exp_name sample_name = datasaver._dataset.sample_name - _save_image(axes, experiment_name=experiment_name, - sample_name=sample_name, run_id=dataid) + save_image(axes, experiment_name=experiment_name, + sample_name=sample_name, run_id=dataid) else: - ax = None, + axes = None, cbs = None - return dataid, ax, cbs + return dataid, axes, cbs def do1d(param_set: _BaseParameter, start: number, stop: number, @@ -153,15 +153,15 @@ def do1d(param_set: _BaseParameter, start: number, stop: number, plt.ion() experiment_name = datasaver._dataset.exp_name sample_name = datasaver._dataset.sample_name - _save_image(axes, experiment_name=experiment_name, - sample_name=sample_name, run_id=dataid) + save_image(axes, experiment_name=experiment_name, + sample_name=sample_name, run_id=dataid) else: - ax = None, + axes = None, cbs = None if interrupted: raise KeyboardInterrupt - return dataid, ax, cbs + return dataid, axes, cbs def do2d(param_set1: _BaseParameter, start1: number, stop1: number, @@ -261,15 +261,15 @@ def do2d(param_set1: _BaseParameter, start1: number, stop1: number, plt.ion() experiment_name = datasaver._dataset.exp_name sample_name = datasaver._dataset.sample_name - _save_image(axes, experiment_name=experiment_name, - sample_name=sample_name, run_id=dataid) + save_image(axes, experiment_name=experiment_name, + sample_name=sample_name, run_id=dataid) else: - ax = None, + axes = None, cbs = None if interrupted: raise KeyboardInterrupt - return dataid, ax, cbs + return dataid, axes, cbs def save_image(axes, experiment_name=None, sample_name=None, @@ -301,13 +301,13 @@ def save_image(axes, experiment_name=None, sample_name=None, save_png = config.user.get('save_png', True) for i, ax in enumerate(axes): - filename = f'{run_id}_{i}' + filename = f'{run_id}' if name_extension is not None: - filename += name_extension + filename += '_' + name_extension + filename += f'_{i}' if save_pdf: full_path = os.path.join(pdf_dir, filename + '.pdf') ax.figure.savefig(full_path, dpi=500) if save_png: full_path = os.path.join(png_dir, filename + '.png') ax.figure.savefig(full_path, dpi=500) - return axes, cbs From 66679ce2e10ae85ca346ac0b797e647707c335a6 Mon Sep 17 00:00:00 2001 From: nataliejpg Date: Tue, 9 Apr 2019 18:24:38 +0200 Subject: [PATCH 6/8] change kwarg experiment_name to shorter (and used elsewhere) exp_name and allow other kwargs --- qdev_wrappers/dataset/doNd.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/qdev_wrappers/dataset/doNd.py b/qdev_wrappers/dataset/doNd.py index 40a8cb4e..b68e3a07 100644 --- a/qdev_wrappers/dataset/doNd.py +++ b/qdev_wrappers/dataset/doNd.py @@ -60,9 +60,9 @@ def do0d(*param_meas: Union[_BaseParameter, Callable[[], None]], stop = time.time() print(f"plot by id took {stop-start}") plt.ion() - experiment_name = datasaver._dataset.exp_name + exp_name = datasaver._dataset.exp_name sample_name = datasaver._dataset.sample_name - save_image(axes, experiment_name=experiment_name, + save_image(axes, exp_name=exp_name, sample_name=sample_name, run_id=dataid) else: axes = None, @@ -151,9 +151,9 @@ def do1d(param_set: _BaseParameter, start: number, stop: number, stop = time.time() print(f"plot by id took {stop-start}") plt.ion() - experiment_name = datasaver._dataset.exp_name + exp_name = datasaver._dataset.exp_name sample_name = datasaver._dataset.sample_name - save_image(axes, experiment_name=experiment_name, + save_image(axes, exp_name=exp_name, sample_name=sample_name, run_id=dataid) else: axes = None, @@ -259,9 +259,9 @@ def do2d(param_set1: _BaseParameter, start1: number, stop1: number, stop = time.time() print(f"plot by id took {stop-start}") plt.ion() - experiment_name = datasaver._dataset.exp_name + exp_name = datasaver._dataset.exp_name sample_name = datasaver._dataset.sample_name - save_image(axes, experiment_name=experiment_name, + save_image(axes, exp_name=exp_name, sample_name=sample_name, run_id=dataid) else: axes = None, @@ -272,8 +272,8 @@ def do2d(param_set1: _BaseParameter, start1: number, stop1: number, return dataid, axes, cbs -def save_image(axes, experiment_name=None, sample_name=None, - run_id=None, name_extension=None) -> AxesTupleList: +def save_image(axes, exp_name=None, sample_name=None, + run_id=None, name_extension=None, **kwargs) -> AxesTupleList: """ Save the plots created by datasaver as pdf and png @@ -285,8 +285,8 @@ def save_image(axes, experiment_name=None, sample_name=None, run_id = run_id or 0 mainfolder = config.user.mainfolder - if experiment_name and sample_name: - storage_dir = os.path.join(mainfolder, experiment_name, sample_name) + if exp_name and sample_name: + storage_dir = os.path.join(mainfolder, exp_name, sample_name) os.makedirs(storage_dir, exist_ok=True) png_dir = os.path.join(storage_dir, 'png') pdf_dir = os.path.join(storage_dir, 'pdf') From 25f38d12af8df103e0ea83130ce6573ef568f254 Mon Sep 17 00:00:00 2001 From: nataliejpg Date: Sat, 13 Apr 2019 10:24:12 +0200 Subject: [PATCH 7/8] resetting doND example to master version --- examples/dataset/Example of doND wrappers.ipynb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/dataset/Example of doND wrappers.ipynb b/examples/dataset/Example of doND wrappers.ipynb index cd08d90f..3d977ab3 100644 --- a/examples/dataset/Example of doND wrappers.ipynb +++ b/examples/dataset/Example of doND wrappers.ipynb @@ -24,6 +24,7 @@ "from qcodes.dataset.database import initialise_database\n", "from qcodes.dataset.experiment_container import new_experiment\n", "from qcodes.dataset.plotting import plot_by_id\n", + "import plottr\n", "import qcodes.config\n", "from qcodes.tests.instrument_mocks import DummyChannelInstrument" ] @@ -376,7 +377,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.6" + "version": "3.6.7" } }, "nbformat": 4, From 1103d537091973d14edc6b2c3a3c5d05556b48c7 Mon Sep 17 00:00:00 2001 From: nataliejpg Date: Sat, 13 Apr 2019 10:27:50 +0200 Subject: [PATCH 8/8] run example notebook to check i didnt break anything and make plottr import optional --- .../dataset/Example of doND wrappers.ipynb | 71 +++++++++++-------- 1 file changed, 41 insertions(+), 30 deletions(-) diff --git a/examples/dataset/Example of doND wrappers.ipynb b/examples/dataset/Example of doND wrappers.ipynb index 3d977ab3..1973d586 100644 --- a/examples/dataset/Example of doND wrappers.ipynb +++ b/examples/dataset/Example of doND wrappers.ipynb @@ -11,7 +11,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ @@ -24,7 +24,10 @@ "from qcodes.dataset.database import initialise_database\n", "from qcodes.dataset.experiment_container import new_experiment\n", "from qcodes.dataset.plotting import plot_by_id\n", - "import plottr\n", + "try:\n", + " import plottr\n", + "except ModuleNotFoundError:\n", + " pass\n", "import qcodes.config\n", "from qcodes.tests.instrument_mocks import DummyChannelInstrument" ] @@ -46,17 +49,25 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Upgrading database: : 0it [00:00, ?it/s]\n", + "Upgrading database: : 0it [00:00, ?it/s]\n" + ] + }, { "data": { "text/plain": [ - "doNd-tutorial#no sample#10@C:\\Users\\jenielse/experiments.db\n", - "-----------------------------------------------------------" + "doNd-tutorial#no sample#1@/Users/natalie/experiments.db\n", + "-------------------------------------------------------" ] }, - "execution_count": 3, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -68,7 +79,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -81,7 +92,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -100,7 +111,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -120,15 +131,15 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Starting experimental run with id: 27\n", - "plot by id took 0.19638419151306152\n" + "Starting experimental run with id: 1\n", + "plot by id took 0.037342071533203125\n" ] } ], @@ -138,7 +149,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": { "scrolled": false }, @@ -147,8 +158,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Starting experimental run with id: 28\n", - "plot by id took 1.528921365737915\n" + "Starting experimental run with id: 2\n", + "plot by id took 0.3784291744232178\n" ] } ], @@ -175,7 +186,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -197,7 +208,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -205,7 +216,7 @@ "output_type": "stream", "text": [ "called before the loop\n", - "Starting experimental run with id: 29\n", + "Starting experimental run with id: 6\n", "called at each step\n", "called at each step\n", "called at each step\n", @@ -217,7 +228,7 @@ "called at each step\n", "called at each step\n", "called after the loop\n", - "plot by id took 0.1400294303894043\n" + "plot by id took 0.03285670280456543\n" ] } ], @@ -228,7 +239,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -236,7 +247,7 @@ "output_type": "stream", "text": [ "called before the loop\n", - "Starting experimental run with id: 30\n", + "Starting experimental run with id: 7\n", "called before inner loop\n", "called at each step\n", "called at each step\n", @@ -250,7 +261,7 @@ "called at each step\n", "called after inner loop\n", "called after the loop\n", - "plot by id took 0.18652963638305664\n" + "plot by id took 0.06169295310974121\n" ] } ], @@ -272,7 +283,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -281,15 +292,15 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Starting experimental run with id: 31\n", - "plot by id took 0.15599322319030762\n" + "Starting experimental run with id: 8\n", + "plot by id took 0.03528785705566406\n" ] } ], @@ -328,7 +339,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -337,15 +348,15 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Starting experimental run with id: 35\n", - "plot by id took 0.07499814033508301\n" + "Starting experimental run with id: 9\n", + "plot by id took 0.045063018798828125\n" ] } ],