From 56ea425a38c73372a406aaaddbc19d342f1c1841 Mon Sep 17 00:00:00 2001
From: Jan Grewe <jan.grewe@g-node.org>
Date: Fri, 15 Jan 2021 13:48:38 +0100
Subject: [PATCH] first version of loading data

---
 icons/nixview_quit.png   | Bin 5767 -> 7951 bytes
 nixview/file_handler.py  |  70 +++++++++++++++++++++++++++++++++++++++
 nixview/ui/plotscreen.py |  17 +++++++---
 3 files changed, 83 insertions(+), 4 deletions(-)

diff --git a/icons/nixview_quit.png b/icons/nixview_quit.png
index 5a2cd119a73f95a60a105e6fcc7f49dc4553c738..3d3322d1a8ac2c540e6a17c1037f626c442cabcc 100644
GIT binary patch
delta 6228
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
S>cJs^xs>JA<*H=OL;eqqVa+W7

delta 4026
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

diff --git a/nixview/file_handler.py b/nixview/file_handler.py
index 75f237b..a4d484f 100644
--- a/nixview/file_handler.py
+++ b/nixview/file_handler.py
@@ -1,8 +1,12 @@
 import os
 import nixio as nix
+import numpy as np
 from enum import Enum
 import datetime as dt
 
+from numpy.core.defchararray import not_equal
+from nixview.constants import io_chunksize as chunksize
+
 
 class ItemDescriptor():
     def __init__(self, name=None, id=None, type=None, value=None, definition=None, block_id=None, entity_type=None, shape=None, metadata=None, data_type=None, source_id=None, created_at=None, updated_at=None) -> None:
@@ -104,6 +108,54 @@ class NodeType(Enum):
      Feature="Feature"
 
 
+class DataView():
+
+    def __init__(self, item_descriptor, file_handler) -> None:
+        super().__init__()
+        self._item_descriptor = item_descriptor
+        self._file_handler = file_handler
+        self._buffer = None
+        self._full_shape = item_descriptor.shape
+        self._offset = np.zeros(len(self._full_shape), dtype=int)
+        self._count = None
+        self._max_dim = None
+        self.init_buffer()
+        self.request_more()
+
+    def request_more(self):
+        if self.fully_loaded:
+            return
+        data = self._file_handler.request_data(self._item_descriptor, self._offset, self._count)
+        if data is not None and self._buffer is None:
+            self._buffer = data
+            self._offset = data.shape
+        else:
+            print("need to fetch more!")
+        
+    def init_buffer(self):
+        buffer_shape = np.zeros(len(self._full_shape), dtype=int)
+        max_dim_count = chunksize
+        max_dim = np.argmax(self._full_shape)
+        for i, d in enumerate(self._full_shape):
+            if i != max_dim:
+                buffer_shape[i] = self._full_shape[i]
+                max_dim_count /= self._full_shape[i]
+        buffer_shape[max_dim] = max_dim_count
+        self._count = buffer_shape
+        self._max_dim = max_dim
+    
+    
+    @property
+    def fully_loaded(self):
+        return self._buffer is not None and self._full_shape == self._buffer.shape
+    
+    def __str__(self) -> str:
+        r = self._item_descriptor.name + " " + str(self._item_descriptor.entity_type)
+        r += "buffer size: "  + str(self._buffer.shape) if self._buffer is not None else "" + "\n"
+        r += "chunk size:" + str(self._count)
+        r += "is fully loaded: " + str(self.fully_loaded)
+        return r
+    
 class Singleton(type):
     _instances = {}
     def __call__(cls, *args, **kwargs):
@@ -195,6 +247,17 @@ class FileHandler(metaclass=Singleton):
     def filename(self):
         return self._filename
 
+    def request_data(self, entity_descriptor, offset=None, count=None):
+        entity = self._entity_buffer.get(entity_descriptor.id)
+        if entity is None:
+            print("need to do something else")
+        for i, (o, c) in enumerate(zip(offset, count)):
+            if o + c > entity.shape[i]:
+                count[i] = entity.shape[i] - o
+        seg = tuple([slice(o, o + c) for o, c in zip(offset, count)])
+        print(seg)
+        return entity[seg]
+
     def request_section_descriptor(self, id):
         fs = self._entity_buffer.get(id)
         if fs is None:
@@ -271,6 +334,13 @@ class FileHandler(metaclass=Singleton):
             src = e.source if hasattr(e, "source") else None
             itd.source_id = src.id if src is not None else None
             infos.append(itd)
+            if entity_type == NodeType.DataArray:
+                itd.value = "%s %s entries" % (str(e.shape), e.dtype)
+            elif entity_type == NodeType.Tag:
+                point_or_segment = "segment" if e.extent else "point"
+                start = str(e.position)
+                end = ("to " + str(tuple(np.array(e.position) + np.array(e.extent)))) if e.extent else ""
+                itd.value = "tags %s %s %s" %(point_or_segment, start, end) 
             # TODO set the value to something meaningful for the various entity types
         return infos
 
diff --git a/nixview/ui/plotscreen.py b/nixview/ui/plotscreen.py
index 0bc9197..5d9a5ce 100644
--- a/nixview/ui/plotscreen.py
+++ b/nixview/ui/plotscreen.py
@@ -4,11 +4,12 @@ import matplotlib
 matplotlib.use('Qt5Agg')
 from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg
 from matplotlib.figure import Figure
-
+import nixio as nix
 import numpy as np
 import matplotlib.pyplot as plt
 from matplotlib.widgets import Slider
-import nixio as nix
+
+from nixview.file_handler import FileHandler, DataView
 
 
 
@@ -323,8 +324,9 @@ class MplCanvas(FigureCanvasQTAgg):
 class PlotScreen(QWidget):
     close_signal = pyqtSignal()
     
-    def __init__(self, parent) -> None:
+    def __init__(self, parent=None) -> None:
         super().__init__(parent=parent)
+        self._file_handler = FileHandler()
         sc = MplCanvas(self, width=5, height=4, dpi=100)
         sc.axes.plot([0,1,2,3,4], [10,1,20,3,40])
         
@@ -335,9 +337,16 @@ class PlotScreen(QWidget):
         close_btn.clicked.connect(self.on_close)
         
         self.layout().addWidget(close_btn)
+        self._data_view = None
     
     def on_close(self):
         self.close_signal.emit()
         
     def plot(self, item):
-        print("plot!", item)
\ No newline at end of file
+        print("plot!", item)
+        print(item.entity_type, item.shape)
+        self._data_view = DataView(item, self._file_handler)
+        self._data_view.request_more()
+        print(self._data_view)
+        
+    
\ No newline at end of file