如何用BSB过滤艾伦脑图谱单侧半球数据,并配置PlacementStrategy实现单侧细胞放置?
回答
当然可以配置PlacementStrategy仅在单侧半球放置细胞,具体有两种常见实现方式:
基于脑图谱结构ID过滤:利用
AllenStructureLoader获取左侧半球对应的所有结构ID,直接在PlacementStrategy中指定这些ID作为放置范围。Allen脑图谱里每个半球的结构都有独立标识,你可以通过get_structures_by_hemisphere这类方法(具体命名可能依库版本略有不同)提取左侧结构列表,再将其ID传入PlacementStrategy的structure_ids参数。基于坐标位置过滤:如果你的模型用空间坐标定义半球,可添加位置过滤函数。比如假设中线位于x=0平面,左侧半球对应x<0的区域,就可以在
PlacementStrategy中设置position_filter参数为一个lambda函数,仅保留符合坐标条件的位置。
示例代码参考:
# 初始化AllenStructureLoader后获取左侧半球结构 left_hemisphere_structs = allen_loader.get_structures_by_hemisphere("left") left_struct_ids = [struct["id"] for struct in left_hemisphere_structs] # 配置PlacementStrategy placement_strategy = PlacementStrategy( structure_loader=allen_loader, structure_ids=left_struct_ids, # 可选:叠加坐标过滤进一步限制范围 position_filter=lambda pos: pos[0] < 0 )
关于连通性处理的过滤规则:
- 如果你的连通性策略(如投射规则)是基于已放置的细胞群体生成连接,那么自然只会在左侧半球的细胞间建立连接——因为右侧没有任何细胞被放置,不存在跨半球连接的基础。
- 若连通性策略本身依赖Allen脑图谱的投射规则(比如默认包含跨半球投射),则需要额外配置:在连通性策略中同样过滤掉目标结构为右侧半球的条目,确保只生成左侧半球内部的连接。
内容的提问来源于stack exchange,提问作者Robin De Schepper
相关产品推荐
相关产品推荐

