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

Compatability with DiTi Evos #77

Closed
NikolasvdEichen opened this issue Jul 12, 2024 · 3 comments · Fixed by #79
Closed

Compatability with DiTi Evos #77

NikolasvdEichen opened this issue Jul 12, 2024 · 3 comments · Fixed by #79

Comments

@NikolasvdEichen
Copy link

Hey everyone,
I encountered an issue while using evos that mount disposable tips.
Unlike the Fluent, it does not understand a "W1;" as a "Eject Tips", but it has to be a ""W;". However, this is currently forbidden by the .wash method of the base worklist. What I'd suggest is the following

    def wash(self, scheme: int = 1) -> None:
        """Washes fixed tips or replaces DiTis.

        Washes/replaces the tip that was used by the preceding aspirate record(s).

        Parameters
        ----------
        scheme : int
            Number indicating the wash scheme (default: 1)
        """
        if not scheme in {0, 1, 2, 3, 4}:
            raise ValueError("scheme must be either 0, 1, 2, 3 or 4")
        
        if scheme == 0:
            self.append("W;")
        else:
            self.append(f"W{scheme};")
        return

What do you guys think? I'd create a PR myself but I do not have write access.

@michaelosthege
Copy link
Member

michaelosthege commented Jul 12, 2024

How is the interplay with .transfer() based commands? Would you do .transfer(..., wash_scheme=0)?

I guess then it's a good idea to allow scheme=0.

An alternative would be the introduction of a (Evo)Worklist.eject_tips() method. Might be more discoverable for users.

I'm open to either or both solutions.

@NikolasvdEichen you can fork and after pushing a branch to your own fork (git add myfork https://github.com/.../robotools ...) GitHub will show the "Create Merge Request" button.


EDIT: I wonder how to configure the tip drop destination (waste or box). Don't have experience with DiTis...

@NikolasvdEichen
Copy link
Author

The tip drop destination is specified in the load worklist dialogue.
Yes, I would use the .transfer with wash_scheme = 0. Given that you need a "W;" for each individual pipetting operation, I think that would be the simplest way to implement it.
I'll create a fork + merge request asap.

@michaelosthege
Copy link
Member

michaelosthege commented Jul 17, 2024

Looking into this, I realized that we need to be careful:

Fluent

FluentWorklist.transfer(wash_scheme=None) inserts a flush()F; instead of a W1;.

EVO

EvoWorklist.transfer(wash_scheme=None) violates the currently advertised method signature, but is handled as not inserting a wash.
→ The worklist runs (I thought this was invalid?!) but uses only Tip 1. My EVO Sim has fixed tips and washes them inbetween.

Using W; uses all tips at the same time, and with fixed tips it does a wash. According to you, this does not drop DiTis. However, I could not reproduce this in the EVO Sim.

Using a F; instead of a W; results in using only Tip 1 (with fixed and DiTis, in the EVO Sim).


For the Fluent we implemented the "don't drop DiTis" via wash_scheme=None and inserting a F;, therefore I think we should also do wash_scheme=None not wash_scheme=0 for the EVO.

But I'm not sure about inserting nothing (current implementation) vs. W; vs. F;.

What do you think, @NikolasvdEichen ?


For testing:

A;source;;;1;;100.00;;;;
D;destination;;;1;;100.00;;;;
W;
A;source;;;2;;100.00;;;;
D;destination;;;9;;100.00;;;;
W;
A;source;;;3;;100.00;;;;
D;destination;;;17;;100.00;;;;
W;
A;source;;;4;;100.00;;;;
D;destination;;;25;;100.00;;;;
W;
A;source;;;5;;100.00;;;;
D;destination;;;33;;100.00;;;;
W;
A;source;;;6;;100.00;;;;
D;destination;;;41;;100.00;;;;
W;
A;source;;;7;;100.00;;;;
D;destination;;;49;;100.00;;;;
W;
A;source;;;8;;100.00;;;;
D;destination;;;57;;100.00;;;;
W;
A;source;;;1;;100.00;;;;
D;destination;;;1;;100.00;;;;
W;
A;source;;;2;;100.00;;;;
D;destination;;;9;;100.00;;;;
W;
A;source;;;3;;100.00;;;;
D;destination;;;17;;100.00;;;;
W;
A;source;;;4;;100.00;;;;
D;destination;;;25;;100.00;;;;
W;
A;source;;;5;;100.00;;;;
D;destination;;;33;;100.00;;;;
W;
A;source;;;6;;100.00;;;;
D;destination;;;41;;100.00;;;;
W;
A;source;;;7;;100.00;;;;
D;destination;;;49;;100.00;;;;
W;
A;source;;;8;;100.00;;;;
D;destination;;;57;;100.00;;;;
W;

michaelosthege added a commit that referenced this issue Jul 17, 2024
⚠ Behavior change for `EvoWorklist.transfer(wash_scheme=None)`:
* Previously nothing was inserted
* Now `W;` is inserted

Closes #77
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants