diff --git a/arbor/include/arbor/morph/region.hpp b/arbor/include/arbor/morph/region.hpp index 629c7345b05e040f14baccecd2a08e65ca8190e6..40db2f63b5a2f3e469e60d0774fa6786d40d714b 100644 --- a/arbor/include/arbor/morph/region.hpp +++ b/arbor/include/arbor/morph/region.hpp @@ -147,12 +147,12 @@ region radius_gt(region reg, double r); region radius_ge(region reg, double r); // Region with all segments with projection less than/less than or equal to r -region z_dist_from_soma_lt(double r); -region z_dist_from_soma_le(double r); +region z_dist_from_root_lt(double r); +region z_dist_from_root_le(double r); // Region with all segments with projection greater than/greater than or equal to r -region z_dist_from_soma_gt(double r); -region z_dist_from_soma_ge(double r); +region z_dist_from_root_gt(double r); +region z_dist_from_root_ge(double r); // Region with all segments in a cell. region all(); diff --git a/arbor/morph/locset.cpp b/arbor/morph/locset.cpp index e9acaef7675baa63d515661d5767fe5f62c33950..5accd8818f597fc8f8eb004c1c9104960ca6f1ba 100644 --- a/arbor/morph/locset.cpp +++ b/arbor/morph/locset.cpp @@ -308,8 +308,7 @@ mlocation_list thingify_(const uniform_& u, const mprovider& p) { } std::ostream& operator<<(std::ostream& o, const uniform_& u) { - return o << "(uniform from region: \"" << u.reg << "\"; using seed: " << u.seed - << "; range: {" << u.left << ", " << u.right << "})"; + return o << "(uniform " << u.reg << " " << u.left << " " << u.right << " " << u.seed << ")"; } // Intersection of two point sets. diff --git a/arbor/morph/region.cpp b/arbor/morph/region.cpp index 9aafa123c7beacdcf28f3b542a272093427e658b..c98313a31e3a0e44e4462174b250b9eaa10d62a1 100644 --- a/arbor/morph/region.cpp +++ b/arbor/morph/region.cpp @@ -374,7 +374,7 @@ mcable_list thingify_(const distal_interval_& reg, const mprovider& p) { } std::ostream& operator<<(std::ostream& o, const distal_interval_& d) { - return o << "(distal_interval: " << d.start << ", " << d.distance << ")"; + return o << "(distal_interval " << d.start << " " << d.distance << ")"; } // Region with all segments proximal from another region @@ -426,7 +426,7 @@ mcable_list thingify_(const proximal_interval_& reg, const mprovider& p) { } std::ostream& operator<<(std::ostream& o, const proximal_interval_& d) { - return o << "(distal_interval: " << d.end << ", " << d.distance << ")"; + return o << "(distal_interval " << d.end << " " << d.distance << ")"; } mcable_list radius_cmp(const mprovider& p, region r, double v, comp_op op) { @@ -459,7 +459,7 @@ mcable_list thingify_(const radius_lt_& r, const mprovider& p) { } std::ostream& operator<<(std::ostream& o, const radius_lt_& r) { - return o << "(radius_lt: " << r.reg << ", " << r.val << ")"; + return o << "(radius_lt " << r.reg << " " << r.val << ")"; } // Region with all segments with radius less than r @@ -477,7 +477,7 @@ mcable_list thingify_(const radius_le_& r, const mprovider& p) { } std::ostream& operator<<(std::ostream& o, const radius_le_& r) { - return o << "(radius_le: " << r.reg << ", " << r.val << ")"; + return o << "(radius_le " << r.reg << " " << r.val << ")"; } // Region with all segments with radius greater than r @@ -495,7 +495,7 @@ mcable_list thingify_(const radius_gt_& r, const mprovider& p) { } std::ostream& operator<<(std::ostream& o, const radius_gt_& r) { - return o << "(radius_gt: " << r.reg << ", " << r.val << ")"; + return o << "(radius_gt " << r.reg << " " << r.val << ")"; } // Region with all segments with radius greater than or equal to r @@ -513,7 +513,7 @@ mcable_list thingify_(const radius_ge_& r, const mprovider& p) { } std::ostream& operator<<(std::ostream& o, const radius_ge_& r) { - return o << "(radius_ge: " << r.reg << ", " << r.val << ")"; + return o << "(radius_ge " << r.reg << " " << r.val << ")"; } mcable_list projection_cmp(const mprovider& p, double v, comp_op op) { @@ -542,7 +542,7 @@ mcable_list thingify_(const projection_lt_& r, const mprovider& p) { } std::ostream& operator<<(std::ostream& o, const projection_lt_& r) { - return o << "(projection_lt: " << r.val << ")"; + return o << "(projection_lt " << r.val << ")"; } // Region with all segments with projection less than or equal to val @@ -559,7 +559,7 @@ mcable_list thingify_(const projection_le_& r, const mprovider& p) { } std::ostream& operator<<(std::ostream& o, const projection_le_& r) { - return o << "(projection_le: " << r.val << ")"; + return o << "(projection_le " << r.val << ")"; } // Region with all segments with projection greater than val @@ -576,7 +576,7 @@ mcable_list thingify_(const projection_gt_& r, const mprovider& p) { } std::ostream& operator<<(std::ostream& o, const projection_gt_& r) { - return o << "(projection_gt: " << r.val << ")"; + return o << "(projection_gt " << r.val << ")"; } // Region with all segments with projection greater than val @@ -593,10 +593,10 @@ mcable_list thingify_(const projection_ge_& r, const mprovider& p) { } std::ostream& operator<<(std::ostream& o, const projection_ge_& r) { - return o << "(projection_ge: " << r.val << ")"; + return o << "(projection_ge " << r.val << ")"; } -region z_dist_from_soma_lt(double r0) { +region z_dist_from_root_lt(double r0) { if (r0 == 0) { return {}; } @@ -605,19 +605,19 @@ region z_dist_from_soma_lt(double r0) { return intersect(std::move(lt), std::move(gt)); } -region z_dist_from_soma_le(double r0) { +region z_dist_from_root_le(double r0) { region le = reg::projection_le(r0); region ge = reg::projection_ge(-r0); return intersect(std::move(le), std::move(ge)); } -region z_dist_from_soma_gt(double r0) { +region z_dist_from_root_gt(double r0) { region lt = reg::projection_lt(-r0); region gt = reg::projection_gt(r0); return region{join(std::move(lt), std::move(gt))}; } -region z_dist_from_soma_ge(double r0) { +region z_dist_from_root_ge(double r0) { region lt = reg::projection_le(-r0); region gt = reg::projection_ge(r0); return region{join(std::move(lt), std::move(gt))}; diff --git a/python/morph_parse.cpp b/python/morph_parse.cpp index bef6fef2b5c650d86cdbb5209deb0b41f810f70d..64288f0f35cde5f1d2b47af21719cbfe6c584f1a 100644 --- a/python/morph_parse.cpp +++ b/python/morph_parse.cpp @@ -197,6 +197,14 @@ std::unordered_multimap<std::string, evaluator> eval_map { "'radius_gt' with 2 arguments: (reg:region radius:real)")}, {"radius_ge",make_call<arb::region, double>(arb::reg::radius_ge, "'radius_ge' with 2 arguments: (reg:region radius:real)")}, + {"z_dist_from_root_lt",make_call<double>(arb::reg::z_dist_from_root_lt, + "'z_dist_from_root_lt' with 1 arguments: (distance:real)")}, + {"z_dist_from_root_le",make_call<double>(arb::reg::z_dist_from_root_le, + "'z_dist_from_root_le' with 1 arguments: (distance:real)")}, + {"z_dist_from_root_gt",make_call<double>(arb::reg::z_dist_from_root_gt, + "'z_dist_from_root_gt' with 1 arguments: (distance:real)")}, + {"z_dist_from_root_ge",make_call<double>(arb::reg::z_dist_from_root_ge, + "'z_dist_from_root_ge' with 1 arguments: (distance:real)")}, {"join", make_fold<arb::region>(static_cast<arb::region(*)(arb::region, arb::region)>(arb::join), "'join' with at least 2 arguments: (region region [...region])")}, {"intersect",make_fold<arb::region>(static_cast<arb::region(*)(arb::region, arb::region)>(arb::intersect), diff --git a/test/unit/test_morph_expr.cpp b/test/unit/test_morph_expr.cpp index 5a06a27586ea7c5e24b260f12830b9b3ea21ee39..9f2d9449fda9801f796f5ed91809d00a8db232b5 100644 --- a/test/unit/test_morph_expr.cpp +++ b/test/unit/test_morph_expr.cpp @@ -854,29 +854,29 @@ TEST(region, thingify_complex_morphologies) { mprovider mp(morphology(sm, false)); using reg::all; - using reg::z_dist_from_soma_lt; - using reg::z_dist_from_soma_le; - using reg::z_dist_from_soma_gt; - using reg::z_dist_from_soma_ge; + using reg::z_dist_from_root_lt; + using reg::z_dist_from_root_le; + using reg::z_dist_from_root_gt; + using reg::z_dist_from_root_ge; using reg::cable; // Test projection - EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_soma_lt(0), mp), (mcable_list{}))); - EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_soma_ge(0), mp), thingify(all(), mp))); + EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_root_lt(0), mp), (mcable_list{}))); + EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_root_ge(0), mp), thingify(all(), mp))); - EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_soma_le(100), mp), thingify(all(), mp))); - EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_soma_gt(100), mp), (mcable_list{}))); + EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_root_le(100), mp), thingify(all(), mp))); + EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_root_gt(100), mp), (mcable_list{}))); - EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_soma_le(90), mp), thingify(all(), mp))); - EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_soma_gt(90), mp), (mcable_list{}))); + EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_root_le(90), mp), thingify(all(), mp))); + EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_root_gt(90), mp), (mcable_list{}))); - EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_soma_lt(20), mp), + EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_root_lt(20), mp), (mcable_list{{0,0,1}, {1,0,0.578250901781922829}, {2,0.61499300915417734997,0.8349970039232188642}, {3,0,0.179407353580315756} }))); - EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_soma_ge(20), mp), + EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_root_ge(20), mp), (mcable_list{{0,1,1}, {1,0.578250901781922829,1}, {2,0,0.61499300915417734997}, @@ -885,9 +885,9 @@ TEST(region, thingify_complex_morphologies) { {4,0,1}, {5,0,1} }))); - EXPECT_TRUE(cablelist_eq(thingify(join(z_dist_from_soma_lt(20), z_dist_from_soma_ge(20)), mp), thingify(all(), mp))); + EXPECT_TRUE(cablelist_eq(thingify(join(z_dist_from_root_lt(20), z_dist_from_root_ge(20)), mp), thingify(all(), mp))); - EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_soma_le(50), mp), + EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_root_le(50), mp), (mcable_list{{0,0,1}, {1,0,1}, {2,0,0.2962417607888518767}, @@ -897,12 +897,12 @@ TEST(region, thingify_complex_morphologies) { {4,0,0.0869615364994152821}, {5,0,0.25} }))); - EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_soma_gt(50), mp), + EXPECT_TRUE(cablelist_eq(thingify(z_dist_from_root_gt(50), mp), (mcable_list{{2,0.2962417607888518767,0.4499900130773962142}, {3,0.4485183839507893905,0.7691110303704736343}, {4,0.0869615364994152821,1}, {5,0.25,1}}))); - EXPECT_TRUE(cablelist_eq(thingify(join(z_dist_from_soma_le(50), z_dist_from_soma_gt(50)), mp), thingify(all(), mp))); + EXPECT_TRUE(cablelist_eq(thingify(join(z_dist_from_root_le(50), z_dist_from_root_gt(50)), mp), thingify(all(), mp))); } }