stanley-king 2 jaren geleden
bovenliggende
commit
65d4a1018d
5 gewijzigde bestanden met toevoegingen van 58 en 40 verwijderingen
  1. 4 6
      plot/app.py
  2. 14 6
      plot/plot_control.py
  3. 3 4
      plot/refill/ChannelPainter.py
  4. 21 24
      plot/refill/DataStream.py
  5. 16 0
      plot/test_h5py.py

+ 4 - 6
plot/app.py

@@ -38,7 +38,9 @@ def ch_ratio():
         cur_time = int(time.time())
         start_time = int(request.args.get('start_time') or (cur_time - 7200))
         end_time = int(request.args.get('end_time') or cur_time)
-        logger.debug("start_time=%d end_time=%d",start_time,end_time)
+
+        stime = lambda t: time.strftime('%d-%H:%M:%S', time.localtime(start_time))
+        logger.debug("start_time=%s end_time=%s",stime(start_time) ,stime(end_time))
 
         chnames = request.args.get('chnames') or None
         chnames = filter_chname(chnames)
@@ -50,12 +52,8 @@ def ch_ratio():
         if spec is not None:
             spec = int(spec.strip())
 
-        logger.debug('ChannelPainter 1')
         painter = ChannelPainter(start_time=start_time, end_time=end_time, chnames=chnames, card_types=card_types, spec=spec)
-        logger.debug('ChannelPainter 2')
         buf = painter.paint()
-        logger.debug('ChannelPainter 3')
-
         data = base64.b64encode(buf.getbuffer()).decode("ascii")
         return f"<img src='data:image/png;base64,{data}'/>"
     except Exception as ex:
@@ -159,7 +157,7 @@ def mchplot():
 
 
 if __name__ == "__main__":
-    debug_mode = False
+    debug_mode = True
     if debug_mode:
         app.run(debug=True, host='0.0.0.0', port=5000)
     else:

+ 14 - 6
plot/plot_control.py

@@ -24,18 +24,26 @@ def ch_ratio():
     try:
         logger.debug('start chratio')
         cur_time = int(time.time())
-        start_time = int(request.args.get('start_time') or (cur_time - 7200))
-        end_time = int(request.args.get('end_time') or cur_time)
 
-        chnames = request.args.get('chnames') or None
+        start_time = request.args.get('start_time')
+        start_time = cur_time - 7200 if start_time is None else int(start_time.strip())
+
+        end_time = request.args.get('end_time')
+        end_time = cur_time if end_time is None else int(end_time.strip())
+
+        stime = lambda t: time.strftime('%d-%H:%M:%S', time.localtime(t))
+        logger.debug("start_time=%s end_time=%s",stime(start_time) ,stime(end_time))
+
+        chnames = request.args.get('chnames')
         chnames = filter_chname(chnames)
 
-        card_types = request.args.get('card_types') or None
+        card_types = request.args.get('card_types')
         card_types = filter_cardtype(card_types)
 
-        spec = request.args.get('spec') or None
+        spec = request.args.get('spec')
         if spec is not None:
-            spec = int(spec.strip())
+                spec = int(spec.strip())
+
         painter = ChannelPainter(start_time=start_time, end_time=end_time, chnames=chnames, card_types=card_types, spec=spec)
         buf = painter.paint()
 

+ 3 - 4
plot/refill/ChannelPainter.py

@@ -52,14 +52,15 @@ def allpathes(reader: ChannelReader, tuple_pathes: dict, days: list, spec=None):
 
 class ChannelPainter(object):
     def __init__(self, start_time: int, end_time: int, chnames: set = None, card_types: set = None, spec: int = None):
-        logger.debug("start_time=%d end_time=%d",start_time,end_time)
-
         self._reader = ChannelReader()
         _start_time, _end_time, self._chnames, self._card_types, self._spec = start_time, end_time, chnames, card_types, spec
 
         start_time = self._reader.near_stamp(_start_time,True)
         end_time = self._reader.near_stamp(_end_time,False)
 
