Skip to content

Commit df71b98

Browse files
committed
adding a reader for swc
1 parent 3571546 commit df71b98

4 files changed

Lines changed: 649 additions & 0 deletions

File tree

src/lineagetree/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
read_from_txt_for_celegans,
1313
read_from_txt_for_celegans_BAO,
1414
read_from_txt_for_celegans_CAO,
15+
read_from_swc,
1516
LOADERS,
1617
)
1718
from .lineage_tree_manager import LineageTreeManager
@@ -30,5 +31,6 @@
3031
"read_from_mastodon",
3132
"read_from_txt_for_celegans",
3233
"read_from_txt_for_celegans_CAO",
34+
"read_from_swc",
3335
"LOADERS",
3436
)

src/lineagetree/_io/_loaders.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1064,6 +1064,35 @@ def read_from_mamut_xml(
10641064
)
10651065

10661066

1067+
def read_from_swc(swc_path: Path | str) -> LineageTree:
1068+
"""
1069+
Read a neuronal tree from a swc file
1070+
"""
1071+
with open(swc_path) as f:
1072+
lines = f.readlines()
1073+
1074+
predecessor = {}
1075+
pos = {}
1076+
properties = {}
1077+
properties["radius"] = {}
1078+
properties["structure_id"] = {}
1079+
for line in lines:
1080+
line = line.strip()
1081+
if len(line) < 1 or line[0] == "#":
1082+
continue
1083+
id_, struct_id, x, y, z, rad, parent = [
1084+
eval(li) for li in line.split()
1085+
]
1086+
predecessor[id_] = parent
1087+
pos[id_] = np.array([x, y, z])
1088+
properties["radius"][id_] = rad
1089+
properties["structure_id"][id_] = struct_id
1090+
1091+
return LineageTree(
1092+
predecessor=predecessor, pos=pos, root_leaf_value=(-1,), **properties
1093+
)
1094+
1095+
10671096
LOADERS = { # put all formats in smaller case
10681097
"bmf": {
10691098
"BMF loader": read_from_bmf,
@@ -1091,4 +1120,7 @@ def read_from_mamut_xml(
10911120
"C. elegans CAO loader": read_from_txt_for_celegans_CAO,
10921121
"C. elegans BAO loader": read_from_txt_for_celegans_BAO,
10931122
},
1123+
"swc": {
1124+
"Neurons format": read_from_swc,
1125+
},
10941126
}

0 commit comments

Comments
 (0)