diff --git a/model_server/base/accessors.py b/model_server/base/accessors.py
index 7f2f74d7767d0c3d8851ffa13d586e78ebbefb7d..64a9d6832d07dc0a79a77fd01fe3a9768ad31221 100644
--- a/model_server/base/accessors.py
+++ b/model_server/base/accessors.py
@@ -73,6 +73,9 @@ class GenericImageDataAccessor(ABC):
     def get_z_argmax(self):
         return self.apply(lambda x: x.argmax(axis=self.get_axis('Z')))
 
+    def get_focus_vector(self):
+        return self.data.sum(axis=(0, 1, 2))
+
     @property
     def data_xy(self) -> np.ndarray:
         if not self.chroma == 1 and self.nz == 1:
diff --git a/tests/base/test_accessors.py b/tests/base/test_accessors.py
index 452cb3c09ff8da94c1c9a0b01a8b50a6919534d0..9bb3b7a8c5a50a4f9aedc1818df3febc2590eaa3 100644
--- a/tests/base/test_accessors.py
+++ b/tests/base/test_accessors.py
@@ -72,6 +72,16 @@ class TestCziImageFileAccess(unittest.TestCase):
         self.assertEqual(am.shape, (h, w, 1, 1))
         self.assertTrue(np.all(am.unique()[0] == range(0, nz)))
 
+    def test_get_single_channel_z_series_from_zstack(self):
+        w = 256
+        h = 512
+        nc = 4
+        nz = 11
+        c = 3
+        cf = InMemoryDataAccessor(np.random.rand(h, w, nc, nz))
+        zs = cf.get_mono(c).get_focus_vector()
+        self.assertEqual(zs.shape, (nz, ))
+
     def test_get_zi(self):
         w = 256
         h = 512