+        stime = lambda t: time.strftime('%d-%H:%M:%S', time.localtime(t))
+        logger.debug("start_time=%s end_time=%s",stime(start_time) ,stime(end_time))
+
         interval = calc_interval(start_time, end_time)
         start_time = time_border(interval, start_time, True)
         end_time = time_border(interval, end_time, False)
@@ -67,8 +68,6 @@ class ChannelPainter(object):
         self._start_time = start_time
         self._end_time = end_time
         self._interval = interval
-
-
         pass
 
     def _fig_funs(self):

+ 21 - 24
plot/refill/DataStream.py

@@ -5,11 +5,13 @@ import h5py
 from enum import IntEnum
 import threading
 
-__all__ = ['DataWriteStream', 'DataReadStream', 'day_stamp', 'EMchPosmap', 'EChPosmap', 'ENetPosmap', 'open_hdf5','time_border']
+__all__ = ['DataWriteStream', 'DataReadStream', 'day_stamp', 'EMchPosmap', 'EChPosmap', 'ENetPosmap', 'open_hdf5', 'time_border']
 
 import logging
+
 logger = logging.getLogger('stream')
 
+
 def day_stamp(stamp):
     import time as stime
 
@@ -40,7 +42,8 @@ def time_border(interval, time_stamp, lt):
 
     return pos + day
 
-def calc_interval(start,end):
+
+def calc_interval(start, end):
     period = end - start
     segment = int(period / 24)
     if segment == 0:
@@ -53,7 +56,7 @@ def calc_interval(start,end):
     pass
 
 
-def span_days(start_time,end_time):
+def span_days(start_time, end_time):
     start_day = day_stamp(start_time)
     end_day = day_stamp(end_time)
 
@@ -93,8 +96,10 @@ class DataWriteStream(metaclass=ABCMeta):
             self._hfive.close()
             self._hfive = None
         self._lock.release()
+
     pass
 
+
 class DataReadStream(metaclass=ABCMeta):
     _version = 20200618
     _days = list()
@@ -104,7 +109,6 @@ class DataReadStream(metaclass=ABCMeta):
         self._days = self._getdays()
         logger.debug(self._days)
 
-
     def __del__(self):
         pass
 
@@ -126,7 +130,7 @@ class DataReadStream(metaclass=ABCMeta):
             self._hfive.close()
             self._hfive = None
 
-    def _root_path(self,day_stamp = None):
+    def _root_path(self, day_stamp=None):
         if day_stamp is None:
             return f'/{self._version}/'
         else:
@@ -144,9 +148,12 @@ class DataReadStream(metaclass=ABCMeta):
 
         try:
             path = self._root_path(day_stamp)
-            group = self.file.require_group(path)
-            days = dir(group)
-            return days
+            if path in self.file:
+                group = self.file.require_group(path)
+                days = dir(group)
+                return days
+            else:
+                return []
         except Exception as ex:
             logger.error(ex)
             return []
@@ -174,27 +181,17 @@ class DataReadStream(metaclass=ABCMeta):
             logger.error(ex)
             return []
 
-    def near_stamp(self,time_stamp,left = True):
+    def near_stamp(self, time_stamp, left=True):
         if len(self._days) == 0:
             return None
 
-        day = day_stamp(time_stamp)
-        pos = time_stamp - day
         if left:
-            while True:
-                if day >= self._days[0]:
-                    break
-                else:
-                    day += 86400
+            min = self._days[0]
+            time_stamp = min if time_stamp < min else time_stamp
         else:
-            while True:
-                if day <= self._days[-1]:
-                    break
-                else:
-                    day -= 86400
-
-        return pos + day
-
+            max = self._days[-1] + 86400 - 1
+            time_stamp = max if time_stamp > max else time_stamp
+        return time_stamp
 
 
 class EMchPosmap(IntEnum):

+ 16 - 0
plot/test_h5py.py

@@ -0,0 +1,16 @@
+import unittest
+
+from .refill import open_hdf5
+
+
+
+class MyTestCase(unittest.TestCase):
+    def test_h5py(self):
+        file = '/var/www/html/data/stdata/channel.hdf5'
+        hfive = open_hdf5(file, False)
+        x = list(hfive.keys())
+        print(x)
+
+
+if __name__ == '__main__':
+    unittest.main()