Merge pull request #13087 from jj-umn/neper_datatypes

Add Neper and Gmsh datatypes
This commit is contained in:
Marius van den Beek
2022-01-06 18:57:00 +01:00
committed by GitHub
5 changed files with 5797 additions and 0 deletions
@@ -886,6 +886,19 @@
<datatype extension="npz" type="galaxy.datatypes.binary:Npz" display_in_upload="true"/>
<datatype extension="hexrd.images.npz" type="galaxy.datatypes.binary:HexrdImagesNpz" display_in_upload="true"/>
<datatype extension="hexrd.eta_ome.npz" type="galaxy.datatypes.binary:HexrdEtaOmeNpz" display_in_upload="true"/>
<datatype extension="hexrd.scored_orientations.npz" type="galaxy.datatypes.binary:Npz" subclass="true" display_in_upload="true"/>
<datatype extension="hexrd.accepted_orientations" type="galaxy.datatypes.tabular:Tabular" mimetype="application/text" subclass="true" display_in_upload="true" />
<datatype extension="hexrd.yml" type="galaxy.datatypes.text:Yaml" subclass="true" display_in_upload="true"/>
<datatype extension="neper.tess" type="galaxy.datatypes.constructive_solid_geometry:NeperTess" display_in_upload="true"/>
<datatype extension="neper.tesr" type="galaxy.datatypes.constructive_solid_geometry:NeperTesr" display_in_upload="true"/>
<datatype extension="neper.points" type="galaxy.datatypes.constructive_solid_geometry:NeperPoints" display_in_upload="true"/>
<datatype extension="neper.points.tsv" type="galaxy.datatypes.constructive_solid_geometry:NeperPointsTabular" display_in_upload="true"/>
<datatype extension="neper.mscell" type="galaxy.datatypes.constructive_solid_geometry:NeperMultiScaleCell" display_in_upload="true"/>
<datatype extension="gmsh.msh" type="galaxy.datatypes.constructive_solid_geometry:GmshMsh" display_in_upload="true"/>
<datatype extension="gmsh.geo" type="galaxy.datatypes.constructive_solid_geometry:GmshGeo" display_in_upload="true"/>
<datatype extension="zset.geof" type="galaxy.datatypes.constructive_solid_geometry:ZsetGeof" display_in_upload="true"/>
<!-- Povray script -->
<datatype extension="pov" type="galaxy.datatypes.text:Text" subclass="true" display_in_upload="true"/>
<!-- End Structural Materials datatypes -->
</registration>
<sniffers>
@@ -915,6 +928,9 @@
<sniffer type="galaxy.datatypes.constructive_solid_geometry:PlyBinary"/>
<sniffer type="galaxy.datatypes.constructive_solid_geometry:VtkAscii"/>
<sniffer type="galaxy.datatypes.constructive_solid_geometry:VtkBinary"/>
<sniffer type="galaxy.datatypes.constructive_solid_geometry:NeperTess"/>
<sniffer type="galaxy.datatypes.constructive_solid_geometry:NeperTesr"/>
<sniffer type="galaxy.datatypes.constructive_solid_geometry:GmshMsh"/>
<sniffer type="galaxy.datatypes.goldenpath:GoldenPath"/>
<sniffer type="galaxy.datatypes.interval:ScIdx"/>
<sniffer type="galaxy.datatypes.tabular:Vcf"/>
@@ -17,6 +17,7 @@ from galaxy.datatypes.sniff import (
build_sniff_from_prefix,
FilePrefix,
)
from galaxy.datatypes.tabular import Tabular
MAX_HEADER_LINES = 500
MAX_LINE_LEN = 2000
@@ -492,6 +493,277 @@ class STL(data.Data):
file_ext = "stl"
@build_sniff_from_prefix
class NeperTess(data.Text):
"""
Neper Tessellation File
***tess
**format
format
**general
dim type
**cell
number_of_cells
"""
file_ext = "neper.tess"
MetadataElement(name="format", default=None, desc="format", readonly=True, visible=True, no_value=None)
MetadataElement(name="dimension", default=None, desc="dimension", readonly=True, visible=True, no_value=None)
MetadataElement(name="cells", default=None, desc="cells", readonly=True, visible=True, no_value=None)
def __init__(self, **kwd):
data.Text.__init__(self, **kwd)
def sniff_prefix(self, file_prefix: FilePrefix):
"""
Neper tess format startswith:***tess
>>> from galaxy.datatypes.sniff import get_test_fname
>>> fname = get_test_fname('test.neper.tess')
>>> NeperTess().sniff(fname)
True
>>> fname = get_test_fname('test.neper.tesr')
>>> NeperTess().sniff(fname)
False
"""
return file_prefix.text_io(errors='ignore').readline(10).startswith('***tess')
def set_meta(self, dataset, **kwd):
if dataset.has_data():
with open(dataset.file_name, errors='ignore') as fh:
for i, line in enumerate(fh):
line = line.strip()
if not line or i > 6:
break
if i == 0 and not line.startswith('***tess'):
break
if i == 2:
dataset.metadata.format = line
if i == 4:
dataset.metadata.dimension = int(line.split()[0])
if i == 6:
dataset.metadata.cells = int(line)
def set_peek(self, dataset):
if not dataset.dataset.purged:
dataset.peek = get_file_peek(dataset.file_name, LINE_COUNT=7)
dataset.blurb = f'format: {str(dataset.metadata.format)} dim: {str(dataset.metadata.dimension)} cells: {str(dataset.metadata.cells)}'
else:
dataset.peek = 'File does not exist'
dataset.blurb = 'File purged from disc'
@build_sniff_from_prefix
class NeperTesr(Binary):
"""
Neper Raster Tessellation File
***tesr
**format
format
**general
dimension
size_x size_y [size_z]
voxsize_x voxsize_y [voxsize_z]
[*origin
origin_x origin_y [origin_z]]
[*hasvoid has_void]
[**cell
number_of_cells
"""
file_ext = "neper.tesr"
MetadataElement(name="format", default=None, desc="format", readonly=True, visible=True, no_value=None)
MetadataElement(name="dimension", default=None, desc="dimension", readonly=True, visible=True, no_value=None)
MetadataElement(name="size", default=[], desc="size", readonly=True, visible=True, no_value=None)
MetadataElement(name="voxsize", default=[], desc="voxsize", readonly=True, visible=True, no_value=None)
MetadataElement(name="origin", default=[], desc="origin", readonly=True, visible=True, no_value=None)
MetadataElement(name="cells", default=None, desc="cells", readonly=True, visible=True, no_value=None)
def __init__(self, **kwd):
Binary.__init__(self, **kwd)
def sniff_prefix(self, file_prefix: FilePrefix):
"""
Neper tesr format startswith:***tesr
>>> from galaxy.datatypes.sniff import get_test_fname
>>> fname = get_test_fname('test.neper.tesr')
>>> NeperTesr().sniff(fname)
True
>>> fname = get_test_fname('test.neper.tess')
>>> NeperTesr().sniff(fname)
False
"""
return file_prefix.text_io(errors='ignore').readline(10).startswith('***tesr')
def set_meta(self, dataset, **kwd):
if dataset.has_data():
with open(dataset.file_name, errors='ignore') as fh:
field = ''
for i, line in enumerate(fh):
line = line.strip()
if not line or i > 12:
break
if i == 0 and not line.startswith('***tesr'):
break
if line.startswith('*'):
field = line
continue
if i == 2:
dataset.metadata.format = line.split()[0]
continue
if i == 4:
dataset.metadata.dimension = line.split()[0]
continue
if i == 5:
dataset.metadata.size = line.split()
continue
if i == 6:
dataset.metadata.voxsize = line.split()
continue
if field.startswith('*origin'):
dataset.metadata.origin = line.split()
continue
if field.startswith('**cell'):
dataset.metadata.cells = int(line)
break
def set_peek(self, dataset):
if not dataset.dataset.purged:
dataset.peek = get_file_peek(dataset.file_name, LINE_COUNT=9)
dataset.blurb = f'format: {str(dataset.metadata.format)} dim: {str(dataset.metadata.dimension)} cells: {str(dataset.metadata.cells)}'
else:
dataset.peek = 'File does not exist'
dataset.blurb = 'File purged from disc'
class NeperPoints(data.Text):
"""
Neper Position File
Neper position format has 1 - 3 floats per line separated by white space.
"""
file_ext = "neper.points"
MetadataElement(name="dimension", default=None, desc="dimension", readonly=True, visible=True, no_value=None)
def __init__(self, **kwd):
data.Text.__init__(self, **kwd)
def set_meta(self, dataset, **kwd):
data.Text.set_meta(self, dataset, **kwd)
if dataset.has_data():
with open(dataset.file_name, errors='ignore') as fh:
dataset.metadata.dimension = self._get_dimension(fh)
def _get_dimension(self, fh, maxlines=100, sep=None):
dim = None
try:
for i, line in enumerate(fh):
if not line:
break
pts = len([float(x) for x in line.strip().split(sep=sep)])
if dim is not None and pts != dim:
return None
elif 1 <= pts <= 3:
dim = pts
else:
return None
if i > maxlines:
break
except Exception:
return None
return dim
def set_peek(self, dataset):
data.Text.set_peek(self, dataset)
if not dataset.dataset.purged:
dataset.blurb += f' dim: {str(dataset.metadata.dimension)}'
class NeperPointsTabular(NeperPoints, Tabular):
"""
Neper Position File
Neper position format has 1 - 3 floats per line separated by TABs.
"""
file_ext = "neper.points.tsv"
def __init__(self, **kwd):
Tabular.__init__(self, **kwd)
def set_meta(self, dataset, **kwd):
Tabular.set_meta(self, dataset, **kwd)
if dataset.has_data():
with open(dataset.file_name, errors='ignore') as fh:
dataset.metadata.dimension = self._get_dimension(fh)
def set_peek(self, dataset):
Tabular.set_peek(self, dataset)
if not dataset.dataset.purged:
dataset.blurb += f' dim: {str(dataset.metadata.dimension)}'
class NeperMultiScaleCell(data.Text):
"""
Neper Multiscale Cell File
"""
file_ext = "neper.mscell"
@build_sniff_from_prefix
class GmshMsh(Binary):
"""Gmsh Mesh File"""
file_ext = "gmsh.msh"
MetadataElement(name="version", default=None, desc="version", readonly=True, visible=True, no_value=None)
MetadataElement(name="format", default=None, desc="format", readonly=True, visible=True, no_value=None)
def __init__(self, **kwd):
Binary.__init__(self, **kwd)
def sniff_prefix(self, file_prefix: FilePrefix):
"""
Gmsh msh format startswith:$MeshFormat
>>> from galaxy.datatypes.sniff import get_test_fname
>>> fname = get_test_fname('test.gmsh.msh')
>>> GmshMsh().sniff(fname)
True
>>> fname = get_test_fname('test.neper.tesr')
>>> GmshMsh().sniff(fname)
False
"""
return file_prefix.text_io(errors='ignore').readline().startswith('$MeshFormat')
def set_meta(self, dataset, **kwd):
if dataset.has_data():
with open(dataset.file_name, errors='ignore') as fh:
for i, line in enumerate(fh):
line = line.strip()
if not line or i > 1:
break
if i == 0 and not line.startswith('$MeshFormat'):
break
if i == 1:
fields = line.split()
if len(fields) > 0:
dataset.metadata.version = fields[0]
if len(fields) > 1:
dataset.metadata.format = 'ASCII' if fields[1] == '0' else 'binary'
def set_peek(self, dataset):
if not dataset.dataset.purged:
dataset.peek = get_file_peek(dataset.file_name, LINE_COUNT=3)
dataset.blurb = f'Gmsh verion: {str(dataset.metadata.version)} {str(dataset.metadata.format)}'
else:
dataset.peek = 'File does not exist'
dataset.blurb = 'File purged from disc'
class GmshGeo(data.Text):
"""Gmsh geometry File"""
file_ext = "gmsh.geo"
class ZsetGeof(data.Text):
"""
Z-set geof File
"""
file_ext = "zset.geof"
# Utility functions
def get_next_line(fh):
line = fh.readline(MAX_LINE_LEN)
File diff suppressed because it is too large Load Diff
Binary file not shown.
+554
View File
@@ -0,0 +1,554 @@
***tess
**format
3.4
**general
3 standard
**cell
10
*id
1 2 3 4 5 6 7 8 9 10
*mode
1 1 1 1 1 1 1 1 1 1
*crysym
triclinic
*seed
1 0.327544505352 0.059994859404 0.520245461924 0.000000000000
2 0.463746603421 0.352810469826 0.017266972293 0.000000000000
3 0.140016493288 0.914894611083 0.371457357317 0.000000000000
4 0.348110723967 0.898568807683 0.620980766206 0.000000000000
5 0.228136020208 0.772531206470 0.776879102353 0.000000000000
6 0.747908502360 0.481969104081 0.987303741555 0.000000000000
7 0.064469931529 0.184636624118 0.753216233629 0.000000000000
8 0.799042535648 0.691676427394 0.041937630353 0.000000000000
9 0.979422516210 0.597123611043 0.274389313947 0.000000000000
10 0.621418434654 0.502629860059 0.490413780382 0.000000000000
*ori
rodrigues:active
0.919953402851 1.412193625247 -0.358468593221
-1.381019825878 0.030115972514 -3.318384436434
0.540501980937 -0.787561454202 -0.735523888182
-2.005448934444 0.199749071961 -1.999283218069
5.163148738562 14.893183177083 5.316486583072
1.919036671923 -0.744035465279 0.303477757891
-0.581246451853 -2.835847764762 0.780360761158
-2.211174665124 0.445317073444 0.934247527182
-2.194677973955 -0.312638828364 -0.439479476190
1.153229166270 -1.695620636026 0.825414393959
**vertex
54
1 0.000000000000 0.000000000000 0.480836332398 0
2 0.459755416589 0.000000000000 1.000000000000 0
3 0.000000000000 0.000000000000 0.041458869036 0
4 0.000000000000 0.393293813046 0.270420087688 0
5 0.875164741475 0.000000000000 0.278445691339 0
6 0.913900420561 0.000000000000 0.660033507666 0
7 0.434151598161 0.327663532237 0.795784363147 0
8 0.484257319426 0.051714829787 1.000000000000 0
9 0.536170248205 0.000000000000 1.000000000000 0
10 0.178728872392 0.472579545895 0.429825098041 0
11 0.186998765476 0.462472809438 0.361331160813 0
12 0.029093767212 0.415649197792 0.291312905140 0
13 0.000000000000 0.000000000000 0.000000000000 0
14 1.000000000000 0.000000000000 0.000000000000 0
15 1.000000000000 0.040784654316 0.000000000000 0
16 1.000000000000 0.000000000000 0.038752863502 0
17 0.881546611618 0.000000000000 0.276318991687 0
18 0.722421690362 0.420035938944 0.196343791871 0
19 0.893965115199 0.264594293597 0.000000000000 0
20 0.000000000000 0.582459991209 0.000000000000 0
21 0.434001108634 0.704989536248 0.202228280672 0
22 0.362001661576 0.790953398456 0.000000000000 0
23 0.000000000000 0.409696248986 0.274168254683 0
24 0.000000000000 1.000000000000 0.000000000000 0
25 0.000000000000 1.000000000000 0.669057750529 0
26 0.059688233947 1.000000000000 0.656084349367 0
27 0.257144028346 0.573870922957 0.463532029818 0
28 0.554516962647 1.000000000000 0.243413634122 0
29 0.432807668780 1.000000000000 0.000000000000 0
30 0.503947601476 0.807076535216 0.272964215305 0
31 0.000000000000 0.529822736073 0.503955515921 0
32 0.181969901270 0.481439284558 0.447414063030 0
33 0.506581420832 1.000000000000 1.000000000000 0
34 0.691298725730 1.000000000000 1.000000000000 0
35 0.557938786910 0.677531596182 0.778820222491 0
36 0.599315620615 0.911726674895 1.000000000000 0
37 0.938983996879 1.000000000000 0.729681107085 0
38 0.759779567980 1.000000000000 0.403262586233 0
39 0.716230778682 0.911385466158 0.401010832367 0
40 0.893253728733 0.933628833647 0.704109823681 0
41 0.000000000000 1.000000000000 1.000000000000 0
42 0.000000000000 0.509856851268 1.000000000000 0
43 0.324207734950 0.419599493076 1.000000000000 0
44 0.394789918890 0.407632437561 0.809129530152 0
45 1.000000000000 1.000000000000 1.000000000000 0
46 1.000000000000 0.000000000000 1.000000000000 0
47 1.000000000000 0.000000000000 0.638115693897 0
48 1.000000000000 1.000000000000 0.749495630742 0
49 1.000000000000 0.418074474013 0.655499290595 0
50 0.000000000000 0.000000000000 1.000000000000 0
51 1.000000000000 1.000000000000 0.000000000000 0
52 1.000000000000 0.466878807137 0.000000000000 0
53 1.000000000000 1.000000000000 0.216854141310 0
54 1.000000000000 0.000000000000 0.472624517697 0
**edge
104
1 1 4 0
2 4 3 0
3 3 1 0
4 2 1 0
5 3 5 0
6 5 6 0
7 6 9 0
8 9 2 0
9 9 8 0
10 8 2 0
11 8 7 0
12 7 10 0
13 10 12 0
14 12 4 0
15 6 7 0
16 10 11 0
17 11 5 0
18 12 11 0
19 20 13 0
20 13 3 0
21 4 23 0
22 23 20 0
23 14 15 0
24 15 16 0
25 16 14 0
26 13 14 0
27 16 17 0
28 17 5 0
29 19 15 0
30 20 22 0
31 22 19 0
32 19 18 0
33 18 21 0
34 21 22 0
35 18 17 0
36 11 21 0
37 23 12 0
38 25 24 0
39 24 20 0
40 23 31 0
41 31 25 0
42 25 26 0
43 26 28 0
44 28 29 0
45 29 24 0
46 29 22 0
47 27 26 0
48 28 30 0
49 30 27 0
50 27 32 0
51 32 31 0
52 30 21 0
53 10 32 0
54 26 33 0
55 33 34 0
56 34 37 0
57 37 38 0
58 38 28 0
59 33 36 0
60 36 34 0
61 36 35 0
62 35 27 0
63 30 39 0
64 39 40 0
65 40 35 0
66 37 40 0
67 38 39 0
68 41 25 0
69 31 42 0
70 42 41 0
71 41 33 0
72 42 43 0
73 43 36 0
74 35 44 0
75 44 32 0
76 44 43 0
77 45 46 0
78 46 47 0
79 47 49 0
80 49 48 0
81 48 45 0
82 46 9 0
83 6 47 0
84 34 45 0
85 48 37 0
86 43 8 0
87 40 49 0
88 7 44 0
89 1 50 0
90 50 42 0
91 2 50 0
92 51 53 0
93 53 52 0
94 52 51 0
95 38 53 0
96 51 29 0
97 52 19 0
98 39 18 0
99 54 16 0
100 15 52 0
101 53 48 0
102 49 54 0
103 54 17 0
104 47 54 0
**face
61
1 3 1 4 3
3 1 2 3
-0.000000000000 -1.000000000000 -0.000000000000 -0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
2 6 2 1 3 5 6 9
6 4 -3 5 6 7 8
-0.000000000000 -0.000000000000 -1.000000000000 -0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
3 3 2 9 8
3 -8 9 10
1.000000000000 0.000000000000 0.000000000000 1.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
4 7 4 1 2 8 7 10 12
7 -1 -4 -10 11 12 13 14
0.300442488685 -0.705572283092 0.334292186508 0.624833167631
0 0 0.000000000000 0.000000000000 0.000000000000
5 5 5 6 7 10 11
5 6 15 12 16 17
-0.467695692146 -0.552244809489 -0.831795056441 0.056059383454
0 0 0.000000000000 0.000000000000 0.000000000000
6 5 5 3 4 12 11
5 -5 -2 -14 18 17
-0.034886941962 0.227866161825 0.489880627504 -0.841483204283
0 0 0.000000000000 0.000000000000 0.000000000000
7 4 6 7 8 9
4 15 -11 -9 -7
0.914832210268 0.555369095370 0.557496494002 0.617059824558
0 0 0.000000000000 0.000000000000 0.000000000000
8 3 10 11 12
3 16 -18 -13
0.345285599308 -0.211231867867 0.962960516662 -0.167595171018
0 0 0.000000000000 0.000000000000 0.000000000000
9 5 20 13 3 4 23
5 19 20 -2 21 22
-0.000000000000 -1.000000000000 -0.000000000000 -0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
10 3 14 15 16
3 23 24 25
1.000000000000 1.000000000000 0.000000000000 0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
11 6 5 3 13 14 16 17
6 -5 -20 26 -25 27 28
-0.000000000000 -0.000000000000 -1.000000000000 -0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
12 6 19 15 14 13 20 22
6 29 -23 -26 -19 30 31
-0.000000000000 -0.000000000000 -0.000000000000 -1.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
13 4 19 18 21 22
4 32 33 34 31
-0.815765410684 -0.702412445749 -0.709891302455 -0.051682634953
0 0 0.000000000000 0.000000000000 0.000000000000
14 5 18 17 5 11 21
5 35 28 -17 36 -33
-0.517979265874 -0.302781935910 -0.287702658471 -0.908597974681
0 0 0.000000000000 0.000000000000 0.000000000000
15 5 15 16 17 18 19
5 24 27 -35 -32 29
-0.839845283175 -0.823924868388 -0.390353064261 -0.410819055637
0 0 0.000000000000 0.000000000000 0.000000000000
16 6 11 21 22 20 23 12
6 36 34 -30 -22 37 18
0.442991428156 -0.438037191933 0.760552544110 0.479252799815
0 0 0.000000000000 0.000000000000 0.000000000000
17 3 4 23 12
3 21 37 14
-0.155588822692 0.467534003571 0.196923579349 -0.861761602418
0 0 0.000000000000 0.000000000000 0.000000000000
18 5 25 24 20 23 31
5 38 39 -22 40 41
-0.000000000000 -1.000000000000 -0.000000000000 -0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
19 5 24 25 26 28 29
5 -38 42 43 44 45
1.000000000000 0.000000000000 1.000000000000 0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
20 4 20 24 29 22
4 -39 -45 46 -30
-0.000000000000 -0.000000000000 -0.000000000000 -1.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
21 4 27 26 28 30
4 47 43 48 49
-0.491222355882 -0.639664443247 0.050184168529 -0.767014308390
0 0 0.000000000000 0.000000000000 0.000000000000
22 5 25 26 27 32 31
5 42 -47 50 51 41
-0.293838048690 -0.200895656461 0.324561316039 -0.924283986308
0 0 0.000000000000 0.000000000000 0.000000000000
23 6 32 27 30 21 11 10
6 -50 -49 52 -36 -16 53
0.089408366042 -0.746507035661 0.639296418956 -0.184464995100
0 0 0.000000000000 0.000000000000 0.000000000000
24 5 28 29 22 21 30
5 44 46 -34 -52 -48
-0.080548699790 -0.856004364012 0.289936553464 0.428010892102
0 0 0.000000000000 0.000000000000 0.000000000000
25 5 23 31 32 10 12
5 40 -51 -53 13 -37
0.235072380998 0.091297098608 0.882507871872 -0.461350946537
0 0 0.000000000000 0.000000000000 0.000000000000
26 6 28 26 33 34 37 38
6 -43 54 55 56 57 58
1.000000000000 0.000000000000 1.000000000000 0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
27 3 33 36 34
3 59 60 -55
1.000000000000 0.000000000000 0.000000000000 1.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
28 5 27 26 33 36 35
5 47 54 59 61 62
0.132328968179 0.513521001698 0.539471681932 -0.667282912421
0 0 0.000000000000 0.000000000000 0.000000000000
29 5 35 27 30 39 40
5 62 -49 63 64 65
-0.436220465541 0.548248903249 -0.794244308886 -0.261914333110
0 0 0.000000000000 0.000000000000 0.000000000000
30 5 35 36 34 37 40
5 -61 60 56 66 65
-0.330655282038 -0.584668344774 0.609239651399 -0.535714451720
0 0 0.000000000000 0.000000000000 0.000000000000
31 4 30 28 38 39
4 -48 -58 67 -63
-0.128246066435 0.591371407615 -0.271327582102 -0.759382118203
0 0 0.000000000000 0.000000000000 0.000000000000
32 4 37 38 39 40
4 57 67 64 -66
-0.049242274036 -0.808610618789 0.386103649545 0.443928867038
0 0 0.000000000000 0.000000000000 0.000000000000
33 4 41 25 31 42
4 68 -41 69 70
-0.000000000000 -1.000000000000 -0.000000000000 -0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
34 4 41 33 26 25
4 71 -54 -42 -68
1.000000000000 0.000000000000 1.000000000000 0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
35 5 33 41 42 43 36
5 -71 -70 72 73 -59
1.000000000000 0.000000000000 0.000000000000 1.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
36 4 32 27 35 44
4 -50 -62 74 75
-0.335270307546 0.706834854544 -0.485085709209 -0.514855652705
0 0 0.000000000000 0.000000000000 0.000000000000
37 5 42 31 32 44 43
5 -69 -51 -75 76 -72
-0.529555782417 -0.267993188777 -0.962641345323 -0.038746497190
0 0 0.000000000000 0.000000000000 0.000000000000
38 4 35 36 43 44
4 -61 -73 -76 -74
0.406959121050 0.822997514593 -0.460070312131 0.333182230724
0 0 0.000000000000 0.000000000000 0.000000000000
39 5 45 46 47 49 48
5 77 78 79 80 81
1.000000000000 1.000000000000 0.000000000000 0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
40 4 47 46 9 6
4 -78 82 -7 83
-0.000000000000 -0.000000000000 -1.000000000000 -0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
41 4 34 45 48 37
4 84 -81 85 -56
1.000000000000 0.000000000000 1.000000000000 0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
42 7 9 46 45 34 36 43 8
7 -82 -77 -84 -60 -73 86 -9
1.000000000000 0.000000000000 0.000000000000 1.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
43 7 35 40 49 47 6 7 44
7 -65 87 -79 -83 15 88 -74
-0.864387718982 -0.246495705924 0.040262351994 -0.968307187814
0 0 0.000000000000 0.000000000000 0.000000000000
44 4 48 49 40 37
4 -80 -87 -66 -85
-0.247452814827 0.305283427860 0.151847233927 -0.940076829957
0 0 0.000000000000 0.000000000000 0.000000000000
45 4 7 44 43 8
4 88 76 86 11
0.742979242927 0.874844169514 0.380604194151 0.299646669366
0 0 0.000000000000 0.000000000000 0.000000000000
46 6 1 50 42 31 23 4
6 89 90 -69 -40 -21 -1
-0.000000000000 -1.000000000000 -0.000000000000 -0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
47 3 50 1 2
3 -89 -4 91
-0.000000000000 -0.000000000000 -1.000000000000 -0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
48 5 42 50 2 8 43
5 -90 -91 -10 -86 -72
1.000000000000 0.000000000000 0.000000000000 1.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
49 4 7 44 32 10
4 88 75 -53 -12
-0.197464110080 -0.803570863072 -0.458803816910 0.379174004397
0 0 0.000000000000 0.000000000000 0.000000000000
50 3 51 53 52
3 92 93 94
1.000000000000 1.000000000000 0.000000000000 0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
51 5 38 53 51 29 28
5 95 -92 96 -44 -58
1.000000000000 0.000000000000 1.000000000000 0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
52 5 51 52 19 22 29
5 -94 97 -31 -46 -96
-0.000000000000 -0.000000000000 -0.000000000000 -1.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
53 6 18 19 52 53 38 39
6 -32 -97 -93 -95 67 98
0.440821706178 0.583662425984 -0.305948176749 0.752152833963
0 0 0.000000000000 0.000000000000 0.000000000000
54 4 39 18 21 30
4 98 33 -52 63
0.230982614539 0.342842483473 0.364889642084 -0.865629586270
0 0 0.000000000000 0.000000000000 0.000000000000
55 7 54 16 15 52 53 48 49
7 99 -24 100 -93 101 -80 102
1.000000000000 1.000000000000 0.000000000000 0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
56 3 54 17 16
3 103 -27 -99
-0.000000000000 -0.000000000000 -1.000000000000 -0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
57 4 48 53 38 37
4 -101 -95 -57 -85
1.000000000000 0.000000000000 1.000000000000 0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
58 3 52 15 19
3 -100 -29 -97
-0.000000000000 -0.000000000000 -0.000000000000 -1.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
59 6 18 17 54 49 40 39
6 35 -103 -102 -87 -64 98
-0.596968354412 -0.835140336199 -0.220431964412 0.503934884603
0 0 0.000000000000 0.000000000000 0.000000000000
60 3 54 49 47
3 -102 -79 104
1.000000000000 1.000000000000 0.000000000000 0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
61 5 17 54 47 6 5
5 -103 -104 -83 -6 -28
-0.000000000000 -0.000000000000 -1.000000000000 -0.000000000000
0 0 0.000000000000 0.000000000000 0.000000000000
**polyhedron
10
1 8 1 2 3 4 -5 6 7 8
2 10 9 10 11 12 -13 -14 -6 -15 16 -17
3 10 18 19 20 -21 -22 -23 -16 -24 -25 -8
4 8 26 27 -28 21 29 -30 31 -32
5 8 33 34 35 28 22 36 37 38
6 10 39 40 41 42 43 -38 30 -7 44 -45
7 9 46 47 48 -4 -37 -49 45 25 17
8 8 50 51 52 53 13 -54 -31 24
9 9 55 56 57 58 -53 59 15 -44 32
10 11 60 61 -59 -29 -43 54 14 5 -36 23 49
**domain
*general
cube
*vertex
8
1 0.000000000000 0.000000000000 0.000000000000 x0y0z0
1 13
2 1.000000000000 0.000000000000 0.000000000000 x1y0z0
1 14
3 1.000000000000 1.000000000000 0.000000000000 x1y1z0
1 51
4 0.000000000000 1.000000000000 0.000000000000 x0y1z0
1 24
5 0.000000000000 0.000000000000 1.000000000000 x0y0z1
1 50
6 0.000000000000 1.000000000000 1.000000000000 x0y1z1
1 41
7 1.000000000000 1.000000000000 1.000000000000 x1y1z1
1 45
8 1.000000000000 0.000000000000 1.000000000000 x1y0z1
1 46
*edge
12
1 2 4 6
x0y1
2 38 68
2 2 6 5
x0z1
2 70 90
3 2 5 1
x0y0
3 3 20 89
4 2 1 4
x0z0
2 19 39
5 2 2 8
x1y0
4 25 78 99 104
6 2 8 7
x1z1
1 77
7 2 7 3
x1y1
3 81 92 101
8 2 3 2
x1z0
3 23 94 100
9 2 5 8
y0z1
3 8 82 91
10 2 2 1
y0z0
1 26
11 2 4 3
y1z0
2 45 96
12 2 7 6
y1z1
3 55 71 84
*face
6
1 4 4 6 5 1
4 1 2 3 4
plane
4 0.000000000000 1.000000000000 0.000000000000 0.000000000000
x0
5 1 9 18 33 46
2 4 2 8 7 3
4 5 6 7 8
plane
4 -1.000000000000 -1.000000000000 -0.000000000000 -0.000000000000
x1
5 10 39 50 55 60
3 4 1 5 8 2
4 3 9 5 10
plane
4 0.000000000000 0.000000000000 1.000000000000 0.000000000000
y0
6 2 11 40 47 56 61
4 4 4 3 7 6
4 11 7 12 1
plane
4 -1.000000000000 -0.000000000000 -1.000000000000 -0.000000000000
y1
6 19 26 34 41 51 57
5 4 1 2 3 4
4 10 8 11 4
plane
4 0.000000000000 0.000000000000 0.000000000000 1.000000000000
z0
4 12 20 52 58
6 4 5 6 7 8
4 2 12 6 9
plane
4 -1.000000000000 -0.000000000000 -0.000000000000 -1.000000000000
z1
5 3 27 35 42 48
***end