Closed cmfield closed 1 year ago
Hi @cmfield
Which versions of the MinKNOW API are you using? You can check this by running pip list
in your readfish environment. One thing you may want to try is dropping the version of the minknow_api
down to 5.0.0.1
, which doesn't query for a local token.
That isn't the problem though, I don't think. I'm not super familiar with the Mk1c, but I would expect MinKNOW (on the Mk1C) to listen on port 9502? Are you certain that can access this device on the network?
Rory
We're using minknow-api 5.5.2 - maybe I should bring it up to match the one on the device. I'll also try dropping it as you suggested.
I'm fairly sure the relevant ports are contactable after checking with nc and trying a bunch of other unrelated ports. They're definitely listed as listening and the error response is distinct from a random unopen port.
A follow up: I've tried downgrading minknow-api but the same errors occur. There is no 5.5.3, so perhaps this is the problem - I will possibly try to downgrade minknow itself on the device to 5.5.2.
The only other idea I have is mounting a drive on the device from which I can test that readfish can contact minknow locally. We double checked the remote connection by completely disabling the firewall and it didn't help.
If you could try mounting the drive locally, that would be great! I suspect that will work. We don't have a MK1C that I can test on but when I have time I will try playing with connecting remotely on a sequencing box
I have found a big issue with running it directly on the device - there is no ont-pyguppy-client-lib for Python 3.8 for the architecture it uses (ARM). There is for 3.10.. what do you think the chances of readfish running on 3.10 are?
I'm also trying to run it on a machine connected to the device via USB in case that's enlightening.
readfish is 3.10 compatible I think - certainly all our dependencies are. I actually don't know if Boss Runs is though!
Ok an update. I compiled Python 3.10 on the device itself and could create an appropriate environment for readfish/bossruns. I had to disable the proxy server we had set up on it, but then the initial unblock test worked! On the way, I also found that the most recent release of non-bossruns readfish is not compatible with the latest version of minknow-api, as a manager function no longer accepts a particular TLS-related argument.
I was very hopeful after this that disabling the proxy would solve the problem of connecting to the device remotely, but sadly not - we still cannot connect to it from another machine. So, I will try some further tests on the device itself, but I'm a bit stumped on what else to try for remote connection. Perhaps I will write a simple script using the minknow-api to try to contact it without using readfish, and that will tell me something. Any further ideas welcome :)
Ok I have located the issue by manual debugging:
Bossruns says to install read_until_api v3.0.0; this is the problem because that version did not forward the host IP address to the minknow-api Connection class, so it always tried localhost.
With v3.4.1 the readfish unblock-all test works remotely. We will now do the other readfish tests, then the bossruns tests (and I hope that there isn't an issue there that requires 3.0.0 because then it just won't work remotely).
Sorry for the many messages for something that was in the end, not the fault of readfish. I will make an issue with bossruns.
hey @cmfield - thanks very much for keeping us updated, and well done for getting it to work! I think you should be fine to use v3.4.1 for anything in Bossruns. It does allow for some new parameters to be passed into the Read until client, but I'm pretty sure they all have sensible defaults. So just to clarify -
By using read-until-client
v3.4.1, you can connect readfish remotely to a MinION Mk1C?
That's correct. Further testing has shown that in order for readfish targets to work, I had to downgrade the mappy package to 2.20 because in the latest release it no longer has a file mappy.c.
Currently trying the boss-runs tests and unsure if my basecaller is working correctly, but eventually I'll get there :)
We have a Minion Mk1C running Minknow 23.04.5 (bionic) (minknow-core-minion-1c 5.5.3) and another machine running readfish bossruns 0.0.2 in a suitably configured environment.
After disabling "Remote user permission (Nanopore account required)" and double checking this was the case on the device itself with config_editor, we are still unable to connect readfish to the device for the simple Unblocking Test.
I have attached the error log. Any ideas? Is it something to do with API access tokens - do we need to set that up?
Thanks!