-
Notifications
You must be signed in to change notification settings - Fork 0
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
Catalog the python lab automation landscape #23
Comments
Please note that HQCMeas is the ancestor of Exopy and anything useful it was doing can be done in Exopy (with the exopy_hqc_legacy package installed). |
Thanks, noted! |
Hi, On the data acquisition side (DAQ cards) we have also: Why not putting all these projects in a spreadsheet? As I'm working a lot for my lab in python with the willingness to increase, it I can contributes some ressources (Engineers fro others French research team and trainee and maybe €€€) to have a long term supported framework. |
This project also contains many drivers: |
Thank you, I have updated the first post.
Yes, that's a good plan. Let's start on developing a list of criteria to judge when testing packages (in the first post) to get a good, structured overview.
This is very good to hear! I think (and others have agreed) that steady commitments will be essential. I think we should avoid reinventing the wheel, so if later on it turns out that there exists active project that is well-usable for general needs (maybe QCodes, exopy, lantz,..) that folks should just join and adapt/enhance (e.g. by porting existing drivers from other packages), that would be fine, too. I am guessing concentrating the available drivers would be a valuable contribution, but the first task is to come up with a good spec first, see #22, #9. |
Spreadsheet started: |
Just a note Exopy is unlikely to ever contains instrument drivers, I3py will deal with instrument drivers. For the time being I3py does not contain any driver but the first ones are under way. The documentation about developing new drivers is quite complete, if anybody take time to actually read I will be happy to address any comment you may have. |
By the way I completed some info about I3py in the spreadsheet. Out of curiosity what do you have in mind with 'Transport layers abstraction' ? |
I would also mention that PyVisa does not have the ambitions to host standard drivers (the pyvisa-drivers is explicitely not that) however it provides a nice way to abstract over the transport layer for VISA based instrument (and with a bit more love pyvisa-py could be a good alternative to manually writing transport protocols). |
@Bruyant great work! Did you notice the list of characteristics/columns that I put in the first post, that would probably be good to include/adapt. @MatthieuDartiailh Of course, having instrument drivers in a separate packages makes lots of sense (for reuse etc). Probably we should have two separate entries for exopy and i3py. I tried to be inclusive in the "scope" entries in the list in the OP, so that we can track also GUI solutions |
I started filling out the record for
Everything else is, as far as I'm aware, accurate. On the spreadsheet it looks like the |
Thanks!
What I mean to convey is that the software in question has some built-in ability to define a measurement/acquisition sequence (e.g. Number of drivers: The primary measure is the overall number of drivers (I clarified the column name), I thought it would be useful to include the most popular brands so that people can get a better feel of the variety of devices supported. |
I was so free to add Cryostat-GUI and measureSequences to the spreadsheet. I have to admit, when I looked at possibilities to control the devices we set up in our lab, I was discouraged to add new drivers to any of the mentioned frameworks (like pymeasure/InstrumentKit) by the rather complex architecture, and everything one has to learn about those packages and the way new drivers may be added, before being able to use 'my' instruments in this framework. regarding |
I think this sums up the challenge with building a critical mass of engineers/physicists interesting in contributing to a unified package. Most people automating test equipment will take the path of least resistance, which is often writing their own [poor] code from scratch if their instrument is not implemented in a package. InstrumentKit has the right idea with abstract instruments that attempt to emulate common functionality of equipment, but there is still a fair bit of complexity for a beginning programmer to wrap their head around. I think the key for any package is having great descriptive tutorials for non-programmers (or beginning programmers). - I imagine that most users can write some basic scripts in matlab/mathematica/c and understand things like conditional statements and looping but might not have a solid background in test driven development, object creation/inheritance, decorators, etc. I added my own personal take on RF measurement drivers to the csv. As an aside, if anyone happens to be at SciPy19 and wants to meet up to discuss further let me know. |
@bklebel I appreciate your input! Do you think it would help to improve the "getting started" documentation of pymeasure/InstrumentKit? If so, would you mind opening issues at the respective repos about this, with some details about your experience and where it could be improved? I fear the point about quick&dirty self-made making it painful to do it "properly" later is something that is hard to avoid. Especially because it's easy to cook up your own stuff that is "just right" for what you need right then, instead of going with something pre-existing which does not 100% fit your requirements/taste/preferences. Smoother "onboarding" for an existing solution would help, though! This is partly why this initiative exists, to reduce the barriers for people to contribute to existing solutions instead of DIYing it. Btw, are you in the Freihaus? I'm a TPH alumnus, myself :-) |
@JAnderson419 yeah I agree mostly. However, do you think it feasible to structure a project such that the code is generic, elegant and powerful, while still being grokable enough for a non-/new-programmer, who lacks background e.g. in object orientation, to contribute new code to? I think much of the pain point also stems from the fragmentation in the community/package landscape. Without a unifying drive, you end up with N>>1 packages which are bound to have 0.1-1 maintainers, so should you need help the probability is high that you will wait a long time. Also, projects end up dead/unmaintained if the maintainer loses interest. |
@bilderbuchi Yes, I think it would help a lot, especially since this section (to me) seems to be aimed at somehow experienced programmers - I think it could help a lot if a description of "how can I make stuff quick but not too dirty, using this framework" could be placed rather prominent. Thinking about the mindset people are in, and taking them further from there. regarding your comment to @JAnderson419, I think this is certainly possible, if you can "collect" people just when they start, give them easy recipes to follow, they will become engaged with a much higher probability at some later stage. Regarding TU, I will be at Freihaus again from October on, currently on a research stay abroad. However the setup I am building this GUI for, is in Freihaus, IFP |
This table was originally started and filled by me at https://ethercalc.net/1anmq248ktu6 to support discussion at LabPy/labpy-discussion#23 Later on several other people (some anonymous) contributed data.
To consolidate efforts, it's important to get an overview of the different available packages. These should be analysed w.r.t. various parameters (to be defined, but things like maintenance status, activity level, maturity, design goals, scope of features, number of instrument drivers, automated test availability, ...).
Edit: Spreadsheet can be found here!
(Ethercalc has moved, link fixed 2021-01-09; site seems to be slow)
Since this is quite the large task, I have, as a first step, compiled a list of any packages mentioned in the discussion in pymeasure/pymeasure#53, as well as some from my notes:
Preliminary list of things to note (i.e. columns in a spreadsheet) when testing packages
The text was updated successfully, but these errors were encountered: