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

Integrate multithreaded file

parent 4259be22
No related branches found
No related tags found
No related merge requests found
......@@ -160,6 +160,11 @@ cython_debug/
#.idea/
#inputs
test_data/tTA_2877_NOP
test_data/tTA_2877_NOP_horizontal_final_2017.json
outputs/
fileForMessingAround.py
\ No newline at end of file
......@@ -16,10 +16,10 @@ data, header = nrrd.read(volume_path)
startTime = datetime.now()
segmentation_folder = "../test_data/ext-d000033_PVMouseExtraction_pub-Nutil_Quantifier_analysis-81264-Input_dir/"
alignment_json = "../test_data/PVMouse_81264_nonlin.json"
segmentation_folder = "../test_data/tTA_2877_NOP/"
alignment_json = "../test_data/tTA_2877_NOP_horizontal_final_2017.json"
#now we can use our function to convert the folder of segmentations to points
points = FolderToAtlasSpaceMultiThreaded(segmentation_folder,alignment_json, pixelID=[255, 0, 0], nonLinear=True)
points = FolderToAtlasSpaceMultiThreaded(segmentation_folder,alignment_json, pixelID=[0, 0, 255], nonLinear=True)
time_taken = datetime.now() - startTime
......
#pandas is used for working with csv files
import pandas as pd
#nrrd just lets us open nrrd files
import nrrd
import numpy as np
import csv
from datetime import datetime
#import our function for converting a folder of segmentations to points
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/tTA_2877_NOP/"
alignment_json = "../test_data/tTA_2877_NOP_horizontal_final_2017.json"
#now we can use our function to convert the folder of segmentations to points
# colour is BGR (not RGB)
points = FolderToAtlasSpace(segmentation_folder,alignment_json, pixelID=[0, 0, 255], nonLinear=True)
#first we need to find the label file for the volume
label_path = "../annotation_volumes//allen2022_colours.csv"
#then the path to the volume
#read the label files
label_df = pd.read_csv(label_path)
#read the annotation volume, it also has a header but we don't need it
#now we can get the labels for each point
labels = labelPoints(points, data, scale_factor=2.5)
#save points to a meshview json
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.
time_taken = datetime.now() - startTime
print(f"time taken was: {time_taken}")
#get centroids and areas returns a list of objects and the center coordinate.
#we need to deform the center coordinate according to visualign deformations¨
#we need to then transform the coordinate into atlas space
#and then save labels like before.
\ 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