neurenv/swc.py
2026-07-11 18:20:01 -04:00

31 lines
921 B
Python

import numpy as np
def read_swc(file_path):
raw = np.loadtxt(file_path, comments='#')
return {
"id": raw[:, 0].astype(np.int32),
"type": raw[:, 1].astype(np.int32),
"coords": raw[:, 2:5],
"radius": raw[:, 5],
"parent": raw[:, 6].astype(np.int32),
}
def write_swc(file_path, data):
with open(file_path, 'w') as f:
# Combine data into columns
n_nodes = len(data['id'])
swc_data = np.column_stack([
data['id'],
data['type'],
data['coords'],
data['radius'],
data['parent']
])
# Write data rows
for i in range(n_nodes):
f.write(f"{int(swc_data[i, 0])} {int(swc_data[i, 1])} "
f"{swc_data[i, 2]:.4f} {swc_data[i, 3]:.4f} {swc_data[i, 4]:.4f} "
f"{swc_data[i, 5]:.4f} {int(swc_data[i, 6])}\n")