TwoPy 0.3.4__py3-none-any.whl → 0.3.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
twopy/converted.py CHANGED
@@ -234,7 +234,7 @@ def load_converted_recording(
234
234
  if len(movie_shape) != 3:
235
235
  msg = f"aligned movie shape must have 3 dimensions: {movie_shape}"
236
236
  raise ValueError(msg)
237
- movie_shape_3d = cast(tuple[int, int, int], movie_shape)
237
+ movie_shape_3d = movie_shape
238
238
 
239
239
  recording = RecordingData(
240
240
  path=data_path,
@@ -85,10 +85,10 @@ def show_empty_viewer_message(
85
85
  overlay.text = empty_viewer_message(update_command=update_command)
86
86
  overlay.visible = True
87
87
  overlay.position = "top_center"
88
- overlay.font_size = 13
89
- overlay.color = "white"
90
- overlay.box = True
91
- overlay.box_color = (0.0, 0.0, 0.0, 0.65)
88
+ overlay.font_size = 18
89
+ overlay.color = "#c8cdd3"
90
+ overlay.box = False
91
+ overlay.box_color = (0.0, 0.0, 0.0, 0.0)
92
92
 
93
93
 
94
94
  def hide_empty_viewer_message(viewer: object) -> None:
twopy/napari/protocols.py CHANGED
@@ -80,6 +80,24 @@ class NapariViewer(Protocol):
80
80
  """
81
81
  ...
82
82
 
83
+ def reset_view(
84
+ self,
85
+ *,
86
+ margin: float = 0.05,
87
+ reset_camera_angle: bool = True,
88
+ ) -> None:
89
+ """Fit visible layers into the current viewer canvas.
90
+
91
+ Args:
92
+ margin: Fractional padding around visible layer extents.
93
+ reset_camera_angle: Whether to reset camera orientation as well as
94
+ zoom and pan.
95
+
96
+ Returns:
97
+ None.
98
+ """
99
+ ...
100
+
83
101
 
84
102
  class NapariLayerWithData(Protocol):
85
103
  """Small protocol for napari layers that expose array-like data.
@@ -137,7 +137,12 @@ def check_for_update(
137
137
  """
138
138
  checked_now = _utc(now)
139
139
  cache = read_version_check_cache(state_file=state_file)
140
- if _cache_is_fresh(cache, now=checked_now, max_age=max_age):
140
+ if _cache_is_fresh(
141
+ cache,
142
+ now=checked_now,
143
+ max_age=max_age,
144
+ current_version=current_version,
145
+ ):
141
146
  return _notice_from_cache(current_version, cache)
142
147
 
143
148
  try:
@@ -243,6 +248,7 @@ def _cache_is_fresh(
243
248
  *,
244
249
  now: datetime,
245
250
  max_age: timedelta,
251
+ current_version: str,
246
252
  ) -> bool:
247
253
  """Return whether the cache is young enough to skip a network check."""
248
254
  if cache is None:
@@ -250,6 +256,13 @@ def _cache_is_fresh(
250
256
  checked_at = _parse_cached_datetime(cache.checked_at)
251
257
  if checked_at is None:
252
258
  return False
259
+ try:
260
+ current = Version(current_version)
261
+ latest = Version(cache.latest_version)
262
+ except InvalidVersion:
263
+ return False
264
+ if latest < current:
265
+ return False
253
266
  return now - checked_at <= max_age
254
267
 
255
268
 
twopy/napari/viewer.py CHANGED
@@ -17,6 +17,7 @@ from typing import TYPE_CHECKING, Protocol, cast
17
17
 
18
18
  import numpy as np
19
19
  import numpy.typing as npt
20
+ from qtpy.QtCore import QTimer
20
21
 
21
22
  from twopy._version import __version__
22
23
  from twopy.napari.empty_state import (
@@ -368,6 +369,11 @@ def add_prepared_recording_to_viewer(
368
369
  )
369
370
  set_labels_brush_size(roi_layer, brush_size=6)
370
371
 
372
+ QTimer.singleShot(
373
+ 0,
374
+ lambda: viewer.reset_view(margin=0.05, reset_camera_angle=False),
375
+ )
376
+
371
377
  from twopy.napari.types import NapariRecordingView
372
378
 
373
379
  return NapariRecordingView(
@@ -398,7 +404,10 @@ def create_viewer() -> NapariViewer:
398
404
  """
399
405
  import napari
400
406
 
401
- viewer = cast(NapariViewer, napari.Viewer(title=APPLICATION_TITLE))
407
+ viewer = cast(
408
+ NapariViewer,
409
+ napari.Viewer(title=APPLICATION_TITLE, show_welcome_screen=False),
410
+ )
402
411
  _set_application_icon(viewer)
403
412
  show_empty_viewer_message(viewer)
404
413
  return viewer
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: twopy
3
- Version: 0.3.4
3
+ Version: 0.3.6
4
4
  Summary: Two-photon imaging analysis tool with a napari interface.
5
5
  Author-email: Gustavo Madeira Santana <fromweb1@gumadeiras.com>
6
6
  License-Expression: MIT
@@ -7,7 +7,7 @@ twopy/api.py,sha256=lveeoPjg-Yy4wWdepy1pnekZj77D-Y4FkvyL6smXgp4,3005
7
7
  twopy/cache_inventory.py,sha256=LJTWotkMASq9o1ebAtXsDb13PY6zYhFEThmQPZErrn8,23241
8
8
  twopy/config.example.yml,sha256=_HymfhzjWSPQc3gscTOAnvlt6ijLHvJ7NWHmeDQBZ74,2764
9
9
  twopy/config.py,sha256=91ZGMTtOaJwSiE7mBoMLTF_VxbF2Hntp9gLawMLiHGQ,24460
10
- twopy/converted.py,sha256=Bmi_bBYoqA-W-T8JEj8i3RGD6Xw5DTkwdi5SNYjLfCU,24920
10
+ twopy/converted.py,sha256=ff8Zh-E5aTkBFeq5LB4N6APKleSHGs8vdNY8pfCejWQ,24892
11
11
  twopy/filenames.py,sha256=uEjiBRygoojU1upQ-HldrtNYZpgq3Mv0gp0VxlWGbnM,1487
12
12
  twopy/frame_ranges.py,sha256=ETREkQxzuof_EgomR-lV75rjSPLObJlss91GENcwxhY,1368
13
13
  twopy/hdf5_utils.py,sha256=f_lddPqI2X-PNjGXWVSbLL6LFpr14ClFqY6zprMsoGo,3816
@@ -96,7 +96,7 @@ twopy/napari/database_search.py,sha256=zcLkhXY9CierCHkcgSPdBsuDtVoz9MjXRWu5ERFpA
96
96
  twopy/napari/dims.py,sha256=veHSbVuiro1eoR25KKfJg9DmpMP_wnoY0QeTXzbcM64,3495
97
97
  twopy/napari/display.py,sha256=Gx-qMjvimDaZ1yueFKJ55b-5h7zkrx4fkxrZWvNxwjA,3362
98
98
  twopy/napari/display_paths.py,sha256=03-Ve2DFs6YNxv8IP41hP0nENcZ7eyGmIOpMLwgfnSI,12503
99
- twopy/napari/empty_state.py,sha256=z-htfDomWZKzKSkBOutE34VpsW1pGZPCV-8WKnLI2EU,4617
99
+ twopy/napari/empty_state.py,sha256=qBPX92hLeaMCmSqUtLdeBsMAwPw072U4hQnVIrxvTpk,4619
100
100
  twopy/napari/errors.py,sha256=hpHSpfnm2ZDAqyMp8kElsR9bDXCDw6xMZyq0ebRwx4s,824
101
101
  twopy/napari/interactive.py,sha256=s7scFUvZRsHCmbYx6QsvHrgk3j6rDuIgGN-mdqvFvpE,15723
102
102
  twopy/napari/latest_worker.py,sha256=3Sv4IrYRaUuALX2LY0LnqpBp6ABH39oq2y3DcRp0IQE,5077
@@ -110,7 +110,7 @@ twopy/napari/loading.py,sha256=P5sXn6LZYzz9m5dRCvxh7vB5NkZuHU97lj8G4IKl1Q8,30638
110
110
  twopy/napari/movie.py,sha256=BAwniak4TR-mk9gnXlwivfPRMb4jhrhQ3EwvgdO2MEY,2344
111
111
  twopy/napari/output_routing.py,sha256=Xy-r_FyWY59tmorp_ouHm_kRMjEXFKtfNsdqCIkYgCs,3953
112
112
  twopy/napari/paths.py,sha256=7UTg9DuPnM9RHfoCK1OQdMDJAFarh9f9pTdj8bd3RB0,5310
113
- twopy/napari/protocols.py,sha256=mA57VWatG4CPm2hSJWXtOx4Fch5QzchL3XnTe-1Y-Bk,3521
113
+ twopy/napari/protocols.py,sha256=ZZKBrihoXNzBYdPp7z7dB9aetZsHrcWwYEdJ40w_w08,3968
114
114
  twopy/napari/responses.py,sha256=5pehTKhX0vXt243uH8RorHO0Mnwc_AhTGFujJeL8hoQ,11803
115
115
  twopy/napari/roi.py,sha256=C74NY22w1ZwFSikb3IWXOXXv3yQv91KBGBQ4TQqYCVE,14901
116
116
  twopy/napari/roi_signatures.py,sha256=f7agEqdEKlRYFZBTV6zTDobOSpKy5A3FpP0_HYdg_7o,618
@@ -120,8 +120,8 @@ twopy/napari/state.py,sha256=P4QD9XZdeHvm_Ebjn7nOqV49gmDUTqBr0kSlOSZruhU,7337
120
120
  twopy/napari/text.py,sha256=amsxpoq4zMj5sHnNIiWpcVS5sS2KzIh7d1vQD2C4paE,2127
121
121
  twopy/napari/trial_timeline.py,sha256=oZSrYDEWfV60mrI9yekc813cc2W8-8EQZVwb7EUQn74,24349
122
122
  twopy/napari/types.py,sha256=yBHw9FSWFdjf8Xp-bK2SKBlH2BW7nIhUgPZceG63amc,1201
123
- twopy/napari/version_check.py,sha256=a4BQJGGVCJw1tym9fCNx12_-TmNvVaATiskyVtjaSAQ,8439
124
- twopy/napari/viewer.py,sha256=I5V7VqPtN3m5grByT-RI8hkQX2DHXv2UAvu-EiCX4ko,21883
123
+ twopy/napari/version_check.py,sha256=hOBIfVb2_YwFqGh9LxwCDaYfTv4oOIqGqZqfDEFCG-A,8730
124
+ twopy/napari/viewer.py,sha256=FIIRjPmuBkgQshTNFVXzXQFtubgnMI2KOs4eAiXhMq4,22079
125
125
  twopy/napari/assets/twopy-app-icon-128.png,sha256=93BO_VF7_CsUCRKpd5OrIid0ax3eV1vUciUtc8UyjP8,10629
126
126
  twopy/napari/assets/twopy-app-icon-16.png,sha256=uTRc_JlpzN1jNrWAu4Zi_xUd2nTvNa9TI--yzkGoJZs,1284
127
127
  twopy/napari/assets/twopy-app-icon-256.png,sha256=mR3Sb0TUGoLQn-nz7hhRNjMyhefJsYPwvYCjFopB2_A,28009
@@ -180,8 +180,8 @@ twopy/parity/psycho5.py,sha256=Xg7Q8Ipyv6hH9AXYKLxU0cLx9z10uWDLg7PNxT-rDyk,13908
180
180
  twopy/parity/roi.py,sha256=Q3deH6xRGCmTXASTlPHQgzH7FhBWkdjRUgh9skyS8j0,4975
181
181
  twopy/parity/roi_extraction.py,sha256=Z-ABVSB4Z6IUqZMWU1bq6Ko1tGP4uTdzk3As0gHaHTA,10372
182
182
  twopy/parity/saved_analysis.py,sha256=Kbpaxh1zapR5XxnHEkin8r4mEZX8kEtonudeZcwI7Dw,5597
183
- twopy-0.3.4.dist-info/METADATA,sha256=Bi5T04QAsFRF8ogd8KtVwiUoD8g9JXoYsqYAVwbH9_M,4143
184
- twopy-0.3.4.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
185
- twopy-0.3.4.dist-info/entry_points.txt,sha256=RnmRKOxEv5ZwLN-dArdSB678gM2iNxbE30VwRpwhp8o,44
186
- twopy-0.3.4.dist-info/top_level.txt,sha256=8MB6QGpnHMTeTfEE543DOr676HcemeoELujrJkFcvak,6
187
- twopy-0.3.4.dist-info/RECORD,,
183
+ twopy-0.3.6.dist-info/METADATA,sha256=8YmH-hI7C1Bz1ZkRgr190obrkmVPYrIFoAnaOfkdZfA,4143
184
+ twopy-0.3.6.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
185
+ twopy-0.3.6.dist-info/entry_points.txt,sha256=RnmRKOxEv5ZwLN-dArdSB678gM2iNxbE30VwRpwhp8o,44
186
+ twopy-0.3.6.dist-info/top_level.txt,sha256=8MB6QGpnHMTeTfEE543DOr676HcemeoELujrJkFcvak,6
187
+ twopy-0.3.6.dist-info/RECORD,,
File without changes