diff --git a/data/cellcomplex_production.py b/data/cellcomplex_production.py index 0defbf7cd8a25559f5981080411415a49fbeb898..a90ae1eb85e188fe3e12ff141281eae96ffbdb98 100644 --- a/data/cellcomplex_production.py +++ b/data/cellcomplex_production.py @@ -1,13 +1,13 @@ -from copy import deepcopy import numpy as np -from numpy import linalg as lng -#import matplotlib as mpl -#from matplotlib import pyplot as plt from cellcomplex.property_topomesh.analysis import compute_topomesh_property from cellcomplex.property_topomesh.example_topomesh import circle_voronoi_topomesh -from cellcomplex.property_topomesh.io import save_ply_property_topomesh, read_ply_property_topomesh -#from cellcomplex.property_topomesh.utils.matplotlib_tools import mpl_draw_topomesh +from cellcomplex.property_topomesh.io import save_ply_property_topomesh + +from bvpy.templates.domains import FaceCellularDomain +from bvpy.utils.visu import plot +from bvpy.utils.io import save + # ############################################################################## # ############################################################################## @@ -36,21 +36,6 @@ def cell_normal(points, cell): return np.array(nrl).mean(axis=0) -def plot_points(points, vids): - fig = plt.figure() - axe = fig.add_subplot(111, projection='3d') - - points = np.array(points) - for vid in vids: - axe.scatter(points[vid, 0], - points[vid, 1], - points[vid, 2], - marker='o', - label=f'{vid}') - plt.legend() - plt.show() - - def approx(x, n): '''Approximates a float to a given order. @@ -103,10 +88,10 @@ def read_tissue_text_file(path): # ############################################################################## # ############################################################################## # -- Creating a "tissue-like" property topomesh. -cvmsh = circle_voronoi_topomesh(size = 5, - voxelsize = 1., - circle_size = 100., - z_coef = 0) +cvmsh = circle_voronoi_topomesh(size=5, + voxelsize=1., + circle_size=100., + z_coef=0) prop_2_compute = {1: ['borders'], 2: ['oriented_vertices', 'oriented_borders', 'borders'], @@ -116,20 +101,30 @@ for deg, names in prop_2_compute.items(): for name in names: compute_topomesh_property(cvmsh, name, degree=deg) + path = '/Users/oali/Documents/Work/Research/Devlp/bvpy/data/test_flat.ply' save_ply_property_topomesh(cvmsh, path) +# -- Defining the epithelial cells on the structure +epithelium = {cid: 0 for cid in cvmsh.wisps(2)} + +for cid, eids in cvmsh.wisp_property('borders', 2).items(): + for eid in eids: + if cvmsh.nb_regions(1, eid) == 1: + epithelium[cid] = 1 + break # -- Getting the vertex positions points = [] cells = [] +labels = [] lbl_2_idx = {} for idx, (vid, pos) in enumerate(cvmsh.wisp_property('barycenter', 0).items()): points.append(list(pos)) lbl_2_idx[vid] = idx -# -- Forming the cells with their vertex index (in the list of position vectors) +# -- Writing cells with their vertex index (in the list of position vectors) for cid, eids in cvmsh.wisp_property('borders', 2).items(): oriented_vids = [] @@ -152,12 +147,13 @@ for cid, eids in cvmsh.wisp_property('borders', 2).items(): assert(oriented_vids[0] == oriented_vids[-1]) oriented_vids.pop() cells.append(list(map(lambda x: lbl_2_idx[x], oriented_vids))) + labels.append(epithelium[cid]) # -- Harmonizing the orientation of all cells. oriented_cells = [] for cell in cells: - if cells.index(cell) == 0: + if cells.index(cell) == 0: oriented_cells.append(cell) else: vids_2_switch = [[idx0, idx1] @@ -171,7 +167,8 @@ for cell in cells: reversed = True break - if not reversed: oriented_cells.append(cell) + if not reversed: + oriented_cells.append(cell) cells = oriented_cells @@ -179,7 +176,8 @@ cells = oriented_cells # -- Recording these list in a text file save_path = '/Users/oali/Documents/Work/Research/Devlp/bvpy/data/tissue_example_flat.txt' -def save_points_and_cells(points, cells): + +def save_points_and_cells(points, cells, label=None): with open(save_path, 'w') as file: for name, lst in zip(['points', 'cells'], [points, cells]): @@ -187,18 +185,20 @@ def save_points_and_cells(points, cells): for line in lst: file.write(' '.join([str(elmt) for elmt in line])+'\n') -save_points_and_cells(points, cells) - -# ############################################################################## -# ############################################################################## -# -- Instancing the FaceCellularDomain class from the previously computed lists. -from bvpy.templates.domains import FaceCellularDomain + if label is not None: + assert len(label) == len(cells) + file.write(f'{len(label)} cell labels:\n') + for line in label: + file.write(f'{line} \n') -tissue = FaceCellularDomain(points, cells, resolution=.05) +save_points_and_cells(points, cells, labels) -from bvpy.utils.visu import plot - +# ############################################################################## +# ############################################################################## +# -- Instancing the FaceCellularDomain class from the lists computed above. +tissue = FaceCellularDomain(points, cells, markers=labels, resolution=.05) +save(tissue, save_path[:-4]) plot(tissue.mesh) diff --git a/data/test_curved.ply b/data/test_curved.ply new file mode 100644 index 0000000000000000000000000000000000000000..6ef589988a5bfaa235d386186e3674764658823b --- /dev/null +++ b/data/test_curved.ply @@ -0,0 +1,640 @@ +ply +format ascii 1.0 +element vertex 220 +property float x +property float y +property float z +element face 61 +property list int int vertex_index +property float area +element edge 280 +property int source +property int target +property list int int face_index +property float length +element volume 61 +property list int int face_index +property int label +end_header +-2.923961461587178 3.2441482921464946 0.7801906650442335 +-2.7456094236265725 -2.466930913813634 0.5622494154255632 +-2.091260831771032 -2.6691748529984674 0.477701004255513 +-1.9579421531705388 -2.9358177631610896 0.5147433450959479 +0.2315931355235309 -2.580002521593032 0.28807894412092694 +-0.13632602829219237 -3.5087844064051703 0.5050890744460552 +0.7173186125032134 -3.7808861164812573 0.608968001780544 +-2.8838191130713775 -1.7752972685010284 0.47520947935894364 +-2.6532326649384834 -0.4215171411818072 0.31088453329855875 +-2.9627114780816695 -1.7190176426105828 0.4848662020119616 +2.731227573538176 -1.8105909716230562 0.44387422628228357 +0.7500043080288806 -4.2657412763709175 0.7695288468104114 +-0.14082659092836616 -4.48117478335171 0.8156563717900751 +-0.3203203397451169 -3.5824425564961655 0.5313886737203897 +-1.0403201567910731 -3.191746720750457 0.4718261953270593 +-1.196796091387838 -3.2560394469549068 0.5021692598487022 +-1.6834371260608716 -2.0309478933794285 0.29266390818872035 +-2.157158548068202 -1.4616889149277672 0.28482721573168 +-2.016854991444407 -0.869605767367873 0.2134566337769675 +-2.9915733363985817 -3.393273874113334 0.8284966672635223 +-2.431785945265422 -3.692754666649614 0.7961134127102893 +-2.28714203280854 -3.8673459731436557 0.8187323975527314 +2.2154458697642148 -1.4592094696531168 0.2963438625217305 +0.3597252762014928 -0.08922401821826213 0.029997722720615367 +0.830650833139455 -1.2112010199680363 0.11217018231276583 +0.8577137185572346 -1.1409366778686378 0.10698853742079084 +0.6000190701158943 -2.6422934859793115 0.3112852472903743 +1.9443817902712484 -2.7001894279245757 0.46074231069880495 +1.536169729835625 -3.2594550854275974 0.5370427074510234 +1.0550056094397202 -3.300867712371561 0.49879729182060356 +1.5287550198151496 -2.0497065512539865 0.27888224527613925 +1.2744340821588838 -1.985991714968799 0.2410136042623432 +-3.1655907239683763 3.1655907239683754 0.8137910959216875 +-4.4921427842957415 -0.14117127424399922 0.8191417045564249 +-3.692829883072662 2.5096445969987378 0.8100904902735202 +-3.715390981949324 2.297331233136662 0.7798408245181178 +-4.0526783024599755 1.7537505060721321 0.7945470655827411 +-1.3755901395749452 2.0329354612866304 0.2567503485435586 +-0.7787474294966907 2.277912282058063 0.24678816015077845 +-1.6140723989196653 3.1996327701186087 0.5312723291532827 +-0.9246951818506421 3.229961307217646 0.4692259182932207 +-0.8097470320337649 3.32326454669327 0.48552838360618794 +0.8191836643398086 3.4876590172896216 0.5289894382745433 +0.12305595225803471 3.2538740952271126 0.44498751235160044 +-0.14268925203795246 3.425392172143995 0.4901519280724105 +-0.10938339397883559 4.376156771800932 0.7831299214409145 +1.3850930956698748 3.208715478415743 0.5092999525678112 +2.319840370694236 0.9766207324342953 0.2707029957266941 +-2.5454511912044495 3.7455176864580566 0.8300556088735369 +-1.7698894472844506 4.089973195119663 0.8073002083099295 +-1.9351701540386914 3.9152237382052273 0.7800418711850335 +-3.528723525853691 -2.737158539163459 0.8102324804248957 +-3.7339557993989794 -2.5375937408729463 0.8255406044069522 +2.8870377196019987 -3.2656688341294147 0.7779576605765336 +2.761815365452808 -2.132430518139853 0.5004959669992078 +2.42091535567397 -2.6741459723887986 0.5377465230250812 +3.976835184331636 -1.6972335612012976 0.7673449409701453 +3.3462781168214186 -1.3206844203557633 0.5318522732567675 +0.9713163444710654 -4.345419530973405 0.8064429722591954 +0.684310798608313 -4.320568341221707 0.7825931870355707 +2.5275423370673784 -3.7191656078378186 0.8197913556265645 +2.0031518303650513 -3.9087261045476094 0.7878415943052144 +2.2769198714672574 -3.8500612422730067 0.8123433193919768 +-0.41363875003221395 -4.3758409017943505 0.788784079711322 +-0.4202648563807767 -4.371282339925716 0.7875063458300178 +-0.699582350738323 -4.416989126614023 0.8120528280747472 +-1.274616357699903 -1.9819761227045132 0.2373600797348514 +-0.04311004051043313 -2.3378587614874347 0.2399816796645089 +-0.7886528214962382 -2.552863025844461 0.30170972723525075 +-0.016342523747426674 -1.5619430052198642 0.11964953714979 +-2.0523999706928 -4.028061743980153 0.8275277537682705 +-1.7804306468710116 -4.114332470112569 0.8155984951141207 +-0.980539128770731 -4.386679896099403 0.819214505665362 +-1.4560257319293468 -4.117836488974934 0.7803302175470518 +-1.484597287699294 -4.123627601617147 0.7851001608641529 +-1.243323996270323 -4.2795492652770495 0.8072391700979004 +-2.77145396716415 -3.5729369252179293 0.8278968262346935 +-2.5031656314934794 -3.683296374838931 0.8064463526690181 +-1.5237766365387229 -0.7248729311259621 0.13473404410625184 +-0.24498576841177402 -0.30128471647566274 0.02275562338699426 +-0.8495153372307137 -1.1806020532880177 0.10911471303189035 +-0.6108936357493207 -1.146845535606831 0.0928251219101218 +-3.58640024598637 2.781897189234916 0.8334408610358602 +-3.407714097912152 3.0043041061775035 0.8347597079170833 +-4.171807834383529 -1.2281124493847906 0.7747510599498625 +-4.437940409027941 -0.7029007078775348 0.8186807895890421 +-3.5701982182333936 -0.18914497038891745 0.5225933628074508 +-4.426875990463657 -0.3122248071135595 0.8007572467470984 +-4.451000406946939 -0.42074341504679597 0.8116706439139827 +-3.1844252274621376 -0.6278403313238871 0.4441420051504986 +-3.2988236619459865 -0.8973641662301223 0.4869878143227572 +-3.949687163460418 2.0124661273245423 0.7996936376937697 +-3.784790425120287 2.2383188178086386 0.7889235913705748 +-4.07838314525876 1.5650089441492652 0.7796285343014336 +-3.5959887067661906 0.48210334032730995 0.5396793768565458 +-2.934364244611868 2.0428099081842563 0.5265567585491269 +-2.683905563276701 2.956578912545964 0.6505904038828728 +-1.9031421144687735 2.8044476223311627 0.4768187454551748 +-1.8291565024801038 2.253291295830676 0.35556367258702387 +-0.8925420888707429 0.21554197321030727 0.048803616492286615 +-1.3684909047307514 -0.01747712308657467 0.09015444390189943 +-0.7142051428369964 0.9506631644369824 0.0784617944727868 +-1.3004434804538847 1.221962247732215 0.14295469222897433 +-0.1379980033535733 4.391167667301262 0.7881922469084587 +-1.5262981883270323 4.239456309015172 0.822715768633202 +-0.9762727533628694 4.367593229711749 0.8131615528856124 +-1.0616795839465991 4.3113880884841596 0.8015264784486681 +-1.2532148278726345 4.313593730954234 0.8183347349387566 +0.8132610185539921 4.331161960977899 0.7913946249120157 +2.6764565326791536 3.4661509678014735 0.783996833533345 +1.4134880440643005 3.1592898704201273 0.5000571299919098 +2.418514540829085 2.3066847634173935 0.4653265467777987 +2.212521067455357 2.94047014784846 0.5576251096608719 +1.584816125517805 0.07502154842408987 0.11866956635760992 +1.745321494352267 -0.6787642720091159 0.1615781575637076 +2.127727110965321 -0.8624825390634896 0.23278280567132376 +2.316518076251662 0.5155284433295765 0.24171900096622423 +0.390062427995053 -0.030871682283632795 0.030361198145306283 +1.300053940131643 0.23820482343697005 0.08665794332925177 +-2.9072077112961363 3.2975798565038543 0.7891114186181116 +-2.754665337585643 3.551293154382994 0.8192033609646947 +-2.2886061645430633 3.8698216847026345 0.8196715244788592 +-1.997094746559562 3.9195191300869396 0.7899625958904629 +3.1931264056613107 3.1931264056613133 0.8258996825316721 +3.3646603104137975 2.966347086647303 0.8163594377446103 +2.6550239804385316 2.188519618380753 0.4913377967533264 +3.860195652507995 2.282913344972634 0.8160780635999095 +3.73012197722529 2.534988278014194 0.824039636887341 +3.4285627983639206 2.8034729223468178 0.7980296334571819 +3.5332001219920075 2.7406309430671953 0.8119602397562783 +4.551694725686819 0.14304276939755378 0.8384862039441741 +4.322571394476201 0.9662091808790917 0.7993756615313021 +-3.242242793227479 -2.888122814261169 0.7729809733232469 +-3.2676644070117087 -2.880833694824958 0.7773101023930052 +-3.1528842457687047 -3.1528842457687087 0.8081342089606802 +-3.8722509337743665 -2.290042818439223 0.8205079585276821 +-3.9440057763183467 -2.0095713159872313 0.7978527257769195 +-3.9351286541907564 -2.018492885266642 0.7965983514897559 +-4.087612318315574 -1.7688678046617357 0.8062510190515049 +-4.164368915545405 -1.4992650632596984 0.7977226994622845 +3.565598345261624 -2.7657615810518443 0.8249281675467727 +3.977412273106016 -1.721179986722143 0.7703206212133967 +3.923510350165916 -1.9991283747643307 0.79076582681433 +3.806957597512539 -2.2514284470166066 0.796617837334177 +3.6752180611196517 -2.414622648004611 0.7885242350521215 +3.667036001201054 -2.492115092980311 0.8004227565727504 +1.5496110695507574 -4.304210327686697 0.8451887968502911 +1.269571719200521 -4.369894520188944 0.8373369330639637 +0.14165576387974654 -4.50755949447946 0.8239743475062279 +0.4209004623014769 -4.452661793363217 0.812264392099574 +2.8848751993995028 -3.2722485941075243 0.7789852428697712 +2.732910253993309 -3.523246669613925 0.80799701756957 +1.7961962579973505 -4.1507646478456675 0.8283841419657436 +1.9973000160873735 -3.9199219942186847 0.7903455754959323 +-4.516728024508566 0.14194389654366704 0.8269336027056876 +-4.4584475780054635 0.42144737997537796 0.8141177296387904 +-4.347334830219784 -0.9717444645753035 0.8066509576998424 +-4.184742440039853 -1.2157800673374284 0.7776313365223052 +-4.2496220755331 1.2346293439031917 0.7973733078359801 +-4.13638186658373 1.489189105633716 0.788631964276392 +-4.32176247963127 0.6844999315519772 0.7829993131855107 +-4.280607684561837 0.7325379478079735 0.7726217809349615 +-4.2966330309186915 0.9604112697009719 0.7905383542082776 +-3.1312148337193335 1.2257639162327407 0.4656061506094458 +-2.6806453077347823 1.6970750273587278 0.42702052375306726 +-2.561691557564141 1.6868742395924117 0.4002265640001581 +-3.2018059184221506 0.7309873299907772 0.4453006053320993 +-2.4957634766795116 0.25828354037544216 0.2698224763481523 +-2.0621197787962244 0.5426182126886797 0.20129978360861664 +-1.970280405129694 0.9090331744156999 0.20668412586373183 +-0.7057075280634522 4.455661974228183 0.8244300936903268 +-0.4219002472430099 4.463238413275679 0.8155833675142643 +1.2724656764803863 4.379855586482166 0.8406844069587333 +0.9787721653731011 4.3787749562697815 0.8170112360613679 +0.13990766782357622 4.451934176035423 0.8064431070013175 +2.9635548620996945 3.3614931533554127 0.8150388004020811 +2.6875484019349276 3.4647665223208786 0.7857197614732199 +1.8173928984398968 4.072691566468359 0.8080606662825845 +-0.33024786004017603 2.1080398541033043 0.20101729912059432 +0.18729695688866504 2.4902749234918224 0.26785155759380835 +-0.20743145200083685 1.1689434585744032 0.08398250386421842 +0.09573632605869463 1.0491511972379368 0.07034059270405395 +3.27796609742927 -0.9053375386008702 0.47643666128475937 +2.7806915335694704 -0.5141493557377789 0.33862387319078247 +2.8698287078185083 0.031925688808344066 0.3475546893171724 +3.4835765551065245 0.3522430810728789 0.5081451241949908 +4.114962038583597 -0.33484457470516 0.7026441105916569 +3.0542353063757006 1.4945227022693266 0.4870830995587415 +3.053202309549797 1.4872276870614 0.4859568670406754 +3.57781754748919 0.7412674429781807 0.5516625996391786 +4.307426035073525 0.9799270331975094 0.7955162518563801 +4.33162504628007 1.2584534092369926 0.8244168668222529 +4.274037823096053 1.5387482994837438 0.834615395705007 +3.917587216642919 2.000423819682863 0.7898532286622818 +4.491522181359862 0.7113872268999238 0.8364028776017004 +4.570023826593949 0.4319944407655692 0.8504299234392733 +3.16241123094975 -3.1624112309497465 0.812294060490622 +3.3948192682206964 -2.99293578457616 0.829145361858704 +4.4393254201256225 -0.139511421705878 0.8031066242282601 +4.26826384484386 -0.3695550377731951 0.7565424297641234 +4.380616682570783 -0.9791838399756251 0.8172701444275112 +0.6960318369407998 4.39457206474704 0.8049726397213982 +0.4217325352902404 4.461464206138218 0.8148902794674251 +2.526846455494433 3.71814164919813 0.819645666805871 +1.544977369898884 4.29133973177467 0.8406932623770689 +1.7819674535299637 4.117883820763792 0.8170360007251379 +1.2076882458622742 1.078569778975467 0.11975481791072157 +0.6957756949192173 1.2934462631468255 0.10389575489738177 +1.7450791362547156 1.3500422444960398 0.20984759362898792 +1.7619728651013238 1.927921107886479 0.2868131532463147 +1.1281234880864095 2.334959223542988 0.2862600116285005 +0.8295222367211841 2.2208216735498034 0.24227947295431287 +4.134520611354514 1.789166835701551 0.8226141330895783 +3.9214691903980214 1.998088351916107 0.7906886002073145 +4.371383400826033 -0.692359113383798 0.7978879775079433 +4.28755044251587 -0.40529284440279373 0.7629809955064738 +4.169272152473522 -1.5010303371756941 0.7995177312270454 +4.312252304013306 -1.2528251073199486 0.8178466760507257 +2.05752228387434 4.038114849642734 0.8312700019394869 +2.3157620208058587 3.9157397299567984 0.8368090356403438 +5 98 37 102 169 165 1.0774867006266031 +8 144 54 10 57 56 141 142 143 0.9178323970086539 +9 128 125 111 112 109 176 175 123 124 0.9725115815097006 +5 5 6 29 26 4 0.9013048273569122 +8 160 161 94 86 87 33 154 155 0.8087871330680081 +8 96 95 35 34 82 83 32 0 0.8369873292466784 +6 187 47 116 184 185 189 1.2090784728943933 +8 3 20 21 70 71 74 73 15 0.9895806399687974 +10 194 131 190 189 185 186 199 198 130 195 1.0139349833622118 +6 113 114 25 23 117 118 1.2072345600144516 +10 13 5 6 11 59 149 148 12 63 64 0.9469628954160069 +6 211 207 181 180 178 179 1.2391615594929895 +9 3 20 77 76 19 134 132 1 2 1.0348932636753674 +7 9 137 136 138 139 84 90 0.9141163802769251 +8 40 39 50 49 104 107 106 41 0.9383044104131036 +6 209 210 211 207 206 208 0.992025961785166 +6 26 31 24 69 67 4 1.2772651200972793 +9 88 85 156 157 84 90 89 86 87 0.9527087618554816 +6 27 30 31 26 29 28 1.1154793156760026 +6 98 37 38 40 39 97 1.069505632042342 +6 67 4 5 13 14 68 1.0167918235923548 +5 182 183 184 185 186 1.0104100224400316 +6 17 18 78 80 66 16 1.1341584930936304 +8 144 54 55 53 196 197 140 145 0.9093285920416829 +6 98 165 164 95 96 97 0.9751465900609786 +6 113 114 115 183 184 116 1.1999555311826933 +6 208 47 116 113 118 206 1.008413042654276 +9 193 188 187 189 190 191 192 212 213 1.0402946905980417 +7 193 188 125 128 129 127 126 0.9794759234919658 +8 177 46 110 112 109 203 219 218 0.9469212334083954 +6 100 78 80 81 79 99 1.150852735936966 +6 166 94 86 89 8 167 1.0628488033812435 +8 72 75 73 15 14 13 64 65 1.0404467522573058 +10 57 182 186 199 215 214 200 217 216 56 1.0211512016842836 +8 42 108 173 172 204 205 177 46 0.8782566901215159 +7 208 47 187 188 125 111 209 1.1415242327376531 +9 9 137 135 52 51 133 132 1 7 0.9414991231436255 +7 3 15 14 68 66 16 2 1.1079048328453898 +7 178 179 43 44 41 40 38 1.1527738438416821 +8 45 103 171 170 105 106 41 44 0.9097809913193563 +6 8 18 78 100 168 167 1.220473707314011 +8 42 43 44 45 174 202 201 108 1.046995099058954 +7 17 18 8 89 90 9 7 1.1701765500007224 +6 81 69 24 25 23 79 1.3257734665391805 +7 99 101 180 181 117 23 79 1.2759104181005485 +5 112 111 209 210 110 1.0515551747694307 +8 163 166 94 161 162 158 159 93 0.919927575196444 +7 169 165 164 163 166 167 168 1.1326415401707939 +5 1 2 16 17 7 0.9573842528654732 +7 25 114 115 22 30 31 24 1.205889121978193 +6 99 101 102 169 168 100 1.0918575169942324 +6 180 101 102 37 38 178 1.185974011245531 +6 27 30 22 10 54 55 1.0062760040355205 +9 27 55 53 150 151 60 62 61 28 1.1200506353161108 +8 35 95 164 163 93 36 91 92 0.9752914218512991 +10 0 96 97 39 50 122 121 48 120 119 1.0247622226724111 +5 206 118 117 181 207 1.1288905353805672 +7 110 46 42 43 179 211 210 1.2029090507378215 +6 10 22 115 183 182 57 1.0568507389818476 +6 81 69 67 68 66 80 1.2359935978580798 +10 28 61 153 152 146 147 58 11 6 29 1.0776351474835593 +98 37 2 0 19 0.5138513524212382 +98 165 2 0 24 0.9270548324635256 +169 165 2 0 47 0.9961237620189946 +169 102 2 0 50 0.7420697752214989 +37 102 2 0 51 0.822358817594789 +144 54 2 1 23 0.9984473775851316 +56 57 2 1 33 0.7712640711230871 +10 54 2 1 52 0.3282107984789119 +57 10 2 1 58 0.7912242011699774 +144 143 1 1 0.2098884443770694 +142 143 1 1 0.27798222359839364 +141 142 1 1 0.2838639289236227 +56 141 1 1 0.024137501933484774 +128 125 2 2 28 1.0346930712037128 +112 109 2 2 29 0.7367635969073718 +125 111 2 2 35 0.2656620064126484 +112 111 2 2 45 0.6727824680394758 +128 124 1 2 0.17591902423561956 +123 124 1 2 0.28450616211725643 +123 175 1 2 0.2849007092005641 +176 175 1 2 0.2961495582199548 +176 109 1 2 0.011309939591435721 +5 6 2 10 3 0.9019641594482634 +26 4 2 16 3 0.37437463326355525 +26 29 2 18 3 0.822127441141535 +4 5 2 3 20 1.022298242843926 +29 6 2 3 60 0.5971496977451243 +86 87 2 17 4 0.9090767833191875 +94 86 2 4 31 0.6719608439591068 +161 94 2 4 46 0.7652991578459903 +33 154 1 4 0.28428743841967447 +33 87 1 4 0.18400286349190464 +160 161 1 4 0.06410196048975098 +160 155 1 4 0.2980735091400811 +154 155 1 4 0.2858024742676812 +96 95 2 24 5 0.9555562199908045 +35 95 2 5 54 0.8596142666134058 +0 96 2 5 55 0.39638265614249196 +0 32 1 5 0.2562908131636644 +32 83 1 5 0.291679248451702 +82 83 1 5 0.2852986427843717 +34 82 1 5 0.2932473042405969 +34 35 1 5 0.21564092824708897 +185 189 2 8 6 0.4026351816100182 +184 185 2 21 6 0.710689059724485 +184 116 2 25 6 0.7424456021245897 +116 47 2 26 6 0.46201429487026446 +187 189 2 27 6 0.9196207700404743 +187 47 2 35 6 0.9243260903209192 +3 20 2 12 7 0.9362961764948919 +73 15 2 32 7 0.9419488662116492 +3 15 2 37 7 0.8258591658139223 +20 21 1 7 0.22784995981880954 +21 70 1 7 0.2846238799062332 +70 71 1 7 0.2855735605750866 +74 71 1 7 0.29754650772699814 +73 74 1 7 0.029540195395399267 +185 186 2 8 21 0.9531877733046453 +189 190 2 8 27 0.8054511461649467 +186 199 2 8 33 0.16616644925698354 +198 199 1 8 0.2904313206892453 +130 198 1 8 0.3061297868605651 +130 195 1 8 0.2897786685762272 +194 195 1 8 0.2905505038083827 +194 131 1 8 0.30797664091338706 +131 190 1 8 0.02079558671220957 +113 114 2 9 25 0.7718783477401991 +113 118 2 9 26 0.32976207707791666 +25 23 2 9 43 1.1661987792554755 +117 23 2 9 44 0.06576830545450978 +25 114 2 9 49 1.0022130127957485 +117 118 2 56 9 0.9506082482335999 +13 5 2 10 20 0.19992773355353666 +64 13 2 32 10 0.835376186094367 +11 6 2 10 60 0.5117935772558402 +64 63 1 10 0.00814360948990468 +12 63 1 10 0.29367298282342696 +148 12 1 10 0.28383379375832923 +148 149 1 10 0.2848306202642498 +59 149 1 10 0.296165605332375 +59 11 1 10 0.0865581954852431 +211 207 2 11 15 0.947134279121676 +178 179 2 11 38 0.6468563240055841 +180 181 2 11 44 0.32626214807997483 +178 180 2 51 11 0.9542971515622174 +181 207 2 56 11 0.64873204970911 +179 211 2 57 11 0.6969306245768534 +1 132 2 12 36 0.684437806011431 +2 3 2 12 37 0.30040713476665765 +1 2 2 48 12 0.6900892148350869 +132 134 1 12 0.28163685056051285 +19 134 1 12 0.2902120132000363 +19 76 1 12 0.2841332582673779 +76 77 1 12 0.29089166710956244 +20 77 1 12 0.07274124372171986 +90 84 2 17 13 0.976884577455324 +9 137 2 36 13 1.0641698728933846 +9 90 2 42 13 0.8877445221621667 +139 84 1 13 0.2722255934818836 +138 139 1 13 0.2804459763034802 +136 138 1 13 0.2804131783614143 +136 137 1 13 0.012647970213744758 +40 39 2 19 14 0.6928279185172999 +40 41 2 38 14 0.14894409024278027 +41 106 2 14 39 1.0675733888116363 +50 39 2 14 55 0.8228368532050014 +106 107 1 14 0.19228398792085696 +104 107 1 14 0.2830018949496079 +104 49 1 14 0.2862159015156883 +49 50 1 14 0.24207044772108408 +208 206 2 26 15 0.6087716951774462 +208 209 2 35 15 0.5832264364678413 +209 210 2 45 15 0.7532896961362514 +206 207 2 56 15 0.555407843969216 +210 211 2 57 15 0.32268308821101394 +26 31 2 16 18 0.9436661098684959 +67 4 2 16 20 0.36933559580605635 +24 69 2 16 43 0.9167734876062245 +24 31 2 16 49 0.9021334826674386 +67 69 2 16 59 0.7856472397330219 +89 86 2 17 31 0.5894311118635339 +89 90 2 17 42 0.295915296594388 +88 87 1 17 0.11170218429443764 +88 85 1 17 0.28254635652508614 +156 85 1 17 0.28395607632486514 +156 157 1 17 0.294672359024704 +84 157 1 17 0.018102145275643147 +30 31 2 49 18 0.26490140366831255 +27 30 2 18 52 0.7930615792969345 +27 28 2 18 53 0.696589486348976 +28 29 2 18 60 0.4844549806158547 +97 98 2 24 19 0.5691660212267681 +40 38 2 19 38 0.9885224574949818 +37 38 2 51 19 0.6452395744887376 +97 39 2 19 55 0.4926436787953284 +13 14 2 32 20 0.8213346829688882 +68 14 2 20 37 0.707423802248109 +67 68 2 59 20 0.7783773017172648 +184 183 2 25 21 0.5533743304363121 +186 182 2 33 21 1.0378796835304476 +182 183 2 58 21 0.6475357525541866 +80 78 2 22 30 0.8142319587536591 +16 66 2 37 22 0.4154409325138102 +18 78 2 40 22 0.5198760468492345 +17 18 2 42 22 0.6126510439020505 +16 17 2 48 22 0.7406275609003099 +80 66 2 59 22 0.9161649146403049 +54 55 2 52 23 0.6411365330127349 +53 55 2 53 23 0.7904876625978575 +196 53 1 23 0.2960940589161832 +196 197 1 23 0.28813085407407835 +140 197 1 23 0.28423827439267024 +145 140 1 23 0.29286944812215515 +144 145 1 23 0.07882639118468074 +164 165 2 24 47 0.12235998949801084 +164 95 2 24 54 0.44024239776157104 +96 97 2 24 55 0.8142064122380651 +113 116 2 25 26 0.8628877288063058 +114 115 2 25 49 0.4301820070374884 +115 183 2 25 58 0.7475967331163585 +208 47 2 26 35 0.6881115332919471 +206 118 2 56 26 0.8460733319766933 +193 188 2 27 28 1.0501830967763959 +187 188 2 35 27 0.007453370312211485 +190 191 1 27 0.2810654369332304 +192 191 1 27 0.2863311435451206 +192 212 1 27 0.2869120526537136 +212 213 1 27 0.30009723017513174 +193 213 1 27 0.004606731546672929 +188 125 2 35 28 0.8064646979949215 +193 126 1 28 0.28945097253213575 +126 127 1 28 0.2837680734661117 +129 127 1 28 0.28497900728592035 +128 129 1 28 0.12285009421115599 +177 46 2 34 29 1.0112347720787014 +112 110 2 45 29 0.8304516335940102 +110 46 2 57 29 0.05774594002376218 +203 109 1 29 0.29521740805660773 +203 219 1 29 0.28964844435462184 +218 219 1 29 0.2858218195711207 +177 218 1 29 0.2437136523816375 +100 78 2 40 30 0.7256099699488804 +81 79 2 43 30 0.9239975112805048 +99 79 2 44 30 0.82892551733128 +99 100 2 50 30 0.531540276446686 +80 81 2 59 30 0.241547448098194 +8 167 2 40 31 0.6990075853791851 +8 89 2 42 31 0.5852284605820377 +166 94 2 46 31 0.4756371131986557 +166 167 2 47 31 0.8676043891142514 +14 15 2 32 37 0.17186906154190743 +73 75 1 32 0.26854635000141613 +72 75 1 32 0.28403567964100357 +72 65 1 32 0.2826776436201705 +64 65 1 32 0.2840948834353395 +57 182 2 33 58 0.42455912924724465 +56 216 1 33 0.27669980169598407 +216 217 1 33 0.2870280649700175 +200 217 1 33 0.28205241328176944 +200 214 1 33 0.28762709481332305 +214 215 1 33 0.30108720510536263 +215 199 1 33 0.041117135129713565 +42 108 2 41 34 0.8833961601219128 +42 46 2 57 34 0.631229481405295 +177 205 1 34 0.05811934810134626 +204 205 1 34 0.29463692713736284 +204 172 1 34 0.2865269265930067 +172 173 1 34 0.2946480362203639 +108 173 1 34 0.17411820068223366 +209 111 2 35 45 0.7787014257009451 +9 7 2 42 36 0.09738918748856554 +1 7 2 48 36 0.7106581231895643 +137 135 1 36 0.2797581870821712 +52 135 1 36 0.28360594301643205 +51 52 1 36 0.28667182191689355 +51 133 1 36 0.2997970928147618 +132 133 1 36 0.026797967610483364 +16 2 2 48 37 0.7796746461470716 +66 68 2 59 37 0.7524714558238849 +41 44 2 38 39 0.6748462868658138 +43 44 2 41 38 0.31949771323592246 +178 38 2 51 38 0.48177118770363186 +43 179 2 57 38 0.7865034953633253 +44 45 2 41 39 0.9954389527942463 +45 103 1 39 0.032707032768656594 +171 103 1 39 0.2941852307625384 +170 171 1 39 0.2840461927915388 +105 170 1 39 0.28476064495272674 +105 106 1 39 0.1029015042063252 +8 18 2 40 42 0.7843801092864596 +168 167 2 40 47 0.5230568057234746 +168 100 2 40 50 0.8984325721127058 +42 43 2 41 57 0.7391248236060958 +201 108 1 41 0.1339697158609955 +201 202 1 41 0.28251199097385926 +202 174 1 41 0.28211244587758827 +45 174 1 41 0.26159463509037245 +17 7 2 48 42 0.8140216105641833 +79 23 2 43 44 0.6408569537934677 +24 25 2 49 43 0.07547401527402459 +81 69 2 59 43 0.7256145556111604 +99 101 2 50 44 0.7570249927395345 +180 101 2 51 44 0.551811868995772 +117 181 2 56 44 1.1201230408131058 +210 110 2 57 45 0.8981442829578326 +163 166 2 46 47 0.5001992470024138 +163 93 2 54 46 1.053956857186351 +93 159 1 46 0.09588306075198813 +158 159 1 46 0.27874796555746395 +162 158 1 46 0.27830253095603175 +161 162 1 46 0.22913765765204394 +168 169 2 50 47 0.37778748771550713 +163 164 2 54 47 0.6531737225399192 +22 30 2 49 52 0.9058344411975873 +115 22 2 49 58 0.6064796932165799 +101 102 2 50 51 0.649182497414738 +27 55 2 52 53 0.4834171586194106 +10 22 2 58 52 0.6412994106546037 +28 61 2 60 53 0.8381677756459714 +61 62 1 53 0.28105309271891066 +60 62 1 53 0.28284405707284355 +60 151 1 53 0.28407625396621305 +150 151 1 53 0.2948475226476495 +53 150 1 53 0.0070018326433236334 +35 92 1 54 0.09154913723778615 +91 92 1 54 0.279850613742265 +91 36 1 54 0.27850930791795947 +36 93 1 54 0.1910672099445245 +50 122 1 55 0.06286116709841037 +121 122 1 55 0.29720592748185215 +48 121 1 55 0.2855322764749933 +48 120 1 55 0.2856772640418965 +120 119 1 55 0.2975653512963682 +0 119 1 55 0.05670273417406886 +58 11 1 60 0.23809723725472828 +58 147 1 60 0.30084835127737564 +146 147 1 60 0.2877465945135994 +152 146 1 60 0.29091618767078986 +152 153 1 60 0.3085092944962208 +153 61 1 60 0.012878726554702284 +1 0 0 +1 1 1 +1 2 2 +1 3 3 +1 4 4 +1 5 5 +1 6 6 +1 7 7 +1 8 8 +1 9 9 +1 10 10 +1 11 11 +1 12 12 +1 13 13 +1 14 14 +1 15 15 +1 16 16 +1 17 17 +1 18 18 +1 19 19 +1 20 20 +1 21 21 +1 22 22 +1 23 23 +1 24 24 +1 25 25 +1 26 26 +1 27 27 +1 28 28 +1 29 29 +1 30 30 +1 31 31 +1 32 32 +1 33 33 +1 34 34 +1 35 35 +1 36 36 +1 37 37 +1 38 38 +1 39 39 +1 40 40 +1 41 41 +1 42 42 +1 43 43 +1 44 44 +1 45 45 +1 46 46 +1 47 47 +1 48 48 +1 49 49 +1 50 50 +1 51 51 +1 52 52 +1 53 53 +1 54 54 +1 55 55 +1 56 56 +1 57 57 +1 58 58 +1 59 59 +1 60 60 diff --git a/data/test_flat.ply b/data/test_flat.ply index 18f9ef037884db1097058d7ea8b742b946f03deb..8513b06b536d572d65307b7fe4d7de7de8c300e9 100644 --- a/data/test_flat.ply +++ b/data/test_flat.ply @@ -16,567 +16,567 @@ element volume 61 property list int int face_index property int label end_header --1.6260610720657256 -3.0252392362080407 0.0 -2.533868181909128 -0.5498167334391594 0.0 -3.2892851595294976 -0.7356288494671414 0.0 -3.5666191182394966 -0.017282962726457848 0.0 -4.418998373982387 -0.07375746834014053 0.0 --2.9042973410814756 3.294278689491416 0.0 --2.776545503892848 3.321805145950671 0.0 --0.4265790293448972 0.12173891453822776 0.0 --1.6189726385169856 1.101455217725795 0.0 -0.6928572597580431 -2.304799302113331 0.0 --0.911788257791409 2.266410627951538 0.0 --0.6965812815976165 3.013543001127871 0.0 --0.2089536043906683 3.0790617710384236 0.0 -2.388098159766834 3.6947663769901844 0.0 --3.0778494593952 -3.134650891864552 0.0 --1.7056669307878096 -3.0340273534195665 0.0 --2.4041957689507476 -2.522397211868495 0.0 --4.540414770154211 -0.14268828251402843 0.0 --4.125185745947887 -1.1279039819522352 0.0 --4.0712146163285885 -1.1069190677796454 0.0 -2.2954798664233644 0.2926012682378134 0.0 -2.2109433993899694 0.3665994366985298 0.0 -3.3884928056227226 0.4316902261596603 0.0 -3.5715309583581982 0.8352848436031677 0.0 -4.44471889348723 -0.1396809184346372 0.0 -3.3328859698993214 -0.8012228808272691 0.0 -2.015142026499698 -2.6595337732983824 0.0 -2.0215572424539783 -2.7167369960114476 0.0 -1.6571544022462223 -3.1652629426958088 0.0 -0.8664085862653442 -3.2480495205752593 0.0 -0.798078179994831 -3.3559672587532114 0.0 --3.508590546450958 2.72154179954437 0.0 --1.880079846334406 2.296205181812675 0.0 --2.0612725122824624 1.5104148180026817 0.0 --2.497412191077751 1.4253892084695488 0.0 --2.2893146162505085 2.655315209063563 0.0 --2.0416488825387993 2.567210949490476 0.0 --1.5437419007053939 3.2974618747422992 0.0 --1.0102945887580386 3.3346829104895703 0.0 --0.34941379469207684 -2.7925716557723868 0.0 -0.04262663331906747 -2.2510507546119616 0.0 --1.2438314089115803 -2.5794823337186314 0.0 --1.2522144919910276 -1.9799869815466113 0.0 --0.4399088226029394 -1.4925413155930816 0.0 --0.5760444110970679 -1.4732771743186337 0.0 -1.3095108012205718 -1.9710238766155899 0.0 -1.0321064990136062 -2.002324038410138 0.0 -1.9501042460119518 -1.190612008411791 0.0 -1.9498324251534274 -1.1728161224917664 0.0 --0.8002371513614104 2.073409431136723 0.0 --0.468624342717132 0.9455165221577195 0.0 --0.9562277303193308 1.298279182210147 0.0 -2.9923835032682 3.3941928280426596 0.0 -0.0943704278968996 3.437272226914472 0.0 -0.14133171727989688 4.497248164479237 0.0 -1.7287803393405645 3.994975651728616 0.0 --3.528307178545207 -2.7368355870867878 0.0 --4.008331883730438 -2.042347104780604 0.0 --3.6539524315252994 -2.3342303704113405 0.0 --3.6360891953703356 -2.4710836654554633 0.0 --3.802454645537291 -2.2487654086420137 0.0 --4.138870816444042 -1.791049337545491 0.0 --4.5698384604823605 -0.431976918509067 0.0 --1.7568942798232587 -1.7264965941541959 0.0 --2.015818011275967 -1.0740117913353056 0.0 --2.7240515872447735 -1.1578279969422969 0.0 --2.4487030357212887 -2.3029144869740885 0.0 --2.984691201948346 -1.8437855081129875 0.0 --2.9752221162593604 -1.5134005265418933 0.0 --1.9327810363229483 -0.9597422983365766 0.0 --2.078895925502863 0.10954564848012033 0.0 --1.7296875907014648 0.3248655052418519 0.0 --0.8674837862891178 -0.08211586301204978 0.0 --1.0489724487620105 -0.7862744183918795 0.0 --1.5358057202442343 -4.265864494832214 0.0 --1.2273774184157429 -4.224660784280973 0.0 -3.0306926828089575 1.5677918501990435 0.0 -3.5388862875147624 2.745041585159633 0.0 -2.8652840866106537 2.5337388928834814 0.0 -2.9825482105324763 1.585903453157504 0.0 -3.1455506818424417 3.1455506818424426 0.0 -3.222239734640911 2.872185049905193 0.0 -3.25206794552244 2.867083564400942 0.0 -4.152369527598594 1.7968907514826022 0.0 -3.967896639209961 2.0004601689376953 0.0 -3.969601185553665 2.02261282838285 0.0 -4.413482173325185 -0.6990269039044261 0.0 -4.471438934117194 -0.4226754246926977 0.0 -4.274900592090667 -0.9555534940849673 0.0 -4.1735607227923275 -1.0655403294797356 0.0 -4.267370274581739 1.53634783431175 0.0 -4.233155103082948 0.9548967287691043 0.0 -4.240684248664025 0.9479052351812113 0.0 -4.292881395977474 1.2471973382962593 0.0 -4.406639721517076 0.6979431660043542 0.0 -3.2711828568005923 -2.8839356255751323 0.0 -3.5040740992622235 -2.7180384839973324 0.0 -3.3004611587430217 -2.829405755523635 0.0 -3.0821118986316662 -1.654672367219682 0.0 -2.7103841763757077 -1.8708049940039833 0.0 -2.7022225082156375 -1.9215762440921231 0.0 -0.963763088930803 -4.196996434937974 0.0 --3.163800606598371 3.163800606598371 0.0 --3.368768041532378 2.96996853877387 0.0 --4.410112371597157 0.13859336467088737 0.0 --4.3558143731803725 0.2035849409195986 0.0 --3.8304338628498766 0.18945090634629808 0.0 --3.480677926526481 -0.308330822569429 0.0 --3.093247470905736 -0.3728634264384999 0.0 --3.50194333730938 0.7769968178844454 0.0 --2.4926348358065664 0.1597584576948127 0.0 --2.8471566482743413 0.7301426196209112 0.0 --2.050491736784713 3.883141882683935 0.0 --0.6800357513236153 4.293576754952632 0.0 --0.8522022337691152 4.223277439795915 0.0 -1.280842132477727 -0.20972702340359667 0.0 -1.2727263026634097 -0.6161443327190579 0.0 --0.005401683732777312 -0.05118478333611052 0.0 -0.7011276804200004 0.3174310016028097 0.0 -0.24411898499900633 -0.9185639421225057 0.0 -0.5515478351248005 -1.0020868363121629 0.0 -2.503523900254259 3.6838235513114723 0.0 -2.774524619198663 3.576895585967336 0.0 -0.6937342186743818 4.380065473937302 0.0 -0.42367296865753207 4.481991846972493 0.0 -1.6884434781506976 3.9933418954174607 0.0 -0.7395165560129303 4.346474553036772 0.0 -0.5646552285783271 3.5071392150797864 0.0 --0.40974324780881843 4.334630792826481 0.0 --0.31227975859581997 4.32597105129807 0.0 --0.13906779913387896 4.4252091209957785 0.0 -2.255809735358908 3.8143659515127415 0.0 -2.0070206206797274 3.9389997549115057 0.0 --2.9593523985545733 -3.3567263941451078 0.0 --2.759660976929218 -3.5577334938175382 0.0 --1.8217200238253144 -4.209746590607717 0.0 --2.2932286578408667 -3.73220221619819 0.0 --2.5073962565624854 -3.689521550585961 0.0 --3.1195685576442775 -3.1195685576442806 0.0 --3.3534769415513312 -2.956487620732897 0.0 --4.1531170656231735 -1.2065920467151814 0.0 --4.186861821872586 -1.5073630078249913 0.0 --4.31852140744073 -0.9653039015212724 0.0 --4.493433994862228 -0.7116900284114998 0.0 --1.0163184599465693 -3.7626636755594616 0.0 --1.07017008908106 -4.160120858253364 0.0 --0.08716236074525012 -3.436050723911306 0.0 --0.24876538564262807 -3.337889472170198 0.0 --0.42398744798516824 -4.485318690757135 0.0 -0.026243594534321683 -4.400280528079143 0.0 --0.1402751660730855 -4.46362815994694 0.0 -3.763247076445736 2.5575000721980277 0.0 -3.9094047020721283 2.312015495758798 0.0 -2.180687630366591 0.47524722354728605 0.0 -2.8525493039059464 1.532212904382682 0.0 -4.488251797783194 0.1410489950666849 0.0 -4.491517447057971 0.42457340297429536 0.0 -2.840737798773217 -3.2483481148517166 0.0 -1.952396426110446 -3.9542647547160845 0.0 --3.9952138861273454 2.0356631511554175 0.0 --4.054928972136777 1.7547244578122179 0.0 --3.7372485482036124 1.3217484245576243 0.0 --4.040444191609356 1.4932643166747075 0.0 --3.036899572133522 2.169374820451523 0.0 --2.9655208559133364 1.7425184672242817 0.0 --3.8586501978053387 2.281999365609318 0.0 --3.553533833910155 2.5361890714519184 0.0 --3.6519004327324187 2.4818289712707946 0.0 --4.084173674875146 1.4703930000455552 0.0 --4.532742439237652 0.7179158743739273 0.0 --4.474774196615786 0.4229906998231025 0.0 --2.262435596851586 3.8255696714368765 0.0 --2.0132947605535527 3.951313447740877 0.0 --1.2583190747468824 4.331162663932291 0.0 --0.9548516223669856 4.271760598525314 0.0 -0.9764092137745588 4.368203718500029 0.0 --2.066816796450553 -4.056356357668359 0.0 --2.2573578509201755 -3.816983671967326 0.0 --0.9549985723509454 -4.272418014962311 0.0 --0.7000490151346069 -4.419935529652909 0.0 -0.8308318344311684 0.828339550923089 0.0 -1.4308407870399988 1.14507094014912 0.0 -0.19441905428830752 1.3191485973081816 0.0 -0.44610566699992155 2.2059460640857362 0.0 -0.22873937156487942 1.9590825515486998 0.0 -4.088184238309151 -1.769115296543227 0.0 -3.707582607694366 -2.5196705382985516 0.0 -3.898903837065257 -2.017748343649415 0.0 -3.922335262252034 -1.9985296375668138 0.0 -3.8431108144769954 -2.2728093999271732 0.0 -0.13934573060484148 -4.434053043801592 0.0 -0.4196009064037997 -4.438913927983629 0.0 -0.9426266569755781 -4.217069247268146 0.0 -0.691317023160809 -4.364803902102185 0.0 -3.0873987885019867 -3.0873987885019836 0.0 -2.858004574972981 -3.241769853460173 0.0 -1.7742515489785307 -4.10005341737905 0.0 --4.483045613443209 1.0020794186404518 0.0 --4.328508971314094 1.2575481057717819 0.0 --2.6947099096982954 3.4739990824972757 0.0 --2.5018811632222153 3.6814063371731724 0.0 --1.546943987608216 4.296802222603142 0.0 --1.8033025176287667 4.167186244942959 0.0 -1.5030070527514294 4.174762691204914 0.0 -1.2527214818637478 4.311895622853547 0.0 -1.7808680489514819 1.8140676487808503 0.0 -1.5217338894102848 1.6580010326259462 0.0 -2.0621706840235667 2.7272051338724483 0.0 -2.098877932900885 2.671306861097871 0.0 -0.7522911968473548 2.283874643080049 0.0 -1.1544091629298714 3.084063947045426 0.0 -1.1914120195326563 3.0960882801443126 0.0 -4.201817396719666 -1.2207408008304477 0.0 -4.182617671183908 -1.505835019555987 0.0 -1.2316151981682002 -4.239247317863875 0.0 -1.515285278719775 -4.208866775808509 0.0 -2.7236111928747033 -3.5112583922569245 0.0 -2.537668025163897 -3.7340651054137757 0.0 -2.0156831605149064 -3.956000946596378 0.0 -2.2975236297753563 -3.8849002949341163 0.0 -10 78 79 76 84 85 152 151 77 82 81 0.9434498018123885 -7 136 137 134 133 14 16 15 0.9255251911192552 -7 211 207 13 131 132 55 125 0.9059945702932392 -6 20 21 115 116 48 1 1.1755045984555117 -6 50 182 180 118 117 7 1.2284746470689976 -7 33 34 111 110 70 71 8 1.226504882430949 -7 34 164 163 35 36 32 33 0.9768903541806652 -5 65 68 19 107 108 0.9389935740534928 -5 78 79 154 205 208 0.9535804571347783 -8 130 54 124 123 126 127 53 129 0.7748112526583577 -6 36 37 38 11 10 32 1.054740738257793 -9 161 162 160 159 165 167 166 163 164 0.8697304125520396 -5 73 69 70 71 72 1.0929868044408035 -7 76 84 83 90 93 91 23 0.9416991831460404 -6 65 68 67 66 63 64 1.0008293371611605 -5 147 39 41 0 144 1.0123766701395471 -8 76 79 154 153 21 20 22 23 1.0504170606460237 -6 117 118 115 116 120 119 1.1283601203859082 -7 117 7 72 73 44 43 119 1.3846161210082115 -10 18 19 68 67 58 60 57 61 141 140 0.9507243450242823 -10 18 19 107 106 105 104 17 62 143 142 0.9539124581224572 -6 40 39 41 42 44 43 1.1376113779038737 -5 26 45 47 99 100 1.0465761874009059 -10 161 162 168 198 197 169 170 105 106 109 0.956757188967694 -6 73 69 64 63 42 44 1.0750363364629818 -6 108 110 111 109 106 107 1.026650498691573 -9 146 147 144 145 178 179 148 150 149 0.90027476295843 -7 147 39 40 9 29 30 146 1.1360869013771964 -9 3 4 155 156 94 92 91 23 22 0.8981748240491224 -8 89 25 98 187 188 185 213 212 0.9151834300186454 -5 50 182 184 49 51 0.9835638321857251 -9 3 4 24 87 86 88 89 25 2 0.9142728739237728 -6 40 43 119 120 46 9 1.273217640005875 -7 184 183 209 206 181 180 182 1.3100397835876187 -6 153 181 180 118 115 21 1.1823957786521961 -6 64 69 70 110 108 65 1.0869336478188352 -7 211 207 208 205 206 209 210 1.148451546706179 -8 36 37 112 171 200 199 6 35 0.9401312711847563 -9 208 207 13 121 122 52 80 81 78 0.8886498152242523 -9 37 38 114 174 173 201 202 172 112 0.8837467969711792 -8 146 149 190 191 193 192 101 30 0.9186222607526577 -8 101 214 215 196 158 28 29 30 0.9347908355663197 -7 26 45 46 9 29 28 27 1.1565268155272912 -8 99 100 97 96 186 189 187 98 0.7927483921392016 -8 26 27 157 195 194 95 97 100 0.8799052415903519 -10 0 144 145 75 74 135 176 177 136 15 0.9935007348306046 -8 27 28 158 218 219 217 216 157 0.8755913609989092 -8 102 103 31 166 163 35 6 5 0.8423749236942062 -6 210 127 53 12 183 209 1.0671718949913933 -8 210 127 126 175 204 203 125 211 0.9176828477628634 -6 50 51 8 71 72 7 1.3302563020478606 -6 49 51 8 33 32 10 1.1600963325617357 -7 25 2 1 48 47 99 98 1.1052171360837209 -7 42 63 66 16 15 0 41 1.012168283553887 -8 12 53 129 128 113 114 38 11 1.0276614183017094 -5 153 181 206 205 154 1.0884658343476765 -5 3 22 20 1 2 1.0533247024606902 -5 34 164 161 109 111 0.8065594030389778 -6 184 183 12 11 10 49 1.015205400493723 -9 16 14 138 139 56 59 58 67 66 0.9510240746416034 -6 48 116 120 46 45 47 1.0961753617519825 -78 79 2 0 8 0.9550617234292711 -76 84 2 0 13 1.0322563295683034 -76 79 2 0 16 0.051438510597661975 -81 78 2 0 38 0.49189748511602066 -84 85 1 0 0.022218141207824598 -152 85 1 0 0.2955968885287134 -152 151 1 0 0.28570041791760215 -77 151 1 0 0.29242021594557527 -82 77 1 0 0.3117033942714787 -81 82 1 0 0.03026131720105827 -136 15 2 1 45 0.9125113271151876 -16 15 2 1 53 0.8658567661506339 -16 14 2 1 59 0.9103097622887193 -133 14 1 1 0.25171230033716724 -133 134 1 1 0.28333816895977454 -137 134 1 1 0.2846147941490443 -136 137 1 1 0.21837902728807823 -211 207 2 2 36 0.9456719449097681 -13 207 2 2 38 1.0209816250197241 -211 125 2 49 2 1.0257213661500437 -131 13 1 2 0.17833756042490922 -131 132 1 2 0.27826176261299784 -132 55 1 2 0.28381500168979146 -125 55 1 2 0.04036993349430775 -20 21 2 16 3 0.112348311932262 -115 116 2 17 3 0.40649833456583095 -115 21 2 34 3 1.0941848816930375 -48 1 2 3 52 0.8539473074664067 -1 20 2 56 3 0.8754981887528747 -48 116 2 3 60 0.8765592864388679 -117 118 2 17 4 0.796907359306127 -117 7 2 18 4 0.45529436823159425 -50 182 2 4 30 0.7610699533510394 -180 182 2 33 4 0.8036882148834891 -180 118 2 34 4 0.5271154648995844 -50 7 2 50 4 0.8248498985826832 -33 34 2 5 6 0.44435028265563015 -70 71 2 12 5 0.4102549229572486 -110 111 2 25 5 0.6715830609028 -110 70 2 35 5 0.416774773838973 -8 71 2 50 5 0.7844420833771637 -8 33 2 51 5 0.6023928394258914 -34 111 2 57 5 0.778260242236107 -32 36 2 10 6 0.31551335878952985 -163 164 2 11 6 0.4327831644365354 -35 36 2 37 6 0.2628700747705627 -35 163 2 6 47 0.8916396848206274 -32 33 2 51 6 0.8064101177750722 -34 164 2 57 6 0.5654172696800839 -65 68 2 14 7 0.4353371778878107 -19 68 2 19 7 1.1689425719535935 -107 19 2 20 7 0.993215368080037 -107 108 2 25 7 0.3927681439534275 -65 108 2 35 7 0.8674531557717738 -154 79 2 8 16 0.14064988713765395 -208 205 2 8 36 0.9143245339721664 -208 78 2 8 38 0.7786548261732134 -154 205 2 8 55 1.1081258092655963 -53 127 2 48 9 0.47544630589296005 -126 127 2 9 49 0.8573565730637156 -129 53 2 9 54 0.9773177449710775 -123 126 1 9 0.056783557295456026 -123 124 1 9 0.28865561536331197 -124 54 1 9 0.2827531387153034 -130 54 1 9 0.2895056348175126 -129 130 1 9 0.19962609393055905 -36 37 2 10 37 0.8838426196951555 -37 38 2 10 39 0.5347442754494512 -32 10 2 10 51 0.9687498727137488 -11 38 2 10 54 0.448939729222498 -10 11 2 10 58 0.7775093733522285 -161 162 2 11 23 0.3483465220566177 -163 166 2 11 47 0.6336115964677949 -161 164 2 57 11 0.8789829690348816 -166 167 1 11 0.1123877584773448 -165 167 1 11 0.28753667010753414 -165 159 1 11 0.28165789802451513 -160 159 1 11 0.28721497334661744 -160 162 1 11 0.26186105909541874 -72 73 2 18 12 0.7271708229300791 -73 69 2 24 12 0.9006712634579654 -69 70 2 35 12 1.0792248486981413 -72 71 2 50 12 0.9534302462419275 -76 23 2 16 13 0.9105342140804632 -91 23 2 28 13 0.6723492484979116 -91 93 1 13 0.2983402024415568 -90 93 1 13 0.2902737099030366 -90 83 1 13 0.2847942827631532 -83 84 1 13 0.2747194100777211 -67 68 2 19 14 0.3305206493269635 -64 63 2 24 14 0.7019814218474735 -64 65 2 35 14 0.7131759631759307 -66 63 2 53 14 0.900475952982702 -66 67 2 59 14 0.7057497669609823 -41 39 2 21 15 0.9194508838428715 -144 147 2 26 15 0.8772518713222646 -147 39 2 27 15 0.5545282888411215 -0 144 2 45 15 0.9568598940214023 -0 41 2 53 15 0.5871956501132175 -22 23 2 16 28 0.44316089695074223 -153 21 2 16 34 0.1127818830589771 -153 154 2 16 55 1.2524274664965374 -20 22 2 16 56 1.1018271295775055 -117 119 2 17 18 0.90255590919419 -120 119 2 32 17 0.3185727102930895 -115 118 2 17 34 0.783558823097057 -120 116 2 17 60 0.8179547653269407 -43 44 2 18 21 0.13749183828025788 -73 44 2 24 18 0.834046590701364 -43 119 2 32 18 0.8929412448917932 -72 7 2 18 50 0.4857507334282835 -18 19 2 19 20 0.057907248727720115 -58 67 2 59 19 0.8297269167441215 -18 140 1 19 0.08349832426426702 -140 141 1 19 0.30265802421421295 -61 141 1 19 0.2877169968429579 -57 61 1 19 0.28318012072064636 -57 60 1 19 0.29153722468161597 -58 60 1 19 0.17133933365312215 -105 106 2 20 23 0.5255705961794775 -106 107 2 25 20 0.6083714857188703 -104 17 1 20 0.30999690339224467 -17 62 1 20 0.29078113499399644 -62 143 1 20 0.28996045630049017 -142 143 1 20 0.30808182333955225 -18 142 1 20 0.25262118707865877 -104 105 1 20 0.08468871008204823 -42 44 2 24 21 0.8449620151445616 -40 39 2 27 21 0.6685361497995155 -40 43 2 32 21 0.8989866713709359 -41 42 2 53 21 0.5995539620065664 -26 45 2 42 22 0.9858809785765574 -99 100 2 43 22 0.05142307519652581 -26 100 2 44 22 1.0082960394979317 -99 47 2 52 22 1.0201412010906814 -45 47 2 60 22 1.0096547160009852 -106 109 2 25 23 0.6731390818657496 -161 109 2 57 23 0.5933994061734382 -168 162 1 23 0.049349415711272035 -168 198 1 23 0.32404117964283885 -197 198 1 23 0.29857297912762876 -169 197 1 23 0.2884765057750046 -169 170 1 23 0.3005680883535411 -105 170 1 23 0.24958030096906128 -64 69 2 24 35 0.14125387159131192 -42 63 2 24 53 0.5647646100338996 -108 110 2 25 35 0.8027587488769513 -109 111 2 25 57 0.656460908228652 -146 147 2 26 27 0.18907979532293678 -146 149 2 40 26 0.9708759065598533 -144 145 2 26 45 0.401088780739892 -145 178 1 26 0.1608574824831871 -178 179 1 26 0.29455168284241334 -179 148 1 26 0.28369868983304325 -148 150 1 26 0.28454022217357805 -149 150 1 26 0.17816121939828813 -40 9 2 32 27 0.6524482921410169 -146 30 2 40 27 0.8888555430223287 -29 30 2 41 27 0.1277312907416911 -9 29 2 42 27 0.9590834361831715 -3 4 2 28 31 0.854248070179332 -3 22 2 56 28 0.48301750235888824 -155 4 1 28 0.22569415905043286 -155 156 1 28 0.2835432142452839 -156 94 1 28 0.2862433503718578 -92 94 1 28 0.3000370893690568 -91 92 1 28 0.010274678377963852 -89 25 2 29 31 0.8812478390406788 -98 187 2 43 29 0.8938530278242092 -25 98 2 52 29 0.889530022339678 -187 188 1 29 0.030304955861590488 -185 188 1 29 0.2830844798403485 -185 213 1 29 0.27970373164294576 -212 213 1 29 0.28573999197062727 -89 212 1 29 0.1577517858184785 -184 182 2 33 30 0.6408536104040222 -50 51 2 50 30 0.6018293428609182 -49 51 2 51 30 0.7906705783855897 -184 49 2 58 30 1.0353083212887897 -25 2 2 52 31 0.07876298378666692 -2 3 2 56 31 0.770022686452171 -88 89 1 31 0.14955558521686974 -88 86 1 31 0.2915660236157752 -86 87 1 31 0.28236346467631485 -24 87 1 31 0.2842531462332658 -24 4 1 31 0.07076331249991495 -9 46 2 32 42 0.4545121906921687 -120 46 2 32 60 1.1096896367450584 -180 181 2 33 34 0.6784758773396422 -209 206 2 33 36 0.9918466783739036 -209 183 2 48 33 0.3159468976141818 -181 206 2 33 55 0.5209211416584864 -184 183 2 33 58 0.32892202755862604 -153 181 2 34 55 1.0054521867145891 -208 207 2 36 38 0.06687330573048117 -209 210 2 48 36 0.8955455213594307 -210 211 2 49 36 0.0389075311892086 -205 206 2 36 55 0.30250173771263655 -112 37 2 37 39 0.7744781908284644 -35 6 2 37 47 0.825592377535381 -112 171 1 37 0.2196241319343623 -200 171 1 37 0.279494626425232 -200 199 1 37 0.28319727180841386 -6 199 1 37 0.17280063309700988 -80 81 1 38 0.2839189665090698 -80 52 1 38 0.29203270614683524 -122 52 1 38 0.2843286674278673 -121 122 1 38 0.29133310735482953 -121 13 1 38 0.11594329217727573 -114 38 2 54 39 0.9025482979980116 -114 174 1 39 0.11352318556090978 -173 174 1 39 0.30922661597695583 -201 173 1 39 0.29066300117584 -201 202 1 39 0.28726294153458515 -202 172 1 39 0.3011607654732496 -112 172 1 39 0.07765936725891077 -101 30 2 40 41 0.8571940061871302 -149 190 1 40 0.11803675699517281 -190 191 1 40 0.28029732741704144 -193 191 1 40 0.28164151689986505 -192 193 1 40 0.2915168267648474 -192 101 1 40 0.029149040303930264 -28 29 2 41 42 0.7950676467875265 -28 158 2 41 46 0.8424320221992522 -101 214 1 41 0.27116395322929776 -214 215 1 41 0.2852922921070859 -196 215 1 41 0.2808983376676138 -196 158 1 41 0.23019542004436425 -26 27 2 42 44 0.05756182488855433 -27 28 2 42 46 0.5778970105482306 -45 46 2 42 60 0.27916455185302164 -97 100 2 43 44 1.087218425529481 -98 99 2 43 52 0.42999396723010563 -96 97 1 43 0.23207950946623712 -96 186 1 43 0.2841928128665991 -186 189 1 43 0.2816173227479588 -187 189 1 43 0.261091945105666 -27 157 2 44 46 0.9765588387425002 -195 157 1 44 0.018477420904125238 -194 195 1 44 0.27649978462363506 -194 95 1 44 0.2741784864437488 -97 95 1 44 0.061892856554413685 -0 15 2 53 45 0.08008947338448368 -136 177 1 45 0.09205764515495403 -176 177 1 45 0.3059496300016088 -176 135 1 45 0.28913836049977604 -74 135 1 45 0.29136953884509575 -74 75 1 45 0.31116838388884804 -145 75 1 45 0.1699398318470176 -218 158 1 46 0.06331054504445446 -218 219 1 46 0.29067052272246136 -217 219 1 46 0.2835852341610274 -216 217 1 46 0.2902028481012695 -216 157 1 46 0.28782017958195555 -5 6 1 47 0.13068373162055372 -5 102 1 47 0.29045907616973604 -102 103 1 47 0.28210373960752166 -103 31 1 47 0.28507223233052414 -166 31 1 47 0.1907237082770632 -210 127 2 48 49 0.7258115358035249 -12 53 2 48 54 0.4693827854343575 -12 183 2 48 58 1.09152814290895 -203 125 1 49 0.259422768871607 -203 204 1 49 0.2853914994128617 -204 175 1 49 0.28199126073679154 -126 175 1 49 0.23788713276068052 -8 51 2 50 51 0.6913540962034255 -49 10 2 58 51 0.22291951757912046 -1 2 2 56 52 0.7779337713069732 -48 47 2 52 60 0.017797961744471232 -16 66 2 59 53 0.22394991253058755 -11 12 2 58 54 0.4920096145288581 -128 129 1 54 0.09784744683900114 -128 113 1 54 0.27339252272519066 -113 114 1 54 0.1859658339296766 -58 59 1 59 0.13801420061124772 -56 59 1 59 0.2867769987318263 -56 139 1 59 0.2807358681255502 -138 139 1 59 0.2851464957629749 -138 14 1 59 0.04436169478557085 +3.674683837100023 -2.3062871804928227 0.0 +-2.505883375312004 2.381290800596283 0.0 +0.7149212868956139 3.271079849092168 0.0 +0.0691701853914935 -2.369290515089281 0.0 +1.45684699995659 2.208609713474029 0.0 +1.5348039139809861 2.966982526620826 0.0 +3.491812192267398 0.6904602065697117 0.0 +-2.177590693494827 -2.2265616575590577 0.0 +-2.664537042155698 -2.232109470942664 0.0 +-2.8996286232828914 -3.28898306864242 0.0 +-1.5802415713682199 -4.0163992801819255 0.0 +-1.4938263560724454 -4.149262325185663 0.0 +3.0170268939204306 -3.1622855028852603 0.0 +1.4050205628650616 -2.3989727462457817 0.0 +1.4305765818868503 -2.5744334395273545 0.0 +1.9189892264010504 -2.9562841565409053 0.0 +2.550620199471069 -2.79800373167244 0.0 +-0.5077300788169253 -3.513613340726238 0.0 +-0.14103023436685896 -4.487654822635143 0.0 +2.1033352798484195 -1.672032618555592 0.0 +3.186520254266475 -2.016161784704169 0.0 +2.6646401014353414 -2.1580648396397177 0.0 +4.107156992387349 -1.7773255403827202 0.0 +4.1566367484383075 -1.4964813118097013 0.0 +4.345188295289749 -0.13655304337622998 0.0 +4.1408787772387 -1.3221987294796043 0.0 +4.329904806332509 -0.16625499200912722 0.0 +4.412017398861334 0.13865323256451215 0.0 +4.327396043036505 0.674648947156141 0.0 +4.3320760182976965 0.6861334356014285 0.0 +4.405134534527653 0.4164078136018546 0.0 +-3.9576408344988026 2.016518725135506 0.0 +-4.277368240176904 1.2152099422946754 0.0 +-4.31165145796563 0.048969886912911015 0.0 +-2.9037023391275643 -1.954485799672651 0.0 +-3.2594861259936874 -0.8460130211805476 0.0 +-2.850738765206837 -1.1251957535489798 0.0 +0.2244467828691593 2.6218669424434906 0.0 +0.6509600854315688 1.859355202626179 0.0 +0.6931632797993439 3.3583701270707826 0.0 +-3.0587161474687297 1.3965275422558614 0.0 +-3.4350079404818605 0.9017786355438899 0.0 +-2.473158307239915 0.1229962154060399 0.0 +-3.0305894237765103 0.03463692969032502 0.0 +-3.4198330826477346 0.3864827959135839 0.0 +0.8013281492018919 -1.9391025678954477 0.0 +0.3056673442726685 -1.9673204685607122 0.0 +-1.0593886111609903 -1.5715441655047113 0.0 +-1.794291963800515 -1.5523112156756818 0.0 +-1.9936510882028968 -0.6321809101930471 0.0 +-2.1392726224567986 -1.0439198181812634 0.0 +1.8471881540899273 1.9598378634155285 0.0 +2.508980673994149 2.1920644627233794 0.0 +2.253053672969049 0.5726275094069311 0.0 +1.9679623622769469 1.10862041410509 0.0 +2.234028219828265 0.8959473974772755 0.0 +2.8937719589613353 3.2823399869602885 0.0 +1.6422403339183311 3.0477801440816106 0.0 +2.4116327789189906 2.897886574394209 0.0 +2.873684631069604 3.2881790092537053 0.0 +-3.9672212998081333 -1.7167699587740404 0.0 +-3.8625889006761347 -1.9486271628794571 0.0 +-2.2893741633530786 -3.8711202997701273 0.0 +-2.4991237382176315 -3.6773489094922076 0.0 +-2.675685021984635 -3.4494723450462477 0.0 +-2.6260115741854033 -3.469210842058881 0.0 +-0.706520787994236 -3.378039915987744 0.0 +-1.3316949967930896 -3.556011462539472 0.0 +-0.6739679290594124 -2.5567687438891573 0.0 +-0.9048200991867723 -2.365398826184047 0.0 +-1.8260649541206755 -2.728905238588463 0.0 +-1.833956333252693 -2.8455846057994876 0.0 +-0.9990148382472358 -4.469335468884512 0.0 +-1.2652531938040872 -4.355030058276506 0.0 +-0.7099829602192985 -4.482655990478076 0.0 +-0.436079050123967 -4.402817921785529 0.0 +-0.4172382844209976 -4.4139199981184465 0.0 +3.126018217157062 -3.1260182171570587 0.0 +3.3652286116129777 -2.966848111550561 0.0 +3.6526520507505813 -2.4823397703484726 0.0 +3.543644716324352 -2.748732600892017 0.0 +2.333175769528295 -0.9402598306233604 0.0 +2.1048395915114333 -1.2988587804 0.0 +1.7525902040972279 -0.11602308444676952 0.0 +1.1972301977567563 -0.10250643325752494 0.0 +0.8032329692252812 -0.6132788718126284 0.0 +1.112862847705947 -1.1771895947599316 0.0 +3.7838258998660166 -2.2377483991633813 0.0 +3.9807756360481132 -2.0283064952938843 0.0 +4.380146205300656 -0.9790786758461502 0.0 +4.233718682256632 -1.2300089810432102 0.0 +4.4443154205068085 -0.7039104105026756 0.0 +4.4224048178076245 -0.41804033602416135 0.0 +3.200148909479363 -1.2305281598804936 0.0 +3.5617136366083697 -1.1103032413376919 0.0 +2.4875514761013475 -0.9075779483615399 0.0 +3.611490260935341 -0.23610572808813277 0.0 +3.159827753279261 0.010882436414748778 0.0 +3.1920260967052547 0.017687591756981928 0.0 +3.138717398242101 3.138717398242103 0.0 +3.3322161674684976 2.9377437270134377 0.0 +4.371771974629547 0.9772068135172683 0.0 +4.3269187425825315 1.257086101616921 0.0 +-4.150648013234758 1.7961457856941838 0.0 +-3.470590068524098 2.577451744272802 0.0 +-4.349718908631481 -0.13669542363644935 0.0 +-3.9903533926318455 -1.599800387341113 0.0 +-3.3211971677299945 -0.865326126431316 0.0 +-4.466127658082951 -0.9982978075809633 0.0 +-4.478323633781653 -0.7092967823286518 0.0 +-4.342557585373037 -0.33346141568755266 0.0 +-4.392286111473601 -0.41519328003648137 0.0 +-1.5197288702712277 4.2212093261578225 0.0 +0.0243772328358006 3.812687868876671 0.0 +-0.004454473673859492 4.350544653103567 0.0 +-1.7804881807823385 4.1144654231371165 0.0 +-2.0035787503912776 3.9322447041248023 0.0 +-2.9565105162281666 3.3535029113930137 0.0 +-2.1259268819627013 3.762056840315273 0.0 +-2.262010987639713 2.682080355516247 0.0 +0.6431948844800301 1.8362910242276156 0.0 +0.8255628062327663 0.6061459609673985 0.0 +0.9753064276634243 0.9854926033527807 0.0 +0.051669905316017055 0.49776748880585175 0.0 +-0.4006096254109598 1.0356130723934522 0.0 +-0.2674368750123745 1.4027015012680082 0.0 +-0.3423955475654844 2.7290765762546054 0.0 +-0.8725297654392601 3.3894355639528 0.0 +-0.5959562457606308 3.2525765703676566 0.0 +-1.3589102447845278 3.1785401216610834 0.0 +-1.6162420452487196 2.5935735808260003 0.0 +-1.3027004135596765 2.100460431758736 0.0 +-0.8129583577598211 2.1537863249058264 0.0 +1.1008709299770594 4.218911715219968 0.0 +-2.4737471684821766 1.6047265045441264 0.0 +-2.6582453528790007 1.4493239400888958 0.0 +-1.6134756583989192 1.565231819961988 0.0 +-2.2458530872089812 0.40954563602126526 0.0 +-1.3384530894233913 0.6237805511471264 0.0 +-1.2754519264163289 0.7671074694928104 0.0 +-0.14401262156568043 -1.2764213598698122 0.0 +-0.8136033235002987 -1.3136098701723797 0.0 +0.2288466234588975 -0.6782149422898051 0.0 +-0.15987744494064485 -0.11116014636200164 0.0 +-1.0760682166957876 -0.17150111979001983 0.0 +-1.1383220370496183 -0.31460367130206834 0.0 +2.7963972140402724 2.0616834827363486 0.0 +3.1898400311962436 1.3263771602504975 0.0 +3.0376057642420413 1.3732590653905337 0.0 +3.8486073474634375 2.2760600404737694 0.0 +3.9882144000445314 1.7328247421086296 0.0 +3.9555449672765026 2.015450827446986 0.0 +1.7417204671412245 4.0248785227397565 0.0 +1.8619387204500526 3.9131661700391964 0.0 +2.5444328050188036 3.7440191766916344 0.0 +2.744421539658732 3.538086929671649 0.0 +-3.3189015954734526 -2.926005352793248 0.0 +-3.077271899461006 -3.077271899461008 0.0 +-3.120578433163723 -2.9897519119592904 0.0 +-3.743643223131784 -2.544177307243365 0.0 +-3.5649934227895916 -2.765292355084519 0.0 +-3.8447553129562144 -2.2737819536166626 0.0 +-3.866105593890451 -1.969879190519959 0.0 +-1.745863295664768 -4.034452034599073 0.0 +-2.033948825443022 -3.9918493324743385 0.0 +2.959851501345136 -3.357292515135392 0.0 +1.9114329308723634 -3.8489618688871077 0.0 +4.198309241427816 1.5114843324606566 0.0 +3.994633851176696 1.728632429033812 0.0 +-4.283553351877524 1.2444872909644387 0.0 +-4.261376673063483 1.534190004988344 0.0 +-3.582072756986018 2.4343741318368908 0.0 +-3.6959814958555746 2.186337307275195 0.0 +-3.696541860320774 2.1861287620728374 0.0 +-3.4598902793092576 2.6837660001399097 0.0 +-4.376924128125282 0.1375503821020286 0.0 +-4.493772311392631 0.4247865504094532 0.0 +-4.435236440145049 0.9913928022828942 0.0 +-4.514831960583524 0.7150791332363488 0.0 +-4.150295397148939 -1.494198284864969 0.0 +-4.353710090111326 -1.2648697076020725 0.0 +-1.23390314249949 4.247122473906337 0.0 +-1.0568584300646575 4.215580500751074 0.0 +-0.9599823246064834 4.294714040878085 0.0 +-0.13857086632927895 4.40939646275903 0.0 +-2.2050266928463396 3.728496516144178 0.0 +0.13895543488304105 4.42163363255942 0.0 +0.42321896865950587 4.477189028666369 0.0 +1.4969114967915946 4.157831633192454 0.0 +1.2265522471263768 4.2218205260733574 0.0 +0.7041520643820244 4.4458411630535775 0.0 +0.9676306066620959 4.3289304878801795 0.0 +3.671600256461152 2.495216957651994 0.0 +3.4655835971023254 2.688182190101893 0.0 +3.47939104367461 2.6316189134267116 0.0 +2.291657888628045 3.8749818683212793 0.0 +2.0000804443525073 3.9253788919416444 0.0 +2.5682630832865354 -3.779084366326153 0.0 +2.7974653281953223 -3.60647056979747 0.0 +0.14068339125816437 -4.476618095961402 0.0 +0.7403187648129972 -3.270678380268945 0.0 +0.4940515237225321 -3.3308256541393884 0.0 +0.43992317941717285 -3.396701915688575 0.0 +2.285573036149928 -3.864692944681703 0.0 +1.968186085582112 -3.8627826883525094 0.0 +-3.188748325297328 3.1887483252973268 0.0 +-3.358937912448105 2.9613021142078444 0.0 +-0.6990507348463735 4.413632635970976 0.0 +-0.42088871960586477 4.452537568619391 0.0 +-2.5151864570569527 3.4624554987471816 0.0 +-2.4244782537381053 3.567511414552847 0.0 +-2.675303089997234 3.448979961295015 0.0 +1.5024777208621347 -4.1732924153212165 0.0 +1.7164123745080033 -3.966394971324544 0.0 +1.668707220605482 -3.981867067417809 0.0 +0.41421701055010035 -4.381958259091909 0.0 +0.49505898436481305 -4.32773608644927 0.0 +1.259105436010043 -4.333869337153506 0.0 +0.6962396901768 -4.39588439843064 0.0 +0.9856353529424666 -4.409479092443754 0.0 +8 194 146 148 147 150 151 149 192 0.967473239150818 +9 40 172 173 31 103 170 169 32 41 0.9429677124310303 +6 37 38 120 125 132 126 1.1618842144782198 +9 200 214 212 217 219 218 216 202 201 0.9115836747732627 +5 19 13 45 86 82 1.0195798593735619 +8 96 94 25 90 89 91 92 26 0.8212614806104122 +7 134 135 40 172 171 104 1 1.0052580259538508 +5 81 95 97 53 83 1.129488262845087 +7 209 119 130 129 118 185 210 0.8535015343842992 +8 113 39 133 191 190 187 186 114 0.8123523152838288 +6 123 143 144 138 139 124 1.2083774970774064 +9 1 119 209 211 117 205 206 174 104 0.8744256175025575 +9 16 21 20 0 79 80 78 77 12 0.882323277228305 +6 19 13 14 15 16 21 1.0176773257191074 +7 82 19 21 20 93 95 81 1.0239675484001558 +6 45 86 85 142 140 46 1.1703682392364982 +6 85 142 143 123 121 84 1.2269829326297343 +9 194 146 52 58 59 56 99 100 193 0.8195208678946297 +9 2 5 57 153 152 188 189 133 39 0.9694687380346005 +7 141 47 69 68 3 46 140 1.26456204643673 +5 37 38 4 5 2 1.2058626864134088 +6 93 95 97 98 96 94 0.8717324456786802 +9 10 67 66 17 75 74 72 73 11 0.9328740045162568 +8 106 107 110 111 109 108 180 179 0.8112618310110024 +8 58 59 155 154 195 196 153 57 0.8591648591904768 +6 166 15 14 200 214 213 0.976011844697022 +9 147 150 168 167 102 101 29 28 6 0.879366299325416 +6 81 82 86 85 84 83 1.2525970649658182 +7 41 44 43 42 137 135 40 1.189355531676226 +6 113 39 2 37 126 128 0.9413868094336852 +6 130 131 136 134 1 119 1.0595591208057582 +6 4 5 57 58 52 51 0.8724551498332923 +6 120 38 4 51 54 122 1.1444218787714213 +6 49 145 144 138 137 42 1.1307964893723939 +8 129 127 182 181 112 115 116 118 0.8563056148326214 +7 122 54 55 53 83 84 121 1.2920105622159097 +9 65 71 70 7 8 158 157 9 64 0.9987687524225292 +6 35 36 50 49 42 43 1.1255228021796109 +7 129 127 128 126 132 131 130 1.0903240356178536 +7 106 107 35 36 34 61 60 0.9025511798255934 +8 62 63 65 71 67 10 163 164 0.9046571336656162 +6 146 148 55 54 51 52 1.0357059508769944 +9 166 15 16 12 165 198 197 203 204 0.8907609304344974 +6 66 67 71 70 69 68 0.9350371914789297 +6 50 36 34 8 7 48 1.0094231882051423 +6 124 125 120 122 121 123 1.212614145195258 +6 201 3 68 66 17 202 1.0034594849854799 +7 147 148 55 53 97 98 6 1.0366122342856943 +9 20 93 94 25 23 22 88 87 0 0.8726534845583033 +7 107 110 105 33 44 43 35 1.0340071611786474 +7 13 14 200 201 3 46 45 1.1872103569637409 +6 124 125 132 131 136 139 1.2363155979570888 +6 141 47 48 50 49 145 1.1589547877703792 +9 184 208 207 183 182 127 128 113 114 0.9267026638187336 +8 33 175 176 178 177 32 41 44 0.8983818208065517 +6 140 141 145 144 143 142 1.1978469159878484 +8 75 76 18 199 215 216 202 17 0.9350652223983259 +9 8 158 156 160 159 161 162 61 34 0.8618901990075483 +6 134 135 137 138 139 136 1.1435132243738357 +5 69 47 48 7 70 1.0411895945113068 +8 28 6 98 96 26 24 27 30 0.9133807639246464 +194 146 2 0 17 0.8895543639793961 +147 150 2 0 26 0.895880164772178 +146 148 2 0 41 0.7294585273258268 +147 148 2 0 47 0.15928962635602698 +150 151 1 0 0.2845079892570131 +149 151 1 0 0.2816963195459306 +192 149 1 0 0.2817113143133489 +192 194 1 0 0.23569020985011307 +40 172 2 1 6 1.0148431352551497 +40 41 2 1 28 0.6215882834977892 +32 41 2 1 54 0.898782542417146 +172 173 1 1 0.0005979125649162242 +173 31 1 1 0.31135227467725646 +103 31 1 1 0.29294368653654496 +170 103 1 1 0.28439702381120585 +169 170 1 1 0.29055028410937367 +32 169 1 1 0.02992354845067732 +37 38 2 2 20 0.8736920227528217 +37 126 2 2 29 0.5768917863468773 +120 38 2 32 2 0.02433628301566486 +132 126 2 2 38 0.743228250024804 +120 125 2 2 45 1.00858815966507 +132 125 2 2 51 0.9282898795301096 +200 214 2 25 3 1.1694847042938523 +201 202 2 3 46 0.08526171176405241 +200 201 2 50 3 0.25350591430646224 +216 202 2 56 3 0.9326653119481173 +216 218 1 3 0.21240967213599155 +218 219 1 3 0.2897147999893855 +217 219 1 3 0.2837300150284393 +217 212 1 3 0.2915733473060609 +212 214 1 3 0.25352694216762084 +19 13 2 4 13 1.0080106116513736 +82 19 2 4 14 0.37317687018001994 +45 86 2 4 15 0.8231435154359258 +82 86 2 27 4 0.9994104517090328 +45 13 2 50 4 0.7588972995408744 +96 94 2 21 5 0.8756135017809521 +25 94 2 48 5 0.6167105950251297 +96 26 2 60 5 0.7218023166830364 +25 90 1 5 0.13083653037475546 +89 90 1 5 0.2905288928335664 +89 91 1 5 0.28255134477172517 +91 92 1 5 0.2867085174754889 +26 92 1 5 0.2682389076619303 +104 1 2 11 6 0.9844481295387156 +40 135 2 28 6 0.40393603075669415 +1 134 2 6 30 0.7772289506267706 +134 135 2 58 6 0.2412250755725586 +104 171 1 6 0.18138244955634028 +171 172 1 6 0.27294224137993417 +81 95 2 14 7 0.15779722496959409 +97 95 2 21 7 1.1382112595030867 +81 83 2 27 7 1.008189373349415 +83 53 2 35 7 0.8512950863773799 +97 53 2 47 7 1.0666755644306396 +209 119 2 8 11 0.8204164689274229 +130 119 2 8 30 0.6518059344029115 +129 118 2 8 34 0.9637459637565632 +129 130 2 8 38 0.6390661228908207 +185 118 1 8 0.08592482435417802 +185 210 1 8 0.27216757799599045 +209 210 1 8 0.13879741926671535 +133 39 2 9 18 0.9522380757708424 +113 39 2 9 29 0.8085044137991607 +113 114 2 9 53 0.5386289888588962 +133 191 1 9 0.17279211236261716 +190 191 1 9 0.28825170981545134 +187 190 1 9 0.2826766579516522 +186 187 1 9 0.289641431207076 +186 114 1 9 0.16006262796909604 +123 143 2 16 10 0.6446279130411041 +144 138 2 33 10 0.8374477640813546 +123 124 2 10 45 0.7027336947231867 +139 124 2 10 51 0.9151198339110599 +144 143 2 10 55 0.9181756712762132 +138 139 2 10 58 0.15656229451152284 +1 119 2 11 30 0.3872313233946012 +209 211 1 11 0.16068268809600356 +211 117 1 11 0.29697387700842415 +205 117 1 11 0.28474282010404656 +205 206 1 11 0.28407089698438537 +206 174 1 11 0.29532638721725896 +104 174 1 11 0.10685132890993386 +16 21 2 12 13 0.6500171717578009 +20 21 2 12 14 0.5408284117158496 +16 12 2 42 12 0.5918077504267156 +0 20 2 48 12 0.5678700809924832 +12 77 1 12 0.11486698635797346 +77 78 1 12 0.2873268788932538 +80 78 1 12 0.28179191331586756 +80 79 1 12 0.28783283190719117 +0 79 1 12 0.17742579858811164 +19 21 2 13 14 0.7424893417879441 +14 15 2 25 13 0.6199652259644224 +16 15 2 42 13 0.6511607935356061 +13 14 2 50 13 0.17731205541387246 +93 95 2 21 14 0.7823630494706866 +81 82 2 27 14 0.42512423710282254 +20 93 2 48 14 0.7857518264035404 +85 142 2 16 15 0.5780452987888376 +140 46 2 19 15 0.824350441296818 +85 86 2 27 15 0.6433241524324281 +45 46 2 50 15 0.49646337574995436 +140 142 2 55 15 0.7048935626278652 +84 85 2 16 27 0.6450754220073885 +121 84 2 16 35 0.8002030153423336 +121 123 2 16 45 0.7814448894947185 +142 143 2 16 55 0.6875009403177678 +58 59 2 24 17 0.6048306364465731 +58 52 2 17 31 0.7125036603407963 +146 52 2 17 41 0.3156065072752197 +193 194 1 17 0.0582241345927926 +193 100 1 17 0.2829625982224262 +99 100 1 17 0.2789842114157323 +56 99 1 17 0.2839466784707302 +56 59 1 17 0.020918769638125095 +2 5 2 18 20 0.874461379210455 +57 153 2 24 18 0.8928383700129072 +2 39 2 18 29 0.08996112217166455 +57 5 2 18 31 0.13442782195770653 +152 153 1 18 0.16410995757271982 +152 188 1 18 0.27858205531349844 +188 189 1 18 0.2778285483741067 +133 189 1 18 0.12571497389320058 +68 69 2 43 19 0.29985858309371816 +3 68 2 19 46 0.7664217790639738 +3 46 2 50 19 0.46638055755471564 +141 47 2 19 52 0.3562871150336977 +140 141 2 19 55 0.6706226162424133 +69 47 2 59 19 0.8087624170151744 +2 37 2 20 29 0.8136600255998945 +4 5 2 20 31 0.7623690734574651 +4 38 2 32 20 0.8783122635772711 +97 98 2 21 47 0.03290962562245504 +93 94 2 48 21 0.38102897913740946 +96 98 2 60 21 0.49026649311496867 +10 67 2 40 22 0.5231943638521079 +66 67 2 43 22 0.6500128173576936 +17 66 2 46 22 0.24061982368571014 +17 75 2 56 22 0.8920866868693809 +10 11 1 22 0.15849346409956508 +73 11 1 22 0.3075484522651701 +72 73 1 22 0.2897388287128277 +72 74 1 22 0.28933866456434926 +74 75 1 22 0.2853024170561252 +106 107 2 39 23 0.9935907071142972 +107 110 2 49 23 1.151545558483258 +110 111 1 23 0.09567143752492778 +109 111 1 23 0.3064299680276543 +108 109 1 23 0.2892582486639414 +180 108 1 23 0.2893065631290089 +179 180 1 23 0.30654385275585994 +106 179 1 23 0.1916591997696121 +57 58 2 24 31 0.783857650761747 +59 155 1 24 0.28135905083845564 +154 155 1 24 0.28706024515000333 +154 195 1 24 0.28468646781193585 +195 196 1 24 0.2959007705296592 +153 196 1 24 0.13868051939262616 +166 15 2 25 42 0.8927096928575191 +200 14 2 25 50 0.9804146426588201 +213 214 1 25 0.05015144530701445 +213 166 1 25 0.2276478661282508 +147 6 2 26 47 0.7039726969425971 +28 6 2 26 60 0.8357334309397783 +28 29 1 26 0.012401437146367506 +101 29 1 26 0.2937677318570532 +101 102 1 26 0.2834505747608069 +102 167 1 26 0.28505940371032745 +168 167 1 26 0.29771960036129674 +168 150 1 26 0.007667127347027509 +83 84 2 35 27 0.555524469759758 +137 42 2 33 28 0.365757068979169 +42 43 2 28 37 0.564390656421088 +43 44 2 49 28 0.5246962355018886 +41 44 2 28 54 0.5155192320860473 +137 135 2 58 28 1.1185733334896777 +128 126 2 29 38 0.5816745408779507 +128 113 2 53 29 0.8357860320590452 +130 131 2 38 30 0.5843534312257109 +136 131 2 51 30 0.6189110757538316 +136 134 2 58 30 0.8611776246345295 +51 4 2 32 31 0.4628754151947095 +51 52 2 41 31 0.7013547838485662 +122 54 2 32 35 1.000263096542156 +51 54 2 32 41 0.8597427262697664 +120 122 2 32 45 0.9133214275810944 +49 42 2 33 37 0.8945499785572152 +49 145 2 33 52 0.9123831916516139 +144 145 2 33 55 0.15605729203694882 +137 138 2 33 58 0.9323472286869703 +129 127 2 34 38 0.5301347548195188 +182 127 2 34 53 0.8464588077396356 +181 182 1 34 0.17983249503818793 +112 181 1 34 0.2869979753978761 +112 115 1 34 0.28176174128210485 +115 116 1 34 0.28805171876905317 +116 118 1 34 0.2096019424696947 +54 55 2 41 35 0.34061833854931073 +121 122 2 35 45 0.40783210669125997 +53 55 2 35 47 0.32387917174315517 +65 71 2 40 36 1.0080978063858839 +70 71 2 43 36 0.1169459216790837 +8 7 2 36 44 0.4869779509459276 +8 158 2 57 36 0.8843052746321073 +70 7 2 59 36 0.613122678461652 +157 158 1 36 0.09764836953910379 +9 157 1 36 0.2763670615819738 +64 9 1 36 0.2755132381629901 +64 65 1 36 0.05345147033132715 +35 36 2 37 39 0.49499232620609296 +50 36 2 44 37 0.7160934645348438 +43 35 2 49 37 0.9099110045794421 +49 50 2 52 37 0.43673167916901695 +131 132 2 51 38 0.49263671412005383 +128 127 2 53 38 0.3085827213448017 +34 36 2 44 39 0.8309796151303936 +107 35 2 49 39 0.06466257578079845 +34 61 2 57 39 0.958904459027861 +106 60 1 39 0.11923495443705893 +60 61 1 39 0.2543731551160593 +67 71 2 40 43 0.8700418201900648 +65 63 1 40 0.2437662364468552 +62 63 1 40 0.2855560117491812 +164 62 1 40 0.2825200923547936 +163 164 1 40 0.29121858233283493 +10 163 1 40 0.16660269355868057 +148 55 2 41 47 0.9346460817936442 +204 166 1 42 0.05841177638288266 +203 204 1 42 0.31739269914410495 +203 197 1 42 0.29536839952533134 +197 198 1 42 0.28693063939438945 +165 198 1 42 0.29742053082364517 +12 165 1 42 0.20321604351739056 +66 68 2 43 46 0.8219160703776373 +69 70 2 59 43 0.9903681106544767 +48 50 2 44 52 0.6143886944705695 +8 34 2 57 44 0.3664354542413726 +48 7 2 59 44 0.7755846662777706 +124 125 2 51 45 0.3904982664011632 +201 3 2 50 46 1.0512249879498128 +17 202 2 56 46 0.9548376716206999 +98 6 2 60 47 0.7365423914034765 +0 87 1 48 0.12887806023889814 +88 87 1 48 0.28749801682564197 +88 22 1 48 0.28100478102385495 +22 23 1 48 0.2851696459682138 +25 23 1 48 0.17499352033711058 +33 44 2 49 54 0.9535486239813613 +33 105 1 49 0.18952767170412727 +105 110 1 49 0.19689626755900372 +136 139 2 58 51 0.8667540148134789 +145 141 2 52 55 1.0504549625331079 +48 47 2 59 52 0.7351549796335053 +184 114 1 53 0.14646071923429005 +184 208 1 53 0.2855950372355141 +208 207 1 53 0.2808695435732374 +207 183 1 53 0.28675237888046423 +182 183 1 53 0.12508835669948096 +33 175 1 54 0.11003192990091536 +32 177 1 54 0.2738913666478654 +177 178 1 54 0.287549457617008 +176 178 1 54 0.29105548005209164 +176 175 1 54 0.3100937186026365 +75 76 1 56 0.021868483056126833 +18 76 1 56 0.28588058916480774 +18 199 1 56 0.28192973627921314 +215 199 1 56 0.28944969441874485 +216 215 1 56 0.09734201937676683 +162 61 1 57 0.02154102620573769 +161 162 1 57 0.3046518076653771 +161 159 1 57 0.28868200839604297 +160 159 1 57 0.2842668034507393 +160 156 1 57 0.29392151180939824 +156 158 1 57 0.20831634720789688 +24 26 1 60 0.03340345472099179 +24 27 1 60 0.2832042079513534 +27 30 1 60 0.2778398479496155 +28 30 1 60 0.26968825728741325 1 0 0 1 1 1 1 2 2 diff --git a/data/tissue_example_curved.txt b/data/tissue_example_curved.txt new file mode 100644 index 0000000000000000000000000000000000000000..25df761caec4bffdd0235a8022938b69ed01b391 --- /dev/null +++ b/data/tissue_example_curved.txt @@ -0,0 +1,345 @@ +220 points: +-2.923961461587178 3.2441482921464946 0.7801906650442335 +-2.7456094236265725 -2.466930913813634 0.5622494154255632 +-2.091260831771032 -2.6691748529984674 0.477701004255513 +-1.9579421531705388 -2.9358177631610896 0.5147433450959479 +0.2315931355235309 -2.580002521593032 0.28807894412092694 +-0.13632602829219237 -3.5087844064051703 0.5050890744460552 +0.7173186125032134 -3.7808861164812573 0.608968001780544 +-2.8838191130713775 -1.7752972685010284 0.47520947935894364 +-2.6532326649384834 -0.4215171411818072 0.31088453329855875 +-2.9627114780816695 -1.7190176426105828 0.4848662020119616 +2.731227573538176 -1.8105909716230562 0.44387422628228357 +0.7500043080288806 -4.2657412763709175 0.7695288468104114 +-0.14082659092836616 -4.48117478335171 0.8156563717900751 +-0.3203203397451169 -3.5824425564961655 0.5313886737203897 +-1.0403201567910731 -3.191746720750457 0.4718261953270593 +-1.196796091387838 -3.2560394469549068 0.5021692598487022 +-1.6834371260608716 -2.0309478933794285 0.29266390818872035 +-2.157158548068202 -1.4616889149277672 0.28482721573168 +-2.016854991444407 -0.869605767367873 0.2134566337769675 +-2.9915733363985817 -3.393273874113334 0.8284966672635223 +-2.431785945265422 -3.692754666649614 0.7961134127102893 +-2.28714203280854 -3.8673459731436557 0.8187323975527314 +2.2154458697642148 -1.4592094696531168 0.2963438625217305 +0.3597252762014928 -0.08922401821826213 0.029997722720615367 +0.830650833139455 -1.2112010199680363 0.11217018231276583 +0.8577137185572346 -1.1409366778686378 0.10698853742079084 +0.6000190701158943 -2.6422934859793115 0.3112852472903743 +1.9443817902712484 -2.7001894279245757 0.46074231069880495 +1.536169729835625 -3.2594550854275974 0.5370427074510234 +1.0550056094397202 -3.300867712371561 0.49879729182060356 +1.5287550198151496 -2.0497065512539865 0.27888224527613925 +1.2744340821588838 -1.985991714968799 0.2410136042623432 +-3.1655907239683763 3.1655907239683754 0.8137910959216875 +-4.4921427842957415 -0.14117127424399922 0.8191417045564249 +-3.692829883072662 2.5096445969987378 0.8100904902735202 +-3.715390981949324 2.297331233136662 0.7798408245181178 +-4.0526783024599755 1.7537505060721321 0.7945470655827411 +-1.3755901395749452 2.0329354612866304 0.2567503485435586 +-0.7787474294966907 2.277912282058063 0.24678816015077845 +-1.6140723989196653 3.1996327701186087 0.5312723291532827 +-0.9246951818506421 3.229961307217646 0.4692259182932207 +-0.8097470320337649 3.32326454669327 0.48552838360618794 +0.8191836643398086 3.4876590172896216 0.5289894382745433 +0.12305595225803471 3.2538740952271126 0.44498751235160044 +-0.14268925203795246 3.425392172143995 0.4901519280724105 +-0.10938339397883559 4.376156771800932 0.7831299214409145 +1.3850930956698748 3.208715478415743 0.5092999525678112 +2.319840370694236 0.9766207324342953 0.2707029957266941 +-2.5454511912044495 3.7455176864580566 0.8300556088735369 +-1.7698894472844506 4.089973195119663 0.8073002083099295 +-1.9351701540386914 3.9152237382052273 0.7800418711850335 +-3.528723525853691 -2.737158539163459 0.8102324804248957 +-3.7339557993989794 -2.5375937408729463 0.8255406044069522 +2.8870377196019987 -3.2656688341294147 0.7779576605765336 +2.761815365452808 -2.132430518139853 0.5004959669992078 +2.42091535567397 -2.6741459723887986 0.5377465230250812 +3.976835184331636 -1.6972335612012976 0.7673449409701453 +3.3462781168214186 -1.3206844203557633 0.5318522732567675 +0.9713163444710654 -4.345419530973405 0.8064429722591954 +0.684310798608313 -4.320568341221707 0.7825931870355707 +2.5275423370673784 -3.7191656078378186 0.8197913556265645 +2.0031518303650513 -3.9087261045476094 0.7878415943052144 +2.2769198714672574 -3.8500612422730067 0.8123433193919768 +-0.41363875003221395 -4.3758409017943505 0.788784079711322 +-0.4202648563807767 -4.371282339925716 0.7875063458300178 +-0.699582350738323 -4.416989126614023 0.8120528280747472 +-1.274616357699903 -1.9819761227045132 0.2373600797348514 +-0.04311004051043313 -2.3378587614874347 0.2399816796645089 +-0.7886528214962382 -2.552863025844461 0.30170972723525075 +-0.016342523747426674 -1.5619430052198642 0.11964953714979 +-2.0523999706928 -4.028061743980153 0.8275277537682705 +-1.7804306468710116 -4.114332470112569 0.8155984951141207 +-0.980539128770731 -4.386679896099403 0.819214505665362 +-1.4560257319293468 -4.117836488974934 0.7803302175470518 +-1.484597287699294 -4.123627601617147 0.7851001608641529 +-1.243323996270323 -4.2795492652770495 0.8072391700979004 +-2.77145396716415 -3.5729369252179293 0.8278968262346935 +-2.5031656314934794 -3.683296374838931 0.8064463526690181 +-1.5237766365387229 -0.7248729311259621 0.13473404410625184 +-0.24498576841177402 -0.30128471647566274 0.02275562338699426 +-0.8495153372307137 -1.1806020532880177 0.10911471303189035 +-0.6108936357493207 -1.146845535606831 0.0928251219101218 +-3.58640024598637 2.781897189234916 0.8334408610358602 +-3.407714097912152 3.0043041061775035 0.8347597079170833 +-4.171807834383529 -1.2281124493847906 0.7747510599498625 +-4.437940409027941 -0.7029007078775348 0.8186807895890421 +-3.5701982182333936 -0.18914497038891745 0.5225933628074508 +-4.426875990463657 -0.3122248071135595 0.8007572467470984 +-4.451000406946939 -0.42074341504679597 0.8116706439139827 +-3.1844252274621376 -0.6278403313238871 0.4441420051504986 +-3.2988236619459865 -0.8973641662301223 0.4869878143227572 +-3.949687163460418 2.0124661273245423 0.7996936376937697 +-3.784790425120287 2.2383188178086386 0.7889235913705748 +-4.07838314525876 1.5650089441492652 0.7796285343014336 +-3.5959887067661906 0.48210334032730995 0.5396793768565458 +-2.934364244611868 2.0428099081842563 0.5265567585491269 +-2.683905563276701 2.956578912545964 0.6505904038828728 +-1.9031421144687735 2.8044476223311627 0.4768187454551748 +-1.8291565024801038 2.253291295830676 0.35556367258702387 +-0.8925420888707429 0.21554197321030727 0.048803616492286615 +-1.3684909047307514 -0.01747712308657467 0.09015444390189943 +-0.7142051428369964 0.9506631644369824 0.0784617944727868 +-1.3004434804538847 1.221962247732215 0.14295469222897433 +-0.1379980033535733 4.391167667301262 0.7881922469084587 +-1.5262981883270323 4.239456309015172 0.822715768633202 +-0.9762727533628694 4.367593229711749 0.8131615528856124 +-1.0616795839465991 4.3113880884841596 0.8015264784486681 +-1.2532148278726345 4.313593730954234 0.8183347349387566 +0.8132610185539921 4.331161960977899 0.7913946249120157 +2.6764565326791536 3.4661509678014735 0.783996833533345 +1.4134880440643005 3.1592898704201273 0.5000571299919098 +2.418514540829085 2.3066847634173935 0.4653265467777987 +2.212521067455357 2.94047014784846 0.5576251096608719 +1.584816125517805 0.07502154842408987 0.11866956635760992 +1.745321494352267 -0.6787642720091159 0.1615781575637076 +2.127727110965321 -0.8624825390634896 0.23278280567132376 +2.316518076251662 0.5155284433295765 0.24171900096622423 +0.390062427995053 -0.030871682283632795 0.030361198145306283 +1.300053940131643 0.23820482343697005 0.08665794332925177 +-2.9072077112961363 3.2975798565038543 0.7891114186181116 +-2.754665337585643 3.551293154382994 0.8192033609646947 +-2.2886061645430633 3.8698216847026345 0.8196715244788592 +-1.997094746559562 3.9195191300869396 0.7899625958904629 +3.1931264056613107 3.1931264056613133 0.8258996825316721 +3.3646603104137975 2.966347086647303 0.8163594377446103 +2.6550239804385316 2.188519618380753 0.4913377967533264 +3.860195652507995 2.282913344972634 0.8160780635999095 +3.73012197722529 2.534988278014194 0.824039636887341 +3.4285627983639206 2.8034729223468178 0.7980296334571819 +3.5332001219920075 2.7406309430671953 0.8119602397562783 +4.551694725686819 0.14304276939755378 0.8384862039441741 +4.322571394476201 0.9662091808790917 0.7993756615313021 +-3.242242793227479 -2.888122814261169 0.7729809733232469 +-3.2676644070117087 -2.880833694824958 0.7773101023930052 +-3.1528842457687047 -3.1528842457687087 0.8081342089606802 +-3.8722509337743665 -2.290042818439223 0.8205079585276821 +-3.9440057763183467 -2.0095713159872313 0.7978527257769195 +-3.9351286541907564 -2.018492885266642 0.7965983514897559 +-4.087612318315574 -1.7688678046617357 0.8062510190515049 +-4.164368915545405 -1.4992650632596984 0.7977226994622845 +3.565598345261624 -2.7657615810518443 0.8249281675467727 +3.977412273106016 -1.721179986722143 0.7703206212133967 +3.923510350165916 -1.9991283747643307 0.79076582681433 +3.806957597512539 -2.2514284470166066 0.796617837334177 +3.6752180611196517 -2.414622648004611 0.7885242350521215 +3.667036001201054 -2.492115092980311 0.8004227565727504 +1.5496110695507574 -4.304210327686697 0.8451887968502911 +1.269571719200521 -4.369894520188944 0.8373369330639637 +0.14165576387974654 -4.50755949447946 0.8239743475062279 +0.4209004623014769 -4.452661793363217 0.812264392099574 +2.8848751993995028 -3.2722485941075243 0.7789852428697712 +2.732910253993309 -3.523246669613925 0.80799701756957 +1.7961962579973505 -4.1507646478456675 0.8283841419657436 +1.9973000160873735 -3.9199219942186847 0.7903455754959323 +-4.516728024508566 0.14194389654366704 0.8269336027056876 +-4.4584475780054635 0.42144737997537796 0.8141177296387904 +-4.347334830219784 -0.9717444645753035 0.8066509576998424 +-4.184742440039853 -1.2157800673374284 0.7776313365223052 +-4.2496220755331 1.2346293439031917 0.7973733078359801 +-4.13638186658373 1.489189105633716 0.788631964276392 +-4.32176247963127 0.6844999315519772 0.7829993131855107 +-4.280607684561837 0.7325379478079735 0.7726217809349615 +-4.2966330309186915 0.9604112697009719 0.7905383542082776 +-3.1312148337193335 1.2257639162327407 0.4656061506094458 +-2.6806453077347823 1.6970750273587278 0.42702052375306726 +-2.561691557564141 1.6868742395924117 0.4002265640001581 +-3.2018059184221506 0.7309873299907772 0.4453006053320993 +-2.4957634766795116 0.25828354037544216 0.2698224763481523 +-2.0621197787962244 0.5426182126886797 0.20129978360861664 +-1.970280405129694 0.9090331744156999 0.20668412586373183 +-0.7057075280634522 4.455661974228183 0.8244300936903268 +-0.4219002472430099 4.463238413275679 0.8155833675142643 +1.2724656764803863 4.379855586482166 0.8406844069587333 +0.9787721653731011 4.3787749562697815 0.8170112360613679 +0.13990766782357622 4.451934176035423 0.8064431070013175 +2.9635548620996945 3.3614931533554127 0.8150388004020811 +2.6875484019349276 3.4647665223208786 0.7857197614732199 +1.8173928984398968 4.072691566468359 0.8080606662825845 +-0.33024786004017603 2.1080398541033043 0.20101729912059432 +0.18729695688866504 2.4902749234918224 0.26785155759380835 +-0.20743145200083685 1.1689434585744032 0.08398250386421842 +0.09573632605869463 1.0491511972379368 0.07034059270405395 +3.27796609742927 -0.9053375386008702 0.47643666128475937 +2.7806915335694704 -0.5141493557377789 0.33862387319078247 +2.8698287078185083 0.031925688808344066 0.3475546893171724 +3.4835765551065245 0.3522430810728789 0.5081451241949908 +4.114962038583597 -0.33484457470516 0.7026441105916569 +3.0542353063757006 1.4945227022693266 0.4870830995587415 +3.053202309549797 1.4872276870614 0.4859568670406754 +3.57781754748919 0.7412674429781807 0.5516625996391786 +4.307426035073525 0.9799270331975094 0.7955162518563801 +4.33162504628007 1.2584534092369926 0.8244168668222529 +4.274037823096053 1.5387482994837438 0.834615395705007 +3.917587216642919 2.000423819682863 0.7898532286622818 +4.491522181359862 0.7113872268999238 0.8364028776017004 +4.570023826593949 0.4319944407655692 0.8504299234392733 +3.16241123094975 -3.1624112309497465 0.812294060490622 +3.3948192682206964 -2.99293578457616 0.829145361858704 +4.4393254201256225 -0.139511421705878 0.8031066242282601 +4.26826384484386 -0.3695550377731951 0.7565424297641234 +4.380616682570783 -0.9791838399756251 0.8172701444275112 +0.6960318369407998 4.39457206474704 0.8049726397213982 +0.4217325352902404 4.461464206138218 0.8148902794674251 +2.526846455494433 3.71814164919813 0.819645666805871 +1.544977369898884 4.29133973177467 0.8406932623770689 +1.7819674535299637 4.117883820763792 0.8170360007251379 +1.2076882458622742 1.078569778975467 0.11975481791072157 +0.6957756949192173 1.2934462631468255 0.10389575489738177 +1.7450791362547156 1.3500422444960398 0.20984759362898792 +1.7619728651013238 1.927921107886479 0.2868131532463147 +1.1281234880864095 2.334959223542988 0.2862600116285005 +0.8295222367211841 2.2208216735498034 0.24227947295431287 +4.134520611354514 1.789166835701551 0.8226141330895783 +3.9214691903980214 1.998088351916107 0.7906886002073145 +4.371383400826033 -0.692359113383798 0.7978879775079433 +4.28755044251587 -0.40529284440279373 0.7629809955064738 +4.169272152473522 -1.5010303371756941 0.7995177312270454 +4.312252304013306 -1.2528251073199486 0.8178466760507257 +2.05752228387434 4.038114849642734 0.8312700019394869 +2.3157620208058587 3.9157397299567984 0.8368090356403438 +61 cells: +37 98 165 169 102 +54 144 143 142 141 56 57 10 +125 128 124 123 175 176 109 112 111 +5 6 29 26 4 +160 161 94 86 87 33 154 155 +95 96 0 32 83 82 34 35 +47 187 189 185 184 116 +3 20 21 70 71 74 73 15 +131 194 195 130 198 199 186 185 189 190 +113 114 25 23 117 118 +5 13 64 63 12 148 149 59 11 6 +207 211 179 178 180 181 +2 1 132 134 19 76 77 20 3 +9 137 136 138 139 84 90 +39 40 41 106 107 104 49 50 +209 210 211 207 206 208 +26 31 24 69 67 4 +85 88 87 86 89 90 84 157 156 +27 30 31 26 29 28 +38 40 39 97 98 37 +4 67 68 14 13 5 +182 183 184 185 186 +17 18 78 80 66 16 +55 53 196 197 140 145 144 54 +97 96 95 164 165 98 +116 184 183 115 114 113 +116 113 118 206 208 47 +188 193 213 212 192 191 190 189 187 +125 128 129 127 126 193 188 +110 112 109 203 219 218 177 46 +78 100 99 79 81 80 +94 166 167 8 89 86 +65 64 13 14 15 73 75 72 +57 182 186 199 215 214 200 217 216 56 +46 177 205 204 172 173 108 42 +187 188 125 111 209 208 47 +7 1 132 133 51 52 135 137 9 +2 16 66 68 14 15 3 +178 179 43 44 41 40 38 +45 103 171 170 105 106 41 44 +167 168 100 78 18 8 +108 201 202 174 45 44 43 42 +7 9 90 89 8 18 17 +69 81 79 23 25 24 +79 23 117 181 180 101 99 +111 112 110 210 209 +163 166 94 161 162 158 159 93 +164 163 166 167 168 169 165 +7 17 16 2 1 +24 31 30 22 115 114 25 +100 168 169 102 101 99 +101 180 178 38 37 102 +55 54 10 22 30 27 +28 61 62 60 151 150 53 55 27 +92 91 36 93 163 164 95 35 +0 96 97 39 50 122 121 48 120 119 +117 181 207 206 118 +42 43 179 211 210 110 46 +57 182 183 115 22 10 +67 68 66 80 81 69 +29 6 11 58 147 146 152 153 61 28 +61 cell labels: +0 +1 +1 +0 +1 +1 +0 +1 +1 +0 +1 +0 +1 +1 +1 +0 +0 +1 +0 +0 +0 +0 +0 +1 +0 +0 +0 +1 +1 +1 +0 +0 +1 +1 +1 +0 +1 +0 +0 +1 +0 +1 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +1 +1 +1 +0 +0 +0 +0 +1 diff --git a/data/tissue_example_flat.txt b/data/tissue_example_flat.txt index 342694e53771ac50aa82de9f74ef2e9433d84b9a..f5f630e8c5354e64b6a12dbf494895106069094a 100644 --- a/data/tissue_example_flat.txt +++ b/data/tissue_example_flat.txt @@ -1,283 +1,345 @@ 220 points: --1.6260610720657256 -3.0252392362080407 0.0 -2.533868181909128 -0.5498167334391594 0.0 -3.2892851595294976 -0.7356288494671414 0.0 -3.5666191182394966 -0.017282962726457848 0.0 -4.418998373982387 -0.07375746834014053 0.0 --2.9042973410814756 3.294278689491416 0.0 --2.776545503892848 3.321805145950671 0.0 --0.4265790293448972 0.12173891453822776 0.0 --1.6189726385169856 1.101455217725795 0.0 -0.6928572597580431 -2.304799302113331 0.0 --0.911788257791409 2.266410627951538 0.0 --0.6965812815976165 3.013543001127871 0.0 --0.2089536043906683 3.0790617710384236 0.0 -2.388098159766834 3.6947663769901844 0.0 --3.0778494593952 -3.134650891864552 0.0 --1.7056669307878096 -3.0340273534195665 0.0 --2.4041957689507476 -2.522397211868495 0.0 --4.540414770154211 -0.14268828251402843 0.0 --4.125185745947887 -1.1279039819522352 0.0 --4.0712146163285885 -1.1069190677796454 0.0 -2.2954798664233644 0.2926012682378134 0.0 -2.2109433993899694 0.3665994366985298 0.0 -3.3884928056227226 0.4316902261596603 0.0 -3.5715309583581982 0.8352848436031677 0.0 -4.44471889348723 -0.1396809184346372 0.0 -3.3328859698993214 -0.8012228808272691 0.0 -2.015142026499698 -2.6595337732983824 0.0 -2.0215572424539783 -2.7167369960114476 0.0 -1.6571544022462223 -3.1652629426958088 0.0 -0.8664085862653442 -3.2480495205752593 0.0 -0.798078179994831 -3.3559672587532114 0.0 --3.508590546450958 2.72154179954437 0.0 --1.880079846334406 2.296205181812675 0.0 --2.0612725122824624 1.5104148180026817 0.0 --2.497412191077751 1.4253892084695488 0.0 --2.2893146162505085 2.655315209063563 0.0 --2.0416488825387993 2.567210949490476 0.0 --1.5437419007053939 3.2974618747422992 0.0 --1.0102945887580386 3.3346829104895703 0.0 --0.34941379469207684 -2.7925716557723868 0.0 -0.04262663331906747 -2.2510507546119616 0.0 --1.2438314089115803 -2.5794823337186314 0.0 --1.2522144919910276 -1.9799869815466113 0.0 --0.4399088226029394 -1.4925413155930816 0.0 --0.5760444110970679 -1.4732771743186337 0.0 -1.3095108012205718 -1.9710238766155899 0.0 -1.0321064990136062 -2.002324038410138 0.0 -1.9501042460119518 -1.190612008411791 0.0 -1.9498324251534274 -1.1728161224917664 0.0 --0.8002371513614104 2.073409431136723 0.0 --0.468624342717132 0.9455165221577195 0.0 --0.9562277303193308 1.298279182210147 0.0 -2.9923835032682 3.3941928280426596 0.0 -0.0943704278968996 3.437272226914472 0.0 -0.14133171727989688 4.497248164479237 0.0 -1.7287803393405645 3.994975651728616 0.0 --3.528307178545207 -2.7368355870867878 0.0 --4.008331883730438 -2.042347104780604 0.0 --3.6539524315252994 -2.3342303704113405 0.0 --3.6360891953703356 -2.4710836654554633 0.0 --3.802454645537291 -2.2487654086420137 0.0 --4.138870816444042 -1.791049337545491 0.0 --4.5698384604823605 -0.431976918509067 0.0 --1.7568942798232587 -1.7264965941541959 0.0 --2.015818011275967 -1.0740117913353056 0.0 --2.7240515872447735 -1.1578279969422969 0.0 --2.4487030357212887 -2.3029144869740885 0.0 --2.984691201948346 -1.8437855081129875 0.0 --2.9752221162593604 -1.5134005265418933 0.0 --1.9327810363229483 -0.9597422983365766 0.0 --2.078895925502863 0.10954564848012033 0.0 --1.7296875907014648 0.3248655052418519 0.0 --0.8674837862891178 -0.08211586301204978 0.0 --1.0489724487620105 -0.7862744183918795 0.0 --1.5358057202442343 -4.265864494832214 0.0 --1.2273774184157429 -4.224660784280973 0.0 -3.0306926828089575 1.5677918501990435 0.0 -3.5388862875147624 2.745041585159633 0.0 -2.8652840866106537 2.5337388928834814 0.0 -2.9825482105324763 1.585903453157504 0.0 -3.1455506818424417 3.1455506818424426 0.0 -3.222239734640911 2.872185049905193 0.0 -3.25206794552244 2.867083564400942 0.0 -4.152369527598594 1.7968907514826022 0.0 -3.967896639209961 2.0004601689376953 0.0 -3.969601185553665 2.02261282838285 0.0 -4.413482173325185 -0.6990269039044261 0.0 -4.471438934117194 -0.4226754246926977 0.0 -4.274900592090667 -0.9555534940849673 0.0 -4.1735607227923275 -1.0655403294797356 0.0 -4.267370274581739 1.53634783431175 0.0 -4.233155103082948 0.9548967287691043 0.0 -4.240684248664025 0.9479052351812113 0.0 -4.292881395977474 1.2471973382962593 0.0 -4.406639721517076 0.6979431660043542 0.0 -3.2711828568005923 -2.8839356255751323 0.0 -3.5040740992622235 -2.7180384839973324 0.0 -3.3004611587430217 -2.829405755523635 0.0 -3.0821118986316662 -1.654672367219682 0.0 -2.7103841763757077 -1.8708049940039833 0.0 -2.7022225082156375 -1.9215762440921231 0.0 -0.963763088930803 -4.196996434937974 0.0 --3.163800606598371 3.163800606598371 0.0 --3.368768041532378 2.96996853877387 0.0 --4.410112371597157 0.13859336467088737 0.0 --4.3558143731803725 0.2035849409195986 0.0 --3.8304338628498766 0.18945090634629808 0.0 --3.480677926526481 -0.308330822569429 0.0 --3.093247470905736 -0.3728634264384999 0.0 --3.50194333730938 0.7769968178844454 0.0 --2.4926348358065664 0.1597584576948127 0.0 --2.8471566482743413 0.7301426196209112 0.0 --2.050491736784713 3.883141882683935 0.0 --0.6800357513236153 4.293576754952632 0.0 --0.8522022337691152 4.223277439795915 0.0 -1.280842132477727 -0.20972702340359667 0.0 -1.2727263026634097 -0.6161443327190579 0.0 --0.005401683732777312 -0.05118478333611052 0.0 -0.7011276804200004 0.3174310016028097 0.0 -0.24411898499900633 -0.9185639421225057 0.0 -0.5515478351248005 -1.0020868363121629 0.0 -2.503523900254259 3.6838235513114723 0.0 -2.774524619198663 3.576895585967336 0.0 -0.6937342186743818 4.380065473937302 0.0 -0.42367296865753207 4.481991846972493 0.0 -1.6884434781506976 3.9933418954174607 0.0 -0.7395165560129303 4.346474553036772 0.0 -0.5646552285783271 3.5071392150797864 0.0 --0.40974324780881843 4.334630792826481 0.0 --0.31227975859581997 4.32597105129807 0.0 --0.13906779913387896 4.4252091209957785 0.0 -2.255809735358908 3.8143659515127415 0.0 -2.0070206206797274 3.9389997549115057 0.0 --2.9593523985545733 -3.3567263941451078 0.0 --2.759660976929218 -3.5577334938175382 0.0 --1.8217200238253144 -4.209746590607717 0.0 --2.2932286578408667 -3.73220221619819 0.0 --2.5073962565624854 -3.689521550585961 0.0 --3.1195685576442775 -3.1195685576442806 0.0 --3.3534769415513312 -2.956487620732897 0.0 --4.1531170656231735 -1.2065920467151814 0.0 --4.186861821872586 -1.5073630078249913 0.0 --4.31852140744073 -0.9653039015212724 0.0 --4.493433994862228 -0.7116900284114998 0.0 --1.0163184599465693 -3.7626636755594616 0.0 --1.07017008908106 -4.160120858253364 0.0 --0.08716236074525012 -3.436050723911306 0.0 --0.24876538564262807 -3.337889472170198 0.0 --0.42398744798516824 -4.485318690757135 0.0 -0.026243594534321683 -4.400280528079143 0.0 --0.1402751660730855 -4.46362815994694 0.0 -3.763247076445736 2.5575000721980277 0.0 -3.9094047020721283 2.312015495758798 0.0 -2.180687630366591 0.47524722354728605 0.0 -2.8525493039059464 1.532212904382682 0.0 -4.488251797783194 0.1410489950666849 0.0 -4.491517447057971 0.42457340297429536 0.0 -2.840737798773217 -3.2483481148517166 0.0 -1.952396426110446 -3.9542647547160845 0.0 --3.9952138861273454 2.0356631511554175 0.0 --4.054928972136777 1.7547244578122179 0.0 --3.7372485482036124 1.3217484245576243 0.0 --4.040444191609356 1.4932643166747075 0.0 --3.036899572133522 2.169374820451523 0.0 --2.9655208559133364 1.7425184672242817 0.0 --3.8586501978053387 2.281999365609318 0.0 --3.553533833910155 2.5361890714519184 0.0 --3.6519004327324187 2.4818289712707946 0.0 --4.084173674875146 1.4703930000455552 0.0 --4.532742439237652 0.7179158743739273 0.0 --4.474774196615786 0.4229906998231025 0.0 --2.262435596851586 3.8255696714368765 0.0 --2.0132947605535527 3.951313447740877 0.0 --1.2583190747468824 4.331162663932291 0.0 --0.9548516223669856 4.271760598525314 0.0 -0.9764092137745588 4.368203718500029 0.0 --2.066816796450553 -4.056356357668359 0.0 --2.2573578509201755 -3.816983671967326 0.0 --0.9549985723509454 -4.272418014962311 0.0 --0.7000490151346069 -4.419935529652909 0.0 -0.8308318344311684 0.828339550923089 0.0 -1.4308407870399988 1.14507094014912 0.0 -0.19441905428830752 1.3191485973081816 0.0 -0.44610566699992155 2.2059460640857362 0.0 -0.22873937156487942 1.9590825515486998 0.0 -4.088184238309151 -1.769115296543227 0.0 -3.707582607694366 -2.5196705382985516 0.0 -3.898903837065257 -2.017748343649415 0.0 -3.922335262252034 -1.9985296375668138 0.0 -3.8431108144769954 -2.2728093999271732 0.0 -0.13934573060484148 -4.434053043801592 0.0 -0.4196009064037997 -4.438913927983629 0.0 -0.9426266569755781 -4.217069247268146 0.0 -0.691317023160809 -4.364803902102185 0.0 -3.0873987885019867 -3.0873987885019836 0.0 -2.858004574972981 -3.241769853460173 0.0 -1.7742515489785307 -4.10005341737905 0.0 --4.483045613443209 1.0020794186404518 0.0 --4.328508971314094 1.2575481057717819 0.0 --2.6947099096982954 3.4739990824972757 0.0 --2.5018811632222153 3.6814063371731724 0.0 --1.546943987608216 4.296802222603142 0.0 --1.8033025176287667 4.167186244942959 0.0 -1.5030070527514294 4.174762691204914 0.0 -1.2527214818637478 4.311895622853547 0.0 -1.7808680489514819 1.8140676487808503 0.0 -1.5217338894102848 1.6580010326259462 0.0 -2.0621706840235667 2.7272051338724483 0.0 -2.098877932900885 2.671306861097871 0.0 -0.7522911968473548 2.283874643080049 0.0 -1.1544091629298714 3.084063947045426 0.0 -1.1914120195326563 3.0960882801443126 0.0 -4.201817396719666 -1.2207408008304477 0.0 -4.182617671183908 -1.505835019555987 0.0 -1.2316151981682002 -4.239247317863875 0.0 -1.515285278719775 -4.208866775808509 0.0 -2.7236111928747033 -3.5112583922569245 0.0 -2.537668025163897 -3.7340651054137757 0.0 -2.0156831605149064 -3.956000946596378 0.0 -2.2975236297753563 -3.8849002949341163 0.0 +3.674683837100023 -2.3062871804928227 0.0 +-2.505883375312004 2.381290800596283 0.0 +0.7149212868956139 3.271079849092168 0.0 +0.0691701853914935 -2.369290515089281 0.0 +1.45684699995659 2.208609713474029 0.0 +1.5348039139809861 2.966982526620826 0.0 +3.491812192267398 0.6904602065697117 0.0 +-2.177590693494827 -2.2265616575590577 0.0 +-2.664537042155698 -2.232109470942664 0.0 +-2.8996286232828914 -3.28898306864242 0.0 +-1.5802415713682199 -4.0163992801819255 0.0 +-1.4938263560724454 -4.149262325185663 0.0 +3.0170268939204306 -3.1622855028852603 0.0 +1.4050205628650616 -2.3989727462457817 0.0 +1.4305765818868503 -2.5744334395273545 0.0 +1.9189892264010504 -2.9562841565409053 0.0 +2.550620199471069 -2.79800373167244 0.0 +-0.5077300788169253 -3.513613340726238 0.0 +-0.14103023436685896 -4.487654822635143 0.0 +2.1033352798484195 -1.672032618555592 0.0 +3.186520254266475 -2.016161784704169 0.0 +2.6646401014353414 -2.1580648396397177 0.0 +4.107156992387349 -1.7773255403827202 0.0 +4.1566367484383075 -1.4964813118097013 0.0 +4.345188295289749 -0.13655304337622998 0.0 +4.1408787772387 -1.3221987294796043 0.0 +4.329904806332509 -0.16625499200912722 0.0 +4.412017398861334 0.13865323256451215 0.0 +4.327396043036505 0.674648947156141 0.0 +4.3320760182976965 0.6861334356014285 0.0 +4.405134534527653 0.4164078136018546 0.0 +-3.9576408344988026 2.016518725135506 0.0 +-4.277368240176904 1.2152099422946754 0.0 +-4.31165145796563 0.048969886912911015 0.0 +-2.9037023391275643 -1.954485799672651 0.0 +-3.2594861259936874 -0.8460130211805476 0.0 +-2.850738765206837 -1.1251957535489798 0.0 +0.2244467828691593 2.6218669424434906 0.0 +0.6509600854315688 1.859355202626179 0.0 +0.6931632797993439 3.3583701270707826 0.0 +-3.0587161474687297 1.3965275422558614 0.0 +-3.4350079404818605 0.9017786355438899 0.0 +-2.473158307239915 0.1229962154060399 0.0 +-3.0305894237765103 0.03463692969032502 0.0 +-3.4198330826477346 0.3864827959135839 0.0 +0.8013281492018919 -1.9391025678954477 0.0 +0.3056673442726685 -1.9673204685607122 0.0 +-1.0593886111609903 -1.5715441655047113 0.0 +-1.794291963800515 -1.5523112156756818 0.0 +-1.9936510882028968 -0.6321809101930471 0.0 +-2.1392726224567986 -1.0439198181812634 0.0 +1.8471881540899273 1.9598378634155285 0.0 +2.508980673994149 2.1920644627233794 0.0 +2.253053672969049 0.5726275094069311 0.0 +1.9679623622769469 1.10862041410509 0.0 +2.234028219828265 0.8959473974772755 0.0 +2.8937719589613353 3.2823399869602885 0.0 +1.6422403339183311 3.0477801440816106 0.0 +2.4116327789189906 2.897886574394209 0.0 +2.873684631069604 3.2881790092537053 0.0 +-3.9672212998081333 -1.7167699587740404 0.0 +-3.8625889006761347 -1.9486271628794571 0.0 +-2.2893741633530786 -3.8711202997701273 0.0 +-2.4991237382176315 -3.6773489094922076 0.0 +-2.675685021984635 -3.4494723450462477 0.0 +-2.6260115741854033 -3.469210842058881 0.0 +-0.706520787994236 -3.378039915987744 0.0 +-1.3316949967930896 -3.556011462539472 0.0 +-0.6739679290594124 -2.5567687438891573 0.0 +-0.9048200991867723 -2.365398826184047 0.0 +-1.8260649541206755 -2.728905238588463 0.0 +-1.833956333252693 -2.8455846057994876 0.0 +-0.9990148382472358 -4.469335468884512 0.0 +-1.2652531938040872 -4.355030058276506 0.0 +-0.7099829602192985 -4.482655990478076 0.0 +-0.436079050123967 -4.402817921785529 0.0 +-0.4172382844209976 -4.4139199981184465 0.0 +3.126018217157062 -3.1260182171570587 0.0 +3.3652286116129777 -2.966848111550561 0.0 +3.6526520507505813 -2.4823397703484726 0.0 +3.543644716324352 -2.748732600892017 0.0 +2.333175769528295 -0.9402598306233604 0.0 +2.1048395915114333 -1.2988587804 0.0 +1.7525902040972279 -0.11602308444676952 0.0 +1.1972301977567563 -0.10250643325752494 0.0 +0.8032329692252812 -0.6132788718126284 0.0 +1.112862847705947 -1.1771895947599316 0.0 +3.7838258998660166 -2.2377483991633813 0.0 +3.9807756360481132 -2.0283064952938843 0.0 +4.380146205300656 -0.9790786758461502 0.0 +4.233718682256632 -1.2300089810432102 0.0 +4.4443154205068085 -0.7039104105026756 0.0 +4.4224048178076245 -0.41804033602416135 0.0 +3.200148909479363 -1.2305281598804936 0.0 +3.5617136366083697 -1.1103032413376919 0.0 +2.4875514761013475 -0.9075779483615399 0.0 +3.611490260935341 -0.23610572808813277 0.0 +3.159827753279261 0.010882436414748778 0.0 +3.1920260967052547 0.017687591756981928 0.0 +3.138717398242101 3.138717398242103 0.0 +3.3322161674684976 2.9377437270134377 0.0 +4.371771974629547 0.9772068135172683 0.0 +4.3269187425825315 1.257086101616921 0.0 +-4.150648013234758 1.7961457856941838 0.0 +-3.470590068524098 2.577451744272802 0.0 +-4.349718908631481 -0.13669542363644935 0.0 +-3.9903533926318455 -1.599800387341113 0.0 +-3.3211971677299945 -0.865326126431316 0.0 +-4.466127658082951 -0.9982978075809633 0.0 +-4.478323633781653 -0.7092967823286518 0.0 +-4.342557585373037 -0.33346141568755266 0.0 +-4.392286111473601 -0.41519328003648137 0.0 +-1.5197288702712277 4.2212093261578225 0.0 +0.0243772328358006 3.812687868876671 0.0 +-0.004454473673859492 4.350544653103567 0.0 +-1.7804881807823385 4.1144654231371165 0.0 +-2.0035787503912776 3.9322447041248023 0.0 +-2.9565105162281666 3.3535029113930137 0.0 +-2.1259268819627013 3.762056840315273 0.0 +-2.262010987639713 2.682080355516247 0.0 +0.6431948844800301 1.8362910242276156 0.0 +0.8255628062327663 0.6061459609673985 0.0 +0.9753064276634243 0.9854926033527807 0.0 +0.051669905316017055 0.49776748880585175 0.0 +-0.4006096254109598 1.0356130723934522 0.0 +-0.2674368750123745 1.4027015012680082 0.0 +-0.3423955475654844 2.7290765762546054 0.0 +-0.8725297654392601 3.3894355639528 0.0 +-0.5959562457606308 3.2525765703676566 0.0 +-1.3589102447845278 3.1785401216610834 0.0 +-1.6162420452487196 2.5935735808260003 0.0 +-1.3027004135596765 2.100460431758736 0.0 +-0.8129583577598211 2.1537863249058264 0.0 +1.1008709299770594 4.218911715219968 0.0 +-2.4737471684821766 1.6047265045441264 0.0 +-2.6582453528790007 1.4493239400888958 0.0 +-1.6134756583989192 1.565231819961988 0.0 +-2.2458530872089812 0.40954563602126526 0.0 +-1.3384530894233913 0.6237805511471264 0.0 +-1.2754519264163289 0.7671074694928104 0.0 +-0.14401262156568043 -1.2764213598698122 0.0 +-0.8136033235002987 -1.3136098701723797 0.0 +0.2288466234588975 -0.6782149422898051 0.0 +-0.15987744494064485 -0.11116014636200164 0.0 +-1.0760682166957876 -0.17150111979001983 0.0 +-1.1383220370496183 -0.31460367130206834 0.0 +2.7963972140402724 2.0616834827363486 0.0 +3.1898400311962436 1.3263771602504975 0.0 +3.0376057642420413 1.3732590653905337 0.0 +3.8486073474634375 2.2760600404737694 0.0 +3.9882144000445314 1.7328247421086296 0.0 +3.9555449672765026 2.015450827446986 0.0 +1.7417204671412245 4.0248785227397565 0.0 +1.8619387204500526 3.9131661700391964 0.0 +2.5444328050188036 3.7440191766916344 0.0 +2.744421539658732 3.538086929671649 0.0 +-3.3189015954734526 -2.926005352793248 0.0 +-3.077271899461006 -3.077271899461008 0.0 +-3.120578433163723 -2.9897519119592904 0.0 +-3.743643223131784 -2.544177307243365 0.0 +-3.5649934227895916 -2.765292355084519 0.0 +-3.8447553129562144 -2.2737819536166626 0.0 +-3.866105593890451 -1.969879190519959 0.0 +-1.745863295664768 -4.034452034599073 0.0 +-2.033948825443022 -3.9918493324743385 0.0 +2.959851501345136 -3.357292515135392 0.0 +1.9114329308723634 -3.8489618688871077 0.0 +4.198309241427816 1.5114843324606566 0.0 +3.994633851176696 1.728632429033812 0.0 +-4.283553351877524 1.2444872909644387 0.0 +-4.261376673063483 1.534190004988344 0.0 +-3.582072756986018 2.4343741318368908 0.0 +-3.6959814958555746 2.186337307275195 0.0 +-3.696541860320774 2.1861287620728374 0.0 +-3.4598902793092576 2.6837660001399097 0.0 +-4.376924128125282 0.1375503821020286 0.0 +-4.493772311392631 0.4247865504094532 0.0 +-4.435236440145049 0.9913928022828942 0.0 +-4.514831960583524 0.7150791332363488 0.0 +-4.150295397148939 -1.494198284864969 0.0 +-4.353710090111326 -1.2648697076020725 0.0 +-1.23390314249949 4.247122473906337 0.0 +-1.0568584300646575 4.215580500751074 0.0 +-0.9599823246064834 4.294714040878085 0.0 +-0.13857086632927895 4.40939646275903 0.0 +-2.2050266928463396 3.728496516144178 0.0 +0.13895543488304105 4.42163363255942 0.0 +0.42321896865950587 4.477189028666369 0.0 +1.4969114967915946 4.157831633192454 0.0 +1.2265522471263768 4.2218205260733574 0.0 +0.7041520643820244 4.4458411630535775 0.0 +0.9676306066620959 4.3289304878801795 0.0 +3.671600256461152 2.495216957651994 0.0 +3.4655835971023254 2.688182190101893 0.0 +3.47939104367461 2.6316189134267116 0.0 +2.291657888628045 3.8749818683212793 0.0 +2.0000804443525073 3.9253788919416444 0.0 +2.5682630832865354 -3.779084366326153 0.0 +2.7974653281953223 -3.60647056979747 0.0 +0.14068339125816437 -4.476618095961402 0.0 +0.7403187648129972 -3.270678380268945 0.0 +0.4940515237225321 -3.3308256541393884 0.0 +0.43992317941717285 -3.396701915688575 0.0 +2.285573036149928 -3.864692944681703 0.0 +1.968186085582112 -3.8627826883525094 0.0 +-3.188748325297328 3.1887483252973268 0.0 +-3.358937912448105 2.9613021142078444 0.0 +-0.6990507348463735 4.413632635970976 0.0 +-0.42088871960586477 4.452537568619391 0.0 +-2.5151864570569527 3.4624554987471816 0.0 +-2.4244782537381053 3.567511414552847 0.0 +-2.675303089997234 3.448979961295015 0.0 +1.5024777208621347 -4.1732924153212165 0.0 +1.7164123745080033 -3.966394971324544 0.0 +1.668707220605482 -3.981867067417809 0.0 +0.41421701055010035 -4.381958259091909 0.0 +0.49505898436481305 -4.32773608644927 0.0 +1.259105436010043 -4.333869337153506 0.0 +0.6962396901768 -4.39588439843064 0.0 +0.9856353529424666 -4.409479092443754 0.0 61 cells: -78 79 76 84 85 152 151 77 82 81 -136 137 134 133 14 16 15 -207 211 125 55 132 131 13 -20 21 115 116 48 1 -50 182 180 118 117 7 -33 34 111 110 70 71 8 -34 164 163 35 36 32 33 -65 68 19 107 108 -208 205 154 79 78 -54 130 129 53 127 126 123 124 -36 37 38 11 10 32 -161 162 160 159 165 167 166 163 164 -69 73 72 71 70 -23 91 93 90 83 84 76 -64 63 66 67 68 65 -39 147 144 0 41 -76 79 154 153 21 20 22 23 -119 120 116 115 118 117 -72 73 44 43 119 117 7 -18 19 68 67 58 60 57 61 141 140 -142 143 62 17 104 105 106 107 19 18 -39 40 43 44 42 41 -26 45 47 99 100 -109 106 105 170 169 197 198 168 162 161 -64 63 42 44 73 69 -107 106 109 111 110 108 -149 150 148 179 178 145 144 147 146 -40 9 29 30 146 147 39 -3 4 155 156 94 92 91 23 22 -25 89 212 213 185 188 187 98 -51 49 184 182 50 -2 25 89 88 86 87 24 4 3 -9 46 120 119 43 40 -209 206 181 180 182 184 183 -21 115 118 180 181 153 -65 108 110 70 69 64 -208 205 206 209 210 211 207 -35 6 199 200 171 112 37 36 -13 121 122 52 80 81 78 208 207 -112 172 202 201 173 174 114 38 37 -30 101 192 193 191 190 149 146 -30 29 28 158 196 215 214 101 -27 28 29 9 46 45 26 -98 187 189 186 96 97 100 99 -100 97 95 194 195 157 27 26 -0 144 145 75 74 135 176 177 136 15 -157 216 217 219 218 158 28 27 -5 6 35 163 166 31 103 102 -127 210 209 183 12 53 -126 175 204 203 125 211 210 127 -7 72 71 8 51 50 -10 32 33 8 51 49 -1 48 47 99 98 25 2 -41 0 15 16 66 63 42 -11 38 114 113 128 129 53 12 -154 205 206 181 153 -3 22 20 1 2 -111 109 161 164 34 -12 11 10 49 184 183 -138 139 56 59 58 67 66 16 14 -47 45 46 120 116 48 +146 194 192 149 151 150 147 148 +40 172 173 31 103 170 169 32 41 +37 38 120 125 132 126 +200 214 212 217 219 218 216 202 201 +13 19 82 86 45 +94 96 26 92 91 89 90 25 +1 104 171 172 40 135 134 +81 95 97 53 83 +119 209 210 185 118 129 130 +39 113 114 186 187 190 191 133 +123 143 144 138 139 124 +104 174 206 205 117 211 209 119 1 +16 21 20 0 79 80 78 77 12 +14 15 16 21 19 13 +21 20 93 95 81 82 19 +45 86 85 142 140 46 +84 121 123 143 142 85 +52 58 59 56 99 100 193 194 146 +39 133 189 188 152 153 57 5 2 +69 68 3 46 140 141 47 +2 5 4 38 37 +94 96 98 97 95 93 +10 67 66 17 75 74 72 73 11 +106 107 110 111 109 108 180 179 +57 153 196 195 154 155 59 58 +15 166 213 214 200 14 +147 150 168 167 102 101 29 28 6 +83 84 85 86 82 81 +41 44 43 42 137 135 40 +2 37 126 128 113 39 +119 1 134 136 131 130 +4 5 57 58 52 51 +4 51 54 122 120 38 +42 137 138 144 145 49 +127 129 118 116 115 112 181 182 +55 53 83 84 121 122 54 +65 71 70 7 8 158 157 9 64 +43 42 49 50 36 35 +128 126 132 131 130 129 127 +60 61 34 36 35 107 106 +164 163 10 67 71 65 63 62 +146 148 55 54 51 52 +16 12 165 198 197 203 204 166 15 +68 69 70 71 67 66 +34 8 7 48 50 36 +123 121 122 120 125 124 +68 66 17 202 201 3 +6 98 97 53 55 148 147 +0 87 88 22 23 25 94 93 20 +35 43 44 33 105 110 107 +45 46 3 201 200 14 13 +139 136 131 132 125 124 +48 50 49 145 141 47 +114 113 128 127 182 183 207 208 184 +44 41 32 177 178 176 175 33 +142 143 144 145 141 140 +17 202 216 215 199 18 76 75 +34 61 162 161 159 160 156 158 8 +136 139 138 137 135 134 +48 7 70 69 47 +98 96 26 24 27 30 28 6 +61 cell labels: +1 +1 +0 +1 +0 +1 +1 +0 +1 +1 +0 +1 +1 +0 +0 +0 +0 +1 +1 +0 +0 +0 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +1 +1 +0 +1 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +1 +1 +0 +1 +1 +0 +0 +1 diff --git a/src/bvpy/domains/geometry.py b/src/bvpy/domains/geometry.py index 6fc04069176520d560275856d245e8a838a8ba0f..7521c3dad04656eb69933e635f6b64bade1178d3 100644 --- a/src/bvpy/domains/geometry.py +++ b/src/bvpy/domains/geometry.py @@ -167,6 +167,7 @@ def normal(domain, scale=1, interior=None, degree=1, name='normal'): return u + def get_boundary_facets(mesh): """Selects the boundary elements of a given mesh. @@ -223,13 +224,20 @@ def get_boundary_vertex(mesh): return bnd_vertex -def boundary_normal(mesh): +def boundary_normal(domain, scale=1, degree=1, name='normal'): """Computes the normal vector field on the boundary of a mesh. Parameters ---------- - mesh : :class:`Mesh<dolfin.cpp.mesh.Mesh>` - The mesh on which the boundary normals should be computed. + domain : subclass of :class:`Domain<bvpy.domains.AbstracDomain>` + The meshed surface on which we want to compute the normal field. + scale : float, optional + The amplitude we want to set to this field (the default is 1). + degree : int, optional + The interpolation degree to use to compute the vector space + on the border (the default is 1). + name : str, optional + the label we want to attach to the normal field. Returns ------- @@ -237,6 +245,11 @@ def boundary_normal(mesh): a list of 3D vector defined on the outermost vertices of a mesh. """ + if domain.mesh is not None: + mesh = domain.mesh + else: + print('WARNING - (geometry.py - l.84): no mesh on the domain.') + mesh.init() bnd_facets = get_boundary_facets(mesh) facets_index = [f.index() for f in bnd_facets] @@ -248,13 +261,15 @@ def boundary_normal(mesh): for f in fe.facets(vtx) if f.index() in facets_index]) norm = np.sum(norm, axis=0) - norm = norm / np.linalg.norm(norm) + norm = scale * norm / np.linalg.norm(norm) normals[vtx.index()] = norm - V = fe.VectorFunctionSpace(mesh, 'P', 1, dim=3) + V = fe.VectorFunctionSpace(mesh, 'P', degree, dim=3) u = fe.Function(V) d2v = fe.dof_to_vertex_map(V) u.vector().set_local(normals.flatten()[d2v]) + u.rename(name, 'label') + return u # geometry.py ends here diff --git a/src/bvpy/utils/interface.py b/src/bvpy/utils/interface.py index 0f87032890d3f42155696de7cd2a9f5a68b8d3c1..40a8795c135667832592e79d50b8f7c90285e149 100644 --- a/src/bvpy/utils/interface.py +++ b/src/bvpy/utils/interface.py @@ -105,7 +105,7 @@ def create_expression(source, functionspace=None, degree=None, **kwargs): class FenicsFunctionConverter(object): - """Enables conversion of Fenics objects (???) into other formats. + """Enables conversion of fenics Functions into other formats. Parameters ---------- diff --git a/src/bvpy/utils/io.py b/src/bvpy/utils/io.py index adbfe09dc8b47d7ff44294f2ad810d9df0032c0f..f700187d2cd7c2a261f79aeec94b65b74f312d51 100644 --- a/src/bvpy/utils/io.py +++ b/src/bvpy/utils/io.py @@ -1,13 +1,14 @@ import fenics as fe +from bvpy import BVP -def save(bvp, filename): +def save(data, filename): """Save a fenics mesh or function as pvd or xml. Parameters ---------- - bvp : BVP - the simulation to save. + data : BVP or Domain + the simulation or the domain to save. filename : str the path and the name of the recording file. @@ -21,7 +22,10 @@ def save(bvp, filename): filename += '.xdmf' with fe.XDMFFile(fe.MPI.comm_world, filename) as f: - f.write(bvp.solution) + if isinstance(data, BVP): + f.write(data.solution) + else: + f.write(data.mesh) def read_tissue_text_file(path): @@ -41,15 +45,25 @@ def read_tissue_text_file(path): ''' points = [] cells = [] + labels = [] with open(path, 'r') as file: content = file.readlines() point_nbr = int(content[0][:-8]) + cell_nbr = int(content[point_nbr+1][:-9]) + for line in content[1: point_nbr+1]: points.append([float(coord) for coord in line.split(' ')]) - for line in content[point_nbr+2:]: + for line in content[point_nbr+2:point_nbr+cell_nbr+2]: cells.append([int(pidx) for pidx in line.split(' ')]) - return points, cells + if content[point_nbr+cell_nbr+2][-8:-2] == 'labels': + for line in content[point_nbr+cell_nbr+3:]: + labels.append(int(line)) + + if len(labels) == 0: + return points, cells + else: + return points, cells, labels diff --git a/src/bvpy/vforms/abstract.py b/src/bvpy/vforms/abstract.py index 0490ef1ed86578008b189034d9d0c5b1b837844c..d36d5ba72edfdd2c5f99fc24a379d62b2d03fd0e 100644 --- a/src/bvpy/vforms/abstract.py +++ b/src/bvpy/vforms/abstract.py @@ -64,10 +64,10 @@ class AbstractVform(ABC): bterm = Zero() for ind, t in enumerate(self._bterm): if isinstance(t[1], int): - bterm += fe.dot(t[0],v)*self.ds(t[1]) + bterm += fe.dot(t[0], v) * self.ds(t[1]) elif isinstance(t[1], str): Boundary(t[1])._domain.mark(self.ds.subdomain_data(), ind+1) - bterm += fe.dot(t[0],v)*self.ds(ind+1) + bterm += fe.dot(t[0], v) * self.ds(ind+1) return bterm diff --git a/tutorials/bvpy_tutorial_5_linearElasticity_2DFlatCellularizedTissue.ipynb b/tutorials/bvpy_tutorial_5_linearElasticity_2DFlatCellularizedTissue.ipynb index d9f095d27dbccfd06632501acc86363d26262dae..50c3e8d581a622752ca2a38b6a1ff28f9198413f 100644 --- a/tutorials/bvpy_tutorial_5_linearElasticity_2DFlatCellularizedTissue.ipynb +++ b/tutorials/bvpy_tutorial_5_linearElasticity_2DFlatCellularizedTissue.ipynb @@ -19,7 +19,7 @@ "from bvpy.utils.io import read_tissue_text_file\n", "\n", "path = '../data/tissue_example_flat.txt'\n", - "points, cells = read_tissue_text_file(path)\n", + "points, cells, labels = read_tissue_text_file(path)\n", "\n", "# Definition of the domain of interest.\n", "from bvpy.templates.domains import FaceCellularDomain\n", @@ -41,6 +41,14 @@ "plot(tissue.mesh)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading the structure with a normal force field\n", + "Let's load the flat tissue-inspired structure with a constant force field normal to its surface, similar to the one used in tutorial #4 about thin pressurized elastic shell." + ] + }, { "cell_type": "code", "execution_count": null, @@ -62,52 +70,122 @@ { "cell_type": "code", "execution_count": null, -<<<<<<< HEAD -======= "metadata": {}, "outputs": [], "source": [ - "type(drchlt)" + "# Define the source term as the force field applied everywhere on the domain\n", + "from bvpy.domains.geometry import normal\n", + "\n", + "pressure = 1\n", + "p_force = normal(tissue, scale=pressure, name='pressure_force_field', interior=[0, 0, -1])" ] }, { "cell_type": "code", "execution_count": null, ->>>>>>> develop "metadata": {}, "outputs": [], "source": [ - "# Define the source term as the force field applied everywhere on the domain\n", - "from bvpy.domains.geometry import normal\n", + "# Define the variational form\n", + "from bvpy.templates.vforms import LinearElasticForm\n", "\n", - "pressure = 1\n", - "p_force = normal(tissue, scale=pressure, name='pressure_force_field', interior=[0, 0, -1])" + "young = 1000 * pressure\n", + "\n", + "elastic_equilibrium = LinearElasticForm(source=p_force, young=young)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Set the linear elastic\n", + "from bvpy import BVP\n", + "\n", + "pressurized_elastic_tissue_prblm = BVP(domain=tissue, vform=elastic_equilibrium, bc=drchlt)\n", + "\n", + "# Solve the problem\n", + "pressurized_elastic_tissue_prblm.solve()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution visualization\n", + "sol = pressurized_elastic_tissue_prblm.solution\n", + "\n", + "plot(sol)" ] }, { "cell_type": "code", "execution_count": null, -<<<<<<< HEAD -======= "metadata": {}, "outputs": [], "source": [ - "p_force.vector().get_local().reshape(-1,3)" + "# Save the solution to be used by a third party pipeline\n", + "from bvpy.utils.io import save\n", + "\n", + "path = '../data/tutorial_results/solution_tuto5_1.xdmf'\n", + "\n", + "save(pressurized_elastic_tissue_prblm, path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading the structure with a tangent force field\n", + "Let's now consider a fully 2D problem where the 2D tissue-inspired structure is loaded on its border by a force field locally normal to its border and embedded within the same plane as the structure." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# -- Generate a new instance of the same tissue\n", + "tissue_2 = FaceCellularDomain(points, cells, resolution=.1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Define the source term as the force field applied everywhere on the domain\n", + "from bvpy.domains.geometry import boundary_normal\n", + "\n", + "boundary_deformation = boundary_normal(tissue_2,\n", + " scale=5e-2,\n", + " name='imposed deformation')\n", + "\n", + "\n", + "# Define the correspondning boundary conditions\n", + "from bvpy.boundary_conditions import dirichlet\n", + "\n", + "\n", + "drchlt = dirichlet(boundary_deformation, boundary='all')" ] }, { "cell_type": "code", "execution_count": null, ->>>>>>> develop "metadata": {}, "outputs": [], "source": [ "# Define the variational form\n", "from bvpy.templates.vforms import LinearElasticForm\n", "\n", - "young = 1000 * pressure\n", + "young = 1000\n", "\n", - "elastic_equilibrium = LinearElasticForm(source=p_force, young=young)" + "elastic_equilibrium = LinearElasticForm(young=young)" ] }, { @@ -119,10 +197,10 @@ "# Set the linear elastic\n", "from bvpy import BVP\n", "\n", - "pressurized_elastic_tissue_prblm = BVP(domain=tissue, vform=elastic_equilibrium, bc=drchlt)\n", + "stretched_elastic_tissue_prblm = BVP(domain=tissue_2, vform=elastic_equilibrium, bc=drchlt)\n", "\n", "# Solve the problem\n", - "pressurized_elastic_tissue_prblm.solve()" + "stretched_elastic_tissue_prblm.solve()" ] }, { @@ -132,9 +210,9 @@ "outputs": [], "source": [ "# Solution visualization\n", - "sol = pressurized_elastic_tissue_prblm.solution\n", + "sol_2 = stretched_elastic_tissue_prblm.solution\n", "\n", - "plot(sol)" + "plot(sol_2)" ] }, { @@ -146,9 +224,128 @@ "# Save the solution to be used by a third party pipeline\n", "from bvpy.utils.io import save\n", "\n", - "path = 'solution.xdmf'\n", + "path = '../data/tutorial_results/solution_tuto5_2.xdmf'\n", "\n", - "save(pressurized_elastic_tissue_prblm, path)" + "save(stretched_elastic_tissue_prblm, path)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Heterogeneous tissue\n", + "Let's now consider that our structure represents a multicellular tissue where cells do not feature the same mechanical properties. For instance the Young's modulus of the outermost cells will be assumed higher than the one of inner cells." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# -- Generate a new instance of the same tissue this time with markers associated to cells.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import fenics as fe\n", + "\n", + "tissue_3 = FaceCellularDomain(points, cells, markers=labels, resolution=.1)\n", + "\n", + "young_moduli = [3000 if tissue_3.cdata[cell.index()] == 1 else 1000 for cell in fe.cells(tissue_3.mesh)]\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for cell in fe.cells(tissue_3.mesh):\n", + " print(tissue_3.cdata[cell.index()])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import fenics as fe\n", + "\n", + "from bvpy.utils.interface import create_expression\n", + "from bvpy.domains.geometry import get_boundary_facets\n", + "\n", + "\n", + "# -- useful functions\n", + "def get_boundary_cells(mesh):\n", + " \"\"\"Finds the epidermal cells within a tissue.\n", + " \"\"\"\n", + " boundary_facets = get_boundary_facets(mesh)\n", + " \n", + " return [cell for cell in fe.cells(mesh) \n", + " if any([facet in boundary_facets\n", + " for facet in fe.facets(cell)])]\n", + "\n", + "\n", + "def young_hetero(pos, mesh):\n", + " \"\"\"Gives a specific value to epidermal cells\n", + " \"\"\"\n", + " for cell in fe.cells(pos):\n", + " if cell in boundary_cells(mesh):\n", + " return 3000\n", + " else:\n", + " return 1000\n", + "\n", + "\n", + "\n", + "fspace = fe.function.functionspace.FunctionSpace(tissue, 'P', 1)\n", + "\n", + "yng_modulus = create_expression(young_hetero, fspace, degree=1)\n", + "\n", + "elastic_equilibrium = LinearElasticForm(source=p_force, young=yng_modulus)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mesh = tissue.mesh\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "get_boundary_cells(mesh) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Define the variational form\n", + "from bvpy.templates.vforms import LinearElasticForm\n", + "\n", + "young = 1000 * pressure\n", + "\n", + "elastic_equilibrium = LinearElasticForm(source=p_force, young=young)" ] } ], @@ -168,7 +365,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.7" + "version": "3.7.9" }, "latex_envs": { "LaTeX_envs_menu_present": true,