-
Notifications
You must be signed in to change notification settings - Fork 9
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
Implement AiiDA control page #156
base: main
Are you sure you want to change the base?
Conversation
User-Friendly AiiDAlab App for Managing Main Workflows (MWs) This AiiDAlab app aims to enhance the user experience when working with Main Workflows (MWs) in AiiDA. Currently, the default "verdi process list -a" command provides an overview of all workflows, but it lacks user-centric features and can be cumbersome to navigate, especially when dealing with numerous MWs. MW is a workflow submitted by a user, usually with a description, that will typically have child workflows Key Features: 1. Intuitive MW List: The app will present a user-friendly MW list, displaying the descriptions of each workflow along with their statuses. Users can quickly identify MWs, such as "PDOS DBBR on Au," "STM goblet," etc., based on the provided descriptions rather than the AiiDA workchain names. 2. Workflow Progress Visualization: Users can easily track the progress of a specific MW by clicking on it. The app will visually highlight completed steps and indicate which step is currently running, queued, or paused. This provides users with a clear understanding of where their MW stands in terms of execution. 3. Process Control: The app will empower users to interact with their MWs efficiently. Users can pause and resume processes as needed, allowing better control over long-running or resource-intensive calculations. Additionally, the app will provide a "kill" option to terminate unwanted or problematic MWs. 4. Efficient Workflow Retrieval: Searching for past MWs will be a breeze with the app's convenient filtering and sorting options. Users can effortlessly find a specific MW, like "DBBR Br removed on Au" from two months ago, and access its individual steps with ease. The app will allow searching based on date ranges and provide a smooth scrolling experience, avoiding disruptive automatic page refreshes. 5. Optimized Performance: Ensuring the app's responsiveness and speed is a priority. By optimizing database queries and utilizing efficient data retrieval techniques, we aim to create a seamless experience for users, even when dealing with a significant number of MWs. The goal of this app is to make MW management in AiiDA more intuitive, efficient, and enjoyable for users who frequently submit and monitor complex workflows. Your feedback and contributions are highly appreciated as we strive to create a powerful tool that complements AiiDA's capabilities. |
The control page dependent on the We can also make AWB the core package as defined in The ultimate solution could be for every app has its own Python environment created when using |
@yakutovicha thanks for this. 🗜️ I like the overall approach and design. I would suggest two things so we can move with an initial version of the control page:
Couple minor things / ideas...
|
It would be great to re-enable the tests in CI before this PR is merged, per #161, and add basic tests for the new functionality. |
7a648fd
to
885537f
Compare
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
"output = ipw.Output()\n", | ||
"\n", | ||
"\n", | ||
"def update_output(value={\"new\": \"Group\"}):\n", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've merged in main with updated ruff that now checks jupyter notebooks. It reports a lint violation here:
control.ipynb:cell 3:19:25: B006 Do not use mutable data structures for argument defaults
|
19 | def update_output(value={"new": "Group"}):
| ^^^^^^^^^^^^^^^^ B006
20 | if value["new"] in correspondance:
21 | with output:
|
= help: Replace with `None`; initialize within function
@yakutovicha btw: I am going to be on the coding retreat next month and I've heard you'll be there as well? Perhaps this PR is a good candidate to work on, WDYT? |
fixes #155