I’ve noticed that sometimes it takes me longer to load the pioreactor1.local page than at other times, and I think this may be related to how long an experiment has been running. I think it might be due to having to load all the data from each experiment, which increases with the length of time of the experiment.
I ended my last experiment a couple days ago but had not started a new experiment. In addition to “New Experiment” and “End Experiment”, it might be useful to have a “Clear Experiment” button, and maybe even a “Load Old Experiment” button.
For now, I just started a new experiment called “2023-03-13 test delete”. One issue I’ve had with the “Start New Experiment” button is with not being able to create (or overwrite) experiments with an identical name. My current work-around is to prefix the current date to my experiment names, and I can append a/b/c/etc… to the date if I want to restart the same experiment without having to think up a new name.
To summarize, it would be nice to have this functionality through the UI:
- load previous experiments
- overwrite previous experiments
- view and delete previous experiments
- clear current experiment [to improve ui load time]
I think the last point (clearing current experiment) might be the easiest to implement, because I suspect the other ones might require some database searches and more logic.
Just some thoughts on the UI. I wouldn’t consider any of this urgent.
This is indeed what is happening. The backend needs to pick-up and scan more data the longer the experiment has been going on. This isn’t a user-problem, as some experiments will take weeks / months. In the latest software release (later today), I’ve made some improvements that should make the UI ~50% faster to load¹.
We have a constraint on experiment names being unique. This uniqueness assumption goes pretty deep into the software, so it’ll probably not be possible to change this constraint anytime soon. I end up appending 2
, 3
, … onto my experiments often.
maybe even a “Load Old Experiment” button.
I agree! This is on our short-term roadmap to include in the PioreactorUI.
¹ Some of these changes are only for new set ups though, as we make sensitive changes to the database, and I didn’t want to risk corrupting existing users databases. However, if you wish to include the new changes, below are instructions:
- Turn off all data collection for the Pioreactor (eg: like when you first start a new experiment)
- On your leader command line, open the database with
pio db
- Enter the following:
DROP INDEX od_readings_ix;
DROP INDEX od_readings_filtered_ix;
DROP INDEX growth_rates_ix;
CREATE INDEX IF NOT EXISTS growth_rates_ix
ON growth_rates (experiment, pioreactor_unit, timestamp);
CREATE INDEX IF NOT EXISTS od_readings_filtered_ix
ON od_readings_filtered (experiment, pioreactor_unit, timestamp);
CREATE INDEX IF NOT EXISTS od_readings_ix
ON od_readings (experiment, pioreactor_unit, timestamp);
If may take a few minutes or so to run. Don’t interrupt it!
We have a constraint on experiment names being unique. This uniqueness assumption goes pretty deep into the software, so it’ll probably not be possible to change this constraint anytime soon. I end up appending 2
, 3
, … onto my experiments often.
I don’t think it is necessary to change the uniqueness constraint. My frustration¹ arises from wanting to start an experiment but then having to figure a unique name for an experiment I’ve restarted multiple times. This might arise if I’m trying to troubleshoot an issue or test out a new feature/code. This issue could also be fixed by being able to see a list of existing experiment names so I can then choose a unique name, or by deleting the previous experiment with that name and then starting it new. I’m sure you can do this through SSH’ing into the pioreactor, and then doing something in pio db
, but this is something that should be accessible through the UI (ideally on the same page as when you’re creating/naming a new experiment).
Another possible solution is having a checkbox/toggleable feature that automatically prepends the date and time to an experiment name. (Having both a date and time might look too lengthy/cluttered, and I might prefer just having the date and iterating with 1/2/3 or a/b/c). You could also just have a counter where each experiment has a unique value that increments by 1 each time you start a new experiment (e.g., “[0001] test”, “[0002] test”, etc…).
Again, none of this is something I would consider urgent or high-priority. Just something that might be nice to have.
¹ “Frustration” might be too strong a word. It’s more of an occasional slight inconvenience that I’m able to work-around by pre-pending the current date.
1 Like
This is good feedback, thanks for sharing. I’ll talk to our designer about making improvements to this flow.