Skip to content
Snippets Groups Projects
Commit 856d0792 authored by Sharon Yates's avatar Sharon Yates
Browse files

Pixel counts per AllenID

Add time to run
Calculate pixel counts per AllenID
Write to CSV
parent 1474c5fe
No related branches found
No related tags found
No related merge requests found
...@@ -160,4 +160,6 @@ cython_debug/ ...@@ -160,4 +160,6 @@ cython_debug/
#.idea/ #.idea/
outputs/ outputs/
\ No newline at end of file
fileForMessingAround.py
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
import numpy as np import numpy as np
from DeepSlice.coord_post_processing.spacing_and_indexing import number_sections from DeepSlice.coord_post_processing.spacing_and_indexing import number_sections
import json import json
from VisuAlignWarpVec import triangulate, transform_vec from visualign_deformations import triangulate, transform_vec
from glob import glob from glob import glob
from tqdm import tqdm from tqdm import tqdm
import cv2 import cv2
......
#pandas is used for working with csv files #pandas is used for working with csv files
import pandas as pd import pandas as pd
#nrrd just lets us open nrrd files #nrrd just lets us open nrrd files
import nrrd import nrrd
import numpy as np
import csv
from datetime import datetime
#this is a hack to let us import as if we are in the parent directory
import sys
sys.path.append('..')
#import our function for converting a folder of segmentations to points #import our function for converting a folder of segmentations to points
from PyNutil.PyNutil import FolderToAtlasSpace, labelPoints, WritePointsToMeshview from PyNutil import FolderToAtlasSpace, labelPoints, WritePointsToMeshview
volume_path = "../annotation_volumes//annotation_10_reoriented.nrrd"
data, header = nrrd.read(volume_path)
startTime = datetime.now()
segmentation_folder = "../test_data/oneSection15/" segmentation_folder = "../test_data/oneSection15/"
alignment_json = "../test_data/C68_nonlinear.json" alignment_json = "../test_data/C68_nonlinear.json"
...@@ -17,15 +23,62 @@ points = FolderToAtlasSpace(segmentation_folder,alignment_json, pixelID=[255, 0, ...@@ -17,15 +23,62 @@ points = FolderToAtlasSpace(segmentation_folder,alignment_json, pixelID=[255, 0,
#first we need to find the label file for the volume #first we need to find the label file for the volume
label_path = "../annotation_volumes//allen2022_colours.csv" label_path = "../annotation_volumes//allen2022_colours.csv"
#then the path to the volume #then the path to the volume
volume_path = "../annotation_volumes//annotation_10_reoriented.nrrd"
#read the label file #read the label files
label_df = pd.read_csv(label_path) label_df = pd.read_csv(label_path)
#read the annotation volume, it also has a header but we don't need it #read the annotation volume, it also has a header but we don't need it
data, header = nrrd.read(volume_path)
#now we can get the labels for each point #now we can get the labels for each point
labels = labelPoints(points, data, scale_factor=2.5) labels = labelPoints(points, data, scale_factor=2.5)
#save points to a meshview json #save points to a meshview json
WritePointsToMeshview(points, labels,"../outputs/points.json", label_df) WritePointsToMeshview(points, labels,"../outputs/points.json", label_df)
#Task:
# Make a pandas dataframe
# Column 1: counted_labels
# Column 2: label_counts
# Column 3: region_name (look up by reading Allen2022_colours.csv, look up name and RGB)
# Save dataframe in output as CSV
# next task is to create functions from this.
counted_labels, label_counts = np.unique(labels, return_counts=True)
counts_per_label = list(zip(counted_labels,label_counts))
df_counts_per_label = pd.DataFrame(counts_per_label, columns=["allenID","pixel count"])
allen_colours = "../annotation_volumes//allen2022_colours.csv"
df_allen_colours =pd.read_csv(allen_colours, sep=",")
df_allen_colours
#look up name, r, g, b in df_allen_colours in df_counts_per_label based on "allenID"
new_rows = []
for index, row in df_counts_per_label.iterrows():
mask = df_allen_colours["allenID"] == row["allenID"]
current_region_row = df_allen_colours[mask]
current_region_name = current_region_row["name"].values
current_region_red = current_region_row["r"].values
current_region_green = current_region_row["g"].values
current_region_blue = current_region_row["b"].values
row["name"] = current_region_name[0]
row["r"] = current_region_red[0]
row["g"] = current_region_green[0]
row["b"] = current_region_blue[0]
new_rows.append(row)
df_counts_per_label_name = pd.DataFrame(new_rows)
df_counts_per_label_name
# write to csv file
df_counts_per_label_name.to_csv("../outputs/counts_per_allenID.csv", sep=";", na_rep='', index= False)
#r = df_allen_colours["r"]
#g = df_allen_colours["g"]
#b = df_allen_colours["b"]
#region_name = df_allen_colours["name"]
#while we havent added it here it would be good to next quantify the number of cells for each label. #while we havent added it here it would be good to next quantify the number of cells for each label.
time_taken = datetime.now() - startTime
print(f"time taken was: {time_taken}")
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment