From 4ed91614aadba2c0fdd3780e385776061b49b983 Mon Sep 17 00:00:00 2001 From: JesseMckinzie <72471813+JesseMckinzie@users.noreply.github.com> Date: Tue, 30 Aug 2022 13:20:08 -0600 Subject: [PATCH 1/7] Add Nested Python API docs --- README.md | 101 +++++++++++++++++++-- docs/source/examples.rst | 156 +++++++++++++++++++++++++++++++++ docs/source/img/child_int.png | Bin 0 -> 81919 bytes docs/source/img/child_seg.png | Bin 0 -> 4243 bytes docs/source/img/parent_int.png | Bin 0 -> 57791 bytes docs/source/img/parent_seg.png | Bin 0 -> 4487 bytes 6 files changed, 248 insertions(+), 9 deletions(-) create mode 100644 docs/source/img/child_int.png create mode 100644 docs/source/img/child_seg.png create mode 100644 docs/source/img/parent_int.png create mode 100644 docs/source/img/parent_seg.png diff --git a/README.md b/README.md index d5b3a794..372f008f 100644 --- a/README.md +++ b/README.md @@ -299,14 +299,97 @@ __Example__: we need to process collection of mask images located in directory " nyxushie ~/data/image-collection1/seg train_.*\\.tif _ch 1 0 ~/results/result1 ``` -Using the hierarchical ROI Python API is illustrated in the following example: +### Nested features Python API + +The nested features functionality can also be utilized in Python using the `Nested` class in `nyxus`. The `Nested` class +contains two methods, `find_relations` and `featurize`. + +The `find_relations` method takes in a path to the label files, along with a child +filepattern to identify the files in the child channel and a parent filepattern to match the files in the parent channel. The `find_relation` method +returns a Pandas DataFrame containing a mapping between parent ROIS and the respective child ROIs. + +The `featurize` method takes in the parent-child mapping along with the features of the ROIs in the child channel. If a list of aggregate functions +is provided to the constructor, this method will return a pivoted DataFrame where the rows are the ROI labels and the columns are grouped by the features. + + +__Example__: Using aggregate functions + +``` python + +from nyxus import Nyxus, Nested +import numpy as np + +int_path = 'path/to/intensity' +seg_path = 'path/to/segmentation' + +nyx = Nyxus(['GABOR']) + +child_features = nyx.featurize(int_path, seg_path, file_pattern='p[0-9]_y[0-9]_r[0-9]_c0\.ome\.tif') + +nest = Nested(['sum', 'mean', 'min', ('nanmean', lambda x: np.nanmean(x))]) + +df = nest.find_relations(seg_path, 'p{r}_y{c}_r{z}_c1.ome.tif', 'p{r}_y{c}_r{z}_c0.ome.tif') + +df2 = nest.featurize(df, features) ``` -from nyxus import Nested -nyx = Nested() -segPath = "d:\\data\\mini\\seg" -fPat = '.*' -cnlSig = '_c' -parCnl = '1' -chiCnl = '0' -rels = nyx.findrelations (segPath, fPat, cnlSig, parCnl, chiCnl) + +The parent-child map is + +``` bash + Image Parent_Label Child_Label + 0 /path/to/image 72 65 + 1 /path/to/image 71 66 + 2 /path/to/image 70 64 + 3 /path/to/image 68 61 + 4 /path/to/image 67 65 + ``` + +and the aggregated DataFrame is + +``` bash + GABOR_0 GABOR_1 GABOR_2 ... + sum mean min nanmean sum mean min nanmean sum mean ... + label ... + 1 24.010227 0.666951 0.000000 0.666951 19.096262 0.530452 0.001645 0.530452 17.037345 0.473260 ... + 2 13.374170 0.445806 0.087339 0.445806 7.279187 0.242640 0.075000 0.242640 6.390529 0.213018 ... + 3 5.941783 0.198059 0.000000 0.198059 3.364149 0.112138 0.000000 0.112138 2.426409 0.080880 ... + 4 13.428773 0.559532 0.000000 0.559532 12.021938 0.500914 0.008772 0.500914 9.938915 0.414121 ... + 5 6.535722 0.181548 0.000000 0.181548 1.833463 0.050930 0.000000 0.050930 2.083023 0.057862 ... + +``` + +__Example__: Without aggregate functions + +``` python + +from nyxus import Nyxus, Nested +import numpy as np + +int_path = 'path/to/intensity' +seg_path = 'path/to/segmentation' + +nyx = Nyxus(['GABOR']) + +child_features = nyx.featurize(int_path, seg_path, file_pattern='p[0-9]_y[0-9]_r[0-9]_c0\.ome\.tif') + +nest = Nested() + +df = nest.find_relations(seg_path, 'p{r}_y{c}_r{z}_c1.ome.tif', 'p{r}_y{c}_r{z}_c0.ome.tif') + +df2 = nest.featurize(df, features) +``` + +the parent-child map remains the same but the `featurize` result becomes + +``` bash + GABOR_0 ... + Child_Label 1 2 3 4 5 6 7 8 9 10 ... + label ... + 1 0.666951 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... + 2 NaN 0.445806 NaN NaN NaN NaN NaN NaN NaN NaN ... + 3 NaN NaN 0.198059 NaN NaN NaN NaN NaN NaN NaN ... + 4 NaN NaN NaN 0.559532 NaN NaN NaN NaN NaN NaN ... + 5 NaN NaN NaN NaN 0.181548 NaN NaN NaN NaN NaN ... + +``` \ No newline at end of file diff --git a/docs/source/examples.rst b/docs/source/examples.rst index acb0b3bd..7965b770 100644 --- a/docs/source/examples.rst +++ b/docs/source/examples.rst @@ -107,3 +107,159 @@ and the file is passed to Nyxus via parameter --intSegMapFile, the mapping will /home/ec2-user/data-ratbrain/int/image_2.ome.tif /home/ec2-user/data-ratbrain/seg/image_A.ome.tif /home/ec2-user/data-ratbrain/int/image_3.ome.tif /home/ec2-user/data-ratbrain/seg/image_A.ome.tif /home/ec2-user/data-ratbrain/int/image_4.ome.tif /home/ec2-user/data-ratbrain/seg/image_B.ome.tif + +Nested Features Examples +======================= + +The Nested class is the Python API of Nyxus identifies child-parent relations of ROIs in images with a child and parent channel. +For example, consider the following intensity and segmentation images of the parent channel, + +.. list-table:: + + * - .. figure:: img/parent_int.png + + Fig 1. Parent channel intensity + + - .. figure:: img/parent_seg.png + + Fig 2. Parent channel segmentation + +With the child channel + +.. list-table:: + + * - .. figure:: img/child_int.png + + Fig 3. Child channel intensity + + - .. figure:: img/child_seg.png + + Fig 4. Child channel segmentation + + +As shown by the figures, there are ROIs in the child segmentation that are completely contained in the the ROIs of the parent channel. +The purpose of the Nested class is to identify the child ROIs of the parent channel. The Nested class also contains functionality to +apply aggregate functions to the child features, as shown belong in the example. + + +Example +--------- + +To use the Nested class, first call the constructor with the optional argument `aggregate`. If `aggregate` is not passed, the +`find_relation` behavior will change (described later). Any aggregate function supported by Pandas is available, +such as `min`, `max`, `count`, and `mean`. Lambda functions can also be used, and named using a 2-tuple, where the first +element is the name and the second is the lambda function. This allows functions that are not supported by Pandas to be used, +such as Numpy's `np.nanmean`. + +To use the Nested class, first call Nyxus to get the features of all ROIs from the child channels. If the child channels are described +by a channel number in the filename, a filepattern can be used to filter down to only the child channehl. Consider a directory with the images + +.. code-block:: bash + + p0_y1_r1_c0.ome.tif + p0_y1_r1_c1.ome.tif + p0_y1_r2_c0.ome.tif + p0_y1_r2_1.ome.tif + p0_y1_r3_c0.ome.tif + p0_y1_r3_c1.ome.tif + ... + +where the child channel is designated by `c0` and the parent channel is `c1`. We can filter down to only the child channel using the +`filepattern `_ `p{r}_y{c}_r{z}_c0.ome.tif` or the equivalent regex `p[0-9]_y[0-9]_r[0-9]_c0\.ome\.tif`. + + +Next, we calculate the features for the child channel. For simplicity, we only use the Gabor features, but any or all features can be used. + +.. code-block:: python + + from nyxus import Nyxus, Nested + import numpy as np + + int_path = 'path/to/intensity' + seg_path = 'path/to/segmentation' + + nyx = Nyxus(['GABOR']) + + child_features = nyx.featurize(int_path, seg_path, file_pattern='p[0-9]_y[0-9]_r[0-9]_c0\.ome\.tif') + + print(features.head()) + +The result of this code is + +.. code-block:: bash + + mask_image intensity_image label GABOR_0 GABOR_1 GABOR_2 GABOR_3 GABOR_4 GABOR_5 GABOR_6 + 0 p0_y1_r1_c0.ome.tif p0_y1_r1_c0.ome.tif 1 0.224206 0.172619 0.166667 0.730159 0.773810 0.767857 0.753968 + 1 p0_y1_r1_c0.ome.tif p0_y1_r1_c0.ome.tif 2 1.000000 0.610000 0.540000 0.980000 0.990000 0.990000 0.970000 + 2 p0_y1_r1_c0.ome.tif p0_y1_r1_c0.ome.tif 3 0.429864 0.217195 0.122172 0.877828 0.941176 0.936652 0.909502 + 3 p0_y1_r1_c0.ome.tif p0_y1_r1_c0.ome.tif 4 0.846154 0.948718 0.717949 1.000000 1.000000 1.000000 1.000000 + 4 p0_y1_r1_c0.ome.tif p0_y1_r1_c0.ome.tif 5 0.277778 0.021368 0.029915 0.794872 0.841880 0.841880 0.824786 + +Next, the `find_relation` method is used to find the child-parent relations. This method takes in the segmentation path along with +filepatterns to distinguish the child channel from the parent channel. + +.. code-block:: python + + nest = Nested(['sum', 'mean', 'min', ('nanmean', lambda x: np.nanmean(x))]) + + df = nest.find_relations(seg_path, 'p{r}_y{c}_r{z}_c1.ome.tif', 'p{r}_y{c}_r{z}_c0.ome.tif') + print(df.head()) + +The result is + +.. code-block:: bash + + Image Parent_Label Child_Label + 0 /path/to/image 72.0 65.0 + 1 /path/to/image 71.0 66.0 + 2 /path/to/image 70.0 64.0 + 3 /path/to/image 68.0 61.0 + 4 /path/to/image 67.0 65.0 + +The `featurize` method can then be used along with the child features to apply the aggregate functions. The `featurize` method +takes in the `features` DataFrame generated by Nyxus, which contains the features calculations for each ROI, along with the DataFrame +containing the parent-child relations from the `find_relations` method. The ouput of this method is a DataFrame containing + +.. code-block:: python + + df = nest.featurize(df, features) + print(df.head()) + +The result is + +.. code-block:: bash + + GABOR_0 GABOR_1 GABOR_2 ... GABOR_4 GABOR_5 GABOR_6 + sum mean min nanmean sum mean min nanmean sum mean ... min nanmean sum mean min nanmean sum mean min nanmean + label ... + 1 24.010227 0.666951 0.000000 0.666951 19.096262 0.530452 0.001645 0.530452 17.037345 0.473260 ... 0.773810 0.897924 32.060053 0.890557 0.767857 0.890557 31.643434 0.878984 0.753968 0.878984 + 2 13.374170 0.445806 0.087339 0.445806 7.279187 0.242640 0.075000 0.242640 6.390529 0.213018 ... 0.735000 0.885494 26.414860 0.880495 0.727500 0.880495 25.886468 0.862882 0.700000 0.862882 + 3 5.941783 0.198059 0.000000 0.198059 3.364149 0.112138 0.000000 0.112138 2.426409 0.080880 ... 0.858462 0.900500 26.836040 0.894535 0.858462 0.894535 26.172914 0.872430 0.829231 0.872430 + 4 13.428773 0.559532 0.000000 0.559532 12.021938 0.500914 0.008772 0.500914 9.938915 0.414121 ... 0.820175 0.945459 22.572913 0.940538 0.802632 0.940538 22.270382 0.927933 0.787281 0.927933 + 5 6.535722 0.181548 0.000000 0.181548 1.833463 0.050930 0.000000 0.050930 2.083023 0.057862 ... 0.697917 0.819318 29.094328 0.808176 0.693452 0.808176 28.427727 0.789659 0.675595 0.789659 + +The other way to utilize the Nested class is to not pass any aggregate features to the constructor. In this case, the `featurize` method with create a +pivot table where the rows are the ROI labels and the columns are grouped by the features. + +.. code-block:: python + + nest = Nested(['sum', 'mean', 'min', ('nanmean', lambda x: np.nanmean(x))]) + + df = nest.find_relations(seg_path, 'p{r}_y{c}_r{z}_c1.ome.tif', 'p{r}_y{c}_r{z}_c0.ome.tif') + + df = nest.featurize(df, features) + print(df.head()) + + +The result is + +.. code-block:: bash + + GABOR_0 ... GABOR_6 + Child_Label 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 ... 55.0 56.0 58.0 59.0 60.0 61.0 62.0 64.0 65.0 66.0 + label ... + 1 0.666951 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN + 2 NaN 0.445806 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN + 3 NaN NaN 0.198059 NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN + 4 NaN NaN NaN 0.559532 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN + 5 NaN NaN NaN NaN 0.181548 NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \ No newline at end of file diff --git a/docs/source/img/child_int.png b/docs/source/img/child_int.png new file mode 100644 index 0000000000000000000000000000000000000000..127d9709c99bfa97037ce85d28c9fb227119d9d6 GIT binary patch literal 81919 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

Y8(Fg=+-F*?C@{% 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 x2stZro6=jg+U)Rjy}B~Q5fz0HwOGNZ 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 XlgVa1WuF56|84Me^>wLrqB8yuOvl|9 literal 0 HcmV?d00001 diff --git a/docs/source/img/parent_int.png b/docs/source/img/parent_int.png new file mode 100644 index 0000000000000000000000000000000000000000..6ba7525b9e6150e8068a89b13dfa1382993c7f1a GIT binary patch literal 57791 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ķ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 literal 0 HcmV?d00001 diff --git a/docs/source/img/parent_seg.png b/docs/source/img/parent_seg.png new file mode 100644 index 0000000000000000000000000000000000000000..5854a67c2e7f4ea33aa284829627e86147a933c9 GIT binary patch literal 4487 zcmV;25qR#2P)uArWI@!V+6Sjs=m%0c4OOkU`jS z;>-*W-M71zZ>z0uJLh3~xxLgmb-u5vtCv|ozybhHq%B5l_0!|tRfCauZ>?aG* zl{*dtuA~PC-6Z-UihTeP|7p?Ho1%GNabYH4`A0JWXdN~LB6g!yYv(d~AOJ@j0FIB3 zkB=4pSrNczX<$#?TRY_zxt7^W;!mPR1Tg${>M*5mGAq~OUk8+`bCzbQ z*Rd)81EOUSyg$~zqCgb^szG*EputFg|BG-B*Z;Bt$3cuoMW6%-HmYZUgSh+PANQb_ zK+1c@@TU=1!JV%f41YY4*=L>iK+@Lxb|=hi2K1O z#GDH||G@%f{5wc2+26X(Io};vg1QdqJ5XbR+z3dj{-Z7p6!YKLuCl~TD0GLm@RYg^ zIypHxIS~rwjC#I=nwv`vbtzb{XivH^5_c`=f7}4r?5GbYZ);4Eurs zv?Lgz=l|H7i1?3T8_8{e?Xr@yfUHw$M`)=3$7hfd2{J0sM?!}PShp+50yzGEY~4o< z0nPmk|Lo!FeRqKn;1vMCzr1x%8eR)$@;75&{58%2uXqy=Pck|{8r0}d;7?`&r3DHd zF!FxI^FRaYfFbwu^ef%42?U_(y%`KGU;ANoKLn=auX!Ix=btfD;t9}(Kiv;V?f5*` zHvx6Iq;*0k9TQx`NLoC2oC3(e^lU%dKNYW>KWi=eG>|4^*_>g_B#V$`zYGh11CWJ04Rcz0z>*|9eZs1 zBXc1b0V?v(GeAoH5A@eNg~29iKnt+(`VaU^28igBjm$PD!SYoA{|r{v!X z{a%wl?!x8T&<6b;i&p{k67C_sa|yf%+ex%?eM$=BBX3179Im%zDTYQRD9@Iog480B5z1l~Q;+3$ogP>p}N z01E#&1&H*G5m1l+eT{pm^U>{VRX5e88l&1MKlG)9)-0(D(Ug z8DK3y*cGzEH9%4`7(uW8kbM>Y{dsfwtN2b@IRN(gpdE!j4PBKbP{2RE31pCbhc2R@ zX#gzIu>P$E@aWs_)`qoD@ZSZL2dDsG*^qt~e-_@;f;#{HO#=0PVbSdcF9PBmn8lwp zz$vVsm5O7Z<*!>HBlrfK6PD~Smf#cs?C^fw={6!5Lr} z-Y4iIXd-vL7ikm)3PK>L^6nXy&xYl^1fUA=Rq#X4@7cH}dXGqqg4#X7^Ns`-r1B3i zRPU-+!0;BCSbzj@F@HY$hz0!nAlN1Oi$PE=2aHc~bqd%bz}NyX2$<3IlS+^PG6Qt5 zdmy0&R3Xqm;76c7-^k5T8aDpBV-~dD3}1qNBL%?c`K^H9fUYet#DHr6-u^-T4+8l7 zg(pdeN`4X@?l3HKkUa4LFewMr6vgv7=V0Je<$OCPgWf;?Y< zNB&%-z(3^kT2CDDUti^TD|rKGNv^;Fy#k^A0dz4SC=k*&Cx8Jd39xJf0l8yf38GW{ zcf;PWV1R%gk@D+Z48>W1wg6%N#16o2(VKGtChiBA^*#&mcg1&unzS0As6;wc3v8J) z-`TSO%&%s#u+(m=@qnl&Ag~W3pr>yJX8@DC+lGMcUeD^^-ik!}EMjU@x3}SlkOiyN z3c$DBRR;b(k+P3gG!@{x%I~Z7NS32Ot@<~4`>>$^=MDVF*+GFx`2#gSlN2Ssua(Wc zfy|*CuA#YR&=3NK&jJ94*klff@AXxLJ-62s!0!ks2H^M`3ZzSC<9}%1v_5zeTS``6 z0ejv^x3+_f4TV6+-wjW>NZp?DwE$hKVG1}joUIjP6H8@U?^%8|bm*S!jW>#q2lz=q zN B^Sx$M<}`(M&mRki`kyU3if|f2PJmP7Z*gmUOtpe8|1aH5Jum`z=QteJdUanc z!Jxoc)cp;(a2v-2?VuMh-(k#~G(D@J_*jQmF^ z2KXBQ;Cta}g}xng$N>^Q?IxWJ-|tseV~Du;j}0v7(4y~Mj;6YzHhn8E<@cg;5442=S`=f5C7 z>&7cEg#ktZn)7ErYR4%s3IE~jZTTx7bbHWEU-#Bd!ygOa4T}8*;FI*Dkx5Xy*m>YB z^(st6pDW#kZjvU!n*j0dhI*~{AX@YKg#799U0BZ~DDdWb#+ATur5p2~7E}hhK&(^n z<~X}B{%?y8o90gmP{tof8RFPDf1)Q?&fkvB^RLnsev$dt5a5O8pVk$>2mrY6uY9rj z6Zy)?0e&lZahP)@c)|JG9dOZ|zt3)F#Z2hS0=Nda$ZV5mfZ5PDJ0Rd+WPus62h|FE z63y`SpMeMS;!io?lP(RKt^*PyU}oe2W3M$bzz_jx0?d%VsUuV?0OrWwk_0R9pCx^Z z00jT^HejagkvA%x%AaBX7P0P6sbwjKDnNDsjJG^~826>noBiR9g0h|Q4v!hl09FgjPC;-wa%bz`aYvL@R zIpDsy_zl4H?+es?O{)S_0q(O40Ejl8!D7Iy{yDcL2izaJ0=fS8>U?JWElKcx*Bv71 zYX+E^-wD`Sfy}xm=+Dgng&iTu0Q0YW0PUVpV(8D#0Br<#K`I|W69IVoa}=h2M~Gv& zSS+Ua=V_^^E&$8Fo6JsuF$69Fz}?d0Dg5<+d^9x%2V8Rg7Gkl8o(XjpXXb&m0GG1% z{y1K>=DzUYZZR(f>b3&5jKcoYqfMZ%n@huryJ`D7eZjnZdas*|V}TP7h^)j`3Q>p>0m}HhXWpO!t?g;z zkDoLyg@DEa%sTu56or5u0fz8jV`D)ec7@*t0Q@2I&|>Y+W_VB%;O+G!T>{Pev*9n5 z^lf6!c1*R~J0Jdn0}@%UVM%*4;%`jTW-&~cJQV+pHH7)&0YoEUQj@O!t#_P--{+Jk z6RZH~5nwYD$$x|0g=&MM1@t%CT{50KGb09IzM&A6;T>wLM#vZ6AI&rzhy8>^j0qK} zc6hn375M{gH4uuCI~puuxm;g= ztHXv)C-U8Q8x+M@4jn`mU<}Z)?<7#Kp8OT<6ln3VwD#S|rTi~=rfol@nlQ#dXaU1_ zGndJiPt7b)+W{W|@epsqNha?;$R~6gg0!6IXh6_kFpo+~rD@a@G^iKSf z2)*`;_%{+DZUwGHGbUU%xPOj=BvLDI#p(e=-D9p}L{X`{dN(LwBTt=afc1UaCNUs) zgwmowL^=O9nCKro)Uf|lt$<(aY7k_!{603?2DElSy}Z|~oZ66>ngu>&f6?xXcMuJ* z9AG$79%2Df`#%gSH2Mu`J12=(-KmiK&FlpOB+|dSp7~AEZfR$^)=h4^>pmpXUuM;!PY00s(aX!w1;d zeR-Hc(c&|tFvc31kb&9I<1ZjqaX_!$8DBbGNi2_||>C*fnG zx&5DX+yn{)Aafvt3g24gWGUd^DNx4&zZHJtKQ&txeq2&aM5X|@tp*S(e~AP0`6#XG zD3B*WM4zz0j`E%1C4d8?1guwzA^^B)vEl8wBS2Jta+LQcK6sM4_@VX;i8Ic|5W1z|LR!Af35Y zswhBi8a#da^y$;50i^Jk(eBctI=0YJ$7$^!5BLxbkkTpHtN@<>QuvEV>XdCnfL-9Y zEc$o@>@$r9hYbj@3$#kU`v8DtiUKtYV#|WN$;Y+w+22n-^z;r$r%!>3fE@OiTmXT8 zSq_xx^Buuy1*lW~lmRlUAC;4lk_1HlB?ia}{vH!LpjQ2d(Af(SFr5Gj{cHmiR6c;( z?J*w%o2z~W6FETRpJ@OaeevLxdt|f)cAN0u&(D3k9e`;ZpxWQYe+2-~hDDye)^qgA zQ~e3%Xkbi_evN-vNzaaC^M?ZX$9K!~-UK5;di5v!e^q3Dcj*@m1n{$f8vPdghc%k` zbhUeixHt_S;va*+(Ds?CKZpTM0ADcY3`BX}YY+m12Mp1#@+WRErWruy-{>`t>+I=# z==6yVb^gn-sc`mW%G2gOmg^PxyY=pDY2e>Yo&i{Wv0lj*r`3x**9%)e-}d9CX8s-4 z0`R42)ePp|B?S-_?ov@8G$=B8SYp1Yqcsb-%OTeo%qpvj2tB zBDZ{>RZN3^2y{<{FgLu&)qz&eK?|@A0AC5^*pvhI#@?Fwkr)@DS9YG0O!R;4*Yu5M z-U55%TDt?-OzC6IU$DSN96;0OVB=50@~<76_5+xfFpWO}ihu67`UW~eP54t74Is1w Z{|DJZkq3JtxH Date: Tue, 13 Sep 2022 07:26:52 -0600 Subject: [PATCH 2/7] Refactor Nested Python API --- src/nyx/python/nested_roi_py.cpp | 98 +++++++++++++++++++++++++ src/nyx/python/new_bindings_py.cpp | 29 ++++++++ src/nyx/python/nyxus/nyxus.py | 110 +++++++++++++++++++++-------- 3 files changed, 209 insertions(+), 28 deletions(-) diff --git a/src/nyx/python/nested_roi_py.cpp b/src/nyx/python/nested_roi_py.cpp index fc4c0867..01f3b25f 100644 --- a/src/nyx/python/nested_roi_py.cpp +++ b/src/nyx/python/nested_roi_py.cpp @@ -648,5 +648,103 @@ bool mine_segment_relations ( } + return true; // success +} + + +/// @brief Finds related (nested) segments and sets global variables 'pyHeader', 'pyStrData', and 'pyNumData' consumed by Python binding function findrelations_imp() +bool mine_segment_relations ( + bool output2python, + const std::string& label_dir, + const std::string& parent_file_pattern, + const std::string& child_file_pattern, + const std::string& outdir, + const ChildFeatureAggregation& aggr, + int verbosity_level) +{ + + std::vector parentFiles; + readDirectoryFiles(label_dir, parent_file_pattern, parentFiles); + + std::vector childFiles; + readDirectoryFiles(label_dir, child_file_pattern, childFiles); + + // Check if the dataset is meaningful + if (parentFiles.size() == 0) + { + throw std::runtime_error("No parent files to process"); + } + + if (childFiles.size() == 0) + { + throw std::runtime_error("No child files to process"); + } + + if(childFiles.size() != parentFiles.size()) + { + throw std::runtime_error("Parent and child channels must have the same number of files"); + } + + // Prepare the buffers. + // 'totalNumLabels', 'stringColBuf', and 'calcResultBuf' will be updated with every call of output_roi_relational_table() + theResultsCache.clear(); + + // Prepare the header + theResultsCache.add_to_header({ "Image", "Parent_Label", "Child_Label" }); + + // Mine parent-child relations + for (int i = 0; i < parentFiles.size(); ++i) + { + auto parFname = parentFiles[i]; + auto chiFname = childFiles[i]; + + // Diagnostic + //if (verbosity_level >= 1) + // std::cout << stem << "\t" << parent_channel << ":" << child_channel << "\n"; + + // Clear reference tables + uniqueLabels1.clear(); + uniqueLabels2.clear(); + roiData1.clear(); + roiData2.clear(); + + // Analyze geometric relationships and recognize the hierarchy + std::vector P; // parents + bool ok = find_hierarchy(P, parFname, chiFname, verbosity_level); + if (!ok) + { + std::stringstream ss; + ss << "Error finding hierarchy based on files " << parFname << " as parent and " << chiFname << " as children"; + throw std::runtime_error(ss.str()); + } + + // Output the relational table to object 'theResultsCache' + if (output2python) + { + ok = output_roi_relational_table_2_rescache (P, theResultsCache); + if (!ok) + throw std::runtime_error("Error creating relational table of segments"); + } + else + { + ok = output_roi_relational_table_2_csv (P, outdir); + if (!ok) + throw std::runtime_error("Error creating relational table of segments"); + } + + // Aggregate features + if (output2python) + { + // Aggregating is implementing externally to this function + } + else + { + ok = aggregate_features (P, outdir, aggr); + if (!ok) + throw std::runtime_error ("Error aggregating features"); + } + + } + return true; // success } \ No newline at end of file diff --git a/src/nyx/python/new_bindings_py.cpp b/src/nyx/python/new_bindings_py.cpp index 1127d1f9..4cf50fe1 100644 --- a/src/nyx/python/new_bindings_py.cpp +++ b/src/nyx/python/new_bindings_py.cpp @@ -157,6 +157,35 @@ py::tuple findrelations_imp( } +py::tuple findrelations_imp( + std::string& label_dir, + std::string& parent_file_pattern, + std::string& child_file_pattern + ) +{ + if (! theEnvironment.check_file_pattern(parent_file_pattern) || ! theEnvironment.check_file_pattern(child_file_pattern)) + throw std::invalid_argument("Filepattern provided is not valid."); + + theResultsCache.clear(); + + // Result -> headerBuf, stringColBuf, calcResultBuf + ChildFeatureAggregation aggr; + bool mineOK = mine_segment_relations (true, label_dir, parent_file_pattern, child_file_pattern, ".", aggr, theEnvironment.get_verbosity_level()); // the 'outdir' parameter is not used if 'output2python' is true + + if (! mineOK) + throw std::runtime_error("Error occurred during dataset processing: mine_segment_relations() returned false"); + + auto pyHeader = py::array(py::cast(theResultsCache.get_headerBuf())); // Column names + auto pyStrData = py::array(py::cast(theResultsCache.get_stringColBuf())); // String cells of first n columns + auto pyNumData = as_pyarray(std::move(theResultsCache.get_calcResultBuf())); // Numeric data + auto nRows = theResultsCache.get_num_rows(); + pyStrData = pyStrData.reshape({ nRows, pyStrData.size() / nRows }); + pyNumData = pyNumData.reshape({ nRows, pyNumData.size() / nRows }); + + return py::make_tuple(pyHeader, pyStrData, pyNumData); +} + + /** * @brief Set whether to use the gpu for available gpu features * diff --git a/src/nyx/python/nyxus/nyxus.py b/src/nyx/python/nyxus/nyxus.py index 5c610f42..45214bf2 100644 --- a/src/nyx/python/nyxus/nyxus.py +++ b/src/nyx/python/nyxus/nyxus.py @@ -156,47 +156,63 @@ def using_gpu(self, gpu_on: bool): class Nested: """Nyxus image feature extraction library / ROI hierarchy analyzer + + Valid aggregate functions are any functions available in pandas.DatFrame.aggregate, + e.g. min, max, count, std. Lambda functions can also be passed. To provide a name to + the aggregate function, pass in a list of tuples where the first element in the name + and the second is the function, e.g. aggregate=[('nanmean', lambda x: np.nanmean(x))]. + + Parameters + ---------- + aggregate : list + List of aggregate functions. Any aggregate function from Pandas can be used + along with lambda functions. Example ------- - from nyxus import Nested + from nyxus import Nested, Nyxus + + int_path = '/home/data/6234838c6b123e21c8b736f5/tissuenet_tif/int' + seg_path = '/home/data/6234838c6b123e21c8b736f5/tissuenet_tif/seg' + + nyx = Nyxus(["*ALL*"]) + + features = nyx.featurize(int_path, seg_path, file_pattern='p[0-9]_y[0-9]_r[0-9]_c0\.ome\.tif') + nn = Nested() - segPath = '/home/data/6234838c6b123e21c8b736f5/tissuenet_tif/seg' - fPat = '.*' - cnlSig = '_c' - parCnl = '1' - chiCnl = '0' - rels = nn.findrelations (segPath, fPat, cnlSig, parCnl, chiCnl) + + parent_filepattern = 'p{r}_y{c}_r{z}_c1.ome.tif' + child_filepattern = 'p{r}_y{c}_r{z}_c0.ome.tif' + + rels = nn.find_relations (seg_path, parent_filepattern, child_filepattern) + + df = nn.featurize(rels, features) """ - def __init__(self): - pass - - def findrelations( + def __init__(self, aggregate: Optional[list] = []): + + self.aggregate = aggregate + + + def find_relations( self, label_dir: str, - file_pattern: str, - channel_signature: str, - parent_channel: str, - child_channel: str): + parent_file_pattern: str, + child_file_pattern: str): + """Finds parent-child relationships. - Find parent-child relationships assuming that images ending - contain parent ROIs and images ending contain child ROIs. + Find parent-child relationships of parent files matching the parent_file_pattern + and child files matching the child_file_pattern. Parameters ---------- label_dir : str Path to directory containing label images. - file_pattern: str - Regular expression used to filter the images present in `label_dir`. - channel_signature : str - Characters preceding the channel identifier e.g. "_c". - parent_channel : str - Identifier of the parent channel e.g. "1". - child_channel : str - Identifier of the child channel e.g. "0". - + parent_file_pattern: str + Regex filepattern to filter the parent files e.g. "p.*_c1\.ome\.tif". + child_file_pattern : str + Regex filepattern to filter the child files e.g. "p.*_c0\.ome\.tif". Returns ------- rel : array @@ -206,7 +222,7 @@ def findrelations( if not os.path.exists(label_dir): raise IOError (f"Provided label image directory '{label_dir}' does not exist.") - header, string_data, numeric_data = findrelations_imp (label_dir, file_pattern, channel_signature, parent_channel, child_channel) + header, string_data, numeric_data = findrelations_imp(label_dir, parent_file_pattern, child_file_pattern) df = pd.concat( [ @@ -221,4 +237,42 @@ def findrelations( df["label"] = df.label.astype(np.uint32) return df - \ No newline at end of file + + def featurize(self, parent_child_map: pd.DataFrame, child_features: pd.DataFrame): + """Join child ROI features to the parent-child map. + + Joins parent-child map from the find_relations method with the features from Nyxus. + When aggregate functions are provided from the constructor this method will apply + the aggregate functions to the joined DataFrame. When aggregate functions are not + provided, this method will return a pivoted DataFrame where the columns are grouped by + the child labels and the rows are the ROI labels. + + Parameters + ---------- + parent_child_map : pd.DataFrame + Map of parent child relations from the find_relations method. + child_features: pd.DataFrame + Features of the child channel ROIs from Nyxus.find_relations method. + + Returns + ------- + pd.DataFrame + DataFrame containing aggregated features for each ROI when aggregate functions are provided. + Pivoted DataFrame containing features the child ROI for each label when no aggregate functions are provided. + """ + + joined_df = parent_child_map.merge(child_features, left_on=['Child_Label'], right_on=['label']) + + feature_columns = list(joined_df.columns)[6:] + + if(self.aggregate == []): + joined_df.apply(lambda x: x) # convert group_by object to dataframe + + return joined_df.pivot_table(index='label', columns='Child_Label', values=feature_columns) + + agg_features = {} + for col in feature_columns: + agg_features[col] = self.aggregate + + return joined_df.groupby(by='label').agg(agg_features) + \ No newline at end of file From 1f6305e9e207259e77840ce0010869cd3a1e1249 Mon Sep 17 00:00:00 2001 From: JesseMckinzie <72471813+JesseMckinzie@users.noreply.github.com> Date: Tue, 13 Sep 2022 08:29:26 -0600 Subject: [PATCH 3/7] Update new_bindings_py.cpp --- src/nyx/python/new_bindings_py.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/nyx/python/new_bindings_py.cpp b/src/nyx/python/new_bindings_py.cpp index 4cf50fe1..c7b23d7d 100644 --- a/src/nyx/python/new_bindings_py.cpp +++ b/src/nyx/python/new_bindings_py.cpp @@ -16,6 +16,16 @@ using namespace Nyxus; // Defined in nested.cpp bool mine_segment_relations(bool output2python, const std::string& label_dir, const std::string& file_pattern, const std::string& channel_signature, const int parent_channel, const int child_channel, const std::string& outdir, const ChildFeatureAggregation& aggr, int verbosity_level); +// Defined in nested.cpp +bool mine_segment_relations ( + bool output2python, + const std::string& label_dir, + const std::string& parent_file_pattern, + const std::string& child_file_pattern, + const std::string& outdir, + const ChildFeatureAggregation& aggr, + int verbosity_level); + template inline py::array_t as_pyarray(Sequence &&seq) { From 7e67cc3b0407e4c9fa884beaf4519ce865cb2946 Mon Sep 17 00:00:00 2001 From: JesseMckinzie <72471813+JesseMckinzie@users.noreply.github.com> Date: Tue, 13 Sep 2022 09:03:58 -0600 Subject: [PATCH 4/7] Update new_bindings_py.cpp --- src/nyx/python/new_bindings_py.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/nyx/python/new_bindings_py.cpp b/src/nyx/python/new_bindings_py.cpp index c7b23d7d..45b901cc 100644 --- a/src/nyx/python/new_bindings_py.cpp +++ b/src/nyx/python/new_bindings_py.cpp @@ -230,7 +230,22 @@ PYBIND11_MODULE(backend, m) m.def("initialize_environment", &initialize_environment, "Environment initialization"); m.def("process_data", &process_data, "Process images, calculate features"); - m.def("findrelations_imp", &findrelations_imp, "Find relations in segmentation images"); + m.def("findrelations_imp", py::overload_cast(&findrelations_imp), "Find relations in segmentation images"); + m.def("findrelations_imp", py::overload_cast(&findrelations_imp), "Find relations in segmentation images"); m.def("gpu_available", &Environment::gpu_is_available, "Check if CUDA gpu is available"); m.def("use_gpu", &use_gpu, "Enable/disable GPU features"); m.def("get_gpu_props", &get_gpu_properties, "Get properties of CUDA gpu"); From 2958127833f83dbf50e171b8bdb108dea5ab532d Mon Sep 17 00:00:00 2001 From: JesseMckinzie <72471813+JesseMckinzie@users.noreply.github.com> Date: Tue, 13 Sep 2022 11:22:45 -0600 Subject: [PATCH 5/7] Update new_bindings_py.cpp --- src/nyx/python/new_bindings_py.cpp | 56 +----------------------------- 1 file changed, 1 insertion(+), 55 deletions(-) diff --git a/src/nyx/python/new_bindings_py.cpp b/src/nyx/python/new_bindings_py.cpp index 45b901cc..24c73902 100644 --- a/src/nyx/python/new_bindings_py.cpp +++ b/src/nyx/python/new_bindings_py.cpp @@ -128,45 +128,6 @@ py::tuple process_data( return py::make_tuple(pyHeader, pyStrData, pyNumData); } -py::tuple findrelations_imp( - const std::string& label_dir, - const std::string& file_pattern, - const std::string& channel_signature, - const std::string& parent_channel, - const std::string& child_channel) -{ - if (! theEnvironment.check_file_pattern(file_pattern)) - throw std::invalid_argument("Filepattern provided is not valid."); - - // check channel numbers - int n_parent_channel; - if (sscanf(parent_channel.c_str(), "%d", &n_parent_channel) != 1) - throw std::runtime_error("Error parsing the parent channel number"); - - int n_child_channel; - if (sscanf(child_channel.c_str(), "%d", &n_child_channel) != 1) - throw std::runtime_error("Error parsing the child channel number"); - - theResultsCache.clear(); - - // Result -> headerBuf, stringColBuf, calcResultBuf - ChildFeatureAggregation aggr; - bool mineOK = mine_segment_relations (true, label_dir, file_pattern, channel_signature, n_parent_channel, n_child_channel, ".", aggr, theEnvironment.get_verbosity_level()); // the 'outdir' parameter is not used if 'output2python' is true - - if (! mineOK) - throw std::runtime_error("Error occurred during dataset processing: mine_segment_relations() returned false"); - - auto pyHeader = py::array(py::cast(theResultsCache.get_headerBuf())); // Column names - auto pyStrData = py::array(py::cast(theResultsCache.get_stringColBuf())); // String cells of first n columns - auto pyNumData = as_pyarray(std::move(theResultsCache.get_calcResultBuf())); // Numeric data - auto nRows = theResultsCache.get_num_rows(); - pyStrData = pyStrData.reshape({ nRows, pyStrData.size() / nRows }); - pyNumData = pyNumData.reshape({ nRows, pyNumData.size() / nRows }); - - return py::make_tuple(pyHeader, pyStrData, pyNumData); -} - - py::tuple findrelations_imp( std::string& label_dir, std::string& parent_file_pattern, @@ -230,22 +191,7 @@ PYBIND11_MODULE(backend, m) m.def("initialize_environment", &initialize_environment, "Environment initialization"); m.def("process_data", &process_data, "Process images, calculate features"); - m.def("findrelations_imp", py::overload_cast(&findrelations_imp), "Find relations in segmentation images"); - m.def("findrelations_imp", py::overload_cast(&findrelations_imp), "Find relations in segmentation images"); + m.def("findrelations_imp", &findrelations_imp, "Find relations in segmentation images"); m.def("gpu_available", &Environment::gpu_is_available, "Check if CUDA gpu is available"); m.def("use_gpu", &use_gpu, "Enable/disable GPU features"); m.def("get_gpu_props", &get_gpu_properties, "Get properties of CUDA gpu"); From d326bedda263da6be6f2c2c2c5838319dabfe517 Mon Sep 17 00:00:00 2001 From: JesseMckinzie <72471813+JesseMckinzie@users.noreply.github.com> Date: Mon, 31 Oct 2022 11:38:34 -0600 Subject: [PATCH 6/7] Fixed typos --- README.md | 2 +- docs/source/examples.rst | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ba18330f..74b8d8ec 100644 --- a/README.md +++ b/README.md @@ -331,7 +331,7 @@ contains two methods, `find_relations` and `featurize`. The `find_relations` method takes in a path to the label files, along with a child filepattern to identify the files in the child channel and a parent filepattern to match the files in the parent channel. The `find_relation` method -returns a Pandas DataFrame containing a mapping between parent ROIS and the respective child ROIs. +returns a Pandas DataFrame containing a mapping between parent ROIs and the respective child ROIs. The `featurize` method takes in the parent-child mapping along with the features of the ROIs in the child channel. If a list of aggregate functions is provided to the constructor, this method will return a pivoted DataFrame where the rows are the ROI labels and the columns are grouped by the features. diff --git a/docs/source/examples.rst b/docs/source/examples.rst index 4a38fbb0..f383e69c 100644 --- a/docs/source/examples.rst +++ b/docs/source/examples.rst @@ -167,7 +167,7 @@ element is the name and the second is the lambda function. This allows functions such as Numpy's `np.nanmean`. To use the Nested class, first call Nyxus to get the features of all ROIs from the child channels. If the child channels are described -by a channel number in the filename, a filepattern can be used to filter down to only the child channehl. Consider a directory with the images +by a channel number in the filename, a filepattern can be used to filter down to only the child channel. Consider a directory with the images .. code-block:: bash @@ -233,7 +233,7 @@ The result is The `featurize` method can then be used along with the child features to apply the aggregate functions. The `featurize` method takes in the `features` DataFrame generated by Nyxus, which contains the features calculations for each ROI, along with the DataFrame -containing the parent-child relations from the `find_relations` method. The ouput of this method is a DataFrame containing +containing the parent-child relations from the `find_relations` method. The output of this method is a DataFrame containing .. code-block:: python From d1bffbb95f3ce29585aa4da939deee75fe0e04a8 Mon Sep 17 00:00:00 2001 From: JesseMckinzie <72471813+JesseMckinzie@users.noreply.github.com> Date: Mon, 31 Oct 2022 11:38:51 -0600 Subject: [PATCH 7/7] Remove unused function signature --- src/nyx/python/new_bindings_py.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/nyx/python/new_bindings_py.cpp b/src/nyx/python/new_bindings_py.cpp index e5d9b482..0e365ff6 100644 --- a/src/nyx/python/new_bindings_py.cpp +++ b/src/nyx/python/new_bindings_py.cpp @@ -13,9 +13,6 @@ namespace py = pybind11; using namespace Nyxus; -// Defined in nested.cpp -bool mine_segment_relations(bool output2python, const std::string& label_dir, const std::string& file_pattern, const std::string& channel_signature, const int parent_channel, const int child_channel, const std::string& outdir, const ChildFeatureAggregation& aggr, int verbosity_level); - // Defined in nested.cpp bool mine_segment_relations ( bool output2python,