General Thoughts and Forward Looking #1074
Replies: 4 comments 4 replies
-
I probably won't get to a proper read of this until the weekend, but I just want to drop two notes here:
|
Beta Was this translation helpful? Give feedback.
-
Congratulations on your new job, @CSSFrancis! I'm glad to hear you'll continue within the realm of microscopy and diffraction. I started working for Xnovotech on X-ray imaging and crystallography in December after handing in my PhD. Moving from academia to industry poses both challenges and opportunities; I enjoy it very much so far and still find time for OSS (maintenance, not so much development, unfortunately).
If that's the case: wow. Seems like live processing can help mitigate that, to have at least some preliminary results right after a microscopy session. Your point 3. regarding improving existing GUI implementations is a good one. I would say yes to both questions. However, resources are limited, so supporting existing solutions (like LiberTEMLive) is a reasonable start.
I'd say no, and yes... With the caveats that (1) GUI solutions should focus on simple operations to keep maintenance costs manageable, and that (2) a user finding the GUI too restrictive has to learn programming. But, if a user wants to build their own workflows, the API should be easy to use! Sadly, this is the most overlooked aspect of software development within the pyxem packages, in my opinion. Yes, new functionality is added by academics with limited time and experience with software design (often). Even so, we must think twice about how a user can incorporate new functionality into their own workflows before deciding on the final API. Structuring modules, classes, attributes, and methods in a way that is natural, easy to use, and maintainable is challenging and something that should be discussed when reviewing PRs to the pyxem packages.
I've been in favor of more permissive licensing (BSD, MIT, etc.) for a couple of years. I haven't found the time, but an approach I want to suggest for orix is to move the bits we can to separate files with permissive licensing. The LiberTEM maintainers have done this: Their software has a GPLv3 license, but their IO parts have an MIT license. OK, the software as a whole cannot be used by packages not wanting the GPLv3 license, but the code can be reused. With time, more things should have a more permissive license, allowing for use and contributions from industry people. Lastly, I wish you good luck in finishing your thesis! 🚀 |
Beta Was this translation helpful? Give feedback.
-
@hakonanes congratulations on your job! I'm glad that you are finding it rewarding! To your other point maintenance of OSS is one of the most important and helpful things. I really appricate your help!
Yea it's unfrotuantly even the case for my group which I consider to have relatively complete workflows. Even I am guilty of having TB of unanalyzed data sitting around. It gets worse with new users as lots of non microscopists end up taking the datasets which is actually fairly easy but then get stuck somwhere in the next couple of steps. It doesn't help that there aren't intermediary visualization steps which can be super discouraging if you don't have some reward after taking the dataset.
I think thats very true. I really like the HyperspyUI even if it (maybe) falls into the box of too complex of operations with limited maintenance. But I do like the fact that you can record functions and there is a pretty natural progression from GUI to programming with the ability to record the eqivilent functions/ workflow in hyperspy. That being said people don't seem to really use it.
Yea I'd agree there. We benefit from consistancy across the hyperspy/pyxem/ kikchipy etc. which actually makes transition between packages quite nice from a developer standpoint. I at least feel semi competent reviewing code releated to signals in kikchipy even though I'm not very involved in development there. Orix being familar to people using mtex is nice, but maybe we are reaching a matplotlib junction where we have outgrown our inspiration in certain area.
Yea I think that comes with maturity continued development, and continued developers with long term plans/goals. The one thing I don't want is to make the barrier to the first code addition too high :) but that can be mitigated by more maintainers and adding fixes to peoples code.
That is my opinion as well and why I wanted to make a feedstock for some different methods. I guess this leads me to the next question: If parts of
Thanks! It's going fairly well, just need to revise some final papers and get things out the door :). |
Beta Was this translation helpful? Give feedback.
-
I agree on the point that most 4D-STEM data isn't really analyzed due to the data processing software being difficult to use. At least in Norway, more and more of the master and PhD students learn Python programming, and using Jupyter Notebooks during their studies. So the issue with people being intimidated by a Python command line, for example in a Jupyter Notebook, will decrease over time. I'm assuming this is the case other places as well.
One thing to keep in mind is that developing and maintaining GUIs is much more developer demanding compared to developing command line tools. Thus, one should be very careful before committing to something like that. I do know the LiberTEM project have been looking into using the GUI which CEOS is developing: Panta Rhei. It is Python based, and they're planning on open sourcing it. I haven't used it much itself, but it is very extendable, and can handle live processing pretty well. @uellue, @sivborg and @sk1p would know more about this. @gguzzina is one of the developers working on this in CEOS.
I think this is a very good idea. The main issue is getting time to implement and maintain this. |
Beta Was this translation helpful? Give feedback.
-
This comes up in offline discussions, so I figured I would post about this to let people know where I am and my future plans related to pyxem.
I'd also love to hear from other developers. What level of involvement do they plan to have in the future, what jobs have they accepted, and how life in general is going?
I'm finishing my PhD in the next month (or 2?), which should hopefully align with a pyxem 1.0.0 release around the same time and a publication to follow. This should leave pyxem in a nice state where it can exist as a stable, well-tested package for general 4-D STEM operations. The field as a whole has been missing that and in my opinion this is a huge barrier to continued research as packages like pyxem thrive on public or private workflows in the form of jupyter notebooks. It's part of the reason that a 2.0.0 release in hyperspy upstream was such a significant deal and part of the reason that a 1.0.0 release means a significant ammount.
Looking beyound the 1.0.0 release pyxem has quite a bit of flexibility. I recently accepted a job with Direct Electron, specifically I am working on developing accelerated methods for doing 4D STEM with a focus on GPU acceleration for doing live or simply faster data processing. That topic is quite broad/ general and I have a fair bit of flexibility in how I implement things.
4D STEM is new enough/ the analysis are fairly complex/the market is fairly small that there really are not general comercial softwares for doing analysis. In contrast the open source space there are (potentially too many) different options. From the prospective of detector manufacturers, open source provides a valuable resource as they provide cutting edge analysis for their hardware without the added cost to detector manufactures of maintaining a dedecated software team focused on tools for anaylsis. From the user standpoint, however, I can't help but feel that there is something left to be desired. I've taught quite a few people how to do 4D STEM over the last couple of years and find there are many barriers. I've tried to help fix these issues over the years but having a solution and teaching/disseminating that solution are vastly different things.
These generally boil down to:
Just ball parking but my assuption is that ~70% of 4D STEM data is never analyzed. This leads to a great question which is should someone have to download pyxem to do something simple like a VDF or strain mapping? Does doing 4D STEM have to require some python programming experience? Should we be offering open source GUI solutions for 4D STEM?
My approach to this problem is to simplify things using disk detection and vectors. This will probably evolve with time but:
More on the nitty gritty side. What about liscenses, how to handle open-source vs corperate interests. GPL is infectious which is a blessing and a curse. On one hand open science is always the goal. On the other it tends to cause problems in many cases from an intelectual property side and many coorperations are hesisitent to touch it.
I've previously thought about this and feel something like #933 would be a good step in the right direction as we could maintain a more permissive library for generic operations and then those could be seperately implemented in pyxem (or even in liberTEM/py4dstem).
I'd love to hear peoples thoughts and suggestions. I can be fairly flexible on what I work on so if you have suggestions I'd love to hear them.
@ericpre @magnunor @pc494
Beta Was this translation helpful? Give feedback.
All reactions