Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sweeping magnet in spherical coordinates can fail #543

Closed
MerlinSmiles opened this issue Mar 27, 2017 · 8 comments
Closed

Sweeping magnet in spherical coordinates can fail #543

MerlinSmiles opened this issue Mar 27, 2017 · 8 comments

Comments

@MerlinSmiles
Copy link
Contributor

I have an issue with a 3-axis magnet (a driver not online yet, but basically using the same spherical to cartesian conversion as the Mercury IPS)

When i sweep a value in the spherical coordinates, lets say the radius, the driver will use \theta and \phi values from cache, and calculate the xyz field. That works fine, unless the t and p values are updated. That happens i.e. when the user actually reads the spherical coordinates, if a magnet.rtp.get() is called at every sweep point, the internal r,t,p values will change eventually (right away, or after going through zero, or...).

The issue is basically that we have many representations of one xyz point in the spherical system. And I have no idea how to ensure that the other two variables will not change during a given sweep.

The only way to make this not happen (that i can come up with) would be to just not ask for spherical values during a sweep.

Anyone with any ideas?
@core @AdriaanRol @peendebak <- just tagging because of some reason...

@jenshnielsen
Copy link
Collaborator

I guess we need to run the theta,phi coordinates throung a normaliser i.e. from whatever the instrument returns to theta=[0, pi], phi=[0, 2*pi] before updating the saved values? I guess we also have to somehow handle the poles at theta=0 specially as phi is essentially undefined here.

@MerlinSmiles
Copy link
Contributor Author

yes, I do have those limitations in place, but the conversions make the radius always positive, and just from the values of xyz we dont know if it is expected to be negative.

