juglab / napari-n2v

A self-supervised denoising algorithm.
https://juglab.github.io/napari-n2v/
BSD 3-Clause "New" or "Revised" License
24 stars 3 forks source link

N2V demo prediction not working #56

Open bpavie opened 8 months ago

bpavie commented 8 months ago

Hi,

I installed everything, started napari and tried to run the N2V Demo prediction, but I get an SSL error:

(napari-n2v) >napari
WARNING: QWindowsWindow::setGeometry: Unable to set geometry 54x50+640+270 (frame: 76x101+629+230) on QWidgetWindow/"SpinBoxClassWindow" on "\\.\DISPLAY1". Resulting geometry: 148x50+640+270 (frame: 170x101+629+230) margins: 11, 40, 11, 11)
16:13:11 WARNING QWindowsWindow::setGeometry: Unable to set geometry 54x50+640+270 (frame: 76x101+629+230) on QWidgetWindow/"SpinBoxClassWindow" on "\\.\DISPLAY1". Resulting geometry: 148x50+640+270 (frame: 170x101+629+230) margins: 11, 40, 11, 11)
INFO: Downloading data can take a few minutes.
---------------------------------------------------------------------------
SSLCertVerificationError                  Traceback (most recent call last)
File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\urllib\request.py:1346, in AbstractHTTPHandler.do_open(self=<urllib.request.HTTPSHandler object>, http_class=<class 'http.client.HTTPSConnection'>, req=<urllib.request.Request object>, **http_conn_args={'check_hostname': None, 'context': None})
   1345 try:
-> 1346     h.request(req.get_method(), req.selector, req.data, headers,
        h = <http.client.HTTPSConnection object at 0x000001E8FD7DB1F0>
        headers = {'Host': 'download.fht.org', 'User-Agent': 'Python-urllib/3.9', 'Connection': 'close'}
        req = <urllib.request.Request object at 0x000001E8FD7DB3A0>
        req.selector = '/jug/n2v/SEM.zip'
   1347               encode_chunked=req.has_header('Transfer-encoding'))
   1348 except OSError as err: # timeout error

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\http\client.py:1285, in HTTPConnection.request(self=<http.client.HTTPSConnection object>, method='GET', url='/jug/n2v/SEM.zip', body=None, headers={'Connection': 'close', 'Host': 'download.fht.org', 'User-Agent': 'Python-urllib/3.9'}, encode_chunked=False)
   1284 """Send a complete request to the server."""
-> 1285 self._send_request(method, url, body, headers, encode_chunked)
        method = 'GET'
        url = '/jug/n2v/SEM.zip'
        body = None
        headers = {'Host': 'download.fht.org', 'User-Agent': 'Python-urllib/3.9', 'Connection': 'close'}
        encode_chunked = False
        self = <http.client.HTTPSConnection object at 0x000001E8FD7DB1F0>

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\http\client.py:1331, in HTTPConnection._send_request(self=<http.client.HTTPSConnection object>, method='GET', url='/jug/n2v/SEM.zip', body=None, headers={'Connection': 'close', 'Host': 'download.fht.org', 'User-Agent': 'Python-urllib/3.9'}, encode_chunked=False)
   1330     body = _encode(body, 'body')
-> 1331 self.endheaders(body, encode_chunked=encode_chunked)
        encode_chunked = False
        body = None
        self = <http.client.HTTPSConnection object at 0x000001E8FD7DB1F0>

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\http\client.py:1280, in HTTPConnection.endheaders(self=<http.client.HTTPSConnection object>, message_body=None, encode_chunked=False)
   1279     raise CannotSendHeader()
-> 1280 self._send_output(message_body, encode_chunked=encode_chunked)
        message_body = None
        self = <http.client.HTTPSConnection object at 0x000001E8FD7DB1F0>
        encode_chunked = False

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\http\client.py:1040, in HTTPConnection._send_output(self=<http.client.HTTPSConnection object>, message_body=None, encode_chunked=False)
   1039 del self._buffer[:]
