Skip to content

Commit 5dacaab

Browse files
committed
feat(embeddings): default to 2D plot
1 parent 1b246fa commit 5dacaab

File tree

3 files changed

+24
-19
lines changed

3 files changed

+24
-19
lines changed

src/nrtk_explorer/app/embeddings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ def settings_widget(self):
276276
with html.Div(trame_server=self.server, classes="col"):
277277
with html.Div(classes="q-gutter-y-md"):
278278
quasar.QBtnToggle(
279-
v_model=("dimensionality", "3"),
279+
v_model=("dimensionality", "2"),
280280
toggler_color="primary",
281281
flat=True,
282282
spread=True,

src/nrtk_explorer/library/multiprocess_predictor.py

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import uuid
88
from .predictor import Predictor
99

10+
WORKER_RESPONSE_TIMEOUT = 40
11+
1012

1113
def _child_worker(request_queue, result_queue, model_name, force_cpu):
1214
signal.signal(signal.SIGINT, signal.SIG_IGN) # Ignore Ctrl+C in child
@@ -31,8 +33,7 @@ def _child_worker(request_queue, result_queue, model_name, force_cpu):
3133
if command == "SET_MODEL":
3234
try:
3335
predictor = Predictor(
34-
model_name=payload["model_name"],
35-
force_cpu=payload["force_cpu"],
36+
model_name=payload["model_name"], force_cpu=payload["force_cpu"]
3637
)
3738
result_queue.put((req_id, {"status": "OK"}))
3839
except Exception as e:
@@ -90,6 +91,23 @@ def _start_process(self):
9091
)
9192
self._proc.start()
9293

94+
def _get_response(self, req_id, timeout=WORKER_RESPONSE_TIMEOUT):
95+
while True:
96+
try:
97+
r_id, data = self._result_queue.get(timeout=timeout)
98+
except queue.Empty:
99+
raise TimeoutError("No response from worker.")
100+
if r_id == req_id:
101+
return data
102+
103+
def _wait_for_response(self, req_id):
104+
return self._get_response(req_id, WORKER_RESPONSE_TIMEOUT)
105+
106+
async def _wait_for_response_async(self, req_id):
107+
return await asyncio.get_event_loop().run_in_executor(
108+
None, self._get_response, req_id, WORKER_RESPONSE_TIMEOUT
109+
)
110+
93111
def set_model(self, model_name, force_cpu=False):
94112
with self._lock:
95113
self.model_name = model_name
@@ -118,21 +136,6 @@ async def infer(self, images):
118136
resp = await self._wait_for_response_async(req_id)
119137
return resp.get("result")
120138

121-
async def _wait_for_response_async(self, req_id):
122-
return await asyncio.get_event_loop().run_in_executor(None, self._get_response, req_id, 40)
123-
124-
def _wait_for_response(self, req_id):
125-
return self._get_response(req_id, 40)
126-
127-
def _get_response(self, req_id, timeout=40):
128-
while True:
129-
try:
130-
r_id, data = self._result_queue.get(timeout=timeout)
131-
except queue.Empty:
132-
raise TimeoutError("No response from worker.")
133-
if r_id == req_id:
134-
return data
135-
136139
def reset(self):
137140
with self._lock:
138141
req_id = str(uuid.uuid4())

vue-components/src/components/ScatterPlot.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ type Events = {
4242
const emit = defineEmits<Events>()
4343
4444
const plotContainer = ref<HTMLDivElement>()
45-
const selectMode = ref<boolean>(false)
45+
const selectMode = ref<boolean>(true)
4646
const colors = ref({ viridis, cividis, magma, inferno })
4747
const colorMapName = ref<keyof typeof colors.value>('viridis')
4848
const domain: Vector2<number> = [0, 1]
@@ -174,6 +174,8 @@ onMounted(() => {
174174
175175
// Without this there is an error upon browser refresh when sequences are defined.
176176
scatterPlot.render(dataset.value)
177+
// needs to be after render or pan mode and select are initially active at the same time
178+
scatterPlot.setSelectMode()
177179
})
178180
179181
function emitCameraPosition() {

0 commit comments

Comments
 (0)