-
Notifications
You must be signed in to change notification settings - Fork 0
/
DBReinitializer.py
76 lines (66 loc) · 2.68 KB
/
DBReinitializer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
from pathlib import Path
from typing import Callable
from PyQt5.QtCore import QThread, pyqtSignal
from PyQt5.QtWidgets import QMainWindow
from torch.nn import Module
from transformers import CLIPVisionModelWithProjection, AutoProcessor
from MultimediaDB import MultimediaDB
class DBReinitializer(QThread):
progress = pyqtSignal(int)
status = pyqtSignal(str)
def __init__(self, db: MultimediaDB,
folder: Path,
clip: CLIPVisionModelWithProjection,
clip_processor: AutoProcessor,
autoencoder: Module,
update_func: Callable,
calling_win: QMainWindow) -> None:
"""
Initializes the DBReinitializer thread with the necessary components.
Arguments:
----------
db : MultimediaDB
The multimedia database object to be reinitialized.
folder : Path
The directory path where the database files are stored.
clip : CLIPVisionModelWithProjection
The CLIP model used for semantic embeddings.
clip_processor : AutoProcessor
Processor for preparing inputs for the CLIP model.
autoencoder : torch.Module
Autoencoder model used for content embeddings.
update_func : Callable
A callable function to update the database status label in the settings window.
calling_win : QMainWindow
The window that initiated the database reinitialization, which will be closed upon completion.
Returns:
--------
None
"""
super().__init__()
self.db = db
self.folder = folder
self.clip = clip
self.clip_processor = clip_processor
self.autoencoder = autoencoder
self.update_func = update_func
self.calling_win = calling_win
def run(self) -> None:
"""
Executes the database reinitialization process.
Behavior:
---------
- Reinitializes the database using the provided folder, models, and processor.
- Emits progress updates and status messages during the process.
- Resets the database object after reinitialization.
- Calls the update function to synchronize the database status with the settings window.
- Closes the calling window upon completion of the reinitialization.
Returns:
--------
None
"""
self.db.reinitialize_db(self.folder, self.clip, self.clip_processor, self.autoencoder, self.progress.emit,
self.status.emit)
self.db = MultimediaDB()
self.update_func(self.db.check_file_integrity())
self.calling_win.close()