-> 1040 self.send(msg)
        msg = b'GET /jug/n2v/SEM.zip HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: download.fht.org\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n'
        self = <http.client.HTTPSConnection object at 0x000001E8FD7DB1F0>
   1042 if message_body is not None:
   1043
   1044     # create a consistent interface to message_body

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\http\client.py:980, in HTTPConnection.send(self=<http.client.HTTPSConnection object>, data=b'GET /jug/n2v/SEM.zip HTTP/1.1\r\nAccept-Encodi...: Python-urllib/3.9\r\nConnection: close\r\n\r\n')
    979 if self.auto_open:
--> 980     self.connect()
        self = <http.client.HTTPSConnection object at 0x000001E8FD7DB1F0>
    981 else:

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\http\client.py:1454, in HTTPSConnection.connect(self=<http.client.HTTPSConnection object>)
   1452     server_hostname = self.host
-> 1454 self.sock = self._context.wrap_socket(self.sock,
        self.sock = None
        self = <http.client.HTTPSConnection object at 0x000001E8FD7DB1F0>
        self._context = <ssl.SSLContext object at 0x000001E8F5DB1CC0>
        server_hostname = 'download.fht.org'
   1455                                       server_hostname=server_hostname)

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\ssl.py:501, in SSLContext.wrap_socket(self=<ssl.SSLContext object>, sock=<socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>, server_side=False, do_handshake_on_connect=True, suppress_ragged_eofs=True, server_hostname='download.fht.org', session=None)
    495 def wrap_socket(self, sock, server_side=False,
    496                 do_handshake_on_connect=True,
    497                 suppress_ragged_eofs=True,
    498                 server_hostname=None, session=None):
    499     # SSLSocket class handles server_hostname encoding before it calls
    500     # ctx._wrap_socket()
--> 501     return self.sslsocket_class._create(
        self.sslsocket_class = <class 'ssl.SSLSocket'>
        self = <ssl.SSLContext object at 0x000001E8F5DB1CC0>
        sock = <socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>
        server_side = False
        do_handshake_on_connect = True
        suppress_ragged_eofs = True
        server_hostname = 'download.fht.org'
        session = None
    502         sock=sock,
    503         server_side=server_side,
    504         do_handshake_on_connect=do_handshake_on_connect,
    505         suppress_ragged_eofs=suppress_ragged_eofs,
    506         server_hostname=server_hostname,
    507         context=self,
    508         session=session
    509     )

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\ssl.py:1074, in SSLSocket._create(cls=<class 'ssl.SSLSocket'>, sock=<socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>, server_side=False, do_handshake_on_connect=True, suppress_ragged_eofs=True, server_hostname='download.fht.org', context=<ssl.SSLContext object>, session=None)
   1073             raise ValueError("do_handshake_on_connect should not be specified for non-blocking sockets")
-> 1074         self.do_handshake()
        self = <ssl.SSLSocket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>
   1075 except (OSError, ValueError):

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\ssl.py:1343, in SSLSocket.do_handshake(self=<ssl.SSLSocket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>, block=False)
   1342         self.settimeout(None)
-> 1343     self._sslobj.do_handshake()
        self = <ssl.SSLSocket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>
        self._sslobj = None
   1344 finally:

SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129)

During handling of the above exception, another exception occurred:

URLError                                  Traceback (most recent call last)
File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\site-packages\napari\_qt\menus\plugins_menu.py:105, in PluginsMenu._add_plugin_actions.<locals>._add_toggle_widget(key=('napari-n2v', 'N2V Demo prediction'), hook_type='dock')
    102     return
    104 if hook_type == 'dock':
--> 105     self._win.add_plugin_dock_widget(*key)
        key = ('napari-n2v', 'N2V Demo prediction')
        self._win = <napari._qt.qt_main_window.Window object at 0x000001E8E2241490>
        self = <napari._qt.menus.plugins_menu.PluginsMenu object at 0x000001E8EA9C24C0>
    106 else:
    107     self._win._add_plugin_function_widget(*key)

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\site-packages\napari\_qt\qt_main_window.py:897, in Window.add_plugin_dock_widget(self=<napari._qt.qt_main_window.Window object>, plugin_name='napari-n2v', widget_name='N2V Demo prediction', tabify=False)
    894         wdg = wdg._magic_widget
    895     return dock_widget, wdg
