diff --git a/PyNutil/testing_openflatfile.py b/PyNutil/testing_openflatfile.py
index 0bfd6ac128a8dfdb1dd0322832385a6f219864a6..a8ff861821a22e44ef70e176ba0edc80de61aa32 100644
--- a/PyNutil/testing_openflatfile.py
+++ b/PyNutil/testing_openflatfile.py
@@ -1,17 +1,61 @@
 base= r"../test_data\ttA_2877_NOP_atlasmaps\2877_NOP_tTA_lacZ_Xgal_s037_nl.flat"
 import numpy as np
 import struct
+import pandas as pd
+import matplotlib.pyplot as plt
+
+"""read flat file and write into an np array"""
+
 with open(base,"rb") as f:
+    #i dont know what b is, w and h are the width and height that we get from the 
+    #flat file header
     b,w,h=struct.unpack(">BII",f.read(9))
+    #data is a one dimensional list of values
+    #it has the shape width times height
     data=struct.unpack(">"+("xBH"[b]*(w*h)),f.read(b*w*h))
-    
-from PIL import Image
-import random
-image= Image.new("RGB",(w,h))
-for y in range(h):
-    for x in range(w):
-    image.putpixel((x,y),palette[d])
+
+#convert data into an array(this may be unnecessary)
+#previously data was a tuple
+data = np.array(data)
+
+#here we create an empty image in the right shape
+image = np.zeros((h,w))
+#pallette = dict(zip(np.unique(data), np.random.randint(0,255,len(np.unique(data)))))
+#and here we go pixel by pixel placing the value from the flat file
+for x in range(w):
+    for y in range(h):
+        image[y,x] = data[x+y*w]
 
 image_arr = np.array(image)
 
-image_arr.min()
\ No newline at end of file
+# show an image corresponding to the flat file (unique colour per idx)
+plt.imshow(image_arr)
+
+labelfile = pd.read_csv(r"../annotation_volumes\allen2017_colours.csv")
+allen_id_image = np.zeros((h,w))
+plt.imshow(allen_id_image) 
+"""for ph in range(h):
+    for pw in range(w):
+        value_in_data_at_pixel = int(image_arr[ph,pw])
+        allen_id_image[ph, pw] = labelfile.loc[value_in_data_at_pixel, 'idx']"""
+
+"""for efficiency, vectorize instead of using for loop"""
+coordsy, coordsx = np.meshgrid(list(range(w)), list(range(h)))
+
+values = image_arr[coordsx, coordsy]
+lbidx = labelfile['idx'].values
+allen_id_image = lbidx[values.astype(int)]
+
+unique_ids, counts = np.unique(allen_id_image, return_counts=True)
+
+area_per_label = list(zip(unique_ids,counts))
+# create a list of unique regions and pixel counts per region
+
+df_area_per_label = pd.DataFrame(area_per_label, columns=["idx","area_count"])
+# create a pandas df with regions and pixel counts
+
+print(df_area_per_label)
+df_area_per_label.to_csv("../outputs/s037_area_per_idx.csv", sep=";", na_rep='', index= False)
+
+#df_label_colours =pd.read_csv(label_colours, sep=",")
+# find colours corresponding to each region ID and add to the pandas dataframe