Browse Source

add preread

Felix Schultze 9 years ago
parent
commit
05e20eb21b
2 changed files with 21 additions and 1 deletions
  1. 18 0
      volumes/processing/service/SubvolumeCreator.py
  2. 3 1
      volumes/views.py

+ 18 - 0
volumes/processing/service/SubvolumeCreator.py

@@ -12,6 +12,8 @@ from skimage import img_as_ubyte
 import time
 from threading import Thread
 
+from multiprocessing import Process
+
 from volumes.models import Volume
 import loadtests.facade as loadtests
 
@@ -132,3 +134,19 @@ def subvolumeCreator(volumeId, x, y, z, t, minWidth, sqrtZ, numberOfLayers, spri
 
 def get_sprite_filename(sprite_id, sprite_format):
     return '%s.%s' % (str(sprite_id), sprite_format)
+
+def preread_volume(volume_id):
+    logger.debug('preread called')
+    process = Process(target=_preread_volume, args=(volume_id,))
+    process.start()
+
+def _preread_volume(volume_id):
+    logger.debug('_prearead called');
+    volume = Volume.objects(id=volume_id).first()
+
+    raw_frames = volume.rawFrames
+    for framenumber in range(0, len(raw_frames)):
+        logger.debug('read frame array with framenumber %d' % framenumber)
+        raw = volume.get_frame_numpy_array(framenumber)
+        for slice in raw:
+            data[:, :] = slice[:, :]

+ 3 - 1
volumes/views.py

@@ -15,7 +15,7 @@ from multiprocessing import Process
 from .models import Volume
 from .forms import VolumeForm
 
-from volumes.processing.service import SliceGenerator
+from volumes.processing.service import SliceGenerator, SubvolumeCreator
 
 import logging
 
@@ -206,6 +206,8 @@ def render3D(request, id, res=None):
     if res is not None:
         res = int(res)
 
+    SubvolumeCreator.preread_volume(id)
+
     requestedResFound = False
     sizes = []
     for index in range(0, len(volume.textures)):