--> 897 wdg = _instantiate_dock_widget(
        Widget = <class 'napari_n2v._predict_widget.DemoPrediction'>
        self = <napari._qt.qt_main_window.Window object at 0x000001E8E2241490>
    898     Widget, cast('Viewer', self._qt_viewer.viewer)
    899 )
    901 # Add dock widget
    902 dock_kwargs.pop('name', None)

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\site-packages\napari\_qt\qt_main_window.py:1551, in _instantiate_dock_widget(wdg_cls=<class 'napari_n2v._predict_widget.DemoPrediction'>, viewer=Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoo...ouse_drag_gen={}, _mouse_wheel_gen={}, keymap={}))
   1546             break
   1547         # cannot look for param.kind == param.VAR_KEYWORD because
   1548         # QWidget allows **kwargs but errs on unknown keyword arguments
   1549
   1550 # instantiate the widget
-> 1551 return wdg_cls(**kwargs)
        kwargs = {'napari_viewer': Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, size=1, style=<CursorStyle.STANDARD: 'standard'>), dims=Dims(ndim=2, ndisplay=2, last_used=0, range=((0, 2, 1), (0, 2, 1)), current_step=(0, 0), order=(0, 1), axis_labels=('0', '1')), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x000001E8DF5D85E0>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, keymap={})}
        wdg_cls = <class 'napari_n2v._predict_widget.DemoPrediction'>

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\site-packages\napari_n2v\_predict_widget.py:332, in DemoPrediction.__init__(self=<napari_n2v._predict_widget.DemoPrediction object>, napari_viewer=Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoo...ouse_drag_gen={}, _mouse_wheel_gen={}, keymap={}))
    329 ntf.show_info('Downloading data can take a few minutes.')
    331 # get files
--> 332 img, model = demo_files()
    334 # add image to viewer
    335 name = 'Demo image'

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\site-packages\napari_n2v\_sample_data.py:110, in demo_files()
    107 def demo_files():
    108     with cwd(get_default_path()):
    109         # load sem validation
--> 110         img = _load_sem()[1][0]
    112         # create models folder if it doesn't already exist
    113         model_path = Path('models', 'trained_sem_N2V2').absolute()

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\site-packages\napari_n2v\_sample_data.py:92, in _load_sem()
     89 img_zip_path = Path(data_path, 'SEM.zip')
     90 if not img_zip_path.exists():
     91     # download and unzip data
---> 92     urllib.request.urlretrieve('https://download.fht.org/jug/n2v/SEM.zip', img_zip_path)
        img_zip_path = WindowsPath('data/sem/SEM.zip')
        urllib.request = <module 'urllib.request' from 'C:\\GBW_MyPrograms\\mambaforge\\envs\\napari-n2v\\lib\\urllib\\request.py'>
     93     with zipfile.ZipFile(img_zip_path, 'r') as zip_ref:
     94         zip_ref.extractall(data_path)

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\urllib\request.py:239, in urlretrieve(url='https://download.fht.org/jug/n2v/SEM.zip', filename=WindowsPath('data/sem/SEM.zip'), reporthook=None, data=None)
    222 """
    223 Retrieve a URL into a temporary location on disk.
    224
   (...)
    235 data file as well as the resulting HTTPMessage object.
    236 """
    237 url_type, path = _splittype(url)
--> 239 with contextlib.closing(urlopen(url, data)) as fp:
        url = 'https://download.fht.org/jug/n2v/SEM.zip'
        contextlib.closing = <class 'contextlib.closing'>
        data = None
    240     headers = fp.info()
    242     # Just return the local path and the "headers" for file://
    243     # URLs. No sense in performing a copy unless requested.

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\urllib\request.py:214, in urlopen(url='https://download.fht.org/jug/n2v/SEM.zip', data=None, timeout=<object object>, cafile=None, capath=None, cadefault=False, context=None)
    212 else:
    213     opener = _opener
