├── LICENSE.txt ├── PLY_Files ├── 01_tetrahedron.ply ├── 02_cube.ply ├── 03_octahedron.ply ├── 04_dodecahedron.ply ├── 05_icosahedron.ply ├── 05_icosahedron_with_unused_vertex.ply ├── 06_cuboctahedron.ply ├── 07_icosidodecahedron.ply ├── 08_rhombicuboctahedron.ply ├── 09_snub_cube.ply ├── 10_truncated_cube.ply ├── 11_truncated_cuboctahedron.ply ├── 12_truncated_dodecahedron.ply ├── 13_truncated_icosahedron.ply ├── 14_truncated_octahedron.ply ├── 15_truncated_tetrahedron.ply ├── 16_gyroelongated_pentagonal_pyramid_(J11).ply ├── 17_triangular_bipyramid_(J12).ply ├── 18_pentagonal_bipyramid_(J13).ply ├── 19_gyroelongated_square_bipyramid_(J17).ply ├── 20_square_gyrobicupola_(J29).ply ├── 21_pentagonal_orthocupolarotunda_(J32).ply ├── 22_pentagonal_orthobirotunda_(J34).ply ├── 23_elongated_pentagonal_gyrobicupola_(J39).ply ├── 24_elongated_pentagonal_gyrobirotunda_(J43).ply ├── 25_gyroelongated_square_bicupola_(J45).ply ├── 26_rhombic_dodecahedron.ply ├── 27_rhombic_triacontahedron.ply ├── 28_deltoidal_icositetrahedron.ply ├── 29_pentagonal_icositetrahedron.ply ├── 30_triakis_octahedron.ply ├── 31_disdyakis_dodecahedron.ply ├── 32_triakis_icosahedron.ply ├── 33_pentakis_dodecahedron.ply ├── 34_tetrakis_hexahedron.ply ├── 35_triakis_tetrahedron.ply ├── 36_heptagonal_bipyramid.ply ├── 37_enneagonal_trapezohedron.ply ├── 38_small_stell_dodecahedron.ply ├── 39_rhombic_hexecontahedron.ply ├── 40_goldberg_dk5dgD.ply ├── 41_doublehelix.ply ├── 42_nested_cube.ply ├── 43_nested_octahedron.ply ├── 44_torus.ply ├── 45_double_torus.ply ├── 46_reinforced_cube.ply ├── 47_ball.ply ├── 48_nickedtorus.ply ├── 49_helix.ply ├── 50_rod.ply ├── 51_stickman.ply ├── 52_bottle.ply └── 53_bunny.ply ├── README.md ├── example_submission_script.py ├── pyDAEDALUS ├── 23SdomIIV_seq.txt ├── Automated_Design │ ├── ABform Replace │ │ ├── assign_staples_wChoices.py │ │ ├── dna_info.py │ │ ├── enum_scaf_bases_DX.py │ │ └── ply_to_input.py │ ├── DX_cage_design.py │ ├── PDB_loader.py │ ├── __init__.py │ ├── adj_scaf_nick_pos.py │ ├── arrange_neighbors.py │ ├── assign_scaf_to_edge.py │ ├── assign_staples_wChoices.py │ ├── constants.py │ ├── csv_staples.py │ ├── designate_edge_type.py │ ├── dna_info.py │ ├── enum_scaf_bases_DX.py │ ├── enum_scaf_bases_Hybrid.py │ ├── enum_scaf_bases_Twisted.py │ ├── gen_PDB.py │ ├── gen_schlegel.py │ ├── gen_stap_seq.py │ ├── gen_vert_to_face.py │ ├── ply_to_input.py │ ├── seq_to_text.py │ ├── set_routing_direction.py │ ├── split_edge.py │ ├── split_vert.py │ ├── util.py │ ├── xx_ConstArchive │ │ ├── constants_20190803.py │ │ ├── constants_23S5S.py │ │ ├── constants_EGFP.py │ │ ├── constants_M13.py │ │ ├── constants_old.py │ │ ├── constants_old_old.py │ │ ├── constants_old_old_old.py │ │ ├── constants_rPB66rRNA │ │ └── gen_PDB.py │ └── xx_SourceArchive │ │ └── tmpShit.bak ├── DAEDserve.py ├── EGFP_seq.txt ├── InstructionsForUse.txt ├── M13.txt ├── images │ ├── DX_Aform.png │ ├── DX_Aform_old.png │ ├── DX_Altform.png │ ├── DX_Bform.png │ ├── DX_Hform.png │ ├── DXedges.key │ └── icon.png ├── index.html ├── js │ ├── jquery-3.4.1.min.js │ ├── jquery-xmlrpc-master.zip │ ├── jquery-xmlrpc-master │ │ ├── .gitignore │ │ ├── LICENCE │ │ ├── README.md │ │ ├── bower.json │ │ ├── docs │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── api.rst │ │ │ ├── conf.py │ │ │ ├── index.rst │ │ │ ├── make.bat │ │ │ ├── overview.rst │ │ │ ├── requirements.txt │ │ │ └── types.rst │ │ ├── jquery.xmlrpc.js │ │ ├── jquery.xmlrpc.min.js │ │ ├── tests │ │ │ ├── index.html │ │ │ ├── min.html │ │ │ ├── qunit.css │ │ │ ├── qunit.js │ │ │ ├── tests.binary.js │ │ │ ├── tests.decoding.js │ │ │ ├── tests.document.js │ │ │ ├── tests.encoding.js │ │ │ └── tests.request.js │ │ └── xmlrpc.jquery.json │ ├── jquery.xmlrpc.min.js │ └── three.min.js ├── main.js ├── oct.ply ├── package.json ├── pbip.ply ├── pyDAEDALUSX.code-workspace ├── renderFile.js ├── requirements.txt ├── testServer.py └── tet.ply ├── pyDAEDALUSX_instructions.pdf └── requirements.txt /LICENSE.txt: -------------------------------------------------------------------------------- 1 | pyDAEDALUS - software to render nearly any 3D geometry as a scaffolded DNA origami nanoparticle. 2 | Copyright (C) 2017 MIT, Bathe Lab 3 | 4 | This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. 5 | 6 | This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 7 | 8 | The full license can be found https://opensource.org/licenses/GPL-2.0 . -------------------------------------------------------------------------------- /PLY_Files/01_tetrahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 4 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 4 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.000000 0.000000 0.612372 11 | -0.288675 -0.500000 -0.204124 12 | -0.288675 0.500000 -0.204124 13 | 0.577350 0.000000 -0.204124 14 | 3 0 2 1 15 | 3 0 1 3 16 | 3 0 3 2 17 | 3 1 2 3 18 | -------------------------------------------------------------------------------- /PLY_Files/02_cube.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 8 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 6 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.707000 0.707000 0.707000 11 | -0.707000 0.707000 0.707000 12 | -0.707000 -0.707000 0.707000 13 | 0.707000 -0.707000 0.707000 14 | 0.707000 -0.707000 -0.707000 15 | 0.707000 0.707000 -0.707000 16 | -0.707000 0.707000 -0.707000 17 | -0.707000 -0.707000 -0.707000 18 | 4 3 0 1 2 19 | 4 3 4 5 0 20 | 4 0 5 6 1 21 | 4 1 6 7 2 22 | 4 2 7 4 3 23 | 4 5 4 7 6 24 | -------------------------------------------------------------------------------- /PLY_Files/03_octahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 6 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 8 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.000000 0.000000 1.000000 11 | 0.000000 0.000000 -1.000000 12 | 0.000000 1.000000 0.000000 13 | 0.000000 -1.000000 0.000000 14 | 1.000000 0.000000 0.000000 15 | -1.000000 0.000000 0.000000 16 | 3 0 4 2 17 | 3 0 3 4 18 | 3 0 5 3 19 | 3 0 2 5 20 | 3 1 2 4 21 | 3 1 4 3 22 | 3 1 3 5 23 | 3 1 5 2 24 | -------------------------------------------------------------------------------- /PLY_Files/04_dodecahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 20 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 12 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.000000 0.000000 1.070470 11 | 0.713640 0.000000 0.797880 12 | -0.356820 0.618000 0.797880 13 | -0.356820 -0.618000 0.797880 14 | 0.797880 0.618030 0.356820 15 | 0.797880 -0.618000 0.356820 16 | -0.934170 0.381970 0.356820 17 | 0.136290 1.000000 0.356820 18 | 0.136290 -1.000000 0.356820 19 | -0.934170 -0.381970 0.356820 20 | 0.934170 0.381970 -0.356820 21 | 0.934170 -0.381970 -0.356820 22 | -0.797880 0.618000 -0.356820 23 | -0.136290 1.000000 -0.356820 24 | -0.136290 -1.000000 -0.356820 25 | -0.797880 -0.618030 -0.356820 26 | 0.356820 0.618000 -0.797880 27 | 0.356820 -0.618000 -0.797880 28 | -0.713640 0.000000 -0.797880 29 | 0.000000 0.000000 -1.070470 30 | 5 0 1 4 7 2 31 | 5 0 2 6 9 3 32 | 5 0 3 8 5 1 33 | 5 1 5 11 10 4 34 | 5 2 7 13 12 6 35 | 5 3 9 15 14 8 36 | 5 4 10 16 13 7 37 | 5 5 8 14 17 11 38 | 5 6 12 18 15 9 39 | 5 10 11 17 19 16 40 | 5 12 13 16 19 18 41 | 5 14 15 18 19 17 42 | -------------------------------------------------------------------------------- /PLY_Files/05_icosahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 12 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 20 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.000000 0.000000 1.176000 11 | 1.051000 0.000000 0.526000 12 | 0.324000 1.000000 0.525000 13 | -0.851000 0.618000 0.526000 14 | -0.851000 -0.618000 0.526000 15 | 0.325000 -1.000000 0.526000 16 | 0.851000 0.618000 -0.526000 17 | 0.851000 -0.618000 -0.526000 18 | -0.325000 1.000000 -0.526000 19 | -1.051000 0.000000 -0.526000 20 | -0.325000 -1.000000 -0.526000 21 | 0.000000 0.000000 -1.176000 22 | 3 0 1 2 23 | 3 0 2 3 24 | 3 0 3 4 25 | 3 0 4 5 26 | 3 0 5 1 27 | 3 1 5 7 28 | 3 1 7 6 29 | 3 1 6 2 30 | 3 2 6 8 31 | 3 2 8 3 32 | 3 3 8 9 33 | 3 3 9 4 34 | 3 4 9 10 35 | 3 4 10 5 36 | 3 5 10 7 37 | 3 6 7 11 38 | 3 6 11 8 39 | 3 7 10 11 40 | 3 8 11 9 41 | 3 9 11 10 42 | -------------------------------------------------------------------------------- /PLY_Files/05_icosahedron_with_unused_vertex.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 13 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 20 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.000000 0.000000 1.176000 11 | 1.051000 0.000000 0.526000 12 | 0.324000 1.000000 0.525000 13 | -0.851000 0.618000 0.526000 14 | -0.851000 -0.618000 0.526000 15 | 0.325000 -1.000000 0.526000 16 | 0.851000 0.618000 -0.526000 17 | 0.851000 -0.618000 -0.526000 18 | -0.325000 1.000000 -0.526000 19 | -1.051000 0.000000 -0.526000 20 | -0.325000 -1.000000 -0.526000 21 | 0.851000 0.618000 -0.526000 22 | 0.000000 0.000000 -1.176000 23 | 3 0 1 2 24 | 3 0 2 3 25 | 3 0 3 4 26 | 3 0 4 5 27 | 3 0 5 1 28 | 3 1 5 7 29 | 3 1 7 6 30 | 3 1 6 2 31 | 3 2 6 8 32 | 3 2 8 3 33 | 3 3 8 9 34 | 3 3 9 4 35 | 3 4 9 10 36 | 3 4 10 5 37 | 3 5 10 7 38 | 3 6 7 12 39 | 3 6 12 8 40 | 3 7 10 12 41 | 3 8 12 9 42 | 3 9 12 10 43 | -------------------------------------------------------------------------------- /PLY_Files/06_cuboctahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 12 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 14 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0 0 1.1547 11 | 1 0 0.57735 12 | 0.333333 0.942809 0.57735 13 | -1 0 0.57735 14 | -0.333333 -0.942809 0.57735 15 | 1 0 -0.57735 16 | 0.666667 -0.942809 0 17 | -0.666667 0.942809 0 18 | 0.333333 0.942809 -0.57735 19 | -1 0 -0.57735 20 | -0.333333 -0.942809 -0.57735 21 | 0 0 -1.1547 22 | 3 0 1 2 23 | 3 0 3 4 24 | 3 1 6 5 25 | 3 2 8 7 26 | 3 3 7 9 27 | 3 4 10 6 28 | 3 5 11 8 29 | 3 9 11 10 30 | 4 0 2 7 3 31 | 4 0 4 6 1 32 | 4 1 5 8 2 33 | 4 3 9 10 4 34 | 4 5 6 10 11 35 | 4 7 8 11 9 36 | -------------------------------------------------------------------------------- /PLY_Files/07_icosidodecahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 30 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 32 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0 0 1.05146 11 | 0.618034 0 0.850651 12 | 0.276393 0.552786 0.850651 13 | -0.618034 0 0.850651 14 | -0.276393 -0.552786 0.850651 15 | 1 0 0.32492 16 | 0.723607 -0.552786 0.525731 17 | -0.17082 0.894427 0.525731 18 | 0.447214 0.894427 0.32492 19 | -1 0 0.32492 20 | -0.723607 0.552786 0.525731 21 | 0.17082 -0.894427 0.525731 22 | -0.447214 -0.894427 0.32492 23 | 1 0 -0.32492 24 | 0.894427 0.552786 0 25 | 0.552786 -0.894427 0 26 | -0.552786 0.894427 0 27 | 0.447214 0.894427 -0.32492 28 | -1 0 -0.32492 29 | -0.894427 -0.552786 0 30 | -0.447214 -0.894427 -0.32492 31 | 0.618034 0 -0.850651 32 | 0.723607 -0.552786 -0.525731 33 | 0.17082 -0.894427 -0.525731 34 | -0.723607 0.552786 -0.525731 35 | -0.17082 0.894427 -0.525731 36 | 0.276393 0.552786 -0.850651 37 | -0.618034 0 -0.850651 38 | -0.276393 -0.552786 -0.850651 39 | 0 0 -1.05146 40 | 3 0 1 2 41 | 3 0 3 4 42 | 3 1 6 5 43 | 3 2 8 7 44 | 3 3 10 9 45 | 3 4 12 11 46 | 3 5 13 14 47 | 3 6 11 15 48 | 3 7 16 10 49 | 3 8 14 17 50 | 3 9 18 19 51 | 3 12 19 20 52 | 3 13 22 21 53 | 3 15 23 22 54 | 3 16 25 24 55 | 3 17 26 25 56 | 3 18 24 27 57 | 3 20 28 23 58 | 3 21 29 26 59 | 3 27 29 28 60 | 5 0 2 7 10 3 61 | 5 0 4 11 6 1 62 | 5 1 5 14 8 2 63 | 5 3 9 19 12 4 64 | 5 5 6 15 22 13 65 | 5 7 8 17 25 16 66 | 5 9 10 16 24 18 67 | 5 11 12 20 23 15 68 | 5 13 21 26 17 14 69 | 5 18 27 28 20 19 70 | 5 21 22 23 28 29 71 | 5 24 25 26 29 27 72 | -------------------------------------------------------------------------------- /PLY_Files/08_rhombicuboctahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 24 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 26 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0 0 1.07072 11 | 0.714813 0 0.797175 12 | -0.104682 0.707107 0.797175 13 | -0.684153 0.207107 0.797175 14 | -0.104682 -0.707107 0.797175 15 | 0.610132 0.707107 0.523628 16 | 1.04156 0.207107 0.136774 17 | 0.610132 -0.707107 0.523628 18 | -0.357407 1 0.136774 19 | -0.788835 -0.5 0.523628 20 | -0.936878 0.5 0.136774 21 | -0.357407 -1 0.136774 22 | 0.357407 1 -0.136774 23 | 0.936878 -0.5 -0.136774 24 | 0.788835 0.5 -0.523628 25 | 0.357407 -1 -0.136774 26 | -0.610132 0.707107 -0.523628 27 | -1.04156 -0.207107 -0.136774 28 | -0.610132 -0.707107 -0.523628 29 | 0.104682 0.707107 -0.797175 30 | 0.684153 -0.207107 -0.797175 31 | 0.104682 -0.707107 -0.797175 32 | -0.714813 0 -0.797175 33 | 0 0 -1.07072 34 | 3 0 2 3 35 | 3 1 6 5 36 | 3 4 9 11 37 | 3 7 15 13 38 | 3 8 16 10 39 | 3 12 14 19 40 | 3 17 22 18 41 | 3 20 21 23 42 | 4 0 1 5 2 43 | 4 0 3 9 4 44 | 4 0 4 7 1 45 | 4 1 7 13 6 46 | 4 2 5 12 8 47 | 4 2 8 10 3 48 | 4 3 10 17 9 49 | 4 4 11 15 7 50 | 4 5 6 14 12 51 | 4 6 13 20 14 52 | 4 8 12 19 16 53 | 4 9 17 18 11 54 | 4 10 16 22 17 55 | 4 11 18 21 15 56 | 4 13 15 21 20 57 | 4 14 20 23 19 58 | 4 16 19 23 22 59 | 4 18 22 23 21 60 | -------------------------------------------------------------------------------- /PLY_Files/09_snub_cube.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 24 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 38 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0 0 1.07736 11 | 0.744206 0 0.779019 12 | 0.312301 0.675508 0.779019 13 | -0.482096 0.566945 0.779019 14 | -0.716918 -0.199679 0.779019 15 | -0.119604 -0.734532 0.779019 16 | 0.624602 -0.734532 0.480673 17 | 1.05651 -0.199679 0.0680691 18 | 0.886713 0.566945 0.230276 19 | 0.26211 1.04277 0.0680691 20 | -0.532287 0.934211 0.0680691 21 | -1.00632 0.308242 0.230276 22 | -0.702082 -0.784071 0.230276 23 | 0.0272883 -1.07486 0.0680691 24 | 0.666727 -0.784071 -0.318466 25 | 0.821685 -0.0911155 -0.690829 26 | 0.651891 0.675508 -0.528621 27 | -0.119604 0.875187 -0.616812 28 | -0.809234 0.475829 -0.528621 29 | -0.99148 -0.276151 -0.318466 30 | -0.446741 -0.825648 -0.528621 31 | 0.192697 -0.534854 -0.915157 32 | 0.184631 0.258703 -1.02942 33 | -0.504999 -0.140654 -0.941226 34 | 3 0 1 2 35 | 3 0 2 3 36 | 3 0 3 4 37 | 3 0 4 5 38 | 3 1 6 7 39 | 3 1 7 8 40 | 3 1 8 2 41 | 3 2 8 9 42 | 3 3 10 11 43 | 3 3 11 4 44 | 3 4 12 5 45 | 3 5 12 13 46 | 3 5 13 6 47 | 3 6 13 14 48 | 3 6 14 7 49 | 3 7 14 15 50 | 3 8 16 9 51 | 3 9 16 17 52 | 3 9 17 10 53 | 3 10 17 18 54 | 3 10 18 11 55 | 3 11 18 19 56 | 3 12 19 20 57 | 3 12 20 13 58 | 3 14 21 15 59 | 3 15 21 22 60 | 3 15 22 16 61 | 3 16 22 17 62 | 3 18 23 19 63 | 3 19 23 20 64 | 3 20 23 21 65 | 3 21 23 22 66 | 4 0 5 6 1 67 | 4 2 9 10 3 68 | 4 4 11 19 12 69 | 4 7 15 16 8 70 | 4 13 20 21 14 71 | 4 17 22 23 18 72 | -------------------------------------------------------------------------------- /PLY_Files/10_truncated_cube.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 24 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 14 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0 0 1.04201 11 | 0.562169 0 0.877355 12 | -0.479842 0.292893 0.877355 13 | 0.256971 -0.5 0.877355 14 | 0.877355 0.292893 0.479842 15 | -0.901468 0.207107 0.479842 16 | -0.596271 0.707107 0.479842 17 | 0.140542 -0.914214 0.479842 18 | 1.0179 0.207107 -0.0823278 19 | 0.760926 0.707107 0.0823278 20 | -1.0179 -0.207107 0.0823278 21 | -0.281085 1 0.0823278 22 | -0.281085 -1 0.0823278 23 | 0.281085 -1 -0.0823278 24 | 0.901468 -0.207107 -0.479842 25 | 0.281085 1 -0.0823278 26 | -0.760926 -0.707107 -0.0823278 27 | -0.877355 -0.292893 -0.479842 28 | -0.140542 0.914214 -0.479842 29 | 0.596271 -0.707107 -0.479842 30 | 0.479842 -0.292893 -0.877355 31 | -0.562169 0 -0.877355 32 | -0.256971 0.5 -0.877355 33 | 0 0 -1.04201 34 | 3 0 3 1 35 | 3 2 6 5 36 | 3 4 8 9 37 | 3 7 12 13 38 | 3 10 17 16 39 | 3 11 15 18 40 | 3 14 19 20 41 | 3 21 22 23 42 | 8 0 1 4 9 15 11 6 2 43 | 8 0 2 5 10 16 12 7 3 44 | 8 1 3 7 13 19 14 8 4 45 | 8 5 6 11 18 22 21 17 10 46 | 8 8 14 20 23 22 18 15 9 47 | 8 12 16 17 21 23 20 19 13 48 | -------------------------------------------------------------------------------- /PLY_Files/11_truncated_cuboctahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 48 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 26 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0 0 1.02412 11 | 0.431479 0 0.928785 12 | -0.0210629 0.430964 0.928785 13 | -0.341058 -0.264298 0.928785 14 | 0.410416 0.430964 0.833453 15 | 0.700624 -0.264298 0.698633 16 | -0.383184 0.597631 0.738121 17 | -0.391908 -0.638071 0.698633 18 | -0.703179 -0.0976311 0.738121 19 | 0.658498 0.597631 0.507969 20 | 0.649774 -0.638071 0.468482 21 | 0.948706 -0.0976311 0.37315 22 | -0.463822 0.833333 0.37315 23 | -0.724242 0.333333 0.642789 24 | -0.75403 -0.471404 0.507969 25 | -0.122763 -0.902369 0.468482 26 | 0.57786 0.833333 0.142998 27 | 0.927643 0.333333 0.277818 28 | 0.897856 -0.471404 0.142998 29 | 0.308715 -0.902369 0.37315 30 | -0.80488 0.569036 0.277818 31 | -0.215739 1 0.047666 32 | -0.847005 -0.569036 0.0871538 33 | -0.215739 -1 0.047666 34 | 0.847005 0.569036 -0.0871538 35 | 0.215739 1 -0.047666 36 | 0.80488 -0.569036 -0.277818 37 | 0.215739 -1 -0.047666 38 | -0.897856 0.471404 -0.142998 39 | -0.308715 0.902369 -0.37315 40 | -0.927643 -0.333333 -0.277818 41 | -0.57786 -0.833333 -0.142998 42 | 0.75403 0.471404 -0.507969 43 | 0.122763 0.902369 -0.468482 44 | 0.724242 -0.333333 -0.642789 45 | 0.463822 -0.833333 -0.37315 46 | -0.948706 0.0976311 -0.37315 47 | -0.649774 0.638071 -0.468482 48 | -0.658498 -0.597631 -0.507969 49 | 0.703179 0.0976311 -0.738121 50 | 0.391908 0.638071 -0.698633 51 | 0.383184 -0.597631 -0.738121 52 | -0.700624 0.264298 -0.698633 53 | -0.410416 -0.430964 -0.833453 54 | 0.341058 0.264298 -0.928785 55 | 0.0210629 -0.430964 -0.928785 56 | -0.431479 0 -0.928785 57 | 0 0 -1.02412 58 | 4 0 1 4 2 59 | 4 3 8 14 7 60 | 4 5 10 18 11 61 | 4 6 12 20 13 62 | 4 9 17 24 16 63 | 4 15 23 27 19 64 | 4 21 25 33 29 65 | 4 22 30 38 31 66 | 4 26 35 41 34 67 | 4 28 37 42 36 68 | 4 32 39 44 40 69 | 4 43 46 47 45 70 | 6 0 2 6 13 8 3 71 | 6 1 5 11 17 9 4 72 | 6 7 14 22 31 23 15 73 | 6 10 19 27 35 26 18 74 | 6 12 21 29 37 28 20 75 | 6 16 24 32 40 33 25 76 | 6 30 36 42 46 43 38 77 | 6 34 41 45 47 44 39 78 | 8 0 3 7 15 19 10 5 1 79 | 8 2 4 9 16 25 21 12 6 80 | 8 8 13 20 28 36 30 22 14 81 | 8 11 18 26 34 39 32 24 17 82 | 8 23 31 38 43 45 41 35 27 83 | 8 29 33 40 44 47 46 42 37 84 | -------------------------------------------------------------------------------- /PLY_Files/12_truncated_dodecahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 60 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 32 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0 0 1.01449 11 | 0.336763 0 0.956959 12 | -0.290223 0.17082 0.956959 13 | 0.163468 -0.294427 0.956959 14 | 0.591433 0.17082 0.806354 15 | -0.596346 0.152786 0.806354 16 | -0.423052 0.447214 0.806354 17 | 0.137742 -0.6 0.806354 18 | 0.830204 0.152786 0.56267 19 | 0.666736 0.447214 0.620196 20 | -0.801441 -0.0472136 0.620196 21 | -0.347749 0.723607 0.620196 22 | -0.0673526 -0.8 0.620196 23 | 0.26941 -0.8 0.56267 24 | 0.961872 -0.0472136 0.318986 25 | 0.533907 0.723607 0.469591 26 | -0.827167 -0.352786 0.469591 27 | -0.959996 -0.0763932 0.318986 28 | -0.399202 0.876393 0.318986 29 | -0.0930789 0.894427 0.469591 30 | -0.373476 -0.818034 0.469591 31 | 0.508181 -0.818034 0.318986 32 | 0.936146 -0.352786 0.168381 33 | 1.01145 -0.0763932 -0.0177765 34 | 0.482454 0.876393 0.168381 35 | 0.243684 0.894427 0.412065 36 | -0.663699 -0.647214 0.412065 37 | -1.01145 0.0763932 0.0177765 38 | -0.557757 0.847214 0.0177765 39 | -0.532031 -0.847214 0.168381 40 | 0.557757 -0.847214 -0.0177765 41 | 0.762851 -0.647214 0.168381 42 | 0.959996 0.0763932 -0.318986 43 | 0.532031 0.847214 -0.168381 44 | -0.961872 0.0472136 -0.318986 45 | -0.936146 0.352786 -0.168381 46 | -0.762851 0.647214 -0.168381 47 | -0.508181 0.818034 -0.318986 48 | -0.482454 -0.876393 -0.168381 49 | 0.399202 -0.876393 -0.318986 50 | 0.801441 0.0472136 -0.620196 51 | 0.827167 0.352786 -0.469591 52 | 0.663699 0.647214 -0.412065 53 | 0.373476 0.818034 -0.469591 54 | -0.830204 -0.152786 -0.56267 55 | -0.26941 0.8 -0.56267 56 | -0.533907 -0.723607 -0.469591 57 | -0.243684 -0.894427 -0.412065 58 | 0.0930789 -0.894427 -0.469591 59 | 0.347749 -0.723607 -0.620196 60 | 0.596346 -0.152786 -0.806354 61 | 0.0673526 0.8 -0.620196 62 | -0.666736 -0.447214 -0.620196 63 | -0.591433 -0.17082 -0.806354 64 | -0.137742 0.6 -0.806354 65 | 0.423052 -0.447214 -0.806354 66 | 0.290223 -0.17082 -0.956959 67 | -0.336763 0 -0.956959 68 | -0.163468 0.294427 -0.956959 69 | 0 0 -1.01449 70 | 3 0 3 1 71 | 3 2 6 5 72 | 3 4 8 9 73 | 3 7 12 13 74 | 3 10 17 16 75 | 3 11 19 18 76 | 3 14 22 23 77 | 3 15 24 25 78 | 3 20 26 29 79 | 3 21 30 31 80 | 3 27 35 34 81 | 3 28 37 36 82 | 3 32 40 41 83 | 3 33 42 43 84 | 3 38 46 47 85 | 3 39 48 49 86 | 3 44 53 52 87 | 3 45 51 54 88 | 3 50 55 56 89 | 3 57 58 59 90 | 10 0 1 4 9 15 25 19 11 6 2 91 | 10 0 2 5 10 16 26 20 12 7 3 92 | 10 1 3 7 13 21 31 22 14 8 4 93 | 10 5 6 11 18 28 36 35 27 17 10 94 | 10 8 14 23 32 41 42 33 24 15 9 95 | 10 12 20 29 38 47 48 39 30 21 13 96 | 10 16 17 27 34 44 52 46 38 29 26 97 | 10 18 19 25 24 33 43 51 45 37 28 98 | 10 22 31 30 39 49 55 50 40 32 23 99 | 10 34 35 36 37 45 54 58 57 53 44 100 | 10 40 50 56 59 58 54 51 43 42 41 101 | 10 46 52 53 57 59 56 55 49 48 47 102 | -------------------------------------------------------------------------------- /PLY_Files/13_truncated_icosahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 60 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 32 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0 0 1.021 11 | 0.403548 0 0.937864 12 | -0.227464 0.333333 0.937864 13 | -0.147123 -0.375774 0.937864 14 | 0.579632 0.333333 0.771593 15 | 0.505832 -0.375774 0.803348 16 | -0.602051 0.290893 0.771593 17 | -0.0513806 0.666667 0.771593 18 | 0.165499 -0.608015 0.803348 19 | -0.52171 -0.418215 0.771593 20 | 0.858 0.290893 0.470806 21 | 0.352168 0.666667 0.688458 22 | 0.7842 -0.418215 0.502561 23 | -0.657475 0.597996 0.502561 24 | -0.749174 -0.0848813 0.688458 25 | -0.317142 0.830237 0.502561 26 | 0.103533 -0.882697 0.502561 27 | -0.583675 -0.692896 0.470806 28 | 0.802576 0.597996 0.201774 29 | 0.960284 -0.0848813 0.33629 30 | 0.489955 0.830237 0.33629 31 | 0.722234 -0.692896 0.201774 32 | -0.860021 0.529326 0.150394 33 | -0.95172 -0.153552 0.33629 34 | -0.179355 0.993808 0.150394 35 | 0.381901 -0.925138 0.201774 36 | -0.271054 -0.925138 0.33629 37 | -0.849436 -0.529326 0.201774 38 | 0.849436 0.529326 -0.201774 39 | 1.00714 -0.153552 -0.067258 40 | 0.224193 0.993808 0.067258 41 | 0.860021 -0.529326 -0.150394 42 | -0.722234 0.692896 -0.201774 43 | -1.00714 0.153552 0.067258 44 | -0.381901 0.925138 -0.201774 45 | 0.179355 -0.993808 -0.150394 46 | -0.224193 -0.993808 -0.067258 47 | -0.802576 -0.597996 -0.201774 48 | 0.583675 0.692896 -0.470806 49 | 0.95172 0.153552 -0.33629 50 | 0.271054 0.925138 -0.33629 51 | 0.657475 -0.597996 -0.502561 52 | -0.7842 0.418215 -0.502561 53 | -0.960284 0.0848813 -0.33629 54 | -0.103533 0.882697 -0.502561 55 | 0.317142 -0.830237 -0.502561 56 | -0.489955 -0.830237 -0.33629 57 | -0.858 -0.290893 -0.470806 58 | 0.52171 0.418215 -0.771593 59 | 0.749174 0.0848813 -0.688458 60 | 0.602051 -0.290893 -0.771593 61 | -0.505832 0.375774 -0.803348 62 | -0.165499 0.608015 -0.803348 63 | 0.0513806 -0.666667 -0.771593 64 | -0.352168 -0.666667 -0.688458 65 | -0.579632 -0.333333 -0.771593 66 | 0.147123 0.375774 -0.937864 67 | 0.227464 -0.333333 -0.937864 68 | -0.403548 0 -0.937864 69 | 0 0 -1.021 70 | 5 0 3 8 5 1 71 | 5 2 7 15 13 6 72 | 5 4 10 18 20 11 73 | 5 9 14 23 27 17 74 | 5 12 21 31 29 19 75 | 5 16 26 36 35 25 76 | 5 22 32 42 43 33 77 | 5 24 30 40 44 34 78 | 5 28 39 49 48 38 79 | 5 37 47 55 54 46 80 | 5 41 45 53 57 50 81 | 5 51 52 56 59 58 82 | 6 0 1 4 11 7 2 83 | 6 0 2 6 14 9 3 84 | 6 1 5 12 19 10 4 85 | 6 3 9 17 26 16 8 86 | 6 5 8 16 25 21 12 87 | 6 6 13 22 33 23 14 88 | 6 7 11 20 30 24 15 89 | 6 10 19 29 39 28 18 90 | 6 13 15 24 34 32 22 91 | 6 17 27 37 46 36 26 92 | 6 18 28 38 40 30 20 93 | 6 21 25 35 45 41 31 94 | 6 23 33 43 47 37 27 95 | 6 29 31 41 50 49 39 96 | 6 32 34 44 52 51 42 97 | 6 35 36 46 54 53 45 98 | 6 38 48 56 52 44 40 99 | 6 42 51 58 55 47 43 100 | 6 48 49 50 57 59 56 101 | 6 53 54 55 58 59 57 102 | -------------------------------------------------------------------------------- /PLY_Files/14_truncated_octahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 24 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 14 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0 0 1.05409 11 | 0.632456 0 0.843274 12 | -0.421637 0.471404 0.843274 13 | -0.0702728 -0.628539 0.843274 14 | 0.843274 0.471404 0.421637 15 | 0.562183 -0.628539 0.632456 16 | -0.913547 0.31427 0.421637 17 | -0.210818 0.942809 0.421637 18 | -0.562183 -0.785674 0.421637 19 | 0.98382 0.31427 -0.210818 20 | 0.421637 0.942809 0.210818 21 | 0.702728 -0.785674 0 22 | -0.702728 0.785674 0 23 | -0.98382 -0.31427 0.210818 24 | -0.421637 -0.942809 -0.210818 25 | 0.562183 0.785674 -0.421637 26 | 0.913547 -0.31427 -0.421637 27 | 0.210818 -0.942809 -0.421637 28 | -0.562183 0.628539 -0.632456 29 | -0.843274 -0.471404 -0.421637 30 | 0.0702728 0.628539 -0.843274 31 | 0.421637 -0.471404 -0.843274 32 | -0.632456 0 -0.843274 33 | 0 0 -1.05409 34 | 4 0 3 5 1 35 | 4 2 7 12 6 36 | 4 4 9 15 10 37 | 4 8 13 19 14 38 | 4 11 17 21 16 39 | 4 18 20 23 22 40 | 6 0 1 4 10 7 2 41 | 6 0 2 6 13 8 3 42 | 6 1 5 11 16 9 4 43 | 6 3 8 14 17 11 5 44 | 6 6 12 18 22 19 13 45 | 6 7 10 15 20 18 12 46 | 6 9 16 21 23 20 15 47 | 6 14 19 22 23 21 17 48 | -------------------------------------------------------------------------------- /PLY_Files/15_truncated_tetrahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 12 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 8 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0 0 1.10554 11 | 0.852803 0 0.703526 12 | -0.710669 0.471404 0.703526 13 | 0.331646 -0.785674 0.703526 14 | 0.994937 0.471404 -0.100504 15 | -1.08969 0.157135 -0.100504 16 | -0.568535 0.942809 -0.100504 17 | -0.0473779 -1.09994 -0.100504 18 | 0.615913 0.157135 -0.904534 19 | 0.284268 0.942809 -0.502519 20 | -0.758047 -0.628539 -0.502519 21 | 0.0947559 -0.628539 -0.904534 22 | 3 0 3 1 23 | 3 2 6 5 24 | 3 4 8 9 25 | 3 7 10 11 26 | 6 0 1 4 9 6 2 27 | 6 0 2 5 10 7 3 28 | 6 1 3 7 11 8 4 29 | 6 5 6 9 8 11 10 30 | -------------------------------------------------------------------------------- /PLY_Files/16_gyroelongated_pentagonal_pyramid_(J11).ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 11 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 16 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -0.684500 -0.403400 0.595200 11 | -0.633900 0.589400 0.486200 12 | -0.475500 -0.822300 -0.288500 13 | -0.393500 0.784000 -0.464800 14 | -0.295600 -0.088500 -0.943600 15 | 0.127800 0.092500 0.902000 16 | 0.225700 -0.780000 0.423200 17 | 0.307700 0.826300 0.246900 18 | 0.466100 -0.585400 -0.527800 19 | 0.516700 0.407400 -0.636800 20 | 0.839000 -0.020000 0.208000 21 | 3 6 2 8 22 | 3 8 2 4 23 | 3 8 4 9 24 | 3 9 4 3 25 | 3 9 3 7 26 | 3 7 3 1 27 | 3 7 1 5 28 | 3 5 1 0 29 | 3 5 0 6 30 | 3 6 0 2 31 | 3 6 8 10 32 | 3 8 9 10 33 | 3 9 7 10 34 | 3 7 5 10 35 | 3 5 6 10 36 | 5 1 3 4 2 0 37 | -------------------------------------------------------------------------------- /PLY_Files/17_triangular_bipyramid_(J12).ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 5 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 6 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -0.417000 0.166700 0.362900 11 | -0.128300 -0.333300 -0.453600 12 | -0.128300 0.666700 -0.453600 13 | 0.128300 -0.666700 0.453600 14 | 0.545300 0.166700 0.090700 15 | 3 1 3 0 16 | 3 3 4 0 17 | 3 3 1 4 18 | 3 0 2 1 19 | 3 0 4 2 20 | 3 2 4 1 21 | -------------------------------------------------------------------------------- /PLY_Files/18_pentagonal_bipyramid_(J13).ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 7 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 10 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -0.794100 0.302600 -0.037700 11 | -0.494400 -0.498800 0.480000 12 | -0.096600 -0.305400 -0.416900 13 | 0.003600 0.685800 -0.503300 14 | 0.096600 0.305400 0.416900 15 | 0.488600 -0.610900 0.334300 16 | 0.796300 0.121200 -0.273400 17 | 3 3 2 0 18 | 3 2 1 0 19 | 3 2 5 1 20 | 3 0 4 3 21 | 3 0 1 4 22 | 3 4 1 5 23 | 3 2 3 6 24 | 3 3 4 6 25 | 3 5 2 6 26 | 3 4 5 6 27 | -------------------------------------------------------------------------------- /PLY_Files/19_gyroelongated_square_bipyramid_(J17).ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 10 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 16 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -0.693300 0.433100 0.091900 11 | -0.602400 -0.504400 -0.243800 12 | -0.338800 -0.281600 0.694800 13 | -0.197900 0.252100 -0.757700 14 | -0.030900 1.098600 -0.252100 15 | 0.030900 -1.098600 0.252100 16 | 0.174900 0.567200 0.569600 17 | 0.361800 -0.537700 -0.506700 18 | 0.625500 -0.314900 0.431800 19 | 0.670300 0.386100 -0.279900 20 | 3 6 8 9 21 | 3 9 8 7 22 | 3 9 7 3 23 | 3 3 7 1 24 | 3 3 1 0 25 | 3 0 1 2 26 | 3 0 2 6 27 | 3 6 2 8 28 | 3 6 9 4 29 | 3 9 3 4 30 | 3 3 0 4 31 | 3 0 6 4 32 | 3 7 8 5 33 | 3 1 7 5 34 | 3 2 1 5 35 | 3 8 2 5 36 | -------------------------------------------------------------------------------- /PLY_Files/20_square_gyrobicupola_(J29).ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 16 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 18 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -1.285600 -0.090100 -0.215100 11 | -1.004100 0.835100 0.039100 12 | -0.814000 -0.962600 -0.343300 13 | -0.718100 -0.464300 0.518400 14 | -0.567500 0.374200 -0.733500 15 | -0.436600 0.461000 0.772600 16 | -0.134400 1.271200 0.270400 17 | -0.095900 -0.498300 -0.861700 18 | 0.134400 -1.271200 -0.270400 19 | 0.230300 -0.772900 0.591300 20 | 0.302200 0.810200 -0.502200 21 | 0.511800 0.152400 0.845500 22 | 0.773800 -0.062200 -0.630400 23 | 0.814000 0.962600 0.343300 24 | 1.004100 -0.835100 -0.039100 25 | 1.285600 0.090100 0.215100 26 | 3 4 0 1 27 | 3 10 6 13 28 | 3 12 15 14 29 | 3 7 8 2 30 | 3 3 0 2 31 | 3 9 8 14 32 | 3 11 15 13 33 | 3 5 6 1 34 | 4 7 4 10 12 35 | 4 4 7 2 0 36 | 4 10 4 1 6 37 | 4 12 10 13 15 38 | 4 7 12 14 8 39 | 4 5 3 9 11 40 | 4 3 5 1 0 41 | 4 9 3 2 8 42 | 4 11 9 14 15 43 | 4 5 11 13 6 44 | -------------------------------------------------------------------------------- /PLY_Files/21_pentagonal_orthocupolarotunda_(J32).ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 25 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 27 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -1.604100 0.399600 -0.032800 11 | -1.404400 0.024100 0.872300 12 | -1.246000 0.509900 -0.959900 13 | -1.074100 -0.335900 -0.454900 14 | -1.001200 0.895300 0.592400 15 | -0.874500 -0.711500 0.450200 16 | -0.723200 -0.473300 1.409500 17 | -0.466800 0.312800 -1.555000 18 | -0.421700 1.073800 -0.907800 19 | -0.295000 -0.533000 -1.050000 20 | -0.270500 1.312000 0.051600 21 | -0.070800 0.936500 0.956600 22 | 0.028000 -1.140600 0.414400 23 | 0.101000 0.090600 1.461700 24 | 0.179300 -0.902400 1.373800 25 | 0.386200 -1.030300 -0.512700 26 | 0.435700 -0.116300 -1.590700 27 | 0.508600 1.114900 -0.543500 28 | 0.831700 0.507300 0.920900 29 | 0.958400 -1.099500 0.778700 30 | 1.038600 0.379400 -0.965600 31 | 1.116900 -0.613700 -1.053500 32 | 1.189800 0.617600 -0.006200 33 | 1.316600 -0.989200 -0.148400 34 | 1.361600 -0.228200 0.498800 35 | 3 3 0 2 36 | 3 9 7 16 37 | 3 15 21 23 38 | 3 12 19 14 39 | 3 5 6 1 40 | 3 18 24 22 41 | 3 24 19 23 42 | 3 22 20 17 43 | 3 20 21 16 44 | 3 17 8 10 45 | 3 8 7 2 46 | 3 10 4 11 47 | 3 4 0 1 48 | 3 11 13 18 49 | 3 13 6 14 50 | 4 3 5 1 0 51 | 4 9 3 2 7 52 | 4 15 9 16 21 53 | 4 12 15 23 19 54 | 4 5 12 14 6 55 | 5 5 3 9 15 12 56 | 5 18 22 17 10 11 57 | 5 18 13 14 19 24 58 | 5 22 24 23 21 20 59 | 5 17 20 16 7 8 60 | 5 10 8 2 0 4 61 | 5 11 4 1 6 13 62 | -------------------------------------------------------------------------------- /PLY_Files/22_pentagonal_orthobirotunda_(J34).ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 30 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 32 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -1.579200 0.034300 0.350500 11 | -1.454000 -0.545000 -0.454900 12 | -1.295800 0.962700 0.110400 13 | -1.259500 -0.907300 0.456700 14 | -1.101300 0.600500 1.022000 15 | -1.093100 0.025400 -1.192700 16 | -0.995300 0.957200 -0.843300 17 | -0.847800 -1.333300 -0.348900 18 | -0.584000 -0.922900 1.193800 19 | -0.517300 1.523400 -0.171800 20 | -0.486200 0.008900 1.543200 21 | -0.314600 0.586100 -1.475000 22 | -0.263800 -0.410300 -1.542800 23 | -0.202700 0.937400 1.303200 24 | -0.112200 -1.250000 -1.021200 25 | 0.082200 -1.612200 -0.109700 26 | 0.158200 1.507800 0.565400 27 | 0.245300 -1.358600 0.843800 28 | 0.314600 -0.586100 1.475000 29 | 0.458700 1.502300 -0.388400 30 | 0.584000 0.922900 -1.193800 31 | 0.666200 -0.689300 -1.303500 32 | 0.773300 0.916200 1.086600 33 | 0.980900 -1.275400 0.171500 34 | 1.093100 -0.025400 1.192700 35 | 1.190200 0.134700 -1.087800 36 | 1.259500 0.907300 -0.456700 37 | 1.341800 -0.705000 -0.566300 38 | 1.454000 0.545000 0.454900 39 | 1.504800 -0.451400 0.387100 40 | 3 15 7 14 41 | 3 7 3 1 42 | 3 14 12 21 43 | 3 12 5 11 44 | 3 21 25 27 45 | 3 25 20 26 46 | 3 27 29 23 47 | 3 29 28 24 48 | 3 23 17 15 49 | 3 17 18 8 50 | 3 4 10 13 51 | 3 10 8 18 52 | 3 13 22 16 53 | 3 22 24 28 54 | 3 16 19 9 55 | 3 19 26 20 56 | 3 9 6 2 57 | 3 6 11 5 58 | 3 2 0 4 59 | 3 0 1 3 60 | 5 15 14 21 27 23 61 | 5 15 17 8 3 7 62 | 5 14 7 1 5 12 63 | 5 21 12 11 20 25 64 | 5 27 25 26 28 29 65 | 5 23 29 24 18 17 66 | 5 4 13 16 9 2 67 | 5 4 0 3 8 10 68 | 5 13 10 18 24 22 69 | 5 16 22 28 26 19 70 | 5 9 19 20 11 6 71 | 5 2 6 5 1 0 72 | -------------------------------------------------------------------------------- /PLY_Files/23_elongated_pentagonal_gyrobicupola_(J39).ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 30 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 32 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -1.593200 0.343700 -0.459800 11 | -1.567100 0.347800 0.539800 12 | -1.494500 -0.651400 -0.458400 13 | -1.468400 -0.647300 0.541300 14 | -1.088400 1.206800 -0.476600 15 | -1.062200 1.210800 0.523100 16 | -0.873100 -0.088100 -1.002900 17 | -0.830000 -1.398500 -0.472700 18 | -0.803800 -1.394400 0.526900 19 | -0.707100 0.433800 1.042800 20 | -0.608400 -0.561300 1.044300 21 | -0.368200 0.775000 -1.019600 22 | -0.208500 -0.835200 -1.017200 23 | -0.172800 1.608100 -0.502200 24 | -0.146600 1.612200 0.497500 25 | 0.146600 -1.612200 -0.497500 26 | 0.172800 -1.608100 0.502200 27 | 0.208500 0.835200 1.017200 28 | 0.368200 -0.775000 1.019600 29 | 0.608400 0.561300 -1.044300 30 | 0.707100 -0.433800 -1.042800 31 | 0.803800 1.394400 -0.526900 32 | 0.830000 1.398500 0.472700 33 | 0.873100 0.088100 1.002900 34 | 1.062200 -1.210800 -0.523100 35 | 1.088400 -1.206800 0.476600 36 | 1.468400 0.647300 -0.541300 37 | 1.494500 0.651400 0.458400 38 | 1.567100 -0.347800 -0.539800 39 | 1.593200 -0.343700 0.459800 40 | 3 11 4 13 41 | 3 19 21 26 42 | 3 20 28 24 43 | 3 12 15 7 44 | 3 6 2 0 45 | 3 9 5 1 46 | 3 10 3 8 47 | 3 18 16 25 48 | 3 23 29 27 49 | 3 17 22 14 50 | 4 11 6 0 4 51 | 4 19 11 13 21 52 | 4 20 19 26 28 53 | 4 12 20 24 15 54 | 4 6 12 7 2 55 | 4 9 17 14 5 56 | 4 10 9 1 3 57 | 4 18 10 8 16 58 | 4 23 18 25 29 59 | 4 17 23 27 22 60 | 4 24 25 16 15 61 | 4 15 16 8 7 62 | 4 7 8 3 2 63 | 4 2 3 1 0 64 | 4 0 1 5 4 65 | 4 4 5 14 13 66 | 4 13 14 22 21 67 | 4 21 22 27 26 68 | 4 26 27 29 28 69 | 4 28 29 25 24 70 | 5 6 11 19 20 12 71 | 5 17 9 10 18 23 72 | -------------------------------------------------------------------------------- /PLY_Files/24_elongated_pentagonal_gyrobirotunda_(J43).ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 40 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 42 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -2.035500 -0.316000 -0.033800 11 | -1.879800 0.341500 -0.770900 12 | -1.811900 0.634300 0.182900 13 | -1.648900 -1.194000 -0.316000 14 | -1.581100 -0.901200 0.637800 15 | -1.396900 -0.130100 -1.508700 16 | -1.254200 -1.079100 -1.227600 17 | -1.219200 0.636400 0.988300 18 | -1.173200 0.820200 -1.292100 19 | -1.076500 -0.312600 1.269400 20 | -1.063400 1.293900 0.251100 21 | -0.799700 -1.664300 -0.556000 22 | -0.689900 -1.190600 0.987200 23 | -0.668700 1.408800 -0.660500 24 | -0.547600 -0.600400 -1.748800 25 | -0.343500 0.889800 1.399400 26 | -0.207000 -1.662200 0.249400 27 | -0.200900 -0.059200 1.680500 28 | -0.187700 1.547300 0.662200 29 | -0.185800 0.937200 -1.398300 30 | 0.185800 -0.937200 1.398300 31 | 0.187700 -1.547300 -0.662200 32 | 0.200900 0.059200 -1.680500 33 | 0.207000 1.662200 -0.249400 34 | 0.343500 -0.889800 -1.399400 35 | 0.547600 0.600400 1.748800 36 | 0.668700 -1.408800 0.660500 37 | 0.689900 1.190600 -0.987200 38 | 0.799700 1.664300 0.556000 39 | 1.063400 -1.293900 -0.251100 40 | 1.076500 0.312600 -1.269400 41 | 1.173200 -0.820200 1.292100 42 | 1.219200 -0.636400 -0.988300 43 | 1.254200 1.079100 1.227600 44 | 1.396900 0.130100 1.508700 45 | 1.581100 0.901200 -0.637800 46 | 1.648900 1.194000 0.316000 47 | 1.811900 -0.634300 -0.182900 48 | 1.879800 -0.341500 0.770900 49 | 2.035500 0.316000 0.033800 50 | 3 0 2 1 51 | 3 2 7 10 52 | 3 1 8 5 53 | 3 8 13 19 54 | 3 5 14 6 55 | 3 14 22 24 56 | 3 6 11 3 57 | 3 11 21 16 58 | 3 3 4 0 59 | 3 4 12 9 60 | 3 33 25 34 61 | 3 25 15 17 62 | 3 34 31 38 63 | 3 31 20 26 64 | 3 38 37 39 65 | 3 37 29 32 66 | 3 39 35 36 67 | 3 35 30 27 68 | 3 36 28 33 69 | 3 28 23 18 70 | 4 24 32 29 21 71 | 4 21 29 26 16 72 | 4 16 26 20 12 73 | 4 12 20 17 9 74 | 4 9 17 15 7 75 | 4 7 15 18 10 76 | 4 10 18 23 13 77 | 4 13 23 27 19 78 | 4 19 27 30 22 79 | 4 22 30 32 24 80 | 5 0 1 5 6 3 81 | 5 0 4 9 7 2 82 | 5 1 2 10 13 8 83 | 5 5 8 19 22 14 84 | 5 6 14 24 21 11 85 | 5 3 11 16 12 4 86 | 5 33 34 38 39 36 87 | 5 33 28 18 15 25 88 | 5 34 25 17 20 31 89 | 5 38 31 26 29 37 90 | 5 39 37 32 30 35 91 | 5 36 35 27 23 28 92 | -------------------------------------------------------------------------------- /PLY_Files/25_gyroelongated_square_bicupola_(J45).ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 24 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 34 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -1.342600 -0.293700 0.058400 11 | -1.138700 0.568600 0.521800 12 | -1.059000 0.107300 -0.812700 13 | -0.929000 -0.301000 0.968800 14 | -0.876400 -0.857500 -0.623400 15 | -0.855100 0.969600 -0.349300 16 | -0.787000 -1.072800 0.349000 17 | -0.410300 0.520700 1.205300 18 | -0.384200 1.224400 0.495300 19 | -0.195800 0.172300 -1.313500 20 | -0.093600 -0.846800 1.033200 21 | -0.067600 -1.342700 -0.291000 22 | -0.013300 -0.792500 -1.124200 23 | 0.008000 1.034700 -0.850100 24 | 0.425100 -0.025200 1.269700 25 | 0.465100 0.910800 0.919900 26 | 0.478900 1.289500 -0.005500 27 | 0.625800 -1.116800 0.393200 28 | 0.741200 -0.136700 -1.150700 29 | 0.807800 -0.952600 -0.576400 30 | 0.945100 0.725700 -0.687300 31 | 1.144500 -0.295100 0.629600 32 | 1.184500 0.640900 0.279900 33 | 1.326400 -0.131000 -0.339900 34 | 3 13 16 20 35 | 3 9 18 12 36 | 3 2 4 0 37 | 3 5 1 8 38 | 3 14 15 7 39 | 3 10 3 6 40 | 3 17 11 19 41 | 3 21 23 22 42 | 3 12 11 4 43 | 3 4 11 6 44 | 3 4 6 0 45 | 3 0 6 3 46 | 3 0 3 1 47 | 3 1 3 7 48 | 3 1 7 8 49 | 3 8 7 15 50 | 3 8 15 16 51 | 3 16 15 22 52 | 3 16 22 20 53 | 3 20 22 23 54 | 3 20 23 18 55 | 3 18 23 19 56 | 3 18 19 12 57 | 3 12 19 11 58 | 4 5 13 9 2 59 | 4 13 5 8 16 60 | 4 9 13 20 18 61 | 4 2 9 12 4 62 | 4 5 2 0 1 63 | 4 21 14 10 17 64 | 4 14 21 22 15 65 | 4 10 14 7 3 66 | 4 17 10 6 11 67 | 4 21 17 19 23 68 | -------------------------------------------------------------------------------- /PLY_Files/26_rhombic_dodecahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 14 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 12 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.5 0.353553 0.866025 11 | -0.5 0.707107 0.866025 12 | -0.5 -0.353553 0.866025 13 | 0.5 -0.707107 0.866025 14 | 1 -0.353553 0 15 | 1 0.707107 0 16 | 0 1.06066 0 17 | -1 0.353553 0 18 | -1 -0.707107 0 19 | 0 -1.06066 0 20 | 0.5 -0.707107 -0.866025 21 | 0.5 0.353553 -0.866025 22 | -0.5 0.707107 -0.866025 23 | -0.5 -0.353553 -0.866025 24 | 4 3 0 1 2 25 | 4 3 4 5 0 26 | 4 0 5 6 1 27 | 4 1 7 8 2 28 | 4 2 8 9 3 29 | 4 5 4 10 11 30 | 4 4 3 9 10 31 | 4 1 6 12 7 32 | 4 6 5 11 12 33 | 4 8 7 12 13 34 | 4 9 8 13 10 35 | 4 10 13 12 11 36 | -------------------------------------------------------------------------------- /PLY_Files/27_rhombic_triacontahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 32 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 30 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.309017 0.190983 0.951056 11 | -0.309017 0.5 0.951056 12 | -0.309017 -0.190983 0.951056 13 | 0.309017 -0.5 0.951056 14 | 0.809017 -0.190983 0.587785 15 | 0.809017 0.5 0.587785 16 | 0.190983 0.809017 0.587785 17 | -0.809017 0.190983 0.587785 18 | -0.809017 -0.5 0.587785 19 | -0.190983 -0.809017 0.587785 20 | 1 -0.5 0 21 | 1 0.190983 0 22 | 0.5 -0.809017 0.363271 23 | 0 1.11803 0 24 | -0.5 0.809017 0.363271 25 | 0.618034 0.809017 0 26 | -1 0.5 0 27 | -1 -0.190983 0 28 | 0 -1.11803 0 29 | -0.618034 -0.809017 0 30 | 0.809017 -0.190983 -0.587785 31 | 0.809017 0.5 -0.587785 32 | 0.5 -0.809017 -0.363271 33 | -0.5 0.809017 -0.363271 34 | 0.190983 0.809017 -0.587785 35 | -0.809017 0.190983 -0.587785 36 | -0.809017 -0.5 -0.587785 37 | -0.190983 -0.809017 -0.587785 38 | 0.309017 -0.5 -0.951056 39 | 0.309017 0.190983 -0.951056 40 | -0.309017 0.5 -0.951056 41 | -0.309017 -0.190983 -0.951056 42 | 4 3 0 1 2 43 | 4 3 4 5 0 44 | 4 0 5 6 1 45 | 4 1 7 8 2 46 | 4 2 8 9 3 47 | 4 5 4 10 11 48 | 4 4 3 12 10 49 | 4 1 6 13 14 50 | 4 6 5 15 13 51 | 4 8 7 16 17 52 | 4 7 1 14 16 53 | 4 3 9 18 12 54 | 4 9 8 19 18 55 | 4 10 20 21 11 56 | 4 11 21 15 5 57 | 4 12 18 22 10 58 | 4 13 23 16 14 59 | 4 15 21 24 13 60 | 4 16 25 26 17 61 | 4 17 26 19 8 62 | 4 19 26 27 18 63 | 4 21 20 28 29 64 | 4 20 10 22 28 65 | 4 22 18 27 28 66 | 4 16 23 30 25 67 | 4 23 13 24 30 68 | 4 24 21 29 30 69 | 4 26 25 30 31 70 | 4 27 26 31 28 71 | 4 28 31 30 29 72 | -------------------------------------------------------------------------------- /PLY_Files/28_deltoidal_icositetrahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 26 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 24 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.357407 0.414214 0.933949 11 | -0.276439 0.320377 0.933949 12 | -0.462089 -0.292893 0.933949 13 | 0.357407 -0.414214 0.933949 14 | 0.967538 -0.292893 0.386854 15 | 0.829319 0.320377 0.510794 16 | 0.148043 1 0.386854 17 | -0.610132 0.707107 0.547095 18 | -1.0109 0 0.386854 19 | -0.438374 -0.773459 0.510794 20 | 0.148043 -1 0.386854 21 | 0.819495 0.707107 0 22 | 1.0109 0 -0.386854 23 | 0.667384 -0.773459 0.0876383 24 | -0.148043 1 -0.386854 25 | -0.667384 0.773459 -0.0876383 26 | -0.819495 -0.707107 0 27 | -0.967538 0.292893 -0.386854 28 | -0.148043 -1 -0.386854 29 | 0.438374 0.773459 -0.510794 30 | 0.610132 -0.707107 -0.547095 31 | 0.462089 0.292893 -0.933949 32 | -0.357407 0.414214 -0.933949 33 | -0.829319 -0.320377 -0.510794 34 | -0.357407 -0.414214 -0.933949 35 | 0.276439 -0.320377 -0.933949 36 | 4 3 0 1 2 37 | 4 3 4 5 0 38 | 4 0 6 7 1 39 | 4 1 7 8 2 40 | 4 2 9 10 3 41 | 4 0 5 11 6 42 | 4 5 4 12 11 43 | 4 4 3 10 13 44 | 4 7 6 14 15 45 | 4 2 8 16 9 46 | 4 8 7 15 17 47 | 4 10 9 16 18 48 | 4 11 19 14 6 49 | 4 4 13 20 12 50 | 4 12 21 19 11 51 | 4 10 18 20 13 52 | 4 14 22 17 15 53 | 4 8 17 23 16 54 | 4 16 23 24 18 55 | 4 14 19 21 22 56 | 4 12 20 25 21 57 | 4 20 18 24 25 58 | 4 17 22 24 23 59 | 4 21 25 24 22 60 | -------------------------------------------------------------------------------- /PLY_Files/29_pentagonal_icositetrahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 38 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 24 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.372103 0.237915 0.928191 11 | -0.0598019 0.437593 0.928191 12 | -0.422294 0.129352 0.928191 13 | -0.294624 -0.32903 0.928191 14 | 0.372103 -0.437593 0.928191 15 | 0.854199 -0.32903 0.467639 16 | 0.946515 0.129352 0.379449 17 | 0.684404 0.437593 0.629846 18 | 0.51461 0.80486 0.379449 19 | -0.131055 0.95898 0.504647 20 | -0.711693 0.637272 0.379449 21 | -0.77672 0.237915 0.629846 22 | -1.01777 -0.283472 0.274371 23 | -0.541898 -0.605181 0.629846 24 | -0.279788 -0.913423 0.379449 25 | 0.187472 -0.895975 0.467639 26 | 0.464419 -0.913423 0.0811035 27 | 0.826911 -0.605181 0.0811035 28 | 0.896324 -0.378569 -0.331501 29 | 1.01777 0.283472 -0.274371 30 | 0.634214 0.80486 -0.0811035 31 | 0.279788 0.913423 -0.379449 32 | -0.137281 1.00454 -0.169294 33 | -0.51461 0.80486 -0.379449 34 | -0.826911 0.605181 -0.0811035 35 | -0.988639 0.17889 -0.217242 36 | -0.753817 -0.664205 -0.217242 37 | -0.395006 -0.945514 -0.0811035 38 | 0.131055 -0.95898 -0.504647 39 | 0.592089 -0.496618 -0.677794 40 | 0.422294 -0.129352 -0.928191 41 | 0.584023 0.296939 -0.792053 42 | 0.252499 0.637272 -0.765984 43 | -0.372103 0.437593 -0.928191 44 | -0.812075 0.0207885 -0.629846 45 | -0.684404 -0.437593 -0.629846 46 | -0.267336 -0.528709 -0.840001 47 | -0.0449656 -0.146799 -1.01638 48 | 5 4 0 1 2 3 49 | 5 0 4 5 6 7 50 | 5 1 0 7 8 9 51 | 5 2 1 9 10 11 52 | 5 3 2 11 12 13 53 | 5 4 3 13 14 15 54 | 5 5 4 15 16 17 55 | 5 6 5 17 18 19 56 | 5 7 6 19 20 8 57 | 5 9 8 20 21 22 58 | 5 10 9 22 23 24 59 | 5 11 10 24 25 12 60 | 5 13 12 26 27 14 61 | 5 15 14 27 28 16 62 | 5 17 16 28 29 18 63 | 5 19 18 29 30 31 64 | 5 20 19 31 32 21 65 | 5 22 21 32 33 23 66 | 5 24 23 33 34 25 67 | 5 12 25 34 35 26 68 | 5 27 26 35 36 28 69 | 5 29 28 36 37 30 70 | 5 31 30 37 33 32 71 | 5 34 33 37 36 35 72 | -------------------------------------------------------------------------------- /PLY_Files/30_triakis_octahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 14 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 24 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.281085 1 0.959683 11 | -0.760926 -0.707107 0.959683 12 | 0.281085 -0.171573 0.959683 13 | 1.15844 -0.707107 0.397514 14 | -0.678598 0.414214 0.630372 15 | 0.911457 0.414214 0.164656 16 | -1.15844 0.707107 -0.397514 17 | 0.0482265 -1 0.164656 18 | 0.760926 0.707107 -0.959683 19 | -0.911457 -0.414214 -0.164656 20 | -0.0482265 1 -0.164656 21 | -0.281085 -1 -0.959683 22 | 0.678598 -0.414214 -0.630372 23 | -0.281085 0.171573 -0.959683 24 | 3 2 0 1 25 | 3 2 3 0 26 | 3 0 4 1 27 | 3 1 3 2 28 | 3 0 3 5 29 | 3 1 4 6 30 | 3 4 0 6 31 | 3 3 1 7 32 | 3 3 8 5 33 | 3 5 8 0 34 | 3 6 9 1 35 | 3 0 10 6 36 | 3 1 11 7 37 | 3 7 11 3 38 | 3 8 3 12 39 | 3 0 8 10 40 | 3 1 9 11 41 | 3 9 6 11 42 | 3 6 10 8 43 | 3 3 11 12 44 | 3 12 11 8 45 | 3 6 13 11 46 | 3 8 13 6 47 | 3 8 11 13 48 | -------------------------------------------------------------------------------- /PLY_Files/31_disdyakis_dodecahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 26 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 48 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.215739 0.226541 0.976451 11 | -0.424251 0.195262 0.976451 12 | 0.215739 -0.630602 0.976451 13 | 0.796155 0.195262 0.706811 14 | 0.136046 1 0.615752 15 | -0.575644 -0.38673 0.755245 16 | 0.840257 -0.38673 0.442412 17 | -0.624518 0.613271 0.534039 18 | -0.568077 -0.861929 0.325484 19 | -1.15439 0 0.255053 20 | 0.791384 0.613271 0.221206 21 | 0.652329 -0.861929 0.0558442 22 | 1.15439 0 -0.255053 23 | -0.652329 0.861929 -0.0558442 24 | 0.0488738 -1 0.221206 25 | 0.568077 0.861929 -0.325484 26 | -0.0488738 1 -0.221206 27 | -0.791384 -0.613271 -0.221206 28 | -0.136046 -1 -0.615752 29 | 0.624518 -0.613271 -0.534039 30 | -0.840257 0.38673 -0.442412 31 | -0.215739 0.630602 -0.976451 32 | -0.796155 -0.195262 -0.706811 33 | 0.575644 0.38673 -0.755245 34 | 0.424251 -0.195262 -0.976451 35 | -0.215739 -0.226541 -0.976451 36 | 3 2 0 1 37 | 3 2 3 0 38 | 3 0 4 1 39 | 3 1 5 2 40 | 3 0 3 4 41 | 3 3 2 6 42 | 3 1 4 7 43 | 3 2 5 8 44 | 3 5 1 9 45 | 3 3 10 4 46 | 3 2 11 6 47 | 3 6 12 3 48 | 3 4 13 7 49 | 3 7 9 1 50 | 3 5 9 8 51 | 3 8 14 2 52 | 3 4 10 15 53 | 3 10 3 12 54 | 3 6 11 12 55 | 3 11 2 14 56 | 3 7 13 9 57 | 3 13 4 16 58 | 3 8 9 17 59 | 3 14 8 18 60 | 3 10 12 15 61 | 3 15 16 4 62 | 3 11 19 12 63 | 3 14 18 11 64 | 3 13 20 9 65 | 3 16 21 13 66 | 3 9 22 17 67 | 3 17 18 8 68 | 3 15 12 23 69 | 3 16 15 21 70 | 3 12 19 24 71 | 3 19 11 18 72 | 3 9 20 22 73 | 3 20 13 21 74 | 3 17 22 18 75 | 3 12 24 23 76 | 3 23 21 15 77 | 3 19 18 24 78 | 3 20 21 22 79 | 3 22 25 18 80 | 3 23 24 21 81 | 3 24 18 25 82 | 3 22 21 25 83 | 3 24 25 21 84 | -------------------------------------------------------------------------------- /PLY_Files/32_triakis_icosahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 32 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 60 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.168381 0.618034 0.985722 11 | -0.458605 -0.447214 0.985722 12 | 0.168381 -0.0991064 0.985722 13 | 0.759815 -0.447214 0.777591 14 | -0.440828 0.259464 0.864969 15 | 0.702962 0.259464 0.669586 16 | -0.939182 0.552786 0.440828 17 | 0.114379 -0.740536 0.669586 18 | 1.03226 0.552786 0.104065 19 | -0.871343 -0.160358 0.474204 20 | -0.28276 0.839643 0.474204 21 | 0.0177765 -1.17082 0.104065 22 | 0.979348 -0.160358 0.158068 23 | 0.424141 0.839643 0.353451 24 | -1.03226 -0.552786 -0.104065 25 | -0.0177765 1.17082 -0.104065 26 | -0.528206 -0.778391 0.353451 27 | 0.615584 -0.778391 0.158068 28 | 0.939182 -0.552786 -0.440828 29 | -0.979348 0.160358 -0.158068 30 | -0.615584 0.778391 -0.158068 31 | 0.871343 0.160358 -0.474204 32 | 0.528206 0.778391 -0.353451 33 | -0.759815 0.447214 -0.777591 34 | -0.424141 -0.839643 -0.353451 35 | 0.28276 -0.839643 -0.474204 36 | 0.458605 0.447214 -0.985722 37 | -0.702962 -0.259464 -0.669586 38 | -0.114379 0.740536 -0.669586 39 | -0.168381 -0.618034 -0.985722 40 | 0.440828 -0.259464 -0.864969 41 | -0.168381 0.0991064 -0.985722 42 | 3 2 0 1 43 | 3 2 3 0 44 | 3 0 4 1 45 | 3 1 3 2 46 | 3 0 3 5 47 | 3 1 4 6 48 | 3 4 0 6 49 | 3 3 1 7 50 | 3 3 8 5 51 | 3 5 8 0 52 | 3 6 9 1 53 | 3 0 10 6 54 | 3 1 11 7 55 | 3 7 11 3 56 | 3 8 3 12 57 | 3 0 8 13 58 | 3 1 9 14 59 | 3 9 6 14 60 | 3 6 10 15 61 | 3 10 0 15 62 | 3 11 1 16 63 | 3 3 11 17 64 | 3 3 18 12 65 | 3 12 18 8 66 | 3 8 15 13 67 | 3 13 15 0 68 | 3 14 16 1 69 | 3 6 19 14 70 | 3 15 20 6 71 | 3 16 14 11 72 | 3 11 18 17 73 | 3 17 18 3 74 | 3 8 18 21 75 | 3 15 8 22 76 | 3 14 19 23 77 | 3 19 6 23 78 | 3 6 20 23 79 | 3 20 15 23 80 | 3 11 14 24 81 | 3 18 11 25 82 | 3 18 26 21 83 | 3 21 26 8 84 | 3 8 26 22 85 | 3 22 26 15 86 | 3 23 27 14 87 | 3 15 28 23 88 | 3 14 29 24 89 | 3 24 29 11 90 | 3 11 29 25 91 | 3 25 29 18 92 | 3 26 18 30 93 | 3 15 26 28 94 | 3 14 27 29 95 | 3 27 23 29 96 | 3 23 28 26 97 | 3 18 29 30 98 | 3 30 29 26 99 | 3 23 31 29 100 | 3 26 31 23 101 | 3 26 29 31 102 | -------------------------------------------------------------------------------- /PLY_Files/33_pentakis_dodecahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 32 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 60 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.201774 0.381966 0.979432 11 | -0.429238 -0.0486327 0.979432 12 | 0.201774 -0.295686 0.979432 13 | 0.781406 -0.0486327 0.730026 14 | -0.403548 0.591372 0.758194 15 | -0.239594 -0.745356 0.730026 16 | 0.670364 0.591372 0.536956 17 | 0.508626 -0.745356 0.575884 18 | -0.921987 0.254644 0.480619 19 | 0.099013 0.951367 0.480619 20 | -0.795067 -0.408628 0.536956 21 | 1.03688 0.254644 0.0770708 22 | 0.942559 -0.408628 0.178985 23 | -0.59551 0.872678 0.172336 24 | 0.036873 -1.02666 0.178985 25 | -0.615135 -0.872678 0.0770708 26 | 0.615135 0.872678 -0.0770708 27 | 0.59551 -0.872678 -0.172336 28 | -0.942559 0.408628 -0.178985 29 | -1.03688 -0.254644 -0.0770708 30 | -0.036873 1.02666 -0.178985 31 | 0.795067 0.408628 -0.536956 32 | 0.921987 -0.254644 -0.480619 33 | -0.508626 0.745356 -0.575884 34 | -0.099013 -0.951367 -0.480619 35 | -0.670364 -0.591372 -0.536956 36 | 0.239594 0.745356 -0.730026 37 | 0.403548 -0.591372 -0.758194 38 | -0.781406 0.0486327 -0.730026 39 | 0.429238 0.0486327 -0.979432 40 | -0.201774 0.295686 -0.979432 41 | -0.201774 -0.381966 -0.979432 42 | 3 2 0 1 43 | 3 2 3 0 44 | 3 0 4 1 45 | 3 1 5 2 46 | 3 0 3 6 47 | 3 3 2 7 48 | 3 1 4 8 49 | 3 4 0 9 50 | 3 2 5 7 51 | 3 5 1 10 52 | 3 3 11 6 53 | 3 6 9 0 54 | 3 7 12 3 55 | 3 4 13 8 56 | 3 8 10 1 57 | 3 9 13 4 58 | 3 5 14 7 59 | 3 10 15 5 60 | 3 6 11 16 61 | 3 11 3 12 62 | 3 9 6 16 63 | 3 12 7 17 64 | 3 8 13 18 65 | 3 10 8 19 66 | 3 13 9 20 67 | 3 7 14 17 68 | 3 14 5 15 69 | 3 15 10 19 70 | 3 11 21 16 71 | 3 12 22 11 72 | 3 16 20 9 73 | 3 17 22 12 74 | 3 13 23 18 75 | 3 18 19 8 76 | 3 20 23 13 77 | 3 14 24 17 78 | 3 15 24 14 79 | 3 19 25 15 80 | 3 16 21 26 81 | 3 21 11 22 82 | 3 20 16 26 83 | 3 22 17 27 84 | 3 18 23 28 85 | 3 19 18 28 86 | 3 23 20 26 87 | 3 17 24 27 88 | 3 24 15 25 89 | 3 25 19 28 90 | 3 21 29 26 91 | 3 22 29 21 92 | 3 27 29 22 93 | 3 23 30 28 94 | 3 26 30 23 95 | 3 24 31 27 96 | 3 25 31 24 97 | 3 28 31 25 98 | 3 26 29 30 99 | 3 29 27 31 100 | 3 28 30 31 101 | 3 29 31 30 102 | -------------------------------------------------------------------------------- /PLY_Files/34_tetrakis_hexahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 14 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 24 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.316228 0.707107 0.948683 11 | -0.737865 -0.235702 0.948683 12 | 0.316228 -0.353553 0.948683 13 | 1.1595 -0.235702 0.316228 14 | -0.632456 0.707107 0.474342 15 | 0.105409 -1.17851 0.316228 16 | 0.790569 0.707107 0 17 | -1.1595 0.235702 -0.316228 18 | -0.105409 1.17851 -0.316228 19 | -0.790569 -0.707107 0 20 | 0.737865 0.235702 -0.948683 21 | 0.632456 -0.707107 -0.474342 22 | -0.316228 -0.707107 -0.948683 23 | -0.316228 0.353553 -0.948683 24 | 3 2 0 1 25 | 3 2 3 0 26 | 3 0 4 1 27 | 3 1 5 2 28 | 3 0 3 6 29 | 3 3 2 5 30 | 3 1 4 7 31 | 3 4 0 8 32 | 3 5 1 9 33 | 3 3 10 6 34 | 3 6 8 0 35 | 3 5 11 3 36 | 3 4 8 7 37 | 3 7 9 1 38 | 3 9 12 5 39 | 3 6 10 8 40 | 3 10 3 11 41 | 3 11 5 12 42 | 3 7 8 13 43 | 3 9 7 12 44 | 3 10 13 8 45 | 3 11 12 10 46 | 3 13 12 7 47 | 3 13 10 12 48 | -------------------------------------------------------------------------------- /PLY_Files/35_triakis_tetrahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 8 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 12 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.426401 1.41421 0.904534 11 | -1.13707 -0.942809 0.904534 12 | 0.426401 -0.282843 0.904534 13 | 1.42134 -0.942809 -0.301511 14 | -0.852803 0.565685 0.180907 15 | 0.682242 0.565685 -0.54272 16 | -0.710669 0.471404 -1.50756 17 | -0.255841 -0.848528 -0.54272 18 | 3 2 0 1 19 | 3 2 3 0 20 | 3 0 4 1 21 | 3 1 3 2 22 | 3 0 3 5 23 | 3 1 4 6 24 | 3 4 0 6 25 | 3 3 1 7 26 | 3 3 6 5 27 | 3 5 6 0 28 | 3 6 7 1 29 | 3 7 6 3 30 | -------------------------------------------------------------------------------- /PLY_Files/36_heptagonal_bipyramid.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 9 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 14 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.413300 0.500000 0.952500 11 | -0.568900 0.311700 0.952500 12 | 0.413300 -2.156000 0.952500 13 | 1.084200 0.311700 0.235200 14 | -0.413300 2.156000 -0.952500 15 | -1.122600 -0.111300 0.235200 16 | 0.938700 -0.111300 -0.659100 17 | -0.831000 -0.450500 -0.659100 18 | 0.086400 -0.450500 -1.057200 19 | 3 2 0 1 20 | 3 2 3 0 21 | 3 0 4 1 22 | 3 1 5 2 23 | 3 0 3 4 24 | 3 3 2 6 25 | 3 1 4 5 26 | 3 2 5 7 27 | 3 3 6 4 28 | 3 2 8 6 29 | 3 4 7 5 30 | 3 7 8 2 31 | 3 4 6 8 32 | 3 7 4 8 33 | -------------------------------------------------------------------------------- /PLY_Files/37_enneagonal_trapezohedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 20 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 18 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.801500 0.500000 2.307800 11 | -0.096700 0.939700 2.307800 12 | -0.886500 0.326400 2.307800 13 | 0.801500 -7.790900 2.307800 14 | 2.126100 0.326400 1.261500 15 | 1.506300 0.939700 1.751100 16 | -0.801500 7.790900 -2.307800 17 | -1.666100 0.613300 1.751100 18 | -2.148000 -0.113300 1.261500 19 | 2.467500 -0.113300 -0.341400 20 | 2.392800 0.613300 0.341400 21 | -2.467500 0.113300 0.341400 22 | -2.392800 -0.613300 -0.341400 23 | 1.666100 -0.613300 -1.751100 24 | 2.148000 0.113300 -1.261500 25 | -2.126100 -0.326400 -1.261500 26 | -1.506300 -0.939700 -1.751100 27 | 0.096700 -0.939700 -2.307800 28 | 0.886500 -0.326400 -2.307800 29 | -0.801500 -0.500000 -2.307800 30 | 4 3 0 1 2 31 | 4 0 3 4 5 32 | 4 1 0 5 6 33 | 4 2 1 6 7 34 | 4 3 2 7 8 35 | 4 4 3 9 10 36 | 4 5 4 10 6 37 | 4 7 6 11 8 38 | 4 3 8 11 12 39 | 4 9 3 13 14 40 | 4 10 9 14 6 41 | 4 11 6 15 12 42 | 4 3 12 15 16 43 | 4 13 3 17 18 44 | 4 14 13 18 6 45 | 4 15 6 19 16 46 | 4 3 16 19 17 47 | 4 18 17 19 6 48 | -------------------------------------------------------------------------------- /PLY_Files/38_small_stell_dodecahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 32 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 60 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.000000 0.000000 1.070470 11 | 0.713640 0.000000 0.797880 12 | -0.356820 0.618000 0.797880 13 | -0.356820 -0.618000 0.797880 14 | 0.797880 0.618030 0.356820 15 | 0.797880 -0.618000 0.356820 16 | -0.934170 0.381970 0.356820 17 | 0.136290 1.000000 0.356820 18 | 0.136290 -1.000000 0.356820 19 | -0.934170 -0.381970 0.356820 20 | 0.934170 0.381970 -0.356820 21 | 0.934170 -0.381970 -0.356820 22 | -0.797880 0.618000 -0.356820 23 | -0.136290 1.000000 -0.356820 24 | -0.136290 -1.000000 -0.356820 25 | -0.797880 -0.618030 -0.356820 26 | 0.356820 0.618000 -0.797880 27 | 0.356820 -0.618000 -0.797880 28 | -0.713640 0.000000 -0.797880 29 | 0.000000 0.000000 -1.070470 30 | 0.577351 0.999993 1.511517 31 | -1.154680 0.000002 1.511490 32 | 0.577303 -0.999980 1.511497 33 | 1.868310 0.000015 0.356815 34 | -0.934221 1.618015 0.356837 35 | -0.934124 -1.618038 0.356829 36 | 0.934126 1.618041 -0.356830 37 | 0.934217 -1.618027 -0.356835 38 | -1.868322 -0.000015 -0.356817 39 | 1.154709 0.000000 -1.511529 40 | -0.577367 0.999973 -1.511563 41 | -0.577355 -1.000000 -1.511528 42 | 3 0 1 20 43 | 3 1 4 20 44 | 3 4 7 20 45 | 3 7 2 20 46 | 3 2 0 20 47 | 3 0 2 21 48 | 3 2 6 21 49 | 3 6 9 21 50 | 3 9 3 21 51 | 3 3 0 21 52 | 3 0 3 22 53 | 3 3 8 22 54 | 3 8 5 22 55 | 3 5 1 22 56 | 3 1 0 22 57 | 3 1 5 23 58 | 3 5 11 23 59 | 3 11 10 23 60 | 3 10 4 23 61 | 3 4 1 23 62 | 3 2 7 24 63 | 3 7 13 24 64 | 3 13 12 24 65 | 3 12 6 24 66 | 3 6 2 24 67 | 3 3 9 25 68 | 3 9 15 25 69 | 3 15 14 25 70 | 3 14 8 25 71 | 3 8 3 25 72 | 3 4 10 26 73 | 3 10 16 26 74 | 3 16 13 26 75 | 3 13 7 26 76 | 3 7 4 26 77 | 3 5 8 27 78 | 3 8 14 27 79 | 3 14 17 27 80 | 3 17 11 27 81 | 3 11 5 27 82 | 3 6 12 28 83 | 3 12 18 28 84 | 3 18 15 28 85 | 3 15 9 28 86 | 3 9 6 28 87 | 3 10 11 29 88 | 3 11 17 29 89 | 3 17 19 29 90 | 3 19 16 29 91 | 3 16 10 29 92 | 3 12 13 30 93 | 3 13 16 30 94 | 3 16 19 30 95 | 3 19 18 30 96 | 3 18 12 30 97 | 3 14 15 31 98 | 3 15 18 31 99 | 3 18 19 31 100 | 3 19 17 31 101 | 3 17 14 31 102 | -------------------------------------------------------------------------------- /PLY_Files/39_rhombic_hexecontahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 62 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 60 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.000000 0.000000 1.401263 11 | 0.934167 0.000000 1.044438 12 | -0.467083 0.808973 1.044438 13 | -0.467083 -0.808973 1.044438 14 | 1.044438 0.809012 0.467083 15 | 1.044438 -0.808973 0.467083 16 | -1.222844 0.500005 0.467083 17 | 0.178406 1.309017 0.467083 18 | 0.178406 -1.309017 0.467083 19 | -1.222844 -0.500005 0.467083 20 | 1.222844 0.500005 -0.467083 21 | 1.222844 -0.500005 -0.467083 22 | -1.044438 0.808973 -0.467083 23 | -0.178406 1.309017 -0.467083 24 | -0.178406 -1.309017 -0.467083 25 | -1.044438 -0.809012 -0.467083 26 | 0.467083 0.808973 -1.044438 27 | 0.467083 -0.808973 -1.044438 28 | -0.934167 0.000000 -1.044438 29 | 0.000000 0.000000 -1.401263 30 | 0.356820 0.000000 0.934175 31 | 0.755760 0.309015 0.577350 32 | 0.467085 0.809015 0.356820 33 | -0.178410 0.309000 0.934175 34 | -0.645495 0.499985 0.577350 35 | -0.934170 0.000000 0.356820 36 | -0.178410 -0.309000 0.934175 37 | -0.110265 -0.809000 0.577350 38 | 0.755760 -0.309000 0.577350 39 | 0.866025 -0.499985 0.000000 40 | -0.110265 0.809000 0.577350 41 | 0.000000 1.000000 0.000000 42 | -0.645495 -0.499985 0.577350 43 | -0.866025 -0.500000 0.000000 44 | 0.866025 0.500000 0.000000 45 | 0.645495 0.499985 -0.577350 46 | 0.467085 -0.809000 0.356820 47 | 0.000000 -1.000000 0.000000 48 | 0.110265 -0.809000 -0.577350 49 | -0.866025 0.499985 0.000000 50 | -0.755760 0.309000 -0.577350 51 | 0.934170 0.000000 -0.356820 52 | 0.645495 -0.499985 -0.577350 53 | 0.178410 -0.309000 -0.934175 54 | -0.467085 0.809000 -0.356820 55 | 0.110265 0.809000 -0.577350 56 | 0.178410 0.309000 -0.934175 57 | -0.467085 -0.809015 -0.356820 58 | -0.755760 -0.309015 -0.577350 59 | -0.356820 0.000000 -0.934175 60 | 0.178410 0.309012 0.467087 61 | -0.356821 0.000000 0.467087 62 | 0.178410 -0.309008 0.467087 63 | 0.577349 0.000004 0.110264 64 | -0.288675 0.499991 0.110264 65 | -0.288675 -0.499995 0.110264 66 | 0.288675 0.499995 -0.110264 67 | 0.288675 -0.499991 -0.110264 68 | -0.577349 -0.000004 -0.110264 69 | 0.356821 0.000000 -0.467087 70 | -0.178410 0.309008 -0.467087 71 | -0.178410 -0.309012 -0.467087 72 | 4 50 20 1 21 73 | 4 50 21 4 22 74 | 4 50 22 7 30 75 | 4 50 30 2 23 76 | 4 50 23 0 20 77 | 4 51 23 2 24 78 | 4 51 24 6 25 79 | 4 51 25 9 32 80 | 4 51 32 3 26 81 | 4 51 26 0 23 82 | 4 52 26 3 27 83 | 4 52 27 8 36 84 | 4 52 36 5 28 85 | 4 52 28 1 20 86 | 4 52 20 0 26 87 | 4 53 28 5 29 88 | 4 53 29 11 41 89 | 4 53 41 10 34 90 | 4 53 34 4 21 91 | 4 53 21 1 28 92 | 4 54 30 7 31 93 | 4 54 31 13 44 94 | 4 54 44 12 39 95 | 4 54 39 6 24 96 | 4 54 24 2 30 97 | 4 55 32 9 33 98 | 4 55 33 15 47 99 | 4 55 47 14 37 100 | 4 55 37 8 27 101 | 4 55 27 3 32 102 | 4 56 34 10 35 103 | 4 56 35 16 45 104 | 4 56 45 13 31 105 | 4 56 31 7 22 106 | 4 56 22 4 34 107 | 4 57 36 8 37 108 | 4 57 37 14 38 109 | 4 57 38 17 42 110 | 4 57 42 11 29 111 | 4 57 29 5 36 112 | 4 58 39 12 40 113 | 4 58 40 18 48 114 | 4 58 48 15 33 115 | 4 58 33 9 25 116 | 4 58 25 6 39 117 | 4 59 41 11 42 118 | 4 59 42 17 43 119 | 4 59 43 19 46 120 | 4 59 46 16 35 121 | 4 59 35 10 41 122 | 4 60 44 13 45 123 | 4 60 45 16 46 124 | 4 60 46 19 49 125 | 4 60 49 18 40 126 | 4 60 40 12 44 127 | 4 61 47 15 48 128 | 4 61 48 18 49 129 | 4 61 49 19 43 130 | 4 61 43 17 38 131 | 4 61 38 14 47 132 | -------------------------------------------------------------------------------- /PLY_Files/41_doublehelix.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 36 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 66 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -4.000000 0.000000 -1.306563 11 | -4.000000 0.923880 -0.923880 12 | -4.000000 0.000000 1.306563 13 | -4.000000 -0.923880 0.923880 14 | -3.000000 0.923880 -0.923880 15 | -3.000000 1.306563 -0.000000 16 | -3.000000 -0.923880 0.923880 17 | -3.000000 -1.306563 0.000000 18 | -2.000000 1.306563 -0.000000 19 | -2.000000 0.923880 0.923880 20 | -2.000000 -1.306563 0.000000 21 | -2.000000 -0.923880 -0.923880 22 | -1.000000 0.923880 0.923880 23 | -1.000000 0.000000 1.306563 24 | -1.000000 -0.923880 -0.923880 25 | -1.000000 -0.000000 -1.306563 26 | -0.000000 0.000000 1.306563 27 | -0.000000 -0.923880 0.923880 28 | 0.000000 -0.000000 -1.306563 29 | 0.000000 0.923880 -0.923880 30 | 1.000000 -0.923880 0.923880 31 | 1.000000 -1.306563 0.000000 32 | 1.000000 0.923880 -0.923880 33 | 1.000000 1.306563 -0.000000 34 | 2.000000 -1.306563 0.000000 35 | 2.000000 -0.923880 -0.923880 36 | 2.000000 1.306563 -0.000000 37 | 2.000000 0.923880 0.923880 38 | 3.000000 -0.923880 -0.923880 39 | 3.000000 -0.000000 -1.306563 40 | 3.000000 0.923880 0.923880 41 | 3.000000 0.000000 1.306563 42 | 4.000000 -0.000000 -1.306563 43 | 4.000000 0.923880 -0.923880 44 | 4.000000 0.000000 1.306563 45 | 4.000000 -0.923880 0.923880 46 | 3 4 0 1 47 | 3 4 1 5 48 | 3 5 1 2 49 | 3 5 2 6 50 | 3 6 2 3 51 | 3 6 3 7 52 | 3 7 3 4 53 | 3 3 0 4 54 | 3 8 4 5 55 | 3 8 5 9 56 | 3 9 5 6 57 | 3 9 6 10 58 | 3 10 6 7 59 | 3 10 7 11 60 | 3 11 7 8 61 | 3 7 4 8 62 | 3 12 8 9 63 | 3 12 9 13 64 | 3 13 9 10 65 | 3 13 10 14 66 | 3 14 10 11 67 | 3 14 11 15 68 | 3 15 11 12 69 | 3 11 8 12 70 | 3 16 12 13 71 | 3 16 13 17 72 | 3 17 13 14 73 | 3 17 14 18 74 | 3 18 14 15 75 | 3 18 15 19 76 | 3 19 15 16 77 | 3 15 12 16 78 | 3 20 16 17 79 | 3 20 17 21 80 | 3 21 17 18 81 | 3 21 18 22 82 | 3 22 18 19 83 | 3 22 19 23 84 | 3 23 19 20 85 | 3 19 16 20 86 | 3 24 20 21 87 | 3 24 21 25 88 | 3 25 21 22 89 | 3 25 22 26 90 | 3 26 22 23 91 | 3 26 23 27 92 | 3 27 23 24 93 | 3 23 20 24 94 | 3 28 24 25 95 | 3 28 25 29 96 | 3 29 25 26 97 | 3 29 26 30 98 | 3 30 26 27 99 | 3 30 27 31 100 | 3 31 27 28 101 | 3 27 24 28 102 | 3 32 28 29 103 | 3 32 29 33 104 | 3 33 29 30 105 | 3 33 30 34 106 | 3 34 30 31 107 | 3 34 31 35 108 | 3 35 31 32 109 | 3 31 28 32 110 | 4 3 2 1 0 111 | 4 32 33 34 35 112 | -------------------------------------------------------------------------------- /PLY_Files/42_nested_cube.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 16 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 16 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.707000 0.707000 0.707000 11 | -0.707000 0.707000 0.707000 12 | -0.707000 -0.707000 0.707000 13 | 0.707000 -0.707000 0.707000 14 | 0.707000 -0.707000 -0.707000 15 | 0.707000 0.707000 -0.707000 16 | -0.707000 0.707000 -0.707000 17 | -0.707000 -0.707000 -0.707000 18 | 1.414000 1.414000 1.414000 19 | -1.414000 1.414000 1.414000 20 | -1.414000 -1.414000 1.414000 21 | 1.414000 -1.414000 1.414000 22 | 1.414000 -1.414000 -1.414000 23 | 1.414000 1.414000 -1.414000 24 | -1.414000 1.414000 -1.414000 25 | -1.414000 -1.414000 -1.414000 26 | 4 0 1 6 5 27 | 4 1 2 7 6 28 | 4 2 3 4 7 29 | 4 3 0 5 4 30 | 4 8 13 14 9 31 | 4 9 14 15 10 32 | 4 10 15 12 11 33 | 4 11 12 13 8 34 | 4 1 0 8 9 35 | 4 2 1 9 10 36 | 4 3 2 10 11 37 | 4 0 3 11 8 38 | 4 4 5 13 12 39 | 4 5 6 14 13 40 | 4 6 7 15 14 41 | 4 7 4 12 15 42 | -------------------------------------------------------------------------------- /PLY_Files/43_nested_octahedron.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 12 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 18 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.000000 0.000000 1.000000 11 | 0.000000 0.000000 -1.000000 12 | 0.000000 1.000000 0.000000 13 | 0.000000 -1.000000 0.000000 14 | 1.000000 0.000000 0.000000 15 | -1.000000 0.000000 0.000000 16 | 0.000000 0.000000 2.000000 17 | 0.000000 0.000000 -2.000000 18 | 0.000000 2.000000 0.000000 19 | 0.000000 -2.000000 0.000000 20 | 2.000000 0.000000 0.000000 21 | -2.000000 0.000000 0.000000 22 | 3 0 4 3 23 | 3 0 3 5 24 | 3 0 5 2 25 | 3 1 4 2 26 | 3 1 3 4 27 | 3 1 2 5 28 | 3 6 9 10 29 | 3 6 11 9 30 | 3 6 8 11 31 | 3 7 8 10 32 | 3 7 10 9 33 | 3 7 11 8 34 | 4 0 2 8 6 35 | 4 4 0 6 10 36 | 4 2 4 10 8 37 | 4 1 5 11 7 38 | 4 3 1 7 9 39 | 4 5 3 9 11 40 | -------------------------------------------------------------------------------- /PLY_Files/44_torus.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | comment VCGLIB generated 4 | element vertex 36 5 | property float x 6 | property float y 7 | property float z 8 | element face 72 9 | property list uchar int vertex_indices 10 | end_header 11 | -37.6104 4.33013 -31.3467 12 | -40.1104 7.45058e-007 -31.3467 13 | -42.6104 1.11759e-006 -27.0165 14 | -31.3604 -6.49519 -27.0165 15 | -30.1104 0 -31.3467 16 | -27.6104 9.61481e-016 -27.0165 17 | -31.3604 6.49519 -27.0165 18 | -38.8604 6.49519 -27.0165 19 | -38.8604 -6.49519 -27.0165 20 | -22.6104 9.61481e-016 -27.0165 21 | -28.8604 10.8253 -27.0165 22 | -50.1104 2.23517e-006 -31.3467 23 | -41.3604 10.8253 -27.0165 24 | -42.6104 12.9904 -31.3467 25 | -47.6104 1.86265e-006 -27.0165 26 | -41.3604 -10.8253 -27.0165 27 | -28.8604 -10.8253 -27.0165 28 | -27.6104 12.9904 -31.3467 29 | -47.6104 1.86265e-006 -35.6768 30 | -27.6104 -12.9904 -31.3467 31 | -28.8604 -10.8253 -35.6768 32 | -42.6104 -12.9904 -31.3467 33 | -41.3604 -10.8253 -35.6768 34 | -22.6104 -9.61481e-016 -35.6768 35 | -28.8604 10.8253 -35.6768 36 | -20.1104 -1.65436e-022 -31.3467 37 | -41.3604 10.8253 -35.6768 38 | -42.6104 1.11759e-006 -35.6768 39 | -27.6104 -9.61481e-016 -35.6768 40 | -31.3604 6.49519 -35.6768 41 | -38.8604 6.49519 -35.6768 42 | -38.8604 -6.49519 -35.6768 43 | -32.6104 -4.33013 -31.3467 44 | -37.6104 -4.33013 -31.3467 45 | -31.3604 -6.49519 -35.6768 46 | -32.6104 4.33013 -31.3467 47 | 3 0 35 7 48 | 3 7 35 6 49 | 3 1 0 2 50 | 3 2 0 7 51 | 3 33 1 8 52 | 3 8 1 2 53 | 3 32 33 3 54 | 3 3 33 8 55 | 3 4 32 5 56 | 3 5 32 3 57 | 3 35 4 6 58 | 3 6 4 5 59 | 3 7 6 12 60 | 3 12 6 10 61 | 3 2 7 14 62 | 3 14 7 12 63 | 3 8 2 15 64 | 3 15 2 14 65 | 3 3 8 16 66 | 3 16 8 15 67 | 3 5 3 9 68 | 3 9 3 16 69 | 3 6 5 10 70 | 3 10 5 9 71 | 3 12 10 13 72 | 3 13 10 17 73 | 3 14 12 11 74 | 3 11 12 13 75 | 3 15 14 21 76 | 3 21 14 11 77 | 3 16 15 19 78 | 3 19 15 21 79 | 3 9 16 25 80 | 3 25 16 19 81 | 3 10 9 17 82 | 3 17 9 25 83 | 3 13 17 26 84 | 3 26 17 24 85 | 3 11 13 18 86 | 3 18 13 26 87 | 3 21 11 22 88 | 3 22 11 18 89 | 3 19 21 20 90 | 3 20 21 22 91 | 3 25 19 23 92 | 3 23 19 20 93 | 3 17 25 24 94 | 3 24 25 23 95 | 3 26 24 30 96 | 3 30 24 29 97 | 3 18 26 27 98 | 3 27 26 30 99 | 3 22 18 31 100 | 3 31 18 27 101 | 3 20 22 34 102 | 3 34 22 31 103 | 3 23 20 28 104 | 3 28 20 34 105 | 3 24 23 29 106 | 3 29 23 28 107 | 3 30 29 0 108 | 3 0 29 35 109 | 3 27 30 1 110 | 3 1 30 0 111 | 3 31 27 33 112 | 3 33 27 1 113 | 3 34 31 32 114 | 3 32 31 33 115 | 3 28 34 4 116 | 3 4 34 32 117 | 3 29 28 35 118 | 3 35 28 4 119 | -------------------------------------------------------------------------------- /PLY_Files/45_double_torus.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 44 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 46 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 2.598076 0.500000 1.000000 11 | 1.732051 1.000000 1.000000 12 | 0.866025 0.500000 1.000000 13 | 0.866025 -0.500000 1.000000 14 | 1.732051 -1.000000 1.000000 15 | 2.598076 -0.500000 1.000000 16 | 2.598076 0.500000 -1.000000 17 | 1.732051 1.000000 -1.000000 18 | 0.866025 0.500000 -1.000000 19 | 0.866025 -0.500000 -1.000000 20 | 1.732051 -1.000000 -1.000000 21 | 2.598076 -0.500000 -1.000000 22 | 3.464102 1.000000 1.000000 23 | 1.732051 2.000000 1.000000 24 | 0.000000 1.000000 1.000000 25 | -0.000000 -1.000000 1.000000 26 | 1.732051 -2.000000 1.000000 27 | 3.464102 -1.000000 1.000000 28 | 3.464102 1.000000 -1.000000 29 | 1.732051 2.000000 -1.000000 30 | 0.000000 1.000000 -1.000000 31 | -0.000000 -1.000000 -1.000000 32 | 1.732051 -2.000000 -1.000000 33 | 3.464102 -1.000000 -1.000000 34 | -0.866025 1.000000 -0.500000 35 | -1.732051 1.000000 -1.000000 36 | -2.598076 1.000000 -0.500000 37 | -2.598076 1.000000 0.500000 38 | -1.732051 1.000000 1.000000 39 | -0.866025 1.000000 0.500000 40 | -0.866025 -1.000000 -0.500000 41 | -1.732051 -1.000000 -1.000000 42 | -2.598076 -1.000000 -0.500000 43 | -2.598076 -1.000000 0.500000 44 | -1.732051 -1.000000 1.000000 45 | -0.866025 -1.000000 0.500000 46 | -1.732051 1.000000 -2.000000 47 | -3.464102 1.000000 -1.000000 48 | -3.464102 1.000000 1.000000 49 | -1.732051 1.000000 2.000000 50 | -1.732051 -1.000000 -2.000000 51 | -3.464102 -1.000000 -1.000000 52 | -3.464102 -1.000000 1.000000 53 | -1.732051 -1.000000 2.000000 54 | 4 12 13 1 0 55 | 4 13 14 2 1 56 | 4 14 15 3 2 57 | 4 15 16 4 3 58 | 4 16 17 5 4 59 | 4 17 12 0 5 60 | 4 6 7 19 18 61 | 4 7 8 20 19 62 | 4 8 9 21 20 63 | 4 9 10 22 21 64 | 4 10 11 23 22 65 | 4 11 6 18 23 66 | 4 0 1 7 6 67 | 4 1 2 8 7 68 | 4 2 3 9 8 69 | 4 3 4 10 9 70 | 4 4 5 11 10 71 | 4 5 0 6 11 72 | 4 13 12 18 19 73 | 4 14 13 19 20 74 | 4 16 15 21 22 75 | 4 17 16 22 23 76 | 4 12 17 23 18 77 | 4 20 36 25 24 78 | 4 36 37 26 25 79 | 4 37 38 27 26 80 | 4 38 39 28 27 81 | 4 39 14 29 28 82 | 4 14 20 24 29 83 | 4 30 31 40 21 84 | 4 31 32 41 40 85 | 4 32 33 42 41 86 | 4 33 34 43 42 87 | 4 34 35 15 43 88 | 4 35 30 21 15 89 | 4 24 25 31 30 90 | 4 25 26 32 31 91 | 4 26 27 33 32 92 | 4 27 28 34 33 93 | 4 28 29 35 34 94 | 4 29 24 30 35 95 | 4 36 20 21 40 96 | 4 37 36 40 41 97 | 4 38 37 41 42 98 | 4 39 38 42 43 99 | 4 14 39 43 15 100 | -------------------------------------------------------------------------------- /PLY_Files/46_reinforced_cube.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 8 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 12 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 1.000000 1.000000 1.000000 11 | -1.000000 1.000000 1.000000 12 | -1.000000 -1.000000 1.000000 13 | 1.000000 -1.000000 1.000000 14 | 1.000000 1.000000 -1.000000 15 | -1.000000 1.000000 -1.000000 16 | -1.000000 -1.000000 -1.000000 17 | 1.000000 -1.000000 -1.000000 18 | 3 0 1 3 19 | 3 1 2 3 20 | 3 0 4 1 21 | 3 1 4 5 22 | 3 0 3 4 23 | 3 4 3 7 24 | 3 6 2 1 25 | 3 6 1 5 26 | 3 3 2 6 27 | 3 7 3 6 28 | 3 7 6 4 29 | 3 4 6 5 30 | -------------------------------------------------------------------------------- /PLY_Files/47_ball.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 42 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 80 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -1.32455e-007 0 32.6902 11 | 29.5118 -1.30744e-015 18.2393 12 | -26.4469 -16.3451 -10.1018 13 | -32.6902 1.32455e-007 0 14 | 0 -18.2393 29.5118 15 | -16.3451 -10.1018 26.4469 16 | -16.3451 10.1018 26.4469 17 | 0 18.2393 -29.5118 18 | -29.5118 1.30744e-015 -18.2393 19 | -10.1018 -26.4469 16.3451 20 | -18.2393 -29.5118 -2.47814e-015 21 | 10.1018 -26.4469 -16.3451 22 | -18.2393 29.5118 2.47814e-015 23 | 10.1018 26.4469 -16.3451 24 | 0 32.6902 1.32455e-007 25 | 18.2393 -29.5118 -2.47814e-015 26 | 0 -32.6902 1.32455e-007 27 | 0 -18.2393 -29.5118 28 | -10.1018 -26.4469 -16.3451 29 | -10.1018 26.4469 -16.3451 30 | -16.3451 10.1018 -26.4469 31 | -16.3451 -10.1018 -26.4469 32 | -26.4469 16.3451 10.1018 33 | -10.1018 26.4469 16.3451 34 | -26.4469 -16.3451 10.1018 35 | -29.5118 -1.30744e-015 18.2393 36 | -26.4469 16.3451 -10.1018 37 | 10.1018 26.4469 16.3451 38 | 26.4469 16.3451 10.1018 39 | 18.2393 29.5118 2.47814e-015 40 | 10.1018 -26.4469 16.3451 41 | 16.3451 -10.1018 26.4469 42 | 26.4469 -16.3451 10.1018 43 | 0 18.2393 29.5118 44 | 16.3451 10.1018 26.4469 45 | 16.3451 -10.1018 -26.4469 46 | 16.3451 10.1018 -26.4469 47 | 1.32455e-007 0 -32.6902 48 | 32.6902 1.32455e-007 0 49 | 26.4469 16.3451 -10.1018 50 | 26.4469 -16.3451 -10.1018 51 | 29.5118 1.30744e-015 -18.2393 52 | 3 1 32 38 53 | 3 41 39 38 54 | 3 41 35 36 55 | 3 41 36 39 56 | 3 41 40 35 57 | 3 4 31 0 58 | 3 15 32 30 59 | 3 1 28 34 60 | 3 8 2 3 61 | 3 25 22 3 62 | 3 4 0 5 63 | 3 25 24 5 64 | 3 33 23 6 65 | 3 7 37 20 66 | 3 8 26 20 67 | 3 8 21 2 68 | 3 4 9 30 69 | 3 33 27 23 70 | 3 7 19 13 71 | 3 17 11 18 72 | 3 18 16 10 73 | 3 16 11 15 74 | 3 18 11 16 75 | 3 13 14 29 76 | 3 14 19 12 77 | 3 13 19 14 78 | 3 23 14 12 79 | 3 14 27 29 80 | 3 23 27 14 81 | 3 30 16 15 82 | 3 16 9 10 83 | 3 30 9 16 84 | 3 2 18 10 85 | 3 18 21 17 86 | 3 2 21 18 87 | 3 20 19 7 88 | 3 19 26 12 89 | 3 20 26 19 90 | 3 20 21 8 91 | 3 21 37 17 92 | 3 20 37 21 93 | 3 6 22 25 94 | 3 22 23 12 95 | 3 6 23 22 96 | 3 5 9 4 97 | 3 9 24 10 98 | 3 5 24 9 99 | 3 5 6 25 100 | 3 6 0 33 101 | 3 5 0 6 102 | 3 3 26 8 103 | 3 26 22 12 104 | 3 3 22 26 105 | 3 3 24 25 106 | 3 24 2 10 107 | 3 3 2 24 108 | 3 34 27 33 109 | 3 27 28 29 110 | 3 34 28 27 111 | 3 30 31 4 112 | 3 31 32 1 113 | 3 30 32 31 114 | 3 0 34 33 115 | 3 34 31 1 116 | 3 0 31 34 117 | 3 35 11 17 118 | 3 11 40 15 119 | 3 35 40 11 120 | 3 39 13 29 121 | 3 13 36 7 122 | 3 39 36 13 123 | 3 36 37 7 124 | 3 37 35 17 125 | 3 36 35 37 126 | 3 38 28 1 127 | 3 28 39 29 128 | 3 38 39 28 129 | 3 38 40 41 130 | 3 40 32 15 131 | 3 38 32 40 132 | 133 | -------------------------------------------------------------------------------- /PLY_Files/51_stickman.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 96 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 188 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -1.5 -0.500001 -2 11 | -0.5 -0.500001 -2 12 | 0.5 -0.500001 -2 13 | 1.5 -0.500001 -2 14 | -1.5 -0.5 -1 15 | -0.5 -0.5 -1 16 | 0.5 -0.5 -1 17 | 1.5 -0.5 -1 18 | -1.5 -0.5 1.63397e-07 19 | -0.5 -0.5 1.63397e-07 20 | 0.5 -0.5 1.63397e-07 21 | 1.5 -0.5 1.63397e-07 22 | -1.5 -0.5 1 23 | -0.5 -0.5 1 24 | 0.5 -0.5 1 25 | 1.5 -0.5 1 26 | -1.5 -0.499999 2 27 | -0.5 -0.499999 2 28 | 0.5 -0.499999 2 29 | 1.5 -0.499999 2 30 | -1.5 0.500001 2 31 | -0.5 0.500001 2 32 | 0.5 0.500001 2 33 | 1.5 0.500001 2 34 | -1.5 0.5 1 35 | -0.5 0.5 1 36 | 0.5 0.5 1 37 | 1.5 0.5 1 38 | -1.5 0.5 -1.63397e-07 39 | -0.5 0.5 -1.63397e-07 40 | 0.5 0.5 -1.63397e-07 41 | 1.5 0.5 -1.63397e-07 42 | -1.5 0.5 -1 43 | -0.5 0.5 -1 44 | 0.5 0.5 -1 45 | 1.5 0.5 -1 46 | -1.5 0.499999 -2 47 | -0.5 0.499999 -2 48 | 0.5 0.499999 -2 49 | 1.5 0.499999 -2 50 | -1.673 0.499999 -2.956 51 | -1.844 0.499999 -3.912 52 | -2.013 0.499998 -4.868 53 | -0.674 0.499999 -3.014 54 | -0.851 0.499999 -4.028 55 | -1.029 0.499998 -5.041 56 | -0.674 -0.500001 -3.014 57 | -0.851 -0.500001 -4.028 58 | -1.029 -0.500002 -5.041 59 | -1.673 -0.500001 -2.956 60 | -1.844 -0.500001 -3.912 61 | -2.013 -0.500002 -4.868 62 | 0.674 0.499999 -3.014 63 | 0.851 0.499999 -4.028 64 | 1.029 0.499998 -5.041 65 | 1.673 0.499999 -2.956 66 | 1.844 0.499999 -3.912 67 | 2.013 0.499998 -4.868 68 | 1.673 -0.500001 -2.956 69 | 1.844 -0.500001 -3.912 70 | 2.013 -0.500002 -4.868 71 | 0.674 -0.500001 -3.014 72 | 0.851 -0.500001 -4.028 73 | 1.029 -0.500002 -5.041 74 | 2.453 0.5 1.508 75 | 3.403 0.500001 2.03 76 | 4.348 0.500001 2.567 77 | 2.453 -0.499999 1.508 78 | 3.403 -0.499999 2.03 79 | 4.348 -0.499999 2.567 80 | 2.279 0.500001 2.492 81 | 3.061 0.500001 2.97 82 | 3.848 0.500001 3.433 83 | 2.279 -0.499999 2.492 84 | 3.061 -0.499999 2.97 85 | 3.848 -0.499999 3.433 86 | -2.279 0.5 0.508 87 | -3.061 0.5 0.0299998 88 | -3.848 0.5 -0.433 89 | -2.279 -0.5 0.508 90 | -3.061 -0.5 0.0300002 91 | -3.848 -0.5 -0.433 92 | -2.453 -0.5 1.492 93 | -3.403 -0.5 0.97 94 | -4.348 -0.5 0.433 95 | -2.453 0.5 1.492 96 | -3.403 0.5 0.97 97 | -4.348 0.5 0.433 98 | -0.6 -0.599999 3 99 | 0.6 -0.599999 3 100 | 0.6 0.600001 3 101 | -0.6 0.600001 3 102 | -0.48 -0.479999 4 103 | 0.48 -0.479999 4 104 | 0.48 0.480001 4 105 | -0.48 0.480001 4 106 | 3 0 1 4 107 | 3 4 1 5 108 | 3 1 2 5 109 | 3 5 2 6 110 | 3 2 3 6 111 | 3 6 3 7 112 | 3 4 5 8 113 | 3 8 5 9 114 | 3 5 6 9 115 | 3 9 6 10 116 | 3 6 7 10 117 | 3 10 7 11 118 | 3 8 9 12 119 | 3 12 9 13 120 | 3 9 10 13 121 | 3 13 10 14 122 | 3 10 11 14 123 | 3 14 11 15 124 | 3 12 13 16 125 | 3 16 13 17 126 | 3 13 14 17 127 | 3 17 14 18 128 | 3 14 15 18 129 | 3 18 15 19 130 | 3 16 17 20 131 | 3 20 17 21 132 | 3 92 93 95 133 | 3 95 93 94 134 | 3 18 19 22 135 | 3 22 19 23 136 | 3 20 21 24 137 | 3 24 21 25 138 | 3 21 22 25 139 | 3 25 22 26 140 | 3 22 23 26 141 | 3 26 23 27 142 | 3 24 25 28 143 | 3 28 25 29 144 | 3 25 26 29 145 | 3 29 26 30 146 | 3 26 27 30 147 | 3 30 27 31 148 | 3 28 29 32 149 | 3 32 29 33 150 | 3 29 30 33 151 | 3 33 30 34 152 | 3 30 31 34 153 | 3 34 31 35 154 | 3 32 33 36 155 | 3 36 33 37 156 | 3 33 34 37 157 | 3 37 34 38 158 | 3 34 35 38 159 | 3 38 35 39 160 | 3 42 45 51 161 | 3 51 45 48 162 | 3 37 38 1 163 | 3 1 38 2 164 | 3 54 57 63 165 | 3 63 57 60 166 | 3 3 39 7 167 | 3 7 39 35 168 | 3 7 35 11 169 | 3 11 35 31 170 | 3 11 31 15 171 | 3 15 31 27 172 | 3 69 66 75 173 | 3 75 66 72 174 | 3 36 0 32 175 | 3 32 0 4 176 | 3 32 4 28 177 | 3 28 4 8 178 | 3 28 8 24 179 | 3 24 8 12 180 | 3 78 81 87 181 | 3 87 81 84 182 | 3 37 43 36 183 | 3 36 43 40 184 | 3 43 44 40 185 | 3 40 44 41 186 | 3 44 45 41 187 | 3 41 45 42 188 | 3 37 1 43 189 | 3 43 1 46 190 | 3 43 46 44 191 | 3 44 46 47 192 | 3 44 47 45 193 | 3 45 47 48 194 | 3 1 0 46 195 | 3 46 0 49 196 | 3 46 49 47 197 | 3 47 49 50 198 | 3 47 50 48 199 | 3 48 50 51 200 | 3 0 36 49 201 | 3 49 36 40 202 | 3 49 40 50 203 | 3 50 40 41 204 | 3 50 41 51 205 | 3 51 41 42 206 | 3 38 39 52 207 | 3 52 39 55 208 | 3 52 55 53 209 | 3 53 55 56 210 | 3 53 56 54 211 | 3 54 56 57 212 | 3 39 3 55 213 | 3 55 3 58 214 | 3 55 58 56 215 | 3 56 58 59 216 | 3 56 59 57 217 | 3 57 59 60 218 | 3 2 61 3 219 | 3 3 61 58 220 | 3 61 62 58 221 | 3 58 62 59 222 | 3 62 63 59 223 | 3 59 63 60 224 | 3 2 38 61 225 | 3 61 38 52 226 | 3 61 52 62 227 | 3 62 52 53 228 | 3 62 53 63 229 | 3 63 53 54 230 | 3 15 27 67 231 | 3 67 27 64 232 | 3 67 64 68 233 | 3 68 64 65 234 | 3 68 65 69 235 | 3 69 65 66 236 | 3 27 23 64 237 | 3 64 23 70 238 | 3 64 70 65 239 | 3 65 70 71 240 | 3 65 71 66 241 | 3 66 71 72 242 | 3 23 19 70 243 | 3 70 19 73 244 | 3 70 73 71 245 | 3 71 73 74 246 | 3 71 74 72 247 | 3 72 74 75 248 | 3 15 67 19 249 | 3 19 67 73 250 | 3 67 68 73 251 | 3 73 68 74 252 | 3 68 69 74 253 | 3 74 69 75 254 | 3 24 12 76 255 | 3 76 12 79 256 | 3 76 79 77 257 | 3 77 79 80 258 | 3 77 80 78 259 | 3 78 80 81 260 | 3 16 82 12 261 | 3 12 82 79 262 | 3 82 83 79 263 | 3 79 83 80 264 | 3 83 84 80 265 | 3 80 84 81 266 | 3 16 20 82 267 | 3 82 20 85 268 | 3 82 85 83 269 | 3 83 85 86 270 | 3 83 86 84 271 | 3 84 86 87 272 | 3 20 24 85 273 | 3 85 24 76 274 | 3 85 76 86 275 | 3 86 76 77 276 | 3 86 77 87 277 | 3 87 77 78 278 | 3 17 18 88 279 | 3 88 18 89 280 | 3 18 22 89 281 | 3 89 22 90 282 | 3 22 21 90 283 | 3 90 21 91 284 | 3 21 17 91 285 | 3 91 17 88 286 | 3 88 89 92 287 | 3 92 89 93 288 | 3 89 90 93 289 | 3 93 90 94 290 | 3 90 91 94 291 | 3 94 91 95 292 | 3 91 88 95 293 | 3 95 88 92 -------------------------------------------------------------------------------- /PLY_Files/52_bottle.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 68 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 132 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.376298 0.40487 -0.639018 11 | -0.376298 0.40487 -0.639018 12 | -0.752595 0.40487 0 13 | -0.376298 0.40487 0.639018 14 | 0.376298 0.40487 0.639018 15 | 0.752595 0.40487 0 16 | 0.349169 0.80487 -0.591842 17 | -0.349169 0.80487 -0.591842 18 | -0.697463 0.80487 0 19 | -0.349169 0.80487 0.591842 20 | 0.349169 0.80487 0.591842 21 | 0.697463 0.80487 0 22 | 0.290537 1.24187 -0.493202 23 | -0.290537 1.24187 -0.493202 24 | -0.581074 1.24187 0 25 | -0.290537 1.24187 0.493202 26 | 0.290537 1.24187 0.493202 27 | 0.581074 1.24187 0 28 | 0.336043 1.69287 -0.570398 29 | -0.336043 1.69287 -0.570398 30 | -0.67121 1.69287 0 31 | -0.336043 1.69287 0.570398 32 | 0.336043 1.69287 0.570398 33 | 0.67121 1.69287 0 34 | 0.364921 2.16287 -0.61929 35 | -0.364921 2.16287 -0.61929 36 | -0.728967 2.16287 0 37 | -0.364921 2.16287 0.61929 38 | 0.364921 2.16287 0.61929 39 | 0.728967 2.16287 0 40 | 0.371922 2.56287 -0.634729 41 | -0.378923 2.56287 -0.634729 42 | -0.754346 2.56287 0.00257323 43 | -0.378923 2.56287 0.639876 44 | 0.371922 2.56287 0.639876 45 | 0.747345 2.56287 0.00257323 46 | 0.35792 2.94387 -0.607281 47 | -0.35792 2.94387 -0.607281 48 | -0.715841 2.94387 0 49 | -0.35792 2.94387 0.607281 50 | 0.35792 2.94387 0.607281 51 | 0.714966 2.94387 0 52 | 0.281786 3.36287 -0.477762 53 | -0.281786 3.36287 -0.477762 54 | -0.562696 3.36287 0 55 | -0.281786 3.36287 0.477762 56 | 0.281786 3.36287 0.477762 57 | 0.562696 3.36287 0 58 | 0.175022 3.67387 -0.297636 59 | -0.175022 3.67387 -0.297636 60 | -0.350044 3.67387 0 61 | -0.175022 3.67387 0.297636 62 | 0.175022 3.67387 0.297636 63 | 0.350044 3.67387 0 64 | 0.187274 4.04087 -0.317365 65 | -0.187274 4.04087 -0.317365 66 | -0.373672 4.04087 0 67 | -0.187274 4.04087 0.317365 68 | 0.187274 4.04087 0.317365 69 | 0.373672 4.04087 0 70 | 0.187274 4.40487 -0.317365 71 | -0.187274 4.40487 -0.317365 72 | -0.373672 4.40487 0 73 | -0.187274 4.40487 0.317365 74 | 0.187274 4.40487 0.317365 75 | 0.373672 4.40487 0 76 | 0 0.40487 0 77 | 0 4.40487 0 78 | 3 0 1 6 79 | 3 6 1 7 80 | 3 1 2 7 81 | 3 7 2 8 82 | 3 2 3 8 83 | 3 8 3 9 84 | 3 3 4 9 85 | 3 9 4 10 86 | 3 4 5 10 87 | 3 10 5 11 88 | 3 5 0 11 89 | 3 11 0 6 90 | 3 6 7 12 91 | 3 12 7 13 92 | 3 7 8 13 93 | 3 13 8 14 94 | 3 8 9 14 95 | 3 14 9 15 96 | 3 9 10 15 97 | 3 15 10 16 98 | 3 10 11 16 99 | 3 16 11 17 100 | 3 11 6 17 101 | 3 17 6 12 102 | 3 12 13 18 103 | 3 18 13 19 104 | 3 13 14 19 105 | 3 19 14 20 106 | 3 14 15 20 107 | 3 20 15 21 108 | 3 15 16 21 109 | 3 21 16 22 110 | 3 16 17 22 111 | 3 22 17 23 112 | 3 17 12 23 113 | 3 23 12 18 114 | 3 18 19 24 115 | 3 24 19 25 116 | 3 19 20 25 117 | 3 25 20 26 118 | 3 20 21 26 119 | 3 26 21 27 120 | 3 21 22 27 121 | 3 27 22 28 122 | 3 22 23 28 123 | 3 28 23 29 124 | 3 23 18 29 125 | 3 29 18 24 126 | 3 24 25 30 127 | 3 30 25 31 128 | 3 25 26 31 129 | 3 31 26 32 130 | 3 26 27 32 131 | 3 32 27 33 132 | 3 28 34 27 133 | 3 27 34 33 134 | 3 29 35 28 135 | 3 28 35 34 136 | 3 24 30 29 137 | 3 29 30 35 138 | 3 31 37 30 139 | 3 30 37 36 140 | 3 32 38 31 141 | 3 31 38 37 142 | 3 33 39 32 143 | 3 32 39 38 144 | 3 33 34 39 145 | 3 39 34 40 146 | 3 34 35 40 147 | 3 40 35 41 148 | 3 35 30 41 149 | 3 41 30 36 150 | 3 36 37 42 151 | 3 42 37 43 152 | 3 37 38 43 153 | 3 43 38 44 154 | 3 38 39 44 155 | 3 44 39 45 156 | 3 39 40 45 157 | 3 45 40 46 158 | 3 40 41 46 159 | 3 46 41 47 160 | 3 41 36 47 161 | 3 47 36 42 162 | 3 42 43 48 163 | 3 48 43 49 164 | 3 43 44 49 165 | 3 49 44 50 166 | 3 44 45 50 167 | 3 50 45 51 168 | 3 45 46 51 169 | 3 51 46 52 170 | 3 46 47 52 171 | 3 52 47 53 172 | 3 47 42 53 173 | 3 53 42 48 174 | 3 48 49 54 175 | 3 54 49 55 176 | 3 49 50 55 177 | 3 55 50 56 178 | 3 50 51 56 179 | 3 56 51 57 180 | 3 51 52 57 181 | 3 57 52 58 182 | 3 52 53 58 183 | 3 58 53 59 184 | 3 53 48 59 185 | 3 59 48 54 186 | 3 54 55 60 187 | 3 60 55 61 188 | 3 55 56 61 189 | 3 61 56 62 190 | 3 56 57 62 191 | 3 62 57 63 192 | 3 57 58 63 193 | 3 63 58 64 194 | 3 58 59 64 195 | 3 64 59 65 196 | 3 59 54 65 197 | 3 65 54 60 198 | 3 1 0 66 199 | 3 2 1 66 200 | 3 3 2 66 201 | 3 4 3 66 202 | 3 5 4 66 203 | 3 0 5 66 204 | 3 60 61 67 205 | 3 61 62 67 206 | 3 62 63 67 207 | 3 63 64 67 208 | 3 64 65 67 209 | 3 65 60 67 210 | 211 | -------------------------------------------------------------------------------- /PLY_Files/53_bunny.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 70 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 136 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 1.116 0.246 -0.008 11 | -0.61 -0.43 0.944 12 | 0.197 -0.658 -0.695 13 | -0.092 -0.322 0.399 14 | -0.795 -0.733 0.539 15 | -0.138 0.532 -0.055 16 | -0.32 -0.435 -0.545 17 | 1.382 -0.225 -0.624 18 | 0.437 -0.199 0.696 19 | 0.639 -0.761 -0.499 20 | -0.526 0.542 0.963 21 | 0.335 -0.757 -0.073 22 | 1.107 -0.148 0.163 23 | -0.53 -0.583 -0.112 24 | -0.955 0.162 0.982 25 | -0.128 -0.575 -0.002 26 | 0.37 -0.468 0.383 27 | 0.032 -0.609 -0.964 28 | -0.482 -0.576 -0.885 29 | 1.053 -0.32 -0.803 30 | -0.356 -0.082 1.095 31 | 0.815 -0.281 0.443 32 | -0.373 -0.396 0.421 33 | 1.206 -0.082 -0.293 34 | -1.076 -0.054 0.547 35 | -0.201 -0.012 0.784 36 | 0.868 -0.616 -0.057 37 | -1.008 -0.086 0.16 38 | 1.323 0.091 -0.73 39 | 1.041 0.304 -0.622 40 | 0.789 0.527 -0.765 41 | -0.195 0.003 0.509 42 | -1.094 -0.444 0.492 43 | -0.945 0.123 -0.284 44 | 0.94 0.253 0.242 45 | 0.615 0.157 0.573 46 | -0.826 0.263 0.277 47 | -0.489 0.187 -0.643 48 | -0.968 -0.268 0.933 49 | -0.804 -0.452 0.15 50 | -0.387 0.215 0.779 51 | -0.473 0.389 0.236 52 | 0.359 0.576 0.085 53 | -0.736 0.636 1.169 54 | -0.811 -0.415 -0.323 55 | -0.103 0.404 -0.562 56 | 0.616 0.387 0.39 57 | 0.055 0.795 -0.247 58 | -0.261 0.241 0.484 59 | 1.389 -0.005 -0.414 60 | 0.084 0.377 0.396 61 | -0.187 0.579 -0.966 62 | 0.176 0.704 -0.647 63 | 0.436 0.731 -0.182 64 | 0.902 0.486 -0.07 65 | -0.749 0.429 -0.17 66 | 0.412 0.427 -0.957 67 | -0.088 0.141 -0.894 68 | -0.472 0.255 -0.976 69 | 0.8 0.074 -0.982 70 | -0.577 -0.213 -0.956 71 | 0.656 -0.526 -0.946 72 | -0.842 0.403 0.718 73 | -0.323 0.464 0.972 74 | -0.045 0.314 1.242 75 | 0.861 0.004 0.368 76 | -0.593 0.252 0.711 77 | 0.189 -0.257 -0.917 78 | -0.749 0.088 1.019 79 | -0.566 0.024 1.065 80 | 3 35 21 65 81 | 3 10 68 66 82 | 3 52 56 51 83 | 3 12 23 0 84 | 3 31 8 50 85 | 3 30 54 0 86 | 3 29 23 49 87 | 3 22 4 39 88 | 3 19 26 9 89 | 3 16 11 26 90 | 3 4 38 32 91 | 3 48 31 50 92 | 3 67 57 56 93 | 3 67 56 59 94 | 3 67 59 61 95 | 3 67 61 17 96 | 3 67 17 60 97 | 3 67 60 57 98 | 3 2 11 15 99 | 3 22 39 13 100 | 3 26 21 16 101 | 3 47 42 53 102 | 3 29 30 0 103 | 3 9 26 11 104 | 3 56 57 51 105 | 3 61 2 17 106 | 3 55 41 5 107 | 3 46 35 34 108 | 3 19 23 26 109 | 3 3 15 16 110 | 3 25 64 20 111 | 3 5 47 45 112 | 3 46 50 35 113 | 3 42 46 54 114 | 3 7 28 49 115 | 3 27 32 24 116 | 3 21 26 12 117 | 3 19 61 59 118 | 3 6 37 60 119 | 3 39 4 32 120 | 3 28 7 59 121 | 3 41 36 48 122 | 3 57 60 58 123 | 3 14 38 68 124 | 3 46 42 50 125 | 3 39 44 13 126 | 3 34 12 0 127 | 3 21 8 16 128 | 3 0 54 34 129 | 3 25 22 31 130 | 3 15 13 6 131 | 3 47 5 42 132 | 3 35 8 21 133 | 3 0 23 29 134 | 3 44 37 6 135 | 3 53 54 30 136 | 3 43 62 14 137 | 3 59 56 30 138 | 3 58 37 45 139 | 3 45 51 58 140 | 3 9 61 19 141 | 3 10 66 62 142 | 3 22 25 1 143 | 3 23 12 26 144 | 3 44 33 37 145 | 3 8 31 3 146 | 3 3 16 8 147 | 3 15 6 2 148 | 3 47 53 52 149 | 3 15 22 13 150 | 3 9 11 2 151 | 3 48 50 41 152 | 3 44 39 27 153 | 3 13 44 6 154 | 3 54 46 34 155 | 3 22 3 31 156 | 3 25 20 1 157 | 3 58 51 57 158 | 3 49 23 7 159 | 3 4 22 1 160 | 3 12 34 65 161 | 3 42 5 50 162 | 3 53 42 54 163 | 3 45 52 51 164 | 3 7 23 19 165 | 3 38 4 1 166 | 3 37 55 45 167 | 3 14 24 38 168 | 3 18 6 60 169 | 3 58 60 37 170 | 3 29 59 30 171 | 3 9 2 61 172 | 3 41 55 36 173 | 3 30 52 53 174 | 3 29 28 59 175 | 3 52 45 47 176 | 3 36 24 62 177 | 3 44 27 33 178 | 3 38 24 32 179 | 3 59 7 19 180 | 3 32 27 39 181 | 3 22 15 3 182 | 3 48 40 25 183 | 3 31 48 25 184 | 3 29 49 28 185 | 3 17 2 6 186 | 3 60 17 18 187 | 3 6 18 17 188 | 3 36 55 33 189 | 3 27 36 33 190 | 3 11 16 15 191 | 3 37 33 55 192 | 3 24 14 62 193 | 3 55 5 45 194 | 3 24 36 27 195 | 3 63 25 40 196 | 3 40 48 66 197 | 3 63 64 25 198 | 3 50 8 35 199 | 3 50 5 41 200 | 3 30 56 52 201 | 3 65 34 35 202 | 3 65 21 12 203 | 3 43 10 62 204 | 3 64 69 20 205 | 3 62 66 36 206 | 3 66 48 36 207 | 3 10 43 68 208 | 3 40 68 69 209 | 3 63 40 69 210 | 3 68 43 14 211 | 3 63 69 64 212 | 3 40 66 68 213 | 3 69 1 20 214 | 3 68 38 69 215 | 3 69 38 1 -------------------------------------------------------------------------------- /example_submission_script.py: -------------------------------------------------------------------------------- 1 | import xmlrpc.client 2 | import os 3 | # 4 | # connect to localhost, port 4242 running the RPC server 5 | # 6 | proxy = xmlrpc.client.ServerProxy("http://localhost:4242/") 7 | multicall = xmlrpc.client.MultiCall(proxy) 8 | # 9 | # calc: function on the RPC server to route the origami 10 | # calc(projectName, helicalForm, helicalTurns, plyFile, sequenceFile): 11 | # projectName: short descriptive name, name of the generated folder 12 | # (write "M13.txt" to use default sequence) 13 | # helicalForm: 'Bform', 'Aform', 'Hybrid', 'Twisted' 14 | # helicalTurns: multiplied by 11 (Aforms) or 10.5 (Bform) 15 | # to get minimum edge length 16 | # plyFile: Path to ply file 17 | # sequenceFile: Path to sequence file 18 | # 19 | 20 | ply_dir = "C:/pyDAEDALUSX/PLY_Files" # path to directory containing input geometries 21 | 22 | for geom in os.listdir(ply_dir): 23 | ply = os.path.join(ply_dir, geom) # path to specific geometry file 24 | name = geom # project name 25 | multicall.calc(name,"Aform",4,ply,"M13.txt"); 26 | 27 | result = multicall() 28 | -------------------------------------------------------------------------------- /pyDAEDALUS/23SdomIIV_seq.txt: -------------------------------------------------------------------------------- 1 | GCCCTGGCAGTCAGAGGCGATGAAGGACGTGCTAATCTGCGATAAGCGTCGGTAAGGTGATATGAACCGTTATAACCGGCGATTTCCGAATGGGGAAACCCAGTGTGTTTCGACACACTATCATTAACTGAATCCATAGGTTAATGAGGCGAACCGGGGGAACTGAAACATCTAAGTACCCCGAGGAAAAGAAATCAACCGAGATTCCCCCAGTAGCGGCGAGCGAACGGGGAGCAGCCCAGAGCCTGAATCAGTGTGTGTGTTAGTGGAAGCGTCTGGAAAGGCGCGCGATACAGGGTGACAGCCCCGTACACAAAAATGCACATGCTGTGAGCTCGATGAGTAGGGCGGGACACGTGGTATCCTGTCTGAATATGGGGGGACCATCCTCCAAGGCTAAATACTCCTGACTGACCGATAGTGAACCAGTACCGTGAGGGAAAGGCGAAAAGAACCCCGGCGAGGGGAGTGAAAAAGAACCTGAAACCGTGTACGTACAAGCAGTGGGAGCACGCTTAGGCGTGTGACTGCGTACCTTTTGTATAATGGGTCAGCGACTTATATTCTGTAGCAAGGTTAACCGAATAGGGGAGCCGAAGGGAAACCGAGTCTTAACTGGGCGTTAAGTTGCAGGGTATAGACCCGAAACCCGGTGATCTAGCCATGGGCAGGTTGAAGGTTGGGTAACACTAACTGGAGGACCGAACCGACTAATGTTGAAAAATTAGCGGATGACTTGTGGCTGGGGGTGAAAGGCCAATCAAACCGGGAGATAGCTGGTTCTCCCCGAAAGCTATTTAGGTAGCGCCTCGTGAATTCATCTCCGGGGGTAGAGCACTGTTTCGGCAAGGGGGTCATCCCGACTTACCAACCCGATGCAAACTGCGAATACCGGAGAATGTTATCACGGGAGACACACGGCGGGTGCTAACGTCCGTCGTGAAGAGGGAAACAACCCAGACCGCCAGCTAAGGTCCCAAAGTCATGGTTAAGTGGGAAACGATGTGGGAAGGCCCAGACAGCCAGGATGTTGGCTTAGAAGCAGCCATCATTTAAAGAAAGCGTAATAGCTCACTGGTCGAGTCGGCCTGCGCGGAAGATGTAACGGGGCTAAACCATGCACCGAAGCTGCGGCAGCGACGCTTATGCGTTGTTGGGTAGGGGAGCGTTCTGTAAGCCTGCGAAGGTGTGCTGTGAGGCATGCTGGAGGTATCAGAAGTGCGAATGCTGACATAAGTAACGATAAAGCGGGTGAAAAGCCCGCTCGCCGGAAGACCAAGGGTTCCTGTCCAACGTTAATCGGGGCAGGGTGAGTCGACCCCTAAGGCGAGGCCGAAAGGCGTAGTCGATGGGAAACAGGTTAATATTCCTGTACTTGGTGTTACTGCGAAGGGGGGACGGAGAAGGCTATGTTGGCCGGGCGACGGTTGTCCCGGTTTAAGCGTGTAGGCTGGTTTTCCAGGCAAATCCGGAAAATCAAGGCTGAGGCGTGATGACGAGGCACTACGGTGCTGAAGCAACAAATGCCCTGCTTCCAGGAAAAGCCTCTAAGCATCAGGTAACATCAAATCGTACCCCAAACCGACACAGGTGGTCAGGTAGAGAATACCAAGGCGCTTGAGAGAACTCGGGTGAAGGAACTAGGCAAAATGGTGCCGTAACTTCGGGAGAAGGCACGCTGATATGTAGGTGAAGCGACTTGCTCGTGGAGCTGAAATCAGTCGAAGATACCAGCTGGCTGCAACTGTTTATTAAAAACACAGCACTGTGCAAACACGAAAGTGGACGTATACGGTGTGACGCCTGCCCGGTGCCGGAAGGTTAATTGATGGGGTTAGCGCAAGCGAAGCTCTTGATCGAAGCCCCGGTAAACGGCGGCCGTAACTATAACGGTCCTAAGGTAGCGAAATTCCTTGTCGGGTAAGTTCCGACCTGCACGAATGGCGTAATGATGGCCAGGCTGTCTCCACCCGAGACTCA 2 | -------------------------------------------------------------------------------- /pyDAEDALUS/Automated_Design/ABform Replace/enum_scaf_bases_DX.py: -------------------------------------------------------------------------------- 1 | import math 2 | 3 | 4 | def enum_scaf_bases_DX(route_real, route_vals, edge_length_mat_full): 5 | """ 6 | Enumerates scaffold bases for N-arm DX tile-based cages 7 | Inputs: route_real = row vector of vertices listed in visitation order 8 | (only real vertex IDs) 9 | route_vals = row vector of edge types, where the value at index 10 | j in route_vals is the edge type of the edge between the 11 | vertices route_real[j:j+1), wrapping around at end 12 | edge_length_mat_full = VxV sparse matrix of edge lengths 13 | Outputs: edge_bgn_vec = row vector of scaff nt IDs at which edge begins 14 | edge_fin_vec = row vector of scaff nt IDs at which edge finishes 15 | edge_type_vec = row vector of edge types, corresponding to 16 | edge_length_mat_full 17 | 2 is spanning tree edge: DX edge with 0 scaffold crossovers 18 | -3 is half of a non-spanning tree edge, connecting to vertex at 3' end 19 | -5 is half of a non-spanning tree edge, connecting to vertex at 5' end 20 | ########################################################################## 21 | by Sakul Ratanalert, MIT, Bathe Lab, 2016 22 | 23 | Copyright 2016. Massachusetts Institute of Technology. Rights Reserved. 24 | M.I.T. hereby makes following copyrightable material available to the 25 | public under GNU General Public License, version 2 (GPL-2.0). A copy of 26 | this license is available at https://opensource.org/licenses/GPL-2.0 27 | ########################################################################## 28 | """ 29 | # 30 | # If even: EdgeLength/2-8 31 | # EdgeLength/2-3 32 | # Elif odd: ceil(EdgeLength/2)+2 33 | # floor(EdgeLength/2)-2 34 | # 35 | # # Initialize output variables and length of route 36 | len_route = len(route_real) # length of route 37 | edge_bgn_vec = [] 38 | edge_fin_vec = [] 39 | edge_type_vec = [] 40 | 41 | for route_ID in range(len_route): # for each vertex in the route 42 | edge_bgn = route_real[route_ID] # current edge 43 | 44 | # # Find edge_fin, the other end of the edge 45 | if route_ID == len_route - 1: # if last vertex... 46 | edge_fin = route_real[0] # use first vertex in route. 47 | else: # else use next vertex 48 | edge_fin = route_real[route_ID + 1] 49 | 50 | # # Find edge_before, the vertex visited prior to edge_bgn 51 | if route_ID == 0: # if first vertex... 52 | edge_before = route_real[-1] # use last vertex in route. 53 | else: # else use previous vertex 54 | edge_before = route_real[route_ID - 1] 55 | 56 | # Get edge type: 2 (no scafold crossover) or -1 (half of an edge 57 | # with 1 scaffold crossover) 58 | route_val = route_vals[route_ID] 59 | 60 | len_edge = edge_length_mat_full[edge_bgn][edge_fin]['length'] 61 | 62 | if route_val == 2: # tree edge, edge with no scaff crossovers 63 | len_edge = int(len_edge) # len_edge should be int-able by now 64 | edge_bgn_vec = edge_bgn_vec + ([edge_bgn] * len_edge) 65 | edge_fin_vec = edge_fin_vec + ([edge_fin] * len_edge) 66 | edge_type_vec = edge_type_vec + ([route_vals[route_ID]] * len_edge) 67 | 68 | elif route_val == -1: # half non-tree edge 69 | # # Is it an even or odd multiple of 10.5? Is the length even/odd? 70 | quotient = round(len_edge / 11) 71 | quot_is_odd = quotient % 2 # 1 if odd, 0 if even multiple 72 | 73 | # # Adjust len_edge according to parity of len and quotient 74 | if quot_is_odd: # quotient is odd, scaff cross in middle +/-2 75 | len_edge_adjusted = len_edge 76 | 77 | # if returning half-strand, 3' end, 1 shorter 78 | if edge_before == edge_fin: 79 | route_val = -3 # -3 = returning half-strand 80 | len_half = math.ceil(len_edge_adjusted / 2.0)+2.0 # changed 81 | else: # outgoing half-strand, 5' end, 1 longer 82 | route_val = -5 # -5 = outgoing half-strand 83 | len_half = math.floor(len_edge_adjusted / 2.0)-2.0 # changed 84 | 85 | else: # quotient is even, scaffold 3/8 bp from middle 86 | # len is even, outgoing + returning = len_edge +/-11 87 | # if returning half-strand, 3' end, 1 shorter: 88 | if edge_before == edge_fin: 89 | route_val = -3 # -3 = returning half-strand 90 | 91 | if edge_bgn > edge_fin: # shorter half 92 | len_edge_adjusted = len_edge - 6 93 | else: # longer half 94 | len_edge_adjusted = len_edge + 16 95 | 96 | len_half = math.floor(len_edge_adjusted / 2.0) # changed 97 | 98 | else: # outgoing half-strand, 5' end, 1 longer 99 | route_val = -5 # -5 = outgoing half-strand 100 | 101 | if edge_bgn < edge_fin: # shorter half 102 | len_edge_adjusted = len_edge - 16 103 | else: # longer half 104 | len_edge_adjusted = len_edge + 6 105 | 106 | len_half = math.ceil(len_edge_adjusted / 2.0) 107 | 108 | len_half = int(len_half) # len_half should be int-able by now 109 | 110 | # # Add to edge_{bgn,fin,type}_vec 111 | edge_bgn_vec = edge_bgn_vec + ([edge_bgn] * len_half) 112 | edge_fin_vec = edge_fin_vec + ([edge_fin] * len_half) 113 | edge_type_vec = edge_type_vec + ([route_val] * len_half) 114 | 115 | return [edge_bgn_vec, edge_fin_vec, edge_type_vec] 116 | -------------------------------------------------------------------------------- /pyDAEDALUS/Automated_Design/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/pyDAEDALUS/139f47bb27144a5121d8218a8fa4a61e9ae05832/pyDAEDALUS/Automated_Design/__init__.py -------------------------------------------------------------------------------- /pyDAEDALUS/Automated_Design/adj_scaf_nick_pos.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from copy import deepcopy 3 | from Automated_Design.util import intersect_lists 4 | 5 | 6 | def get_scaf_nick_pos(edges, route_real, edge_length_vec): 7 | first_node_in_route = route_real[0] 8 | second_node_in_route = route_real[1] 9 | min_node = min(first_node_in_route, second_node_in_route) 10 | max_node = max(first_node_in_route, second_node_in_route) 11 | 12 | edges = np.array(edges) 13 | from_nodes = np.where(edges[:, 0] == max_node)[0] 14 | to_nodes = np.where(edges[:, 1] == min_node)[0] 15 | 16 | # TODO: assured to always have 1 result? 17 | first_edge = intersect_lists(from_nodes, to_nodes)[0] 18 | 19 | first_edge_length = edge_length_vec[first_edge] 20 | if first_edge_length < 44: # == 33 21 | scaf_nick_pos = 16 22 | else: 23 | scaf_nick_pos = 19 24 | 25 | return scaf_nick_pos 26 | 27 | 28 | def adj_scaf_nick_pos(scaf_to_edge, scaf_nick_pos, num_bases): 29 | # Adjust the scaffold nick position so that there are scaf_nick_pos bases 30 | # upstream of scaffold nick. 31 | # Inputs: scaf_to_edge = Ex2 cell array, where each row corresponds to one 32 | # edge, 1st column is duplex from low ID to high ID vertex, 33 | # 2nd column is from high to low. Each element is a row vector 34 | # containing the scaffold base IDs in order on that duplex. 35 | # scaf_nick_pos = number of bases upstream of scaffold nick 36 | # num_bases = total number of scaffold bases 37 | # Outputs: scaf_to_edge_adj = scaf_to_edge with adjusted numbering 38 | ########################################################################### 39 | # by Sakul Ratanalert, MIT, Bathe Lab, 2016 40 | # 41 | # Copyright 2016. Massachusetts Institute of Technology. Rights Reserved. 42 | # M.I.T. hereby makes following copyrightable material available to the 43 | # public under GNU General Public License, version 2 (GPL-2.0). A copy of 44 | # this license is available at https://opensource.org/licenses/GPL-2.0 45 | ########################################################################### 46 | 47 | # # Initialize output vector 48 | scaf_to_edge_adj = deepcopy(scaf_to_edge) # row vec 49 | 50 | # # Adjust scaf_to_edge 51 | import numpy as np 52 | shape = np.array(scaf_to_edge_adj, dtype=np).shape # num_sides should be 2 53 | num_edges = shape[0] 54 | num_sides = shape[1] 55 | 56 | for edge_ID in range(num_edges): 57 | for sides_ID in range(num_sides): 58 | scaf_to_edge_adj[edge_ID][sides_ID] = adjust( 59 | scaf_to_edge[edge_ID][sides_ID], scaf_nick_pos, num_bases) 60 | 61 | return scaf_to_edge_adj 62 | 63 | 64 | def adjust(old_num_vec, scaf_nick_pos, num_bases): 65 | # Adjusts numbered vector by shifting by scaf_nick_pos bases, with 66 | # wraparound 67 | # Inputs: old_num_vec = numbered vector to shift 68 | # scaf_nick_pos = number of bases to shift by 69 | # num_bases = total number of bases in scaffold 70 | # Output: new_num_vec = adjusted numbered vector 71 | 72 | # Initialize 73 | new_num_vec = deepcopy(old_num_vec) 74 | 75 | for i in range(len(old_num_vec)): 76 | new_num = (int(old_num_vec[i]) - int(scaf_nick_pos)) % int(num_bases) 77 | 78 | # TODO: Doesn't this always return `new_num`? 79 | if new_num == num_bases: # if is now last base 80 | new_num_vec[i] = num_bases # set to last base 81 | else: 82 | new_num_vec[i] = new_num 83 | 84 | return new_num_vec 85 | -------------------------------------------------------------------------------- /pyDAEDALUS/Automated_Design/assign_scaf_to_edge.py: -------------------------------------------------------------------------------- 1 | from Automated_Design.util import intersect_lists, find 2 | 3 | 4 | def assign_scaf_to_edge(edges, num_edges, edge_type_mat, edge_bgn_vec, 5 | edge_fin_vec, edge_type_vec): 6 | """ 7 | # Assign enumerated scaffold bases to edges. Create vectors for each duplex 8 | # in each edge, identify to which scaffold base each edge base corresponds 9 | # Inputs: edges = Ex2 matrix where each row corresponds to one edge, 10 | # denoting the vertices being connected. 1st column > 2nd column 11 | # num_edges = number of edges, E 12 | # edge_length_mat_full = VxV sparse matrix of edge lengths 13 | # edge_bgn_vec = row vector of scaff nt IDs at which edge begins 14 | # edge_fin_vec = row vector of scaff nt IDs at which edge finishes 15 | # edge_type_vec = row vector of edge types, corresponding to 16 | # edge_length_mat_full 17 | # 2 is spanning tree edge: DX edge with 0 scaffold crossovers 18 | # -3 is half of a non-spanning tree edge, connecting to vertex at 3' end 19 | # -5 is half of a non-spanning tree edge, connecting to vertex at 5' end 20 | # Outputs: scaf_to_edge = Ex2 cell array, where each row corresponds to one 21 | # edge, 1st column is duplex from low ID to high ID vertex, 22 | # 2nd column is from high to low. Each element is a row vector 23 | # containing the scaffold base IDs in order on that duplex. 24 | ########################################################################### 25 | # by Sakul Ratanalert, MIT, Bathe Lab, 2016 26 | # 27 | # Copyright 2016. Massachusetts Institute of Technology. Rights Reserved. 28 | # M.I.T. hereby makes following copyrightable material available to the 29 | # public under GNU General Public License, version 2 (GPL-2.0). A copy of 30 | # this license is available at https://opensource.org/licenses/GPL-2.0 31 | ########################################################################### 32 | """ 33 | 34 | scaf_to_edge = [] 35 | for edge_ID in range(num_edges): # TODO: convert to `for edge in edges:` 36 | # first column low to high, second column high to low 37 | row = [None, None] 38 | for high_to_low in [1, 2]: # for each duplex direction on edge 39 | col = 2 - high_to_low 40 | 41 | if high_to_low == 1: # high to low 5' to 3' 42 | edge_bgn = edges[edge_ID][0] 43 | edge_fin = edges[edge_ID][1] 44 | else: # low_to_high 5' to 3' 45 | edge_bgn = edges[edge_ID][1] 46 | edge_fin = edges[edge_ID][0] 47 | 48 | edge_type = edge_type_mat[edge_bgn][edge_fin]['type'] 49 | if edge_type == 2: # tree edge # TODO: extract into constant 50 | bases = intersect_lists(find(edge_bgn_vec, edge_bgn), 51 | find(edge_fin_vec, edge_fin)) 52 | else: # non-tree edge 53 | bases_all = intersect_lists(find(edge_bgn_vec, edge_bgn), 54 | find(edge_fin_vec, edge_fin)) 55 | bases_5 = intersect_lists(bases_all, find(edge_type_vec, -5)) 56 | bases_3 = intersect_lists(bases_all, find(edge_type_vec, -3)) 57 | 58 | bases = bases_5 + bases_3 59 | 60 | row[col] = bases 61 | 62 | scaf_to_edge.append(row) 63 | 64 | return scaf_to_edge 65 | -------------------------------------------------------------------------------- /pyDAEDALUS/Automated_Design/csv_staples.py: -------------------------------------------------------------------------------- 1 | from os import path 2 | 3 | 4 | def csv_staples(full_file_name, named_stap_seq_list, 5 | results_foldername): # pragma: no cover 6 | """ 7 | Convert staple list to .csv file. File is saved into `results_foldername`. 8 | 9 | Parameters 10 | ---------- 11 | full_file_name : str 12 | String containing full name of file 13 | named_stap_seq_list : list 14 | List with second column identical to stap_seq_list, first column 15 | contains string of staple name. 16 | results_foldername : str 17 | Foldername to save this file into. 18 | 19 | Returns 20 | ------- 21 | None 22 | """ 23 | 24 | full_filename = path.join(results_foldername, 25 | 'staples_' + full_file_name + '.csv') 26 | fid = open(full_filename, 'w') 27 | 28 | num_stap = len(named_stap_seq_list) 29 | 30 | for stap_ID in range(num_stap): 31 | fid.write("{},{}\n".format( 32 | named_stap_seq_list[stap_ID][0], named_stap_seq_list[stap_ID][1])) 33 | 34 | fid.close() 35 | -------------------------------------------------------------------------------- /pyDAEDALUS/Automated_Design/designate_edge_type.py: -------------------------------------------------------------------------------- 1 | from networkx.algorithms.mst import prim_mst 2 | 3 | 4 | def designate_edge_type(full_graph): 5 | """ 6 | Calculate minimum spanning tree, and label the links in the full graph 7 | that are also in the min spanning tree as such: 8 | 1 is non-spanning tree edge: DX edge with 1 scaffold crossover 9 | 2 is spanning tree edge: DX edge with 0 scaffold crossovers 10 | """ 11 | tree = prim_mst(full_graph) 12 | 13 | # networkx undirected networks already implicitly can be considered a 14 | # symmetrical matrix 15 | full_tree = tree 16 | 17 | tree_edges = full_tree.edges() 18 | for edge in full_graph.edges(): 19 | if edge in tree_edges: 20 | type = 2 21 | else: 22 | type = 1 23 | i = edge[0] 24 | j = edge[1] 25 | full_graph[i][j]['type'] = type 26 | 27 | return full_graph 28 | -------------------------------------------------------------------------------- /pyDAEDALUS/Automated_Design/gen_schlegel.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from matplotlib import pyplot as plt 3 | 4 | from Automated_Design.constants import VERMILLION, REDPURPLE, SKYBLUE, WHITE 5 | 6 | 7 | def create_2d_mapping(edges, coordinates, faces): 8 | # Choose Biggest Face: 9 | big_face = max(faces, key=len) 10 | 11 | # Initialize: 12 | num_face_vert = len(big_face) 13 | num_vert = len(coordinates) 14 | 15 | # Initialize xycoord 16 | xycoord = np.zeros(shape=(num_vert, 2)) 17 | num_repeat = 10 * num_vert # number of iterations to calculate xycoord 18 | 19 | # Set big face on unit circle 20 | angle = 2. * np.pi / num_face_vert 21 | 22 | for i in range(num_face_vert): # for each vertex in big face 23 | xycoord[big_face[i]] = [np.cos(angle * i), np.sin(angle * i)] 24 | 25 | # Calculate positions of other vertices through iterative process 26 | for repeat_ID in range(num_repeat): 27 | 28 | for vert_ID in range(num_vert): # For each vertex, 29 | if vert_ID not in big_face: # that's not in big_face, 30 | # move the xycoord of the given vertex to the centerpont 31 | # of all neighboring nodes. 32 | 33 | # # Find vert_ID 34 | find_vert_row, find_vert_col = np.where(edges == vert_ID) 35 | 36 | # # Find neighbors 37 | neighbors = [] 38 | for row, col in zip(find_vert_row, find_vert_col): 39 | find_vert_col_nbr = 1 - col 40 | neighbors.append(edges[row, find_vert_col_nbr]) 41 | neighbors = np.array(neighbors, dtype=np.int) 42 | 43 | # # Get neighbor coords 44 | nbr_coord = xycoord[neighbors, :] 45 | 46 | # # # Find midpoint 47 | num_nbr = len(find_vert_col) 48 | midpt = np.array( 49 | [sum(nbr_coord[:, 0]), sum(nbr_coord[:, 1])] 50 | ) / num_nbr 51 | 52 | # # Store as new xycoord for vert_ID 53 | xycoord[vert_ID, :] = midpt 54 | return xycoord 55 | 56 | 57 | def plot_schlegel(edges, edge_type_graph, xycoord, 58 | schlegel_filename): # pragma: no cover 59 | f = plt.figure(2, figsize=(8, 8)) 60 | f.clf() 61 | plt.xlim((-1.2, 1.2)) 62 | plt.ylim((-1.2, 1.2)) 63 | plt.axis('off') 64 | 65 | for edge in edges: 66 | # Get end vertices 67 | edge_bgn, edge_fin = edge 68 | 69 | # Get end vertex coordinates 70 | x_bgn = xycoord[edge_bgn, 0] 71 | y_bgn = xycoord[edge_bgn, 1] 72 | 73 | x_fin = xycoord[edge_fin, 0] 74 | y_fin = xycoord[edge_fin, 1] 75 | 76 | # Create vectors from beginning vertex to end 77 | x_vec = [x_bgn, x_fin] 78 | y_vec = [y_bgn, y_fin] 79 | 80 | # Only check the edge type if `edge_type_graph` is not None. If it is 81 | # None, default to coloring edges the same as if all edges weren't a 82 | # part of the spanning tree. 83 | if edge_type_graph is not None \ 84 | and (edge_type_graph.edge[edge_bgn][edge_fin]['type'] == 1): 85 | plt.plot(x_vec, y_vec, linestyle='-', color=SKYBLUE, linewidth=5) 86 | else: # if this is a non-tree edge: 87 | plt.plot(x_vec, y_vec, linestyle='-', color=REDPURPLE, linewidth=8) 88 | 89 | # Plot nodes: 90 | plt.plot(xycoord[:, 0], xycoord[:, 1], 'o', 91 | color=VERMILLION, markeredgecolor=VERMILLION, markersize=15) 92 | 93 | # Plot node labels: 94 | for i, node_xy in enumerate(xycoord): 95 | x, y = node_xy 96 | plt.text(x, y, str(i), color=WHITE, fontname='serif', 97 | horizontalalignment='center', verticalalignment='center') 98 | 99 | plt.savefig(schlegel_filename, bbox_inches='tight') 100 | 101 | 102 | def gen_schlegel(edges, coordinates, faces, schlegel_filename, 103 | edge_type_graph=None): # pragma: no cover 104 | """ 105 | Plots vertices and edges in Schlegel diagram, tracing scaffold path in 106 | colored lines. 107 | 108 | The three dimensional structure is mapped onto a 2d surface. This new 109 | surface is visualized, saved, and optionally displayed to screen. Edges 110 | that are a part of the previously calculated spanning tree (that is, the 111 | scaffold path) as marked in `edge_type_graph` are highlighted a different 112 | color. 113 | 114 | Parameters 115 | ---------- 116 | edges : numpy.ndarray 117 | Ex2 matrix where each row corresponds to one edge, denoting the 118 | vertices being connected. 1st column > 2nd column; E = number of edges 119 | coordinates : numpy.ndarray 120 | Vx3 matrix of spatial coordinates of vertices; V = number of vertices. 121 | faces : list 122 | Fx2 cell matrix, where F is the number of faces. The first column 123 | details how many vertices the face has. The second column details the 124 | vertex IDs of the face. 125 | schlegel_filename : str 126 | Filename pointing at where to save the generated plot. 127 | edge_type_graph : networkx.classes.graph.Graph 128 | A graph the links have the 'type' property. That property can have one 129 | of two values: 130 | - 1 is non-spanning tree edge: DX edge with 1 scaffold crossover 131 | - 2 is spanning tree edge: DX edge with 0 scaffold crossovers 132 | 133 | Returns 134 | ------- 135 | xycoords 136 | The 2d mapping used to plot the figure. 137 | """ 138 | 139 | xycoord = create_2d_mapping(edges, coordinates, faces) 140 | 141 | plot_schlegel(edges, edge_type_graph, xycoord, schlegel_filename) 142 | 143 | return xycoord 144 | -------------------------------------------------------------------------------- /pyDAEDALUS/Automated_Design/gen_stap_seq.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | 4 | def gen_stap_seq(staples, scaf_seq, staple_name, scaf_name, 5 | len_scaf_used): 6 | """ 7 | Generate staple sequences from scaffold sequence. 8 | 9 | Parameters 10 | ---------- 11 | staples : list 12 | List with E rows, each row contains another list. Some sub-lists may 13 | be empty as fragments are combined into full staples. Columns 0-5 14 | contain vertex staples, while 6+ contain edge staples. 15 | scaf_seq : str 16 | String of scaffold, length may be longer than 17 | required. First nucleotide will be placed at index 1 18 | short_name : str 19 | string to name staples, may be same as file_name 20 | scaf_name : str 21 | name of scaffold (string) 22 | len_scaf_used : int 23 | length of scaffold used, = 2*sum(edge_length_vec) 24 | 25 | Returns 26 | ------- 27 | stap_seq 28 | List same dimensions as staples, each cell contains string of 29 | staple's sequence 30 | stap_seq_list 31 | stap_seq arranged in a 1-column list 32 | stap_list 33 | staples arranged in the same 1-column list 34 | named_stap_seq_list 35 | List with second column identical to stap_seq_list, first column 36 | contains string of staple name 37 | """ 38 | 39 | # # Initialize outputs 40 | num_edges = len(staples) 41 | 42 | stap_seq = [] 43 | stap_seq_list = [] 44 | stap_list = [] 45 | named_stap_seq_list = [] 46 | 47 | for edge_ID in range(num_edges): 48 | staps_for_this_edge = [] 49 | for stap_ID in range(len(staples[edge_ID])): 50 | stap = staples[edge_ID][stap_ID] # obtain staple index information 51 | seq = u'' # initialize string 52 | for nt_ID in stap: 53 | # # because A binds to T, and G binds to C... 54 | if (nt_ID is None) or (scaf_seq[nt_ID] == 'A'): 55 | seq += 'T' 56 | elif scaf_seq[nt_ID] == 'T': 57 | seq += 'A' 58 | elif scaf_seq[nt_ID] == 'G': 59 | seq += 'C' 60 | elif scaf_seq[nt_ID] == 'C': 61 | seq += 'G' 62 | elif scaf_seq[nt_ID] == 'U': # in case user inputs RNA seq 63 | seq += 'A' 64 | else: 65 | # Error -- unrecognized nucleotide in scaffold sequence 66 | assert False, 'Unrecognized nucleotide in scaffold sequence' 67 | 68 | staps_for_this_edge.append(seq) 69 | 70 | if seq: # if seq exists (may have been blank) 71 | stap_seq_list.append(seq) # store seq in stap_seq_list 72 | 73 | # # Store seq in named_stap_seq_list. First number is Edge ID, 74 | # # Second is 5' end of staple. Third indicates vertex or edge 75 | # # staple. 76 | if stap_ID <= 3: # Vertex staple 77 | named_stap_seq_a = staple_name + '_{}-{}-V'.format( 78 | edge_ID, stap[0]) 79 | else: # Edge staple 80 | named_stap_seq_a = staple_name + '_{}-{}-E'.format( 81 | edge_ID, stap[0]) 82 | named_stap_seq_b = seq 83 | named_stap_seq_list.append( 84 | [named_stap_seq_a, named_stap_seq_b]) 85 | 86 | stap_list.append(stap) # store stap in stap_list 87 | stap_seq.append(staps_for_this_edge) 88 | 89 | named_stap_seq_list.append([None, None]) 90 | 91 | # # Add sequence of scaffold at end 92 | block_size = 10000 93 | if len_scaf_used > block_size: # now for readabiliy, was for excel limits 94 | num_mults = int(np.floor(float(len_scaf_used) / block_size)) 95 | # leftover = len_scaf_used % 10000 96 | for i in range(num_mults): 97 | start_i = i * block_size 98 | end_i = (i + 1) * block_size 99 | named_stap_seq_a = scaf_name + '_({}-{})'.format(start_i, end_i-1) 100 | named_stap_seq_b = scaf_seq[start_i:end_i] 101 | named_stap_seq_list.append([named_stap_seq_a, named_stap_seq_b]) 102 | 103 | start_i = num_mults * block_size 104 | end_i = len_scaf_used 105 | named_stap_seq_a = scaf_name + '_({}-{})'.format(start_i, end_i-1) 106 | named_stap_seq_b = scaf_seq[start_i:end_i] 107 | named_stap_seq_list.append([named_stap_seq_a, named_stap_seq_b]) 108 | 109 | else: 110 | named_stap_seq_a = scaf_name + '_(0-{})'.format(len_scaf_used-1) 111 | named_stap_seq_b = scaf_seq[:len_scaf_used] 112 | named_stap_seq_list.append([named_stap_seq_a, named_stap_seq_b]) 113 | 114 | return [stap_seq, stap_seq_list, stap_list, named_stap_seq_list] 115 | -------------------------------------------------------------------------------- /pyDAEDALUS/Automated_Design/gen_vert_to_face.py: -------------------------------------------------------------------------------- 1 | 2 | def gen_vert_to_face(num_vert, faces): 3 | 4 | vert_to_face = [[] for i in range(num_vert)] # a list of empty lists 5 | for face_ID in range(len(faces)): 6 | face = faces[face_ID] 7 | for vert_face_ID in face: 8 | vert_to_face[vert_face_ID].append(face_ID) 9 | 10 | return vert_to_face 11 | -------------------------------------------------------------------------------- /pyDAEDALUS/Automated_Design/set_routing_direction.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from networkx.algorithms.simple_paths import all_simple_paths 3 | 4 | 5 | def pick_longest_path(paths): 6 | return max(list(paths), key=len) 7 | 8 | 9 | def dereference_pseudonodes_in_path(path_with_pseudonodes, pseudo_vert): 10 | path_with_only_real_nodes = [] 11 | for node in path_with_pseudonodes: 12 | dereferenced = pseudo_vert[node] 13 | path_with_only_real_nodes.append(dereferenced) 14 | return path_with_only_real_nodes 15 | 16 | 17 | def check_direction(route_real, vert_to_face, faces): 18 | """ 19 | Since faces are originally given in counterclockwise order, comparing 20 | a sure-to-be-face-part-of-a-face's order to an arbitrary face will let you 21 | know if the current ordering is clockwise or counterclockwise. Return 22 | False if the former and True if the latter. 23 | """ 24 | 25 | # every face has at least three nodes and three is enough to detect 26 | # direction, so only grab first three 27 | first_face_route = np.array(route_real[0:3]) 28 | 29 | # should just have one overlapping face 30 | vtf_1 = vert_to_face[first_face_route[0]] 31 | vtf_2 = vert_to_face[first_face_route[1]] 32 | vtf_3 = vert_to_face[first_face_route[2]] 33 | first_face_ID = set(vtf_1)\ 34 | .intersection(set(vtf_2))\ 35 | .intersection(set(vtf_3)).pop() 36 | 37 | first_face = faces[first_face_ID] 38 | 39 | check_cycle = first_face + first_face 40 | correct_direction = 0 41 | for check in range(len(first_face)): # faces were given initially as 42 | excerpt_to_check = check_cycle[check:(check + 3)] 43 | distance = np.linalg.norm(first_face_route - excerpt_to_check) 44 | if distance == 0: # that is, if there is a match 45 | correct_direction = correct_direction + 1 46 | 47 | # 0->wrong direction. 1->right direction. 2 or more -> should never 48 | assert correct_direction < 2 49 | 50 | if correct_direction == 0: # routing is clockwise, wrong direction 51 | return False 52 | else: 53 | return True 54 | 55 | 56 | def set_routing_direction(edge_type_mat_allNodes, num_vert, pseudo_vert, 57 | faces, vert_to_face): 58 | """ 59 | Sets routing direction for traversing scaffold route path 60 | 61 | Parameters 62 | ---------- 63 | edge_type_mat_allNodes : networkx.classes.digraph.DiGraph 64 | Network representation including link types. Link types have the 65 | following possible values: 66 | -1 is half of a non-spanning tree edge (one side of scaffold 67 | crossover) 68 | 2 is spanning tree edge: DX edge with 0 scaffold crossovers 69 | num_vert : int 70 | number of vertices, V 71 | pseudo_vert : list 72 | row vector where value j at index i indicate that 73 | vertex i corresponds to vertex j, one of the V real vertices 74 | faces : list 75 | List of lists. The first dimension represents the face. The 76 | second dimension holds the index all nodes creating that face. 77 | vert_to_face : list 78 | List of lists. The first dimension represents the node. The 79 | second dimension holds the index of all faces that node is a part of. 80 | 81 | Returns 82 | ------- 83 | route_real 84 | row vector of vertices listed in visitation order (only real vertex 85 | IDs) 86 | route_vals 87 | row vector of edge types, where the value at index j in route_vals is 88 | the edge type of the edge between the vertices route_real(j:j+1), 89 | wrapping around at end 90 | """ 91 | 92 | # Choose a starting connected node (arbitrary start position). 93 | # Vertices #1-#V (V = number of vertices) are no longer connected in the 94 | # graph network 95 | start_node = 2*num_vert+2 # this node is a pseudo-node at Vertex 1 96 | 97 | next_nodes = edge_type_mat_allNodes.neighbors(start_node) # you'll have 2 98 | # TODO: Convert to generator, since you only need to make the second 99 | # path if the first is the wrong direction? 100 | for next_node in next_nodes: 101 | paths = all_simple_paths( 102 | edge_type_mat_allNodes, start_node, next_node) 103 | 104 | # you'll have one 1-length path because they're neighbors. You want 105 | # the other path that includes all the other nodes: 106 | path = pick_longest_path(paths) 107 | 108 | route_real = path 109 | temp_route_real = route_real + [route_real[0]] 110 | route_vals = [edge_type_mat_allNodes 111 | [temp_route_real[i]][temp_route_real[i+1]]['type'] 112 | for i in range(len(route_real))] 113 | 114 | dereferenced_path = dereference_pseudonodes_in_path(path, pseudo_vert) 115 | route_real = dereferenced_path 116 | 117 | if check_direction(route_real, vert_to_face, faces): 118 | # For consistency, start routing at a tree edge (route_vals = 2) 119 | start_route_list=[] 120 | for i in range(len(route_real)): 121 | if route_real[i] == 0 and route_vals[i] == 2: 122 | start_route_list.append(i) 123 | start_route = start_route_list[0] # in case there are multiple choices 124 | # 125 | # Shift route_real and route_vals to start at start_route 126 | route_real = route_real[start_route:] + route_real[:start_route] 127 | route_vals = route_vals[start_route:] + route_vals[:start_route] 128 | return [route_real, route_vals] 129 | 130 | raise Exception("one of the two above should have returned") 131 | -------------------------------------------------------------------------------- /pyDAEDALUS/Automated_Design/split_edge.py: -------------------------------------------------------------------------------- 1 | def split_edge(edge_type_mat): 2 | """ 3 | Add two nodes for each nontree edge to implement scaffold crossovers. 4 | Added nodes (pseudo-vertices) have a reference vertex (one of the V real 5 | vertices) to maintain relative spatial coordinates among all 6 | vertices. 7 | 8 | Parameters 9 | ---------- 10 | edge_type_mat : networkx.classes.digraph.DiGraph 11 | sparse matrix where 12 | 1 is non-spanning tree edge: DX edge with 1 scaffold crossover 13 | 2 is spanning tree edge: DX edge with 0 scaffold crossovers 14 | Returns 15 | ------- 16 | edge_type_mat_wHalfs 17 | VxV sparse matrix where 18 | -1 is half of a non-spanning tree edge (one side of scaffold 19 | crossover) 20 | 2 is spanning tree edge: DX edge with 0 scaffold crossovers 21 | pseudo_vert 22 | row vector where value j at index i indicate that vertex i corresponds 23 | to vertex j, one of the V real vertices 24 | """ 25 | # # Initialize output variables. These will be augmented from input vars 26 | edge_type_mat_wHalfs = edge_type_mat.copy() 27 | 28 | # Start with known nodes. Pseudo nodes added to graph as needed. 29 | pseudo_vert = edge_type_mat_wHalfs.nodes() 30 | 31 | non_tree_edges = [edge for edge in edge_type_mat.edges(data=True) 32 | if edge[2]['type'] == 1] 33 | 34 | # # ID non-tree edges (value 1), replace with 2 half-edges (value = -1) 35 | # edges = edge_type_mat.edges() 36 | # for i in range(num_vert): 37 | # for j in range(num_vert): 38 | # if (i, j) in edges: 39 | # properties = edge_type_mat[i][j] 40 | # if properties['type'] == 1: 41 | # !! replace the next two lines with the above 6 if you want an exact 42 | # match with the matlab code. (else, order of pseudonodes not assured) 43 | for edge in non_tree_edges: 44 | i, j, properties = edge 45 | # `i` is the node that stays. `j` is cut off and replaced by pseudo 46 | # vert. Since this digraph was built from a graph, a link from 2, 3 47 | # will also have a link from 3, 2. Meaning in the 2, 3 case, you'll 48 | # keep 2 and replace 3. And in teh 3, 2 case, you'll keep 3 and 49 | # replace 2. 50 | 51 | index_of_new_vert = len(pseudo_vert) 52 | properties['type'] = -1 53 | 54 | pseudo_vert.append(j) # vert_list[new_node_id] = original_node_id 55 | edge_type_mat_wHalfs.remove_edge(i, j) 56 | 57 | edge_type_mat_wHalfs.add_node(index_of_new_vert) 58 | edge_type_mat_wHalfs.add_edge(i, index_of_new_vert, 59 | attr_dict=properties) 60 | edge_type_mat_wHalfs.add_edge(index_of_new_vert, i, 61 | attr_dict=properties) 62 | 63 | return edge_type_mat_wHalfs, pseudo_vert 64 | -------------------------------------------------------------------------------- /pyDAEDALUS/Automated_Design/split_vert.py: -------------------------------------------------------------------------------- 1 | from Automated_Design.arrange_neighbors import arrange_neighbors 2 | 3 | 4 | def split_vert(edge_type_mat_wHalfs, pseudo_vert, num_vert, vert_to_face): 5 | """ 6 | Splits vertices into N nodes, where N is the degree of the vertex. 7 | 8 | Parameters 9 | ---------- 10 | edge_type_mat_wHalfs : networkx.classes.digraph.DiGraph 11 | VxV sparse matrix where 12 | -1 is half of a non-spanning tree edge (one side of scaffold 13 | crossover) 14 | 2 is spanning tree edge: DX edge with 0 scaffold crossovers 15 | pseudo_vert : list 16 | row vector where value j at index i indicate that 17 | vertex i corresponds to vertex j, one of the V real vertices 18 | num_vert : int 19 | number of vertices, V 20 | vert_to_face : list 21 | Vx1 cell array, each row has a row vector listing the face IDs the 22 | particular vertex belongs to 23 | 24 | Returns 25 | ------- 26 | edge_type_mat_allNodes 27 | sparse matrix where 28 | -1 is half of a non-spanning tree edge (one side of scaffold 29 | crossover) 30 | 2 is spanning tree edge: DX edge with 0 scaffold crossovers 31 | pseudo_vert 32 | updated to include new pseudo-vertices 33 | """ 34 | 35 | # # Initialize edge_type_mat_allNodes. It will be augmented from _wHalfs 36 | edge_type_mat_allNodes = edge_type_mat_wHalfs.copy() 37 | 38 | # # Initialize face_storage matrix for pseudo nodes added in this function 39 | face_assign = [None] * len(pseudo_vert) 40 | 41 | for vert_ID in range(num_vert): # for each real vertex 42 | neighbors = edge_type_mat_allNodes.in_edges(vert_ID, data=True) 43 | 44 | # # arrange_neighbors identifies which neighboring vertices share faces 45 | # # and adds nodes at the vertex to route the scaffold around the 46 | # # vertex vert_ID accordingly 47 | edge_type_mat_allNodes, pseudo_vert, face_assign = arrange_neighbors( 48 | edge_type_mat_allNodes, pseudo_vert, vert_ID, neighbors, 49 | vert_to_face, face_assign) 50 | return edge_type_mat_allNodes, pseudo_vert 51 | -------------------------------------------------------------------------------- /pyDAEDALUS/Automated_Design/util.py: -------------------------------------------------------------------------------- 1 | import networkx as nx 2 | import numpy as np 3 | 4 | 5 | def generate_graph(num_vert, edges, edge_length_vec): 6 | graph = nx.Graph() 7 | for n in range(num_vert): 8 | graph.add_node(n) 9 | for edge, length in zip(edges, edge_length_vec): 10 | graph.add_edge(edge[0], edge[1], length=float(length)) 11 | # TODO: verify the length property is not used as 'weight' in 12 | # spanning tree alg. 13 | 14 | return graph 15 | 16 | 17 | def intersect_lists(a, b): 18 | # in case `a` and `b` are np.arrays: 19 | if type(a) == np.ndarray: 20 | a = list(a.flatten()) 21 | if type(b) == np.ndarray: 22 | b = list(b.flatten()) 23 | 24 | # TODO: rewrite in a way that preverves order they're seen in? 25 | 26 | thing = set(a).intersection(set(b)) 27 | return sorted(list(thing)) 28 | 29 | 30 | def find(iterable, val): 31 | # A close-enough-to-a-match to matlab's `find` function. Ideally, usage of 32 | # this function will be refactored out. 33 | 34 | # Some times, data comes in as an array. Directly computing array equality 35 | # breaks, so they first need converted over to iterables. 36 | # If arrays, it is assumed the iterable is two dimensions and val is one. 37 | 38 | if type(iterable) == np.ndarray: 39 | iterable = [list(item) for item in iterable] 40 | if type(val) == np.ndarray: 41 | val = list(val) 42 | 43 | return [i for i in range(len(iterable)) if iterable[i] == val] 44 | -------------------------------------------------------------------------------- /pyDAEDALUS/Automated_Design/xx_ConstArchive/constants_20190803.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | 4 | SCAF_SEQ = 'GAGCGCAACGCAATTAATGTGCGCCCTGTAGCGGCGCATTAAGCGCGGCGGGTGTGGTGGTTACGCGCAGCGTGACCGCTACACTTGCCAGCGCCCTAGCGCCCGCTCCTTTCGCTTTCTTCCCTTCCTTTCTCGCCACGTTCGCCGGCTTTCCCCGTCAAGCTCTAAATCGGGGGCTCCCTTTAGGGTTCCGATTTAGTGCTTTACGGCACCTCGACCCCAAAAAACTTGATTAGGGTGATGGTTCACGTAGTGGGCCATCGCCCTGATAGACGGTTTTTCGCCCTTTGACGTTGGAGTCCACGTTCTTTAATAGTGGACTCTTGTTCCAAACTGGAACAACACTCAACCCTATCTCGGTCTATTCTTTTGATTTATAAGGGATTTTGCCGATTTCGGCCTATTGGTTAAAAAATGAGCTGATTTAACAAAAATTTAACGCGAATTACAACCGGGGTACATATGATTGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATATGAGTAAACTTGGTCTGACAGTTACCAATGCTTAATCAGTGAGGCACCTATCTCAGCGATCTGTCTATTTCGTTCATCCATAGTTGCCTGACTCCCCGTCGTGTAGATAACTACGATACGGGAGGGCTTACCATCTGGCCCCAGTGCTGCAATGATACCGCGAGACCCACGCTCACCGGCTCCAGATTTATCAGCAATAAACCAGCCAGCCGGAAGGGCCGAGCGCAtAAGTGGTCCTGCAACTTTATCCGCCTCCATCCAGTCTATTAATTGTTGCCGGGAAGCTAGAGTAAGTAGTTCGCCAGTTAATAGTTTGCGCAACGTTGTTGCCATTGCTACAGGCATCGTGGTGTCACGCTCGTCGTTTGGTATGGCTTCATTCAGCTCCGGTTCCCAACGATCAAGGCGAGTTACATGATCCCCCATGTTGTGCAAAAAAGCGGTTAGCTCCTTCGGTCCTCCGATCGTTGTCAGAAGTAAGTTGGCCGCAGTGTTATCACTCATGGTTATGGCAGCACTGCATAATTCTCTTACTGTCATGCCATCCGTAAGATGCTTTTCTGTGACTGGTGAGTACTCAACCAAGTCATTCTGAGAATAGTGTATGCGGCGACCGAGTTGCTCTTGCCCGGCGTCAATACGGGATAATACCGCGCCACATAGCAGAACTTTAAAAGTGCTCATCATTGGAAAACGTTCTTCGGGGCGAAAACTCTCAAGGATCTTACCGCTGTTGAGATCCAGTTCGATGTAACCCACTCGTGCACCCAACTGATCTTCAGCATCTTTTACTTTCACCAGCGTTTCTGGGTGAGCAAAAACAGGAAGGCAAAATGCCGCAAAAAAGGGAATAAGGGCGACACGGAAATGTTGAATACTCATACTCTTCCTTTTTCAATATTATTGAAGCATTTATCAGGGTTATTGTCTCATGAGCGGATACATATTTGAATGTATTTAGAAAAATAAACAAATAGGGGTTCCGCGCACATTTCCCCGAAAAGTGCCACCTGACGTCTAAGAAACCATTATTATCATGACATTAACCTATAAAAATAGGCGTATCACGAGGCCCTTTCGTCGAATTCGTCGTCGTCCCCTCAAACTCTTGGGTGGAGAGGCTATTCGTTTAAGGTCACATCGCATGTAATTTACTTATTCTCTGTTGTTGAGCCACCCGGGCGCCAGATTTTGTTTAAAGCTTTGTCTCTTAGTTTGTATAGACAGATTCAGAGTGCAAGGTTTCGTTCGCTCGTACCTGGTTTTCCCTGGTTCTTCACAGATAGGATTTGACTTTCTACAACACTTATGCGGCTTCCTACCCGTTTGAAGGCCGATACAGGTGCTGCGCAAAATGCGGGCGAACATAGAGTATCAAAACAACGCCTTCTAATCTAGGAATATAGGGAAGATACGTATTTGCTACCATGCTTTCTTGGGTCATTAACGACCAACCTCTTTTCTTTTAAAGTAGGATTGCACAATGAATGAATACACGTGGTCCGATAACTGACCAAGTAACATGGTTATCACTaGATGTCCGCCAGACGTGTGCAAACCAACCCGGGAGTTACGTCACTAATCCTTCGCTACGTCGTGAAGATATTTACTTGTGAATATCGAGGGTAATAAGATAATAGACTGTGACTAGTATTGCCAGACTGTCGCTACCTGCAACACATAACTATCCTGAGGTTACTGCATAGTACTGATTACACCCGAGTCAAAATTTCTAACTTCTAACATGTACCTAGTAACCAGCTCAATAATTATGTCAGAATATAGCTCTGGGAACCCTCGGACAATTATGATACACGGTATTAATATCTTGCTTGCGTTAGCCACTTCTCATCTTTGGATACCGATTCTATTTTGCATAGCAGTTCCTTTTACACATATAAGAATTTCGCCATAGGTATGCTGCAG' # noqa: E501 5 | 6 | 7 | # Colors: 8 | VERMILLION = tuple(np.array([213, 94, 0], dtype=np.float) / 255) 9 | REDPURPLE = tuple(np.array([204, 121, 167], dtype=np.float) / 255) 10 | SKYBLUE = tuple(np.array([86, 180, 233], dtype=np.float) / 255) 11 | WHITE = tuple(np.array([255, 255, 255], dtype=np.float) / 255) 12 | BLU = tuple(np.array([0, 114, 178], dtype=np.float) / 255) 13 | ORANG = tuple(np.array([230, 159, 0], dtype=np.float) / 255) 14 | -------------------------------------------------------------------------------- /pyDAEDALUS/Automated_Design/xx_ConstArchive/constants_23S5S.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | SCAF_SEQ = 'GGATCAAGCTGAAAATTGAAACACTGAACAACGAAAGTTGTTCGTGAGTCTCTCAAATTTTCGCAACTCTGAAGTGAAACATCTTCGGGTTGTGAGGTTAAGCGACTAAGCGTACACGGTGGATGCCCTGGCAGTCAGAGGCGATGAAGGACGTGCTAATCTGCGATAAGCGTCGGTAAGGTGATATGAACCGTTATAACCGGCGATTTCCGAATGGGGAAACCCAGTGTGTTTCGACACACTATCATTAACTGAATCCATAGGTTAATGAGGCGAACCGGGGGAACTGAAACATCTAAGTACCCCGAGGAAAAGAAATCAACCGAGATTCCCCCAGTAGCGGCGAGCGAACGGGGAGCAGCCCAGAGCCTGAATCAGTGTGTGTGTTAGTGGAAGCGTCTGGAAAGGCGCGCGATACAGGGTGACAGCCCCGTACACAAAAATGCACATGCTGTGAGCTCGATGAGTAGGGCGGGACACGTGGTATCCTGTCTGAATATGGGGGGACCATCCTCCAAGGCTAAATACTCCTGACTGACCGATAGTGAACCAGTACCGTGAGGGAAAGGCGAAAAGAACCCCGGCGAGGGGAGTGAAAAAGAACCTGAAACCGTGTACGTACAAGCAGTGGGAGCACGCTTAGGCGTGTGACTGCGTACCTTTTGTATAATGGGTCAGCGACTTATATTCTGTAGCAAGGTTAACCGAATAGGGGAGCCGAAGGGAAACCGAGTCTTAACTGGGCGTTAAGTTGCAGGGTATAGACCCGAAACCCGGTGATCTAGCCATGGGCAGGTTGAAGGTTGGGTAACACTAACTGGAGGACCGAACCGACTAATGTTGAAAAATTAGCGGATGACTTGTGGCTGGGGGTGAAAGGCCAATCAAACCGGGAGATAGCTGGTTCTCCCCGAAAGCTATTTAGGTAGCGCCTCGTGAATTCATCTCCGGGGGTAGAGCACTGTTTCGGCAAGGGGGTCATCCCGACTTACCAACCCGATGCAAACTGCGAATACCGGAGAATGTTATCACGGGAGACACACGGCGGGTGCTAACGTCCGTCGTGAAGAGGGAAACAACCCAGACCGCCAGCTAAGGTCCCAAAGTCATGGTTAAGTGGGAAACGATGTGGGAAGGCCCAGACAGCCAGGATGTTGGCTTAGAAGCAGCCATCATTTAAAGAAAGCGTAATAGCTCACTGGTCGAGTCGGCCTGCGCGGAAGATGTAACGGGGCTAAACCATGCACCGAAGCTGCGGCAGCGACGCTTATGCGTTGTTGGGTAGGGGAGCGTTCTGTAAGCCTGCGAAGGTGTGCTGTGAGGCATGCTGGAGGTATCAGAAGTGCGAATGCTGACATAAGTAACGATAAAGCGGGTGAAAAGCCCGCTCGCCGGAAGACCAAGGGTTCCTGTCCAACGTTAATCGGGGCAGGGTGAGTCGACCCCTAAGGCGAGGCCGAAAGGCGTAGTCGATGGGAAACAGGTTAATATTCCTGTACTTGGTGTTACTGCGAAGGGGGGACGGAGAAGGCTATGTTGGCCGGGCGACGGTTGTCCCGGTTTAAGCGTGTAGGCTGGTTTTCCAGGCAAATCCGGAAAATCAAGGCTGAGGCGTGATGACGAGGCACTACGGTGCTGAAGCAACAAATGCCCTGCTTCCAGGAAAAGCCTCTAAGCATCAGGTAACATCAAATCGTACCCCAAACCGACACAGGTGGTCAGGTAGAGAATACCAAGGCGCTTGAGAGAACTCGGGTGAAGGAACTAGGCAAAATGGTGCCGTAACTTCGGGAGAAGGCACGCTGATATGTAGGTGAAGCGACTTGCTCGTGGAGCTGAAATCAGTCGAAGATACCAGCTGGCTGCAACTGTTTATTAAAAACACAGCACTGTGCAAACACGAAAGTGGACGTATACGGTGTGACGCCTGCCCGGTGCCGGAAGGTTAATTGATGGGGTTAGCGCAAGCGAAGCTCTTGATCGAAGCCCCGGTAAACGGCGGCCGTAACTATAACGGTCCTAAGGTAGCGAAATTCCTTGTCGGGTAAGTTCCGACCTGCACGAATGGCGTAATGATGGCCAGGCTGTCTCCACCCGAGACTCAGTGAAATTGAACTCGCTGTGAAGATGCAGTGCTGGAGAACTGAGGGGGGCTGCTCCTAGTACGAGAGGACCGGAGTGGACGCATCACTGGTGTTCGGGTTGTCATGCCAATGGCACTGCCCGGTAGCTAAATGCGGAAGAGATAAGTGCTGAAAGCATCTAAGCACGAAACTTGCCCCGAGATGAGTTCTCCCTGACCCTTTAAGGGTCCTGAAGGAACGTTGAAGACGACGACGTTGATAGGCCGGGTGTGTAAGCGCAGCGATGCGTTGAGCTAACCGGTACTAATGAACCGTGAGGCTTAACCTTACAACGCCGAAGCTGTTTTGGCGGATGAGAGAAGATTTTCAGCCTGATACAGATTAAATCAGAACGCAGAAGCGGTCTGATAAAACAGAATTTGCCTGGCGGCCGTAGCGCGGTGGTCCCACCTGACCCCATGCCGAACTCAGAAGTGAAACGCCGTAGCGCCGATGGTAGTGTGGGGTCTCCCCATGCGAGAGTAGGGAACTGCCAGGCACATCTTTTATCTACATC' 4 | 5 | # Colors: 6 | VERMILLION = tuple(np.array([213, 94, 0], dtype=np.float) / 255) 7 | REDPURPLE = tuple(np.array([204, 121, 167], dtype=np.float) / 255) 8 | SKYBLUE = tuple(np.array([86, 180, 233], dtype=np.float) / 255) 9 | WHITE = tuple(np.array([255, 255, 255], dtype=np.float) / 255) 10 | BLU = tuple(np.array([0, 114, 178], dtype=np.float) / 255) 11 | ORANG = tuple(np.array([230, 159, 0], dtype=np.float) / 255) 12 | -------------------------------------------------------------------------------- /pyDAEDALUS/Automated_Design/xx_ConstArchive/constants_EGFP.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | 4 | SCAF_SEQ = 'AAGGGCGAGGAGCTGTTCACCGGGGTGGTGCCCATCCTGGTCGAGCTGGACGGCGACGTAAACGGCCACAAGTTCAGCGTGTCCGGCGAGGGCGAGGGCGATGCCACCTACGGCAAGCTGACCCTGAAGTTCATCTGCACCACCGGCAAGCTGCCCGTGCCCTGGCCCACCCTCGTGACCACCCTGACCTACGGCGTGCAGTGCTTCAGCCGCTACCCCGACCACATGAAGCAGCACGACTTCTTCAAGTCCGCCATGCCCGAAGGCTACGTCCAGGAGCGCACCATCTTCTTCAAGGACGACGGCAACTACAAGACCCGCGCCGAGGTGAAGTTCGAGGGCGACACCCTGGTGAACCGCATCGAGCTGAAGGGCATCGACTTCAAGGAGGACGGCAACATCCTGGGGCACAAGCTGGAGTACAACTACAACAGCCACAACGTCTATATCATGGCCGACAAGCAGAAGAACGGCATCAAGGTGAACTTCAAGATCCGCCACAACATCGAGGACGGCAGCGTGCAGCTCGCCGACCACTACCAGCAGAACACCCCCATCGGCGACGGCCCCGTGCTGCTGCCCGACAACCACTACCTGAGCACCCAGTCCGCCCTGAGCAAAGACCCCAACGAGAAGCGCGATCACATGGTCCTGCTGGAGTTCGTGACCGCCGCCGGGATCACTCTCGGCATGGACGAGCTGTACAAGTAACTGCAGGCATGCAAGCTTGGCGTAATCATGGTCATAGCTGTTTCCTGTGTGAAATTGTTATCCGCTCACAATTCCACACAA' 5 | 6 | 7 | # Colors: 8 | VERMILLION = tuple(np.array([213, 94, 0], dtype=np.float) / 255) 9 | REDPURPLE = tuple(np.array([204, 121, 167], dtype=np.float) / 255) 10 | SKYBLUE = tuple(np.array([86, 180, 233], dtype=np.float) / 255) 11 | WHITE = tuple(np.array([255, 255, 255], dtype=np.float) / 255) 12 | BLU = tuple(np.array([0, 114, 178], dtype=np.float) / 255) 13 | ORANG = tuple(np.array([230, 159, 0], dtype=np.float) / 255) 14 | -------------------------------------------------------------------------------- /pyDAEDALUS/Automated_Design/xx_ConstArchive/constants_old_old.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | 4 | SCAF_SEQ = 'AAGGGCGAGGAGCTGTTCACCGGGGTGGTGCCCATCCTGGTCGAGCTGGACGGCGACGTAAACGGCCACAAGTTCAGCGTGTCCGGCGAGGGCGAGGGCGATGCCACCTACGGCAAGCTGACCCTGAAGTTCATCTGCACCACCGGCAAGCTGCCCGTGCCCTGGCCCACCCTCGTGACCACCCTGACCTACGGCGTGCAGTGCTTCAGCCGCTACCCCGACCACATGAAGCAGCACGACTTCTTCAAGTCCGCCATGCCCGAAGGCTACGTCCAGGAGCGCACCATCTTCTTCAAGGACGACGGCAACTACAAGACCCGCGCCGAGGTGAAGTTCGAGGGCGACACCCTGGTGAACCGCATCGAGCTGAAGGGCATCGACTTCAAGGAGGACGGCAACATCCTGGGGCACAAGCTGGAGTACAACTACAACAGCCACAACGTCTATATCATGGCCGACAAGCAGAAGAACGGCATCAAGGTGAACTTCAAGATCCGCCACAACATCGAGGACGGCAGCGTGCAGCTCGCCGACCACTACCAGCAGAACACCCCCATCGGCGACGGCCCCGTGCTGCTGCCCGACAACCACTACCTGAGCACCCAGTCCGCCCTGAGCAAAGACCCCAACGAGAAGCGCGATCACATGGTCCTGCTGGAGTTCGTGACCGCCGCCGGGATCACTCTCGGCATGGACGAGCTGTACAAGTAACTGCAGGCATGCAAGCTTGGCGTAATCATGGTCATAGCTGTTTCCTGTGTGAAATTGTTATCCGCTCACAATTCCACACAA' 5 | 6 | 7 | # Colors: 8 | VERMILLION = tuple(np.array([213, 94, 0], dtype=np.float) / 255) 9 | REDPURPLE = tuple(np.array([204, 121, 167], dtype=np.float) / 255) 10 | SKYBLUE = tuple(np.array([86, 180, 233], dtype=np.float) / 255) 11 | WHITE = tuple(np.array([255, 255, 255], dtype=np.float) / 255) 12 | BLU = tuple(np.array([0, 114, 178], dtype=np.float) / 255) 13 | ORANG = tuple(np.array([230, 159, 0], dtype=np.float) / 255) 14 | -------------------------------------------------------------------------------- /pyDAEDALUS/Automated_Design/xx_ConstArchive/constants_old_old_old.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | SCAF_SEQ = 'GGATCAAGCTGAAAATTGAAACACTGAACAACGAAAGTTGTTCGTGAGTCTCTCAAATTTTCGCAACTCTGAAGTGAAACATCTTCGGGTTGTGAGGTTAAGCGACTAAGCGTACACGGTGGATGCCCTGGCAGTCAGAGGCGATGAAGGACGTGCTAATCTGCGATAAGCGTCGGTAAGGTGATATGAACCGTTATAACCGGCGATTTCCGAATGGGGAAACCCAGTGTGTTTCGACACACTATCATTAACTGAATCCATAGGTTAATGAGGCGAACCGGGGGAACTGAAACATCTAAGTACCCCGAGGAAAAGAAATCAACCGAGATTCCCCCAGTAGCGGCGAGCGAACGGGGAGCAGCCCAGAGCCTGAATCAGTGTGTGTGTTAGTGGAAGCGTCTGGAAAGGCGCGCGATACAGGGTGACAGCCCCGTACACAAAAATGCACATGCTGTGAGCTCGATGAGTAGGGCGGGACACGTGGTATCCTGTCTGAATATGGGGGGACCATCCTCCAAGGCTAAATACTCCTGACTGACCGATAGTGAACCAGTACCGTGAGGGAAAGGCGAAAAGAACCCCGGCGAGGGGAGTGAAAAAGAACCTGAAACCGTGTACGTACAAGCAGTGGGAGCACGCTTAGGCGTGTGACTGCGTACCTTTTGTATAATGGGTCAGCGACTTATATTCTGTAGCAAGGTTAACCGAATAGGGGAGCCGAAGGGAAACCGAGTCTTAACTGGGCGTTAAGTTGCAGGGTATAGACCCGAAACCCGGTGATCTAGCCATGGGCAGGTTGAAGGTTGGGTAACACTAACTGGAGGACCGAACCGACTAATGTTGAAAAATTAGCGGATGACTTGTGGCTGGGGGTGAAAGGCCAATCAAACCGGGAGATAGCTGGTTCTCCCCGAAAGCTATTTAGGTAGCGCCTCGTGAATTCATCTCCGGGGGTAGAGCACTGTTTCGGCAAGGGGGTCATCCCGACTTACCAACCCGATGCAAACTGCGAATACCGGAGAATGTTATCACGGGAGACACACGGCGGGTGCTAACGTCCGTCGTGAAGAGGGAAACAACCCAGACCGCCAGCTAAGGTCCCAAAGTCATGGTTAAGTGGGAAACGATGTGGGAAGGCCCAGACAGCCAGGATGTTGGCTTAGAAGCAGCCATCATTTAAAGAAAGCGTAATAGCTCACTGGTCGAGTCGGCCTGCGCGGAAGATGTAACGGGGCTAAACCATGCACCGAAGCTGCGGCAGCGACGCTTATGCGTTGTTGGGTAGGGGAGCGTTCTGTAAGCCTGCGAAGGTGTGCTGTGAGGCATGCTGGAGGTATCAGAAGTGCGAATGCTGACATAAGTAACGATAAAGCGGGTGAAAAGCCCGCTCGCCGGAAGACCAAGGGTTCCTGTCCAACGTTAATCGGGGCAGGGTGAGTCGACCCCTAAGGCGAGGCCGAAAGGCGTAGTCGATGGGAAACAGGTTAATATTCCTGTACTTGGTGTTACTGCGAAGGGGGGACGGAGAAGGCTATGTTGGCCGGGCGACGGTTGTCCCGGTTTAAGCGTGTAGGCTGGTTTTCCAGGCAAATCCGGAAAATCAAGGCTGAGGCGTGATGACGAGGCACTACGGTGCTGAAGCAACAAATGCCCTGCTTCCAGGAAAAGCCTCTAAGCATCAGGTAACATCAAATCGTACCCCAAACCGACACAGGTGGTCAGGTAGAGAATACCAAGGCGCTTGAGAGAACTCGGGTGAAGGAACTAGGCAAAATGGTGCCGTAACTTCGGGAGAAGGCACGCTGATATGTAGGTGAAGCGACTTGCTCGTGGAGCTGAAATCAGTCGAAGATACCAGCTGGCTGCAACTGTTTATTAAAAACACAGCACTGTGCAAACACGAAAGTGGACGTATACGGTGTGACGCCTGCCCGGTGCCGGAAGGTTAATTGATGGGGTTAGCGCAAGCGAAGCTCTTGATCGAAGCCCCGGTAAACGGCGGCCGTAACTATAACGGTCCTAAGGTAGCGAAATTCCTTGTCGGGTAAGTTCCGACCTGCACGAATGGCGTAATGATGGCCAGGCTGTCTCCACCCGAGACTCAGTGAAATTGAACTCGCTGTGAAGATGCAGTGCTGGAGAACTGAGGGGGGCTGCTCCTAGTACGAGAGGACCGGAGTGGACGCATCACTGGTGTTCGGGTTGTCATGCCAATGGCACTGCCCGGTAGCTAAATGCGGAAGAGATAAGTGCTGAAAGCATCTAAGCACGAAACTTGCCCCGAGATGAGTTCTCCCTGACCCTTTAAGGGTCCTGAAGGAACGTTGAAGACGACGACGTTGATAGGCCGGGTGTGTAAGCGCAGCGATGCGTTGAGCTAACCGGTACTAATGAACCGTGAGGCTTAACCTTACAACGCCGAAGCTGTTTTGGCGGATGAGAGAAGATTTTCAGCCTGATACAGATTAAATCAGAACGCAGAAGCGGTCTGATAAAACAGAATTTGCCTGGCGGCCGTAGCGCGGTGGTCCCACCTGACCCCATGCCGAACTCAGAAGTGAAACGCCGTAGCGCCGATGGTAGTGTGGGGTCTCCCCATGCGAGAGTAGGGAACTGCCAGGCACATCTTTTATCTACATC' 4 | 5 | # Colors: 6 | VERMILLION = tuple(np.array([213, 94, 0], dtype=np.float) / 255) 7 | REDPURPLE = tuple(np.array([204, 121, 167], dtype=np.float) / 255) 8 | SKYBLUE = tuple(np.array([86, 180, 233], dtype=np.float) / 255) 9 | WHITE = tuple(np.array([255, 255, 255], dtype=np.float) / 255) 10 | BLU = tuple(np.array([0, 114, 178], dtype=np.float) / 255) 11 | ORANG = tuple(np.array([230, 159, 0], dtype=np.float) / 255) 12 | -------------------------------------------------------------------------------- /pyDAEDALUS/Automated_Design/xx_ConstArchive/constants_rPB66rRNA: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | 4 | SCAF_SEQ = 'GCCCTGGCAGTCAGAGGCGATGAAGGACGTGCTAATCTGCGATAAGCGTCGGTAAGGTGATATGAACCGTTATAACCGGCGATTTCCGAATGGGGAAACCCAGTGTGTTTCGACACACTATCATTAACTGAATCCATAGGTTAATGAGGCGAACCGGGGGAACTGAAACATCTAAGTACCCCGAGGAAAAGAAATCAACCGAGATTCCCCCAGTAGCGGCGAGCGAACGGGGAGCAGCCCAGAGCCTGAATCAGTGTGTGTGTTAGTGGAAGCGTCTGGAAAGGCGCGCGATACAGGGTGACAGCCCCGTACACAAAAATGCACATGCTGTGAGCTCGATGAGTAGGGCGGGACACGTGGTATCCTGTCTGAATATGGGGGGACCATCCTCCAAGGCTAAATACTCCTGACTGACCGATAGTGAACCAGTACCGTGAGGGAAAGGCGAAAAGAACCCCGGCGAGGGGAGTGAAAAAGAACCTGAAACCGTGTACGTACAAGCAGTGGGAGCACGCTTAGGCGTGTGACTGCGTACCTTTTGTATAATGGGTCAGCGACTTATATTCTGTAGCAAGGTTAACCGAATAGGGGAGCCGAAGGGAAACCGAGTCTTAACTGGGCGTTAAGTTGCAGGGTATAGACCCGAAACCCGGTGATCTAGCCATGGGCAGGTTGAAGGTTGGGTAACACTAACTGGAGGACCGAACCGACTAATGTTGAAAAATTAGCGGATGACTTGTGGCTGGGGGTGAAAGGCCAATCAAACCGGGAGATAGCTGGTTCTCCCCGAAAGCTATTTAGGTAGCGCCTCGTGAATTCATCTCCGGGGGTAGAGCACTGTTTCGGCAAGGGGGTCATCCCGACTTACCAACCCGATGCAAACTGCGAATACCGGAGAATGTTATCACGGGAGACACACGGCGGGTGCTAACGTCCGTCGTGAAGAGGGAAACAACCCAGACCGCCAGCTAAGGTCCCAAAGTCATGGTTAAGTGGGAAACGATGTGGGAAGGCCCAGACAGCCAGGATGTTGGCTTAGAAGCAGCCATCATTTAAAGAAAGCGTAATAGCTCACTGGTCGAGTCGGCCTGCGCGGAAGATGTAACGGGGCTAAACCATGCACCGAAGCTGCGGCAGCGACGCTTATGCGTTGTTGGGTAGGGGAGCGTTCTGTAAGCCTGCGAAGGTGTGCTGTGAGGCATGCTGGAGGTATCAGAAGTGCGAATGCTGACATAAGTAACGATAAAGCGGGTGAAAAGCCCGCTCGCCGGAAGACCAAGGGTTCCTGTCCAACGTTAATCGGGGCAGGGTGAGTCGACCCCTAAGGCGAGGCCGAAAGGCGTAGTCGATGGGAAACAGGTTAATATTCCTGTACTTGGTGTTACTGCGAAGGGGGGACGGAGAAGGCTATGTTGGCCGGGCGACGGTTGTCCCGGTTTAAGCGTGTAGGCTGGTTTTCCAGGCAAATCCGGAAAATCAAGGCTGAGGCGTGATGACGAGGCACTACGGTGCTGAAGCAACAAATGCCCTGCTTCCAGGAAAAGCCTCTAAGCATCAGGTAACATCAAATCGTACCCCAAACCGACACAGGTGGTCAGGTAGAGAATACCAAGGCGCTTGAGAGAACTCGGGTGAAGGAACTAGGCAAAATGGTGCCGTAACTTCGGGAGAAGGCACGCTGATATGTAGGTGAAGCGACTTGCTCGTGGAGCTGAAATCAGTCGAAGATACCAGCTGGCTGCAACTGTTTATTAAAAACACAGCACTGTGCAAACACGAAAGTGGACGTATACGGTGTGACGCCTGCCCGGTGCCGGAAGGTTAATTGATGGGGTTAGCGCAAGCGAAGCTCTTGATCGAAGCCCCGGTAAACGGCGGCCGTAACTATAACGGTCCTAAGGTAGCGAAATTCCTTGTCGGGTAAGTTCCGACCTGCACGAATGGCGTAATGATGGCCAGGCTGTCTCCACCCGAGACTCA' # noqa: E501 5 | 6 | 7 | # Colors: 8 | VERMILLION = tuple(np.array([213, 94, 0], dtype=np.float) / 255) 9 | REDPURPLE = tuple(np.array([204, 121, 167], dtype=np.float) / 255) 10 | SKYBLUE = tuple(np.array([86, 180, 233], dtype=np.float) / 255) 11 | WHITE = tuple(np.array([255, 255, 255], dtype=np.float) / 255) 12 | BLU = tuple(np.array([0, 114, 178], dtype=np.float) / 255) 13 | ORANG = tuple(np.array([230, 159, 0], dtype=np.float) / 255) 14 | -------------------------------------------------------------------------------- /pyDAEDALUS/DAEDserve.py: -------------------------------------------------------------------------------- 1 | from SimpleXMLRPCServer import SimpleXMLRPCServer 2 | import xmlrpclib 3 | import shutil 4 | import sys 5 | from math import floor 6 | from os import listdir, path, makedirs 7 | from Automated_Design.ply_to_input import ply_to_input 8 | from Automated_Design.DX_cage_design import DX_cage_design 9 | from Automated_Design.gen_PDB import pdbgen 10 | 11 | # class daedalusRPC(object): 12 | 13 | def calc(pName, helicalForm, helicalTurns, plyfile, seqfile): 14 | if not path.exists(pName): 15 | makedirs(pName) 16 | hMult=int(helicalTurns) 17 | hF=str(helicalForm) 18 | pFile=str(plyfile) 19 | sFile=str(seqfile) 20 | if hF=='Aform': 21 | # staple crossover asymmetry, 11 nt/helical turn 22 | minEdgeLen=hMult*11 23 | hForm=True 24 | twist=1 25 | elif hF=='Bform': 26 | # no asymmetry in staple or scaffold crossovers, 10.5 nt/helical turn 27 | minEdgeLen=floor(hMult*10.5) 28 | hForm=False 29 | twist=1 30 | elif hF=='Hybrid': 31 | # no asymmetry in staple or scaffold crossovers, 10.5 nt/helical turn 32 | minEdgeLen=hMult*11 33 | hForm=True 34 | twist=2 35 | elif hF=="Twisted": 36 | # scaffold crossover asymmetry in opposite direction, 11 nt/helical turn 37 | minEdgeLen=hMult*11 38 | hForm=True 39 | twist=3 40 | coordinates, edges, faces, edge_length_vec, file_name, \ 41 | staple_name, singleXOs = ply_to_input( 42 | str(pFile), str(pName), minEdgeLen, hForm) 43 | if (sFile=='M13.txt'): 44 | scaf_seq = [] 45 | scaf_name = [] 46 | else: 47 | scaf_name = str(pName) 48 | fSeq=open(sFile,'r') 49 | scaf_seq='' 50 | for lines in fSeq: 51 | scaf_seq=scaf_seq+lines.strip() 52 | scaf_seq = scaf_seq.upper() # Force scaffold sequence to be uppercase 53 | full_file_name = DX_cage_design( # noqa: F841 54 | coordinates, edges, faces, edge_length_vec, file_name, 55 | staple_name, singleXOs, scaf_seq, scaf_name, hForm, str(pName), 56 | twist, print_to_console=False) 57 | pdbout = pdbgen(full_file_name, hForm, str(pName)) 58 | return "Finished!" 59 | # 60 | server = SimpleXMLRPCServer(("localhost", 4242)) 61 | server.register_multicall_functions() 62 | server.register_function(calc, "calc") 63 | server.serve_forever() 64 | -------------------------------------------------------------------------------- /pyDAEDALUS/EGFP_seq.txt: -------------------------------------------------------------------------------- 1 | AAGGGCGAGGAGCTGTTCACCGGGGTGGTGCCCATCCTGGTCGAGCTGGACGGCGACGTAAACGGCCACAAGTTCAGCGTGTCCGGCGAGGGCGAGGGCGATGCCACCTACGGCAAGCTGACCCTGAAGTTCATCTGCACCACCGGCAAGCTGCCCGTGCCCTGGCCCACCCTCGTGACCACCCTGACCTACGGCGTGCAGTGCTTCAGCCGCTACCCCGACCACATGAAGCAGCACGACTTCTTCAAGTCCGCCATGCCCGAAGGCTACGTCCAGGAGCGCACCATCTTCTTCAAGGACGACGGCAACTACAAGACCCGCGCCGAGGTGAAGTTCGAGGGCGACACCCTGGTGAACCGCATCGAGCTGAAGGGCATCGACTTCAAGGAGGACGGCAACATCCTGGGGCACAAGCTGGAGTACAACTACAACAGCCACAACGTCTATATCATGGCCGACAAGCAGAAGAACGGCATCAAGGTGAACTTCAAGATCCGCCACAACATCGAGGACGGCAGCGTGCAGCTCGCCGACCACTACCAGCAGAACACCCCCATCGGCGACGGCCCCGTGCTGCTGCCCGACAACCACTACCTGAGCACCCAGTCCGCCCTGAGCAAAGACCCCAACGAGAAGCGCGATCACATGGTCCTGCTGGAGTTCGTGACCGCCGCCGGGATCACTCTCGGCATGGACGAGCTGTACAAGTAACTGCAGGCATGCAAGCTTGGCGTAATCATGGTCATAGCTGTTTCCTGTGTGAAATTGTTATCCGCTCACAATTCCACACAA 2 | -------------------------------------------------------------------------------- /pyDAEDALUS/InstructionsForUse.txt: -------------------------------------------------------------------------------- 1 | *** To start the backend python process *** 2 | 3 | If needed, install anaconda2 4 | (https://www.anaconda.com/distribution/#download-section) 5 | 6 | Use the anaconda2 python2 program to start a backend instance: 7 | python2 DAEDserve.py 8 | 9 | Optionally compile to a binary (note: use the pip that is part of the anaconda2 package): 10 | pip install pyinstaller 11 | Mac: pyinstaller -Fc --hiddenimport _sysconfigdata DAEDserve.py 12 | Win: pyinstaller -Fc DAEDserve.py 13 | 14 | The executable is built in the dist folder, where it could just be double-clicked to execute 15 | 16 | The server can be tested using "python2 testServer.py" in a separate command window. 17 | 18 | *** To use the GUI *** 19 | 20 | Navigate to either the pyDAEDALUSX windows or Darwin (mac) folder and double click the pyDAEDALUSX application. -------------------------------------------------------------------------------- /pyDAEDALUS/images/DX_Aform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/pyDAEDALUS/139f47bb27144a5121d8218a8fa4a61e9ae05832/pyDAEDALUS/images/DX_Aform.png -------------------------------------------------------------------------------- /pyDAEDALUS/images/DX_Aform_old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/pyDAEDALUS/139f47bb27144a5121d8218a8fa4a61e9ae05832/pyDAEDALUS/images/DX_Aform_old.png -------------------------------------------------------------------------------- /pyDAEDALUS/images/DX_Altform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/pyDAEDALUS/139f47bb27144a5121d8218a8fa4a61e9ae05832/pyDAEDALUS/images/DX_Altform.png -------------------------------------------------------------------------------- /pyDAEDALUS/images/DX_Bform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/pyDAEDALUS/139f47bb27144a5121d8218a8fa4a61e9ae05832/pyDAEDALUS/images/DX_Bform.png -------------------------------------------------------------------------------- /pyDAEDALUS/images/DX_Hform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/pyDAEDALUS/139f47bb27144a5121d8218a8fa4a61e9ae05832/pyDAEDALUS/images/DX_Hform.png -------------------------------------------------------------------------------- /pyDAEDALUS/images/DXedges.key: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/pyDAEDALUS/139f47bb27144a5121d8218a8fa4a61e9ae05832/pyDAEDALUS/images/DXedges.key -------------------------------------------------------------------------------- /pyDAEDALUS/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/pyDAEDALUS/139f47bb27144a5121d8218a8fa4a61e9ae05832/pyDAEDALUS/images/icon.png -------------------------------------------------------------------------------- /pyDAEDALUS/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | pyDAEDALUS-X 6 | 7 | 8 | 9 | 10 |
11 |
12 | pyDAEDALUS-X 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 |
Project name:
Helical form: 21 | 27 |

