11
11
from PyQt5 .QtCore import QFileSystemWatcher , QObject , pyqtSignal , QTimer
12
12
13
13
import dask_image .imread
14
+ from astropy .io import fits
14
15
15
16
if TYPE_CHECKING :
16
17
from os import stat_result
@@ -25,10 +26,18 @@ class DaskImageDataStack:
25
26
"""
26
27
delayed_stack : dask .array .Array | None = None
27
28
28
- def __init__ (self , image_list : list [Image_Data ]):
29
+ def __init__ (self , image_list : list [Image_Data ] | None ):
29
30
if image_list :
30
31
if image_list [0 ].create_delayed_array :
31
- self .delayed_stack = dask .array .concatenate ([image_data .delayed_array for image_data in image_list ])
32
+ if image_list [0 ].image_path .suffix .lower () in [".tif" , ".tiff" ]:
33
+ arrays = [image_data .delayed_array for image_data in image_list ]
34
+ self .delayed_stack = dask .array .stack (dask .array .array (arrays ))
35
+ elif image_list [0 ].image_path .suffix .lower () in [".fits" ]:
36
+ with fits .open (image_list [0 ].image_path .__str__ ()) as fit :
37
+ sample = fit [0 ].data
38
+ arrays = [image_data .delayed_array for image_data in image_list ]
39
+ lazy_arrays = [dask .array .from_delayed (x , shape = sample .shape , dtype = sample .dtype ) for x in arrays ]
40
+ self .delayed_stack = dask .array .stack (lazy_arrays )
32
41
33
42
@property
34
43
def shape (self ):
@@ -88,7 +97,10 @@ def image_modified_time_stamp(self) -> str:
88
97
return time .strftime ("%Y-%m-%d %H:%M:%S" , time .localtime (self .image_modified_time ))
89
98
90
99
def set_delayed_array (self ) -> None :
91
- self .delayed_array = dask_image .imread .imread (self .image_path )
100
+ if self .image_path .suffix .lower () in [".tif" , ".tiff" ]:
101
+ self .delayed_array = dask_image .imread .imread (self .image_path )[0 ]
102
+ elif self .image_path .suffix .lower () == ".fits" :
103
+ self .delayed_array = dask .delayed (fits .open )(self .image_path )[0 ].data
92
104
93
105
94
106
class SubDirectory :
0 commit comments