--> 214 return opener.open(url, data, timeout)
        opener = <urllib.request.OpenerDirector object at 0x000001E8FD7DB100>
        url = 'https://download.fht.org/jug/n2v/SEM.zip'
        data = None
        timeout = <object object at 0x000001E897AFF0A0>

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\urllib\request.py:517, in OpenerDirector.open(self=<urllib.request.OpenerDirector object>, fullurl='https://download.fht.org/jug/n2v/SEM.zip', data=None, timeout=<object object>)
    514     req = meth(req)
    516 sys.audit('urllib.Request', req.full_url, req.data, req.headers, req.get_method())
--> 517 response = self._open(req, data)
        req = <urllib.request.Request object at 0x000001E8FD7DB3A0>
        data = None
        self = <urllib.request.OpenerDirector object at 0x000001E8FD7DB100>
    519 # post-process response
    520 meth_name = protocol+"_response"

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\urllib\request.py:534, in OpenerDirector._open(self=<urllib.request.OpenerDirector object>, req=<urllib.request.Request object>, data=None)
    531     return result
    533 protocol = req.type
--> 534 result = self._call_chain(self.handle_open, protocol, protocol +
        result = None
        protocol = 'https'
        self.handle_open = {'unknown': [<urllib.request.UnknownHandler object at 0x000001E8FD7EFA00>], 'http': [<urllib.request.HTTPHandler object at 0x000001E8FD7EFA90>], 'ftp': [<urllib.request.FTPHandler object at 0x000001E8FD7EFC70>], 'file': [<urllib.request.FileHandler object at 0x000001E8FD7EFB20>], 'data': [<urllib.request.DataHandler object at 0x000001E8FD7EFC40>], 'https': [<urllib.request.HTTPSHandler object at 0x000001E8FD7EFCD0>]}
        protocol +
                                  '_open' = 'https_open'
        self = <urllib.request.OpenerDirector object at 0x000001E8FD7DB100>
        req = <urllib.request.Request object at 0x000001E8FD7DB3A0>
    535                           '_open', req)
    536 if result:
    537     return result

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\urllib\request.py:494, in OpenerDirector._call_chain(self=<urllib.request.OpenerDirector object>, chain={'data': [<urllib.request.DataHandler object>], 'file': [<urllib.request.FileHandler object>], 'ftp': [<urllib.request.FTPHandler object>], 'http': [<urllib.request.HTTPHandler object>], 'https': [<urllib.request.HTTPSHandler object>], 'unknown': [<urllib.request.UnknownHandler object>]}, kind='https', meth_name='https_open', *args=(<urllib.request.Request object>,))
    492 for handler in handlers:
    493     func = getattr(handler, meth_name)
--> 494     result = func(*args)
        func = <bound method HTTPSHandler.https_open of <urllib.request.HTTPSHandler object at 0x000001E8FD7EFCD0>>
        args = (<urllib.request.Request object at 0x000001E8FD7DB3A0>,)
    495     if result is not None:
    496         return result

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\urllib\request.py:1389, in HTTPSHandler.https_open(self=<urllib.request.HTTPSHandler object>, req=<urllib.request.Request object>)
   1388 def https_open(self, req):
-> 1389     return self.do_open(http.client.HTTPSConnection, req,
        req = <urllib.request.Request object at 0x000001E8FD7DB3A0>
        self = <urllib.request.HTTPSHandler object at 0x000001E8FD7EFCD0>
        http.client = <module 'http.client' from 'C:\\GBW_MyPrograms\\mambaforge\\envs\\napari-n2v\\lib\\http\\client.py'>
        self._context = None
        self._check_hostname = None
   1390         context=self._context, check_hostname=self._check_hostname)

File C:\GBW_MyPrograms\mambaforge\envs\napari-n2v\lib\urllib\request.py:1349, in AbstractHTTPHandler.do_open(self=<urllib.request.HTTPSHandler object>, http_class=<class 'http.client.HTTPSConnection'>, req=<urllib.request.Request object>, **http_conn_args={'check_hostname': None, 'context': None})
   1346         h.request(req.get_method(), req.selector, req.data, headers,
   1347                   encode_chunked=req.has_header('Transfer-encoding'))
   1348     except OSError as err: # timeout error
-> 1349         raise URLError(err)
   1350     r = h.getresponse()
   1351 except:

URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129)>
jdeschamps commented 8 months ago

What happens if you try to download the file by using the following link: https://download.fht.org/jug/n2v/SEM.zip ?