28 |
Helical turns:
43 |


44 | 45 | 46 |
47 |
48 |

49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/pyDAEDALUS/139f47bb27144a5121d8218a8fa4a61e9ae05832/pyDAEDALUS/js/jquery-xmlrpc-master.zip -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/.gitignore: -------------------------------------------------------------------------------- 1 | bower_components/ 2 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/LICENCE: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/README.md: -------------------------------------------------------------------------------- 1 | jQuery XML-RPC library 2 | ====================== 3 | 4 | This is a small library that sits on top of jQuery for communicating with 5 | XML-RPC services - without worrying about the horrible bloat of XML-RPC. Using 6 | this library, you can pass JSON parameters to the library, and receive 7 | responses in JSON. Encoding the JSON document is handled for you, intelligently 8 | mapping types between the two languages. 9 | 10 | Installing 11 | ---------- 12 | 13 | Simply include the jQuery library, and this library in your page: 14 | 15 | ```html 16 | 17 | 18 | ``` 19 | 20 | This was built upon jQuery 1.8.1. It will probably work with old versions, and 21 | will probably continue to work with new versions. 22 | 23 | Using 24 | ----- 25 | 26 | The `jQuery.xmlrpc` function is the main work-horse of this library. Call it 27 | like so: 28 | 29 | ```javascript 30 | $.xmlrpc({ 31 | url: '/RPC2', 32 | methodName: 'foo', 33 | params: ['bar', 1, 4.6, true, [1, 2, 3], {name: 'value'}], 34 | success: function(response, status, jqXHR) { /* ... */ }, 35 | error: function(jqXHR, status, error) { /* ... */ } 36 | }); 37 | ``` 38 | 39 | It takes all of the same arguments as `jQuery.ajax`, so refer there for more 40 | documentation. The two new keys added are: 41 | 42 | ### `methodName` 43 | 44 | This is method put in the `` element from XML-RPC. It should be a 45 | string. The XML-RPC service you are communicating with will determine valid 46 | method names you can call. 47 | 48 | ### `params` 49 | 50 | An array of parameters to send. Specify an empty array, or do not supply this 51 | key at all if you do not want to send any parameters. 52 | 53 | See the docs section on [Encoding and Decoding XML-RPC Documents][encoding] for 54 | more information. 55 | 56 | ### Getting data back 57 | 58 | When the XML-RPC call returns, the contents of the `` element are 59 | parsed into JSON and supplied to the `success` callback of the AJAX call as the 60 | first parameter, much like a JSON request. 61 | 62 | ### Handling errors 63 | 64 | If any HTTP errors occur during transport, the normal jQuery AJAX error 65 | handling will be used. If the XML-RPC service successfully replies, but replies 66 | with a `` response, an `$.xmlrpc.XmlRpcFault` is thrown. This error will 67 | be sent as the third parameter to the `error` callback of the AJAX call, as 68 | with other errors. 69 | 70 | Documentation 71 | ------------- 72 | 73 | [The full documentation can be found on Read The Docs][docs]. 74 | 75 | [docs]: http://jquery-xml-rpc.readthedocs.org/ "Documentation" 76 | [encoding]: http://jquery-xml-rpc.readthedocs.org/en/latest/types.html#encoding-and-decoding-xml-rpc-documents 77 | "Encoding and Decoding XML-RPC Documents" 78 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery-xmlrpc", 3 | "version": "0.4.4", 4 | "main": ["jquery.xmlrpc.js", "jquery.xmlrpc.min.js"], 5 | "dependencies": { 6 | "jquery": ">1.10.2" 7 | }, 8 | "devDependencies": { 9 | "jquery-mockjax": "~1.5.3" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/docs/.gitignore: -------------------------------------------------------------------------------- 1 | _build/ 2 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/docs/index.rst: -------------------------------------------------------------------------------- 1 | Welcome to jQuery XML-RPC's documentation! 2 | ========================================== 3 | 4 | This is a small library that sits on top of jQuery for communicating with 5 | XML-RPC services - without worrying about the horrible bloat of XML-RPC. Using 6 | this library, you can pass JSON parameters to the library, and receive 7 | responses in JSON. Encoding the JSON document is handled for you, intelligently 8 | mapping types between the two languages. 9 | 10 | Contents: 11 | 12 | .. toctree:: 13 | :maxdepth: 2 14 | 15 | overview 16 | types 17 | api 18 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/docs/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | REM Command file for Sphinx documentation 4 | 5 | if "%SPHINXBUILD%" == "" ( 6 | set SPHINXBUILD=sphinx-build 7 | ) 8 | set BUILDDIR=_build 9 | set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . 10 | set I18NSPHINXOPTS=%SPHINXOPTS% . 11 | if NOT "%PAPER%" == "" ( 12 | set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% 13 | set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% 14 | ) 15 | 16 | if "%1" == "" goto help 17 | 18 | if "%1" == "help" ( 19 | :help 20 | echo.Please use `make ^` where ^ is one of 21 | echo. html to make standalone HTML files 22 | echo. dirhtml to make HTML files named index.html in directories 23 | echo. singlehtml to make a single large HTML file 24 | echo. pickle to make pickle files 25 | echo. json to make JSON files 26 | echo. htmlhelp to make HTML files and a HTML help project 27 | echo. qthelp to make HTML files and a qthelp project 28 | echo. devhelp to make HTML files and a Devhelp project 29 | echo. epub to make an epub 30 | echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter 31 | echo. text to make text files 32 | echo. man to make manual pages 33 | echo. texinfo to make Texinfo files 34 | echo. gettext to make PO message catalogs 35 | echo. changes to make an overview over all changed/added/deprecated items 36 | echo. linkcheck to check all external links for integrity 37 | echo. doctest to run all doctests embedded in the documentation if enabled 38 | goto end 39 | ) 40 | 41 | if "%1" == "clean" ( 42 | for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i 43 | del /q /s %BUILDDIR%\* 44 | goto end 45 | ) 46 | 47 | if "%1" == "html" ( 48 | %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html 49 | if errorlevel 1 exit /b 1 50 | echo. 51 | echo.Build finished. The HTML pages are in %BUILDDIR%/html. 52 | goto end 53 | ) 54 | 55 | if "%1" == "dirhtml" ( 56 | %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml 57 | if errorlevel 1 exit /b 1 58 | echo. 59 | echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. 60 | goto end 61 | ) 62 | 63 | if "%1" == "singlehtml" ( 64 | %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml 65 | if errorlevel 1 exit /b 1 66 | echo. 67 | echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. 68 | goto end 69 | ) 70 | 71 | if "%1" == "pickle" ( 72 | %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle 73 | if errorlevel 1 exit /b 1 74 | echo. 75 | echo.Build finished; now you can process the pickle files. 76 | goto end 77 | ) 78 | 79 | if "%1" == "json" ( 80 | %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json 81 | if errorlevel 1 exit /b 1 82 | echo. 83 | echo.Build finished; now you can process the JSON files. 84 | goto end 85 | ) 86 | 87 | if "%1" == "htmlhelp" ( 88 | %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp 89 | if errorlevel 1 exit /b 1 90 | echo. 91 | echo.Build finished; now you can run HTML Help Workshop with the ^ 92 | .hhp project file in %BUILDDIR%/htmlhelp. 93 | goto end 94 | ) 95 | 96 | if "%1" == "qthelp" ( 97 | %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp 98 | if errorlevel 1 exit /b 1 99 | echo. 100 | echo.Build finished; now you can run "qcollectiongenerator" with the ^ 101 | .qhcp project file in %BUILDDIR%/qthelp, like this: 102 | echo.^> qcollectiongenerator %BUILDDIR%\qthelp\jQueryXML-RPC.qhcp 103 | echo.To view the help file: 104 | echo.^> assistant -collectionFile %BUILDDIR%\qthelp\jQueryXML-RPC.ghc 105 | goto end 106 | ) 107 | 108 | if "%1" == "devhelp" ( 109 | %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp 110 | if errorlevel 1 exit /b 1 111 | echo. 112 | echo.Build finished. 113 | goto end 114 | ) 115 | 116 | if "%1" == "epub" ( 117 | %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub 118 | if errorlevel 1 exit /b 1 119 | echo. 120 | echo.Build finished. The epub file is in %BUILDDIR%/epub. 121 | goto end 122 | ) 123 | 124 | if "%1" == "latex" ( 125 | %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex 126 | if errorlevel 1 exit /b 1 127 | echo. 128 | echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. 129 | goto end 130 | ) 131 | 132 | if "%1" == "text" ( 133 | %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text 134 | if errorlevel 1 exit /b 1 135 | echo. 136 | echo.Build finished. The text files are in %BUILDDIR%/text. 137 | goto end 138 | ) 139 | 140 | if "%1" == "man" ( 141 | %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man 142 | if errorlevel 1 exit /b 1 143 | echo. 144 | echo.Build finished. The manual pages are in %BUILDDIR%/man. 145 | goto end 146 | ) 147 | 148 | if "%1" == "texinfo" ( 149 | %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo 150 | if errorlevel 1 exit /b 1 151 | echo. 152 | echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. 153 | goto end 154 | ) 155 | 156 | if "%1" == "gettext" ( 157 | %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale 158 | if errorlevel 1 exit /b 1 159 | echo. 160 | echo.Build finished. The message catalogs are in %BUILDDIR%/locale. 161 | goto end 162 | ) 163 | 164 | if "%1" == "changes" ( 165 | %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes 166 | if errorlevel 1 exit /b 1 167 | echo. 168 | echo.The overview file is in %BUILDDIR%/changes. 169 | goto end 170 | ) 171 | 172 | if "%1" == "linkcheck" ( 173 | %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck 174 | if errorlevel 1 exit /b 1 175 | echo. 176 | echo.Link check complete; look for any errors in the above output ^ 177 | or in %BUILDDIR%/linkcheck/output.txt. 178 | goto end 179 | ) 180 | 181 | if "%1" == "doctest" ( 182 | %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest 183 | if errorlevel 1 exit /b 1 184 | echo. 185 | echo.Testing of doctests in the sources finished, look at the ^ 186 | results in %BUILDDIR%/doctest/output.txt. 187 | goto end 188 | ) 189 | 190 | :end 191 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/docs/overview.rst: -------------------------------------------------------------------------------- 1 | .. _installing: 2 | 3 | ========== 4 | Installing 5 | ========== 6 | 7 | Simply include the jQuery library, and this library in your page: 8 | 9 | .. code-block:: html 10 | 11 | 12 | 13 | 14 | This was built upon jQuery 1.8.1. It will probably work with old versions, and 15 | will probably continue to work with new versions. 16 | 17 | .. _using: 18 | 19 | ===== 20 | Using 21 | ===== 22 | 23 | The ``jQuery.xmlrpc`` function is the main work-horse of this library. 24 | Call it like so: 25 | 26 | .. code-block:: javascript 27 | 28 | $.xmlrpc({ 29 | url: '/RPC2', 30 | methodName: 'foo', 31 | params: ['bar', 1, 4.6, true, [1, 2, 3], {name: 'value'}], 32 | success: function(response, status, jqXHR) { }, 33 | error: function(jqXHR, status, error) { } 34 | }); 35 | 36 | It takes all of the same arguments as ``jQuery.ajax``, 37 | so refer there for more documentation. 38 | The two new keys added are: 39 | 40 | ``methodName`` 41 | This is method put in the ```` element from XML-RPC. It should be a 42 | string. The XML-RPC service you are communicating with will determine valid 43 | method names you can call. 44 | 45 | ``params`` 46 | An array of parameters to send. Specify an empty array, or do not supply this 47 | key at all if you do not want to send any parameters. 48 | 49 | See the docs section on [Encoding and Decoding XML-RPC Documents][encoding] for 50 | more information. 51 | 52 | Getting data back 53 | ----------------- 54 | 55 | When the XML-RPC call returns, 56 | the contents of the ```` element are parsed into JSON and 57 | supplied to the ``success`` callback of the AJAX call as the first parameter, 58 | much like a JSON request. 59 | 60 | Handling errors 61 | --------------- 62 | 63 | If any HTTP errors occur during transport, 64 | the normal jQuery AJAX error handling will be used. 65 | If the XML-RPC service successfully replies, 66 | but replies with a ```` response, 67 | an ``$.xmlrpc.XmlRpcFault`` is thrown. 68 | This error will be sent as the third parameter to the ``error`` callback 69 | of the AJAX call, as with other errors. 70 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/docs/requirements.txt: -------------------------------------------------------------------------------- 1 | Sphinx==1.1.3 2 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/docs/types.rst: -------------------------------------------------------------------------------- 1 | .. _types: 2 | 3 | ===== 4 | Types 5 | ===== 6 | 7 | JSON and XML-RPC are two unrelated markup languages, so converting between the 8 | types requires a small understanding of both languages. Luckily, most of the 9 | types have a direct mapping between the two languages. 10 | 11 | Encoding and Decoding XML-RPC Documents 12 | --------------------------------------- 13 | 14 | Use the following table to see how XML-RPC types are mapped to JavaScript 15 | types: 16 | 17 | +-------------------------+-----------------+ 18 | | XML-RPC | JavaScript | 19 | +=========================+=================+ 20 | | ```` | ``null`` | 21 | +-------------------------+-----------------+ 22 | | ```` | ``Array`` | 23 | +-------------------------+-----------------+ 24 | | ```` | ``Object`` | 25 | +-------------------------+-----------------+ 26 | | ```` | ``String`` | 27 | +-------------------------+-----------------+ 28 | | ```` | ``Boolean`` | 29 | +-------------------------+-----------------+ 30 | | ```` | ``Number`` | 31 | +-------------------------+ | 32 | | ```` | | 33 | +-------------------------+ | 34 | | ```` | | 35 | +-------------------------+ | 36 | | ```` | | 37 | +-------------------------+-----------------+ 38 | | ```` | ``Number`` | 39 | +-------------------------+-----------------+ 40 | | ```` | ``Date`` | 41 | +-------------------------+-----------------+ 42 | | ```` | ``ArrayBuffer`` | 43 | +-------------------------+-----------------+ 44 | 45 | .. note:: JavaScript does not have separate types for integers and floats, it simply 46 | has ``Number``. As such, it is impossible to tell if ``4`` really means 47 | ``4`` or ``4``. If this is an issue for you, read on. 48 | 49 | Forcing types 50 | ~~~~~~~~~~~~~ 51 | 52 | Some times, the automatic type guessing going from JSON to XML-RPC may not work 53 | for you. The most common source of this problem is in encoding numbers. The 54 | library may sometimes encode a ``Number`` as a ```` instead of a ````, as 55 | there is no reliable way of determining what was actually desired. 56 | 57 | To force a type, wrap the value in a call to ``$.xmlrpc.force``. The types are 58 | named after their XML-RPC equivalents, as mentioned in the above table. 59 | 60 | 61 | To force a floating point JavaScript ``Number`` 62 | to be encoded as an ```` 63 | and sent as a parameter, use the following: 64 | 65 | .. code-block:: javascript 66 | 67 | var forcedValue = $.xmlrpc.force('i8', 4.5) 68 | 69 | $.xmlrpc({ 70 | url: '/RPC2', 71 | methodName: 'foo', 72 | params: [forcedValue] 73 | }); 74 | 75 | Adding and Extending Types 76 | -------------------------- 77 | 78 | You can add your own types to XML-RPC by adding a member to ``$.xmlrpc.types``, 79 | combined with the ``$.xmlrpc.makeType`` function. See 80 | :ref:`xmlrpc-makeType` for more information 81 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/jquery.xmlrpc.min.js: -------------------------------------------------------------------------------- 1 | !function(e){"use strict";var t=function(){Error.apply(this,arguments)};t.prototype=new Error,t.prototype.type="XML-RPC fault";var n=e.xmlrpc=function(t,i){2===arguments.length?i.url=t:(i=t,t=i.url),i.dataType="xml json",i.type="POST",i.contentType="text/xml",i.converters={"xml json":n.parseDocument};var r=n.document(i.methodName,i.params||[]);return i.data="XMLSerializer"in window?(new window.XMLSerializer).serializeToString(r):r.xml,e.ajax(i)};n.createXMLDocument=function(){if(document.implementation&&"createDocument"in document.implementation)return document.implementation.createDocument(null,null,null);var e,t,n=["MSXML6.DomDocument","MSXML3.DomDocument","MSXML2.DomDocument","MSXML.DomDocument","Microsoft.XmlDom"];for(e=0,t=n.length;t>e;e++)try{return new ActiveXObject(n[e])}catch(i){}},n.document=function(t,i){var r=n.createXMLDocument(),a=function(t){return e(r.createElement(t))},o=a("methodName").text(t),s=a("params").append(e.map(i,function(e){var t=a("value").append(n.toXmlRpc(e,a));return a("param").append(t)})),u=a("methodCall").append(o,s);return r.appendChild(u.get(0)),r};var i=function(e){return e===parseInt(e,10)&&!isNaN(e)};n.toXmlRpc=function(t,n){if(t instanceof r)return t.toXmlRpc(n);var a=e.xmlrpc.types,o=e.type(t);switch(o){case"undefined":case"null":return a.nil.encode(t,n);case"date":return a["datetime.iso8601"].encode(t,n);case"object":return t instanceof ArrayBuffer?a.base64.encode(t,n):a.struct.encode(t,n);case"number":return i(t)?a["int"].encode(t,n):a["double"].encode(t,n);case"array":case"boolean":case"string":return a[o].encode(t,n);default:throw new Error("Unknown type",t)}},n.parseDocument=function(i){var r=e(i),a=r.children("methodresponse"),o=a.find("> fault");if(0===o.length){var s=a.find("> params > param > value > *"),u=s.toArray().map(n.parseNode);return u}var l=n.parseNode(o.find("> value > *").get(0)),c=new t(l.faultString);throw c.msg=c.message=l.faultString,c.type=c.code=l.faultCode,c},n.parseNode=function(e){if(void 0===e)return null;var t=e.nodeName.toLowerCase();if(t in n.types)return n.types[t].decode(e);throw new Error("Unknown type "+t)},n.parseValue=function(t){var i=e(t).children()[0];return i?n.parseNode(i):e(t).text()};var r=function(){};e.xmlrpc.types={},n.makeType=function(t,i,a,o){var s;if(s=function(e){this.value=e},s.prototype=new r,s.prototype.tagName=t,i){var u=a,l=o;a=function(e,t){var n=u(e);return t(s.tagName).text(n)},o=function(t){return l(e(t).text(),t)}}s.prototype.toXmlRpc=function(e){return s.encode(this.value,e)},s.tagName=t,s.encode=a,s.decode=o,n.types[t.toLowerCase()]=s};var a=function(e){return""+Math.floor(e)},o=function(e){return parseInt(e,10)};n.makeType("int",!0,a,o),n.makeType("i4",!0,a,o),n.makeType("i8",!0,a,o),n.makeType("i16",!0,a,o),n.makeType("i32",!0,a,o),n.makeType("double",!0,String,function(e){return parseFloat(e,10)}),n.makeType("string",!0,String,String),n.makeType("boolean",!0,function(e){return e?"1":"0"},function(e){return"1"===e});var s=function(e){return 10>e?"0"+e:e};n.makeType("dateTime.iso8601",!0,function(e){return[e.getUTCFullYear(),"-",s(e.getUTCMonth()+1),"-",s(e.getUTCDate()),"T",s(e.getUTCHours()),":",s(e.getUTCMinutes()),":",s(e.getUTCSeconds()),"Z"].join("")},function(e){return new Date(e)}),n.binary=function(){var e="=",t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),n=t.reduce(function(e,t,n){return e[t]=n,e},{});return{toBase64:function(n){for(var i,r=[],a=new Uint8Array(n),o=0;o>18)%64]),r.push(t[(i>>12)%64]),r.push(t[(i>>6)%64]),r.push(t[(i>>0)%64]);for(var s=3-(n.byteLength%3||3);s--;)r[r.length-s-1]=e;return r.join("")},fromBase64:function(t){t=t.replace(/\s/g, '');var i=t.length,r=3*(i/4);t.charAt(i-1)===e&&r--,t.charAt(i-2)===e&&r--;for(var a,o=new ArrayBuffer(r),s=new Uint8Array(o),u=0,l=0;i>u;u+=4,l+=3)a=(n[t[u+0]]<<18)+(n[t[u+1]]<<12)+(n[t[u+2]]<<6)+(n[t[u+3]]<<0),s[l+0]=(a>>16)%256,s[l+1]=(a>>8)%256,s[l+2]=(a>>0)%256;return o}}}(),n.makeType("base64",!0,function(e){return n.binary.toBase64(e)},function(e){return n.binary.fromBase64(e)}),n.makeType("nil",!1,function(e,t){return t("nil")},function(){return null}),n.makeType("struct",!1,function(t,i){var r=i("struct");return e.each(t,function(e,t){var a=i("name").text(e),o=i("value").append(n.toXmlRpc(t,i));r.append(i("member").append(a,o))}),r},function(t){return e(t).find("> member").toArray().reduce(function(t,i){var r=e(i),a=r.find("> name").text(),o=n.parseValue(r.find("> value"));return t[a]=o,t},{})}),n.makeType("array",!1,function(t,i){var r=i("array"),a=i("data");return e.each(t,function(e,t){a.append(i("value").append(n.toXmlRpc(t,i)))}),r.append(a),r},function(t){return e(t).find("> data > value").toArray().map(n.parseValue)}),n.force=function(e,t){return new n.types[e](t)}}(jQuery); 2 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/tests/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | jQuery XML-RPC tests 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/tests/min.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | jQuery XML-RPC minified tests 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/tests/qunit.css: -------------------------------------------------------------------------------- 1 | /** 2 | * QUnit v1.10.0 - A JavaScript Unit Testing Framework 3 | * 4 | * http://qunitjs.com 5 | * 6 | * Copyright 2012 jQuery Foundation and other contributors 7 | * Released under the MIT license. 8 | * http://jquery.org/license 9 | */ 10 | 11 | /** Font Family and Sizes */ 12 | 13 | #qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult { 14 | font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; 15 | } 16 | 17 | #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } 18 | #qunit-tests { font-size: smaller; } 19 | 20 | 21 | /** Resets */ 22 | 23 | #qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter { 24 | margin: 0; 25 | padding: 0; 26 | } 27 | 28 | 29 | /** Header */ 30 | 31 | #qunit-header { 32 | padding: 0.5em 0 0.5em 1em; 33 | 34 | color: #8699a4; 35 | background-color: #0d3349; 36 | 37 | font-size: 1.5em; 38 | line-height: 1em; 39 | font-weight: normal; 40 | 41 | border-radius: 5px 5px 0 0; 42 | -moz-border-radius: 5px 5px 0 0; 43 | -webkit-border-top-right-radius: 5px; 44 | -webkit-border-top-left-radius: 5px; 45 | } 46 | 47 | #qunit-header a { 48 | text-decoration: none; 49 | color: #c2ccd1; 50 | } 51 | 52 | #qunit-header a:hover, 53 | #qunit-header a:focus { 54 | color: #fff; 55 | } 56 | 57 | #qunit-testrunner-toolbar label { 58 | display: inline-block; 59 | padding: 0 .5em 0 .1em; 60 | } 61 | 62 | #qunit-banner { 63 | height: 5px; 64 | } 65 | 66 | #qunit-testrunner-toolbar { 67 | padding: 0.5em 0 0.5em 2em; 68 | color: #5E740B; 69 | background-color: #eee; 70 | overflow: hidden; 71 | } 72 | 73 | #qunit-userAgent { 74 | padding: 0.5em 0 0.5em 2.5em; 75 | background-color: #2b81af; 76 | color: #fff; 77 | text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; 78 | } 79 | 80 | #qunit-modulefilter-container { 81 | float: right; 82 | } 83 | 84 | /** Tests: Pass/Fail */ 85 | 86 | #qunit-tests { 87 | list-style-position: inside; 88 | } 89 | 90 | #qunit-tests li { 91 | padding: 0.4em 0.5em 0.4em 2.5em; 92 | border-bottom: 1px solid #fff; 93 | list-style-position: inside; 94 | } 95 | 96 | #qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running { 97 | display: none; 98 | } 99 | 100 | #qunit-tests li strong { 101 | cursor: pointer; 102 | } 103 | 104 | #qunit-tests li a { 105 | padding: 0.5em; 106 | color: #c2ccd1; 107 | text-decoration: none; 108 | } 109 | #qunit-tests li a:hover, 110 | #qunit-tests li a:focus { 111 | color: #000; 112 | } 113 | 114 | #qunit-tests ol { 115 | margin-top: 0.5em; 116 | padding: 0.5em; 117 | 118 | background-color: #fff; 119 | 120 | border-radius: 5px; 121 | -moz-border-radius: 5px; 122 | -webkit-border-radius: 5px; 123 | } 124 | 125 | #qunit-tests table { 126 | border-collapse: collapse; 127 | margin-top: .2em; 128 | } 129 | 130 | #qunit-tests th { 131 | text-align: right; 132 | vertical-align: top; 133 | padding: 0 .5em 0 0; 134 | } 135 | 136 | #qunit-tests td { 137 | vertical-align: top; 138 | } 139 | 140 | #qunit-tests pre { 141 | margin: 0; 142 | white-space: pre-wrap; 143 | word-wrap: break-word; 144 | } 145 | 146 | #qunit-tests del { 147 | background-color: #e0f2be; 148 | color: #374e0c; 149 | text-decoration: none; 150 | } 151 | 152 | #qunit-tests ins { 153 | background-color: #ffcaca; 154 | color: #500; 155 | text-decoration: none; 156 | } 157 | 158 | /*** Test Counts */ 159 | 160 | #qunit-tests b.counts { color: black; } 161 | #qunit-tests b.passed { color: #5E740B; } 162 | #qunit-tests b.failed { color: #710909; } 163 | 164 | #qunit-tests li li { 165 | padding: 5px; 166 | background-color: #fff; 167 | border-bottom: none; 168 | list-style-position: inside; 169 | } 170 | 171 | /*** Passing Styles */ 172 | 173 | #qunit-tests li li.pass { 174 | color: #3c510c; 175 | background-color: #fff; 176 | border-left: 10px solid #C6E746; 177 | } 178 | 179 | #qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } 180 | #qunit-tests .pass .test-name { color: #366097; } 181 | 182 | #qunit-tests .pass .test-actual, 183 | #qunit-tests .pass .test-expected { color: #999999; } 184 | 185 | #qunit-banner.qunit-pass { background-color: #C6E746; } 186 | 187 | /*** Failing Styles */ 188 | 189 | #qunit-tests li li.fail { 190 | color: #710909; 191 | background-color: #fff; 192 | border-left: 10px solid #EE5757; 193 | white-space: pre; 194 | } 195 | 196 | #qunit-tests > li:last-child { 197 | border-radius: 0 0 5px 5px; 198 | -moz-border-radius: 0 0 5px 5px; 199 | -webkit-border-bottom-right-radius: 5px; 200 | -webkit-border-bottom-left-radius: 5px; 201 | } 202 | 203 | #qunit-tests .fail { color: #000000; background-color: #EE5757; } 204 | #qunit-tests .fail .test-name, 205 | #qunit-tests .fail .module-name { color: #000000; } 206 | 207 | #qunit-tests .fail .test-actual { color: #EE5757; } 208 | #qunit-tests .fail .test-expected { color: green; } 209 | 210 | #qunit-banner.qunit-fail { background-color: #EE5757; } 211 | 212 | 213 | /** Result */ 214 | 215 | #qunit-testresult { 216 | padding: 0.5em 0.5em 0.5em 2.5em; 217 | 218 | color: #2b81af; 219 | background-color: #D2E0E6; 220 | 221 | border-bottom: 1px solid white; 222 | } 223 | #qunit-testresult .module-name { 224 | font-weight: bold; 225 | } 226 | 227 | /** Fixture */ 228 | 229 | #qunit-fixture { 230 | position: absolute; 231 | top: -10000px; 232 | left: -10000px; 233 | width: 1000px; 234 | height: 1000px; 235 | } 236 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/tests/tests.binary.js: -------------------------------------------------------------------------------- 1 | /*jshint browser:true jquery:true */ 2 | /*globals deepEqual equal ok assert test module */ 3 | (function() { 4 | "use strict"; 5 | module("Binary"); 6 | 7 | /** 8 | * Make an array buffer out of an array of ints 9 | */ 10 | var makeArrayBuffer = function(uint8s) { 11 | var ab = new ArrayBuffer(uint8s.length); 12 | var uint8 = new Uint8Array(ab); 13 | 14 | uint8s.forEach(function(val, i) { 15 | uint8[i] = val; 16 | }); 17 | 18 | return ab; 19 | }; 20 | 21 | /** 22 | * A wrapper around `ok` that acts like `equal`, but works on ArrayBuffers 23 | * Call like: 24 | * 25 | * abEqual(testArrayBuffer, expectedArrayBuffer, message); 26 | */ 27 | var abEqual = function(ab1, ab2) { 28 | var args = [].slice.call(arguments, 2); 29 | 30 | var allGood = (function() { 31 | 32 | var uint81 = new Uint8Array(ab1); 33 | var uint82 = new Uint8Array(ab2); 34 | 35 | if (uint81.length != uint82.length) return false; 36 | 37 | for (var i = 0; i < uint81.length; i++) { 38 | if (uint81[i] !== uint82[i]) return false; 39 | } 40 | 41 | return true; 42 | })(); 43 | 44 | args.unshift(allGood); 45 | 46 | ok.apply(null, args); 47 | }; 48 | 49 | /** 50 | * Naive range() function. Only supports forward steps 51 | */ 52 | var range = function(start, stop) { 53 | var acc = []; 54 | for (var i = start; i < stop; i++) { 55 | acc.push(i); 56 | } 57 | return acc; 58 | }; 59 | 60 | test("base64 encoding", function() { 61 | equal($.xmlrpc.binary.toBase64(makeArrayBuffer([1, 2, 3, 4, 5])), "AQIDBAU=", 62 | "ArrayBuffer encoded to base64 string"); 63 | }); 64 | 65 | test("base64 decoding", function() { 66 | abEqual($.xmlrpc.binary.fromBase64("AQIDBAU="), makeArrayBuffer([1, 2, 3, 4, 5]), 67 | "Base64 string decoded into ArrayBuffer"); 68 | }); 69 | 70 | test("base64 round trip", function() { 71 | var max = 20, low, high; 72 | for (low = 0; low < max; low++) { 73 | for (high = low + 1; high < max; high++) { 74 | var ab = makeArrayBuffer(range(low, high)); 75 | abEqual(ab, $.xmlrpc.binary.fromBase64($.xmlrpc.binary.toBase64(ab)), 76 | "Range from " + low + " to " + high + " encodes and decodes"); 77 | } 78 | } 79 | }); 80 | })(); 81 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/tests/tests.decoding.js: -------------------------------------------------------------------------------- 1 | /*jshint browser:true jquery:true */ 2 | /*globals deepEqual equal ok assert test module */ 3 | (function() { 4 | "use strict"; 5 | module("Decoding"); 6 | 7 | /** 8 | * Generate an element from a string, and return just that element 9 | */ 10 | function el(xml) { 11 | return $(xml)[0]; 12 | } 13 | 14 | test("JavaScript primitive value decoding", function($xml) { 15 | 16 | equal($.xmlrpc.parseNode(el('1')), true, 17 | ' true node decodes'); 18 | 19 | equal($.xmlrpc.parseNode(el('0')), false, 20 | ' false node decodes'); 21 | 22 | 23 | equal($.xmlrpc.parseNode(el('4')), 4, 24 | ' node decodes'); 25 | equal($.xmlrpc.parseNode(el('5')), 5, 26 | ' node decodes'); 27 | equal($.xmlrpc.parseNode(el('6')), 6, 28 | ' node decodes'); 29 | equal($.xmlrpc.parseNode(el('7')), 7, 30 | ' node decodes'); 31 | equal($.xmlrpc.parseNode(el('8.9')), 8.9, 32 | ' node decodes'); 33 | 34 | equal($.xmlrpc.parseNode(el('')), null, 35 | ' node decodes'); 36 | equal($.xmlrpc.parseNode(el('Hello')), null, 37 | ' node decodes, even when not empty'); 38 | 39 | equal($.xmlrpc.parseNode(el('Hello')), "Hello", 40 | ' node decodes'); 41 | 42 | equal($.xmlrpc.parseNode(el('')), "", 43 | 'Empty node decodes'); 44 | 45 | var timestamp = 1350943077000; 46 | var datestring = "2012-10-22T21:57:57Z"; 47 | var dateNode = el('' + datestring + ''); 48 | equal($.xmlrpc.parseNode(dateNode).getTime(), timestamp, 49 | " node decodes"); 50 | }); 51 | 52 | test("Array decoding", function($xml) { 53 | deepEqual($.xmlrpc.parseNode(el('4Hello')), 54 | [4, "Hello"], 55 | "Simple array decodes"); 56 | 57 | deepEqual($.xmlrpc.parseNode(el('')), 58 | [], 59 | "Empty array decodes"); 60 | 61 | deepEqual( 62 | $.xmlrpc.parseNode(el( 63 | '' + 64 | '1' + 65 | '' + 66 | '2' + 67 | '' + 68 | '' 69 | )), 70 | [1, [2]], 71 | "Array containing array encodes"); 72 | 73 | // Childless value nodes should be treated like string nodes 74 | deepEqual( 75 | $.xmlrpc.parseNode(el( 76 | '' + 77 | 'String node' + 78 | '' + 79 | 'Raw value string' + 80 | '' 81 | )), 82 | ["String node", "", "Raw value string"], 83 | "Array containing childless nodes parses correctly"); 84 | }); 85 | 86 | test("Struct decoding", function($xml) { 87 | deepEqual( 88 | $.xmlrpc.parseNode(el( 89 | '' + 90 | '' + 91 | 'foo' + 92 | '4' + 93 | '' + 94 | '' + 95 | 'bar' + 96 | 'Hello' + 97 | '' + 98 | '')), 99 | {foo: 4, bar: "Hello"}, 100 | "Simple decodes"); 101 | 102 | deepEqual($.xmlrpc.parseNode(el('')), {}, 103 | "Empty decodes"); 104 | 105 | deepEqual( 106 | $.xmlrpc.parseNode(el( 107 | '' + 108 | '' + 109 | 'foo' + 110 | '4' + 111 | '' + 112 | '' + 113 | 'bar' + 114 | '' + 115 | '' + 116 | 'baz' + 117 | '5' + 118 | '' + 119 | '' + 120 | '' + 121 | '')), 122 | {foo: 4, bar: {baz: 5}}, 123 | "struct containing struct decodes"); 124 | 125 | deepEqual( 126 | $.xmlrpc.parseNode(el( 127 | '' + 128 | '' + 129 | 'stringNode' + 130 | 'String node' + 131 | '' + 132 | '' + 133 | 'emptyValue' + 134 | '' + 135 | '' + 136 | '' + 137 | 'rawStringValue' + 138 | 'Raw string value' + 139 | '' + 140 | '')), 141 | { 142 | stringNode: "String node", 143 | emptyValue: "", 144 | rawStringValue: "Raw string value" 145 | }, 146 | "Struct with childless nodes parses correctly"); 147 | }); 148 | 149 | })(); 150 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/tests/tests.document.js: -------------------------------------------------------------------------------- 1 | /*jshint browser:true jquery:true */ 2 | /*globals deepEqual equal ok assert test module throws */ 3 | (function() { 4 | "use strict"; 5 | module("Document"); 6 | 7 | /** 8 | * Serialize a Document to a string easily 9 | */ 10 | var s = (function() { 11 | var serializer = new XMLSerializer(); 12 | return function($node) { 13 | return serializer.serializeToString($node); 14 | }; 15 | })(); 16 | 17 | var d = (function() { 18 | var parser = new DOMParser(); 19 | return function(xml) { 20 | return parser.parseFromString(xml, "text/xml"); 21 | }; 22 | })(); 23 | 24 | test("Creating a document", function() { 25 | equal(s($.xmlrpc.document('method', [4, 'foo'])), 26 | '' + 27 | 'method' + 28 | '' + 29 | '4' + 30 | 'foo' + 31 | '' + 32 | '', 33 | 'Can create a simple document'); 34 | 35 | equal(s($.xmlrpc.document('empty', [])), 36 | '' + 37 | 'empty' + 38 | '' + 39 | '', 40 | 'Can create an empty document'); 41 | }); 42 | 43 | test("Decoding a document", function() { 44 | 45 | deepEqual( 46 | $.xmlrpc.parseDocument(d( 47 | '' + 48 | '' + 49 | '' + 50 | '4' + 51 | 'Hello' + 52 | '' + 53 | '')), 54 | [4, "Hello"], 55 | "Can parse a simple response"); 56 | 57 | deepEqual( 58 | $.xmlrpc.parseDocument(d( 59 | '' + 60 | '' + 61 | '' + 62 | '')), 63 | [], 64 | "Can parse an empty response"); 65 | 66 | deepEqual( 67 | $.xmlrpc.parseDocument(d( 68 | '' + 69 | '' + 70 | '' + 71 | '4' + 72 | '' + 73 | '1' + 74 | '' + 75 | '2' + 76 | '' + 77 | '' + 78 | '' + 79 | '')), 80 | [4, [1, [2]]], 81 | "Can parse a complex response"); 82 | 83 | }); 84 | 85 | test("Handling errors", 5, function() { 86 | throws( 87 | function() { 88 | $.xmlrpc.parseDocument(d( 89 | '' + 90 | '' + 91 | '' + 92 | '' + 93 | '' + 94 | 'faultCode' + 95 | '4' + 96 | '' + 97 | '' + 98 | 'faultString' + 99 | 'Too many parameters.' + 100 | '' + 101 | '' + 102 | '' + 103 | '' 104 | )); 105 | }, 106 | $.xmlrpc.XmlRpcFault, 107 | "Parsing a fault response throws an error"); 108 | 109 | try { 110 | $.xmlrpc.parseDocument(d( 111 | '' + 112 | '' + 113 | '' + 114 | '' + 115 | '' + 116 | '' + 117 | 'faultCode' + 118 | '4' + 119 | '' + 120 | '' + 121 | 'faultString' + 122 | 'Error message' + 123 | '' + 124 | '' + 125 | '' + 126 | '' + 127 | '' 128 | )); 129 | ok(false, "Should have thrown an error"); 130 | } catch (e) { 131 | equal(e.code, 4, "Error code is present"); 132 | equal(e.type, 4, "Error type is present"); 133 | 134 | equal(e.msg, "Error message", "Error message is present"); 135 | equal(e.message, "Error message", "Error message is present"); 136 | } 137 | 138 | }); 139 | 140 | })(); 141 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/tests/tests.encoding.js: -------------------------------------------------------------------------------- 1 | /*jshint browser:true jquery:true */ 2 | /*globals deepEqual equal ok assert test module */ 3 | (function() { 4 | "use strict"; 5 | module("Encoding"); 6 | 7 | /** 8 | * Serialize an Element to a string easily 9 | */ 10 | var s = (function() { 11 | var serializer = new XMLSerializer(); 12 | return function($node) { 13 | return serializer.serializeToString($node[0]); 14 | }; 15 | })(); 16 | 17 | /** 18 | * A wrapper around test functions that makes an $xml function for testing 19 | * with. Kinda like a Python decorator 20 | */ 21 | var need$xml = function(fn) { 22 | return function() { 23 | var doc = document.implementation.createDocument(null, null, null); 24 | var $xml = function(name) { 25 | return $(doc.createElement(name)); 26 | }; 27 | 28 | var args = [].slice.call(arguments); 29 | args.unshift($xml); 30 | 31 | return fn.apply(this, args); 32 | }; 33 | }; 34 | 35 | test("JavaScript primitive value encoding", need$xml(function($xml) { 36 | var types = $.xmlrpc.types; 37 | 38 | deepEqual(types.boolean.encode(true, $xml), $xml('boolean').text('1'), 39 | "Boolean true encodes to 1"); 40 | 41 | deepEqual(types.boolean.encode(false, $xml), $xml('boolean').text('0'), 42 | "Boolean true encodes to 0"); 43 | 44 | 45 | deepEqual(types.int.encode(3, $xml), $xml('int').text('3'), 46 | "Integer 3 encodes to 3"); 47 | deepEqual(types.i8.encode(4, $xml), $xml('i8').text('4'), 48 | "Integer 3 encodes to 4"); 49 | deepEqual(types.double.encode(5.5, $xml), $xml('double').text('5.5'), 50 | "Double 5.5 encodes to 5.5"); 51 | 52 | deepEqual(types.nil.encode(null, $xml), $xml('nil'), 53 | "Null encodes to "); 54 | deepEqual(types.nil.encode("hello", $xml), $xml('nil'), 55 | "Null encodes to when supplied a non-null value"); 56 | 57 | deepEqual(types.string.encode("Hello, World!", $xml), $xml('string').text("Hello, World!"), 58 | "String encodes to ..."); 59 | deepEqual(types.string.encode("", $xml), $xml('string').text(""), 60 | "Empty String encodes to "); 61 | 62 | var timestamp = 1350943077107; 63 | var datestring = "2012-10-22T21:57:57Z"; 64 | var date = new Date(); 65 | date.setTime(timestamp); 66 | deepEqual(types['datetime.iso8601'].encode(date, $xml), $xml('dateTime.iso8601').text(datestring), 67 | "Date encodes to ..."); 68 | 69 | })); 70 | 71 | test("Array encoding", need$xml(function($xml) { 72 | var types = $.xmlrpc.types; 73 | 74 | equal(s(types.array.encode([4, "Hello"], $xml)), 75 | '4Hello', 76 | "Simple array encodes"); 77 | 78 | // If not all browsers encode this to , this will fail. 79 | equal(s(types.array.encode([], $xml)), 80 | '', 81 | "Empty array encodes"); 82 | 83 | equal(s(types.array.encode([1, [2]], $xml)), 84 | '' + 85 | '1' + 86 | '' + 87 | '2' + 88 | '' + 89 | '', 90 | "Array containing array encodes"); 91 | })); 92 | 93 | test("Guessing types", need$xml(function($xml) { 94 | ok($.xmlrpc.toXmlRpc(4, $xml).is('int'), 95 | "Number 4 guessed to be "); 96 | 97 | ok($.xmlrpc.toXmlRpc(4.5, $xml).is('double'), 98 | "Number 4.5 guessed to be "); 99 | 100 | ok($.xmlrpc.toXmlRpc(true, $xml).is('boolean'), 101 | "Boolean guessed to be "); 102 | 103 | ok($.xmlrpc.toXmlRpc(null, $xml).is('nil'), 104 | "null guessed to be "); 105 | 106 | ok($.xmlrpc.toXmlRpc(undefined, $xml).is('nil'), 107 | "undefined guessed to be "); 108 | 109 | ok($.xmlrpc.toXmlRpc("Hello", $xml).is('string'), 110 | "String guessed to be "); 111 | 112 | ok($.xmlrpc.toXmlRpc(new Date(), $xml).is('dateTime\\.iso8601'), 113 | "Date guessed to be "); 114 | 115 | ok($.xmlrpc.toXmlRpc({foo: 'bar'}, $xml).is('struct'), 116 | "Object guessed to be "); 117 | 118 | ok($.xmlrpc.toXmlRpc([], $xml).is('array'), 119 | "Array guessed to be "); 120 | 121 | ok($.xmlrpc.toXmlRpc(new ArrayBuffer(), $xml).is('base64'), 122 | "ArrayBuffer guessed to be "); 123 | })); 124 | 125 | })(); 126 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/tests/tests.request.js: -------------------------------------------------------------------------------- 1 | /*jshint browser:true */ 2 | /*globals $ deepEqual equal ok assert test module throws */ 3 | (function() { 4 | "use strict"; 5 | module("Request"); 6 | 7 | /** 8 | * Serialize a Document to a string easily 9 | */ 10 | var s = (function() { 11 | var serializer = new XMLSerializer(); 12 | return function($node) { 13 | return serializer.serializeToString($node); 14 | }; 15 | })(); 16 | 17 | var d = (function() { 18 | var parser = new DOMParser(); 19 | return function(xml) { 20 | return parser.parseFromString(xml, "text/xml"); 21 | }; 22 | })(); 23 | 24 | $.mockjax({ 25 | url: '/mock/xmlrpc/hello', 26 | contentType: 'text/xml', 27 | responseTime: 1, 28 | responseText: ( 29 | '' + 30 | '' + 31 | '' + 32 | '4' + 33 | 'World!' + 34 | '' + 35 | '' 36 | ) 37 | }); 38 | 39 | $.mockjax({ 40 | url: '/mock/xmlrpc/empty', 41 | contentType: 'text/xml', 42 | responseTime: 1, 43 | responseText: ( 44 | '' + 45 | '' + 46 | '' + 47 | '' + 48 | '' 49 | ) 50 | }); 51 | 52 | asyncTest("Make a simple request", function() { 53 | expect(2); 54 | $.xmlrpc("/mock/xmlrpc/hello", { 55 | 'methodName': 'test-method', 56 | 'params': [1, "Hello"], 57 | 'success': function(data, status) { 58 | deepEqual(this.data, 59 | "test-method" + 60 | "1" + 61 | "Hello" + 62 | "", 63 | "Request body was encoded correctly!"); 64 | deepEqual(data, [4, 'World!'], 65 | "Response body was decoded correctly!"); 66 | start(); 67 | }, 68 | 'error': function() { 69 | ok(false, arguments); 70 | } 71 | }); 72 | }); 73 | 74 | asyncTest("Make a request with no params", function() { 75 | expect(2); 76 | $.xmlrpc("/mock/xmlrpc/empty", { 77 | 'methodName': 'test-method', 78 | 'success': function(data, request) { 79 | deepEqual(this.data, 80 | "test-method" + 81 | "", 82 | "Request body was encoded correctly!"); 83 | deepEqual(data, [], 84 | "Response body was decoded correctly!"); 85 | start(); 86 | }, 87 | 'error': function() { 88 | ok(false, arguments); 89 | } 90 | }); 91 | }); 92 | 93 | })(); 94 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery-xmlrpc-master/xmlrpc.jquery.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xmlrpc", 3 | "version": "0.4.4", 4 | "title": "XML-RPC over AJAX", 5 | "description": "Interact with remote XML-RPC services using AJAX", 6 | "author": { 7 | "name": "Tim Heap", 8 | "email": "heap.tim@gmail.com", 9 | "url": "http://timheap.me" 10 | }, 11 | "licenses": [ 12 | {"url": "http://unlicense.org/"} 13 | ], 14 | "dependencies": { 15 | "jquery": ">1.8.0" 16 | }, 17 | "keywords": [ 18 | "xmlrpc", "xml-rpc", 19 | "ajax", 20 | "xml", 21 | "remote-service" 22 | ], 23 | "homepage": "https://github.com/timheap/jquery-xmlrpc", 24 | "docs": "http://jquery-xml-rpc.readthedocs.org/" 25 | } 26 | -------------------------------------------------------------------------------- /pyDAEDALUS/js/jquery.xmlrpc.min.js: -------------------------------------------------------------------------------- 1 | !function(e){"use strict";var t=function(){Error.apply(this,arguments)};t.prototype=new Error,t.prototype.type="XML-RPC fault";var n=e.xmlrpc=function(t,i){2===arguments.length?i.url=t:(i=t,t=i.url),i.dataType="xml json",i.type="POST",i.contentType="text/xml",i.converters={"xml json":n.parseDocument};var r=n.document(i.methodName,i.params||[]);return i.data="XMLSerializer"in window?(new window.XMLSerializer).serializeToString(r):r.xml,e.ajax(i)};n.createXMLDocument=function(){if(document.implementation&&"createDocument"in document.implementation)return document.implementation.createDocument(null,null,null);var e,t,n=["MSXML6.DomDocument","MSXML3.DomDocument","MSXML2.DomDocument","MSXML.DomDocument","Microsoft.XmlDom"];for(e=0,t=n.length;t>e;e++)try{return new ActiveXObject(n[e])}catch(i){}},n.document=function(t,i){var r=n.createXMLDocument(),a=function(t){return e(r.createElement(t))},o=a("methodName").text(t),s=a("params").append(e.map(i,function(e){var t=a("value").append(n.toXmlRpc(e,a));return a("param").append(t)})),u=a("methodCall").append(o,s);return r.appendChild(u.get(0)),r};var i=function(e){return e===parseInt(e,10)&&!isNaN(e)};n.toXmlRpc=function(t,n){if(t instanceof r)return t.toXmlRpc(n);var a=e.xmlrpc.types,o=e.type(t);switch(o){case"undefined":case"null":return a.nil.encode(t,n);case"date":return a["datetime.iso8601"].encode(t,n);case"object":return t instanceof ArrayBuffer?a.base64.encode(t,n):a.struct.encode(t,n);case"number":return i(t)?a["int"].encode(t,n):a["double"].encode(t,n);case"array":case"boolean":case"string":return a[o].encode(t,n);default:throw new Error("Unknown type",t)}},n.parseDocument=function(i){var r=e(i),a=r.children("methodresponse"),o=a.find("> fault");if(0===o.length){var s=a.find("> params > param > value > *"),u=s.toArray().map(n.parseNode);return u}var l=n.parseNode(o.find("> value > *").get(0)),c=new t(l.faultString);throw c.msg=c.message=l.faultString,c.type=c.code=l.faultCode,c},n.parseNode=function(e){if(void 0===e)return null;var t=e.nodeName.toLowerCase();if(t in n.types)return n.types[t].decode(e);throw new Error("Unknown type "+t)},n.parseValue=function(t){var i=e(t).children()[0];return i?n.parseNode(i):e(t).text()};var r=function(){};e.xmlrpc.types={},n.makeType=function(t,i,a,o){var s;if(s=function(e){this.value=e},s.prototype=new r,s.prototype.tagName=t,i){var u=a,l=o;a=function(e,t){var n=u(e);return t(s.tagName).text(n)},o=function(t){return l(e(t).text(),t)}}s.prototype.toXmlRpc=function(e){return s.encode(this.value,e)},s.tagName=t,s.encode=a,s.decode=o,n.types[t.toLowerCase()]=s};var a=function(e){return""+Math.floor(e)},o=function(e){return parseInt(e,10)};n.makeType("int",!0,a,o),n.makeType("i4",!0,a,o),n.makeType("i8",!0,a,o),n.makeType("i16",!0,a,o),n.makeType("i32",!0,a,o),n.makeType("double",!0,String,function(e){return parseFloat(e,10)}),n.makeType("string",!0,String,String),n.makeType("boolean",!0,function(e){return e?"1":"0"},function(e){return"1"===e});var s=function(e){return 10>e?"0"+e:e};n.makeType("dateTime.iso8601",!0,function(e){return[e.getUTCFullYear(),"-",s(e.getUTCMonth()+1),"-",s(e.getUTCDate()),"T",s(e.getUTCHours()),":",s(e.getUTCMinutes()),":",s(e.getUTCSeconds()),"Z"].join("")},function(e){return new Date(e)}),n.binary=function(){var e="=",t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),n=t.reduce(function(e,t,n){return e[t]=n,e},{});return{toBase64:function(n){for(var i,r=[],a=new Uint8Array(n),o=0;o>18)%64]),r.push(t[(i>>12)%64]),r.push(t[(i>>6)%64]),r.push(t[(i>>0)%64]);for(var s=3-(n.byteLength%3||3);s--;)r[r.length-s-1]=e;return r.join("")},fromBase64:function(t){t=t.replace(/\s/g, '');var i=t.length,r=3*(i/4);t.charAt(i-1)===e&&r--,t.charAt(i-2)===e&&r--;for(var a,o=new ArrayBuffer(r),s=new Uint8Array(o),u=0,l=0;i>u;u+=4,l+=3)a=(n[t[u+0]]<<18)+(n[t[u+1]]<<12)+(n[t[u+2]]<<6)+(n[t[u+3]]<<0),s[l+0]=(a>>16)%256,s[l+1]=(a>>8)%256,s[l+2]=(a>>0)%256;return o}}}(),n.makeType("base64",!0,function(e){return n.binary.toBase64(e)},function(e){return n.binary.fromBase64(e)}),n.makeType("nil",!1,function(e,t){return t("nil")},function(){return null}),n.makeType("struct",!1,function(t,i){var r=i("struct");return e.each(t,function(e,t){var a=i("name").text(e),o=i("value").append(n.toXmlRpc(t,i));r.append(i("member").append(a,o))}),r},function(t){return e(t).find("> member").toArray().reduce(function(t,i){var r=e(i),a=r.find("> name").text(),o=n.parseValue(r.find("> value"));return t[a]=o,t},{})}),n.makeType("array",!1,function(t,i){var r=i("array"),a=i("data");return e.each(t,function(e,t){a.append(i("value").append(n.toXmlRpc(t,i)))}),r.append(a),r},function(t){return e(t).find("> data > value").toArray().map(n.parseValue)}),n.force=function(e,t){return new n.types[e](t)}}(jQuery); 2 | -------------------------------------------------------------------------------- /pyDAEDALUS/main.js: -------------------------------------------------------------------------------- 1 | const { app, BrowserWindow } = require('electron'); 2 | const {ipcMain, dialog} = require('electron') 3 | const path = require ('path'); 4 | const fs = require('fs'); 5 | const os = require('os'); 6 | // var zerorpc = require("zerorpc"); 7 | 8 | // Keep a global reference of the window object, if you don't, the window will 9 | // be closed automatically when the JavaScript object is garbage collected. 10 | let win 11 | 12 | function createWindow () { 13 | // call python DAEDALUS Server 14 | // var subpy = require('child_process').spawn('./dist/DAEDserve'); 15 | // Create the window. 16 | win = new BrowserWindow({ 17 | width: 500, 18 | height: 440, 19 | webPreferences: { 20 | nodeIntegration: true 21 | } 22 | }) 23 | 24 | // and load the index.html of the app. 25 | win.loadFile('index.html') 26 | 27 | // Open the DevTools. 28 | // win.webContents.openDevTools() 29 | 30 | // Emitted when the window is closed. 31 | win.on('closed', () => { 32 | // Dereference the window object, usually you would store windows 33 | // in an array if your app supports multi windows, this is the time 34 | // when you should delete the corresponding element. 35 | // subpy.kill('SIGINT'); 36 | win = null 37 | }) 38 | } 39 | var plyfile='tet.ply' 40 | var seqfile='M13.txt' 41 | // This method will be called when Electron has finished 42 | // initialization and is ready to create browser windows. 43 | // Some APIs can only be used after this event occurs. 44 | app.on('ready', createWindow) 45 | 46 | // Quit when all windows are closed. 47 | app.on('window-all-closed', () => { 48 | // On macOS it is common for applications and their menu bar 49 | // to stay active until the user quits explicitly with Cmd + Q 50 | if (process.platform !== 'darwin') { 51 | app.quit() 52 | } 53 | }) 54 | 55 | app.on('activate', () => { 56 | // On macOS it's common to re-create a window in the app when the 57 | // dock icon is clicked and there are no other windows open. 58 | if (win === null) { 59 | createWindow() 60 | } 61 | }) 62 | 63 | // In this file you can include the rest of your app's specific main process 64 | // code. You can also put them in separate files and require them here. 65 | 66 | ipcMain.on('open-plyfile-dialog', (event) => { 67 | let plyfiles = dialog.showOpenDialogSync({ properties: ['openFile'] }) 68 | plyfile = plyfiles[0] 69 | win.webContents.send('plyTableUpdate',plyfile); 70 | }) 71 | ipcMain.on('open-seqfile-dialog', (event) => { 72 | let seqfiles = dialog.showOpenDialogSync({ properties: ['openFile'] }) 73 | seqfile = seqfiles[0] 74 | win.webContents.send('seqTableUpdate',seqfile); 75 | }) 76 | ipcMain.on('changeDX', (event, args) => { 77 | dxType = args 78 | win.webContents.send('dxUpdate',dxType); 79 | }) 80 | 81 | exports.handleForm = function handleForm(targetWindow, projName, helicalForm, helicalTurns) { 82 | // var client = new zerorpc.Client(); 83 | // client.connect("tcp://127.0.0.1:4242"); 84 | 85 | win.webContents.send('finishedUpdate',"Processing...", projName, helicalForm, helicalTurns, plyfile, seqfile); 86 | // client.invoke("calc", projName, helicalForm, helicalTurns, plyfile, seqfile, function(error, results) { 87 | // console.log(error); 88 | // let tmpSt=results.toString() 89 | // console.log(tmpSt); 90 | // if (tmpSt==="Finished!") { 91 | // win.webContents.send('finishedUpdate',"Success!"); 92 | // } 93 | // }); 94 | }; 95 | -------------------------------------------------------------------------------- /pyDAEDALUS/oct.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 6 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 8 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.000000 0.000000 1.000000 11 | 0.000000 0.000000 -1.000000 12 | 0.000000 1.000000 0.000000 13 | 0.000000 -1.000000 0.000000 14 | 1.000000 0.000000 0.000000 15 | -1.000000 0.000000 0.000000 16 | 3 0 4 2 17 | 3 0 3 4 18 | 3 0 5 3 19 | 3 0 2 5 20 | 3 1 2 4 21 | 3 1 4 3 22 | 3 1 3 5 23 | 3 1 5 2 24 | -------------------------------------------------------------------------------- /pyDAEDALUS/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pyDAEDALUSX", 3 | "productName": "pyDAEDALUSX", 4 | "version": "0.1.0", 5 | "description": "Python DAEDALUS for RNA or DNA routing with a GUI", 6 | "main": "main.js", 7 | "scripts": { 8 | "start": "electron ." 9 | }, 10 | "author": "Sakul Ratanalert, Tyson Shepherd", 11 | "license": "MIT", 12 | "devDependencies": { 13 | "electron": "^7.1.1", 14 | "electron-packager": "^14.1.0", 15 | "electron-rebuild": "^1.8.6" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /pyDAEDALUS/pbip.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 7 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 10 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -0.794100 0.302600 -0.037700 11 | -0.494400 -0.498800 0.480000 12 | -0.096600 -0.305400 -0.416900 13 | 0.003600 0.685800 -0.503300 14 | 0.096600 0.305400 0.416900 15 | 0.488600 -0.610900 0.334300 16 | 0.796300 0.121200 -0.273400 17 | 3 3 2 0 18 | 3 2 1 0 19 | 3 2 5 1 20 | 3 0 4 3 21 | 3 0 1 4 22 | 3 4 1 5 23 | 3 2 3 6 24 | 3 3 4 6 25 | 3 5 2 6 26 | 3 4 5 6 27 | -------------------------------------------------------------------------------- /pyDAEDALUS/pyDAEDALUSX.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "." 5 | } 6 | ] 7 | } -------------------------------------------------------------------------------- /pyDAEDALUS/renderFile.js: -------------------------------------------------------------------------------- 1 | const { remote, ipcRenderer } = require('electron'); 2 | const { handleForm} = remote.require('./main'); 3 | const currentWindow = remote.getCurrentWindow(); 4 | 5 | const submitFormButton = document.querySelector("#ipcForm2"); 6 | const responseParagraph = document.getElementById('response'); 7 | const dximgParagraph = document.getElementById('DXimg'); 8 | const plyTableCell = document.getElementById('plyTable'); 9 | const seqTableCell = document.getElementById('seqTable'); 10 | const helF = document.getElementById("helicalForm"); 11 | const selectPlyBtn = document.getElementById('select-ply'); 12 | const selectSeqBtn = document.getElementById('select-seq'); 13 | 14 | submitFormButton.addEventListener("submit", function(event){ 15 | event.preventDefault(); // stop the form from submitting 16 | let projName = document.getElementById("projName").value; 17 | let helicalForm = document.getElementById("helicalForm").value; 18 | let helicalTurns = document.getElementById("helicalTurns").value; 19 | handleForm(currentWindow, projName, helicalForm, helicalTurns) 20 | }); 21 | 22 | ipcRenderer.on('form-received', function(event, args){ 23 | responseParagraph.innerHTML = args 24 | /* 25 | you could choose to submit the form here after the main process completes 26 | and use this as a processing step 27 | */ 28 | }); 29 | 30 | ipcRenderer.on('plyTableUpdate', function(event, args){ 31 | plyTableCell.innerHTML = args 32 | }); 33 | 34 | ipcRenderer.on('seqTableUpdate', function(event, args){ 35 | seqTableCell.innerHTML = args 36 | }); 37 | 38 | ipcRenderer.on('finishedUpdate', function(event, args, projNameA, helicalFormA, helicalTurnsA, plyfileA, seqfileA){ 39 | responseParagraph.innerHTML = args 40 | $.xmlrpc({ 41 | url: 'http://localhost:4242', 42 | methodName: 'calc', 43 | params: [projNameA, helicalFormA, helicalTurnsA, plyfileA, seqfileA], 44 | success: function(response, status, jqXHR) { responseParagraph.innerHTML = "Success!" }, 45 | error: function(jqXHR, status, error) { responseParagraph.innerHTML = "Fail!" } 46 | }); 47 | }); 48 | 49 | ipcRenderer.on('dxUpdate', function(event, args){ 50 | if (args==="Bform") { 51 | dximgParagraph.innerHTML = '