spauka added a commit to spauka/Qcodes that referenced this issue Apr 11, 2017
Commits a channelized version of the Harvard DecaDAC driver
using the new channelization implementation. Note that this driver
at the present time also fixes a number of open bugs in the previous
driver, including occasional crashes (microsoft#546), incorrectly reading
DAC voltages (microsoft#563), reset (microsoft#478).

This commit also adds a number of new features to the driver
including:
 - Feature and version detection
 - Access to calibrated high-resolution mode of DAC
 - Parameter read from memory
 - Validation of writes

Closes: microsoft#478, microsoft#543, microsoft#563
@giulioungaretti
Copy link
Contributor

@MerlinSmiles what/where is the cache ?

@MerlinSmiles
Copy link
Contributor Author

MerlinSmiles commented Apr 11, 2017

@giulioungaretti
that sweeping the radius makes a wrong sweep if you ask for the field, as it will update the internal ange values, and flip around the sphere, look at Bz here:
image
This is what it should look like:
image

apart from the different direction for the two specific sweeps.

@giulioungaretti
Copy link
Contributor

@MerlinSmiles internal meaning the magnet controller ? If so, yes the only way is to forbid asking the field.

@MerlinSmiles
Copy link
Contributor Author

MerlinSmiles commented Apr 12, 2017 via email

@giulioungaretti
Copy link
Contributor

no :D but we can try !

@MerlinSmiles
Copy link
Contributor Author

Not sure that we need to, maybe just increase awareness of that situation...

bors bot added a commit that referenced this issue Sep 29, 2022
4662: Update pytest-mock requirement from ~=3.8.2 to ~=3.9.0 r=jenshnielsen a=dependabot[bot]

Updates the requirements on [pytest-mock](https://github.com/pytest-dev/pytest-mock) to permit the latest version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-mock/releases">pytest-mock's releases</a>.</em></p>
<blockquote>
<h2>v3.9.0</h2>
<h1>Releases</h1>
<h2>3.9.0 (2022-09-28)</h2>
<ul>
<li>Expose <code>NonCallableMagicMock</code> via the <code>mocker</code> fixture (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/pull/318">#318</a>).</li>
</ul>
<h2>3.8.2 (2022-07-05)</h2>
<ul>
<li>Fixed <code>AsyncMock</code> support for Python 3.7+ in <code>mocker.async_stub</code> (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/pull/302">#302</a>).</li>
</ul>
<h2>3.8.1 (2022-06-24)</h2>
<ul>
<li>Fixed regression caused by an explicit <code>mock</code> dependency in the code (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/issues/298">#298</a>).</li>
</ul>
<h2>3.8.0 (2022-06-24)</h2>
<ul>
<li>Add <code>MockerFixture.async_mock</code> method. Thanks <a href="https://github.com/PerchunPak"><code>`@​PerchunPak</code></a>` for the PR (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/pull/296">#296</a>).</li>
</ul>
<h2>3.7.0 (2022-01-28)</h2>
<ul>
<li>Python 3.10 now officially supported.</li>
<li>Dropped support for Python 3.6.</li>
</ul>
<h2>3.6.1 (2021-05-06)</h2>
<ul>
<li>Fix <code>mocker.resetall()</code> when using <code>mocker.spy()</code> (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/issues/237">#237</a>). Thanks <a href="https://github.com/blaxter"><code>`@​blaxter</code></a>` for the report and <a href="https://github.com/shadycuz"><code>`@​shadycuz</code></a>` for the PR.</li>
</ul>
<h2>3.6.0 (2021-04-24)</h2>
<ul>
<li>pytest-mock no longer supports Python 3.5.</li>
<li>Correct type annotations for <code>mocker.patch.object</code> to also include the string form.
Thanks <a href="https://github.com/plannigan"><code>`@​plannigan</code></a>` for the PR (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/pull/235">#235</a>).</li>
<li><code>reset_all</code> now supports <code>return_value</code> and <code>side_effect</code> keyword arguments. Thanks <a href="https://github.com/alex-marty"><code>`@​alex-marty</code></a>` for the PR (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/pull/214">#214</a>).</li>
</ul>
<h2>3.5.1 (2021-01-10)</h2>
<ul>
<li>Use <code>inspect.getattr_static</code> instead of resorting to <code>object.__getattribute__</code>
magic. This should better comply with objects which implement a custom descriptor
protocol. Thanks <a href="https://github.com/yesthesoup"><code>`@​yesthesoup</code></a>` for the PR (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/pull/224">#224</a>).</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-mock/blob/main/CHANGELOG.rst">pytest-mock's changelog</a>.</em></p>
<blockquote>
<h2>3.9.0 (2022-09-28)</h2>
<ul>
<li>Expose <code>NonCallableMagicMock</code> via the <code>mocker</code> fixture (<code>[#318](https://github.com/pytest-dev/pytest-mock/issues/318)</code>_).</li>
</ul>
<p>.. _<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/issues/318">#318</a>: <a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/pull/318">pytest-dev/pytest-mock#318</a></p>
<h2>3.8.2 (2022-07-05)</h2>
<ul>
<li>Fixed <code>AsyncMock</code> support for Python 3.7+ in <code>mocker.async_stub</code> (<code>[#302](https://github.com/pytest-dev/pytest-mock/issues/302)</code>_).</li>
</ul>
<p>.. _<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/issues/302">#302</a>: <a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/pull/302">pytest-dev/pytest-mock#302</a></p>
<h2>3.8.1 (2022-06-24)</h2>
<ul>
<li>Fixed regression caused by an explicit <code>mock</code> dependency in the code (<code>[#298](https://github.com/pytest-dev/pytest-mock/issues/298)</code>_).</li>
</ul>
<p>.. _<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/issues/298">#298</a>: <a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/issues/298">pytest-dev/pytest-mock#298</a></p>
<h2>3.8.0 (2022-06-24)</h2>
<ul>
<li>Add <code>MockerFixture.async_mock</code> method. Thanks <code>`@PerchunPak</code>_` for the PR (<code>[#296](https://github.com/pytest-dev/pytest-mock/issues/296)</code>_).</li>
</ul>
<p>.. _<a href="https://github.com/PerchunPak"><code>`@​PerchunPak</code></a>:` <a href="https://github.com/PerchunPak">https://github.com/PerchunPak</a>
.. _<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/issues/296">#296</a>: <a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/pull/296">pytest-dev/pytest-mock#296</a></p>
<h2>3.7.0 (2022-01-28)</h2>
<ul>
<li>Python 3.10 now officially supported.</li>
<li>Dropped support for Python 3.6.</li>
</ul>
<h2>3.6.1 (2021-05-06)</h2>
<ul>
<li>Fix <code>mocker.resetall()</code> when using <code>mocker.spy()</code> (<code>[#237](https://github.com/pytest-dev/pytest-mock/issues/237)</code><em>). Thanks <code>`@blaxter</code></em>` for the report and <code>`@shadycuz</code>_` for the PR.</li>
</ul>
<p>.. _<a href="https://github.com/blaxter"><code>`@​blaxter</code></a>:` <a href="https://github.com/blaxter">https://github.com/blaxter</a>
.. _<a href="https://github.com/shadycuz"><code>`@​shadycuz</code></a>:` <a href="https://github.com/shadycuz">https://github.com/shadycuz</a>
.. _<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/issues/237">#237</a>: <a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/issues/237">pytest-dev/pytest-mock#237</a></p>
<h2>3.6.0 (2021-04-24)</h2>
<ul>
<li>
<p>pytest-mock no longer supports Python 3.5.</p>
</li>
<li>
<p>Correct type annotations for <code>mocker.patch.object</code> to also include the string form.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/pytest-dev/pytest-mock/commit/64a34f64215d779dc0384acc3cdd5a164544a60a"><code>64a34f6</code></a> Update CHANGELOG for 3.9.0</li>
<li><a href="https://github.com/pytest-dev/pytest-mock/commit/4e31630aad7dca66258f232e6b62754dadd79f2b"><code>4e31630</code></a> Add test for NonCallableMagicMock</li>
<li><a href="https://github.com/pytest-dev/pytest-mock/commit/247b9d46e6fdfc696257c4daade9c08a195c45aa"><code>247b9d4</code></a> Expose NonCallableMagicMock in MockerFixture</li>
<li><a href="https://github.com/pytest-dev/pytest-mock/commit/0fd7fea3eece2e2dd09affeed39f0e3a50295f0d"><code>0fd7fea</code></a> Update link to notes about usage as context manager (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/issues/313">#313</a>)</li>
<li><a href="https://github.com/pytest-dev/pytest-mock/commit/903b97283d1c8271596d748a9a8eef5038f96bb6"><code>903b972</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/issues/311">#311</a> from pytest-dev/pre-commit-ci-update-config</li>
<li><a href="https://github.com/pytest-dev/pytest-mock/commit/a5a33ac9461e469736ed0d2ceae135f2cfb3fad0"><code>a5a33ac</code></a> [pre-commit.ci] pre-commit autoupdate</li>
<li><a href="https://github.com/pytest-dev/pytest-mock/commit/d01b267622b8ae21f977115edc624638da0f2508"><code>d01b267</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/issues/309">#309</a> from pytest-dev/pre-commit-ci-update-config</li>
<li><a href="https://github.com/pytest-dev/pytest-mock/commit/736f2ab0caa4a51544627773818d1ef4822ab31c"><code>736f2ab</code></a> [pre-commit.ci] pre-commit autoupdate</li>
<li><a href="https://github.com/pytest-dev/pytest-mock/commit/59b60cb85116016e2e5e458d00b8ca3c5b267178"><code>59b60cb</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pytest-dev/pytest-mock/issues/308">#308</a> from juliangilbey/add-static-dir</li>
<li><a href="https://github.com/pytest-dev/pytest-mock/commit/305e0829c4100d1316dd30e91d978e56602cf893"><code>305e082</code></a> Add docs/_static directory to allow sphinx-build to work without warnings</li>
<li>Additional commits viewable in <a href="https://github.com/pytest-dev/pytest-mock/compare/v3.8.2...v3.9.0">compare view</a></li>
</ul>
</details>
<br />


You can trigger a rebase of this PR by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

4663: Update pytest-cov requirement from ~=3.0.0 to ~=4.0.0 r=jenshnielsen a=dependabot[bot]

Updates the requirements on [pytest-cov](https://github.com/pytest-dev/pytest-cov) to permit the latest version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst">pytest-cov's changelog</a>.</em></p>
<blockquote>
<h2>4.0.0 (2022-09-28)</h2>
<p><strong>Note that this release drops support for multiprocessing.</strong></p>
<ul>
<li>
<p><code>--cov-fail-under</code> no longer causes <code>pytest --collect-only</code> to fail
Contributed by Zac Hatfield-Dodds in <code>[#511](pytest-dev/pytest-cov#511) &lt;https://github.com/pytest-dev/pytest-cov/pull/511&gt;</code>_.</p>
</li>
<li>
<p>Dropped support for multiprocessing (mostly because <code>issue 82408 &lt;https://github.com/python/cpython/issues/82408&gt;</code>_). This feature was
mostly working but very broken in certain scenarios and made the test suite very flaky and slow.</p>
<p>There is builtin multiprocessing support in coverage and you can migrate to that. All you need is this in your
<code>.coveragerc</code>::</p>
<p>[run]
concurrency = multiprocessing
parallel = true
sigterm = true</p>
</li>
<li>
<p>Fixed deprecation in <code>setup.py</code> by trying to import setuptools before distutils.
Contributed by Ben Greiner in <code>[#545](pytest-dev/pytest-cov#545) &lt;https://github.com/pytest-dev/pytest-cov/pull/545&gt;</code>_.</p>
</li>
<li>
<p>Removed undesirable new lines that were displayed while reporting was disabled.
Contributed by Delgan in <code>[#540](pytest-dev/pytest-cov#540) &lt;https://github.com/pytest-dev/pytest-cov/pull/540&gt;</code>_.</p>
</li>
<li>
<p>Documentation fixes.
Contributed by Andre Brisco in <code>[#543](pytest-dev/pytest-cov#543) &lt;https://github.com/pytest-dev/pytest-cov/pull/543&gt;</code>_
and Colin O'Dell in <code>[#525](pytest-dev/pytest-cov#525) &lt;https://github.com/pytest-dev/pytest-cov/pull/525&gt;</code>_.</p>
</li>
<li>
<p>Added support for LCOV output format via <code>--cov-report=lcov</code>. Only works with coverage 6.3+.
Contributed by Christian Fetzer in <code>[#536](pytest-dev/pytest-cov#536) &lt;https://github.com/pytest-dev/pytest-cov/issues/536&gt;</code>_.</p>
</li>
<li>
<p>Modernized pytest hook implementation.
Contributed by Bruno Oliveira in <code>[#549](pytest-dev/pytest-cov#549) &lt;https://github.com/pytest-dev/pytest-cov/pull/549&gt;</code>_
and Ronny Pfannschmidt in <code>[#550](pytest-dev/pytest-cov#550) &lt;https://github.com/pytest-dev/pytest-cov/pull/550&gt;</code>_.</p>
</li>
</ul>
<h2>3.0.0 (2021-10-04)</h2>
<p><strong>Note that this release drops support for Python 2.7 and Python 3.5.</strong></p>
<ul>
<li>Added support for Python 3.10 and updated various test dependencies.
Contributed by Hugo van Kemenade in
<code>[#500](pytest-dev/pytest-cov#500) &lt;https://github.com/pytest-dev/pytest-cov/pull/500&gt;</code>_.</li>
<li>Switched from Travis CI to GitHub Actions. Contributed by Hugo van Kemenade in
<code>[#494](pytest-dev/pytest-cov#494) &lt;https://github.com/pytest-dev/pytest-cov/pull/494&gt;</code>_ and
<code>[#495](pytest-dev/pytest-cov#495) &lt;https://github.com/pytest-dev/pytest-cov/pull/495&gt;</code>_.</li>
<li>Add a <code>--cov-reset</code> CLI option.
Contributed by Danilo Šegan in
<code>[#459](pytest-dev/pytest-cov#459) &lt;https://github.com/pytest-dev/pytest-cov/pull/459&gt;</code>_.</li>
<li>Improved validation of <code>--cov-fail-under</code> CLI option.
Contributed by ... Ronny Pfannschmidt's desire for skark in
<code>[#480](pytest-dev/pytest-cov#480) &lt;https://github.com/pytest-dev/pytest-cov/pull/480&gt;</code>_.</li>
<li>Dropped Python 2.7 support.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/pytest-dev/pytest-cov/commit/28db055bebbf3ee016a2144c8b69dd7b80b48cc5"><code>28db055</code></a> Bump version: 3.0.0 → 4.0.0</li>
<li><a href="https://github.com/pytest-dev/pytest-cov/commit/57e9354a86f658556fe6f15f07625c4b9a9ddf53"><code>57e9354</code></a> Really update the changelog.</li>
<li><a href="https://github.com/pytest-dev/pytest-cov/commit/56b810b91c9ae15d1462633c6a8a1b522ebf8e65"><code>56b810b</code></a> Update chagelog.</li>
<li><a href="https://github.com/pytest-dev/pytest-cov/commit/f7fced579e36b72b57e14768026467e4c4511a40"><code>f7fced5</code></a> Add support for LCOV output</li>
<li><a href="https://github.com/pytest-dev/pytest-cov/commit/1211d3134bb74abb7b00c3c2209091aaab440417"><code>1211d31</code></a> Fix flake8 error</li>
<li><a href="https://github.com/pytest-dev/pytest-cov/commit/b077753f5d9d200815fe500d0ef23e306784e65b"><code>b077753</code></a> Use modern approach to specify hook options</li>
<li><a href="https://github.com/pytest-dev/pytest-cov/commit/00713b3fec90cb8c98a9e4bfb3212e574c08e67b"><code>00713b3</code></a> removed incorrect docs on <code>data_file</code>.</li>
<li><a href="https://github.com/pytest-dev/pytest-cov/commit/b3dda36fddd3ca75689bb3645cd320aa8392aaf3"><code>b3dda36</code></a> Improve workflow with a collecting status check. (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-cov/issues/548">#548</a>)</li>
<li><a href="https://github.com/pytest-dev/pytest-cov/commit/218419f665229d61356f1eea3ddc8e18aa21f87c"><code>218419f</code></a> Prevent undesirable new lines to be displayed when report is disabled</li>
<li><a href="https://github.com/pytest-dev/pytest-cov/commit/60b73ec673c60942a3cf052ee8a1fdc442840558"><code>60b73ec</code></a> migrate build command from distutils to setuptools</li>
<li>Additional commits viewable in <a href="https://github.com/pytest-dev/pytest-cov/compare/v3.0.0...v4.0.0">compare view</a></li>
</ul>
</details>
<br />


You can trigger a rebase of this PR by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants