diff --git a/scripts/extension/attributes/morphology_impl.py b/scripts/extension/attributes/morphology_impl.py
index c29e3a2721482f29b0e00485e60131433c969583..b783981fc4e5d6312fcb7b7a10ac434c8bb2536e 100644
--- a/scripts/extension/attributes/morphology_impl.py
+++ b/scripts/extension/attributes/morphology_impl.py
@@ -13,6 +13,8 @@ from skimage.measure import regionprops, marching_cubes_lewiner, mesh_surface_ar
 from skimage.transform import resize
 from skimage.util import pad
 from scipy.ndimage.morphology import distance_transform_edt
+from mahotas.features import haralick
+from skimage.morphology import label, remove_small_objects
 
 
 def log(msg):
@@ -122,6 +124,23 @@ def intensity_row_features(raw, mask):
     return mean_intensity, st_dev
 
 
+def texture_row_features(raw, mask):
+    # errors if there are small, isolated spots (because I'm using ignore zeros as true)
+    # so here remove components that are < 10 pixels
+    labelled = label(mask)
+    if len(np.unique(labelled)) > 2:
+        labelled = remove_small_objects(labelled, min_size=10)
+        mask = labelled != 0
+        mask = mask.astype('uint8')
+
+    # set regions outside mask to zero
+    raw_copy = raw.copy()
+    raw_copy[mask == 0] = 0
+
+    hara = haralick(raw_copy, ignore_zeros=True, return_mean=True, distance=2)
+
+    return hara
+
 # compute morphology (and intensity features) for label range
 def morphology_features_for_label_range(table, ds, ds_raw,
                                         scale_factor_seg, scale_factor_raw,