' 52 | } 53 | if (args==="Aform") { 54 | dximgParagraph.innerHTML = '

' 55 | } 56 | if (args==="Hybrid") { 57 | dximgParagraph.innerHTML = '

' 58 | } 59 | if (args==="Twisted") { 60 | dximgParagraph.innerHTML = '

' 61 | } 62 | }); 63 | 64 | selectPlyBtn.addEventListener('click', (event) => { 65 | ipcRenderer.send('open-plyfile-dialog') 66 | }) 67 | 68 | selectSeqBtn.addEventListener('click', (event) => { 69 | ipcRenderer.send('open-seqfile-dialog') 70 | }) 71 | 72 | helF.addEventListener('change', (event) => { 73 | let dxChoice = document.getElementById("helicalForm").value; 74 | console.log(dxChoice) 75 | ipcRenderer.send('changeDX', dxChoice) 76 | }); 77 | -------------------------------------------------------------------------------- /pyDAEDALUS/requirements.txt: -------------------------------------------------------------------------------- 1 | numpy>=1.11.1 2 | matplotlib>=1.5.1 3 | networkx==1.11 4 | scipy>=0.18.0 5 | click>=6.6 6 | mpmath>=0.19 7 | mock>=2.0.0 8 | tqdm>=4.9.0 9 | flake8>=3.2.0 10 | -------------------------------------------------------------------------------- /pyDAEDALUS/testServer.py: -------------------------------------------------------------------------------- 1 | import xmlrpc.client 2 | # 3 | # connect to localhost, port 4242 running the RPC server 4 | # 5 | proxy = xmlrpc.client.ServerProxy("http://localhost:4242/") 6 | multicall = xmlrpc.client.MultiCall(proxy) 7 | # 8 | # calc: function on the RPC server to route the origami 9 | # calc(projectName, helicalForm, helicalTurns, plyFile, sequenceFile): 10 | # projectName: short descriptive name, name of the generated folder 11 | # helicalForm: 'Bform', 'Aform', 'Hybrid', 'Twisted' 12 | # helicalTurns: multiplied by 11 (Aforms) or 10.5 (Bform) 13 | # plyFile: Path to ply file 14 | # sequenceFile: Path to sequence file 15 | # 16 | multicall.calc("TestTet66","Aform",6,"./tet.ply","./M13.txt"); 17 | result = multicall() 18 | multicall.calc("TestOct66","Aform",6,"./oct.ply","./M13.txt"); 19 | result = multicall() 20 | multicall.calc("TestOct44","Aform",4,"./oct.ply","./M13.txt"); 21 | result = multicall() 22 | multicall.calc("TestPBip66","Aform",6,"./pbip.ply","./M13.txt"); 23 | result = multicall() 24 | -------------------------------------------------------------------------------- /pyDAEDALUS/tet.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 4 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 4 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.000000 0.000000 0.612372 11 | -0.288675 -0.500000 -0.204124 12 | -0.288675 0.500000 -0.204124 13 | 0.577350 0.000000 -0.204124 14 | 3 0 2 1 15 | 3 0 1 3 16 | 3 0 3 2 17 | 3 1 2 3 18 | -------------------------------------------------------------------------------- /pyDAEDALUSX_instructions.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/pyDAEDALUS/139f47bb27144a5121d8218a8fa4a61e9ae05832/pyDAEDALUSX_instructions.pdf -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | numpy>=1.11.1 2 | matplotlib>=1.5.1 3 | networkx==1.11 4 | scipy>=0.18.0 5 | click>=6.6 6 | mpmath>=0.19 7 | mock>=2.0.0 8 | tqdm>=4.9.0 9 | flake8>=3.2.0 10 | --------------------------------------------------------------------------------