Browse Source

imported code from https://github.com/wachtlerlab/Reg-MaxS v1.1

Ajayrama Kumaraswamy 6 years ago
parent
commit
c5fcd4aa0b
100 changed files with 66656 additions and 0 deletions
  1. 7 0
      .gitignore
  2. 99 0
      LICENSE-CCBY
  3. 1 0
      ParFiles/PCABased/HSNL.json
  4. 1 0
      ParFiles/PCABased/HSNR.json
  5. 1 0
      ParFiles/PCABased/HSNR1-4.json
  6. 1 0
      ParFiles/PCABased/LLC.json
  7. 1 0
      ParFiles/Reg-MaxS-N/HSNL-HSNR.json
  8. 1 0
      ParFiles/Reg-MaxS-N/HSNL.json
  9. 1 0
      ParFiles/Reg-MaxS-N/LLC.json
  10. 1 0
      ParFiles/Reg-MaxS/HSN-fluoro01.CNGRandRot0.json
  11. 1 0
      ParFiles/Reg-MaxS/HSN-fluoro01.CNGRandRot1.json
  12. 1 0
      ParFiles/Reg-MaxS/HSN-fluoro01.CNGRandScale0.json
  13. 1 0
      ParFiles/Reg-MaxS/HSN-fluoro01.CNGRandTrans0-9.json
  14. 1 0
      ParFiles/Reg-MaxS/HSN-fluoro01.CNGRandTrans1.json
  15. 1 0
      ParFiles/Reg-MaxS/HSN-fluoro01.CNGRandTranslate0.json
  16. 1 0
      ParFiles/Reg-MaxS/LLC1.json
  17. 70 0
      Readme.md
  18. 1304 0
      TestFiles/HSN-fluoro01.CNG.swc
  19. 1304 0
      TestFiles/HSN-fluoro01.CNGNoiseStd1.swc
  20. 1 0
      TestFiles/HSN-fluoro01.CNGNoiseStd1RandTrans.json
  21. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd1RandTrans0.swc
  22. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd1RandTrans1.swc
  23. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd1RandTrans2.swc
  24. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd1RandTrans3.swc
  25. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd1RandTrans4.swc
  26. 1304 0
      TestFiles/HSN-fluoro01.CNGNoiseStd2.swc
  27. 1 0
      TestFiles/HSN-fluoro01.CNGNoiseStd2RandTrans.json
  28. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd2RandTrans0.swc
  29. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd2RandTrans1.swc
  30. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd2RandTrans2.swc
  31. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd2RandTrans3.swc
  32. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd2RandTrans4.swc
  33. 1304 0
      TestFiles/HSN-fluoro01.CNGNoiseStd3.swc
  34. 1 0
      TestFiles/HSN-fluoro01.CNGNoiseStd3RandTrans.json
  35. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd3RandTrans0.swc
  36. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd3RandTrans1.swc
  37. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd3RandTrans2.swc
  38. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd3RandTrans3.swc
  39. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd3RandTrans4.swc
  40. 1304 0
      TestFiles/HSN-fluoro01.CNGNoiseStd4.swc
  41. 1 0
      TestFiles/HSN-fluoro01.CNGNoiseStd4RandTrans.json
  42. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd4RandTrans0.swc
  43. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd4RandTrans1.swc
  44. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd4RandTrans2.swc
  45. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd4RandTrans3.swc
  46. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd4RandTrans4.swc
  47. 1304 0
      TestFiles/HSN-fluoro01.CNGNoiseStd5.swc
  48. 1 0
      TestFiles/HSN-fluoro01.CNGNoiseStd5RandTrans.json
  49. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd5RandTrans0.swc
  50. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd5RandTrans1.swc
  51. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd5RandTrans2.swc
  52. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd5RandTrans3.swc
  53. 1305 0
      TestFiles/HSN-fluoro01.CNGNoiseStd5RandTrans4.swc
  54. 1 0
      TestFiles/HSN-fluoro01.CNGRandRot.json
  55. 1305 0
      TestFiles/HSN-fluoro01.CNGRandRot0.swc
  56. 1 0
      TestFiles/HSN-fluoro01.CNGRandScale.json
  57. 1305 0
      TestFiles/HSN-fluoro01.CNGRandScale0.swc
  58. 1 0
      TestFiles/HSN-fluoro01.CNGRandTrans.json
  59. 1305 0
      TestFiles/HSN-fluoro01.CNGRandTrans0.swc
  60. 1305 0
      TestFiles/HSN-fluoro01.CNGRandTrans1.swc
  61. 1305 0
      TestFiles/HSN-fluoro01.CNGRandTrans2.swc
  62. 1305 0
      TestFiles/HSN-fluoro01.CNGRandTrans3.swc
  63. 1305 0
      TestFiles/HSN-fluoro01.CNGRandTrans4.swc
  64. 1 0
      TestFiles/HSN-fluoro01.CNGRandTranslate.json
  65. 1305 0
      TestFiles/HSN-fluoro01.CNGRandTranslate0.swc
  66. 1012 0
      TestFiles/HSNL/HSN-fluoro02.CNG.swc
  67. 1046 0
      TestFiles/HSNL/HSN-fluoro03.CNG.swc
  68. 1395 0
      TestFiles/HSNL/HSN-fluoro06.CNG.swc
  69. 1292 0
      TestFiles/HSNL/HSN-fluoro08.CNG.swc
  70. 1095 0
      TestFiles/HSNL/HSN-fluoro10.CNG.swc
  71. 1304 0
      TestFiles/HSNR/HSN-fluoro01.CNG.swc
  72. 923 0
      TestFiles/HSNR/HSN-fluoro04.CNG.swc
  73. 1917 0
      TestFiles/HSNR/HSN-fluoro05.CNG.swc
  74. 931 0
      TestFiles/HSNR/HSN-fluoro07.CNG.swc
  75. 1212 0
      TestFiles/HSNR/HSN-fluoro09.CNG.swc
  76. 187 0
      TestFiles/LLC/Cha-F-000012.CNG.swc
  77. 166 0
      TestFiles/LLC/Cha-F-000018.CNG.swc
  78. 126 0
      TestFiles/LLC/Cha-F-200000.CNG.swc
  79. 158 0
      TestFiles/LLC/Cha-F-300051.CNG.swc
  80. 276 0
      TestFiles/LLC/Cha-F-300331.CNG.swc
  81. 166 0
      TestFiles/LLC/Cha-F-400051.CNG.swc
  82. 166 0
      TestFiles/LLC/Cha-F-400051.CNG/Cha-F-400051.CNG.swc
  83. 212 0
      TestFiles/LLC/Gad1-F-000062.CNG.swc
  84. 117 0
      TestFiles/LLC/Gad1-F-600000.CNG.swc
  85. 0 0
      regmaxsn/__init__.py
  86. 122 0
      regmaxsn/core/RegMaxSPars.py
  87. 212 0
      regmaxsn/core/SWCTransforms.py
  88. 0 0
      regmaxsn/core/__init__.py
  89. 50 0
      regmaxsn/core/farthestPointStats.py
  90. 539 0
      regmaxsn/core/iterativeRegistration.py
  91. 35 0
      regmaxsn/core/matplotlibRCParams.py
  92. 95 0
      regmaxsn/core/maxDistanceBasedMetric.py
  93. 23 0
      regmaxsn/core/misc.py
  94. 58 0
      regmaxsn/core/occupancyBasedMeasure.py
  95. 163 0
      regmaxsn/core/plotDensities.py
  96. 119 0
      regmaxsn/core/rotOnce.py
  97. 134 0
      regmaxsn/core/scaleOnce.py
  98. 205 0
      regmaxsn/core/swcFuncs.py
  99. 112 0
      regmaxsn/core/transOnce.py
  100. 0 0
      regmaxsn/core/transforms.py

+ 7 - 0
.gitignore

@@ -0,0 +1,7 @@
+*.iml
+*~
+*.pyc
+.idea
+tmp
+*egg-info
+.eggs

+ 99 - 0
LICENSE-CCBY

@@ -0,0 +1,99 @@
+Creative Commons Attribution 4.0 International Public License
+
+By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
+
+Section 1 – Definitions.
+
+    Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
+    Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.
+    Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
+    Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
+    Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
+    Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
+    Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
+    Licensor means the individual(s) or entity(ies) granting rights under this Public License.
+    Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
+    Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
+    You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.
+
+Section 2 – Scope.
+
+    License grant.
+        Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
+            reproduce and Share the Licensed Material, in whole or in part; and
+            produce, reproduce, and Share Adapted Material.
+        Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
+        Term. The term of this Public License is specified in Section 6(a).
+        Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
+        Downstream recipients.
+            Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
+            No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
+        No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).
+
+    Other rights.
+        Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
+        Patent and trademark rights are not licensed under this Public License.
+        To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties.
+
+Section 3 – License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the following conditions.
+
+    Attribution.
+
+        If You Share the Licensed Material (including in modified form), You must:
+            retain the following if it is supplied by the Licensor with the Licensed Material:
+                identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
+                a copyright notice;
+                a notice that refers to this Public License;
+                a notice that refers to the disclaimer of warranties;
+                a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
+            indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
+            indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
+        You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
+        If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.
+        If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License.
+
+Section 4 – Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
+
+    for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database;
+    if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and
+    You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
+
+For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.
+
+Section 5 – Disclaimer of Warranties and Limitation of Liability.
+
+    Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
+    To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.
+
+    The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
+
+Section 6 – Term and Termination.
+
+    This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
+
+    Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
+        automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
+        upon express reinstatement by the Licensor.
+    For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
+    For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
+    Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
+
+Section 7 – Other Terms and Conditions.
+
+    The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
+    Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
+
+Section 8 – Interpretation.
+
+    For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
+    To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
+    No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
+    Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
+
+Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” The text of the Creative Commons public licenses is dedicated to the public domain under the CC0 Public Domain Dedication. Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses.
+
+Creative Commons may be contacted at creativecommons.org.

+ 1 - 0
ParFiles/PCABased/HSNL.json

@@ -0,0 +1 @@
+[{"usePartsDir": false, "refSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro02.CNG.swc", "gridSizes": [40.0, 20.0, 10.0], "testSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro02.CNG.swc", "resFile": "/home/aj/repos/Reg-MaxS/Results/PCABased/HSNL/HSN-fluoro02.CNG.swc"}, {"usePartsDir": false, "refSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro02.CNG.swc", "gridSizes": [40.0, 20.0, 10.0], "testSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro03.CNG.swc", "resFile": "/home/aj/repos/Reg-MaxS/Results/PCABased/HSNL/HSN-fluoro03.CNG.swc"}, {"usePartsDir": false, "refSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro02.CNG.swc", "gridSizes": [40.0, 20.0, 10.0], "testSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro06.CNG.swc", "resFile": "/home/aj/repos/Reg-MaxS/Results/PCABased/HSNL/HSN-fluoro06.CNG.swc"}, {"usePartsDir": false, "refSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro02.CNG.swc", "gridSizes": [40.0, 20.0, 10.0], "testSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro08.CNG.swc", "resFile": "/home/aj/repos/Reg-MaxS/Results/PCABased/HSNL/HSN-fluoro08.CNG.swc"}, {"usePartsDir": false, "refSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro02.CNG.swc", "gridSizes": [40.0, 20.0, 10.0], "testSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro10.CNG.swc", "resFile": "/home/aj/repos/Reg-MaxS/Results/PCABased/HSNL/HSN-fluoro10.CNG.swc"}]

+ 1 - 0
ParFiles/PCABased/HSNR.json

@@ -0,0 +1 @@
+[{"usePartsDir": false, "refSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNR/HSN-fluoro01.CNG.swc", "gridSizes": [40.0, 20.0, 10.0], "testSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNR/HSN-fluoro01.CNG.swc", "resFile": "/home/aj/repos/Reg-MaxS/Results/PCABased/HSNR/HSN-fluoro01.CNG.swc"}, {"usePartsDir": false, "refSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNR/HSN-fluoro01.CNG.swc", "gridSizes": [40.0, 20.0, 10.0], "testSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNR/HSN-fluoro04.CNG.swc", "resFile": "/home/aj/repos/Reg-MaxS/Results/PCABased/HSNR/HSN-fluoro04.CNG.swc"}, {"usePartsDir": false, "refSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNR/HSN-fluoro01.CNG.swc", "gridSizes": [40.0, 20.0, 10.0], "testSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNR/HSN-fluoro05.CNG.swc", "resFile": "/home/aj/repos/Reg-MaxS/Results/PCABased/HSNR/HSN-fluoro05.CNG.swc"}, {"usePartsDir": false, "refSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNR/HSN-fluoro01.CNG.swc", "gridSizes": [40.0, 20.0, 10.0], "testSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNR/HSN-fluoro07.CNG.swc", "resFile": "/home/aj/repos/Reg-MaxS/Results/PCABased/HSNR/HSN-fluoro07.CNG.swc"}, {"usePartsDir": false, "refSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNR/HSN-fluoro01.CNG.swc", "gridSizes": [40.0, 20.0, 10.0], "testSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNR/HSN-fluoro09.CNG.swc", "resFile": "/home/aj/repos/Reg-MaxS/Results/PCABased/HSNR/HSN-fluoro09.CNG.swc"}]

+ 1 - 0
ParFiles/PCABased/HSNR1-4.json

@@ -0,0 +1 @@
+[{"usePartsDir": false, "refSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNR/HSN-fluoro01.CNG.swc", "gridSizes": [40.0, 20.0, 10.0], "testSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNR/HSN-fluoro04.CNG.swc", "resFile": "/home/aj/repos/Reg-MaxS/Results/PCABased/HSNR/HSN-fluoro04.CNG.swc"}]

+ 1 - 0
ParFiles/PCABased/LLC.json

@@ -0,0 +1 @@
+[{"usePartsDir": true, "refSWC": "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Gad1-F-000062.CNG.swc", "gridSizes": [40.0, 20.0, 10.0], "testSWC": "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Gad1-F-000062.CNG.swc", "resFile": "/home/aj/repos/Reg-MaxS/Results/PCABased/LLC/Gad1-F-000062.CNG.swc"}, {"usePartsDir": true, "refSWC": "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Gad1-F-000062.CNG.swc", "gridSizes": [40.0, 20.0, 10.0], "testSWC": "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Cha-F-000012.CNG.swc", "resFile": "/home/aj/repos/Reg-MaxS/Results/PCABased/LLC/Cha-F-000012.CNG.swc"}, {"usePartsDir": true, "refSWC": "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Gad1-F-000062.CNG.swc", "gridSizes": [40.0, 20.0, 10.0], "testSWC": "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Cha-F-300331.CNG.swc", "resFile": "/home/aj/repos/Reg-MaxS/Results/PCABased/LLC/Cha-F-300331.CNG.swc"}, {"usePartsDir": true, "refSWC": "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Gad1-F-000062.CNG.swc", "gridSizes": [40.0, 20.0, 10.0], "testSWC": "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Gad1-F-600000.CNG.swc", "resFile": "/home/aj/repos/Reg-MaxS/Results/PCABased/LLC/Gad1-F-600000.CNG.swc"}, {"usePartsDir": true, "refSWC": "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Gad1-F-000062.CNG.swc", "gridSizes": [40.0, 20.0, 10.0], "testSWC": "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Cha-F-000018.CNG.swc", "resFile": "/home/aj/repos/Reg-MaxS/Results/PCABased/LLC/Cha-F-000018.CNG.swc"}, {"usePartsDir": true, "refSWC": "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Gad1-F-000062.CNG.swc", "gridSizes": [40.0, 20.0, 10.0], "testSWC": "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Cha-F-300051.CNG.swc", "resFile": "/home/aj/repos/Reg-MaxS/Results/PCABased/LLC/Cha-F-300051.CNG.swc"}, {"usePartsDir": true, "refSWC": "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Gad1-F-000062.CNG.swc", "gridSizes": [40.0, 20.0, 10.0], "testSWC": "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Cha-F-400051.CNG.swc", "resFile": "/home/aj/repos/Reg-MaxS/Results/PCABased/LLC/Cha-F-400051.CNG.swc"}, {"usePartsDir": true, "refSWC": "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Gad1-F-000062.CNG.swc", "gridSizes": [40.0, 20.0, 10.0], "testSWC": "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Cha-F-200000.CNG.swc", "resFile": "/home/aj/repos/Reg-MaxS/Results/PCABased/LLC/Cha-F-200000.CNG.swc"}]

+ 1 - 0
ParFiles/Reg-MaxS-N/HSNL-HSNR.json

@@ -0,0 +1 @@
+[{"resDir": "/home/aj/repos/Reg-MaxS/Results/Reg-MaxS-N/HSNL", "transMinRes": 1, "usePartsDir": false, "finallyNormalizeWRT": "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro02.CNG.swc", "rotBounds": [[-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988]], "scaleBounds": [[0.5, 2.0], [0.5, 2.0], [0.5, 2.0]], "rotMinRes": 0.017500000000000002, "minScaleStepSize": 1.005, "nCPU": 6, "transBounds": [[-30, 30], [-30, 30], [-30, 30]], "initRefSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro02.CNG.swc", "swcList": ["/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro02.CNG.swc", "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro03.CNG.swc", "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro06.CNG.swc", "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro08.CNG.swc", "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro10.CNG.swc"], "maxIter": 100, "gridSizes": [40.0, 20.0, 10.0]}, {"resDir": "/home/aj/repos/Reg-MaxS/Results/Reg-MaxS-N/HSNR", "transMinRes": 1, "usePartsDir": false, "finallyNormalizeWRT": "/home/aj/repos/Reg-MaxS/TestFiles/HSNR/HSN-fluoro01.CNG.swc", "rotBounds": [[-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988]], "scaleBounds": [[0.5, 2.0], [0.5, 2.0], [0.5, 2.0]], "rotMinRes": 0.017500000000000002, "minScaleStepSize": 1.005, "nCPU": 6, "transBounds": [[-30, 30], [-30, 30], [-30, 30]], "initRefSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNR/HSN-fluoro01.CNG.swc", "swcList": ["/home/aj/repos/Reg-MaxS/TestFiles/HSNR/HSN-fluoro01.CNG.swc", "/home/aj/repos/Reg-MaxS/TestFiles/HSNR/HSN-fluoro04.CNG.swc", "/home/aj/repos/Reg-MaxS/TestFiles/HSNR/HSN-fluoro05.CNG.swc", "/home/aj/repos/Reg-MaxS/TestFiles/HSNR/HSN-fluoro07.CNG.swc", "/home/aj/repos/Reg-MaxS/TestFiles/HSNR/HSN-fluoro09.CNG.swc"], "maxIter": 100, "gridSizes": [40.0, 20.0, 10.0]}]

+ 1 - 0
ParFiles/Reg-MaxS-N/HSNL.json

@@ -0,0 +1 @@
+[{"resDir": "/home/aj/repos/Reg-MaxS/Results/Reg-MaxS-N/HSNL", "transMinRes": 1, "usePartsDir": false, "finallyNormalizeWRT": "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro02.CNG.swc", "rotBounds": [[-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988]], "scaleBounds": [[0.5, 2.0], [0.5, 2.0], [0.5, 2.0]], "rotMinRes": 0.017500000000000002, "minScaleStepSize": 1.005, "nCPU": 6, "transBounds": [[-30, 30], [-30, 30], [-30, 30]], "initRefSWC": "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro02.CNG.swc", "swcList": ["/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro02.CNG.swc", "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro03.CNG.swc", "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro06.CNG.swc", "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro08.CNG.swc", "/home/aj/repos/Reg-MaxS/TestFiles/HSNL/HSN-fluoro10.CNG.swc"], "maxIter": 100, "gridSizes": [40.0, 20.0, 10.0]}]

+ 1 - 0
ParFiles/Reg-MaxS-N/LLC.json

@@ -0,0 +1 @@
+[{"resDir": "/home/aj/repos/Reg-MaxS/Results/Reg-MaxS-N/LLC", "transMinRes": 1, "usePartsDir": true, "finallyNormalizeWRT": "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Gad1-F-000062.CNG.swc", "rotBounds": [[-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988]], "scaleBounds": [[0.5, 2.0], [0.5, 2.0], [0.5, 2.0]], "rotMinRes": 0.017500000000000002, "minScaleStepSize": 1.005, "nCPU": 6, "transBounds": [[-30, 30], [-30, 30], [-30, 30]], "initRefSWC": "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Gad1-F-000062.CNG.swc", "swcList": ["/home/aj/repos/Reg-MaxS/TestFiles/LLC/Gad1-F-000062.CNG.swc", "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Cha-F-000012.CNG.swc", "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Cha-F-300331.CNG.swc", "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Gad1-F-600000.CNG.swc", "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Cha-F-000018.CNG.swc", "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Cha-F-300051.CNG.swc", "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Cha-F-400051.CNG.swc", "/home/aj/repos/Reg-MaxS/TestFiles/LLC/Cha-F-200000.CNG.swc"], "maxIter": 100, "gridSizes": [40.0, 20.0, 10.0]}]

+ 1 - 0
ParFiles/Reg-MaxS/HSN-fluoro01.CNGRandRot0.json

@@ -0,0 +1 @@
+[{"testSWC": "/home/aj/RegMaxSN_WorkSpace/TestFiles/HSN-fluoro01.CNGRandRot0.swc", "gridSizes": [80.0, 40.0, 20.0, 10.0], "outPartsDir": null, "rotBounds": [[-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988]], "scaleBounds": [[0.5, 2.0], [0.5, 2.0], [0.5, 2.0]], "rotMinRes": 0.017500000000000002, "transBounds": [[-30, 30], [-30, 30], [-30, 30]], "resFile": "/home/aj/RegMaxSN_WorkSpace/Results/Tests/HSN-fluoro01.CNGRandRot0.swc", "nCPU": 6, "refSWC": "/home/aj/RegMaxSN_WorkSpace/TestFiles/HSN-fluoro01.CNG.swc", "minScaleStepSize": 1.005, "transMinRes": 1, "inPartsDir": null, "retainTempFiles": false}]

+ 1 - 0
ParFiles/Reg-MaxS/HSN-fluoro01.CNGRandRot1.json

@@ -0,0 +1 @@
+[{"testSWC": "/home/aj/RegMaxSN_WorkSpace/TestFiles/HSN-fluoro01.CNGRandRot1.swc", "gridSizes": [80.0, 40.0, 20.0, 10.0], "outPartsDir": null, "rotBounds": [[-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988]], "scaleBounds": [[0.5, 2.0], [0.5, 2.0], [0.5, 2.0]], "rotMinRes": 0.017500000000000002, "transBounds": [[-30, 30], [-30, 30], [-30, 30]], "resFile": "/home/aj/RegMaxSN_WorkSpace/Results/Tests/HSN-fluoro01.CNGRandRot1.swc", "nCPU": 6, "refSWC": "/home/aj/RegMaxSN_WorkSpace/TestFiles/HSN-fluoro01.CNG.swc", "minScaleStepSize": 1.005, "transMinRes": 1, "inPartsDir": null, "retainTempFiles": false}]

+ 1 - 0
ParFiles/Reg-MaxS/HSN-fluoro01.CNGRandScale0.json

@@ -0,0 +1 @@
+[{"testSWC": "/home/aj/RegMaxSN_WorkSpace/TestFiles/HSN-fluoro01.CNGRandScale0.swc", "gridSizes": [80.0, 40.0, 20.0, 10.0], "outPartsDir": null, "rotBounds": [[-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988]], "scaleBounds": [[0.5, 2.0], [0.5, 2.0], [0.5, 2.0]], "rotMinRes": 0.017500000000000002, "transBounds": [[-30, 30], [-30, 30], [-30, 30]], "resFile": "/home/aj/RegMaxSN_WorkSpace/Results/Tests/HSN-fluoro01.CNGRandScale0.swc", "nCPU": 6, "refSWC": "/home/aj/RegMaxSN_WorkSpace/TestFiles/HSN-fluoro01.CNG.swc", "minScaleStepSize": 1.005, "transMinRes": 1, "inPartsDir": null, "retainTempFiles": false}]

File diff suppressed because it is too large
+ 1 - 0
ParFiles/Reg-MaxS/HSN-fluoro01.CNGRandTrans0-9.json


+ 1 - 0
ParFiles/Reg-MaxS/HSN-fluoro01.CNGRandTrans1.json

@@ -0,0 +1 @@
+[{"testSWC": "/home/aj/RegMaxSN_WorkSpace/TestFiles/HSN-fluoro01.CNGRandTrans1.swc", "gridSizes": [80.0, 40.0, 20.0, 10.0], "outPartsDir": null, "rotBounds": [[-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988]], "scaleBounds": [[0.5, 2.0], [0.5, 2.0], [0.5, 2.0]], "rotMinRes": 0.017500000000000002, "transBounds": [[-30, 30], [-30, 30], [-30, 30]], "resFile": "/home/aj/RegMaxSN_WorkSpace/Results/Tests/HSN-fluoro01.CNGRandTrans1.swc", "nCPU": 6, "refSWC": "/home/aj/RegMaxSN_WorkSpace/TestFiles/HSN-fluoro01.CNG.swc", "minScaleStepSize": 1.005, "transMinRes": 1, "inPartsDir": null, "retainTempFiles": false}]

+ 1 - 0
ParFiles/Reg-MaxS/HSN-fluoro01.CNGRandTranslate0.json

@@ -0,0 +1 @@
+[{"testSWC": "/home/aj/RegMaxSN_WorkSpace/TestFiles/HSN-fluoro01.CNGRandTranslate0.swc", "gridSizes": [80.0, 40.0, 20.0, 10.0], "outPartsDir": null, "rotBounds": [[-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988]], "scaleBounds": [[0.5, 2.0], [0.5, 2.0], [0.5, 2.0]], "rotMinRes": 0.017500000000000002, "transBounds": [[-30, 30], [-30, 30], [-30, 30]], "resFile": "/home/aj/RegMaxSN_WorkSpace/Results/Tests/HSN-fluoro01.CNGRandTranslate0.swc", "nCPU": 6, "refSWC": "/home/aj/RegMaxSN_WorkSpace/TestFiles/HSN-fluoro01.CNG.swc", "minScaleStepSize": 1.005, "transMinRes": 1, "inPartsDir": null, "retainTempFiles": false}]

+ 1 - 0
ParFiles/Reg-MaxS/LLC1.json

@@ -0,0 +1 @@
+[{"testSWC": "/home/aj/RegMaxSN_WorkSpace/TestFiles/LLC/Cha-F-400051.CNG.swc", "gridSizes": [80.0, 40.0, 20.0, 10.0], "outPartsDir": "/home/aj/RegMaxSN_WorkSpace/Results/Tests/LLC/Cha-F-400051.CNG", "rotBounds": [[-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988], [-0.5235987755982988, 0.5235987755982988]], "scaleBounds": [[0.5, 2.0], [0.5, 2.0], [0.5, 2.0]], "rotMinRes": 0.017500000000000002, "transBounds": [[-30, 30], [-30, 30], [-30, 30]], "resFile": "/home/aj/RegMaxSN_WorkSpace/Results/Tests/LLC/Cha-F-400051.CNG.swc", "nCPU": 6, "refSWC": "/home/aj/RegMaxSN_WorkSpace/TestFiles/LLC/Gad1-F-000062.CNG.swc", "minScaleStepSize": 1.005, "transMinRes": 1, "inPartsDir": "/home/aj/RegMaxSN_WorkSpace/TestFiles/LLC/Cha-F-400051.CNG", "retainTempFiles": false}]

+ 70 - 0
Readme.md

@@ -0,0 +1,70 @@
+Welcome to regmaxsn repository!
+
+Description
+---
+
+**Reg-MaxS and Reg-MaxS-N: Algorithms for co-registration of pairs and groups of neuron morphologies based on maximization of spatial overlap**
+
+These algorithms have been discussed in detail in the following publication:
+
+Kumaraswamy A., Kai K., Ai H., Ikeno H., Wachtler T. (2018). "Spatial registration of neuron morphologies based on maximization of volume overlap". In *BMC Bioinformatics*, DOI: [10.1186/s12859-018-2136-z](https://doi.org/10.1186/s12859-018-2136-z)
+
+This repository contains scripts for running Reg-MaxS and Reg-MaxS-N algorithms for registering pairs and groups of neuron morphologies respectively.
+
+The algorithms are written in  Python and at the moment work only with SWC files.
+
+# Installation
+
+
+With Conda (Linux or Windows):
+
+1. Create a new environment: 
+>conda create --name regmaxsn python=2.7 numpy scipy pillow matplotlib scikit-learn pandas seaborn openpyxl xlrd statsmodels
+2. Activate environment: 
+>(on Linux) source activate regmaxsn 
+>(on Windows) activate regmaxsn
+3. Install regmaxsn: 
+>pip install \<path to Reg-MaxS repository\>
+4. Create Reg-MaxS Workspace. Note where your Reg-MaxS Workspace is created.
+>python \<path to Reg-MaxS repository\>/setupWorkspace.py
+
+Without Conda, with pip and virtualenvwrapper (only for Linux):
+
+1. Create a new environment: 
+>mkvirtualenv regmaxsn
+2. Activate environment: 
+>workon regmaxsn
+3. Install regmaxsn:
+>pip install \<path to Reg-MaxS repository\>
+4. Create Reg-MaxS Workspace. Note where your Reg-MaxS Workspace is created.
+>python \<path to Reg-MaxS repository\>/setupWorkspace.py
+
+NOTE: This environment must be activated every time you want to run Reg-MaxS, Reg-MaxS-N or any other scripts of this package.
+
+# Usage:
+
+## Reg-MaxS
+
+1. First you need to create a parameter file for Reg-MaxS. This is created using the file
+> \<path to your Reg-MaxS Workspace\>/utilityScripts/constructRegMaxSParFile.py
+
+You need to open this .py file in a editor and change variables as needed. The detailed usage instructions of this script are provided at the top of it. Two different use cases have been illustrated using three examples. Take a look at them and modify the script according to your needs.
+
+2. After editing the "constructRegMaxSParFile.py" as needed, create a parameter file as below:
+> python \<path to your Reg-MaxS Workspace\>/utilityScripts/constructRegMaxSParFile.py
+
+3. Run Reg-MaxS with this parameter file:
+> python -m regmaxsn.scripts.algorithms.RegMaxS \<path to the above created Reg-MaxS parameter file\>
+
+## Reg-MaxS-N
+
+1. First you need to create a parameter file for Reg-MaxS-N. This is created using the file
+> \<path to your Reg-MaxS Workspace\>/utilityScripts/constructRegMaxSNParFile.py
+
+You need to open this .py file in a editor and change variables as needed. The detailed usage instructions of this script are provided at the top of it. Two different use cases have been illustrated using three examples. Take a look at them and modify the script according to your needs.
+
+2. After editing the "constructRegMaxSNParFile.py" as needed, create a parameter file as below:
+> python \<path to your Reg-MaxS Workspace\>/utilityScripts/constructRegMaxSNParFile.py
+
+3. Run Reg-MaxS-N with this parameter file:
+> python -m regmaxsn.scripts.algorithms.RegMaxSN \<path to the above created Reg-MaxS-N parameter file\>

File diff suppressed because it is too large
+ 1304 - 0
TestFiles/HSN-fluoro01.CNG.swc


File diff suppressed because it is too large
+ 1304 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd1.swc


+ 1 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd1RandTrans.json

@@ -0,0 +1 @@
+{"translation": [-14.24325039792944, -13.475524314671251, -1.22563862743975], "scale": [1.8937024597158745, 0.9763352276908548, 1.3257686612183175], "inFile": "RegMaxSN_WorkSpace/TestFiles/HSN-fluoro01.CNGNoiseStd1.swc", "angles": [0.14575881829948645, 0.024974745732486703, 0.028606050985605536], "comments": "rotation and scaling about inFile centroid"}

File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd1RandTrans0.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd1RandTrans1.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd1RandTrans2.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd1RandTrans3.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd1RandTrans4.swc


File diff suppressed because it is too large
+ 1304 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd2.swc


+ 1 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd2RandTrans.json

@@ -0,0 +1 @@
+{"translation": [-14.24325039792944, -13.475524314671251, -1.22563862743975], "scale": [1.8937024597158745, 0.9763352276908548, 1.3257686612183175], "inFile": "RegMaxSN_WorkSpace/TestFiles/HSN-fluoro01.CNGNoiseStd2.swc", "angles": [0.14575881829948645, 0.024974745732486703, 0.028606050985605536], "comments": "rotation and scaling about inFile centroid"}

File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd2RandTrans0.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd2RandTrans1.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd2RandTrans2.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd2RandTrans3.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd2RandTrans4.swc


File diff suppressed because it is too large
+ 1304 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd3.swc


+ 1 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd3RandTrans.json

@@ -0,0 +1 @@
+{"translation": [-14.24325039792944, -13.475524314671251, -1.22563862743975], "scale": [1.8937024597158745, 0.9763352276908548, 1.3257686612183175], "inFile": "RegMaxSN_WorkSpace/TestFiles/HSN-fluoro01.CNGNoiseStd3.swc", "angles": [0.14575881829948645, 0.024974745732486703, 0.028606050985605536], "comments": "rotation and scaling about inFile centroid"}

File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd3RandTrans0.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd3RandTrans1.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd3RandTrans2.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd3RandTrans3.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd3RandTrans4.swc


File diff suppressed because it is too large
+ 1304 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd4.swc


+ 1 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd4RandTrans.json

@@ -0,0 +1 @@
+{"translation": [-14.24325039792944, -13.475524314671251, -1.22563862743975], "scale": [1.8937024597158745, 0.9763352276908548, 1.3257686612183175], "inFile": "RegMaxSN_WorkSpace/TestFiles/HSN-fluoro01.CNGNoiseStd4.swc", "angles": [0.14575881829948645, 0.024974745732486703, 0.028606050985605536], "comments": "rotation and scaling about inFile centroid"}

File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd4RandTrans0.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd4RandTrans1.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd4RandTrans2.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd4RandTrans3.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd4RandTrans4.swc


File diff suppressed because it is too large
+ 1304 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd5.swc


+ 1 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd5RandTrans.json

@@ -0,0 +1 @@
+{"translation": [-14.24325039792944, -13.475524314671251, -1.22563862743975], "scale": [1.8937024597158745, 0.9763352276908548, 1.3257686612183175], "inFile": "RegMaxSN_WorkSpace/TestFiles/HSN-fluoro01.CNGNoiseStd5.swc", "angles": [0.14575881829948645, 0.024974745732486703, 0.028606050985605536], "comments": "rotation and scaling about inFile centroid"}

File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd5RandTrans0.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd5RandTrans1.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd5RandTrans2.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd5RandTrans3.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGNoiseStd5RandTrans4.swc


+ 1 - 0
TestFiles/HSN-fluoro01.CNGRandRot.json

@@ -0,0 +1 @@
+{"translation": [0.0, 0.0, 0.0], "scale": [1.0, 1.0, 1.0], "inFile": "RegMaxSN_WorkSpace/TestFiles/HSN-fluoro01.CNG.swc", "angles": [0.3521985514581609, 0.5039103525541285, -0.19749540747982364], "comments": "rotation and scaling about inFile centroid"}

File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGRandRot0.swc


+ 1 - 0
TestFiles/HSN-fluoro01.CNGRandScale.json

@@ -0,0 +1 @@
+{"translation": [0.0, 0.0, 0.0], "scale": [1.2049999787752648, 0.6903239863032911, 1.4426214047690977], "inFile": "RegMaxSN_WorkSpace/TestFiles/HSN-fluoro01.CNG.swc", "angles": [0.0, 0.0, 0.0], "comments": "rotation and scaling about inFile centroid"}

File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGRandScale0.swc


+ 1 - 0
TestFiles/HSN-fluoro01.CNGRandTrans.json

@@ -0,0 +1 @@
+{"translation": [-14.24325039792944, -13.475524314671251, -1.22563862743975], "scale": [1.8937024597158745, 0.9763352276908548, 1.3257686612183175], "inFile": "RegMaxSN_WorkSpace/TestFiles/HSN-fluoro01.CNG.swc", "angles": [0.14575881829948645, 0.024974745732486703, 0.028606050985605536], "comments": "rotation and scaling about inFile centroid"}

File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGRandTrans0.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGRandTrans1.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGRandTrans2.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGRandTrans3.swc


File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGRandTrans4.swc


+ 1 - 0
TestFiles/HSN-fluoro01.CNGRandTranslate.json

@@ -0,0 +1 @@
+{"translation": [13.141647976351251, 4.663062659992558, 18.979687164416433], "scale": [1.0, 1.0, 1.0], "inFile": "RegMaxSN_WorkSpace/TestFiles/HSN-fluoro01.CNG.swc", "angles": [0.0, 0.0, 0.0], "comments": "rotation and scaling about inFile centroid"}

File diff suppressed because it is too large
+ 1305 - 0
TestFiles/HSN-fluoro01.CNGRandTranslate0.swc


File diff suppressed because it is too large
+ 1012 - 0
TestFiles/HSNL/HSN-fluoro02.CNG.swc


File diff suppressed because it is too large
+ 1046 - 0
TestFiles/HSNL/HSN-fluoro03.CNG.swc


File diff suppressed because it is too large
+ 1395 - 0
TestFiles/HSNL/HSN-fluoro06.CNG.swc


File diff suppressed because it is too large
+ 1292 - 0
TestFiles/HSNL/HSN-fluoro08.CNG.swc


File diff suppressed because it is too large
+ 1095 - 0
TestFiles/HSNL/HSN-fluoro10.CNG.swc


File diff suppressed because it is too large
+ 1304 - 0
TestFiles/HSNR/HSN-fluoro01.CNG.swc


+ 923 - 0
TestFiles/HSNR/HSN-fluoro04.CNG.swc

@@ -0,0 +1,923 @@
+# SWC to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu
+# Original fileName:/cng_repository/Soumya/LM_Automated_Testing_Enviornment/Test_Lm3.7.2_11022011_SG_Linux_NMOConv8/TestResults/LoadTest/test_52/HSN-fluoro04.CNG.swc
+#
+# Original file HSN-fluoro04.swc edited using StdSwc version 1.31 on 5/31/11.
+# Irregularities and fixes documented in HSN-fluoro04.swc.std.  See StdSwc1.31.doc for more information.
+#
+# HSN neuron (lobula place tangential cells, LPTC) from Calliphora vicina
+# identification by response properties, in vivo Alexa injection, 2-photon-microscopy imaging, x63 objective, multiple image tiles
+# reconstructed and processed with Matlab and the TREES toolbox http://www.treestoolbox.org
+# scaling 1:1:1 um
+#  Max Planck Institute of Neurobiology, Martinsried, Germany
+#  Systems and Computational Neuroscience, Alexander Borst
+#  published in "The morphological identity of insect dendrites" Cuntz H, Forstner F, Haag J, Borst A. PMID 19112481
+# SCALE 1.0 1.0 1.0 
+1 1 -5.430 135.430 -10.410 6.443 -1
+2 1 -5.430 128.987 -10.410 6.443 1
+3 1 -5.430 141.873 -10.410 6.443 1
+4 3 -10.550 123.000 -7.350 0.860 1
+5 3 -11.140 113.750 -4.270 1.147 4
+6 3 -13.770 99.780 -1.160 1.721 5
+7 3 -18.060 84.250 1.930 2.295 6
+8 3 -21.130 63.650 5.100 3.469 7
+9 3 -18.220 54.060 8.220 4.996 8
+10 3 -13.780 41.000 6.860 6.315 9
+11 3 -10.940 30.430 3.990 6.443 10
+12 3 -8.370 19.560 1.120 8.565 11
+13 3 -5.190 13.340 -1.780 10.904 12
+14 3 -0.140 5.680 -3.050 10.853 13
+15 3 0.000 0.000 0.000 3.965 14
+16 3 -5.180 142.400 -13.480 6.443 1
+17 3 -3.520 162.060 -16.650 9.093 16
+18 3 -10.780 183.960 -19.930 4.016 17
+19 3 -24.790 202.000 -19.110 2.754 18
+20 3 -31.070 212.210 -16.270 2.409 19
+21 3 -34.780 218.590 -13.370 2.754 20
+22 3 -44.960 220.960 -10.500 0.688 21
+23 3 -37.880 224.370 -10.460 2.754 21
+24 3 -43.660 235.780 -7.620 3.098 23
+25 3 -47.150 243.900 -4.740 3.786 24
+26 3 -53.020 243.810 -1.800 0.968 25
+27 3 -55.940 243.620 1.170 1.147 26
+28 3 -57.120 244.120 0.020 1.147 27
+29 3 -60.230 247.370 -0.720 0.991 28
+30 3 -48.550 247.280 -2.980 3.786 25
+31 3 -43.710 249.900 -5.950 0.516 30
+32 3 -37.530 249.750 -8.890 0.538 31
+33 3 -41.300 254.090 -8.970 0.717 31
+34 3 -48.890 248.120 -3.150 3.786 30
+35 3 -49.630 249.530 -0.170 3.786 34
+36 3 -54.550 260.370 2.670 3.029 35
+37 3 -60.720 260.560 5.600 1.101 36
+38 3 -65.730 262.530 4.750 0.803 37
+39 3 -64.710 258.250 8.580 1.033 37
+40 3 -66.890 256.680 8.620 0.717 39
+41 3 -67.710 255.780 8.750 0.717 40
+42 3 -69.480 256.210 8.580 0.803 41
+43 3 -70.870 255.280 8.690 0.717 42
+44 3 -55.860 263.460 2.220 3.029 36
+45 3 -59.450 272.430 5.100 3.442 44
+46 3 -68.980 273.750 7.990 0.968 45
+47 3 -75.840 275.620 10.900 1.434 46
+48 3 -78.490 274.030 7.880 1.434 47
+49 3 -81.820 277.780 10.810 1.434 48
+50 3 -84.980 278.650 13.770 1.434 49
+51 3 -90.600 276.620 16.730 1.147 50
+52 3 -92.290 275.370 19.730 1.101 51
+53 3 -79.530 274.500 10.870 1.434 48
+54 3 -80.960 273.560 13.860 1.377 53
+55 3 -82.030 271.810 16.870 1.033 54
+56 3 -83.120 270.590 16.670 1.322 55
+57 3 -83.930 269.650 16.790 1.434 56
+58 3 -86.560 269.780 16.640 1.469 57
+59 3 -60.530 274.650 8.060 3.442 45
+60 3 -65.560 289.000 8.440 3.786 59
+61 3 -65.750 291.870 7.900 3.442 60
+62 3 -72.340 294.000 10.810 1.394 61
+63 3 -75.140 296.120 12.350 1.721 62
+64 3 -80.680 294.430 15.310 1.836 63
+65 3 -82.610 294.680 18.290 1.487 64
+66 3 -89.160 292.210 21.240 1.721 65
+67 3 -84.420 306.680 15.150 1.434 63
+68 3 -86.670 308.840 18.110 1.721 67
+69 3 -96.270 307.280 21.020 1.147 68
+70 3 -90.500 312.560 21.030 1.721 68
+71 3 -91.530 314.530 24.000 1.147 70
+72 3 -92.480 315.370 26.990 1.147 71
+73 3 -66.490 298.150 9.560 3.442 61
+74 3 -61.260 303.680 6.560 0.581 73
+75 3 -60.170 304.900 5.770 0.717 74
+76 3 -57.890 305.620 5.750 0.717 75
+77 3 -55.350 306.650 5.690 0.803 76
+78 3 -53.680 307.930 5.540 0.803 77
+79 3 -53.140 308.530 5.450 0.717 78
+80 3 -53.280 310.810 5.020 0.287 79
+81 3 -52.780 311.960 4.830 0.574 80
+82 3 -67.860 308.090 12.450 3.442 73
+83 3 -74.660 312.810 15.330 1.434 82
+84 3 -76.540 314.430 18.300 1.469 83
+85 3 -77.150 315.810 17.170 1.076 84
+86 3 -78.780 317.460 20.140 1.076 85
+87 3 -80.310 318.780 19.320 1.147 86
+88 3 -81.260 320.180 19.020 0.803 87
+89 3 -81.920 321.280 18.780 1.147 88
+90 3 -83.480 323.180 18.350 1.076 89
+91 3 -85.020 324.500 18.030 1.076 90
+92 3 -68.710 318.310 15.340 2.581 82
+93 3 -63.120 318.370 18.400 1.721 92
+94 3 -60.360 318.150 15.430 1.434 93
+95 3 -58.100 317.500 12.460 1.147 94
+96 3 -56.910 317.560 9.470 1.652 95
+97 3 -68.880 322.710 16.310 2.581 92
+98 3 -63.660 323.930 13.350 1.434 97
+99 3 -62.230 324.280 13.500 1.721 98
+100 3 -59.690 325.340 13.430 1.645 99
+101 3 -68.920 323.310 16.200 2.581 97
+102 3 -69.270 329.030 15.130 2.295 101
+103 3 -78.030 328.750 18.040 1.147 102
+104 3 -69.240 331.900 18.100 2.295 102
+105 3 -66.750 337.530 19.390 2.295 104
+106 3 -59.470 337.150 19.820 1.147 105
+107 3 -64.180 342.870 18.530 2.295 105
+108 3 -63.960 348.620 17.480 1.721 107
+109 3 -64.350 354.930 16.300 1.721 108
+110 3 -65.210 359.460 15.410 1.721 109
+111 3 -72.730 371.150 12.230 1.721 110
+112 3 -74.620 373.870 9.180 1.377 111
+113 3 -76.240 376.900 6.130 1.434 112
+114 3 -76.350 379.150 3.110 1.721 113
+115 3 -74.740 381.560 0.100 0.860 114
+116 3 -71.840 381.750 -0.420 1.147 115
+117 3 -68.980 382.500 -0.420 1.147 116
+118 3 -66.130 383.280 -0.420 1.434 117
+119 3 -77.270 384.840 0.050 1.721 114
+120 3 -76.890 388.310 -1.890 1.434 119
+121 3 -76.160 390.370 -2.230 1.377 120
+122 3 -71.000 393.930 -5.210 0.645 121
+123 3 -77.030 397.560 -5.310 1.147 121
+124 3 -72.610 335.710 15.030 2.008 104
+125 3 -84.410 338.060 15.560 1.147 124
+126 3 -73.780 337.060 12.010 2.008 124
+127 3 -75.730 339.500 12.870 1.721 126
+128 3 -79.200 346.310 15.770 1.721 127
+129 3 -82.300 347.340 18.730 1.434 128
+130 3 -87.550 351.930 21.630 0.645 129
+131 3 -89.090 352.750 24.610 0.717 130
+132 3 -91.660 352.210 23.990 0.688 131
+133 3 -93.750 352.960 23.750 0.574 132
+134 3 -86.100 347.400 21.690 1.147 129
+135 3 -89.650 347.780 24.650 1.147 134
+136 3 -91.410 348.250 24.740 1.076 135
+137 3 -92.880 348.430 24.630 1.377 136
+138 3 -98.350 349.150 27.570 1.434 137
+139 3 -100.690 349.000 30.550 1.147 138
+140 3 -103.610 348.840 33.520 0.717 139
+141 3 -79.520 347.000 17.000 1.721 128
+142 3 -84.380 357.620 19.850 1.652 141
+143 3 -89.030 362.180 19.430 2.008 142
+144 3 -89.170 364.500 19.000 1.652 143
+145 3 -90.570 365.710 15.980 1.721 144
+146 3 -95.150 366.650 18.920 0.688 145
+147 3 -96.690 367.460 21.900 0.574 146
+148 3 -98.990 367.310 20.850 0.717 147
+149 3 -101.680 368.530 20.480 0.574 148
+150 3 -91.700 367.780 18.940 1.721 145
+151 3 -96.430 372.620 19.990 1.434 150
+152 3 -98.530 373.930 19.650 1.147 151
+153 3 -91.290 374.120 19.970 1.434 150
+154 3 -90.790 375.310 19.780 1.721 153
+155 3 -89.840 378.810 19.180 1.147 154
+156 3 -90.090 385.780 16.110 1.377 155
+157 3 -11.720 206.340 -19.260 4.282 18
+158 3 -8.920 220.900 -18.950 3.965 157
+159 3 2.400 222.530 -21.850 1.434 158
+160 3 3.280 222.840 -24.850 1.377 159
+161 3 4.700 223.210 -24.410 1.377 160
+162 3 -8.680 221.780 -19.100 3.965 158
+163 3 -9.700 236.930 -19.100 4.302 162
+164 3 -10.300 250.120 -18.710 4.819 163
+165 3 -1.090 249.060 -21.610 1.147 164
+166 3 2.800 252.150 -24.600 0.688 165
+167 3 1.020 248.310 -24.580 0.717 165
+168 3 2.570 246.960 -26.040 0.717 167
+169 3 -10.550 254.120 -19.460 4.819 164
+170 3 -10.910 259.840 -20.540 4.819 169
+171 3 -3.120 262.400 -23.480 0.830 170
+172 3 -1.090 262.840 -26.470 0.860 171
+173 3 0.330 263.210 -26.300 1.076 172
+174 3 1.790 263.030 -26.190 1.076 173
+175 3 4.300 264.620 -26.360 0.717 174
+176 3 6.270 265.620 -26.450 0.717 175
+177 3 7.930 266.870 -26.600 0.717 176
+178 3 4.860 260.340 -25.550 0.717 174
+179 3 5.820 258.960 -25.240 0.860 178
+180 3 7.120 256.750 -24.770 0.688 179
+181 3 7.450 255.900 -24.600 0.803 180
+182 3 -11.020 261.560 -20.860 4.819 170
+183 3 -16.270 260.930 -17.910 0.645 182
+184 3 -18.650 261.930 -18.450 0.717 183
+185 3 -19.570 262.710 -18.650 0.574 184
+186 3 -20.490 263.530 -18.840 0.717 185
+187 3 -22.020 264.870 -19.160 0.645 186
+188 3 -11.550 270.150 -22.470 4.819 182
+189 3 -8.820 277.530 -23.700 4.589 188
+190 3 -8.610 278.960 -23.950 4.302 189
+191 3 -1.850 278.840 -26.880 1.205 190
+192 3 -0.450 279.250 -26.450 1.076 191
+193 3 2.440 279.430 -26.340 1.147 192
+194 3 -7.990 282.780 -24.620 4.302 190
+195 3 -15.040 286.280 -21.730 1.076 194
+196 3 -19.370 290.060 -18.810 0.860 195
+197 3 -22.600 295.030 -19.050 0.807 196
+198 3 -22.700 296.750 -19.370 0.645 197
+199 3 -29.560 298.590 -16.460 0.717 198
+200 3 -31.280 298.460 -17.270 0.574 199
+201 3 -25.710 303.180 -20.710 0.803 198
+202 3 -27.550 304.750 -21.090 0.803 201
+203 3 -7.780 284.210 -24.880 4.302 194
+204 3 -7.850 285.370 -25.090 4.302 203
+205 3 -1.460 285.210 -24.750 0.968 204
+206 3 0.840 285.370 -24.660 1.033 205
+207 3 1.960 286.000 -24.730 1.033 206
+208 3 4.610 285.340 -24.470 1.076 207
+209 3 6.150 284.000 -24.140 1.147 208
+210 3 9.520 281.090 -23.430 1.205 209
+211 3 -7.910 290.840 -26.100 4.302 204
+212 3 -7.500 292.280 -23.110 4.568 211
+213 3 4.190 293.030 -20.000 0.734 212
+214 3 -5.930 295.250 -23.970 4.568 212
+215 3 -7.090 306.960 -21.100 3.442 214
+216 3 -7.750 315.560 -18.180 3.442 215
+217 3 -14.720 317.400 -21.270 1.434 216
+218 3 -16.510 318.430 -23.070 1.434 217
+219 3 -19.430 318.810 -23.280 1.434 218
+220 3 -22.010 318.340 -23.330 1.434 219
+221 3 -8.250 318.710 -17.000 3.442 216
+222 3 -9.710 328.060 -18.810 3.098 221
+223 3 -10.150 342.000 -15.940 1.434 222
+224 3 -10.730 344.150 -18.970 1.434 223
+225 3 -7.010 347.370 -15.960 0.860 224
+226 3 -4.520 350.500 -12.970 0.717 225
+227 3 -2.930 352.340 -9.970 0.645 226
+228 3 -11.820 349.930 -16.040 1.434 224
+229 3 -11.950 353.180 -13.070 1.434 228
+230 3 -11.550 355.530 -10.090 1.434 229
+231 3 -10.230 357.090 -7.090 1.721 230
+232 3 -8.670 359.530 -4.090 1.721 231
+233 3 -14.480 337.560 -15.950 2.581 222
+234 3 -19.200 343.280 -16.380 2.855 233
+235 3 -25.240 352.280 -13.520 2.295 234
+236 3 -27.580 353.780 -11.600 1.721 235
+237 3 -25.690 360.370 -11.300 1.147 236
+238 3 -25.640 364.090 -11.990 1.434 237
+239 3 -24.730 368.210 -12.700 1.434 238
+240 3 -24.440 372.840 -13.530 1.147 239
+241 3 -23.470 375.780 -14.030 1.434 240
+242 3 -23.370 378.930 -14.610 1.147 241
+243 3 -35.710 360.840 -8.750 1.721 236
+244 3 -38.260 364.120 -6.910 1.652 243
+245 3 -39.550 366.370 -7.390 1.927 244
+246 3 -40.960 370.310 -8.180 1.434 245
+247 3 -44.550 376.650 -9.540 1.836 246
+248 3 -46.600 381.680 -10.570 1.606 247
+249 3 -52.170 393.590 -13.740 1.434 248
+250 3 -52.090 394.960 -16.750 1.147 249
+251 3 -53.320 396.560 -19.780 1.434 250
+252 3 -52.030 401.000 -22.810 1.434 251
+253 3 -53.280 402.590 -25.840 1.434 252
+254 3 -56.020 398.370 -22.830 1.434 251
+255 3 -57.790 399.370 -25.850 1.076 254
+256 3 -58.960 399.840 -28.870 1.377 255
+257 3 -59.810 400.030 -31.880 1.076 256
+258 3 -61.890 400.750 -31.960 1.377 257
+259 3 -62.800 401.560 -32.160 0.717 258
+260 3 -63.690 401.780 -32.240 0.287 259
+261 3 -64.340 402.900 -32.480 1.721 260
+262 3 -64.690 403.750 -32.650 1.377 261
+263 3 -63.750 407.280 -33.250 0.717 262
+264 3 -1.990 297.250 -24.140 2.581 214
+265 3 -2.070 303.280 -25.260 2.065 264
+266 3 4.290 305.840 -22.220 1.434 265
+267 3 5.050 308.840 -19.240 1.427 266
+268 3 6.640 310.710 -16.240 1.469 267
+269 3 11.800 306.750 -13.150 1.434 268
+270 3 -2.110 303.870 -25.370 2.065 265
+271 3 -0.150 312.310 -22.430 2.008 270
+272 3 3.260 320.590 -19.470 2.008 271
+273 3 11.340 335.710 -16.530 2.295 272
+274 3 11.950 338.650 -13.550 2.008 273
+275 3 4.270 336.460 -10.610 0.860 274
+276 3 13.070 342.780 -10.580 2.008 274
+277 3 15.030 340.960 -8.540 0.688 276
+278 3 18.900 338.340 -5.480 0.688 277
+279 3 18.980 345.530 -5.550 0.717 277
+280 3 13.660 343.430 -7.580 2.008 276
+281 3 13.680 346.030 -4.600 1.721 280
+282 3 6.430 347.560 -7.690 0.860 281
+283 3 13.990 353.530 -1.670 1.721 281
+284 3 13.950 355.000 -2.630 2.008 283
+285 3 7.500 355.210 -5.700 1.076 284
+286 3 13.510 360.120 0.310 2.008 284
+287 3 16.900 362.400 -0.990 0.717 286
+288 3 17.720 363.310 -1.120 0.717 287
+289 3 18.840 363.930 -1.180 0.688 288
+290 3 22.780 366.810 -4.170 0.717 289
+291 3 24.150 368.310 -4.580 0.574 290
+292 3 25.890 371.000 -1.590 0.688 291
+293 3 13.880 361.340 -2.690 2.008 286
+294 3 12.540 369.000 -5.780 2.065 293
+295 3 12.700 371.560 -8.800 1.784 294
+296 3 8.070 380.460 -10.470 1.434 295
+297 3 5.640 386.900 -11.780 1.147 296
+298 3 4.650 388.870 -12.190 1.469 297
+299 3 4.820 390.870 -12.560 1.205 298
+300 3 4.480 398.250 -15.630 1.434 299
+301 3 4.170 400.710 -18.660 1.469 300
+302 3 3.740 401.310 -21.670 1.147 301
+303 3 4.170 404.180 -24.690 0.717 302
+304 3 14.350 374.590 -11.810 1.434 295
+305 3 20.280 374.400 -14.750 0.803 304
+306 3 15.730 378.680 -8.840 1.434 304
+307 3 16.510 380.150 -10.000 1.721 306
+308 3 17.520 382.530 -10.390 1.434 307
+309 3 18.500 383.750 -7.390 1.586 308
+310 3 19.540 387.750 -10.410 1.434 309
+311 3 18.830 388.500 -13.430 1.434 310
+312 3 17.360 389.250 -16.450 1.434 311
+313 3 14.780 389.310 -19.480 1.147 312
+314 3 20.040 384.150 -10.370 1.586 309
+315 3 24.750 381.900 -7.300 1.147 314
+316 3 21.120 385.370 -10.730 1.162 314
+317 3 24.270 390.750 -11.570 1.434 316
+318 3 25.090 392.530 -14.570 1.434 317
+319 3 29.160 391.340 -11.520 1.721 318
+320 3 30.860 392.060 -11.480 1.147 319
+321 3 31.940 393.280 -11.650 1.377 320
+322 3 31.260 394.930 -11.990 1.147 321
+323 3 33.380 397.960 -12.440 1.377 322
+324 3 24.370 394.780 -15.160 1.147 318
+325 3 23.960 396.750 -15.540 1.434 324
+326 3 26.960 398.680 -12.530 1.469 325
+327 3 28.050 399.900 -13.070 1.434 326
+328 3 29.400 401.430 -13.280 1.434 327
+329 3 30.210 402.370 -13.410 1.721 328
+330 3 31.880 403.620 -13.560 1.434 329
+331 3 23.890 397.900 -15.760 1.434 325
+332 3 22.590 400.120 -16.230 1.434 331
+333 3 22.210 401.530 -16.510 1.434 332
+334 3 21.440 406.560 -19.570 1.434 333
+335 3 20.780 406.750 -22.580 1.434 334
+336 3 19.880 407.530 -25.590 1.434 335
+337 3 20.690 408.960 -28.600 1.434 336
+338 3 15.150 411.210 -31.680 0.717 337
+339 3 22.730 409.370 -31.580 1.434 337
+340 3 24.760 409.750 -34.560 1.147 339
+341 3 25.910 410.400 -37.560 1.147 340
+342 3 27.070 410.460 -37.880 1.434 341
+343 3 27.880 411.370 -38.010 1.434 342
+344 3 14.280 179.930 -19.640 4.933 17
+345 3 22.770 188.250 -22.630 4.956 344
+346 3 32.970 184.060 -25.480 1.721 345
+347 3 34.200 183.560 -28.460 1.377 346
+348 3 35.980 183.060 -29.700 1.434 347
+349 3 25.270 190.430 -25.620 4.956 345
+350 3 30.110 203.060 -22.690 4.302 349
+351 3 35.410 199.150 -25.600 1.147 350
+352 3 36.760 196.310 -26.410 0.717 351
+353 3 38.630 194.150 -25.920 0.968 352
+354 3 31.030 204.030 -25.690 4.302 350
+355 3 31.590 207.180 -22.720 4.589 354
+356 3 42.530 208.500 -22.670 2.409 355
+357 3 43.660 209.150 -22.730 2.478 356
+358 3 48.410 201.500 -25.610 0.922 357
+359 3 49.970 200.120 -28.580 1.162 358
+360 3 51.230 199.060 -31.560 1.434 359
+361 3 52.530 196.810 -31.420 0.922 360
+362 3 53.800 195.180 -31.050 0.615 361
+363 3 50.410 212.500 -23.010 2.478 357
+364 3 52.400 214.340 -26.010 1.721 363
+365 3 57.850 210.680 -25.160 1.147 364
+366 3 60.450 209.710 -22.120 1.434 365
+367 3 62.350 200.090 -25.010 0.574 366
+368 3 61.730 208.930 -25.100 1.434 366
+369 3 64.450 207.120 -24.170 1.434 368
+370 3 67.790 204.750 -23.570 1.721 369
+371 3 70.450 204.060 -23.310 1.434 370
+372 3 72.290 202.460 -22.920 1.434 371
+373 3 75.230 199.870 -19.860 1.721 372
+374 3 69.230 191.900 -22.850 0.803 373
+375 3 76.320 198.400 -22.840 1.721 373
+376 3 77.000 196.750 -21.630 1.434 375
+377 3 79.890 193.500 -24.570 1.721 376
+378 3 86.090 196.180 -23.930 0.574 377
+379 3 80.410 193.250 -21.560 1.721 377
+380 3 81.980 191.310 -20.380 1.033 379
+381 3 82.700 189.060 -19.930 0.807 380
+382 3 79.950 180.000 -22.870 0.774 381
+383 3 78.400 177.560 -25.870 1.076 382
+384 3 77.040 176.030 -26.360 1.147 383
+385 3 75.140 173.900 -26.060 1.076 384
+386 3 90.980 184.500 -22.800 1.291 381
+387 3 92.750 184.560 -25.790 1.434 386
+388 3 94.230 184.370 -27.050 1.434 387
+389 3 95.720 183.590 -26.830 1.721 388
+390 3 97.840 182.310 -26.490 1.434 389
+391 3 99.330 181.560 -26.270 1.434 390
+392 3 101.270 183.120 -26.470 1.434 391
+393 3 103.030 182.650 -26.290 1.434 392
+394 3 105.420 181.680 -25.990 1.147 393
+395 3 106.880 181.460 -25.890 1.434 394
+396 3 109.970 183.120 -26.040 1.434 395
+397 3 101.150 175.620 -25.090 1.721 391
+398 3 102.070 174.810 -24.900 1.434 397
+399 3 103.920 173.250 -24.510 1.434 398
+400 3 104.870 171.870 -24.210 1.434 399
+401 3 105.320 169.310 -23.720 1.147 400
+402 3 106.310 167.340 -23.310 1.606 401
+403 3 56.980 220.090 -26.940 1.721 364
+404 3 63.060 223.680 -23.910 1.721 403
+405 3 70.980 227.960 -26.870 2.008 404
+406 3 74.960 229.400 -27.750 2.295 405
+407 3 80.150 228.870 -24.700 1.721 406
+408 3 81.390 228.650 -27.680 1.721 407
+409 3 81.910 224.960 -26.590 0.688 408
+410 3 81.740 222.930 -26.230 0.574 409
+411 3 82.700 221.560 -25.930 0.717 410
+412 3 84.240 220.210 -25.600 0.717 411
+413 3 85.230 218.280 -25.200 0.717 412
+414 3 87.650 216.710 -24.790 0.717 413
+415 3 88.260 216.180 -24.660 1.434 414
+416 3 88.100 214.150 -24.290 0.688 415
+417 3 87.970 211.560 -23.820 0.688 416
+418 3 87.460 210.370 -23.630 0.645 417
+419 3 88.280 206.400 -22.850 0.803 418
+420 3 82.850 228.460 -27.190 1.721 408
+421 3 82.640 235.340 -25.620 1.147 420
+422 3 82.460 238.210 -26.160 1.434 421
+423 3 83.550 239.430 -26.330 1.434 422
+424 3 84.630 240.650 -26.500 1.721 423
+425 3 86.300 241.900 -26.650 1.377 424
+426 3 88.190 244.060 -26.950 1.377 425
+427 3 85.780 228.090 -26.980 1.721 420
+428 3 88.590 228.560 -23.950 2.008 427
+429 3 97.370 225.680 -20.830 1.721 428
+430 3 107.850 233.000 -17.800 1.147 429
+431 3 109.440 234.870 -14.800 1.434 430
+432 3 112.570 235.930 -15.680 1.147 431
+433 3 114.890 236.060 -15.600 1.147 432
+434 3 105.210 220.460 -17.700 1.721 429
+435 3 103.910 212.620 -14.640 1.377 434
+436 3 104.890 209.310 -17.600 0.803 435
+437 3 101.280 207.900 -20.620 0.717 436
+438 3 105.010 208.960 -14.600 0.803 436
+439 3 105.980 207.030 -11.570 0.645 438
+440 3 112.880 218.120 -14.600 1.721 434
+441 3 121.500 218.430 -11.520 1.434 440
+442 3 124.230 216.590 -11.530 1.721 441
+443 3 126.040 215.560 -11.250 1.721 442
+444 3 128.250 212.560 -10.590 1.147 443
+445 3 129.370 203.960 -8.950 1.147 444
+446 3 131.210 194.030 -9.880 1.434 445
+447 3 135.780 187.180 -11.240 1.377 446
+448 3 136.700 186.370 -11.040 1.434 447
+449 3 138.230 185.030 -10.720 1.147 448
+450 3 139.690 184.870 -10.610 1.434 449
+451 3 127.590 184.340 -12.830 0.717 446
+452 3 124.910 176.370 -12.640 1.147 451
+453 3 126.210 174.150 -12.160 0.688 452
+454 3 128.050 172.560 -11.780 0.717 453
+455 3 122.000 175.310 -9.660 0.717 452
+456 3 120.180 173.780 -12.660 0.717 455
+457 3 116.750 173.530 -15.690 1.147 456
+458 3 119.980 168.000 -12.610 0.688 455
+459 3 120.150 162.560 -15.550 0.410 458
+460 3 115.850 167.150 -9.640 1.322 458
+461 3 130.750 222.460 -8.520 1.469 442
+462 3 133.640 222.650 -9.340 1.434 461
+463 3 135.680 222.530 -9.210 1.434 462
+464 3 137.220 221.180 -8.890 1.147 463
+465 3 138.720 220.430 -8.670 1.434 464
+466 3 141.550 216.900 -7.870 0.968 465
+467 3 142.540 214.960 -7.470 1.434 466
+468 3 142.920 213.530 -7.190 1.434 467
+469 3 144.490 211.620 -6.760 1.147 468
+470 3 146.640 209.750 -6.310 0.645 469
+471 3 137.460 228.650 -6.350 1.434 462
+472 3 139.090 229.930 -3.350 1.162 471
+473 3 140.740 231.180 -2.000 1.434 472
+474 3 142.700 235.650 0.970 1.147 473
+475 3 143.180 237.400 -0.170 1.434 474
+476 3 143.680 238.620 -0.370 1.434 475
+477 3 143.280 240.590 -0.750 1.434 476
+478 3 142.820 230.500 -1.770 1.434 473
+479 3 146.010 230.430 -1.590 1.147 478
+480 3 148.130 229.120 -1.250 1.434 479
+481 3 151.350 231.960 1.750 1.434 480
+482 3 152.210 232.250 1.220 1.721 481
+483 3 153.290 233.500 1.050 1.377 482
+484 3 154.100 234.400 0.920 1.606 483
+485 3 154.580 236.150 0.620 1.076 484
+486 3 149.450 226.340 -0.670 1.434 480
+487 3 152.290 222.780 0.120 0.968 486
+488 3 155.050 220.370 0.700 0.968 487
+489 3 157.340 216.180 1.580 0.645 488
+490 3 157.680 215.400 1.750 1.434 489
+491 3 34.770 222.120 -25.830 4.589 355
+492 3 37.460 234.060 -27.630 5.139 491
+493 3 29.780 236.400 -28.450 1.147 492
+494 3 26.530 237.060 -28.730 1.076 493
+495 3 24.800 236.930 -28.790 1.205 494
+496 3 21.390 240.430 -29.610 1.033 495
+497 3 17.780 233.310 -28.470 1.147 495
+498 3 41.180 251.280 -24.760 5.139 492
+499 3 40.040 269.590 -27.940 3.786 498
+500 3 38.650 280.000 -25.060 3.155 499
+501 3 30.020 285.870 -22.200 1.147 500
+502 3 20.970 284.930 -19.280 0.803 501
+503 3 20.130 284.060 -16.280 1.033 502
+504 3 24.640 294.930 -19.340 0.688 501
+505 3 21.590 301.400 -16.430 0.968 504
+506 3 19.470 302.150 -13.460 1.076 505
+507 3 41.780 293.280 -22.150 2.891 500
+508 3 37.330 295.870 -25.220 1.836 507
+509 3 35.920 305.150 -22.320 1.434 508
+510 3 28.860 305.560 -19.400 0.717 509
+511 3 35.390 307.150 -19.350 1.434 509
+512 3 35.770 310.370 -16.370 1.434 511
+513 3 34.180 315.430 -13.440 1.434 512
+514 3 34.020 316.840 -10.450 1.434 513
+515 3 30.920 316.430 -8.930 0.871 514
+516 3 28.540 317.430 -9.230 1.147 515
+517 3 27.040 318.180 -9.450 1.434 516
+518 3 25.770 319.840 -9.810 1.147 517
+519 3 24.510 321.460 -10.180 1.101 518
+520 3 23.590 322.280 -10.370 1.147 519
+521 3 23.180 324.250 -10.760 0.968 520
+522 3 23.410 325.120 -10.910 1.322 521
+523 3 23.000 327.120 -11.300 1.377 522
+524 3 23.770 328.620 -11.530 0.803 523
+525 3 33.960 321.780 -7.500 1.434 514
+526 3 35.060 326.780 -4.540 1.434 525
+527 3 35.700 330.560 -5.600 1.721 526
+528 3 34.730 334.210 -2.640 1.721 527
+529 3 39.990 337.750 0.370 1.377 528
+530 3 34.280 337.060 -1.160 1.721 528
+531 3 34.050 339.650 1.800 1.721 530
+532 3 30.090 339.090 -1.230 0.574 531
+533 3 29.480 339.620 -1.870 2.008 532
+534 3 27.790 338.960 -1.830 1.377 533
+535 3 34.530 342.280 -1.210 1.721 531
+536 3 28.810 344.780 0.000 1.434 535
+537 3 27.580 345.840 -0.260 1.434 536
+538 3 27.160 347.840 -0.650 1.147 537
+539 3 35.440 348.930 1.730 1.147 535
+540 3 41.070 348.180 -0.020 1.434 539
+541 3 34.730 352.060 -1.300 1.434 539
+542 3 30.510 354.650 -1.740 0.516 541
+543 3 29.660 354.310 -1.720 0.871 542
+544 3 27.080 353.840 -1.770 0.688 543
+545 3 25.140 352.280 -1.570 0.717 544
+546 3 34.230 354.340 1.660 1.434 541
+547 3 34.630 357.250 0.830 1.721 546
+548 3 32.220 357.780 -2.190 1.606 547
+549 3 30.720 359.060 -5.220 1.434 548
+550 3 29.550 359.530 -8.240 1.434 549
+551 3 27.890 358.810 -11.250 1.147 550
+552 3 34.570 358.370 0.610 1.721 547
+553 3 35.000 364.180 2.420 1.434 552
+554 3 34.860 366.430 1.990 1.434 553
+555 3 35.800 369.960 1.390 1.147 554
+556 3 35.650 372.250 0.960 1.721 555
+557 3 34.500 373.930 -2.060 1.434 556
+558 3 41.750 295.210 -19.170 2.891 507
+559 3 44.840 299.840 -22.180 2.754 558
+560 3 49.940 299.680 -19.130 1.033 559
+561 3 52.130 299.060 -16.100 1.434 560
+562 3 55.140 297.000 -13.050 1.434 561
+563 3 57.070 298.000 -10.030 1.434 562
+564 3 46.130 303.870 -19.200 2.754 559
+565 3 47.790 308.590 -16.230 2.974 564
+566 3 58.850 307.650 -13.110 1.377 565
+567 3 49.040 311.310 -13.240 2.974 565
+568 3 52.050 320.650 -10.300 3.304 567
+569 3 56.460 323.870 -7.290 1.434 568
+570 3 60.510 327.590 -4.280 1.434 569
+571 3 63.420 331.560 -1.290 1.434 570
+572 3 65.430 331.960 -1.530 1.586 571
+573 3 67.820 333.560 1.480 1.652 572
+574 3 69.690 335.710 4.470 1.434 573
+575 3 71.360 337.000 3.540 1.721 574
+576 3 72.140 338.500 3.310 1.434 575
+577 3 73.500 340.000 3.090 1.721 576
+578 3 75.910 345.900 6.060 1.721 577
+579 3 78.130 347.210 7.690 1.434 578
+580 3 79.480 348.750 7.480 1.434 579
+581 3 74.570 353.030 6.450 1.076 580
+582 3 81.650 351.180 7.140 1.147 580
+583 3 83.780 354.210 6.690 0.717 582
+584 3 86.390 349.780 7.630 0.803 582
+585 3 53.420 333.960 -7.410 2.409 568
+586 3 58.300 343.250 -4.450 2.754 585
+587 3 51.700 353.430 -1.620 2.008 586
+588 3 48.590 364.460 1.240 1.434 587
+589 3 46.740 370.400 4.160 1.147 588
+590 3 45.050 374.030 3.950 1.377 589
+591 3 43.750 376.250 3.480 1.115 590
+592 3 39.230 380.000 0.400 1.721 591
+593 3 37.700 381.310 -0.600 1.434 592
+594 3 33.910 382.780 -3.650 1.147 593
+595 3 36.940 384.150 -1.160 1.434 593
+596 3 36.120 388.090 -1.930 1.147 595
+597 3 36.280 390.120 -2.290 1.434 596
+598 3 35.250 392.650 -2.810 1.147 597
+599 3 58.940 345.280 -1.460 2.754 586
+600 3 63.390 356.250 1.470 2.295 599
+601 3 58.770 372.060 4.270 1.434 600
+602 3 53.680 375.180 4.170 0.968 601
+603 3 49.260 379.280 1.080 1.377 602
+604 3 47.410 381.430 -1.950 0.803 603
+605 3 46.140 383.620 -4.980 0.717 604
+606 3 45.480 385.280 -8.000 0.717 605
+607 3 43.080 386.840 -9.910 1.239 606
+608 3 58.830 375.250 7.240 1.322 601
+609 3 58.270 379.530 6.450 1.076 608
+610 3 59.840 381.460 3.450 0.803 609
+611 3 59.490 382.840 0.430 0.717 610
+612 3 60.020 384.000 -2.570 0.717 611
+613 3 59.880 386.840 -5.600 0.803 612
+614 3 69.110 361.560 4.480 1.721 600
+615 3 71.050 363.120 4.410 1.721 614
+616 3 71.490 364.030 7.400 1.721 615
+617 3 79.000 363.150 4.490 1.434 616
+618 3 83.780 366.030 1.510 1.434 617
+619 3 87.120 368.210 -1.470 1.434 618
+620 3 90.000 368.400 -1.320 0.968 619
+621 3 94.410 368.680 -4.280 1.076 620
+622 3 97.610 368.620 -3.840 1.322 621
+623 3 99.260 368.120 -0.810 1.076 622
+624 3 101.450 367.460 -3.790 1.377 623
+625 3 103.420 368.460 -3.510 1.147 624
+626 3 110.560 368.120 -6.440 1.434 625
+627 3 113.940 370.060 -9.420 1.076 626
+628 3 72.400 364.650 4.410 1.721 616
+629 3 76.870 371.120 1.390 1.721 628
+630 3 76.450 377.960 -1.670 1.721 629
+631 3 74.290 384.370 -4.750 1.377 630
+632 3 80.850 382.250 -4.670 1.076 630
+633 3 82.140 385.780 -7.690 0.717 632
+634 3 87.330 382.680 -7.600 1.377 632
+635 3 86.320 372.840 -1.520 1.434 629
+636 3 89.570 373.060 -4.490 1.721 635
+637 3 90.440 373.340 -7.480 0.968 636
+638 3 92.440 374.340 -10.470 1.033 637
+639 3 96.350 373.430 -13.420 1.434 638
+640 3 97.470 374.090 -13.410 1.434 639
+641 3 98.550 375.310 -13.580 1.434 640
+642 3 96.960 378.680 -16.630 1.147 641
+643 3 99.690 376.840 -16.580 1.652 641
+644 3 53.910 264.780 -23.920 3.786 498
+645 3 61.530 272.780 -25.020 2.754 644
+646 3 70.960 273.210 -21.920 2.295 645
+647 3 69.780 267.500 -18.880 1.434 646
+648 3 69.580 265.500 -15.870 1.434 647
+649 3 68.740 264.590 -12.860 1.434 648
+650 3 67.950 263.120 -11.510 1.434 649
+651 3 67.180 261.650 -11.280 1.434 650
+652 3 67.860 259.960 -10.930 1.147 651
+653 3 69.730 257.780 -10.440 1.434 652
+654 3 71.930 272.590 -21.620 2.295 646
+655 3 77.770 271.840 -21.190 1.434 654
+656 3 79.240 271.650 -21.080 1.434 655
+657 3 78.210 267.210 -18.050 0.860 656
+658 3 78.250 266.090 -15.040 1.469 657
+659 3 80.060 264.530 -12.000 1.033 658
+660 3 79.850 263.060 -10.910 1.076 659
+661 3 79.960 261.340 -10.590 1.147 660
+662 3 80.060 259.620 -10.270 1.147 661
+663 3 79.830 258.750 -10.110 1.377 662
+664 3 79.050 257.280 -9.880 1.469 663
+665 3 81.400 271.150 -18.050 1.434 656
+666 3 84.280 269.960 -21.010 1.434 665
+667 3 86.300 268.960 -17.980 1.434 666
+668 3 88.290 268.530 -14.960 1.434 667
+669 3 90.730 267.810 -17.920 1.721 668
+670 3 91.300 267.870 -16.930 1.434 669
+671 3 93.990 266.590 -16.560 1.721 670
+672 3 94.980 266.900 -13.550 1.721 671
+673 3 101.640 266.530 -10.480 1.434 672
+674 3 103.310 267.210 -7.470 1.434 673
+675 3 104.700 268.180 -7.770 1.147 674
+676 3 108.850 275.060 -5.980 1.377 675
+677 3 109.930 276.310 -6.150 1.434 676
+678 3 106.440 268.310 -7.700 1.434 675
+679 3 109.970 266.530 -4.650 1.434 678
+680 3 112.310 266.120 -4.150 1.434 679
+681 3 116.740 264.960 -3.720 1.721 680
+682 3 119.800 262.280 -3.080 1.147 681
+683 3 70.160 282.250 -23.490 2.754 645
+684 3 77.550 291.930 -20.500 2.868 683
+685 3 74.090 298.710 -17.600 1.147 684
+686 3 71.660 302.120 -14.660 1.147 685
+687 3 69.710 304.870 -11.710 1.434 686
+688 3 79.940 295.280 -19.700 2.868 684
+689 3 89.630 292.460 -16.570 1.147 688
+690 3 97.200 290.960 -13.480 1.147 689
+691 3 106.780 293.400 -10.400 1.322 690
+692 3 110.030 293.710 -7.370 1.377 691
+693 3 112.700 292.460 -4.330 0.717 692
+694 3 113.820 292.590 -1.320 1.692 693
+695 3 100.500 288.310 -10.420 1.434 690
+696 3 104.840 287.430 -7.370 1.434 695
+697 3 107.530 287.060 -8.260 1.147 696
+698 3 111.520 287.060 -5.210 1.434 697
+699 3 123.970 281.840 -2.040 1.721 698
+700 3 128.460 279.560 -0.130 1.434 699
+701 3 129.980 278.210 0.190 2.295 700
+702 3 133.940 275.340 0.920 1.434 701
+703 3 136.740 272.340 1.610 1.147 702
+704 3 138.000 270.710 1.970 1.434 703
+705 3 138.960 269.340 2.270 1.434 704
+706 3 140.150 267.120 5.310 1.106 705
+707 3 141.320 264.030 3.370 1.106 706
+708 3 142.920 261.530 3.910 0.922 707
+709 3 146.770 260.370 4.320 0.717 708
+710 3 143.070 259.250 4.340 0.922 708
+711 3 143.790 257.030 4.790 0.922 710
+712 3 144.780 255.060 5.200 0.615 711
+713 3 146.310 253.750 5.520 0.922 712
+714 3 146.960 252.620 5.760 1.147 713
+715 3 148.090 265.930 6.210 0.968 706
+716 3 150.170 265.210 6.450 0.908 715
+717 3 154.550 264.650 6.770 1.205 716
+718 3 161.890 265.810 9.840 1.692 717
+719 3 163.950 266.560 12.850 1.652 718
+720 3 168.420 264.310 15.920 0.717 719
+721 3 171.160 261.960 18.970 0.803 720
+722 3 175.180 265.370 21.980 1.076 721
+723 3 180.770 263.750 25.050 0.803 722
+724 3 179.480 270.310 24.980 1.606 722
+725 3 180.840 271.280 27.980 1.836 724
+726 3 184.710 273.870 31.000 1.377 725
+727 3 174.810 258.750 22.040 0.803 721
+728 3 177.590 255.810 25.090 1.033 727
+729 3 178.620 252.750 28.130 1.076 728
+730 3 177.940 249.560 31.160 0.717 729
+731 3 178.730 246.150 31.350 0.717 730
+732 3 178.670 242.430 32.040 0.717 731
+733 3 177.650 240.060 32.420 0.574 732
+734 3 176.100 237.060 32.900 0.717 733
+735 3 175.900 235.590 33.150 0.688 734
+736 3 90.100 311.310 -16.750 2.295 688
+737 3 91.640 315.780 -13.770 2.295 736
+738 3 101.780 313.530 -10.650 1.652 737
+739 3 111.500 312.280 -7.530 1.542 738
+740 3 115.410 310.280 -4.470 1.434 739
+741 3 117.070 309.810 -1.450 1.322 740
+742 3 120.190 313.120 1.540 1.205 741
+743 3 122.120 314.150 4.550 1.076 742
+744 3 123.180 315.400 7.550 0.860 743
+745 3 124.300 315.530 10.560 0.968 744
+746 3 128.350 315.250 13.600 0.645 745
+747 3 118.540 309.060 1.560 1.322 741
+748 3 122.620 307.000 4.620 1.434 747
+749 3 125.900 305.250 7.670 1.434 748
+750 3 132.310 300.560 10.790 0.968 749
+751 3 135.730 297.030 11.270 1.721 750
+752 3 136.180 294.460 11.760 1.434 751
+753 3 137.470 292.250 12.230 1.434 752
+754 3 140.640 287.870 13.200 1.434 753
+755 3 142.210 285.930 13.630 1.434 754
+756 3 143.990 285.460 13.800 1.434 755
+757 3 148.910 285.530 14.040 1.721 756
+758 3 93.190 318.250 -10.780 2.203 737
+759 3 95.320 326.620 -7.840 1.652 758
+760 3 98.660 332.930 -4.860 1.721 759
+761 3 100.990 336.870 -1.880 1.652 760
+762 3 106.400 345.060 -1.900 1.721 761
+763 3 105.410 347.030 -2.310 1.434 762
+764 3 105.910 348.210 -2.500 1.434 763
+765 3 106.720 349.120 -2.630 1.147 764
+766 3 106.030 350.810 -2.980 1.434 765
+767 3 105.350 352.500 -3.320 1.147 766
+768 3 105.590 353.340 -3.470 1.377 767
+769 3 107.180 355.750 -3.840 1.377 768
+770 3 104.920 323.620 -7.710 2.008 758
+771 3 114.710 327.090 -4.640 1.721 770
+772 3 117.260 327.590 -1.620 1.721 771
+773 3 119.850 335.840 1.320 1.434 772
+774 3 121.100 352.090 4.180 1.434 773
+775 3 125.130 354.090 3.060 0.581 774
+776 3 129.750 354.400 3.230 0.688 775
+777 3 119.700 355.460 7.130 1.147 774
+778 3 116.280 360.750 4.050 0.803 777
+779 3 124.150 337.650 4.350 1.147 773
+780 3 126.630 335.810 3.660 1.434 779
+781 3 129.590 334.870 3.980 1.434 780
+782 3 130.780 334.370 4.130 1.469 781
+783 3 128.430 339.650 3.040 1.147 779
+784 3 132.990 341.960 0.060 1.434 783
+785 3 134.140 342.060 0.030 1.147 784
+786 3 139.950 341.000 3.100 1.147 785
+787 3 140.870 340.180 3.550 1.434 786
+788 3 142.680 339.180 3.830 1.147 787
+789 3 137.160 344.840 -0.330 1.434 785
+790 3 139.470 345.000 -0.240 1.147 789
+791 3 144.340 342.710 -3.170 0.717 790
+792 3 147.760 340.090 -4.630 0.645 791
+793 3 117.120 328.120 1.360 1.434 772
+794 3 120.900 328.750 4.400 1.434 793
+795 3 123.180 328.930 7.420 1.147 794
+796 3 125.530 327.960 10.450 1.721 795
+797 3 127.030 327.210 10.970 1.147 796
+798 3 129.690 326.530 11.230 1.721 797
+799 3 131.450 326.060 11.400 1.434 798
+800 3 133.220 325.620 11.570 1.434 799
+801 3 134.440 324.560 11.830 1.434 800
+802 3 135.950 323.780 12.050 1.434 801
+803 3 139.840 316.280 15.160 1.147 802
+804 3 141.360 314.930 16.800 1.147 803
+805 3 142.970 312.460 17.330 1.434 804
+806 3 144.500 311.120 17.660 1.434 805
+807 3 147.370 307.000 18.560 1.434 806
+808 3 148.600 297.620 17.510 1.606 807
+809 3 149.330 295.370 17.960 1.147 808
+810 3 151.520 292.900 18.520 1.434 809
+811 3 153.350 291.310 18.900 1.434 810
+812 3 156.180 287.750 19.700 1.434 811
+813 3 148.600 305.930 18.820 1.147 807
+814 3 151.900 304.150 19.310 1.147 813
+815 3 153.440 302.810 19.640 1.434 814
+816 3 154.660 301.750 19.890 1.434 815
+817 3 159.080 297.180 18.110 1.434 816
+818 3 160.300 296.090 18.370 1.721 817
+819 3 161.300 294.120 18.780 1.147 818
+820 3 166.600 291.900 21.850 1.076 819
+821 3 161.000 288.650 21.820 1.377 819
+822 3 162.250 287.030 22.990 1.147 821
+823 3 137.270 324.120 15.060 1.721 802
+824 3 137.140 326.750 14.410 0.697 823
+825 3 137.920 328.250 14.180 1.147 824
+826 3 138.700 329.750 13.940 1.606 825
+827 3 140.830 323.530 15.190 1.721 823
+828 3 142.320 322.750 15.400 1.721 827
+829 3 142.930 322.250 15.530 1.721 828
+830 3 146.570 324.500 15.290 1.721 829
+831 3 148.340 324.030 15.470 1.147 830
+832 3 150.040 324.710 15.420 1.434 831
+833 3 151.120 325.960 15.250 1.434 832
+834 3 151.560 328.280 14.840 2.008 833
+835 3 151.990 330.620 14.440 1.434 834
+836 3 151.580 332.590 14.050 1.434 835
+837 3 145.020 321.500 15.770 1.147 829
+838 3 146.210 321.000 15.920 1.434 837
+839 3 147.400 320.530 16.070 1.147 838
+840 3 149.200 319.500 16.350 1.147 839
+841 3 150.390 319.000 16.500 1.434 840
+842 3 151.920 317.650 16.820 1.434 841
+843 3 152.850 316.840 17.010 1.147 842
+844 3 154.040 316.400 17.170 1.147 843
+845 3 155.500 316.180 17.270 1.434 844
+846 3 157.300 315.150 17.550 1.434 845
+847 3 159.150 313.560 17.940 1.434 846
+848 3 160.100 312.180 18.240 1.434 847
+849 3 161.060 310.810 18.540 1.721 848
+850 3 162.320 309.150 18.910 1.147 849
+851 3 163.590 307.500 19.270 1.434 850
+852 3 167.310 303.750 20.150 1.434 851
+853 3 170.220 302.500 23.200 1.377 852
+854 3 173.750 301.590 23.720 1.434 853
+855 3 175.560 300.560 24.000 1.434 854
+856 3 176.780 299.530 24.260 1.434 855
+857 3 178.660 297.340 24.760 1.721 856
+858 3 180.230 295.400 25.190 1.147 857
+859 3 181.120 295.180 25.270 1.721 858
+860 3 -5.830 122.460 -7.300 5.450 1
+861 3 -4.540 101.840 -4.090 5.163 860
+862 3 -3.040 78.870 -6.850 5.995 861
+863 3 0.120 54.810 -9.590 5.782 862
+864 3 2.850 45.960 -12.480 5.782 863
+865 3 2.570 34.310 -15.370 6.939 864
+866 3 4.370 12.710 -18.150 6.196 865
+867 3 7.320 -13.120 -20.870 6.186 866
+868 3 12.730 -41.060 -23.550 6.167 867
+869 3 18.080 -63.560 -26.280 7.137 868
+870 3 24.670 -82.810 -29.030 7.137 869
+871 3 29.840 -102.460 -31.790 6.852 870
+872 3 42.620 -136.870 -34.330 6.852 871
+873 3 52.910 -159.310 -37.010 6.443 872
+874 3 59.090 -172.280 -39.820 6.443 873
+875 3 68.200 -171.530 -36.730 1.328 874
+876 3 72.450 -172.000 -33.690 1.434 875
+877 3 75.000 -173.180 -30.650 1.434 876
+878 3 79.040 -170.210 -27.630 1.721 877
+879 3 81.370 -167.900 -24.630 0.968 878
+880 3 84.550 -165.310 -21.620 1.434 879
+881 3 87.160 -162.750 -18.620 1.434 880
+882 3 63.970 -183.000 -42.670 6.196 874
+883 3 83.080 -221.780 -39.100 4.130 882
+884 3 92.360 -231.810 -35.910 4.282 883
+885 3 91.450 -244.250 -35.680 4.933 884
+886 3 90.560 -248.870 -32.650 4.933 885
+887 3 98.710 -259.180 -35.470 1.434 886
+888 3 106.710 -268.400 -38.290 2.008 887
+889 3 113.850 -273.930 -41.170 1.434 888
+890 3 118.040 -275.430 -44.110 1.434 889
+891 3 122.300 -278.060 -47.040 1.606 890
+892 3 124.790 -280.250 -50.000 1.377 891
+893 3 84.070 -279.530 -29.420 5.139 886
+894 3 79.760 -268.310 -26.570 1.836 893
+895 3 82.930 -292.280 -32.310 3.098 893
+896 3 82.870 -316.150 -35.090 3.786 895
+897 3 83.600 -326.710 -35.780 3.304 896
+898 3 85.280 -344.430 -32.600 2.295 897
+899 3 91.570 -360.400 -32.190 1.721 898
+900 3 92.870 -362.620 -31.720 1.721 899
+901 3 96.730 -362.430 -28.680 1.606 900
+902 3 104.870 -367.030 -25.550 1.147 901
+903 3 107.770 -367.370 -22.520 1.469 902
+904 3 99.940 -377.090 -31.550 1.721 900
+905 3 105.450 -387.120 -29.840 1.721 904
+906 3 107.750 -392.210 -30.880 1.721 905
+907 3 111.620 -400.810 -32.650 1.721 906
+908 3 113.240 -413.870 -35.510 2.295 907
+909 3 117.200 -425.120 -36.090 0.820 908

File diff suppressed because it is too large
+ 1917 - 0
TestFiles/HSNR/HSN-fluoro05.CNG.swc


+ 931 - 0
TestFiles/HSNR/HSN-fluoro07.CNG.swc

@@ -0,0 +1,931 @@
+# SWC to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu
+# Original fileName:/cng_repository/Soumya/LM_Automated_Testing_Enviornment/Test_Lm3.7.2_11022011_SG_Linux_NMOConv8/TestResults/LoadTest/test_52/HSN-fluoro07.CNG.swc
+#
+# Original file HSN-fluoro07.swc edited using StdSwc version 1.31 on 5/31/11.
+# Irregularities and fixes documented in HSN-fluoro07.swc.std.  See StdSwc1.31.doc for more information.
+#
+# HSN neuron (lobula place tangential cells, LPTC) from Calliphora vicina
+# identification by response properties, in vivo Alexa injection, 2-photon-microscopy imaging, x63 objective, multiple image tiles
+# reconstructed and processed with Matlab and the TREES toolbox http://www.treestoolbox.org
+# scaling 1:1:1 um
+#  Max Planck Institute of Neurobiology, Martinsried, Germany
+#  Systems and Computational Neuroscience, Alexander Borst
+#  published in "The morphological identity of insect dendrites" Cuntz H, Forstner F, Haag J, Borst A. PMID 19112481
+# SCALE 1.0 1.0 1.0 
+1 1 9.490 44.030 -20.190 10.284 -1
+2 1 9.490 33.746 -20.190 10.284 1
+3 1 9.490 54.314 -20.190 10.284 1
+4 3 -0.730 37.280 -18.420 2.152 1
+5 3 -6.900 25.450 -16.730 5.077 4
+6 3 -6.820 21.640 -13.980 10.350 5
+7 3 -6.130 15.870 -11.340 16.373 6
+8 3 -3.230 10.650 -8.500 17.056 7
+9 3 -1.510 6.570 -5.650 17.056 8
+10 3 0.000 2.170 -2.850 13.644 9
+11 3 0.000 0.000 0.000 10.916 10
+12 3 9.330 55.900 -18.150 10.284 1
+13 3 5.460 66.500 -14.640 11.159 12
+14 3 6.420 78.620 -12.700 9.092 13
+15 3 1.600 99.280 -8.520 8.927 14
+16 3 0.830 114.210 -10.490 9.643 15
+17 3 3.230 127.120 -12.380 7.749 16
+18 3 4.250 138.760 -14.470 7.749 17
+19 3 0.750 153.900 -16.620 7.462 18
+20 3 12.980 160.600 -18.250 2.583 19
+21 3 22.700 170.870 -19.800 2.645 20
+22 3 27.940 177.370 -21.950 2.742 21
+23 3 32.850 175.620 -22.790 0.410 22
+24 3 34.120 175.920 -19.660 0.769 23
+25 3 36.110 175.810 -16.510 0.769 24
+26 3 37.540 175.600 -13.400 0.769 25
+27 3 39.320 175.170 -10.290 0.738 26
+28 3 33.010 181.170 -24.320 2.742 22
+29 3 34.290 183.530 -27.060 3.188 28
+30 3 29.750 188.280 -25.530 0.692 29
+31 3 26.110 189.150 -22.720 0.769 30
+32 3 44.980 194.350 -25.950 3.188 29
+33 3 48.070 191.060 -28.980 0.922 32
+34 3 51.290 187.030 -32.060 0.738 33
+35 3 52.990 187.320 -34.930 0.738 34
+36 3 55.330 186.310 -37.850 0.738 35
+37 3 56.730 185.510 -37.830 0.738 36
+38 3 58.270 184.140 -37.470 0.738 37
+39 3 58.320 182.680 -37.180 0.738 38
+40 3 58.600 181.570 -36.940 0.738 39
+41 3 58.990 179.930 -36.580 0.738 40
+42 3 59.400 178.260 -36.220 0.738 41
+43 3 60.020 176.980 -35.920 0.708 42
+44 3 60.290 175.850 -35.690 0.738 43
+45 3 60.900 174.560 -35.390 0.738 44
+46 3 61.180 173.450 -35.150 0.738 45
+47 3 61.230 172.000 -34.850 0.738 46
+48 3 60.640 169.510 -34.380 0.738 47
+49 3 60.910 168.430 -34.140 0.661 48
+50 3 61.400 167.670 -33.960 0.661 49
+51 3 62.220 166.710 -33.720 0.738 50
+52 3 62.710 165.930 -33.540 0.738 51
+53 3 58.930 166.760 -33.910 0.738 49
+54 3 57.930 165.950 -33.800 0.708 53
+55 3 57.030 166.010 -33.860 0.738 54
+56 3 56.110 166.060 -33.920 0.708 55
+57 3 55.410 166.500 -34.040 0.738 56
+58 3 46.750 193.170 -28.930 3.188 32
+59 3 50.050 198.040 -31.340 3.100 58
+60 3 44.340 203.290 -28.360 0.769 59
+61 3 42.170 204.210 -25.430 0.769 60
+62 3 52.330 198.840 -34.130 3.100 59
+63 3 57.420 203.120 -36.460 3.321 62
+64 3 52.690 205.980 -39.610 1.107 63
+65 3 53.180 210.060 -42.290 0.738 64
+66 3 53.230 213.100 -45.080 0.554 65
+67 3 47.500 207.510 -42.900 0.738 64
+68 3 43.700 208.310 -43.160 0.738 67
+69 3 62.810 206.460 -38.830 3.100 63
+70 3 66.350 204.290 -41.750 0.738 69
+71 3 66.980 202.210 -42.720 0.738 70
+72 3 66.620 200.060 -42.310 0.738 71
+73 3 66.240 197.950 -41.890 0.738 72
+74 3 64.960 195.870 -41.540 0.738 73
+75 3 69.990 211.780 -40.930 3.100 69
+76 3 75.650 216.780 -40.100 3.542 75
+77 3 80.100 215.260 -36.870 1.845 76
+78 3 84.810 217.260 -33.360 1.845 77
+79 3 86.440 217.370 -30.220 1.845 78
+80 3 86.850 213.150 -27.480 1.230 79
+81 3 84.730 209.510 -24.890 1.230 80
+82 3 84.100 208.460 -22.000 1.538 81
+83 3 83.340 205.820 -19.230 1.538 82
+84 3 81.870 203.570 -16.490 1.538 83
+85 3 81.460 200.730 -13.710 1.230 84
+86 3 77.030 197.790 -11.240 1.153 85
+87 3 72.940 192.060 -8.940 1.538 86
+88 3 71.480 189.790 -6.200 1.538 87
+89 3 81.560 197.100 -10.960 1.538 85
+90 3 81.180 191.980 -8.350 1.538 89
+91 3 80.830 184.510 -5.910 1.538 90
+92 3 80.830 182.340 -3.050 1.230 91
+93 3 79.930 180.230 -0.250 1.538 92
+94 3 80.510 178.070 -0.320 1.538 93
+95 3 80.120 173.570 0.560 1.153 94
+96 3 81.880 164.920 3.070 1.230 95
+97 3 76.980 169.310 1.260 1.538 95
+98 3 75.560 167.810 1.490 1.230 97
+99 3 74.400 165.180 1.970 1.538 98
+100 3 90.100 217.680 -26.910 1.230 79
+101 3 93.210 217.870 -23.660 1.538 100
+102 3 93.710 217.450 -20.630 1.538 101
+103 3 99.770 220.450 -16.950 1.181 102
+104 3 94.370 216.810 -17.620 1.538 102
+105 3 95.090 214.210 -14.740 1.538 104
+106 3 95.310 212.390 -11.840 1.230 105
+107 3 96.230 210.120 -8.920 1.476 106
+108 3 97.560 208.560 -5.920 1.476 107
+109 3 96.890 201.850 -3.450 1.153 108
+110 3 94.040 193.600 -5.810 1.360 109
+111 3 91.810 194.150 -5.020 0.308 110
+112 3 93.490 194.070 -2.800 1.360 110
+113 3 93.600 190.450 -0.050 1.153 112
+114 3 93.790 188.460 0.320 1.107 113
+115 3 102.450 208.000 -5.220 1.845 108
+116 3 107.550 205.450 -4.430 1.476 115
+117 3 114.850 204.890 -3.930 1.153 116
+118 3 118.740 207.310 -4.210 1.107 117
+119 3 121.710 209.790 -4.550 1.107 118
+120 3 108.970 200.820 -3.410 1.538 116
+121 3 108.790 196.700 -2.580 1.417 120
+122 3 108.070 194.760 -2.230 1.230 121
+123 3 108.050 192.420 -1.760 1.538 122
+124 3 107.540 190.820 -1.460 1.538 123
+125 3 105.690 188.620 -1.110 1.476 124
+126 3 103.700 186.980 -0.880 1.153 125
+127 3 81.480 224.510 -36.090 2.952 76
+128 3 78.040 228.010 -33.070 1.230 127
+129 3 74.820 229.540 -30.180 1.538 128
+130 3 71.840 229.120 -27.410 1.538 129
+131 3 68.480 231.390 -24.470 1.476 130
+132 3 65.650 233.120 -21.540 1.153 131
+133 3 86.370 229.140 -32.380 2.480 127
+134 3 89.990 234.060 -28.730 2.214 133
+135 3 88.790 238.070 -25.510 1.574 134
+136 3 85.870 244.010 -22.270 1.476 135
+137 3 90.830 236.000 -25.510 2.214 134
+138 3 93.840 240.070 -21.970 1.771 137
+139 3 97.190 241.000 -18.650 1.771 138
+140 3 100.490 230.840 -16.140 0.738 139
+141 3 99.270 242.180 -15.390 2.125 139
+142 3 100.660 243.980 -12.140 1.889 141
+143 3 98.740 250.000 -9.850 1.700 142
+144 3 102.180 254.200 -12.310 1.153 143
+145 3 96.950 252.460 -10.450 1.417 143
+146 3 95.010 255.480 -11.170 1.511 145
+147 3 97.280 262.030 -10.330 1.722 146
+148 3 100.830 264.650 -10.670 1.476 147
+149 3 101.780 243.950 -15.080 1.889 142
+150 3 104.210 244.810 -14.640 1.984 149
+151 3 105.650 244.650 -11.530 2.214 150
+152 3 109.770 251.370 -7.720 1.322 151
+153 3 113.230 255.420 -8.140 1.538 152
+154 3 108.360 261.670 -11.050 0.692 153
+155 3 119.140 259.180 -4.410 1.038 153
+156 3 125.790 263.730 -5.070 1.538 155
+157 3 130.000 269.040 -1.350 1.384 156
+158 3 135.870 270.100 0.300 1.845 157
+159 3 142.680 270.290 0.620 1.538 158
+160 3 148.230 270.790 0.820 1.722 159
+161 3 152.580 270.090 1.190 1.538 160
+162 3 155.930 268.570 1.680 1.107 161
+163 3 159.230 268.530 1.870 1.153 162
+164 3 163.360 267.500 2.300 1.230 163
+165 3 167.110 264.310 3.140 1.476 164
+166 3 167.880 262.450 3.560 1.771 165
+167 3 170.720 259.350 4.340 1.417 166
+168 3 170.680 254.670 5.290 1.722 167
+169 3 168.790 250.120 6.110 1.845 168
+170 3 168.590 243.650 7.420 1.538 169
+171 3 109.210 242.840 -14.420 2.214 151
+172 3 113.060 243.230 -11.090 1.845 171
+173 3 115.620 242.030 -9.380 2.214 172
+174 3 118.060 240.590 -8.950 1.845 173
+175 3 116.310 236.760 -6.340 0.922 174
+176 3 121.360 240.500 -8.760 1.845 174
+177 3 124.410 239.890 -5.570 1.845 176
+178 3 124.780 238.700 -4.120 1.845 177
+179 3 128.580 240.200 -4.230 1.107 178
+180 3 131.750 240.680 -4.160 1.107 179
+181 3 133.980 238.700 -1.120 1.107 180
+182 3 137.280 236.320 -0.930 1.107 181
+183 3 140.350 233.570 -0.210 1.107 182
+184 3 135.130 241.500 -4.150 1.107 180
+185 3 139.010 243.920 -4.430 1.107 184
+186 3 143.260 247.280 -0.850 1.107 185
+187 3 146.150 248.840 -0.960 1.196 186
+188 3 150.470 245.820 -0.110 1.088 187
+189 3 153.000 245.260 0.120 0.992 188
+190 3 151.540 253.670 -1.650 1.476 187
+191 3 154.440 255.280 -1.820 1.107 190
+192 3 157.600 255.760 -1.750 1.107 191
+193 3 159.510 256.500 -1.800 1.063 192
+194 3 125.370 237.530 -5.900 1.845 178
+195 3 126.520 234.000 -5.130 1.845 194
+196 3 127.240 232.310 -6.790 1.476 195
+197 3 124.700 230.510 -6.560 1.107 196
+198 3 123.330 227.540 -6.030 1.107 197
+199 3 120.350 225.070 -5.680 1.107 198
+200 3 127.700 231.350 -3.810 1.476 196
+201 3 128.570 228.070 -3.810 1.845 200
+202 3 128.760 226.090 -3.400 1.771 201
+203 3 124.440 222.980 -3.000 1.107 202
+204 3 128.810 224.620 -3.100 1.771 202
+205 3 129.690 222.210 -2.570 1.771 204
+206 3 130.870 221.060 -2.270 1.845 205
+207 3 134.130 220.760 0.960 1.476 206
+208 3 137.690 222.400 1.900 1.107 207
+209 3 140.220 221.850 2.150 1.107 208
+210 3 143.970 222.320 4.300 1.417 209
+211 3 146.390 224.680 3.950 1.476 210
+212 3 148.720 226.120 3.780 1.107 211
+213 3 152.340 229.640 3.260 1.107 212
+214 3 130.990 218.150 -1.670 1.417 206
+215 3 130.410 215.510 1.100 1.107 214
+216 3 128.510 212.420 1.390 1.476 215
+217 3 126.570 209.320 1.920 1.476 216
+218 3 124.920 205.100 2.690 1.476 217
+219 3 123.950 200.500 3.570 1.107 218
+220 3 121.950 197.680 0.200 1.476 219
+221 3 118.530 198.320 -0.350 1.417 220
+222 3 -2.040 160.680 -19.350 8.530 19
+223 3 -16.220 154.370 -23.870 1.230 222
+224 3 -2.660 162.200 -22.300 8.530 222
+225 3 -18.450 161.480 -26.520 0.922 224
+226 3 -5.950 169.730 -25.000 8.530 224
+227 3 -20.000 170.480 -28.990 0.787 226
+228 3 -6.060 173.170 -27.770 8.530 226
+229 3 -3.790 186.810 -29.620 7.541 228
+230 3 -2.790 189.600 -30.600 7.935 229
+231 3 7.610 189.230 -26.850 0.615 230
+232 3 13.560 190.950 -23.270 0.769 231
+233 3 16.090 193.290 -19.900 0.769 232
+234 3 18.140 194.070 -16.670 0.308 233
+235 3 -0.160 196.000 -26.920 7.935 230
+236 3 11.450 199.930 -22.760 1.063 235
+237 3 14.680 201.850 -19.370 0.922 236
+238 3 16.580 203.200 -16.110 0.738 237
+239 3 2.830 199.140 -29.490 7.935 235
+240 3 6.930 207.640 -31.580 7.026 239
+241 3 14.520 206.600 -28.080 1.107 240
+242 3 18.340 206.370 -24.800 1.063 241
+243 3 21.010 208.170 -21.460 1.153 242
+244 3 7.670 207.530 -34.550 7.026 240
+245 3 11.100 215.810 -35.180 6.348 244
+246 3 3.860 220.100 -32.370 0.922 245
+247 3 -1.300 220.030 -29.740 0.922 246
+248 3 -4.140 219.040 -27.010 1.153 247
+249 3 11.800 218.280 -31.930 6.348 245
+250 3 20.050 215.950 -28.480 1.063 249
+251 3 20.700 215.250 -25.460 1.033 250
+252 3 22.360 217.930 -25.140 1.153 250
+253 3 12.730 218.030 -34.890 6.348 249
+254 3 18.650 226.420 -36.860 6.856 253
+255 3 6.930 229.650 -34.460 1.230 254
+256 3 18.930 228.200 -33.690 6.856 254
+257 3 25.920 226.170 -30.310 1.038 256
+258 3 29.010 226.340 -27.050 1.153 257
+259 3 30.510 226.960 -23.880 0.922 258
+260 3 31.640 227.820 -20.720 0.922 259
+261 3 33.780 227.200 -17.590 0.922 260
+262 3 35.760 227.100 -14.440 0.769 261
+263 3 38.020 228.230 -11.170 0.769 262
+264 3 30.970 225.930 -20.910 1.107 259
+265 3 31.470 225.790 -17.870 0.922 264
+266 3 32.550 225.760 -14.770 0.922 265
+267 3 33.430 225.390 -11.720 0.922 266
+268 3 33.230 225.650 -8.700 0.769 267
+269 3 32.440 225.150 -5.780 0.769 268
+270 3 19.800 227.090 -36.720 6.856 256
+271 3 22.780 231.500 -37.740 7.604 270
+272 3 15.950 243.460 -35.420 1.968 271
+273 3 13.410 249.170 -32.170 1.845 272
+274 3 7.500 246.340 -29.800 1.153 273
+275 3 4.090 245.230 -27.110 1.230 274
+276 3 -0.370 247.040 -24.290 0.769 275
+277 3 2.600 242.590 -24.400 1.230 275
+278 3 13.580 254.700 -28.740 1.538 273
+279 3 9.160 257.390 -25.850 1.845 278
+280 3 3.020 256.480 -23.350 1.230 279
+281 3 -2.260 254.650 -20.860 1.153 280
+282 3 -4.120 254.500 -17.990 1.153 281
+283 3 -6.280 255.420 -15.060 1.230 282
+284 3 -8.180 257.570 -12.030 1.153 283
+285 3 8.780 262.760 -22.460 1.538 279
+286 3 6.860 267.210 -19.260 1.230 285
+287 3 5.780 272.980 -15.900 1.845 286
+288 3 1.800 274.040 -13.100 1.153 287
+289 3 -5.470 275.180 -10.530 1.153 288
+290 3 -8.620 275.210 -7.740 1.153 289
+291 3 -9.810 274.180 -4.890 1.378 290
+292 3 -9.380 272.700 -1.950 1.071 291
+293 3 -8.960 271.180 0.980 1.181 292
+294 3 9.050 278.090 -12.270 1.538 287
+295 3 13.680 279.230 -8.830 0.922 294
+296 3 15.460 281.340 -5.530 0.769 295
+297 3 16.770 282.070 -2.360 0.615 296
+298 3 16.340 283.790 0.740 0.769 297
+299 3 15.620 284.340 3.750 0.787 298
+300 3 8.580 284.890 -8.780 1.538 294
+301 3 8.170 289.850 -5.430 1.230 300
+302 3 10.570 290.310 -2.210 0.769 301
+303 3 11.320 290.900 0.900 0.922 302
+304 3 12.780 291.070 4.030 0.769 303
+305 3 13.790 291.930 3.660 0.865 304
+306 3 14.920 292.210 3.670 0.577 305
+307 3 17.380 293.100 3.620 0.769 306
+308 3 7.860 291.060 -2.350 1.230 301
+309 3 6.590 296.570 0.970 1.153 308
+310 3 1.290 294.600 3.450 1.538 309
+311 3 -1.550 290.870 5.980 1.153 310
+312 3 -2.960 290.870 5.020 1.230 311
+313 3 -5.210 290.320 5.020 1.153 312
+314 3 -7.140 293.340 4.300 0.577 313
+315 3 8.110 300.260 4.370 0.769 309
+316 3 7.190 301.820 3.340 0.708 315
+317 3 6.500 302.260 3.220 0.778 316
+318 3 12.000 300.540 1.660 1.153 315
+319 3 13.340 301.180 1.770 1.153 318
+320 3 15.370 301.350 1.830 1.230 319
+321 3 17.970 301.730 1.900 1.230 320
+322 3 26.460 237.310 -34.030 7.604 271
+323 3 32.730 235.650 -30.670 0.929 322
+324 3 35.970 237.570 -27.280 0.922 323
+325 3 29.520 242.060 -30.440 7.604 322
+326 3 39.000 249.530 -26.180 2.657 325
+327 3 42.430 246.320 -23.150 1.378 326
+328 3 42.190 243.400 -20.360 1.538 327
+329 3 44.970 241.480 -17.280 0.769 328
+330 3 46.360 238.090 -14.410 0.769 329
+331 3 44.930 236.310 -11.640 0.787 330
+332 3 46.430 237.150 -8.450 0.769 331
+333 3 46.190 255.570 -22.190 2.657 326
+334 3 52.130 251.840 -19.010 1.107 333
+335 3 55.120 250.250 -15.890 1.063 334
+336 3 61.710 253.000 -12.190 1.153 335
+337 3 63.350 255.870 -8.840 1.153 336
+338 3 64.540 254.820 -5.820 1.121 337
+339 3 65.520 253.450 -2.830 1.230 338
+340 3 56.210 247.930 -12.970 1.107 335
+341 3 58.000 247.510 -9.850 1.153 340
+342 3 59.000 249.070 -6.650 1.230 341
+343 3 60.330 247.510 -3.650 1.230 342
+344 3 59.790 245.200 -0.840 0.769 343
+345 3 48.370 258.120 -18.830 2.657 333
+346 3 53.170 263.100 -19.030 2.152 345
+347 3 59.100 265.710 -19.250 2.152 346
+348 3 63.200 268.500 -19.590 1.845 347
+349 3 67.680 272.450 -15.950 1.538 348
+350 3 71.310 269.570 -12.880 0.769 349
+351 3 71.340 267.850 -9.990 0.769 350
+352 3 73.470 267.250 -6.860 0.769 351
+353 3 67.810 271.310 -19.040 1.538 349
+354 3 70.200 272.820 -20.100 1.538 353
+355 3 74.470 276.430 -16.500 1.845 354
+356 3 80.470 273.570 -13.260 0.922 355
+357 3 81.630 272.140 -10.260 0.769 356
+358 3 86.650 270.760 -6.980 0.769 357
+359 3 85.210 268.980 -4.200 0.769 358
+360 3 85.910 268.820 -1.140 0.738 359
+361 3 82.260 269.100 -1.390 0.615 359
+362 3 80.600 266.530 1.310 0.615 361
+363 3 79.600 268.010 1.340 0.692 361
+364 3 78.520 279.730 -12.940 1.845 355
+365 3 77.440 285.500 -9.580 1.107 364
+366 3 79.390 278.790 -15.970 1.845 364
+367 3 88.300 282.920 -15.050 1.845 366
+368 3 94.660 287.540 -11.220 1.845 367
+369 3 95.500 289.480 -8.000 2.152 368
+370 3 99.620 285.870 -4.950 1.153 369
+371 3 102.700 285.640 -1.720 1.230 370
+372 3 104.940 296.560 -8.750 2.152 369
+373 3 107.790 301.000 -5.200 2.460 372
+374 3 106.490 315.730 -2.340 1.378 373
+375 3 116.800 308.900 -6.980 2.460 373
+376 3 120.510 314.590 -6.470 2.125 375
+377 3 118.520 320.450 -3.170 1.230 376
+378 3 121.620 314.280 -9.430 2.214 376
+379 3 33.490 254.530 -26.210 7.604 325
+380 3 36.880 261.390 -22.440 8.266 379
+381 3 38.000 264.540 -19.120 8.266 380
+382 3 24.260 265.280 -17.050 1.476 381
+383 3 39.520 268.350 -15.710 8.266 381
+384 3 40.220 270.840 -12.450 7.404 383
+385 3 32.770 274.810 -9.690 0.461 384
+386 3 32.200 280.060 -6.330 0.769 385
+387 3 28.390 275.390 -6.950 0.769 385
+388 3 41.810 275.560 -8.980 7.404 384
+389 3 48.410 283.750 -4.870 3.157 388
+390 3 55.800 282.290 -1.420 0.615 389
+391 3 53.270 290.600 -0.990 3.157 389
+392 3 59.150 298.950 3.060 3.444 391
+393 3 66.970 308.900 7.380 2.976 392
+394 3 78.480 313.810 11.600 2.583 393
+395 3 91.390 325.090 10.360 2.296 394
+396 3 100.410 331.760 12.460 2.066 395
+397 3 99.720 335.820 13.650 0.787 396
+398 3 99.450 336.920 13.410 0.769 397
+399 3 98.470 338.420 13.050 0.615 398
+400 3 97.430 339.040 12.870 0.577 399
+401 3 108.970 337.090 11.840 2.066 396
+402 3 115.280 343.790 15.820 1.722 401
+403 3 120.080 348.930 16.160 1.722 402
+404 3 122.490 351.290 15.810 1.435 403
+405 3 73.840 324.530 10.470 2.296 393
+406 3 76.600 330.310 11.490 2.009 405
+407 3 71.280 332.500 10.760 0.692 406
+408 3 68.550 332.710 10.570 0.787 407
+409 3 78.600 334.290 10.780 2.009 406
+410 3 84.980 343.590 11.280 2.296 409
+411 3 93.880 352.340 12.030 2.009 410
+412 3 95.200 354.250 13.750 2.009 411
+413 3 98.330 358.530 13.050 2.009 412
+414 3 100.800 363.060 14.310 1.722 413
+415 3 91.690 357.590 14.930 1.245 412
+416 3 89.940 358.620 14.620 1.538 415
+417 3 87.550 358.620 14.500 1.574 416
+418 3 85.310 358.070 14.490 1.476 417
+419 3 40.850 283.070 -5.480 5.951 388
+420 3 33.680 285.900 -2.780 0.692 419
+421 3 30.890 288.180 0.190 0.461 420
+422 3 39.650 292.570 -1.850 5.951 419
+423 3 39.260 297.620 1.500 4.999 422
+424 3 32.190 296.670 3.930 1.153 423
+425 3 30.100 297.200 5.500 0.922 424
+426 3 29.000 299.290 5.030 0.922 425
+427 3 27.550 301.570 4.490 1.153 426
+428 3 38.590 299.030 4.570 4.999 423
+429 3 40.390 309.260 8.470 4.285 428
+430 3 47.200 318.760 8.180 3.075 429
+431 3 53.950 331.180 6.570 2.768 430
+432 3 46.430 339.140 9.620 1.230 431
+433 3 54.680 339.060 10.220 2.152 431
+434 3 58.880 339.250 10.770 1.417 433
+435 3 60.870 340.890 10.540 1.538 434
+436 3 64.060 343.730 10.140 1.511 435
+437 3 55.050 338.890 7.220 2.152 433
+438 3 56.570 348.760 6.670 1.845 437
+439 3 60.330 359.000 8.880 1.968 438
+440 3 56.290 362.100 11.830 0.689 439
+441 3 61.600 361.250 6.130 1.968 439
+442 3 70.010 370.920 4.440 1.107 441
+443 3 77.200 377.900 3.900 1.153 442
+444 3 64.950 372.000 4.150 1.494 441
+445 3 65.670 376.250 3.630 1.574 444
+446 3 66.500 381.420 2.620 1.330 445
+447 3 66.510 383.760 2.140 1.378 446
+448 3 34.700 322.250 8.840 2.678 429
+449 3 34.390 322.670 5.840 2.870 448
+450 3 31.170 321.000 2.460 1.476 449
+451 3 28.420 321.200 2.590 1.181 450
+452 3 26.380 320.980 2.520 1.063 451
+453 3 22.510 320.920 2.330 0.689 452
+454 3 18.440 320.510 2.200 0.738 453
+455 3 14.360 320.070 2.070 0.769 454
+456 3 11.970 320.070 1.940 0.922 455
+457 3 10.980 319.250 2.050 0.738 456
+458 3 6.880 316.510 2.400 0.615 457
+459 3 31.800 326.790 7.770 2.870 449
+460 3 32.150 332.700 6.580 2.411 459
+461 3 31.310 339.790 5.100 2.480 460
+462 3 28.760 344.170 4.080 2.296 461
+463 3 28.650 344.930 1.110 2.583 462
+464 3 23.050 343.890 3.640 1.038 463
+465 3 20.590 343.140 6.420 1.378 464
+466 3 18.810 343.310 5.760 1.476 465
+467 3 16.840 344.000 5.520 1.538 466
+468 3 15.450 344.820 5.280 1.476 467
+469 3 11.960 346.890 4.670 1.451 468
+470 3 27.060 349.870 2.830 2.583 463
+471 3 37.490 360.870 5.240 1.771 470
+472 3 41.110 364.390 4.720 1.968 471
+473 3 45.030 372.980 2.620 1.845 472
+474 3 45.150 374.730 2.840 1.476 473
+475 3 43.510 379.000 1.880 0.769 474
+476 3 24.020 354.960 1.630 2.009 470
+477 3 22.590 358.390 4.800 2.296 476
+478 3 17.980 355.060 1.190 0.685 477
+479 3 15.900 353.850 -2.050 0.577 478
+480 3 13.690 353.340 -2.670 0.615 479
+481 3 12.000 352.930 -2.670 0.738 480
+482 3 10.040 353.620 -2.920 0.519 481
+483 3 7.440 353.290 -2.980 0.554 482
+484 3 5.270 353.620 -3.170 0.819 483
+485 3 21.660 360.430 1.860 2.296 477
+486 3 19.880 363.640 -1.040 1.435 485
+487 3 17.550 366.820 -1.110 1.435 486
+488 3 16.790 368.680 -1.530 1.722 487
+489 3 14.090 371.230 -2.190 1.722 488
+490 3 22.990 367.700 1.040 1.435 485
+491 3 23.450 370.750 0.450 1.205 490
+492 3 24.390 373.010 0.040 1.469 491
+493 3 25.350 377.640 -0.840 1.469 492
+494 3 25.320 381.420 -1.610 1.328 493
+495 3 24.370 385.280 -2.440 1.378 494
+496 3 -14.820 191.820 -30.060 8.530 228
+497 3 -28.070 182.870 -34.700 0.738 496
+498 3 -14.840 191.250 -33.120 8.530 496
+499 3 -22.180 198.710 -36.120 7.199 498
+500 3 -23.710 202.700 -38.960 8.885 499
+501 3 -31.470 193.680 -43.210 0.922 500
+502 3 -37.270 191.670 -44.100 0.769 501
+503 3 -42.410 191.890 -44.420 0.769 502
+504 3 -32.970 214.280 -41.800 8.885 500
+505 3 -38.200 223.150 -44.550 8.291 504
+506 3 -50.020 222.310 -42.460 1.328 505
+507 3 -58.060 222.980 -39.980 1.538 506
+508 3 -67.520 224.460 -37.550 1.107 507
+509 3 -74.630 222.750 -35.180 0.787 508
+510 3 -71.190 229.920 -34.400 1.476 508
+511 3 -70.370 234.150 -31.020 0.769 510
+512 3 -69.820 237.170 -27.740 0.738 511
+513 3 -67.650 239.700 -24.380 0.769 512
+514 3 -39.410 223.700 -47.610 8.291 505
+515 3 -39.120 228.510 -46.570 8.530 514
+516 3 -23.590 233.400 -42.050 0.692 515
+517 3 -21.600 233.320 -38.890 0.615 516
+518 3 -22.070 237.230 -38.640 0.769 516
+519 3 -39.210 239.780 -43.750 8.530 515
+520 3 -24.160 245.400 -39.210 0.756 519
+521 3 -39.210 242.670 -40.520 8.530 519
+522 3 -39.640 244.870 -37.370 7.856 521
+523 3 -54.110 242.820 -35.570 0.769 522
+524 3 -39.710 246.870 -34.210 7.856 522
+525 3 -29.640 252.150 -30.070 0.769 524
+526 3 -40.200 250.500 -30.970 7.856 524
+527 3 -51.150 254.180 -28.480 3.967 526
+528 3 -54.550 258.560 -25.390 4.592 527
+529 3 -61.310 256.650 -23.010 0.922 528
+530 3 -67.730 256.850 -20.450 1.230 529
+531 3 -78.550 254.540 -18.400 1.538 530
+532 3 -83.560 254.120 -15.780 1.063 531
+533 3 -88.180 251.390 -13.310 0.787 532
+534 3 -94.800 246.200 -11.160 0.769 533
+535 3 -56.370 261.590 -22.290 4.592 528
+536 3 -55.940 268.320 -18.740 0.738 535
+537 3 -58.280 274.370 -15.450 0.738 536
+538 3 -57.860 264.400 -19.170 4.592 535
+539 3 -65.030 269.590 -16.300 3.444 538
+540 3 -67.920 273.210 -13.230 3.788 539
+541 3 -73.010 271.640 -10.700 1.230 540
+542 3 -76.790 270.280 -8.060 1.107 541
+543 3 -78.830 270.200 -5.200 0.769 542
+544 3 -84.310 270.710 -2.550 0.787 543
+545 3 -74.130 279.210 -10.230 3.788 540
+546 3 -68.130 284.100 -6.410 1.435 545
+547 3 -61.650 287.790 -2.650 1.435 546
+548 3 -57.760 286.010 0.510 0.461 547
+549 3 -59.200 291.420 0.800 0.922 547
+550 3 -61.220 296.010 2.920 0.769 549
+551 3 -75.900 283.090 -7.050 2.870 545
+552 3 -87.970 283.780 -4.880 0.769 551
+553 3 -78.570 287.140 -3.940 2.870 551
+554 3 -79.860 289.820 -0.820 2.583 553
+555 3 -81.990 291.170 2.130 2.870 554
+556 3 -83.620 291.750 5.070 2.296 555
+557 3 -83.400 297.560 5.510 1.435 556
+558 3 -84.150 300.250 8.670 2.009 557
+559 3 -75.240 298.680 6.190 0.769 558
+560 3 -85.640 304.790 5.880 2.009 558
+561 3 -86.040 307.260 9.050 1.653 560
+562 3 -78.250 305.650 6.480 0.922 561
+563 3 -86.610 311.930 6.330 1.653 561
+564 3 -87.290 314.670 5.910 1.587 563
+565 3 -88.190 317.090 5.380 1.640 564
+566 3 -40.860 254.650 -27.690 7.856 526
+567 3 -37.610 262.040 -23.890 6.856 566
+568 3 -26.180 263.350 -19.940 0.769 567
+569 3 -36.710 264.870 -20.600 6.856 567
+570 3 -35.610 270.320 -17.110 5.786 569
+571 3 -28.230 273.980 -13.280 1.538 570
+572 3 -25.800 274.980 -10.010 1.538 571
+573 3 -23.080 274.920 -6.800 1.230 572
+574 3 -21.740 273.320 -3.800 1.732 573
+575 3 -34.170 275.540 -13.600 5.786 570
+576 3 -41.740 277.760 -10.980 1.378 575
+577 3 -33.930 281.950 -10.090 6.199 575
+578 3 -29.970 289.210 -6.250 5.373 577
+579 3 -21.390 291.480 -2.440 1.148 578
+580 3 -20.040 292.760 0.760 1.148 579
+581 3 -17.660 291.230 2.130 0.538 580
+582 3 -14.440 290.280 2.490 0.718 581
+583 3 -17.820 295.560 1.240 0.718 580
+584 3 -16.110 298.320 0.770 0.689 583
+585 3 -12.520 299.700 -1.870 0.538 584
+586 3 -11.200 300.290 -1.400 0.574 585
+587 3 -6.700 299.390 1.870 0.738 586
+588 3 -6.390 297.640 3.470 0.769 587
+589 3 -32.610 293.590 -3.110 5.453 578
+590 3 -41.560 289.260 -1.070 1.148 589
+591 3 -46.160 286.540 1.400 1.076 590
+592 3 -47.720 285.730 4.240 1.033 591
+593 3 -50.590 287.960 3.080 0.718 592
+594 3 -47.960 284.530 3.910 0.574 592
+595 3 -48.820 283.150 4.150 0.718 594
+596 3 -52.880 281.450 2.240 0.689 595
+597 3 -32.560 294.590 -0.010 3.472 589
+598 3 -42.880 300.390 0.970 2.976 597
+599 3 -44.250 301.030 2.800 2.755 598
+600 3 -50.440 299.350 5.240 1.378 599
+601 3 -46.650 302.340 4.450 2.645 599
+602 3 -43.560 309.590 2.200 0.769 601
+603 3 -47.810 303.350 6.230 2.755 601
+604 3 -50.810 304.670 5.810 2.976 603
+605 3 -50.870 306.120 5.510 2.755 604
+606 3 -54.150 304.870 3.540 0.992 605
+607 3 -55.840 304.480 3.530 1.076 606
+608 3 -58.010 304.820 3.350 1.033 607
+609 3 -59.270 305.090 3.220 1.076 608
+610 3 -63.530 306.680 2.680 0.861 609
+611 3 -66.190 307.780 2.310 0.718 610
+612 3 -69.890 309.500 1.760 0.992 611
+613 3 -50.980 309.010 4.910 2.755 605
+614 3 -44.250 313.150 2.700 0.769 613
+615 3 -53.370 312.640 6.090 2.411 613
+616 3 -55.350 315.310 3.130 2.870 615
+617 3 -54.710 318.150 4.900 2.411 616
+618 3 -47.050 319.900 2.580 0.787 617
+619 3 -53.850 319.710 2.070 2.411 617
+620 3 -60.090 318.170 2.570 0.738 619
+621 3 -66.170 319.890 1.900 0.769 620
+622 3 -53.320 323.450 3.900 1.722 619
+623 3 -53.570 324.760 0.960 2.066 622
+624 3 -50.490 325.350 -0.410 1.230 623
+625 3 -49.290 326.540 -0.580 1.038 624
+626 3 -46.920 330.320 -1.230 0.769 625
+627 3 -45.560 333.290 -1.750 0.738 626
+628 3 -42.770 337.780 -2.510 0.919 627
+629 3 -41.480 339.820 -2.870 0.689 628
+630 3 -39.780 342.590 -3.330 0.769 629
+631 3 -39.130 343.620 -3.510 0.693 630
+632 3 -37.980 346.230 -3.980 0.769 631
+633 3 -54.010 326.700 4.090 2.066 623
+634 3 -54.860 327.320 1.060 1.722 633
+635 3 -58.960 324.570 1.330 0.738 634
+636 3 -55.820 328.850 0.630 1.722 634
+637 3 -50.870 331.170 -1.840 1.107 636
+638 3 -50.260 334.350 -4.580 1.107 637
+639 3 -50.190 337.570 -4.920 1.063 638
+640 3 -49.810 339.710 -5.330 1.153 639
+641 3 -48.310 342.120 -5.740 1.153 640
+642 3 -46.810 344.540 -6.150 1.153 641
+643 3 -57.460 331.930 3.750 1.722 636
+644 3 -59.680 336.060 3.050 1.722 643
+645 3 -59.060 336.750 0.130 1.435 644
+646 3 -62.760 337.670 -1.520 1.230 645
+647 3 -66.590 339.950 -2.190 0.769 646
+648 3 -68.680 341.170 -2.550 0.738 647
+649 3 -70.700 343.320 -3.090 0.738 648
+650 3 -58.130 343.150 1.690 1.435 645
+651 3 -57.480 347.030 -0.980 1.435 650
+652 3 -61.210 348.400 -4.170 0.718 651
+653 3 -64.170 350.450 -7.250 0.769 652
+654 3 -65.050 352.040 -8.640 0.769 653
+655 3 -66.210 355.540 -9.420 0.725 654
+656 3 -57.130 349.000 -3.830 1.435 651
+657 3 -55.050 354.900 -6.260 1.435 656
+658 3 -53.050 362.200 -8.590 1.722 657
+659 3 -51.120 368.430 -11.000 1.722 658
+660 3 -49.450 373.640 -13.520 1.435 659
+661 3 -30.280 301.250 3.650 3.472 597
+662 3 -28.570 304.010 3.040 2.870 661
+663 3 -33.190 308.290 0.000 0.769 662
+664 3 -27.800 305.780 4.760 2.870 662
+665 3 -16.630 310.460 2.910 0.615 664
+666 3 -11.380 311.890 0.380 0.615 665
+667 3 -8.280 311.480 0.560 0.738 666
+668 3 -25.550 308.840 2.140 2.870 664
+669 3 -24.250 312.060 5.490 2.583 668
+670 3 -30.570 313.100 2.080 0.615 669
+671 3 -23.480 312.210 2.540 2.583 669
+672 3 -22.280 316.180 2.940 2.009 671
+673 3 -27.180 319.090 2.090 0.769 672
+674 3 -31.720 317.460 4.660 0.769 673
+675 3 -28.200 322.060 1.440 0.769 673
+676 3 -32.640 321.640 4.100 0.769 675
+677 3 -35.910 319.400 3.610 0.615 676
+678 3 -35.320 315.760 4.380 0.615 677
+679 3 -34.760 322.030 3.140 0.689 676
+680 3 -35.440 324.780 2.540 0.738 679
+681 3 -29.190 324.850 2.860 0.769 675
+682 3 -29.970 330.500 1.670 0.738 681
+683 3 -27.340 333.200 1.270 0.769 682
+684 3 -36.950 334.640 0.460 0.738 682
+685 3 -41.850 329.070 1.330 0.615 684
+686 3 -21.690 316.540 0.000 2.009 672
+687 3 -19.260 323.370 1.650 1.722 686
+688 3 -19.050 326.850 4.940 1.722 687
+689 3 -12.110 323.370 2.180 0.692 688
+690 3 -5.020 322.480 2.590 0.787 689
+691 3 -1.510 322.750 2.720 0.689 690
+692 3 0.100 322.260 2.910 0.738 691
+693 3 -18.620 329.170 6.640 1.653 688
+694 3 -7.300 333.310 4.750 1.574 693
+695 3 -5.900 334.680 1.940 1.612 694
+696 3 -2.450 336.390 1.950 1.771 695
+697 3 0.910 337.210 1.960 1.771 696
+698 3 1.640 339.120 1.610 1.476 697
+699 3 0.670 340.650 1.250 1.538 698
+700 3 -18.350 330.070 3.710 1.653 693
+701 3 -17.530 335.750 3.320 2.009 700
+702 3 -17.210 337.170 0.430 1.722 701
+703 3 -20.130 337.900 0.700 1.538 702
+704 3 -22.570 339.320 0.280 1.378 703
+705 3 -25.160 341.340 -0.260 1.417 704
+706 3 -27.040 342.920 -0.680 0.769 705
+707 3 -28.430 343.730 -0.920 0.787 706
+708 3 -17.430 337.820 -1.180 1.722 702
+709 3 -12.300 341.280 0.430 1.179 708
+710 3 -10.590 344.010 -0.030 1.148 709
+711 3 -8.520 346.570 -0.430 1.230 710
+712 3 -5.470 349.950 -0.960 1.378 711
+713 3 -3.280 351.950 -1.240 1.538 712
+714 3 -2.420 353.320 -1.480 1.538 713
+715 3 -1.400 356.510 -2.070 1.538 714
+716 3 -18.030 342.600 2.130 1.722 708
+717 3 -18.610 346.280 1.120 1.435 716
+718 3 -19.060 349.390 0.470 1.722 717
+719 3 -18.240 354.560 -0.530 1.435 718
+720 3 -17.710 358.480 -1.300 1.722 719
+721 3 -17.550 360.280 -1.650 1.722 720
+722 3 -15.910 364.950 -4.200 1.607 721
+723 3 -14.540 368.600 -6.850 1.435 722
+724 3 -13.190 373.040 -8.100 1.435 723
+725 3 -12.100 377.100 -8.860 1.322 724
+726 3 -11.930 379.230 -11.710 1.360 725
+727 3 -17.490 372.290 -8.170 1.076 723
+728 3 -17.370 373.540 -11.090 1.181 727
+729 3 -17.730 375.920 -13.960 0.787 728
+730 3 -19.360 378.570 -16.900 0.738 729
+731 3 -20.480 379.790 -18.030 0.738 730
+732 3 -22.690 352.000 -0.250 1.845 718
+733 3 -23.340 357.100 -1.310 1.230 732
+734 3 -23.420 358.200 -4.260 0.738 733
+735 3 -29.190 360.010 -1.530 0.692 734
+736 3 -32.270 362.730 -4.570 0.738 735
+737 3 -35.930 365.200 -7.680 0.738 736
+738 3 -33.560 357.540 -5.050 0.769 735
+739 3 -37.580 354.730 -8.570 0.520 738
+740 3 -23.850 361.650 -2.270 0.738 734
+741 3 -24.310 364.730 -2.920 0.738 740
+742 3 -25.280 366.260 -3.280 0.922 741
+743 3 -27.990 366.480 -6.480 0.769 742
+744 3 -26.680 369.280 -9.190 0.577 743
+745 3 -27.980 372.530 -10.820 0.577 744
+746 3 -32.200 368.810 -9.630 0.769 743
+747 3 -33.740 371.670 -10.960 1.417 746
+748 3 9.910 34.060 -23.910 10.284 1
+749 3 13.870 16.750 -25.290 11.426 748
+750 3 26.040 -7.320 -24.860 10.745 749
+751 3 38.970 -30.920 -24.490 9.826 750
+752 3 53.150 -48.700 -24.860 9.141 751
+753 3 70.870 -80.710 -22.900 8.815 752
+754 3 76.760 -94.950 -24.810 8.118 753
+755 3 85.660 -108.140 -26.770 8.227 754
+756 3 93.020 -122.290 -28.610 9.594 755
+757 3 107.250 -143.790 -28.590 10.627 756
+758 3 119.960 -170.090 -27.690 10.236 757
+759 3 135.730 -184.530 -29.030 7.616 758
+760 3 149.720 -202.600 -29.730 7.226 759
+761 3 162.240 -216.040 -28.130 6.765 760
+762 3 167.060 -226.070 -31.530 6.765 761
+763 3 184.210 -235.460 -33.980 3.188 762
+764 3 186.220 -230.090 -30.420 2.214 763
+765 3 190.860 -228.960 -26.980 1.230 764
+766 3 192.500 -226.090 -23.640 1.230 765
+767 3 193.950 -225.920 -20.500 1.230 766
+768 3 196.330 -225.790 -17.300 0.738 767
+769 3 187.190 -226.200 -27.050 2.214 764
+770 3 190.580 -222.090 -23.480 2.152 769
+771 3 192.780 -220.090 -23.880 1.845 770
+772 3 197.020 -217.870 -24.100 2.152 771
+773 3 199.730 -214.310 -24.680 2.152 772
+774 3 202.240 -208.710 -25.680 1.845 773
+775 3 204.190 -203.280 -26.680 2.125 774
+776 3 206.930 -199.840 -25.190 1.845 775
+777 3 207.110 -195.700 -26.020 1.845 776
+778 3 189.290 -236.040 -30.640 3.188 763
+779 3 200.130 -236.640 -28.300 3.382 778
+780 3 203.480 -238.980 -31.250 3.321 779
+781 3 210.220 -231.460 -29.840 2.952 780
+782 3 212.500 -222.040 -25.960 1.722 781
+783 3 217.120 -216.680 -28.240 1.968 782
+784 3 221.780 -212.650 -24.590 1.722 783
+785 3 224.180 -208.180 -22.580 1.538 784
+786 3 224.210 -205.820 -23.050 1.107 785
+787 3 223.450 -203.960 -23.470 0.769 786
+788 3 221.790 -202.060 -23.950 0.769 787
+789 3 218.610 -226.350 -25.830 1.845 781
+790 3 221.530 -223.820 -22.410 1.845 789
+791 3 232.020 -224.340 -22.970 1.538 790
+792 3 234.060 -224.120 -22.900 1.538 791
+793 3 237.500 -230.890 -21.350 1.845 792
+794 3 238.390 -233.290 -20.810 1.574 793
+795 3 241.130 -233.510 -20.620 0.692 794
+796 3 208.220 -239.000 -27.890 3.321 780
+797 3 217.210 -236.640 -30.070 2.583 796
+798 3 222.220 -233.430 -32.480 2.460 797
+799 3 229.440 -238.030 -35.300 2.362 798
+800 3 238.300 -242.870 -38.030 2.152 799
+801 3 247.520 -249.600 -37.450 1.845 800
+802 3 255.910 -258.510 -40.500 1.845 801
+803 3 261.970 -269.150 -43.860 1.845 802
+804 3 267.080 -280.280 -47.320 1.538 803
+805 3 266.120 -290.030 -46.640 1.538 804
+806 3 267.410 -297.750 -47.060 1.245 805
+807 3 224.980 -231.140 -35.130 1.538 798
+808 3 226.840 -226.090 -35.150 1.538 807
+809 3 227.210 -223.980 -35.560 1.538 808
+810 3 226.810 -222.310 -35.920 1.538 809
+811 3 228.810 -218.310 -36.620 1.653 810
+812 3 229.360 -230.290 -36.210 1.538 807
+813 3 232.010 -231.390 -35.840 1.968 812
+814 3 237.840 -232.000 -35.400 1.538 813
+815 3 239.660 -232.140 -35.280 1.845 814
+816 3 243.860 -232.280 -35.030 1.538 815
+817 3 246.820 -232.140 -34.900 1.845 816
+818 3 251.680 -231.250 -34.820 2.152 817
+819 3 172.700 -236.780 -28.890 6.765 762
+820 3 183.600 -251.900 -32.220 6.273 819
+821 3 186.540 -255.390 -33.460 6.273 820
+822 3 199.690 -253.180 -29.320 1.038 821
+823 3 204.240 -253.430 -25.990 1.107 822
+824 3 205.540 -253.840 -26.570 1.230 823
+825 3 207.130 -254.340 -23.470 0.769 824
+826 3 207.970 -255.170 -20.450 0.738 825
+827 3 209.500 -254.230 -20.140 0.769 826
+828 3 212.800 -254.310 -19.950 0.689 827
+829 3 213.710 -254.390 -19.890 0.769 828
+830 3 207.280 -252.230 -23.310 1.230 824
+831 3 210.130 -250.710 -22.870 1.378 830
+832 3 212.170 -250.480 -22.800 0.769 831
+833 3 215.900 -249.870 -22.730 0.769 832
+834 3 218.070 -250.210 -22.540 0.692 833
+835 3 221.020 -250.070 -22.420 0.738 834
+836 3 223.190 -250.420 -22.230 0.738 835
+837 3 225.660 -249.530 -22.280 0.769 836
+838 3 197.090 -266.820 -30.510 6.273 821
+839 3 203.640 -264.680 -26.860 0.830 838
+840 3 204.890 -264.840 -23.760 0.769 839
+841 3 200.470 -271.120 -30.750 7.822 838
+842 3 204.020 -275.760 -33.850 7.822 841
+843 3 215.200 -278.560 -33.300 0.769 842
+844 3 220.760 -281.700 -34.400 0.708 843
+845 3 223.860 -284.710 -37.410 1.038 844
+846 3 228.880 -289.500 -40.420 1.038 845
+847 3 233.590 -290.510 -43.160 0.738 846
+848 3 236.920 -289.040 -44.310 1.913 847
+849 3 210.760 -284.530 -37.010 7.019 842
+850 3 215.610 -293.620 -34.310 6.611 849
+851 3 221.390 -302.560 -34.230 6.611 850
+852 3 228.460 -315.540 -33.580 4.612 851
+853 3 232.180 -322.590 -30.810 4.305 852
+854 3 233.810 -325.680 -33.930 4.305 853
+855 3 239.990 -326.810 -36.580 0.615 854
+856 3 241.890 -327.700 -38.250 0.615 855
+857 3 244.320 -329.120 -37.830 0.554 856
+858 3 247.710 -328.290 -37.810 0.577 857
+859 3 248.510 -325.460 -38.350 0.787 858
+860 3 236.860 -328.930 -30.930 5.845 854
+861 3 240.890 -344.480 -28.760 4.059 860
+862 3 242.260 -354.920 -30.660 5.842 861
+863 3 241.480 -367.340 -32.780 4.612 862
+864 3 243.510 -380.620 -36.620 4.797 863
+865 3 245.260 -399.950 -37.720 4.612 864
+866 3 246.870 -406.540 -36.290 4.612 865
+867 3 249.380 -416.710 -38.180 3.998 866
+868 3 255.710 -420.060 -34.940 2.152 867
+869 3 258.990 -422.640 -31.870 1.538 868
+870 3 262.550 -424.010 -28.700 2.152 869
+871 3 262.830 -424.280 -27.750 1.230 870
+872 3 264.070 -421.930 -24.470 0.692 871
+873 3 263.850 -419.980 -24.480 0.922 872
+874 3 263.440 -418.320 -24.840 0.769 873
+875 3 265.780 -416.870 -25.010 0.738 874
+876 3 264.430 -427.280 -24.840 1.230 871
+877 3 266.460 -429.390 -24.470 1.538 876
+878 3 268.340 -431.000 -24.050 1.845 877
+879 3 265.230 -433.090 -21.420 1.845 878
+880 3 264.000 -432.780 -21.870 2.152 879
+881 3 270.290 -431.670 -23.810 1.538 878
+882 3 271.610 -433.390 -23.390 1.538 881
+883 3 274.250 -433.210 -21.240 1.538 882
+884 3 252.620 -425.120 -38.350 3.382 867
+885 3 253.340 -426.340 -38.520 3.382 884
+886 3 255.760 -430.590 -39.110 3.382 885
+887 3 253.710 -435.950 -36.630 1.845 886
+888 3 254.490 -437.650 -33.690 1.538 887
+889 3 254.030 -434.560 -34.310 2.768 888
+890 3 253.980 -433.100 -34.600 3.075 889
+891 3 256.860 -432.670 -38.630 3.075 886
+892 3 259.200 -437.340 -37.550 3.075 891
+893 3 267.920 -442.510 -36.040 1.968 892
+894 3 271.330 -445.480 -35.260 1.722 893
+895 3 272.600 -445.760 -35.130 2.152 894
+896 3 263.440 -444.900 -37.830 2.152 892
+897 3 267.600 -453.350 -37.940 1.538 896
+898 3 267.370 -459.700 -38.710 1.845 897
+899 3 267.910 -461.920 -38.240 1.845 898
+900 3 268.440 -464.100 -37.760 1.230 899
+901 3 270.750 -468.640 -38.760 1.538 900
+902 3 274.650 -472.350 -37.800 1.538 901
+903 3 274.860 -475.650 -39.160 0.820 902
+904 3 265.730 -465.180 -39.730 0.922 899
+905 3 262.780 -471.460 -38.610 1.538 904
+906 3 262.710 -472.350 -38.440 1.538 905
+907 3 262.890 -474.370 -38.020 1.230 906
+908 3 273.270 -455.780 -37.150 1.845 897
+909 3 277.030 -458.950 -36.300 1.063 908
+910 3 278.930 -461.820 -37.660 1.230 909
+911 3 283.780 -464.560 -38.890 1.538 910
+912 3 285.800 -466.700 -38.350 1.230 911
+913 3 286.540 -468.560 -37.930 1.230 912
+914 3 287.090 -470.780 -37.460 1.845 913
+915 3 287.340 -474.210 -36.740 1.538 914
+916 3 286.240 -478.290 -35.980 1.845 915
+917 3 284.740 -480.700 -35.570 1.845 916

File diff suppressed because it is too large
+ 1212 - 0
TestFiles/HSNR/HSN-fluoro09.CNG.swc


+ 187 - 0
TestFiles/LLC/Cha-F-000012.CNG.swc

@@ -0,0 +1,187 @@
+1 2 294.233600 184.508800 -63.606341 0.500000 -1
+2 2 293.916800 184.192000 -62.605020 0.500000 1
+3 2 293.600000 180.691200 -62.605020 0.500000 2
+4 2 293.280000 180.374400 -63.606341 0.500000 3
+5 2 292.643200 177.193600 -62.605020 0.500000 4
+6 2 292.643200 174.329600 -62.605020 0.500000 5
+7 2 293.280000 174.012800 -63.606341 0.500000 6
+8 2 293.600000 173.376000 -60.602378 0.500000 7
+9 2 293.916800 172.422400 -60.602378 0.500000 8
+10 2 295.187200 171.465600 -60.602378 0.500000 9
+11 2 297.097600 171.785600 -60.602378 0.500000 10
+12 2 302.185600 174.649600 -62.605020 0.500000 11
+13 2 302.185600 174.649600 -63.606341 0.500000 12
+14 2 303.776000 174.649600 -63.606341 0.500000 13
+15 2 303.776000 175.283200 -61.603699 0.500000 14
+16 2 305.683200 176.873600 -60.602378 0.500000 15
+17 2 308.864000 177.193600 -61.603699 0.500000 16
+18 2 308.227200 178.464000 -64.607662 0.500000 17
+19 2 305.683200 181.011200 -66.610304 0.500000 18
+20 2 304.409600 182.918400 -64.607662 0.500000 19
+21 2 304.409600 182.918400 -62.605020 0.500000 20
+22 2 304.729600 181.011200 -60.602378 0.500000 21
+23 2 304.409600 181.644800 -55.593131 0.500000 22
+24 2 299.641600 181.644800 -54.591810 0.500000 23
+25 2 296.460800 182.601600 -53.590489 0.500000 24
+26 2 292.643200 181.328000 -52.589168 0.500000 25
+27 2 290.419200 181.011200 -51.587847 0.500000 26
+28 2 289.782400 181.011200 -48.583884 0.500000 27
+29 2 289.145600 180.054400 -47.582563 0.500000 28
+30 2 287.555200 179.100800 -47.582563 0.500000 29
+31 2 288.192000 176.240000 -45.579921 0.500000 30
+32 2 288.828800 176.240000 -42.573316 0.500000 31
+33 2 289.145600 176.873600 -42.573316 0.500000 32
+34 2 289.465600 177.830400 -40.570674 0.500000 33
+35 2 289.782400 179.737600 -37.566711 0.500000 34
+36 2 289.145600 180.054400 -38.568032 0.500000 35
+37 2 289.145600 180.691200 -37.566711 0.500000 36
+38 2 291.689600 181.644800 -35.564069 0.500000 37
+39 2 292.963200 182.601600 -34.562748 0.500000 38
+40 2 293.600000 185.145600 -33.561427 0.500000 39
+41 2 294.553600 187.052800 -33.561427 0.500000 40
+42 2 296.777600 188.326400 -30.557464 0.500000 41
+43 2 298.368000 190.870400 -31.558785 0.500000 42
+44 2 298.688000 192.780800 -30.557464 0.500000 43
+45 2 299.004800 195.004800 -30.557464 0.500000 44
+46 2 299.641600 195.004800 -30.557464 0.500000 45
+47 2 302.502400 196.915200 -30.557464 0.500000 46
+48 2 304.092800 196.595200 -31.558785 0.500000 47
+49 2 306.000000 196.915200 -29.556143 0.500000 48
+50 2 305.683200 198.505600 -28.552180 0.500000 49
+51 2 307.273600 198.822400 -26.549538 0.500000 50
+52 2 307.907200 196.915200 -26.549538 0.500000 51
+53 2 311.724800 196.915200 -25.548217 0.500000 52
+54 2 312.678400 197.552000 -26.549538 0.500000 53
+55 2 314.585600 197.868800 -26.549538 0.500000 54
+56 2 314.585600 195.004800 -25.548217 0.500000 55
+57 2 316.812800 194.371200 -25.548217 0.500000 56
+58 2 315.859200 193.734400 -23.545575 0.500000 57
+59 2 313.952000 198.185600 -27.550859 0.500000 55
+60 2 313.632000 199.776000 -28.552180 0.500000 59
+61 2 312.361600 199.776000 -27.550859 0.500000 60
+62 2 312.041600 202.003200 -27.550859 0.500000 61
+63 2 311.724800 202.003200 -27.550859 0.500000 62
+64 2 308.227200 202.323200 -29.556143 0.500000 63
+65 2 307.907200 206.140800 -30.557464 0.500000 64
+66 2 306.320000 211.228800 -29.556143 0.500000 65
+67 2 305.046400 211.865600 -29.556143 0.500000 66
+68 2 305.046400 211.865600 -30.557464 0.500000 67
+69 2 307.590400 211.865600 -31.558785 0.500000 68
+70 2 307.590400 211.545600 -30.557464 0.500000 69
+71 2 308.227200 212.502400 -31.558785 0.500000 70
+72 2 307.590400 213.772800 -31.558785 0.500000 71
+73 2 307.590400 215.683200 -31.558785 0.500000 72
+74 2 306.320000 214.729600 -32.560106 0.500000 73
+75 2 310.771200 210.912000 -30.557464 0.500000 70
+76 2 311.724800 210.912000 -28.552180 0.500000 75
+77 2 302.819200 211.545600 -30.557464 0.500000 68
+78 2 302.502400 210.275200 -30.557464 0.500000 77
+79 2 297.097600 210.275200 -29.556143 0.500000 78
+80 2 295.824000 209.638400 -29.556143 0.500000 79
+81 2 294.870400 209.955200 -28.552180 0.500000 80
+82 2 305.046400 206.457600 -28.552180 0.500000 65
+83 2 305.046400 207.731200 -28.552180 0.500000 82
+84 2 303.139200 207.411200 -30.557464 0.500000 83
+85 2 303.456000 207.411200 -31.558785 0.500000 84
+86 2 306.636800 202.640000 -26.549538 0.500000 64
+87 2 306.636800 202.640000 -25.548217 0.500000 86
+88 2 310.771200 202.640000 -27.550859 0.500000 63
+89 2 311.088000 204.550400 -28.552180 0.500000 88
+90 2 309.497600 206.457600 -29.556143 0.500000 89
+91 2 310.451200 206.774400 -28.552180 0.500000 90
+92 2 314.585600 206.457600 -31.558785 0.500000 91
+93 2 315.222400 206.457600 -31.558785 0.500000 92
+94 2 311.088000 196.595200 -26.549538 0.500000 53
+95 2 311.724800 193.734400 -26.549538 0.500000 94
+96 2 311.724800 193.097600 -24.546896 0.500000 95
+97 2 304.729600 198.822400 -29.556143 0.500000 50
+98 2 303.776000 200.412800 -31.558785 0.500000 97
+99 2 303.139200 200.412800 -29.556143 0.500000 98
+100 2 301.232000 202.323200 -31.558785 0.500000 99
+101 2 304.409600 202.960000 -31.558785 0.500000 100
+102 2 304.409600 203.276800 -30.557464 0.500000 101
+103 2 298.368000 195.004800 -31.558785 0.500000 45
+104 2 298.051200 195.004800 -32.560106 0.500000 103
+105 2 298.051200 196.278400 -32.560106 0.500000 104
+106 2 297.097600 196.915200 -33.561427 0.500000 105
+107 2 294.553600 197.552000 -33.561427 0.500000 106
+108 2 294.233600 198.185600 -32.560106 0.500000 107
+109 2 293.600000 198.505600 -34.562748 0.500000 108
+110 2 294.553600 200.412800 -33.561427 0.500000 109
+111 2 294.233600 201.686400 -34.562748 0.500000 110
+112 2 294.233600 204.550400 -33.561427 0.500000 111
+113 2 291.372800 201.686400 -33.561427 0.500000 111
+114 2 298.051200 197.232000 -31.558785 0.500000 105
+115 2 298.051200 199.776000 -32.560106 0.500000 114
+116 2 298.051200 200.096000 -32.560106 0.500000 115
+117 2 299.321600 190.553600 -30.557464 0.500000 44
+118 2 301.548800 189.916800 -30.557464 0.500000 117
+119 2 302.502400 189.280000 -30.557464 0.500000 118
+120 2 302.819200 187.689600 -30.557464 0.500000 119
+121 2 304.729600 187.052800 -29.556143 0.500000 120
+122 2 305.683200 189.600000 -28.552180 0.500000 121
+123 2 305.683200 189.280000 -28.552180 0.500000 122
+124 2 301.548800 190.553600 -31.558785 0.500000 118
+125 2 304.729600 191.507200 -30.557464 0.500000 124
+126 2 305.363200 192.144000 -30.557464 0.500000 125
+127 2 306.000000 192.780800 -27.550859 0.500000 126
+128 2 289.145600 181.644800 -48.583884 0.500000 28
+129 2 285.011200 182.281600 -51.587847 0.500000 128
+130 2 284.057600 183.872000 -51.587847 0.500000 129
+131 2 283.740800 183.555200 -54.591810 0.500000 130
+132 2 282.150400 187.372800 -56.597094 0.500000 131
+133 2 282.150400 188.009600 -57.598415 0.500000 132
+134 2 280.880000 191.507200 -58.599736 0.500000 133
+135 2 279.923200 195.961600 -59.601057 0.500000 134
+136 2 279.606400 196.278400 -59.601057 0.500000 135
+137 2 278.336000 202.960000 -60.602378 0.500000 136
+138 2 277.062400 204.550400 -60.602378 0.500000 137
+139 2 274.201600 206.140800 -61.603699 0.500000 138
+140 2 272.928000 206.457600 -61.603699 0.500000 139
+141 2 271.657600 206.774400 -59.601057 0.500000 140
+142 2 271.657600 208.684800 -60.602378 0.500000 141
+143 2 271.337600 208.684800 -61.603699 0.500000 142
+144 2 271.337600 208.364800 -64.607662 0.500000 143
+145 2 270.384000 207.731200 -64.607662 0.500000 144
+146 2 270.067200 209.321600 -65.608983 0.500000 145
+147 2 268.160000 209.955200 -60.602378 0.500000 143
+148 2 301.548800 182.918400 -67.611625 0.500000 20
+149 2 301.232000 182.918400 -67.611625 0.500000 148
+150 2 309.497600 179.420800 -62.605020 0.500000 18
+151 2 310.451200 182.601600 -62.605020 0.500000 150
+152 2 309.180800 185.782400 -62.605020 0.500000 151
+153 2 309.817600 185.462400 -61.603699 0.500000 152
+154 2 310.134400 178.147200 -60.602378 0.500000 17
+155 2 312.995200 178.784000 -58.599736 0.500000 154
+156 2 312.995200 179.100800 -58.599736 0.500000 155
+157 2 304.409600 173.692800 -61.603699 0.500000 14
+158 2 306.953600 173.056000 -63.606341 0.500000 157
+159 2 307.273600 173.056000 -59.601057 0.500000 158
+160 2 308.227200 173.376000 -55.593131 0.500000 159
+161 2 311.088000 171.785600 -54.591810 0.500000 160
+162 2 312.995200 168.604800 -55.593131 0.500000 161
+163 2 312.995200 166.694400 -55.593131 0.500000 162
+164 2 312.041600 166.060800 -53.590489 0.500000 163
+165 2 312.041600 164.787200 -53.590489 0.500000 164
+166 2 310.451200 163.513600 -54.591810 0.500000 165
+167 2 308.544000 163.833600 -57.598415 0.500000 166
+168 2 307.590400 162.880000 -56.597094 0.500000 167
+169 2 313.632000 168.284800 -58.599736 0.500000 162
+170 2 310.451200 167.331200 -60.602378 0.500000 169
+171 2 310.451200 167.651200 -58.599736 0.500000 170
+172 2 310.451200 167.014400 -59.601057 0.500000 171
+173 2 312.041600 167.014400 -61.603699 0.500000 172
+174 2 305.683200 173.692800 -55.593131 0.500000 160
+175 2 303.456000 174.649600 -56.597094 0.500000 174
+176 2 300.912000 178.147200 -56.597094 0.500000 175
+177 2 301.548800 177.830400 -55.593131 0.500000 176
+178 2 313.632000 174.012800 -64.607662 0.500000 158
+179 2 314.905600 175.603200 -64.607662 0.500000 178
+180 2 314.905600 176.556800 -65.608983 0.500000 179
+181 2 297.731200 175.920000 -64.607662 0.500000 13
+182 2 298.051200 179.100800 -63.606341 0.500000 181
+183 2 299.641600 181.644800 -62.605020 0.500000 182
+184 2 299.321600 181.964800 -63.606341 0.500000 183
+185 2 292.963200 177.193600 -58.599736 0.500000 5
+186 2 293.916800 177.830400 -57.598415 0.500000 185
+187 2 293.600000 178.147200 -58.599736 0.500000 186

+ 166 - 0
TestFiles/LLC/Cha-F-000018.CNG.swc

@@ -0,0 +1,166 @@
+1 2 300.256000 228.800000 80.118890 0.500000 -1
+2 2 300.892800 227.526400 81.122853 0.500000 1
+3 2 301.526400 225.936000 82.126816 0.500000 2
+4 2 302.796800 225.619200 83.128137 0.500000 3
+5 2 303.430400 223.392000 84.132100 0.500000 4
+6 2 305.017600 222.435200 82.126816 0.500000 5
+7 2 305.017600 218.300800 85.136063 0.500000 6
+8 2 305.971200 216.390400 86.140026 0.500000 7
+9 2 303.747200 215.116800 85.136063 0.500000 8
+10 2 303.747200 213.846400 85.136063 0.500000 9
+11 2 301.843200 213.209600 85.136063 0.500000 10
+12 2 301.686400 213.209600 85.136063 0.500000 11
+13 2 301.526400 213.209600 85.136063 0.500000 12
+14 2 301.209600 212.252800 85.136063 0.500000 13
+15 2 300.256000 211.619200 86.140026 0.500000 14
+16 2 299.939200 210.345600 85.136063 0.500000 15
+17 2 298.668800 208.755200 86.140026 0.500000 16
+18 2 297.398400 208.118400 83.128137 0.500000 17
+19 2 297.081600 208.118400 83.128137 0.500000 18
+20 2 295.177600 206.528000 81.122853 0.500000 19
+21 2 295.177600 206.208000 81.122853 0.500000 20
+22 2 292.320000 204.617600 82.126816 0.500000 21
+23 2 292.003200 204.300800 81.122853 0.500000 22
+24 2 291.686400 204.300800 81.122853 0.500000 23
+25 2 289.145600 201.436800 80.118890 0.500000 24
+26 2 286.291200 199.846400 78.113606 0.500000 25
+27 2 286.291200 198.572800 79.114927 0.500000 26
+28 2 286.608000 196.982400 79.114927 0.500000 27
+29 2 286.608000 194.435200 79.114927 0.500000 28
+30 2 285.337600 193.481600 78.113606 0.500000 29
+31 2 284.067200 192.528000 79.114927 0.500000 30
+32 2 281.212800 190.617600 79.114927 0.500000 31
+33 2 279.625600 190.934400 77.109643 0.500000 32
+34 2 279.305600 190.934400 71.091149 0.500000 33
+35 2 281.846400 190.617600 69.083223 0.500000 34
+36 2 281.212800 190.934400 66.073976 0.500000 35
+37 2 281.212800 191.254400 65.070013 0.500000 36
+38 2 281.212800 192.208000 64.066050 0.500000 37
+39 2 280.576000 192.208000 63.064729 0.500000 38
+40 2 278.672000 194.435200 61.056803 0.500000 39
+41 2 278.038400 196.025600 61.056803 0.500000 40
+42 2 278.038400 196.662400 58.047556 0.500000 41
+43 2 276.768000 200.163200 56.039630 0.500000 42
+44 2 274.547200 200.800000 52.026420 0.500000 43
+45 2 275.180800 199.526400 51.025099 0.500000 44
+46 2 277.718400 199.846400 50.021136 0.500000 45
+47 2 277.084800 196.982400 50.021136 0.500000 46
+48 2 276.768000 198.252800 48.013210 0.500000 47
+49 2 276.451200 198.572800 46.007926 0.500000 48
+50 2 276.768000 200.163200 45.003963 0.500000 49
+51 2 277.084800 200.480000 42.998679 0.500000 50
+52 2 280.892800 187.753600 58.047556 0.500000 37
+53 2 277.718400 186.480000 59.051519 0.500000 52
+54 2 278.355200 183.616000 58.047556 0.500000 53
+55 2 278.988800 182.662400 59.051519 0.500000 54
+56 2 282.163200 189.664000 69.083223 0.500000 35
+57 2 286.291200 187.436800 67.077939 0.500000 56
+58 2 287.241600 186.480000 63.064729 0.500000 57
+59 2 286.924800 185.526400 60.052840 0.500000 58
+60 2 286.924800 185.209600 60.052840 0.500000 59
+61 2 284.387200 184.252800 60.052840 0.500000 60
+62 2 284.704000 182.979200 57.043593 0.500000 61
+63 2 286.291200 181.708800 58.047556 0.500000 62
+64 2 287.241600 181.072000 58.047556 0.500000 63
+65 2 288.828800 178.524800 57.043593 0.500000 64
+66 2 289.145600 178.524800 57.043593 0.500000 65
+67 2 293.273600 179.481600 58.047556 0.500000 66
+68 2 294.227200 179.161600 57.043593 0.500000 67
+69 2 294.860800 178.844800 56.039630 0.500000 68
+70 2 298.668800 178.844800 57.043593 0.500000 69
+71 2 298.985600 177.254400 58.047556 0.500000 70
+72 2 299.622400 177.891200 61.056803 0.500000 71
+73 2 302.796800 180.752000 61.056803 0.500000 72
+74 2 303.430400 181.708800 62.060766 0.500000 73
+75 2 302.796800 184.572800 61.056803 0.500000 74
+76 2 302.160000 184.889600 62.060766 0.500000 75
+77 2 299.939200 185.209600 62.060766 0.500000 76
+78 2 299.622400 185.526400 62.060766 0.500000 77
+79 2 298.352000 176.934400 61.056803 0.500000 71
+80 2 298.668800 176.617600 63.064729 0.500000 79
+81 2 298.352000 176.297600 63.064729 0.500000 80
+82 2 295.494400 173.753600 63.064729 0.500000 81
+83 2 294.860800 174.070400 64.066050 0.500000 82
+84 2 294.860800 174.070400 65.070013 0.500000 83
+85 2 299.305600 174.390400 65.070013 0.500000 81
+86 2 298.985600 174.070400 65.070013 0.500000 85
+87 2 298.352000 174.070400 69.083223 0.500000 86
+88 2 294.544000 180.435200 63.064729 0.500000 68
+89 2 294.860800 181.708800 64.066050 0.500000 88
+90 2 296.764800 182.979200 62.060766 0.500000 89
+91 2 296.764800 183.299200 64.066050 0.500000 90
+92 2 296.448000 183.299200 65.070013 0.500000 91
+93 2 290.416000 177.571200 59.051519 0.500000 66
+94 2 290.099200 176.617600 58.047556 0.500000 93
+95 2 288.195200 175.980800 59.051519 0.500000 94
+96 2 287.878400 175.344000 63.064729 0.500000 95
+97 2 284.067200 177.891200 62.060766 0.500000 96
+98 2 283.116800 178.208000 61.056803 0.500000 97
+99 2 287.878400 183.936000 62.060766 0.500000 60
+100 2 288.828800 185.526400 62.060766 0.500000 99
+101 2 289.145600 185.843200 64.066050 0.500000 100
+102 2 293.590400 186.800000 63.064729 0.500000 101
+103 2 294.227200 186.480000 60.052840 0.500000 102
+104 2 292.640000 186.163200 58.047556 0.500000 103
+105 2 291.686400 186.480000 59.051519 0.500000 104
+106 2 291.686400 186.800000 60.052840 0.500000 105
+107 2 288.512000 185.843200 65.070013 0.500000 101
+108 2 290.416000 185.209600 66.073976 0.500000 107
+109 2 292.640000 186.480000 66.073976 0.500000 108
+110 2 293.907200 186.163200 68.079260 0.500000 109
+111 2 293.907200 185.843200 69.083223 0.500000 110
+112 2 288.512000 186.163200 57.043593 0.500000 59
+113 2 288.195200 188.390400 57.043593 0.500000 112
+114 2 289.145600 191.254400 56.039630 0.500000 113
+115 2 289.465600 190.934400 56.039630 0.500000 114
+116 2 289.465600 190.934400 55.038309 0.500000 115
+117 2 277.718400 190.617600 70.087186 0.500000 34
+118 2 276.451200 189.980800 70.087186 0.500000 117
+119 2 290.099200 197.299200 79.114927 0.500000 28
+120 2 289.145600 196.982400 78.113606 0.500000 119
+121 2 289.782400 196.982400 77.109643 0.500000 120
+122 2 291.686400 206.844800 81.122853 0.500000 23
+123 2 290.732800 208.118400 82.126816 0.500000 122
+124 2 290.099200 208.435200 82.126816 0.500000 123
+125 2 290.099200 210.025600 83.128137 0.500000 124
+126 2 291.369600 210.345600 83.128137 0.500000 125
+127 2 296.448000 206.208000 80.118890 0.500000 21
+128 2 298.352000 205.571200 84.132100 0.500000 127
+129 2 297.398400 200.800000 85.136063 0.500000 128
+130 2 295.494400 200.480000 83.128137 0.500000 129
+131 2 293.907200 199.209600 84.132100 0.500000 130
+132 2 293.590400 199.526400 83.128137 0.500000 131
+133 2 298.668800 206.528000 85.136063 0.500000 20
+134 2 298.668800 206.208000 87.143989 0.500000 133
+135 2 298.668800 205.254400 89.149273 0.500000 134
+136 2 298.668800 205.571200 90.153236 0.500000 135
+137 2 304.384000 212.252800 85.136063 0.500000 12
+138 2 304.700800 211.936000 87.143989 0.500000 137
+139 2 305.971200 210.982400 87.143989 0.500000 138
+140 2 306.604800 210.345600 87.143989 0.500000 139
+141 2 306.288000 207.481600 87.143989 0.500000 140
+142 2 304.700800 206.528000 88.145310 0.500000 141
+143 2 305.017600 207.481600 90.153236 0.500000 142
+144 2 305.017600 207.164800 91.157199 0.500000 143
+145 2 306.604800 208.435200 88.145310 0.500000 139
+146 2 306.921600 203.664000 90.153236 0.500000 145
+147 2 305.651200 212.572800 86.140026 0.500000 137
+148 2 309.462400 212.572800 90.153236 0.500000 147
+149 2 305.334400 213.209600 87.143989 0.500000 11
+150 2 308.825600 216.390400 86.140026 0.500000 149
+151 2 309.779200 216.710400 89.149273 0.500000 150
+152 2 303.747200 215.116800 84.132100 0.500000 9
+153 2 303.113600 218.617600 85.136063 0.500000 152
+154 2 301.209600 219.254400 85.136063 0.500000 153
+155 2 300.892800 220.528000 85.136063 0.500000 154
+156 2 298.985600 221.801600 85.136063 0.500000 155
+157 2 298.668800 223.708800 84.132100 0.500000 156
+158 2 299.305600 224.345600 86.140026 0.500000 157
+159 2 299.622400 217.980800 83.128137 0.500000 154
+160 2 299.939200 217.980800 80.118890 0.500000 159
+161 2 305.017600 217.027200 83.128137 0.500000 152
+162 2 305.334400 217.027200 83.128137 0.500000 161
+163 2 306.921600 218.300800 82.126816 0.500000 162
+164 2 309.462400 218.937600 84.132100 0.500000 163
+165 2 309.462400 219.571200 83.128137 0.500000 164
+166 2 308.825600 219.571200 82.126816 0.500000 165

+ 126 - 0
TestFiles/LLC/Cha-F-200000.CNG.swc

@@ -0,0 +1,126 @@
+1 2 -107.520000 224.070400 -49.807133 0.500000 -1
+2 2 -102.739200 224.387200 -49.807133 0.500000 1
+3 2 -101.145600 224.707200 -53.725231 0.500000 2
+4 2 -100.828800 224.070400 -50.787318 0.500000 3
+5 2 -100.192000 224.070400 -52.745046 0.500000 4
+6 2 -97.324800 223.750400 -51.767503 0.500000 5
+7 2 -92.544000 219.929600 -51.767503 0.500000 6
+8 2 -90.633600 219.292800 -52.745046 0.500000 7
+9 2 -87.763200 217.382400 -53.725231 0.500000 8
+10 2 -87.446400 217.382400 -53.725231 0.500000 9
+11 2 -86.489600 216.105600 -54.705416 0.500000 10
+12 2 -83.942400 214.195200 -53.725231 0.500000 11
+13 2 -83.942400 213.558400 -54.705416 0.500000 12
+14 2 -82.985600 209.417600 -52.745046 0.500000 13
+15 2 -79.798400 205.276800 -53.725231 0.500000 14
+16 2 -79.161600 199.225600 -53.725231 0.500000 15
+17 2 -72.470400 193.171200 -52.745046 0.500000 16
+18 2 -69.603200 192.214400 -51.767503 0.500000 17
+19 2 -68.966400 191.897600 -51.767503 0.500000 18
+20 2 -64.822400 191.897600 -50.787318 0.500000 19
+21 2 -63.228800 190.940800 -50.787318 0.500000 20
+22 2 -62.275200 187.756800 -49.807133 0.500000 21
+23 2 -61.955200 187.120000 -51.767503 0.500000 22
+24 2 -62.912000 186.800000 -51.767503 0.500000 23
+25 2 -63.228800 186.800000 -53.725231 0.500000 24
+26 2 -63.868800 186.483200 -52.745046 0.500000 25
+27 2 -65.459200 183.932800 -51.767503 0.500000 26
+28 2 -64.185600 182.342400 -49.807133 0.500000 27
+29 2 -59.724800 184.889600 -49.807133 0.500000 28
+30 2 -55.264000 184.889600 -48.829590 0.500000 29
+31 2 -53.990400 187.436800 -48.829590 0.500000 30
+32 2 -53.990400 193.171200 -46.869221 0.500000 31
+33 2 -53.990400 195.401600 -48.829590 0.500000 32
+34 2 -54.944000 196.358400 -47.849406 0.500000 33
+35 2 -55.584000 199.542400 -47.849406 0.500000 34
+36 2 -56.857600 202.409600 -46.869221 0.500000 35
+37 2 -57.814400 205.276800 -48.829590 0.500000 36
+38 2 -58.451200 206.550400 -45.891678 0.500000 37
+39 2 -58.451200 207.187200 -46.869221 0.500000 38
+40 2 -59.088000 208.144000 -44.911493 0.500000 39
+41 2 -59.408000 209.417600 -44.911493 0.500000 40
+42 2 -57.494400 215.152000 -46.869221 0.500000 41
+43 2 -55.900800 217.062400 -45.891678 0.500000 42
+44 2 -55.900800 217.382400 -45.891678 0.500000 43
+45 2 -54.307200 218.019200 -44.911493 0.500000 44
+46 2 -53.353600 220.566400 -44.911493 0.500000 45
+47 2 -52.076800 221.840000 -45.891678 0.500000 46
+48 2 -51.440000 222.796800 -45.891678 0.500000 47
+49 2 -51.440000 223.433600 -46.869221 0.500000 48
+50 2 -50.803200 224.707200 -47.849406 0.500000 49
+51 2 -50.166400 226.617600 -45.891678 0.500000 50
+52 2 -48.572800 227.891200 -48.829590 0.500000 51
+53 2 -44.748800 228.848000 -48.829590 0.500000 52
+54 2 -43.792000 229.484800 -46.869221 0.500000 53
+55 2 -43.475200 229.484800 -46.869221 0.500000 54
+56 2 -42.838400 230.758400 -45.891678 0.500000 55
+57 2 -44.112000 231.078400 -45.891678 0.500000 56
+58 2 -47.299200 229.804800 -43.931308 0.500000 57
+59 2 -47.299200 227.891200 -41.973580 0.500000 58
+60 2 -43.792000 232.352000 -46.869221 0.500000 57
+61 2 -42.838400 232.672000 -48.829590 0.500000 60
+62 2 -42.201600 235.219200 -50.787318 0.500000 61
+63 2 -42.518400 235.536000 -49.807133 0.500000 62
+64 2 -44.748800 235.536000 -48.829590 0.500000 63
+65 2 -45.385600 236.812800 -50.787318 0.500000 64
+66 2 -52.396800 236.176000 -47.849406 0.500000 65
+67 2 -53.033600 236.812800 -48.829590 0.500000 66
+68 2 -52.396800 237.129600 -48.829590 0.500000 67
+69 2 -42.518400 231.715200 -47.849406 0.500000 56
+70 2 -39.651200 231.395200 -48.829590 0.500000 69
+71 2 -36.784000 227.891200 -45.891678 0.500000 70
+72 2 -37.420800 226.617600 -46.869221 0.500000 71
+73 2 -38.057600 225.980800 -43.931308 0.500000 72
+74 2 -37.740800 221.203200 -44.911493 0.500000 73
+75 2 -37.420800 220.566400 -43.931308 0.500000 74
+76 2 -35.827200 220.246400 -45.891678 0.500000 75
+77 2 -35.827200 221.840000 -47.849406 0.500000 76
+78 2 -33.916800 227.891200 -48.829590 0.500000 71
+79 2 -43.155200 228.211200 -43.931308 0.500000 54
+80 2 -42.838400 227.254400 -43.931308 0.500000 79
+81 2 -41.881600 226.937600 -44.911493 0.500000 80
+82 2 -40.608000 225.344000 -45.891678 0.500000 81
+83 2 -40.288000 222.796800 -43.931308 0.500000 82
+84 2 -41.244800 223.113600 -42.953765 0.500000 83
+85 2 -61.955200 187.120000 -55.682959 0.500000 25
+86 2 -60.998400 186.483200 -58.620872 0.500000 85
+87 2 -59.088000 186.163200 -57.640687 0.500000 86
+88 2 -54.944000 183.616000 -55.682959 0.500000 87
+89 2 -54.307200 183.616000 -55.682959 0.500000 88
+90 2 -53.990400 181.705600 -58.620872 0.500000 89
+91 2 -52.713600 179.475200 -56.663144 0.500000 90
+92 2 -50.483200 177.881600 -55.682959 0.500000 91
+93 2 -47.616000 176.608000 -56.663144 0.500000 92
+94 2 -47.299200 176.608000 -57.640687 0.500000 93
+95 2 -42.201600 177.244800 -56.663144 0.500000 94
+96 2 -42.201600 177.881600 -56.663144 0.500000 95
+97 2 -41.881600 178.518400 -57.640687 0.500000 96
+98 2 -39.971200 179.475200 -56.663144 0.500000 97
+99 2 -39.651200 181.705600 -58.620872 0.500000 98
+100 2 -39.971200 181.385600 -57.640687 0.500000 99
+101 2 -40.608000 174.697600 -56.663144 0.500000 95
+102 2 -39.331200 175.014400 -56.663144 0.500000 101
+103 2 -46.979200 175.651200 -55.682959 0.500000 94
+104 2 -46.979200 170.556800 -54.705416 0.500000 103
+105 2 -46.022400 169.920000 -55.682959 0.500000 104
+106 2 -49.209600 177.881600 -59.601057 0.500000 92
+107 2 -51.123200 181.705600 -60.578600 0.500000 106
+108 2 -50.483200 181.705600 -60.578600 0.500000 107
+109 2 -51.123200 184.889600 -55.682959 0.500000 89
+110 2 -49.846400 186.483200 -58.620872 0.500000 109
+111 2 -49.846400 186.483200 -57.640687 0.500000 110
+112 2 -61.955200 188.393600 -60.578600 0.500000 85
+113 2 -62.275200 189.350400 -58.620872 0.500000 112
+114 2 -62.275200 190.940800 -59.601057 0.500000 113
+115 2 -61.955200 191.897600 -60.578600 0.500000 114
+116 2 -58.131200 192.214400 -60.578600 0.500000 115
+117 2 -57.494400 193.171200 -59.601057 0.500000 116
+118 2 -55.264000 193.171200 -59.601057 0.500000 117
+119 2 -53.670400 192.534400 -59.601057 0.500000 118
+120 2 -47.299200 193.808000 -59.601057 0.500000 119
+121 2 -47.299200 191.897600 -58.620872 0.500000 120
+122 2 -47.936000 192.214400 -57.640687 0.500000 121
+123 2 -61.955200 191.577600 -58.620872 0.500000 114
+124 2 -63.548800 193.491200 -58.620872 0.500000 123
+125 2 -63.868800 193.171200 -56.663144 0.500000 124
+126 2 -66.099200 189.350400 -56.663144 0.500000 125

+ 158 - 0
TestFiles/LLC/Cha-F-300051.CNG.swc

@@ -0,0 +1,158 @@
+1 2 -127.568000 215.382400 78.996037 0.500000 -1
+2 2 -126.931200 215.065600 77.003963 0.500000 1
+3 2 -124.704000 213.792000 77.003963 0.500000 2
+4 2 -120.889600 213.792000 76.007926 0.500000 3
+5 2 -120.572800 213.155200 76.007926 0.500000 4
+6 2 -119.936000 212.835200 75.011889 0.500000 5
+7 2 -119.936000 211.561600 77.003963 0.500000 6
+8 2 -118.028800 211.561600 77.003963 0.500000 7
+9 2 -118.028800 211.561600 78.000000 0.500000 8
+10 2 -117.708800 209.971200 78.996037 0.500000 9
+11 2 -118.028800 209.971200 77.003963 0.500000 10
+12 2 -117.392000 207.424000 77.003963 0.500000 11
+13 2 -118.345600 206.153600 77.003963 0.500000 12
+14 2 -118.662400 205.196800 77.003963 0.500000 13
+15 2 -119.936000 203.606400 77.003963 0.500000 14
+16 2 -119.936000 203.286400 77.003963 0.500000 15
+17 2 -121.206400 202.969600 78.996037 0.500000 16
+18 2 -121.843200 202.649600 78.996037 0.500000 17
+19 2 -122.480000 201.059200 78.000000 0.500000 18
+20 2 -122.480000 200.742400 78.000000 0.500000 19
+21 2 -123.116800 200.422400 78.996037 0.500000 20
+22 2 -126.931200 199.148800 78.996037 0.500000 21
+23 2 -127.568000 196.921600 77.003963 0.500000 22
+24 2 -127.884800 196.921600 78.000000 0.500000 23
+25 2 -130.428800 196.604800 78.000000 0.500000 24
+26 2 -130.745600 196.604800 77.003963 0.500000 25
+27 2 -130.745600 196.604800 76.007926 0.500000 26
+28 2 -131.382400 196.921600 75.011889 0.500000 27
+29 2 -136.153600 190.873600 76.007926 0.500000 28
+30 2 -136.470400 186.736000 76.007926 0.500000 29
+31 2 -138.377600 182.918400 74.015852 0.500000 30
+32 2 -138.697600 181.008000 75.011889 0.500000 31
+33 2 -139.014400 180.688000 77.003963 0.500000 32
+34 2 -139.968000 177.824000 73.019815 0.500000 33
+35 2 -140.921600 177.824000 73.019815 0.500000 34
+36 2 -142.512000 175.276800 73.019815 0.500000 35
+37 2 -141.875200 172.412800 72.023778 0.500000 36
+38 2 -140.284800 171.139200 73.019815 0.500000 37
+39 2 -139.651200 172.732800 70.031704 0.500000 38
+40 2 -140.921600 174.323200 69.035667 0.500000 39
+41 2 -141.241600 175.276800 69.035667 0.500000 40
+42 2 -141.241600 175.276800 68.036988 0.500000 41
+43 2 -142.828800 178.460800 68.036988 0.500000 42
+44 2 -144.102400 180.688000 67.043593 0.500000 43
+45 2 -145.056000 181.324800 67.043593 0.500000 44
+46 2 -150.144000 181.961600 63.056803 0.500000 45
+47 2 -150.460800 182.598400 63.056803 0.500000 46
+48 2 -152.688000 184.188800 62.060766 0.500000 47
+49 2 -151.734400 188.963200 61.064729 0.500000 48
+50 2 -150.144000 189.920000 61.064729 0.500000 49
+51 2 -148.870400 191.830400 60.068692 0.500000 50
+52 2 -148.236800 197.558400 57.080581 0.500000 51
+53 2 -150.460800 200.742400 55.088507 0.500000 52
+54 2 -150.780800 205.833600 53.096433 0.500000 53
+55 2 -153.958400 209.334400 50.108322 0.500000 54
+56 2 -155.865600 210.291200 49.112285 0.500000 55
+57 2 -156.185600 211.244800 49.112285 0.500000 56
+58 2 -155.232000 210.928000 51.104359 0.500000 57
+59 2 -155.865600 210.291200 48.116248 0.500000 58
+60 2 -139.014400 174.960000 67.043593 0.500000 41
+61 2 -136.153600 175.276800 67.043593 0.500000 60
+62 2 -133.609600 176.870400 65.051519 0.500000 61
+63 2 -133.609600 176.870400 64.052840 0.500000 62
+64 2 -131.065600 178.780800 62.060766 0.500000 63
+65 2 -130.745600 178.780800 62.060766 0.500000 64
+66 2 -130.428800 179.097600 59.072655 0.500000 65
+67 2 -125.660800 179.097600 59.072655 0.500000 66
+68 2 -125.024000 178.780800 60.068692 0.500000 67
+69 2 -123.750400 172.732800 61.064729 0.500000 68
+70 2 -124.070400 170.822400 62.060766 0.500000 69
+71 2 -121.843200 170.185600 61.064729 0.500000 70
+72 2 -121.526400 168.595200 64.052840 0.500000 71
+73 2 -123.433600 166.048000 63.056803 0.500000 72
+74 2 -123.116800 163.500800 63.056803 0.500000 73
+75 2 -123.116800 163.500800 64.052840 0.500000 74
+76 2 -130.745600 179.734400 60.068692 0.500000 65
+77 2 -135.200000 180.688000 60.068692 0.500000 76
+78 2 -136.153600 180.051200 59.072655 0.500000 77
+79 2 -138.060800 180.051200 59.072655 0.500000 78
+80 2 -138.697600 181.008000 59.072655 0.500000 79
+81 2 -138.697600 179.734400 61.064729 0.500000 80
+82 2 -127.884800 176.870400 62.060766 0.500000 64
+83 2 -126.931200 175.276800 61.064729 0.500000 82
+84 2 -127.568000 172.096000 62.060766 0.500000 83
+85 2 -134.563200 176.550400 63.056803 0.500000 63
+86 2 -134.880000 174.640000 60.068692 0.500000 85
+87 2 -135.516800 174.323200 62.060766 0.500000 86
+88 2 -135.516800 174.006400 61.064729 0.500000 87
+89 2 -135.833600 173.686400 61.064729 0.500000 88
+90 2 -137.107200 172.412800 64.052840 0.500000 89
+91 2 -138.060800 172.096000 65.051519 0.500000 90
+92 2 -136.470400 170.822400 65.051519 0.500000 91
+93 2 -130.112000 169.232000 66.047556 0.500000 92
+94 2 -129.158400 168.595200 66.047556 0.500000 93
+95 2 -129.158400 165.411200 66.047556 0.500000 94
+96 2 -129.792000 162.547200 65.051519 0.500000 95
+97 2 -128.521600 161.590400 64.052840 0.500000 96
+98 2 -128.521600 160.320000 65.051519 0.500000 97
+99 2 -138.377600 173.049600 60.068692 0.500000 89
+100 2 -138.697600 172.732800 60.068692 0.500000 99
+101 2 -141.241600 167.638400 60.068692 0.500000 100
+102 2 -141.875200 167.638400 62.060766 0.500000 101
+103 2 -135.516800 173.686400 59.072655 0.500000 88
+104 2 -134.880000 173.369600 57.080581 0.500000 103
+105 2 -134.243200 170.822400 56.084544 0.500000 104
+106 2 -132.972800 169.868800 57.080581 0.500000 105
+107 2 -132.972800 170.185600 60.068692 0.500000 106
+108 2 -130.745600 169.232000 60.068692 0.500000 107
+109 2 -129.792000 168.275200 60.068692 0.500000 108
+110 2 -129.158400 169.232000 61.064729 0.500000 109
+111 2 -131.382400 196.921600 77.003963 0.500000 26
+112 2 -131.382400 198.832000 76.007926 0.500000 111
+113 2 -132.336000 200.422400 75.011889 0.500000 112
+114 2 -133.926400 201.376000 75.011889 0.500000 113
+115 2 -134.880000 203.923200 75.011889 0.500000 114
+116 2 -122.160000 201.059200 79.992074 0.500000 19
+117 2 -121.526400 200.422400 78.996037 0.500000 116
+118 2 -122.796800 197.241600 79.992074 0.500000 117
+119 2 -123.750400 196.284800 79.992074 0.500000 118
+120 2 -122.160000 194.694400 79.992074 0.500000 119
+121 2 -122.480000 193.100800 79.992074 0.500000 120
+122 2 -124.704000 191.510400 79.992074 0.500000 121
+123 2 -125.660800 191.510400 78.000000 0.500000 122
+124 2 -122.796800 203.286400 77.003963 0.500000 18
+125 2 -125.660800 203.286400 76.007926 0.500000 124
+126 2 -125.660800 203.923200 77.003963 0.500000 125
+127 2 -124.070400 207.424000 79.992074 0.500000 126
+128 2 -124.387200 209.654400 78.996037 0.500000 127
+129 2 -126.931200 210.291200 79.992074 0.500000 128
+130 2 -126.931200 203.923200 78.000000 0.500000 126
+131 2 -128.201600 204.880000 76.007926 0.500000 130
+132 2 -128.521600 205.833600 75.011889 0.500000 131
+133 2 -129.475200 206.470400 76.007926 0.500000 132
+134 2 -128.838400 207.424000 75.011889 0.500000 133
+135 2 -128.838400 207.424000 74.015852 0.500000 134
+136 2 -120.252800 203.286400 78.996037 0.500000 17
+137 2 -118.345600 202.332800 79.992074 0.500000 136
+138 2 -117.708800 202.332800 79.992074 0.500000 137
+139 2 -115.801600 202.332800 79.992074 0.500000 138
+140 2 -113.577600 201.696000 80.988111 0.500000 139
+141 2 -112.304000 196.921600 82.980185 0.500000 140
+142 2 -111.667200 196.604800 80.988111 0.500000 141
+143 2 -114.531200 203.286400 78.996037 0.500000 139
+144 2 -112.620800 203.286400 79.992074 0.500000 143
+145 2 -111.987200 202.969600 80.988111 0.500000 144
+146 2 -112.304000 206.153600 78.000000 0.500000 145
+147 2 -111.987200 206.153600 78.000000 0.500000 146
+148 2 -116.755200 200.742400 78.996037 0.500000 138
+149 2 -117.075200 200.742400 78.996037 0.500000 148
+150 2 -117.392000 195.968000 81.984148 0.500000 149
+151 2 -115.801600 194.694400 83.976222 0.500000 150
+152 2 -116.438400 212.198400 77.003963 0.500000 8
+153 2 -115.164800 213.155200 77.003963 0.500000 152
+154 2 -113.894400 213.472000 76.007926 0.500000 153
+155 2 -119.936000 215.065600 77.003963 0.500000 6
+156 2 -121.526400 217.292800 75.011889 0.500000 155
+157 2 -122.796800 218.883200 75.011889 0.500000 156
+158 2 -122.796800 219.520000 74.015852 0.500000 157

+ 276 - 0
TestFiles/LLC/Cha-F-300331.CNG.swc

@@ -0,0 +1,276 @@
+1 2 -66.467200 180.089600 -56.536328 0.500000 -1
+2 2 -66.467200 179.772800 -57.540291 0.500000 1
+3 2 -67.740800 179.452800 -57.540291 0.500000 2
+4 2 -69.651200 179.772800 -57.540291 0.500000 3
+5 2 -69.968000 178.816000 -55.532365 0.500000 4
+6 2 -68.694400 175.318400 -55.532365 0.500000 5
+7 2 -68.377600 172.454400 -56.536328 0.500000 6
+8 2 -70.924800 172.134400 -55.532365 0.500000 7
+9 2 -72.835200 172.771200 -56.536328 0.500000 8
+10 2 -73.155200 173.091200 -56.536328 0.500000 9
+11 2 -76.976000 175.318400 -54.531044 0.500000 10
+12 2 -77.292800 176.588800 -53.527081 0.500000 11
+13 2 -76.656000 175.952000 -54.531044 0.500000 12
+14 2 -76.339200 175.635200 -56.536328 0.500000 13
+15 2 -79.203200 175.635200 -58.541612 0.500000 14
+16 2 -78.566400 180.089600 -58.541612 0.500000 15
+17 2 -78.886400 182.000000 -56.536328 0.500000 16
+18 2 -80.160000 184.544000 -56.536328 0.500000 17
+19 2 -81.116800 185.180800 -57.540291 0.500000 18
+20 2 -81.433600 187.091200 -53.527081 0.500000 19
+21 2 -83.344000 188.361600 -53.527081 0.500000 20
+22 2 -84.617600 188.361600 -52.525760 0.500000 21
+23 2 -85.574400 188.044800 -48.512550 0.500000 22
+24 2 -91.625600 186.454400 -47.511229 0.500000 23
+25 2 -93.219200 185.497600 -45.505945 0.500000 24
+26 2 -93.219200 185.497600 -46.507266 0.500000 25
+27 2 -94.172800 183.907200 -45.505945 0.500000 26
+28 2 -92.579200 181.363200 -40.491413 0.500000 27
+29 2 -92.262400 179.452800 -41.492734 0.500000 28
+30 2 -90.352000 178.816000 -40.491413 0.500000 29
+31 2 -89.395200 178.179200 -37.482166 0.500000 30
+32 2 -88.441600 184.544000 -35.476882 0.500000 31
+33 2 -85.574400 185.180800 -33.468956 0.500000 32
+34 2 -84.617600 186.454400 -30.462351 0.500000 33
+35 2 -78.566400 191.545600 -31.463672 0.500000 34
+36 2 -76.976000 194.409600 -29.458388 0.500000 35
+37 2 -74.428800 194.409600 -28.454425 0.500000 36
+38 2 -74.108800 195.046400 -27.453104 0.500000 37
+39 2 -74.428800 197.590400 -26.449141 0.500000 38
+40 2 -73.155200 197.907200 -27.453104 0.500000 39
+41 2 -72.198400 200.134400 -28.454425 0.500000 40
+42 2 -70.604800 203.635200 -28.454425 0.500000 41
+43 2 -70.288000 203.635200 -29.458388 0.500000 42
+44 2 -69.968000 203.955200 -29.458388 0.500000 43
+45 2 -69.331200 206.499200 -29.458388 0.500000 44
+46 2 -69.014400 204.908800 -25.447820 0.500000 45
+47 2 -69.014400 203.635200 -25.447820 0.500000 46
+48 2 -67.740800 203.635200 -23.439894 0.500000 47
+49 2 -67.420800 205.225600 -22.438573 0.500000 48
+50 2 -66.147200 206.182400 -21.434610 0.500000 49
+51 2 -66.147200 206.819200 -21.434610 0.500000 50
+52 2 -67.420800 207.136000 -19.429326 0.500000 51
+53 2 -67.104000 206.819200 -18.428005 0.500000 52
+54 2 -67.420800 208.089600 -21.434610 0.500000 52
+55 2 -67.104000 209.683200 -22.438573 0.500000 54
+56 2 -65.190400 210.316800 -25.447820 0.500000 55
+57 2 -65.827200 209.363200 -25.447820 0.500000 56
+58 2 -66.467200 209.046400 -26.449141 0.500000 57
+59 2 -62.326400 209.683200 -27.453104 0.500000 58
+60 2 -62.326400 210.000000 -27.453104 0.500000 59
+61 2 -58.185600 210.636800 -27.453104 0.500000 60
+62 2 -56.275200 213.500800 -27.453104 0.500000 61
+63 2 -55.638400 215.408000 -27.453104 0.500000 62
+64 2 -54.681600 215.728000 -29.458388 0.500000 63
+65 2 -55.001600 216.681600 -30.462351 0.500000 64
+66 2 -55.001600 217.955200 -28.454425 0.500000 65
+67 2 -56.912000 220.819200 -28.454425 0.500000 66
+68 2 -56.912000 221.136000 -27.453104 0.500000 67
+69 2 -55.955200 215.408000 -25.447820 0.500000 62
+70 2 -56.275200 215.728000 -23.439894 0.500000 69
+71 2 -62.326400 210.316800 -27.453104 0.500000 60
+72 2 -60.416000 211.590400 -24.443857 0.500000 71
+73 2 -60.096000 214.454400 -23.439894 0.500000 72
+74 2 -59.779200 214.137600 -23.439894 0.500000 73
+75 2 -64.553600 212.227200 -26.449141 0.500000 56
+76 2 -65.510400 213.817600 -26.449141 0.500000 75
+77 2 -66.147200 215.408000 -26.449141 0.500000 76
+78 2 -66.784000 215.728000 -25.447820 0.500000 77
+79 2 -66.784000 215.728000 -24.443857 0.500000 78
+80 2 -68.694400 215.091200 -22.438573 0.500000 79
+81 2 -69.968000 216.681600 -22.438573 0.500000 80
+82 2 -69.968000 216.681600 -23.439894 0.500000 81
+83 2 -72.835200 219.228800 -22.438573 0.500000 82
+84 2 -72.835200 219.545600 -22.438573 0.500000 83
+85 2 -67.420800 215.728000 -24.443857 0.500000 79
+86 2 -67.420800 218.592000 -25.447820 0.500000 85
+87 2 -68.694400 220.499200 -24.443857 0.500000 86
+88 2 -68.694400 220.819200 -23.439894 0.500000 87
+89 2 -64.553600 215.091200 -25.447820 0.500000 76
+90 2 -63.280000 218.592000 -25.447820 0.500000 89
+91 2 -62.963200 220.819200 -27.453104 0.500000 90
+92 2 -60.732800 219.228800 -29.458388 0.500000 91
+93 2 -62.326400 223.046400 -27.453104 0.500000 91
+94 2 -61.689600 224.000000 -27.453104 0.500000 93
+95 2 -63.280000 215.091200 -22.438573 0.500000 89
+96 2 -63.600000 216.681600 -21.434610 0.500000 95
+97 2 -63.600000 216.364800 -21.434610 0.500000 96
+98 2 -67.104000 210.316800 -21.434610 0.500000 54
+99 2 -64.873600 210.636800 -21.434610 0.500000 98
+100 2 -65.827200 210.316800 -20.433289 0.500000 99
+101 2 -63.600000 209.046400 -21.434610 0.500000 100
+102 2 -63.600000 208.409600 -22.438573 0.500000 101
+103 2 -61.369600 209.683200 -21.434610 0.500000 102
+104 2 -62.963200 210.000000 -20.433289 0.500000 103
+105 2 -65.190400 205.862400 -23.439894 0.500000 50
+106 2 -64.236800 205.225600 -22.438573 0.500000 105
+107 2 -64.236800 202.364800 -24.443857 0.500000 106
+108 2 -64.553600 202.364800 -26.449141 0.500000 107
+109 2 -62.963200 205.545600 -25.447820 0.500000 108
+110 2 -60.732800 206.819200 -25.447820 0.500000 109
+111 2 -60.416000 202.998400 -26.449141 0.500000 110
+112 2 -57.865600 202.998400 -25.447820 0.500000 111
+113 2 -57.865600 202.044800 -24.443857 0.500000 112
+114 2 -57.865600 202.044800 -23.439894 0.500000 113
+115 2 -58.502400 202.364800 -23.439894 0.500000 114
+116 2 -58.502400 196.953600 -24.443857 0.500000 115
+117 2 -55.955200 196.953600 -27.453104 0.500000 116
+118 2 -54.044800 196.000000 -24.443857 0.500000 117
+119 2 -54.681600 192.816000 -23.439894 0.500000 118
+120 2 -55.318400 191.862400 -25.447820 0.500000 119
+121 2 -54.681600 190.272000 -25.447820 0.500000 120
+122 2 -54.044800 191.545600 -23.439894 0.500000 121
+123 2 -53.091200 190.908800 -22.438573 0.500000 122
+124 2 -53.728000 195.363200 -27.453104 0.500000 118
+125 2 -53.091200 195.046400 -27.453104 0.500000 124
+126 2 -53.091200 194.726400 -27.453104 0.500000 125
+127 2 -50.860800 193.772800 -26.449141 0.500000 126
+128 2 -50.540800 192.499200 -26.449141 0.500000 127
+129 2 -50.540800 192.816000 -26.449141 0.500000 128
+130 2 -59.139200 201.728000 -21.434610 0.500000 115
+131 2 -59.459200 198.544000 -22.438573 0.500000 130
+132 2 -59.139200 196.953600 -21.434610 0.500000 131
+133 2 -57.865600 196.953600 -21.434610 0.500000 132
+134 2 -57.865600 193.136000 -22.438573 0.500000 133
+135 2 -59.459200 192.182400 -20.433289 0.500000 134
+136 2 -59.139200 197.590400 -22.438573 0.500000 131
+137 2 -55.001600 196.953600 -21.434610 0.500000 136
+138 2 -54.364800 198.227200 -22.438573 0.500000 137
+139 2 -54.681600 199.500800 -22.438573 0.500000 138
+140 2 -55.955200 202.998400 -23.439894 0.500000 114
+141 2 -54.364800 202.364800 -23.439894 0.500000 140
+142 2 -54.364800 201.408000 -24.443857 0.500000 141
+143 2 -54.364800 201.408000 -25.447820 0.500000 142
+144 2 -52.771200 205.225600 -26.449141 0.500000 143
+145 2 -53.091200 206.182400 -25.447820 0.500000 144
+146 2 -51.497600 206.819200 -24.443857 0.500000 145
+147 2 -54.364800 200.771200 -26.449141 0.500000 143
+148 2 -50.540800 200.454400 -25.447820 0.500000 147
+149 2 -50.540800 199.817600 -25.447820 0.500000 148
+150 2 -64.873600 199.180800 -26.449141 0.500000 108
+151 2 -66.147200 198.544000 -26.449141 0.500000 150
+152 2 -69.331200 197.907200 -27.453104 0.500000 151
+153 2 -68.694400 197.907200 -29.458388 0.500000 152
+154 2 -68.057600 197.907200 -29.458388 0.500000 153
+155 2 -68.057600 198.544000 -28.454425 0.500000 154
+156 2 -67.740800 198.864000 -28.454425 0.500000 155
+157 2 -66.467200 197.907200 -29.458388 0.500000 156
+158 2 -63.600000 200.134400 -29.458388 0.500000 157
+159 2 -63.916800 200.771200 -29.458388 0.500000 158
+160 2 -65.827200 201.408000 -28.454425 0.500000 159
+161 2 -64.553600 203.318400 -28.454425 0.500000 160
+162 2 -64.873600 205.225600 -29.458388 0.500000 161
+163 2 -64.873600 204.272000 -30.462351 0.500000 162
+164 2 -64.873600 202.044800 -24.443857 0.500000 107
+165 2 -65.827200 200.134400 -24.443857 0.500000 164
+166 2 -68.057600 196.953600 -23.439894 0.500000 165
+167 2 -69.014400 196.636800 -24.443857 0.500000 166
+168 2 -69.331200 195.363200 -27.453104 0.500000 167
+169 2 -70.288000 192.816000 -27.453104 0.500000 168
+170 2 -72.515200 192.499200 -26.449141 0.500000 169
+171 2 -71.561600 192.499200 -25.447820 0.500000 170
+172 2 -69.651200 191.225600 -27.453104 0.500000 171
+173 2 -70.604800 191.225600 -28.454425 0.500000 172
+174 2 -70.288000 190.908800 -29.458388 0.500000 173
+175 2 -66.784000 201.728000 -22.438573 0.500000 164
+176 2 -66.467200 201.091200 -21.434610 0.500000 175
+177 2 -65.190400 200.771200 -20.433289 0.500000 176
+178 2 -64.873600 199.180800 -20.433289 0.500000 177
+179 2 -64.553600 197.907200 -19.429326 0.500000 178
+180 2 -64.236800 197.907200 -20.433289 0.500000 179
+181 2 -64.236800 197.273600 -21.434610 0.500000 180
+182 2 -63.600000 196.953600 -19.429326 0.500000 181
+183 2 -59.459200 205.862400 -21.434610 0.500000 106
+184 2 -58.502400 208.409600 -21.434610 0.500000 183
+185 2 -55.318400 209.046400 -24.443857 0.500000 184
+186 2 -53.728000 209.046400 -25.447820 0.500000 185
+187 2 -53.728000 209.363200 -25.447820 0.500000 186
+188 2 -47.040000 210.953600 -26.449141 0.500000 187
+189 2 -47.040000 211.273600 -26.449141 0.500000 188
+190 2 -55.318400 208.726400 -27.453104 0.500000 187
+191 2 -54.364800 209.363200 -29.458388 0.500000 190
+192 2 -54.044800 209.046400 -29.458388 0.500000 191
+193 2 -70.604800 202.998400 -29.458388 0.500000 43
+194 2 -73.155200 202.681600 -29.458388 0.500000 193
+195 2 -76.019200 203.318400 -28.454425 0.500000 194
+196 2 -75.382400 202.998400 -31.463672 0.500000 195
+197 2 -75.382400 202.364800 -31.463672 0.500000 196
+198 2 -93.856000 187.728000 -45.505945 0.500000 25
+199 2 -104.044800 195.046400 -45.505945 0.500000 198
+200 2 -107.548800 199.180800 -46.507266 0.500000 199
+201 2 -108.822400 201.728000 -47.511229 0.500000 200
+202 2 -110.416000 207.136000 -46.507266 0.500000 201
+203 2 -110.732800 209.683200 -47.511229 0.500000 202
+204 2 -110.416000 212.544000 -47.511229 0.500000 203
+205 2 -111.369600 214.454400 -46.507266 0.500000 204
+206 2 -111.369600 216.681600 -46.507266 0.500000 205
+207 2 -111.689600 217.955200 -49.516513 0.500000 206
+208 2 -111.052800 218.908800 -50.517834 0.500000 207
+209 2 -109.459200 219.228800 -50.517834 0.500000 208
+210 2 -109.142400 222.726400 -51.521797 0.500000 209
+211 2 -107.232000 221.136000 -53.527081 0.500000 210
+212 2 -107.548800 222.092800 -55.532365 0.500000 211
+213 2 -108.185600 222.409600 -55.532365 0.500000 212
+214 2 -110.732800 217.001600 -47.511229 0.500000 206
+215 2 -110.732800 215.091200 -48.512550 0.500000 214
+216 2 -111.369600 215.408000 -52.525760 0.500000 215
+217 2 -111.052800 214.137600 -53.527081 0.500000 216
+218 2 -109.142400 213.500800 -53.527081 0.500000 217
+219 2 -85.891200 190.272000 -53.527081 0.500000 22
+220 2 -86.848000 190.908800 -52.525760 0.500000 219
+221 2 -87.164800 192.182400 -52.525760 0.500000 220
+222 2 -91.625600 194.409600 -55.532365 0.500000 221
+223 2 -93.536000 194.409600 -57.540291 0.500000 222
+224 2 -93.219200 190.908800 -60.546896 0.500000 223
+225 2 -92.899200 190.908800 -58.541612 0.500000 224
+226 2 -80.796800 188.681600 -53.527081 0.500000 21
+227 2 -75.382400 188.361600 -57.540291 0.500000 226
+228 2 -74.428800 188.998400 -57.540291 0.500000 227
+229 2 -72.835200 188.998400 -58.541612 0.500000 228
+230 2 -69.651200 188.998400 -59.545575 0.500000 229
+231 2 -69.014400 188.044800 -59.545575 0.500000 230
+232 2 -71.241600 185.817600 -61.550859 0.500000 231
+233 2 -71.561600 181.043200 -61.550859 0.500000 232
+234 2 -71.241600 181.043200 -61.550859 0.500000 233
+235 2 -70.924800 178.816000 -61.550859 0.500000 234
+236 2 -70.924800 177.545600 -60.546896 0.500000 235
+237 2 -70.288000 176.588800 -61.550859 0.500000 236
+238 2 -71.878400 177.225600 -65.561427 0.500000 237
+239 2 -71.241600 180.409600 -64.560106 0.500000 234
+240 2 -71.561600 181.363200 -64.560106 0.500000 239
+241 2 -72.515200 181.680000 -64.560106 0.500000 240
+242 2 -71.878400 182.316800 -65.561427 0.500000 241
+243 2 -71.878400 182.316800 -66.565390 0.500000 242
+244 2 -81.433600 185.497600 -58.541612 0.500000 19
+245 2 -81.433600 185.817600 -60.546896 0.500000 244
+246 2 -81.753600 187.091200 -61.550859 0.500000 245
+247 2 -83.027200 189.635200 -59.545575 0.500000 246
+248 2 -82.390400 191.225600 -62.554822 0.500000 247
+249 2 -78.886400 192.182400 -60.546896 0.500000 248
+250 2 -78.886400 193.452800 -61.550859 0.500000 249
+251 2 -80.480000 195.680000 -60.546896 0.500000 250
+252 2 -84.300800 197.590400 -60.546896 0.500000 251
+253 2 -84.617600 197.590400 -62.554822 0.500000 252
+254 2 -85.254400 192.182400 -60.546896 0.500000 247
+255 2 -86.211200 192.182400 -62.554822 0.500000 254
+256 2 -88.441600 193.136000 -62.554822 0.500000 255
+257 2 -89.395200 193.136000 -64.560106 0.500000 256
+258 2 -89.395200 195.046400 -63.556143 0.500000 257
+259 2 -89.078400 195.046400 -64.560106 0.500000 258
+260 2 -83.664000 184.864000 -58.541612 0.500000 244
+261 2 -85.891200 183.907200 -56.536328 0.500000 260
+262 2 -85.891200 184.227200 -56.536328 0.500000 261
+263 2 -87.804800 182.636800 -56.536328 0.500000 262
+264 2 -90.352000 183.590400 -56.536328 0.500000 263
+265 2 -90.988800 183.907200 -56.536328 0.500000 264
+266 2 -91.625600 185.180800 -56.536328 0.500000 265
+267 2 -93.219200 186.771200 -56.536328 0.500000 266
+268 2 -93.536000 187.728000 -55.532365 0.500000 267
+269 2 -94.172800 187.728000 -57.540291 0.500000 268
+270 2 -72.515200 172.771200 -58.541612 0.500000 9
+271 2 -71.878400 170.544000 -58.541612 0.500000 270
+272 2 -72.515200 169.270400 -58.541612 0.500000 271
+273 2 -75.065600 168.953600 -57.540291 0.500000 272
+274 2 -75.065600 169.270400 -55.532365 0.500000 273
+275 2 -75.702400 170.227200 -55.532365 0.500000 274
+276 2 -67.104000 179.772800 -61.550859 0.500000 3

+ 166 - 0
TestFiles/LLC/Cha-F-400051.CNG.swc

@@ -0,0 +1,166 @@
+1 2 239.769600 207.056000 89.294584 0.500000 -1
+2 2 239.769600 207.689600 90.295905 0.500000 1
+3 2 239.452800 208.009600 92.298547 0.500000 2
+4 2 238.819200 207.056000 92.298547 0.500000 3
+5 2 236.281600 207.056000 91.297226 0.500000 4
+6 2 235.011200 206.102400 91.297226 0.500000 5
+7 2 236.598400 203.881600 91.297226 0.500000 6
+8 2 240.089600 201.974400 91.297226 0.500000 7
+9 2 240.406400 201.974400 91.297226 0.500000 8
+10 2 239.452800 199.116800 91.297226 0.500000 9
+11 2 239.452800 196.259200 92.298547 0.500000 10
+12 2 240.089600 195.942400 91.297226 0.500000 11
+13 2 240.089600 195.625600 90.295905 0.500000 12
+14 2 238.185600 194.035200 89.294584 0.500000 13
+15 2 236.915200 194.035200 90.295905 0.500000 14
+16 2 233.424000 193.084800 91.297226 0.500000 15
+17 2 232.153600 192.131200 89.294584 0.500000 16
+18 2 231.520000 191.814400 88.293263 0.500000 17
+19 2 231.203200 190.227200 88.293263 0.500000 18
+20 2 229.299200 189.590400 88.293263 0.500000 19
+21 2 228.982400 189.273600 87.291942 0.500000 20
+22 2 224.537600 186.416000 85.291942 0.500000 21
+23 2 223.587200 183.558400 83.289300 0.500000 22
+24 2 224.854400 181.651200 81.286658 0.500000 23
+25 2 225.171200 179.430400 82.287979 0.500000 24
+26 2 225.491200 179.430400 81.286658 0.500000 25
+27 2 225.171200 177.523200 80.285337 0.500000 26
+28 2 224.537600 177.206400 79.284016 0.500000 27
+29 2 220.729600 177.843200 78.282695 0.500000 28
+30 2 220.729600 181.017600 76.282695 0.500000 29
+31 2 222.950400 182.604800 72.277411 0.500000 30
+32 2 224.220800 182.604800 71.276090 0.500000 31
+33 2 224.220800 183.875200 70.274769 0.500000 32
+34 2 223.904000 183.875200 69.273448 0.500000 33
+35 2 219.779200 186.732800 68.272127 0.500000 34
+36 2 218.508800 188.640000 65.270806 0.500000 35
+37 2 218.825600 190.544000 65.270806 0.500000 36
+38 2 219.459200 191.497600 64.269485 0.500000 37
+39 2 219.779200 192.448000 63.268164 0.500000 38
+40 2 219.142400 192.768000 62.266843 0.500000 39
+41 2 218.825600 192.448000 62.266843 0.500000 40
+42 2 216.921600 192.131200 56.261559 0.500000 41
+43 2 216.921600 191.814400 55.260238 0.500000 42
+44 2 217.875200 191.497600 55.260238 0.500000 43
+45 2 218.508800 190.544000 54.258917 0.500000 44
+46 2 217.238400 188.640000 54.258917 0.500000 45
+47 2 215.017600 192.768000 60.264201 0.500000 42
+48 2 212.796800 194.672000 60.264201 0.500000 47
+49 2 212.480000 194.672000 60.264201 0.500000 48
+50 2 219.459200 193.084800 59.262880 0.500000 40
+51 2 221.046400 193.718400 58.264201 0.500000 50
+52 2 221.363200 194.035200 57.262880 0.500000 51
+53 2 225.171200 183.241600 70.274769 0.500000 33
+54 2 225.491200 182.604800 69.273448 0.500000 53
+55 2 226.124800 182.921600 66.272127 0.500000 54
+56 2 225.808000 182.921600 64.269485 0.500000 55
+57 2 226.124800 181.651200 61.265522 0.500000 56
+58 2 226.758400 181.651200 58.264201 0.500000 57
+59 2 227.395200 181.334400 58.264201 0.500000 58
+60 2 228.662400 180.384000 59.262880 0.500000 59
+61 2 228.028800 180.700800 62.266843 0.500000 60
+62 2 227.712000 178.793600 66.272127 0.500000 61
+63 2 228.662400 178.160000 66.272127 0.500000 62
+64 2 230.566400 176.572800 68.272127 0.500000 63
+65 2 233.107200 174.665600 67.273448 0.500000 64
+66 2 236.281600 173.395200 64.269485 0.500000 65
+67 2 236.915200 173.715200 64.269485 0.500000 66
+68 2 238.185600 173.078400 64.269485 0.500000 67
+69 2 240.723200 174.348800 64.269485 0.500000 68
+70 2 241.676800 174.985600 65.270806 0.500000 69
+71 2 243.580800 175.302400 65.270806 0.500000 70
+72 2 245.484800 179.113600 67.273448 0.500000 71
+73 2 245.164800 179.747200 66.272127 0.500000 72
+74 2 242.627200 181.017600 67.273448 0.500000 73
+75 2 238.502400 173.078400 63.268164 0.500000 68
+76 2 240.406400 170.220800 61.265522 0.500000 75
+77 2 240.723200 169.267200 63.268164 0.500000 76
+78 2 240.723200 169.267200 66.272127 0.500000 77
+79 2 237.865600 171.174400 69.273448 0.500000 78
+80 2 237.865600 171.491200 70.274769 0.500000 79
+81 2 238.185600 174.032000 62.266843 0.500000 67
+82 2 238.502400 174.985600 61.265522 0.500000 81
+83 2 241.356800 176.572800 59.262880 0.500000 82
+84 2 241.356800 177.843200 61.265522 0.500000 83
+85 2 241.993600 178.793600 57.262880 0.500000 84
+86 2 233.424000 173.395200 67.273448 0.500000 65
+87 2 233.424000 173.078400 64.269485 0.500000 86
+88 2 231.203200 172.128000 61.265522 0.500000 87
+89 2 232.790400 172.444800 61.265522 0.500000 88
+90 2 232.470400 172.444800 60.264201 0.500000 89
+91 2 230.566400 179.113600 60.264201 0.500000 60
+92 2 230.886400 179.113600 58.264201 0.500000 91
+93 2 232.470400 179.747200 60.264201 0.500000 92
+94 2 232.470400 180.064000 58.264201 0.500000 93
+95 2 233.424000 180.384000 58.264201 0.500000 94
+96 2 233.424000 180.064000 60.264201 0.500000 95
+97 2 235.644800 180.700800 60.264201 0.500000 96
+98 2 237.865600 182.288000 61.265522 0.500000 97
+99 2 237.548800 182.604800 64.269485 0.500000 98
+100 2 238.185600 182.288000 67.273448 0.500000 99
+101 2 237.548800 182.288000 68.272127 0.500000 100
+102 2 234.694400 181.017600 70.274769 0.500000 101
+103 2 232.790400 181.651200 69.273448 0.500000 102
+104 2 237.232000 183.558400 64.269485 0.500000 99
+105 2 234.694400 183.875200 61.265522 0.500000 104
+106 2 233.740800 184.192000 62.266843 0.500000 105
+107 2 233.424000 184.828800 62.266843 0.500000 106
+108 2 223.587200 182.604800 62.266843 0.500000 56
+109 2 222.316800 181.971200 62.266843 0.500000 108
+110 2 222.000000 179.747200 62.266843 0.500000 109
+111 2 221.363200 180.064000 61.265522 0.500000 110
+112 2 221.683200 180.700800 61.265522 0.500000 111
+113 2 225.491200 183.241600 65.270806 0.500000 55
+114 2 226.124800 185.779200 63.268164 0.500000 113
+115 2 228.028800 186.732800 63.268164 0.500000 114
+116 2 228.662400 186.732800 62.266843 0.500000 115
+117 2 229.616000 188.320000 60.264201 0.500000 116
+118 2 228.662400 187.686400 60.264201 0.500000 117
+119 2 228.982400 186.732800 59.262880 0.500000 118
+120 2 229.932800 189.590400 90.295905 0.500000 20
+121 2 230.566400 188.640000 89.294584 0.500000 120
+122 2 232.470400 188.320000 90.295905 0.500000 121
+123 2 232.470400 185.145600 91.297226 0.500000 122
+124 2 232.470400 185.145600 92.298547 0.500000 123
+125 2 230.249600 192.448000 88.293263 0.500000 18
+126 2 229.616000 194.988800 87.291942 0.500000 125
+127 2 228.982400 195.942400 88.293263 0.500000 126
+128 2 234.694400 192.448000 89.294584 0.500000 17
+129 2 234.694400 192.768000 89.294584 0.500000 128
+130 2 235.961600 194.355200 89.294584 0.500000 129
+131 2 235.961600 195.305600 88.293263 0.500000 130
+132 2 236.281600 196.259200 90.295905 0.500000 131
+133 2 236.281600 196.576000 90.295905 0.500000 132
+134 2 233.107200 199.116800 90.295905 0.500000 133
+135 2 234.377600 200.704000 90.295905 0.500000 134
+136 2 237.232000 194.672000 94.301189 0.500000 15
+137 2 239.769600 193.084800 94.301189 0.500000 136
+138 2 240.406400 192.768000 93.299868 0.500000 137
+139 2 240.406400 192.448000 93.299868 0.500000 138
+140 2 243.260800 191.497600 93.299868 0.500000 139
+141 2 242.944000 190.860800 93.299868 0.500000 140
+142 2 247.068800 188.320000 95.299868 0.500000 141
+143 2 247.705600 187.369600 94.301189 0.500000 142
+144 2 244.531200 183.875200 95.299868 0.500000 143
+145 2 242.944000 185.779200 96.301189 0.500000 144
+146 2 242.944000 187.049600 95.299868 0.500000 145
+147 2 242.627200 187.049600 95.299868 0.500000 146
+148 2 240.089600 189.273600 91.297226 0.500000 139
+149 2 241.040000 188.956800 93.299868 0.500000 148
+150 2 240.723200 187.686400 91.297226 0.500000 149
+151 2 239.769600 187.049600 92.298547 0.500000 150
+152 2 239.769600 187.369600 93.299868 0.500000 151
+153 2 239.769600 192.448000 94.301189 0.500000 137
+154 2 238.819200 191.177600 93.299868 0.500000 153
+155 2 238.502400 188.640000 95.299868 0.500000 154
+156 2 237.865600 188.956800 97.302510 0.500000 155
+157 2 240.089600 197.529600 92.298547 0.500000 12
+158 2 244.848000 199.753600 91.297226 0.500000 157
+159 2 246.435200 201.974400 89.294584 0.500000 158
+160 2 246.435200 201.657600 89.294584 0.500000 159
+161 2 240.406400 202.611200 91.297226 0.500000 8
+162 2 241.676800 202.291200 92.298547 0.500000 161
+163 2 242.627200 203.561600 91.297226 0.500000 162
+164 2 243.580800 206.102400 93.299868 0.500000 163
+165 2 243.897600 206.102400 90.295905 0.500000 164
+166 2 243.580800 206.419200 89.294584 0.500000 165

+ 166 - 0
TestFiles/LLC/Cha-F-400051.CNG/Cha-F-400051.CNG.swc

@@ -0,0 +1,166 @@
+1 2 239.769600 207.056000 89.294584 0.500000 -1
+2 2 239.769600 207.689600 90.295905 0.500000 1
+3 2 239.452800 208.009600 92.298547 0.500000 2
+4 2 238.819200 207.056000 92.298547 0.500000 3
+5 2 236.281600 207.056000 91.297226 0.500000 4
+6 2 235.011200 206.102400 91.297226 0.500000 5
+7 2 236.598400 203.881600 91.297226 0.500000 6
+8 2 240.089600 201.974400 91.297226 0.500000 7
+9 2 240.406400 201.974400 91.297226 0.500000 8
+10 2 239.452800 199.116800 91.297226 0.500000 9
+11 2 239.452800 196.259200 92.298547 0.500000 10
+12 2 240.089600 195.942400 91.297226 0.500000 11
+13 2 240.089600 195.625600 90.295905 0.500000 12
+14 2 238.185600 194.035200 89.294584 0.500000 13
+15 2 236.915200 194.035200 90.295905 0.500000 14
+16 2 233.424000 193.084800 91.297226 0.500000 15
+17 2 232.153600 192.131200 89.294584 0.500000 16
+18 2 231.520000 191.814400 88.293263 0.500000 17
+19 2 231.203200 190.227200 88.293263 0.500000 18
+20 2 229.299200 189.590400 88.293263 0.500000 19
+21 2 228.982400 189.273600 87.291942 0.500000 20
+22 2 224.537600 186.416000 85.291942 0.500000 21
+23 2 223.587200 183.558400 83.289300 0.500000 22
+24 2 224.854400 181.651200 81.286658 0.500000 23
+25 2 225.171200 179.430400 82.287979 0.500000 24
+26 2 225.491200 179.430400 81.286658 0.500000 25
+27 2 225.171200 177.523200 80.285337 0.500000 26
+28 2 224.537600 177.206400 79.284016 0.500000 27
+29 2 220.729600 177.843200 78.282695 0.500000 28
+30 2 220.729600 181.017600 76.282695 0.500000 29
+31 2 222.950400 182.604800 72.277411 0.500000 30
+32 2 224.220800 182.604800 71.276090 0.500000 31
+33 2 224.220800 183.875200 70.274769 0.500000 32
+34 2 223.904000 183.875200 69.273448 0.500000 33
+35 2 219.779200 186.732800 68.272127 0.500000 34
+36 2 218.508800 188.640000 65.270806 0.500000 35
+37 2 218.825600 190.544000 65.270806 0.500000 36
+38 2 219.459200 191.497600 64.269485 0.500000 37
+39 2 219.779200 192.448000 63.268164 0.500000 38
+40 2 219.142400 192.768000 62.266843 0.500000 39
+41 2 218.825600 192.448000 62.266843 0.500000 40
+42 2 216.921600 192.131200 56.261559 0.500000 41
+43 2 216.921600 191.814400 55.260238 0.500000 42
+44 2 217.875200 191.497600 55.260238 0.500000 43
+45 2 218.508800 190.544000 54.258917 0.500000 44
+46 2 217.238400 188.640000 54.258917 0.500000 45
+47 2 215.017600 192.768000 60.264201 0.500000 42
+48 2 212.796800 194.672000 60.264201 0.500000 47
+49 2 212.480000 194.672000 60.264201 0.500000 48
+50 2 219.459200 193.084800 59.262880 0.500000 40
+51 2 221.046400 193.718400 58.264201 0.500000 50
+52 2 221.363200 194.035200 57.262880 0.500000 51
+53 2 225.171200 183.241600 70.274769 0.500000 33
+54 2 225.491200 182.604800 69.273448 0.500000 53
+55 2 226.124800 182.921600 66.272127 0.500000 54
+56 2 225.808000 182.921600 64.269485 0.500000 55
+57 2 226.124800 181.651200 61.265522 0.500000 56
+58 2 226.758400 181.651200 58.264201 0.500000 57
+59 2 227.395200 181.334400 58.264201 0.500000 58
+60 2 228.662400 180.384000 59.262880 0.500000 59
+61 2 228.028800 180.700800 62.266843 0.500000 60
+62 2 227.712000 178.793600 66.272127 0.500000 61
+63 2 228.662400 178.160000 66.272127 0.500000 62
+64 2 230.566400 176.572800 68.272127 0.500000 63
+65 2 233.107200 174.665600 67.273448 0.500000 64
+66 2 236.281600 173.395200 64.269485 0.500000 65
+67 2 236.915200 173.715200 64.269485 0.500000 66
+68 2 238.185600 173.078400 64.269485 0.500000 67
+69 2 240.723200 174.348800 64.269485 0.500000 68
+70 2 241.676800 174.985600 65.270806 0.500000 69
+71 2 243.580800 175.302400 65.270806 0.500000 70
+72 2 245.484800 179.113600 67.273448 0.500000 71
+73 2 245.164800 179.747200 66.272127 0.500000 72
+74 2 242.627200 181.017600 67.273448 0.500000 73
+75 2 238.502400 173.078400 63.268164 0.500000 68
+76 2 240.406400 170.220800 61.265522 0.500000 75
+77 2 240.723200 169.267200 63.268164 0.500000 76
+78 2 240.723200 169.267200 66.272127 0.500000 77
+79 2 237.865600 171.174400 69.273448 0.500000 78
+80 2 237.865600 171.491200 70.274769 0.500000 79
+81 2 238.185600 174.032000 62.266843 0.500000 67
+82 2 238.502400 174.985600 61.265522 0.500000 81
+83 2 241.356800 176.572800 59.262880 0.500000 82
+84 2 241.356800 177.843200 61.265522 0.500000 83
+85 2 241.993600 178.793600 57.262880 0.500000 84
+86 2 233.424000 173.395200 67.273448 0.500000 65
+87 2 233.424000 173.078400 64.269485 0.500000 86
+88 2 231.203200 172.128000 61.265522 0.500000 87
+89 2 232.790400 172.444800 61.265522 0.500000 88
+90 2 232.470400 172.444800 60.264201 0.500000 89
+91 2 230.566400 179.113600 60.264201 0.500000 60
+92 2 230.886400 179.113600 58.264201 0.500000 91
+93 2 232.470400 179.747200 60.264201 0.500000 92
+94 2 232.470400 180.064000 58.264201 0.500000 93
+95 2 233.424000 180.384000 58.264201 0.500000 94
+96 2 233.424000 180.064000 60.264201 0.500000 95
+97 2 235.644800 180.700800 60.264201 0.500000 96
+98 2 237.865600 182.288000 61.265522 0.500000 97
+99 2 237.548800 182.604800 64.269485 0.500000 98
+100 2 238.185600 182.288000 67.273448 0.500000 99
+101 2 237.548800 182.288000 68.272127 0.500000 100
+102 2 234.694400 181.017600 70.274769 0.500000 101
+103 2 232.790400 181.651200 69.273448 0.500000 102
+104 2 237.232000 183.558400 64.269485 0.500000 99
+105 2 234.694400 183.875200 61.265522 0.500000 104
+106 2 233.740800 184.192000 62.266843 0.500000 105
+107 2 233.424000 184.828800 62.266843 0.500000 106
+108 2 223.587200 182.604800 62.266843 0.500000 56
+109 2 222.316800 181.971200 62.266843 0.500000 108
+110 2 222.000000 179.747200 62.266843 0.500000 109
+111 2 221.363200 180.064000 61.265522 0.500000 110
+112 2 221.683200 180.700800 61.265522 0.500000 111
+113 2 225.491200 183.241600 65.270806 0.500000 55
+114 2 226.124800 185.779200 63.268164 0.500000 113
+115 2 228.028800 186.732800 63.268164 0.500000 114
+116 2 228.662400 186.732800 62.266843 0.500000 115
+117 2 229.616000 188.320000 60.264201 0.500000 116
+118 2 228.662400 187.686400 60.264201 0.500000 117
+119 2 228.982400 186.732800 59.262880 0.500000 118
+120 2 229.932800 189.590400 90.295905 0.500000 20
+121 2 230.566400 188.640000 89.294584 0.500000 120
+122 2 232.470400 188.320000 90.295905 0.500000 121
+123 2 232.470400 185.145600 91.297226 0.500000 122
+124 2 232.470400 185.145600 92.298547 0.500000 123
+125 2 230.249600 192.448000 88.293263 0.500000 18
+126 2 229.616000 194.988800 87.291942 0.500000 125
+127 2 228.982400 195.942400 88.293263 0.500000 126
+128 2 234.694400 192.448000 89.294584 0.500000 17
+129 2 234.694400 192.768000 89.294584 0.500000 128
+130 2 235.961600 194.355200 89.294584 0.500000 129
+131 2 235.961600 195.305600 88.293263 0.500000 130
+132 2 236.281600 196.259200 90.295905 0.500000 131
+133 2 236.281600 196.576000 90.295905 0.500000 132
+134 2 233.107200 199.116800 90.295905 0.500000 133
+135 2 234.377600 200.704000 90.295905 0.500000 134
+136 2 237.232000 194.672000 94.301189 0.500000 15
+137 2 239.769600 193.084800 94.301189 0.500000 136
+138 2 240.406400 192.768000 93.299868 0.500000 137
+139 2 240.406400 192.448000 93.299868 0.500000 138
+140 2 243.260800 191.497600 93.299868 0.500000 139
+141 2 242.944000 190.860800 93.299868 0.500000 140
+142 2 247.068800 188.320000 95.299868 0.500000 141
+143 2 247.705600 187.369600 94.301189 0.500000 142
+144 2 244.531200 183.875200 95.299868 0.500000 143
+145 2 242.944000 185.779200 96.301189 0.500000 144
+146 2 242.944000 187.049600 95.299868 0.500000 145
+147 2 242.627200 187.049600 95.299868 0.500000 146
+148 2 240.089600 189.273600 91.297226 0.500000 139
+149 2 241.040000 188.956800 93.299868 0.500000 148
+150 2 240.723200 187.686400 91.297226 0.500000 149
+151 2 239.769600 187.049600 92.298547 0.500000 150
+152 2 239.769600 187.369600 93.299868 0.500000 151
+153 2 239.769600 192.448000 94.301189 0.500000 137
+154 2 238.819200 191.177600 93.299868 0.500000 153
+155 2 238.502400 188.640000 95.299868 0.500000 154
+156 2 237.865600 188.956800 97.302510 0.500000 155
+157 2 240.089600 197.529600 92.298547 0.500000 12
+158 2 244.848000 199.753600 91.297226 0.500000 157
+159 2 246.435200 201.974400 89.294584 0.500000 158
+160 2 246.435200 201.657600 89.294584 0.500000 159
+161 2 240.406400 202.611200 91.297226 0.500000 8
+162 2 241.676800 202.291200 92.298547 0.500000 161
+163 2 242.627200 203.561600 91.297226 0.500000 162
+164 2 243.580800 206.102400 93.299868 0.500000 163
+165 2 243.897600 206.102400 90.295905 0.500000 164
+166 2 243.580800 206.419200 89.294584 0.500000 165

+ 212 - 0
TestFiles/LLC/Gad1-F-000062.CNG.swc

@@ -0,0 +1,212 @@
+1 2 -125.344000 171.833600 -55.558785 0.500000 -1
+2 2 -125.980800 172.470400 -55.558785 0.500000 1
+3 2 -127.891200 171.196800 -53.556143 0.500000 2
+4 2 -130.438400 171.513600 -51.550859 0.500000 3
+5 2 -132.665600 171.513600 -53.556143 0.500000 4
+6 2 -132.985600 171.833600 -53.556143 0.500000 5
+7 2 -134.896000 173.424000 -56.562748 0.500000 6
+8 2 -136.166400 174.700800 -56.562748 0.500000 7
+9 2 -138.396800 175.654400 -57.564069 0.500000 8
+10 2 -139.033600 176.611200 -58.568032 0.500000 9
+11 2 -139.350400 177.248000 -57.564069 0.500000 10
+12 2 -144.124800 180.115200 -58.568032 0.500000 11
+13 2 -144.444800 182.662400 -58.568032 0.500000 12
+14 2 -144.761600 184.572800 -56.562748 0.500000 13
+15 2 -145.081600 184.572800 -56.562748 0.500000 14
+16 2 -145.081600 185.846400 -58.568032 0.500000 15
+17 2 -146.035200 187.120000 -58.568032 0.500000 16
+18 2 -146.672000 190.307200 -57.564069 0.500000 17
+19 2 -146.355200 190.944000 -58.568032 0.500000 18
+20 2 -146.355200 190.944000 -57.564069 0.500000 19
+21 2 -143.808000 192.217600 -58.568032 0.500000 20
+22 2 -142.214400 191.897600 -57.564069 0.500000 21
+23 2 -142.214400 191.260800 -55.558785 0.500000 22
+24 2 -140.944000 192.217600 -54.557464 0.500000 23
+25 2 -141.577600 193.491200 -53.556143 0.500000 24
+26 2 -143.171200 193.491200 -53.556143 0.500000 25
+27 2 -144.761600 191.260800 -50.546896 0.500000 26
+28 2 -147.945600 189.033600 -45.535007 0.500000 27
+29 2 -147.945600 190.307200 -41.527081 0.500000 28
+30 2 -147.945600 189.670400 -38.517834 0.500000 29
+31 2 -148.582400 189.670400 -36.512550 0.500000 30
+32 2 -147.945600 189.670400 -33.505945 0.500000 31
+33 2 -147.308800 189.670400 -33.505945 0.500000 32
+34 2 -147.308800 189.987200 -32.504624 0.500000 33
+35 2 -146.672000 191.580800 -33.505945 0.500000 34
+36 2 -145.081600 191.260800 -31.500661 0.500000 35
+37 2 -143.488000 193.491200 -31.500661 0.500000 36
+38 2 -142.851200 196.358400 -32.504624 0.500000 37
+39 2 -141.897600 197.952000 -30.499339 0.500000 38
+40 2 -141.260800 199.862400 -29.495376 0.500000 39
+41 2 -139.987200 201.772800 -30.499339 0.500000 40
+42 2 -139.670400 201.136000 -29.495376 0.500000 41
+43 2 -137.760000 202.729600 -29.495376 0.500000 42
+44 2 -136.803200 204.320000 -27.492734 0.500000 43
+45 2 -136.486400 204.320000 -27.492734 0.500000 44
+46 2 -136.166400 205.276800 -27.492734 0.500000 45
+47 2 -134.896000 206.230400 -28.494055 0.500000 46
+48 2 -134.576000 210.054400 -25.487450 0.500000 47
+49 2 -133.302400 211.964800 -25.487450 0.500000 48
+50 2 -131.712000 212.601600 -26.488771 0.500000 49
+51 2 -131.392000 211.964800 -26.488771 0.500000 50
+52 2 -131.392000 212.601600 -27.492734 0.500000 51
+53 2 -127.254400 214.512000 -27.492734 0.500000 52
+54 2 -126.617600 215.788800 -26.488771 0.500000 53
+55 2 -124.710400 217.379200 -25.487450 0.500000 54
+56 2 -124.073600 217.699200 -26.488771 0.500000 55
+57 2 -123.436800 217.379200 -26.488771 0.500000 56
+58 2 -120.252800 217.699200 -24.483487 0.500000 57
+59 2 -120.252800 218.016000 -23.482166 0.500000 58
+60 2 -120.252800 217.062400 -22.478203 0.500000 59
+61 2 -118.979200 215.148800 -22.478203 0.500000 60
+62 2 -118.979200 213.238400 -22.478203 0.500000 61
+63 2 -118.025600 212.921600 -23.482166 0.500000 62
+64 2 -117.388800 210.371200 -21.476882 0.500000 63
+65 2 -118.662400 209.417600 -20.475561 0.500000 64
+66 2 -124.073600 217.062400 -21.476882 0.500000 60
+67 2 -123.753600 213.558400 -20.475561 0.500000 66
+68 2 -117.388800 217.379200 -24.483487 0.500000 58
+69 2 -115.478400 216.742400 -25.487450 0.500000 68
+70 2 -114.204800 218.336000 -25.487450 0.500000 69
+71 2 -114.521600 219.926400 -25.487450 0.500000 70
+72 2 -115.478400 220.566400 -24.483487 0.500000 71
+73 2 -116.752000 222.793600 -26.488771 0.500000 72
+74 2 -118.662400 224.067200 -24.483487 0.500000 73
+75 2 -120.252800 224.387200 -25.487450 0.500000 74
+76 2 -120.569600 225.660800 -27.492734 0.500000 75
+77 2 -119.932800 226.934400 -26.488771 0.500000 76
+78 2 -118.979200 228.208000 -27.492734 0.500000 77
+79 2 -119.616000 228.208000 -29.495376 0.500000 78
+80 2 -119.299200 230.758400 -27.492734 0.500000 79
+81 2 -120.252800 231.395200 -27.492734 0.500000 80
+82 2 -122.163200 230.758400 -26.488771 0.500000 81
+83 2 -124.073600 230.758400 -26.488771 0.500000 82
+84 2 -125.344000 229.164800 -26.488771 0.500000 83
+85 2 -126.617600 228.528000 -24.483487 0.500000 84
+86 2 -126.617600 228.208000 -24.483487 0.500000 85
+87 2 -123.116800 226.934400 -24.483487 0.500000 86
+88 2 -122.480000 225.980800 -25.487450 0.500000 87
+89 2 -121.843200 224.704000 -24.483487 0.500000 88
+90 2 -124.073600 223.430400 -23.482166 0.500000 89
+91 2 -124.073600 222.793600 -21.476882 0.500000 90
+92 2 -126.617600 227.891200 -22.478203 0.500000 86
+93 2 -127.574400 226.297600 -21.476882 0.500000 92
+94 2 -128.528000 225.980800 -21.476882 0.500000 93
+95 2 -129.164800 222.793600 -20.475561 0.500000 94
+96 2 -124.073600 231.712000 -26.488771 0.500000 83
+97 2 -125.980800 233.305600 -28.494055 0.500000 96
+98 2 -126.937600 233.622400 -28.494055 0.500000 97
+99 2 -127.254400 236.489600 -28.494055 0.500000 98
+100 2 -125.980800 236.809600 -28.494055 0.500000 99
+101 2 -125.664000 237.763200 -30.499339 0.500000 100
+102 2 -123.116800 237.126400 -31.500661 0.500000 101
+103 2 -118.979200 233.305600 -27.492734 0.500000 81
+104 2 -117.388800 234.262400 -27.492734 0.500000 103
+105 2 -112.294400 219.289600 -25.487450 0.500000 70
+106 2 -111.020800 218.336000 -25.487450 0.500000 105
+107 2 -111.340800 216.742400 -25.487450 0.500000 106
+108 2 -111.977600 216.425600 -24.483487 0.500000 107
+109 2 -110.067200 213.558400 -25.487450 0.500000 108
+110 2 -110.384000 211.964800 -26.488771 0.500000 109
+111 2 -125.344000 218.336000 -27.492734 0.500000 55
+112 2 -124.390400 219.926400 -26.488771 0.500000 111
+113 2 -124.073600 220.883200 -28.494055 0.500000 112
+114 2 -123.753600 222.156800 -27.492734 0.500000 113
+115 2 -123.436800 221.840000 -28.494055 0.500000 114
+116 2 -130.755200 205.913600 -26.488771 0.500000 51
+117 2 -127.574400 204.320000 -26.488771 0.500000 116
+118 2 -125.664000 203.683200 -26.488771 0.500000 117
+119 2 -125.344000 203.366400 -26.488771 0.500000 118
+120 2 -132.665600 216.425600 -27.492734 0.500000 50
+121 2 -133.302400 216.742400 -28.494055 0.500000 120
+122 2 -134.259200 216.742400 -29.495376 0.500000 121
+123 2 -134.576000 216.742400 -30.499339 0.500000 122
+124 2 -137.440000 217.699200 -30.499339 0.500000 123
+125 2 -137.123200 219.289600 -29.495376 0.500000 124
+126 2 -138.713600 218.972800 -29.495376 0.500000 125
+127 2 -139.987200 220.566400 -26.488771 0.500000 126
+128 2 -139.987200 225.024000 -29.495376 0.500000 127
+129 2 -141.897600 227.254400 -29.495376 0.500000 128
+130 2 -141.577600 226.934400 -28.494055 0.500000 129
+131 2 -135.212800 223.430400 -29.495376 0.500000 125
+132 2 -133.302400 223.750400 -29.495376 0.500000 131
+133 2 -132.985600 227.571200 -29.495376 0.500000 132
+134 2 -132.348800 229.484800 -30.499339 0.500000 133
+135 2 -133.302400 217.379200 -26.488771 0.500000 121
+136 2 -132.348800 219.289600 -26.488771 0.500000 135
+137 2 -132.028800 219.289600 -26.488771 0.500000 136
+138 2 -131.075200 221.203200 -26.488771 0.500000 137
+139 2 -130.755200 221.520000 -27.492734 0.500000 138
+140 2 -128.528000 223.430400 -28.494055 0.500000 139
+141 2 -128.528000 223.113600 -29.495376 0.500000 140
+142 2 -131.075200 221.203200 -25.487450 0.500000 138
+143 2 -131.392000 219.609600 -22.478203 0.500000 142
+144 2 -148.262400 190.624000 -37.516513 0.500000 32
+145 2 -147.945600 191.260800 -40.523118 0.500000 144
+146 2 -151.766400 193.811200 -41.527081 0.500000 145
+147 2 -154.947200 194.128000 -43.529723 0.500000 146
+148 2 -157.811200 196.675200 -44.533686 0.500000 147
+149 2 -158.768000 197.952000 -45.535007 0.500000 148
+150 2 -160.678400 202.729600 -48.544254 0.500000 149
+151 2 -160.678400 204.320000 -50.546896 0.500000 150
+152 2 -160.041600 204.956800 -50.546896 0.500000 151
+153 2 -160.358400 211.964800 -51.550859 0.500000 152
+154 2 -160.358400 213.238400 -53.556143 0.500000 153
+155 2 -160.995200 217.379200 -52.552180 0.500000 154
+156 2 -160.358400 219.926400 -54.557464 0.500000 155
+157 2 -160.995200 221.520000 -53.556143 0.500000 156
+158 2 -161.315200 221.520000 -52.552180 0.500000 157
+159 2 -161.632000 222.476800 -52.552180 0.500000 158
+160 2 -161.632000 222.793600 -50.546896 0.500000 159
+161 2 -162.588800 222.476800 -50.546896 0.500000 160
+162 2 -163.222400 219.926400 -49.545575 0.500000 161
+163 2 -164.179200 222.156800 -50.546896 0.500000 162
+164 2 -165.132800 221.840000 -50.546896 0.500000 163
+165 2 -165.132800 225.344000 -49.545575 0.500000 164
+166 2 -162.905600 227.254400 -49.545575 0.500000 165
+167 2 -162.905600 223.113600 -51.550859 0.500000 161
+168 2 -165.769600 223.113600 -55.558785 0.500000 167
+169 2 -167.043200 223.750400 -54.557464 0.500000 168
+170 2 -161.632000 222.476800 -57.564069 0.500000 158
+171 2 -161.632000 223.113600 -58.568032 0.500000 170
+172 2 -163.542400 223.113600 -59.569353 0.500000 171
+173 2 -162.268800 225.660800 -58.568032 0.500000 172
+174 2 -160.358400 226.617600 -58.568032 0.500000 173
+175 2 -159.721600 227.891200 -58.568032 0.500000 174
+176 2 -159.404800 218.972800 -56.562748 0.500000 156
+177 2 -155.904000 218.972800 -55.558785 0.500000 176
+178 2 -156.220800 217.379200 -55.558785 0.500000 177
+179 2 -157.177600 205.276800 -52.552180 0.500000 152
+180 2 -146.355200 190.624000 -62.575958 0.500000 19
+181 2 -142.534400 189.987200 -63.579921 0.500000 180
+182 2 -140.944000 189.033600 -64.581242 0.500000 181
+183 2 -140.624000 189.033600 -63.579921 0.500000 182
+184 2 -136.486400 185.846400 -64.581242 0.500000 183
+185 2 -133.939200 184.572800 -64.581242 0.500000 184
+186 2 -132.348800 182.342400 -62.575958 0.500000 185
+187 2 -132.985600 180.115200 -61.574637 0.500000 186
+188 2 -134.259200 179.478400 -59.569353 0.500000 187
+189 2 -135.212800 178.838400 -60.573316 0.500000 188
+190 2 -148.262400 190.944000 -62.575958 0.500000 180
+191 2 -148.899200 190.307200 -61.574637 0.500000 190
+192 2 -149.856000 192.854400 -57.564069 0.500000 191
+193 2 -150.809600 193.171200 -57.564069 0.500000 192
+194 2 -150.809600 192.854400 -56.562748 0.500000 193
+195 2 -149.856000 193.811200 -63.579921 0.500000 190
+196 2 -150.492800 196.038400 -62.575958 0.500000 195
+197 2 -145.081600 185.846400 -61.574637 0.500000 16
+198 2 -143.488000 185.846400 -60.573316 0.500000 197
+199 2 -138.713600 187.440000 -60.573316 0.500000 198
+200 2 -135.532800 186.803200 -58.568032 0.500000 199
+201 2 -145.398400 184.572800 -54.557464 0.500000 15
+202 2 -146.988800 186.166400 -54.557464 0.500000 201
+203 2 -147.308800 187.120000 -54.557464 0.500000 202
+204 2 -147.625600 186.166400 -56.562748 0.500000 203
+205 2 -155.267200 190.307200 -56.562748 0.500000 204
+206 2 -144.124800 183.616000 -54.557464 0.500000 14
+207 2 -140.307200 180.752000 -55.558785 0.500000 206
+208 2 -133.939200 180.115200 -55.558785 0.500000 207
+209 2 -131.392000 178.521600 -56.562748 0.500000 208
+210 2 -130.438400 173.424000 -56.562748 0.500000 209
+211 2 -131.075200 172.470400 -58.568032 0.500000 210
+212 2 -130.755200 171.833600 -58.568032 0.500000 211

+ 117 - 0
TestFiles/LLC/Gad1-F-600000.CNG.swc

@@ -0,0 +1,117 @@
+1 2 270.470400 233.619200 74.892999 0.500000 -1
+2 2 269.833600 235.526400 72.898283 0.500000 1
+3 2 270.150400 233.619200 72.898283 0.500000 2
+4 2 269.516800 232.028800 72.898283 0.500000 3
+5 2 270.470400 231.708800 73.894320 0.500000 4
+6 2 272.694400 227.574400 73.894320 0.500000 5
+7 2 272.377600 227.254400 73.894320 0.500000 6
+8 2 271.104000 226.620800 73.894320 0.500000 7
+9 2 270.150400 224.073600 73.894320 0.500000 8
+10 2 269.196800 224.073600 72.898283 0.500000 9
+11 2 269.196800 221.846400 74.892999 0.500000 10
+12 2 267.609600 220.892800 73.894320 0.500000 11
+13 2 267.289600 219.302400 72.898283 0.500000 12
+14 2 266.019200 216.121600 73.894320 0.500000 13
+15 2 263.475200 216.438400 72.898283 0.500000 14
+16 2 263.158400 216.758400 70.900925 0.500000 15
+17 2 262.204800 215.801600 70.900925 0.500000 16
+18 2 260.934400 215.801600 71.899604 0.500000 17
+19 2 257.436800 213.574400 69.904888 0.500000 18
+20 2 254.576000 207.849600 68.906209 0.500000 19
+21 2 252.668800 204.668800 66.911493 0.500000 20
+22 2 252.668800 199.257600 65.915456 0.500000 21
+23 2 252.668800 198.620800 63.918098 0.500000 22
+24 2 251.398400 194.169600 64.916777 0.500000 23
+25 2 249.808000 188.441600 63.918098 0.500000 24
+26 2 250.444800 189.078400 59.928666 0.500000 25
+27 2 250.124800 188.441600 59.928666 0.500000 26
+28 2 248.854400 188.124800 57.933950 0.500000 27
+29 2 248.854400 189.078400 56.937913 0.500000 28
+30 2 253.622400 192.896000 52.945839 0.500000 29
+31 2 254.259200 195.123200 50.951123 0.500000 30
+32 2 254.259200 195.760000 50.951123 0.500000 31
+33 2 252.985600 196.713600 47.957728 0.500000 32
+34 2 252.985600 196.076800 46.961691 0.500000 33
+35 2 253.939200 194.803200 43.968296 0.500000 34
+36 2 255.846400 192.896000 43.968296 0.500000 35
+37 2 257.436800 190.985600 41.973580 0.500000 36
+38 2 252.032000 196.396800 47.957728 0.500000 34
+39 2 249.808000 195.123200 46.961691 0.500000 38
+40 2 248.537600 194.803200 46.961691 0.500000 39
+41 2 247.584000 190.985600 45.963012 0.500000 40
+42 2 246.947200 188.758400 45.963012 0.500000 41
+43 2 243.449600 188.441600 47.957728 0.500000 42
+44 2 241.225600 190.352000 47.957728 0.500000 43
+45 2 241.542400 192.576000 47.957728 0.500000 44
+46 2 241.862400 192.576000 46.961691 0.500000 45
+47 2 246.947200 194.803200 47.957728 0.500000 39
+48 2 246.630400 194.486400 47.957728 0.500000 47
+49 2 244.403200 195.123200 50.951123 0.500000 48
+50 2 246.310400 198.620800 49.955086 0.500000 49
+51 2 246.630400 198.940800 48.956407 0.500000 50
+52 2 254.892800 192.896000 49.955086 0.500000 31
+53 2 255.529600 191.942400 48.956407 0.500000 52
+54 2 257.753600 190.985600 49.955086 0.500000 53
+55 2 261.568000 190.985600 48.956407 0.500000 54
+56 2 262.521600 189.395200 46.961691 0.500000 55
+57 2 262.521600 186.531200 45.963012 0.500000 56
+58 2 261.888000 186.214400 46.961691 0.500000 57
+59 2 261.568000 183.987200 45.963012 0.500000 58
+60 2 260.297600 182.396800 46.961691 0.500000 59
+61 2 260.297600 182.080000 46.961691 0.500000 60
+62 2 258.707200 188.124800 50.951123 0.500000 54
+63 2 260.934400 187.488000 49.955086 0.500000 62
+64 2 261.568000 185.897600 50.951123 0.500000 63
+65 2 264.748800 185.260800 50.951123 0.500000 64
+66 2 266.019200 186.214400 48.956407 0.500000 65
+67 2 254.576000 190.668800 45.963012 0.500000 53
+68 2 254.259200 189.715200 46.961691 0.500000 67
+69 2 252.985600 189.395200 46.961691 0.500000 68
+70 2 253.622400 183.350400 47.957728 0.500000 69
+71 2 254.892800 183.350400 48.956407 0.500000 70
+72 2 254.576000 182.080000 48.956407 0.500000 71
+73 2 249.808000 193.212800 60.927345 0.500000 26
+74 2 247.264000 197.030400 56.937913 0.500000 73
+75 2 245.356800 197.987200 56.937913 0.500000 74
+76 2 241.542400 197.667200 54.940555 0.500000 75
+77 2 238.681600 201.168000 52.945839 0.500000 76
+78 2 238.364800 206.259200 52.945839 0.500000 77
+79 2 239.001600 208.166400 51.949802 0.500000 78
+80 2 238.681600 208.166400 50.951123 0.500000 79
+81 2 236.774400 212.304000 48.956407 0.500000 80
+82 2 236.774400 214.211200 47.957728 0.500000 81
+83 2 233.280000 214.531200 48.956407 0.500000 82
+84 2 233.280000 214.848000 48.956407 0.500000 83
+85 2 265.065600 216.121600 72.898283 0.500000 15
+86 2 265.382400 214.211200 72.898283 0.500000 85
+87 2 262.841600 210.713600 72.898283 0.500000 86
+88 2 262.204800 210.393600 72.898283 0.500000 87
+89 2 260.614400 210.076800 73.894320 0.500000 88
+90 2 266.336000 220.892800 71.899604 0.500000 13
+91 2 264.748800 220.576000 71.899604 0.500000 90
+92 2 264.748800 219.939200 71.899604 0.500000 91
+93 2 261.251200 221.209600 71.899604 0.500000 92
+94 2 260.934400 221.209600 71.899604 0.500000 93
+95 2 270.470400 223.756800 75.889036 0.500000 9
+96 2 272.377600 223.120000 74.892999 0.500000 95
+97 2 274.284800 222.483200 74.892999 0.500000 96
+98 2 276.508800 222.803200 72.898283 0.500000 97
+99 2 276.825600 221.209600 74.892999 0.500000 98
+100 2 278.099200 220.892800 75.889036 0.500000 99
+101 2 280.006400 218.665600 75.889036 0.500000 100
+102 2 280.006400 218.028800 76.887715 0.500000 101
+103 2 276.192000 221.209600 75.889036 0.500000 99
+104 2 275.238400 218.665600 76.887715 0.500000 103
+105 2 274.601600 218.348800 76.887715 0.500000 104
+106 2 271.104000 222.483200 74.892999 0.500000 96
+107 2 271.740800 217.392000 74.892999 0.500000 106
+108 2 268.880000 223.756800 74.892999 0.500000 95
+109 2 267.289600 224.393600 74.892999 0.500000 108
+110 2 266.656000 224.393600 73.894320 0.500000 109
+111 2 265.382400 223.756800 73.894320 0.500000 110
+112 2 269.196800 227.891200 74.892999 0.500000 8
+113 2 266.019200 227.891200 75.889036 0.500000 112
+114 2 273.331200 227.254400 75.889036 0.500000 6
+115 2 274.284800 226.937600 75.889036 0.500000 114
+116 2 274.918400 228.211200 72.898283 0.500000 115
+117 2 275.872000 227.891200 71.899604 0.500000 116

+ 0 - 0
regmaxsn/__init__.py


+ 122 - 0
regmaxsn/core/RegMaxSPars.py

@@ -0,0 +1,122 @@
+# Ajayrama Kumaraswamy, 2017, LMU Munich
+
+"""
+The input parameters of different Algorithms
+"""
+
+# **********************************************************************************************************************
+"""
+Parameters of Reg-MaxS.
+refSWC:                 string. The reference SWC file, to which testFile is registered.
+                        Must be a valid SWC file on the file system.
+
+testSWC:                string. The test SWC file which is registered to refSWC.
+                        Must be a valid SWC file on the file system.
+
+resFile:                string. This file will be created and the resulting SWC will be written into it.
+                        It needs to be valid file reference.
+
+gridSizes:              list of floats. These are the voxel sizes over which Reg-MaxS is run.
+                        Values must be in micrometers.
+
+transBounds:            three member list, each element is a two member list. These members must be floats.
+                        They are bounds used for estimating translation parameters along XYZ axes.
+                        Values must be in micrometers.
+
+transMinRes:            float. After searching at the three voxel sizes in gridSizes, a further search is carried
+                        out at this resolution for translation parameters. Values must be in micrometers.
+
+rotBounds:              three member list, each element is a two member list. These members must be floats.
+                        They are bounds used for estimating rotation parameters about XYZ axes.
+                        Values must be in radians.
+
+rotMinRes:              float. After refining rotation parameters at the three voxel sizes in gridSizes, a further
+                        refinement is carried out at this resolution. Values must be in radians.
+
+scaleBounds:            three member list, each element is a two member list. These members must be floats.
+                        They are bounds used for estimating scaling parameters along XYZ axes.
+
+minScaleStepSize:       float. After refining scaling parameters at the three voxel sizes in gridSizes, a further
+                        refinement is carried out at this resolution.
+
+nCPU:                   int. Reg-MaxS internally uses multiple processes for exhaustive searches.
+                        This specifies the number of processes to use. It can be a maximum of number of
+                        processors on the machine being used. Larger this number, faster the execution.
+
+inPartsDir:             string. A file system directory, the swc files in which are transformed exactly the same as
+                        testSWC and written into outPartsDir.
+
+outPartsDir:            string. A file system directory into which the transformed swc files of inPartsDir are written.
+                        It will be created if it does not exist.
+
+retainTempFiles:        boolean. Reg-MaxS generates some temporary files in the directory where resFile is supposed to
+                        be created. If retainTempFiles is True, these are not deleted. Else, they are.
+
+
+"""
+RegMaxSParNames = ['refSWC', 'testSWC', 'resFile',
+                   'gridSizes',
+                   'transBounds', 'transMinRes',
+                   'rotBounds', 'rotMinRes',
+                   'scaleBounds', 'minScaleStepSize',
+                   'nCPU', 'inPartsDir', 'outPartsDir', 'retainTempFiles']
+
+# **********************************************************************************************************************
+
+"""
+Parameters of Reg-MaxS-N. Some parameters are same as of Reg-MaxS above and hence are omitted here.
+
+swcList:                list of strings. Each member must refer to a valid SWC file on the file system.
+
+initRefSWC:             string. The initial reference to use for Reg-MaxS-N, i.e., the reference of the first iteration.
+                        Must be a valid SWC file on the file system.
+
+resDir:                 string. The directory into which the results of Reg-MaxS-N are written. Will be created anew
+                        or replaced if it exists.
+
+finallyNormalizeWRT:    string. Must be one of the SWCs of swcList. The whole set of SWCs after registration
+                        is transformed affinely together so that this SWC is restored to it's final form.
+
+maxIter:                int. The number of iterations for which Reg-MaxS-N runs before stopping and returning the
+                        result.
+
+usePartsDir:            boolean. If True, Reg-MaxS-N check if for every SWC in swcList, a folder exists with the
+                        same name and path without the '.swc' extention. If such folders exist, the SWCs in them are
+                        transformed exactly the same as their corresponding SWCs and written into folders with the same
+                        name in resDir.
+
+"""
+
+RegMaxSNParNames = [
+                    'swcList', 'initRefSWC', 'resDir', 'finallyNormalizeWRT', 'maxIter',
+                    'gridSizes',
+                    'transBounds', 'transMinRes',
+                    'rotBounds', 'rotMinRes',
+                    'scaleBounds', 'minScaleStepSize',
+                    'nCPU', 'usePartsDir'
+                    ]
+
+# **********************************************************************************************************************
+
+"""
+Parameters of the registration PCA-based algorithm. Some parameters have the same meaning as in Reg-MaxS above and
+hence have been omitted here.
+
+gridSizes:              list of floats. These are the voxel sizes over which Reg-MaxS is run.
+                        Values must be in micrometers. These values are not used in the actual algorithm. The last
+                        element of this list is used to calculate a measure of dissimilarity between the reference SWC
+                        and the result SWC produced by the 'pcaBased' algorithm.
+
+usePartsDir:            boolean. If True, Reg-MaxS-N check if for every SWC in swcList, a folder exists with the
+                        same name and path without the '.swc' extention. If such folders exist, the SWCs in them are
+                        transformed exactly the same as their corresponding SWCs and written into folders with the same
+                        name in resDir.
+"""
+
+pcaBasedParNames = [
+                    'refSWC', 'testSWC', 'resFile',
+                    'gridSizes', 'usePartsDir'
+                    ]
+# **********************************************************************************************************************
+
+DensitySaveParNames = ['refSWC', 'resFile']

+ 212 - 0
regmaxsn/core/SWCTransforms.py

@@ -0,0 +1,212 @@
+import os
+import numpy as np
+from transforms import compose_matrix
+from swcFuncs import readSWC_numpy, writeSWC_numpy
+
+
+def three32BitInt2complexList(arr):
+    assert arr.dtype == np.int32, 'Only 32 bit ints allowed'
+    assert arr.shape[1] == 3, 'only three ints per row allowed'
+    temp = np.zeros((arr.shape[0], 4), dtype=np.int32)
+    temp[:, 1:] = arr
+    temp1 = temp.view(np.int64)
+    j = complex(0, 1)
+    return (temp1[:, 0] + j * temp1[:, 1]).tolist()
+
+
+def objFun(y):
+
+    x, data = y
+    nrnPtsTrans = data.transform(x, data.SWC2AlignPts)
+    nrnVox = np.array(np.round(nrnPtsTrans / data.gridSize), np.int32)
+    nrnVoxSet = set(three32BitInt2complexList(nrnVox))
+    nInter = len(nrnVoxSet.intersection(data.refVoxSet))
+    nUnion = len(nrnVoxSet) + len(data.refVoxSet) - nInter
+    sumOfDiffs = 1 - (nInter / float(nUnion))
+
+    return sumOfDiffs
+
+
+
+class BaseSWCTranform(object):
+
+    def __init__(self, refSWC, SWC2Align, gridSize):
+
+        super(BaseSWCTranform, self).__init__()
+
+        if os.path.isfile(refSWC) and refSWC.endswith('.swc'):
+            self.refSWCPts = np.loadtxt(refSWC)[:, 2:5]
+        elif type(refSWC) == np.ndarray:
+            self.refSWCPts = refSWC[:, 2:5]
+        else:
+            raise(ValueError('Unknown data in SWC2Align'))
+
+        self.refCenter = self.refSWCPts.mean(axis=0)
+        refVox = np.array(np.round(self.refSWCPts / gridSize), np.int32)
+        self.gridSize = gridSize
+        self.refVoxSet = set(three32BitInt2complexList(refVox))
+
+        if os.path.isfile(SWC2Align) and SWC2Align.endswith('.swc'):
+            self.headr, self.SWC2AlignFull = readSWC_numpy(SWC2Align)
+        elif type(SWC2Align) == np.ndarray:
+            assert type(SWC2Align['data']) == np.ndarray, 'Unknown data in SWC2Align'
+            self.SWC2AlignFull = SWC2Align
+            self.headr = ''
+        else:
+            raise(ValueError('Unknown data in SWC2Align'))
+        self.SWC2AlignPts = self.SWC2AlignFull[:, 2:5]
+        self.center = self.SWC2AlignPts.mean(axis=0)
+
+    def transform(self, pars, data):
+
+        return data
+
+    def writeSolution(self, outFile, bestSol, inFile=None):
+
+        if inFile:
+            headr, data = readSWC_numpy(inFile)
+        else:
+            headr, data = self.headr, self.SWC2AlignFull
+
+        data[:, 2:5] = self.transform(bestSol, data[:, 2:5])
+
+        writeSWC_numpy(outFile, data, headr)
+
+
+class SWCTranslate(BaseSWCTranform):
+
+    def __init__(self, refSWC, SWC2Align, gridSize):
+
+        super(SWCTranslate, self).__init__(refSWC, SWC2Align, gridSize)
+
+    def transform(self, pars, data):
+
+        return data + pars
+
+
+class SWCRotate(BaseSWCTranform):
+
+    def __init__(self, refSWC, SWC2Align, gridSize):
+
+        super(SWCRotate, self).__init__(refSWC, SWC2Align, gridSize)
+
+
+    def transform(self, pars, data):
+
+        rotMat = compose_matrix(angles=pars)
+        dataCentered = data - self.center
+        return np.dot(rotMat[:3, :3], dataCentered.T).T + self.center
+
+
+class SWCScale(object):
+
+    def __init__(self, refSWC, SWC2Align, gridSize):
+
+        super(SWCScale, self).__init__()
+
+        self.gridSize = gridSize
+
+        if os.path.isfile(refSWC) and refSWC.endswith('.swc'):
+            self.refSWCPts = np.loadtxt(refSWC)[:, 2:5]
+        elif type(refSWC) == np.ndarray:
+            self.refSWCPts = refSWC[:, 2:5]
+        else:
+            raise(ValueError('Unknown data in SWC2Align'))
+
+        refCenter = self.refSWCPts.mean(axis=0)
+        refSWCPtsCentered = self.refSWCPts - refCenter
+        refVox = np.array(np.round(refSWCPtsCentered / gridSize), np.int32)
+        self.refVoxSet = set(three32BitInt2complexList(refVox))
+
+        if os.path.isfile(SWC2Align) and SWC2Align.endswith('.swc'):
+            self.headr, self.SWC2AlignFull = readSWC_numpy(SWC2Align)
+        elif type(SWC2Align) == np.ndarray:
+            assert type(SWC2Align['data']) == np.ndarray, 'Unknown data in SWC2Align'
+            self.SWC2AlignFull = SWC2Align
+            self.headr = ''
+        else:
+            raise(ValueError('Unknown data in SWC2Align'))
+
+        self.SWC2AlignPts = self.SWC2AlignFull[:, 2:5].copy()
+        self.center = self.SWC2AlignPts.mean(axis=0)
+        self.SWC2AlignPts -= self.center
+
+
+
+    def transform(self, pars, data):
+
+        rotMat = compose_matrix(scale=pars)
+        dataCentered = data
+        return np.dot(rotMat[:3, :3], dataCentered.T).T
+
+    def writeSolution(self, outFile, bestSol, inFile=None):
+
+        if inFile:
+            headr, data = readSWC_numpy(inFile)
+        else:
+            headr, data = self.headr, self.SWC2AlignFull
+
+        data[:, 2:5] = self.transform(bestSol, data[:, 2:5] - self.center) + self.center
+
+        writeSWC_numpy(outFile, data, headr)
+
+
+
+class ArgGenIterator:
+
+    def __init__(self, arg1, arg2):
+
+        self.arg1 = arg1
+        self.arg2 = arg2
+        self.pointsDone = 0
+
+    def __iter__(self):
+
+        self.pointsDone = 0
+        return self
+
+    def next(self):
+
+        if self.pointsDone < len(self.arg1):
+            toReturn = (self.arg1[self.pointsDone], self.arg2)
+            self.pointsDone += 1
+            return toReturn
+        else:
+            raise StopIteration
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 0 - 0
regmaxsn/core/__init__.py


+ 50 - 0
regmaxsn/core/farthestPointStats.py

@@ -0,0 +1,50 @@
+from regmaxsn.core.swcFuncs import readSWC_numpy, resampleSWC
+from scipy.spatial import ConvexHull
+import pandas as pd
+from scipy.spatial.distance import cdist
+
+
+def maxDistStats(swcFiles):
+
+    swcHullVerts = []
+    swcDatas = []
+    swcDataSeries =[]
+    swcHullVertsSeries = []
+
+    maxDistStatsDF = pd.DataFrame()
+
+    for swcFile in swcFiles:
+        totalLen, swcDataWithR = resampleSWC(swcFile, 0.5)
+        swcData = swcDataWithR[:, :3]
+        swcDatas.append(swcData)
+        swcDataSeries.append(pd.Series([tuple(x) for x in swcData]))
+        hull = ConvexHull(swcData)
+        swcHullVert = swcData[hull.vertices, :]
+        swcHullVerts.append(swcHullVert)
+        swcHullVertsSeries.append(pd.Series([tuple(x) for x in swcHullVert]))
+
+    for swcInd1, swcData1 in enumerate(swcDatas):
+
+        swcInds = range(len(swcFiles))
+        swcInds.remove(swcInd1)
+        swcDataSeries1 = swcDataSeries[swcInd1]
+
+        for swcInd2 in swcInds:
+            swcHullVert2 = swcHullVerts[swcInd2]
+            swcHullVertSeries2 = swcHullVertsSeries[swcInd2]
+
+            distMat = cdist(swcData1, swcHullVert2)
+
+            maxDistsInds = distMat.argmax(axis=1)
+
+            tempDF = pd.DataFrame()
+            tempDF["source point"] = swcDataSeries1
+            tempDF["maximum distance"] = distMat.max(axis=1)
+            tempDF["destination farthest point"] = swcHullVertSeries2[maxDistsInds].values
+            tempDF["destination SWC"] = swcFiles[swcInd2]
+
+            maxDistStatsDF = maxDistStatsDF.append(tempDF, ignore_index=True)
+
+    return maxDistStatsDF
+
+

+ 539 - 0
regmaxsn/core/iterativeRegistration.py

@@ -0,0 +1,539 @@
+import os
+import numpy as np
+from .swcFuncs import transSWC, transSWC_rotAboutPoint
+from .SWCTransforms import SWCTranslate, objFun
+import shutil
+import json
+import subprocess
+
+def transPreference(x, y):
+    """
+    Given two transforms x and y, returns if x is preferred over y. Preferences are scaling > translation,
+    scaling > rotation, translation > rotation.
+    :param x:
+    :param y:
+    :return:
+    """
+    if x == 'scale':
+        return 0
+    elif y == 'scale':
+        return 1
+    elif x == 'rot':
+        return 0
+    else:
+        return 1
+
+
+def getRemainderScale(scale, oldScale):
+    """
+    Elementwise divides oldScale by scale, effectively removing scale from old scale. The first entry is bounded
+    above by 1 and the second entry is bounded below by 1.
+    :param scale: 3 member list of 2 member float lists.
+    :param oldScale: 3 member list of 2 member float lists.
+    :return: 3 member list of 2 member float lists.
+    """
+    toReturn = []
+    for s, oldS in zip(scale, oldScale):
+
+        toReturn.append([min(oldS[0] / s, 1), max(oldS[1] / s, 1)])
+
+    return toReturn
+
+
+class IterativeRegistration(object):
+    """
+    This class is used to run basic Reg-MaxS algorithm.
+    """
+    def __init__(self, refSWC, gridSizes, rotBounds, transBounds,
+                 transMinRes, scaleMinRes, rotMinRes, nCPU):
+        """
+        Initialization
+        :param refSWC: valid file path to a valid SWC file, reference SWC
+        :param gridSizes: list of three floats, the voxel sizes over which estimations are run, in micrometer
+        :param rotBounds: three member list of two member float lists, the bounds for rotation euler angles abour XYZ
+                            axes, in radians
+        :param transBounds: three member list of two member float lists, the bounds for translations along XYZ axes.
+        :param transMinRes: float, minimum resolution of exhaustive search for translation parameters in micrometer.
+        :param scaleMinRes: float. minimum (multiplicative) resolution of exhuasitve search for scaling paramers.
+        :param rotMinRes: float. minimum resolution of exhuastive search for rotation euler angle parameters in radians.
+        :param nCPU: int, number of processes to use
+        """
+        super(IterativeRegistration, self).__init__()
+
+        self.refSWC = refSWC
+        self.gridSizes = gridSizes
+        self.rotBounds = rotBounds
+        self.transBounds = transBounds
+        self.rotBounds = rotBounds
+        self.transMinRes = transMinRes
+        self.rotMinRes = rotMinRes
+        self.scaleMinRes = scaleMinRes
+        self.nCPU = nCPU
+        self.allFuncs = {'trans': self.transOnce, 'rot': self.rotOnce, 'scale': self.scaleOnce}
+
+
+
+    def rotOnce(self, SWC2Align, outFiles, ipParFile):
+        """
+        Runs exhaustive search to find the best rotation euler angles about XYZ axes that maximize the volume overlap
+        between SWC2Align and self.refSWC. Results are written in the two file paths of outFiles.
+        If solution found is no better than doing nothing or if the angles found are lower than minimum resolution,
+        zero angles are returned with done as true
+        :param SWC2Align: valid file path to a valid SWC file
+        :param outFiles: list of two valid file paths. SWC2Align rotated with optimum parameters is written to
+        outFiles[0], a log file of the process is written into ouFiles[1].
+        :param ipParFile: valid file path. Temporary file used.
+        :return: bestSol, bestVal, done
+                bestSol: list of three floats, best Euler angles in radians
+                bestVal: float, best value of dissimilarity between SWC2Align and refSWC at the lowest voxel size
+                done: boolean, see above.
+        """
+        pars = [self.refSWC, SWC2Align, outFiles,
+                self.gridSizes, self.rotBounds, self.rotMinRes, self.nCPU]
+
+        with open(ipParFile, 'w') as fle:
+            json.dump(pars, fle)
+
+        f2call = os.path.join(os.path.split(__file__)[0], 'rotOnce.py')
+        subprocess.call(['python', f2call, ipParFile])
+
+        with open(outFiles[1], 'r') as fle:
+            out = json.load(fle)
+            bestSol = out['bestSol']
+            done = out['done']
+            bestVal = out['bestVal']
+            print(bestSol, bestVal, done)
+
+        return bestSol, bestVal, done
+
+    def transOnce(self, SWC2Align, outFiles, ipParFile):
+        """
+        Runs exhaustive search to find the best translations along XYZ axes that maximize the volume overlap between
+        SWC2Align and self.refSWC. Results are written in the two file paths of outFiles.
+        If solution found is no better than doing nothing or if the translations found are lower than
+        the minimum resolution, zero translations are returned with done set to true
+        :param SWC2Align: valid file path to a valid SWC file
+        :param outFiles: list of two valid file paths. SWC2Align translated with optimum parameters is written to
+        outFiles[0], a log file of the process is written into ouFiles[1].
+        :param ipParFile: valid file path. Temporary file used.
+        :return: bestSol, bestVal, done
+                bestSol: list of three floats, best translations in micrometer
+                bestVal: float, best value of dissimilarity between SWC2Align and refSWC at the lowest voxel size
+                done: boolean, see above.
+        """
+        pars = [self.refSWC, SWC2Align, outFiles,
+                self.gridSizes, self.transBounds, self.transMinRes, self.nCPU]
+
+        with open(ipParFile, 'w') as fle:
+            json.dump(pars, fle)
+
+        f2call = os.path.join(os.path.split(__file__)[0], 'transOnce.py')
+        subprocess.call(['python', f2call, ipParFile])
+
+        with open(outFiles[1], 'r') as fle:
+            out = json.load(fle)
+            bestSol = out['bestSol']
+            done = out['done']
+            bestVal = out['bestVal']
+            print(bestSol, bestVal, done)
+
+        return bestSol, bestVal, done
+
+    def scaleOnce(self, SWC2Align, outFiles, ipParFile, scaleBounds):
+        """
+        Runs exhaustive search to find the best scaling parameters along XYZ axes that maximize the volume overlap
+        between SWC2Align and self.refSWC. Results are written in the two file paths of outFiles.
+        If solution found is no better than doing nothing or if the scaling parameters found are lower than
+        the minimum resolution, unity scaling parameters are returned with done set to true
+        :param SWC2Align: valid file path to a valid SWC file
+        :param outFiles: list of two valid file paths. SWC2Align scaled with optimum parameters is written to
+        outFiles[0], a log file of the process is written into ouFiles[1].
+        :param ipParFile: valid file path. Temporary file used.
+        :return: bestSol, bestVal, done
+                bestSol: list of three floats, best scaling parameters
+                bestVal: float, best value of dissimilarity between SWC2Align and refSWC at the lowest voxel size
+                done: boolean, see above.
+        """
+        pars = [self.refSWC, SWC2Align, outFiles,
+                self.gridSizes, scaleBounds, self.scaleMinRes, self.nCPU]
+
+        with open(ipParFile, 'w') as fle:
+            json.dump(pars, fle)
+
+        f2call = os.path.join(os.path.split(__file__)[0], 'scaleOnce.py')
+        subprocess.call(['python', f2call, ipParFile])
+
+        with open(outFiles[1], 'r') as fle:
+            out = json.load(fle)
+            bestSol = out['bestSol']
+            done = out['done']
+            bestVal = out['bestVal']
+            print(bestSol, bestVal, done)
+
+        return bestSol, bestVal, done
+
+    def compare(self, srts, SWC2Align, tempOutFiles, ipParFile, scaleBounds):
+        """
+        Runs the exhaustive searchs for the transforms in srts and returns some info about the searches
+        :param srts: list of strings, valid entries are 'scale', 'trans' and 'rot'
+        :param SWC2Align: valid file path of valid SWC file.
+        :param tempOutFiles: list of two valid file paths, for temporary internal use.
+        :param ipParFile: valid file path, for temporary internal use.
+        :param scaleBounds: three member list of two member float lists, the bounds for scaling parameters
+         along XYZ axes.
+        :return: tempDones, presBestSol, presBestVal, presBestDone, presBestTrans
+                 tempDones: list of booleans, same size as srts, contains the value of 'done' of respective exhaustive
+                 searches
+                 presBestTrans: transform among srts leading to the lowest dissimilarity
+                 presBestSol: list of three floats, correspong transform parameters
+                 presBestDone: boolean, 'done' value of presBestTrans
+        """
+        presBestVal = 1e6
+        presBestTrans = 'trans'
+        presBestSol = [0, 0, 0]
+        presBestDone = False
+
+        tempDones = {}
+
+        for g in srts:
+
+            if g == 'scale':
+                bestSol, bestVal, done = self.scaleOnce(SWC2Align, tempOutFiles[g], ipParFile, scaleBounds)
+            elif g == 'rot':
+                bestSol, bestVal, done = self.rotOnce(SWC2Align, tempOutFiles[g], ipParFile)
+            elif g == 'trans':
+                bestSol, bestVal, done = self.transOnce(SWC2Align, tempOutFiles[g], ipParFile)
+            else:
+                raise('Invalid transformation type ' + g)
+
+
+            tempDones[g] = done
+
+            if (bestVal == presBestVal and transPreference(presBestTrans, g)) or (bestVal < presBestVal):
+
+                presBestTrans = g
+                presBestVal = bestVal
+                presBestSol = bestSol
+                presBestDone = done
+
+
+        return tempDones, presBestSol, presBestVal, presBestDone, presBestTrans
+
+
+
+
+
+    def performReg(self, SWC2Align, resFile, scaleBounds,
+                   inPartsDir=None, outPartsDir=None,
+                   initGuessType='just_centroids',
+                   retainTempFiles=False):
+        """
+        Repeatedly applies translation, rotation and scaling transforms to SWC2Align to maximize its volume overlap
+        with self.refSWC. See Reg-MaxS-N manuscript for more info.
+
+        :param SWC2Align: valid file path of a valid SWC file, the SWC that is registered to self.refSWC
+        :param resFile: valid file path, where SWC2Align registered to self.refSWC is written
+        :param scaleBounds: three member list of two member float lists, the bounds for scaling parameters
+        :param inPartsDir: valid directory path, any swc files with this will be transformed exactly same as
+                            SWC2Align and written in to outPartsDir
+        :param outPartsDir: valid directory path
+        :param initGuessType: string, valid values are 'just centroids' and 'nothing'. If 'just centroids', the
+        centroids are initially matched, if 'nothing' they are not.
+        :param retainTempFiles: boolean, whether to retain the intermediate files.
+        :return: finalFile, finalSolFile
+                 finalFile: same as resFile
+                 finalSolFile: a file at <resFile name>Sol.txt where results of the process are logged.
+        """
+
+        resDir, expName = os.path.split(resFile[:-4])
+
+        ipParFile = os.path.join(resDir, 'tmp.json')
+        vals = ['trans', 'rot', 'scale']
+        tempOutFiles = {}
+        for val in vals:
+            fle1 = os.path.join(resDir, val + '.swc')
+            fle2 = os.path.join(resDir, val + 'bestSol.json')
+            tempOutFiles[val] = [fle1, fle2]
+
+        refMean = np.loadtxt(self.refSWC)[:, 2:5].mean(axis=0)
+        iterationNo = 0
+
+        tempOutPath = os.path.join(resDir, expName + 'trans')
+        if not os.path.isdir(tempOutPath):
+            os.mkdir(tempOutPath)
+
+        SWC2AlignLocal = os.path.join(tempOutPath, str(iterationNo) + '.swc')
+        SWC2AlignMean = np.loadtxt(SWC2Align)[:, 2:5].mean(axis=0)
+
+        if initGuessType == 'just_centroids':
+
+            transSWC(SWC2Align, np.eye(3), refMean - SWC2AlignMean, SWC2AlignLocal)
+            totalTransform = np.eye(4)
+            totalTransform[:3, 3] = -SWC2AlignMean
+            totalTranslation = refMean
+
+        elif initGuessType == 'nothing':
+
+            shutil.copy(SWC2Align, SWC2AlignLocal)
+            totalTransform = np.eye(4)
+            totalTransform[:3, 3] = -SWC2AlignMean
+            totalTranslation = SWC2AlignMean
+
+        else:
+            raise(ValueError('Unknown value for argument \'initGuessType\''))
+
+
+        SWC2AlignT = SWC2AlignLocal
+
+        scaleDone = False
+        bestVals = {}
+
+        while not scaleDone:
+
+            done = False
+            srts = ['rot', 'trans']
+
+
+            while not done:
+
+                tempDones, bestSol, bestVal, lDone, g = self.compare(srts, SWC2AlignT, tempOutFiles, ipParFile, None)
+
+                outFile = os.path.join(tempOutPath, str(iterationNo) + g[0] + '.swc')
+
+                outFileSol = os.path.join(tempOutPath, 'bestSol' + str(iterationNo) + g[0] + '.txt')
+
+                shutil.copyfile(tempOutFiles[g][0], outFile)
+                shutil.copyfile(tempOutFiles[g][1], outFileSol)
+
+                with open(outFileSol, 'r') as fle:
+                    pars = json.load(fle)
+                    presTrans = np.array(pars['transMat'])
+                    if g == 'trans':
+                        totalTranslation += presTrans[:3, 3]
+                    else:
+                        totalTransform = np.dot(presTrans, totalTransform)
+
+                print(str(iterationNo) + g)
+
+                bestVals[bestVal] = {"outFile": outFile, "outFileSol": outFileSol,
+                                     "totalTransform": totalTransform,
+                                     "totalTranslation": totalTranslation,
+                                     "iterationIndicator": str(iterationNo) + g
+                                     }
+
+                iterationNo += 1
+
+                done = lDone
+
+                SWC2AlignT = outFile
+
+
+            bestSol, bestVal, sDone = self.scaleOnce(SWC2AlignT, tempOutFiles['scale'], ipParFile, scaleBounds)
+
+            outFile = os.path.join(tempOutPath, str(iterationNo) + 's.swc')
+
+            outFileSol = os.path.join(tempOutPath, 'bestSol' + str(iterationNo) + 's.txt')
+
+            shutil.copyfile(tempOutFiles['scale'][0], outFile)
+            shutil.copyfile(tempOutFiles['scale'][1], outFileSol)
+
+            with open(outFileSol, 'r') as fle:
+                pars = json.load(fle)
+                presTrans = np.array(pars['transMat'])
+                totalTransform = np.dot(presTrans, totalTransform)
+
+            print(str(iterationNo) + 's')
+
+            bestVals[bestVal] = {"outFile": outFile, "outFileSol": outFileSol,
+                                 "totalTransform": totalTransform,
+                                 "totalTranslation": totalTranslation,
+                                 "iterationIndicator": str(iterationNo) + 's'
+                                 }
+
+            iterationNo += 1
+
+            SWC2AlignT = outFile
+
+
+            tempDones, bestSol, bestVal, lDone, g = self.compare(vals, SWC2AlignT, tempOutFiles, ipParFile, scaleBounds)
+            scaleDone = all(tempDones.values())
+
+            if not scaleDone:
+                with open(tempOutFiles['rot'][1], 'r') as fle:
+                    pars = json.load(fle)
+                    rBestVal = pars['bestVal']
+
+                with open(tempOutFiles['trans'][1], 'r') as fle:
+                    pars = json.load(fle)
+                    tBestVal = pars['bestVal']
+
+                if rBestVal < tBestVal:
+                    g = 'rot'
+                else:
+                    g = 'trans'
+
+                outFile = os.path.join(tempOutPath, str(iterationNo) + g[0] + '.swc')
+
+                outFileSol = os.path.join(tempOutPath, 'bestSol' + str(iterationNo) + g[0] + '.txt')
+
+                shutil.copyfile(tempOutFiles[g][0], outFile)
+                shutil.copyfile(tempOutFiles[g][1], outFileSol)
+
+                with open(outFileSol, 'r') as fle:
+                    pars = json.load(fle)
+                    presTrans = np.array(pars['transMat'])
+                    if g == 'trans':
+                        totalTranslation += presTrans[:3, 3]
+                    else:
+                        totalTransform = np.dot(presTrans, totalTransform)
+
+                print(str(iterationNo) + g)
+
+                bestVals[bestVal] = {"outFile": outFile, "outFileSol": outFileSol,
+                                     "totalTransform": totalTransform,
+                                     "totalTranslation": totalTranslation,
+                                     "iterationIndicator": str(iterationNo) + g
+                                     }
+
+                iterationNo += 1
+
+                SWC2AlignT = outFile
+
+        championBestVal = min(bestVals.keys())
+        totalTransform = bestVals[championBestVal]["totalTransform"]
+        totalTranslation = bestVals[championBestVal]["totalTranslation"]
+        bestIterIndicator = bestVals[championBestVal]["iterationIndicator"]
+
+        print("bestIter: {}, bestVal: {}".format(bestIterIndicator, championBestVal))
+
+        totalTransform[:3, 3] += totalTranslation
+
+        for g in vals:
+            [os.remove(x) for x in tempOutFiles[g]]
+        os.remove(ipParFile)
+
+        if not retainTempFiles:
+            shutil.rmtree(tempOutPath)
+
+        finalFile = os.path.join(resDir, expName + '.swc')
+        transSWC_rotAboutPoint(SWC2Align,
+                               totalTransform[:3, :3], totalTransform[:3, 3],
+                               finalFile,
+                               [0, 0, 0]
+                               )
+        trans = SWCTranslate(self.refSWC, finalFile, self.gridSizes[-1])
+        finalVal = objFun(([0, 0, 0], trans))
+        finalSolFile = os.path.join(resDir, expName + 'Sol.txt')
+
+        with open(finalSolFile, 'w') as fle:
+            json.dump({'finalVal': finalVal, 'finalTransMat': totalTransform.tolist(), 'refSWC': self.refSWC,
+                       'SWC2Align': SWC2Align, 'bestIteration': bestIterIndicator}, fle)
+
+        if inPartsDir is not None:
+
+            if os.path.isdir(inPartsDir):
+
+                dirList = os.listdir(inPartsDir)
+                dirList = [x for x in dirList if x.endswith('.swc')]
+
+                if not os.path.isdir(outPartsDir):
+                    os.mkdir(outPartsDir)
+
+                for entry in dirList:
+                    transSWC_rotAboutPoint(os.path.join(inPartsDir, entry),
+                                           totalTransform[:3, :3], totalTransform[:3, 3],
+                                           os.path.join(outPartsDir, entry),
+                                           [0, 0, 0]
+                                           )
+
+            else:
+                print('Specified partsDir {} not found'.format(inPartsDir))
+
+
+        return finalFile, finalSolFile
+
+
+def composeRefSWC(alignedSWCs, newRefSWC, gridSize):
+    """
+    Given a list of SWCs, it constructs a fake SWC to represent the union of the volumes occupied by the SWCs.
+    :param alignedSWCs: list of SWC files
+    :param newRefSWC: valid file path, where the resulting SWC is written
+    :param gridSize: float, the voxel size at which the volumes are discretized before forming the union.
+    :return: dissim: float, 1 - (# of voxels in the intersection of volumes) / (# of voxels in the union of volumes)
+    """
+    indVoxs = []
+
+    for aswc in alignedSWCs:
+        aPts = np.loadtxt(aswc)[:, 2:5]
+        aVox = np.array(np.round(aPts / gridSize), np.int32)
+        aVoxSet = set(map(tuple, aVox))
+        indVoxs.append(aVoxSet)
+
+    # majority = [sum(x in y for y in indVoxs) >= 0.5 * len(indVoxs) for x in aUnion]
+
+    # newRefVoxSet = [y for x, y in enumerate(aUnion) if majority[x]]
+
+    aUnion = reduce(lambda x, y: x.union(y), indVoxs)
+    aInt = reduce(lambda x, y: x.intersection(y), indVoxs)
+
+    newRefVoxSet = aUnion
+
+
+    newRefXYZ = np.array(list(newRefVoxSet)) * gridSize
+
+    writeFakeSWC(newRefXYZ, newRefSWC)
+    # print(len(aInt), len(aUnion))
+
+    return 1 - len(aInt) / float(len(aUnion))
+
+
+def calcOverlap(refSWC, SWC2Align, gridSize):
+    """
+    Given two SWCs, it calculates a measure of dissimilarity between them using their discretized volumes.
+    It's defined as 1 - size of intersection of the volumes / size of union of the volumes
+    :param refSWC: valid file path to a valid SWC file
+    :param SWC2Align: valid file path to a valid SWC file
+    :param gridSize: float, the voxel size at which the volumes are discretized.
+    :return: float, dissimilarity value
+    """
+    trans = SWCTranslate(refSWC, SWC2Align, gridSize)
+
+    return objFun(([0, 0, 0], trans))
+
+
+
+def writeFakeSWC(data, fName, extraCol=None):
+    """
+    Forms a 7 column SWC data from the 3 column XYZ data in 'data' and writes it to a file at path fName adding
+    a '!! Fake SWC !!' warning in the header.
+    :param data: numpy.ndarray, 3 column XYZ data
+    :param fName: valid file path to write the fake SWC file
+    :param extraCol: iterable of the same size as the number of rows of data, will be added as the 8th column
+    :return:
+    """
+    data = np.array(data)
+
+    assert data.shape[1] == 3
+
+    if extraCol is not None:
+        extraCol = np.array(extraCol)
+        assert extraCol.shape == (data.shape[0], ) or extraCol.shape == (data.shape[0], 1)
+
+        toWrite = np.empty((data.shape[0], 8))
+        toWrite[:, 7] = extraCol
+    else:
+        toWrite = np.empty((data.shape[0], 7))
+
+    toWrite[:, 2:5] = data
+    toWrite[:, 0] = range(1, data.shape[0] + 1)
+    toWrite[:, 1] = 3
+    toWrite[:, 5] = 1
+    toWrite[:, 6] = -np.arange(1, data.shape[0] + 1)
+
+
+    formatStr = '%d %d %0.6f %0.6f %0.6f %0.6f %d'
+
+    if extraCol is not None:
+        formatStr += ' %d'
+    headr = '!! Fake SWC file !!'
+    np.savetxt(fName, toWrite, fmt=formatStr, header=headr)

+ 35 - 0
regmaxsn/core/matplotlibRCParams.py

@@ -0,0 +1,35 @@
+# mplPars = {'text.usetex': True,
+#            'axes.labelsize': 'large',
+#            'axes.titlesize': 24,
+#            'font.family': 'sans-serif',
+#            'font.sans-serif': 'computer modern bright',
+#            'font.size': 24,
+#            'font.weight': 'black',
+#            'xtick.labelsize': 20,
+#            'ytick.labelsize': 20,
+#            'legend.fontsize': 20,
+#            'legend.frameon': True,
+#            'legend.framealpha': 0,
+#            'legend.fancybox': True,
+#            'text.latex.preamble': r'\usepackage{cmbright}',
+#            "lines.linewidth": 3,
+#            "lines.markersize": 10
+#            }
+
+mplPars = {'text.usetex': True,
+           'axes.labelsize': 'large',
+           'axes.titlesize': 32,
+           'font.family': 'sans-serif',
+           'font.sans-serif': 'computer modern bright',
+           'font.size': 32,
+           'font.weight': 'black',
+           'xtick.labelsize': 26,
+           'ytick.labelsize': 26,
+           'legend.fontsize': 26,
+           'legend.frameon': True,
+           'legend.framealpha': 0,
+           'legend.fancybox': True,
+           'text.latex.preamble': r'\usepackage{cmbright}',
+           "lines.linewidth": 3,
+           "lines.markersize": 10
+           }

+ 95 - 0
regmaxsn/core/maxDistanceBasedMetric.py

@@ -0,0 +1,95 @@
+from scipy.spatial import ConvexHull
+from scipy.spatial.distance import cdist
+from .swcFuncs import readSWC_numpy
+import numpy as np
+from pyemd import emd
+
+def cdist_1d_centripetal(list1, list2, center):
+    """
+    Return a matrix of pairwise displacements of entries of list1 from corresponding
+     entries in list2, with displacements
+    towards center having positive value and those away having negative values
+    :param list1: iterable of floats or ints
+    :param list2: iterable of floats or ints
+    :param center: float or int
+    :return: numpy.ndarray of shape (<len of list1>, <len of list2>)
+    """
+
+    assert all([isinstance(x, (float, int)) for x in list1])
+    assert all([isinstance(x, (float, int)) for x in list2])
+    assert isinstance(center, (float, int))
+
+    mesh2 = np.array([list2] * len(list1))
+    mesh1 = np.array([list1] * len(list2)).T
+
+    mesh1CenteredAbs = np.abs(mesh1 - center)
+    mesh2CenteredAbs = np.abs(mesh2 - center)
+
+    return mesh2CenteredAbs - mesh1CenteredAbs
+
+def calcMaxDistances(swcList):
+    """
+    Compute the convex hull of the union of points from all swcs in swcList. For each vertex of this
+    convex hull, compute the distance of the farthest point among the vertices of the hull and return
+    them.
+    :param swcList: list of valid SWC files on the file system, list of strings.
+    :return: list of maximum distances
+    """
+
+    swcPointSets = []
+    for swc in swcList:
+        headr, swcData = readSWC_numpy(swc)
+        swcPointSets.append(swcData[:, 2:5])
+
+    unionWithDuplicates = np.concatenate(swcPointSets, axis=0)
+    if any(np.abs(unionWithDuplicates).max(axis=0) == 0):
+        raise(ValueError("The list of SWCs all lie on a plane or on  a line and hence do not "
+                         "for a 3D point cloud. Such SWCs are not supported."))
+
+    hull = ConvexHull(unionWithDuplicates)
+
+    vertices = unionWithDuplicates[hull.vertices, :]
+    distMatrix = cdist(unionWithDuplicates, vertices)
+    maxDistances = distMatrix.max(axis=1).tolist()
+
+    return maxDistances
+
+
+def maxDistEMD(swcList):
+    """
+    Calculate the maxDistance based metric. It is the size normalized Earth mover distance
+    between the distribution of maxDistances (see calcMaxDistances above)
+    of the pooled collection of points of all swcs in swcList and the distribution of
+    pooled diagonal maxDistances of individual swcs in swcList
+    :param swcList: list of valid swc files on the system, list of strings
+    :return: float
+    """
+
+    individualMaxDistances = [calcMaxDistances([swc]) for swc in swcList]
+    pooledIndividualMaxDistances = np.concatenate(individualMaxDistances, axis=0)
+
+    meanPIMD = pooledIndividualMaxDistances.mean()
+
+    PIMDNorm = (pooledIndividualMaxDistances - meanPIMD) / meanPIMD
+
+    maxDistancesAllPts = np.array(calcMaxDistances(swcList))
+
+    MDAPNorm = (maxDistancesAllPts - meanPIMD) / meanPIMD
+
+    binWidth = 1 / meanPIMD
+
+    bins = np.arange(MDAPNorm.min() - 0.5 * binWidth,
+                     MDAPNorm.max() + 0.5 * binWidth,
+                     binWidth)
+
+    hist1, bins1 = np.histogram(MDAPNorm, bins)
+    hist2, bins2 = np.histogram(PIMDNorm, bins1)
+
+    hist1Normed = hist1 / float(hist1.sum())
+    hist2Normed = hist2 / float(hist2.sum())
+
+    dist_metric = cdist_1d_centripetal(bins1, bins2, center=0)
+    emd_val = emd(np.asarray(hist2Normed, dtype=np.float64), np.asarray(hist1Normed, dtype=np.float64),
+                  np.asarray(dist_metric, dtype=np.float64))
+
+    return emd_val

+ 23 - 0
regmaxsn/core/misc.py

@@ -0,0 +1,23 @@
+import json
+
+def parFileCheck(parFile, parNames):
+    """
+    Checks if each dictionary in the list of dictionaries in parFile contains all the keys in parNames. Assertions
+    are used to raise errors if problems are detected.
+    :param parFile: a valid file path containing the list of dictionaries
+    :param parNames: list of parameter names expected
+    :return: list of dictionaries in parFile
+    """
+
+    with open(parFile, 'r') as fle:
+
+        parsList = json.load(fle)
+        assert type(parsList) == list, 'Parameter file does not contain a list of dictionaries as is the requirement.'
+        for parInd, par in enumerate(parsList):
+            assert type(par) == dict, 'Parameter set # {} in {} not a list'.format(parInd, parFile)
+
+            for pn in parNames:
+                assert pn in par, 'Parameter {} not found in ' \
+                                  'parameter set # {} of {} is improper'.format(pn, parInd, parFile)
+
+    return parsList

+ 58 - 0
regmaxsn/core/occupancyBasedMeasure.py

@@ -0,0 +1,58 @@
+import numpy as np
+from collections import Counter
+from pyemd import emd
+
+def calcOccupancyDistribution(swcList, voxelSize):
+    """
+    Returns the distribution of the sum of voxel occupancies across swcs in swcList.
+    Voxel occupancy of a voxel is 1 if an swc has an node in the voxel, otherwise 0.
+    :param swcList: list of valid SWC files on the file system
+    :param voxelSize: float, voxel size to discretize space.
+    :return: dict with voxel occupancy and its normalized frequency as key-value pairs
+    """
+
+    voxels = []
+    for swc in swcList:
+        aPts = np.loadtxt(swc)[:, 2:5]
+        aVox = np.array(aPts / voxelSize, np.int32)
+        aVoxSet = set(map(tuple, aVox))
+        voxels.extend(list(aVoxSet))
+
+    voxelCounter = Counter(voxels)
+    counts = voxelCounter.values()
+
+    bins = np.arange(1, len(swcList) + 2) - 0.5
+
+    hist, bins = np.histogram(counts, bins)
+
+    histWeighted = hist * (bins[:-1] + 0.5)
+
+    histNormed = histWeighted / float(sum(histWeighted))
+
+    return dict(zip(np.arange(1, len(swcList) + 1), histNormed))
+
+
+def occupancyEMD(swcList, voxelSize):
+    """
+    Calculate the EMD between the occupancy distributions (see calcOccupancyDistribution above) of
+    swcList and that of perfect overlap (1 at len(swcList) and zero elsewhere)
+    :param swcList: list of valid SWC files on the file system
+    :param voxelSize: float, voxel size for discretizing space.
+    :return: float, emd value
+    """
+
+    occupancyDistributionDict = calcOccupancyDistribution(swcList, voxelSize)
+    bins = np.arange(1, len(swcList) + 1)
+    occupancyDistribution = [occupancyDistributionDict[x] for x in bins]
+    perfectOverlapDist = np.zeros(bins.shape)
+    perfectOverlapDist[-1] = 1
+
+    binsRow = bins.reshape((1, bins.shape[0]))
+    distMetric = np.dot(np.ones((bins.shape[0], 1)), binsRow) - binsRow.T
+
+    emd_val = emd(np.asarray(occupancyDistribution, dtype=np.float64),
+                  np.asarray(perfectOverlapDist, dtype=np.float64),
+                  np.asarray(distMetric, dtype=np.float64))
+    return emd_val
+
+

+ 163 - 0
regmaxsn/core/plotDensities.py

@@ -0,0 +1,163 @@
+from .swcFuncs import resampleSWC, digitizeSWCXYZ, getPCADetails, readSWC_numpy, writeSWC_numpy
+import numpy as np
+import os
+from scipy.ndimage import gaussian_filter
+import tifffile
+
+class DensityVizualizations(object):
+
+    def __init__(self, swcSet, gridUnitSizes, resampleLen,
+                 masks=None, pcaView=None, refSWC=None, initTrans=None):
+        if initTrans is None:
+            initTrans = np.eye(3)
+
+        self.gridUnitSizes = np.array(gridUnitSizes)
+
+        if masks is None:
+            masks = [None] * len(swcSet)
+        else:
+            assert len(masks) == len(swcSet), 'Improper value for masks1'
+
+
+        minXYZs = []
+        maxXYZs = []
+        self.transMat = np.eye(4)
+        datas = {}
+
+        for swcInd, swcFile in enumerate(swcSet):
+            print('Resamping ' + swcFile)
+            totalLen, data = resampleSWC(swcFile, resampleLen, mask=masks[swcInd])
+            dataT = np.dot(initTrans, data[:, :3].T).T
+            datas[swcFile] = dataT
+        self.transMat[:3, :3] = initTrans
+
+        allData = np.concatenate(tuple(datas.itervalues()), axis=0)
+        self.allDataMean = allData.mean(axis=0)
+
+        if pcaView == 'closestPCMatch':
+            evecs, newStds = getPCADetails(None, center=True, data=allData)
+            mean2Use = self.allDataMean
+
+            if refSWC:
+                refEvecs, thrash = getPCADetails(refSWC, center=True)
+                fEvecs = np.empty_like(refEvecs)
+                coreff = np.dot(refEvecs.T, evecs)
+                possInds = range(refEvecs.shape[1])
+                for rowInd in range(refEvecs.shape[1]):
+                    bestCorrInd = np.argmax(np.abs(coreff[rowInd, possInds]))
+                    fEvecs[:, rowInd] = np.sign(coreff[rowInd, possInds[bestCorrInd]]) * evecs[:, possInds[bestCorrInd]]
+                    possInds.pop(int(bestCorrInd))
+
+
+
+            else:
+                fEvecs = evecs
+
+        elif pcaView == 'assumeRegistered':
+
+            if refSWC:
+                refEvecs, thrash = getPCADetails(refSWC, center=True)
+                fEvecs = refEvecs
+                mean2Use = np.loadtxt(refSWC)[:, 2:5].mean(axis=0)
+
+            else:
+                raise(ValueError('RefSWC must be specified when pcaView == \'assumeRegistered\''))
+
+        else:
+            fEvecs = np.eye(3)
+            mean2Use = self.allDataMean
+
+
+        self.digDatas = {}
+        for swcFile, data in datas.iteritems():
+            print('Digitizing ' + swcFile)
+            data -= mean2Use
+            data = np.dot(fEvecs.T, data.T).T
+            digData = digitizeSWCXYZ(data + mean2Use, gridUnitSizes)
+            self.digDatas[swcFile] = digData
+            minXYZs.append(digData[:, :3].min(axis=0))
+            maxXYZs.append(digData[:, :3].max(axis=0))
+
+        temp = np.eye(4)
+        temp[:3, 3] = -mean2Use
+        self.transMat = np.dot(temp, self.transMat)
+
+        temp = np.eye(4)
+        temp[:3, :3] = fEvecs.T
+        self.transMat = np.dot(temp, self.transMat)
+
+        self.transMat[:3, 3] += mean2Use
+
+        self.minXYZ = np.array(minXYZs).min(axis=0) - 20
+        self.maxXYZ = np.array(maxXYZs).max(axis=0) + 20
+
+        self.bins = [np.arange(x, y + 1) * z for x, y, z in zip(self.minXYZ, self.maxXYZ, self.gridUnitSizes)]
+
+
+
+    def calculateDensity(self, swcFiles, sigmas):
+
+        assert all(np.greater_equal(sigmas, self.gridUnitSizes)), 'sigma along every dimenstion must be larger than gridUnitSize'
+
+        digSigs = np.around(np.array(sigmas) / self.gridUnitSizes)
+
+        densityMatSum = np.zeros(tuple((self.maxXYZ - self.minXYZ).tolist()))
+
+
+        for swcFile in swcFiles:
+
+            print('Calculating Density for ' + swcFile)
+            densityMat = np.zeros_like(densityMatSum)
+            print('Doing ' + os.path.split(swcFile)[1])
+            if swcFile in self.digDatas:
+                digDataTranslated = self.digDatas[swcFile][:, :3] - self.minXYZ
+            else:
+                raise(ValueError(swcFile + ' not initialized in constructing DensityVizualizations object'))
+            densityMat[digDataTranslated[:, 0], digDataTranslated[:, 1], digDataTranslated[:, 2]] = 1
+            densityMatSum += densityMat
+            del densityMat
+
+        densityMatSum /= float(len(swcFiles))
+        smoothDensityMat = gaussian_filter(densityMatSum, sigma=digSigs, truncate=3)
+        del densityMatSum
+        smoothDensityMat *= (2 ** 1.5) * digSigs.prod()
+
+        smoothDensityMat[smoothDensityMat > 1] = 1
+        smoothDensityMat[smoothDensityMat < 0] = 0
+
+        return smoothDensityMat, self.bins
+
+    def generateDensityColoredSSWC(self, swcFiles, outFiles, density=None, sigmas=None):
+
+        if density is None:
+            density, bins = self.calculateDensity(swcFiles, sigmas)
+
+        for swcInd, swcFile in enumerate(swcFiles):
+
+            headr, data = readSWC_numpy(swcFile)
+            dataXYZ = data[:, 2:5]
+            rotData = np.dot(self.transMat[:3, :3], dataXYZ.T).T + self.transMat[:3, 3]
+            digData = digitizeSWCXYZ(rotData, self.gridUnitSizes)
+            digDataTranslated = digData - self.minXYZ
+            colorInds = [density[x[0], x[1], x[2]] for x in digDataTranslated]
+            colorInds = np.reshape(colorInds, (len(colorInds), 1))
+            colorInds[colorInds > 1] = 1
+            colorInds[colorInds < 0] = 0
+
+            # data[:, 2:5] = rotData
+            outData = np.concatenate((data, colorInds), axis=1)
+
+            writeSWC_numpy(outFiles[swcInd], outData, headr)
+
+
+def writeTIFF(density, outFile):
+
+    assert type(density) is np.ndarray, 'density must be a numpy ndarray'
+    assert len(density.shape) == 3, 'density must a 3d numpy array'
+    densityUInt8 = np.array(density * 255, dtype=np.uint8)
+    tiffArgs = {
+                'compress': 0,
+                # 'planarconfig': 'planar',
+                'photometric': 'minisblack'
+                }
+    tifffile.imsave(outFile + '.tiff', densityUInt8, **tiffArgs)

+ 119 - 0
regmaxsn/core/rotOnce.py

@@ -0,0 +1,119 @@
+from SWCTransforms import SWCRotate, ArgGenIterator, objFun
+import multiprocessing as mp
+import numpy as np
+import json
+import sys
+from itertools import product
+from regmaxsn.core.transforms import compose_matrix
+
+debugging = False
+# debugging = True
+
+
+assert len(sys.argv) == 2, 'Only one argument, the path of the swcfile expected, ' + str(len(sys.argv)) + 'found'
+
+parFile = sys.argv[1]
+with open(parFile, 'r') as fle:
+    pars = json.load(fle)
+
+refSWC, SWC2Align, outFiles, gridSizes, bounds, minRes, nCPU = pars
+
+data = np.loadtxt(SWC2Align)[:, 2:5]
+dataCentered = data - data.mean(axis=0)
+maxDist = np.linalg.norm(data, axis=1).max()
+pool = mp.Pool(processes=nCPU)
+
+SWCDatas = [SWCRotate(refSWC, SWC2Align, x) for x in gridSizes]
+stepSizes = [max(x / maxDist, minRes) for x in gridSizes]
+
+bestSol = [0, 0, 0]
+
+for gridInd, gridSize in enumerate(gridSizes):
+
+    if debugging:
+        print('Gridsize:' + str(gridSize))
+    stepSize = stepSizes[gridInd]
+    if debugging:
+        print('Stepsize: ' + str(np.rad2deg(stepSize)))
+    bounds = (np.array(bounds).T - np.array(bestSol)).T
+    boundsRoundedUp = np.sign(bounds) * np.ceil(np.abs(bounds) / stepSize) * stepSize
+    possiblePts1D = [np.round(bestSol[ind] + np.arange(x[0], x[1] + stepSize, stepSize), 3).tolist()
+                     for ind, x in enumerate(boundsRoundedUp)]
+    if debugging:
+        print(np.rad2deg([bestSol[ind] + x for ind, x in enumerate(boundsRoundedUp)]))
+    possiblePts3D = np.round(list(product(*possiblePts1D)), 6).tolist()
+    argGen = ArgGenIterator(possiblePts3D, SWCDatas[gridInd])
+    funcVals = pool.map_async(objFun, argGen).get(1800)
+    minimum = min(funcVals)
+    minimzers = [y for x, y in enumerate(possiblePts3D) if funcVals[x] == minimum]
+
+    if not gridInd:
+        distFrom0 = np.linalg.norm(minimzers, axis=1)
+        bestSol = minimzers[np.argmin(distFrom0)]
+    else:
+
+        prevVals = [objFun((x, SWCDatas[gridInd - 1])) for x in minimzers]
+        bestSol = minimzers[np.argmin(prevVals)]
+    bounds = map(lambda x: [x - np.sqrt(2) * stepSize, x + np.sqrt(2) * stepSize], bestSol)
+
+    if debugging:
+        bestVal = objFun((bestSol, SWCDatas[gridInd]))
+        print(np.rad2deg(bestSol), bestVal)
+
+
+if minRes < stepSizes[-1]:
+
+    if debugging:
+        print('Stepsize: ' + str(np.rad2deg(minRes)))
+    bounds = (np.array(bounds).T - np.array(bestSol)).T
+    boundsRoundedUp = np.sign(bounds) * np.ceil(np.abs(bounds) / minRes) * minRes
+    if debugging:
+        print(np.rad2deg([bestSol[ind] + x for ind, x in enumerate(boundsRoundedUp)]))
+    possiblePts1D = [np.round(bestSol[ind] + np.arange(x[0], x[1] + minRes, minRes), 3).tolist()
+                     for ind, x in enumerate(boundsRoundedUp)]
+    possiblePts3D = np.round(list(product(*possiblePts1D)), 6).tolist()
+
+    argGen = ArgGenIterator(possiblePts3D, SWCDatas[-1])
+    funcVals = pool.map_async(objFun, argGen).get(1800)
+    minimum = min(funcVals)
+    minimzers = [y for x, y in enumerate(possiblePts3D) if funcVals[x] == minimum]
+    prevVals = [objFun((x, SWCDatas[-2])) for x in minimzers]
+    bestSol = minimzers[np.argmin(prevVals)]
+    if debugging:
+        bestVal = objFun((bestSol, SWCDatas[-1]))
+        print(np.rad2deg(bestSol), bestVal)
+
+bestVal = objFun((bestSol, SWCDatas[-1]))
+nochange = objFun(([0, 0, 0], SWCDatas[-1]))
+if debugging:
+    print(np.rad2deg(bestSol), bestVal, nochange)
+
+
+done = False
+
+# all values are worse than doing nothing
+if bestVal > nochange:
+
+    done = True
+    bestSol = [0, 0, 0]
+    bestVal = nochange
+
+# best solution and no change are equally worse
+elif bestVal == nochange:
+
+    # the solution step is very close to zero
+    if np.abs(bestSol).max() <= min(minRes, stepSizes[-1]):
+
+        done = True
+        bestSol = [0, 0, 0]
+        bestVal = nochange
+
+
+
+SWCDatas[-1].writeSolution(outFiles[0], bestSol)
+matrix = compose_matrix(angles=bestSol).tolist()
+with open(outFiles[1], 'w') as fle:
+    json.dump({'type': 'XYZ Euler Angles in radians','bestSol': bestSol,
+               'transMat': matrix, 'done': done, 'bestVal': bestVal}, fle)
+
+

+ 134 - 0
regmaxsn/core/scaleOnce.py

@@ -0,0 +1,134 @@
+from SWCTransforms import SWCScale, SWCTranslate, ArgGenIterator, objFun
+import multiprocessing as mp
+import numpy as np
+import json
+import sys
+from itertools import product
+from regmaxsn.core.transforms import compose_matrix
+
+debugging = False
+# debugging = True
+
+assert len(sys.argv) == 2, 'Only one argument, the path of the swcfile expected, ' + str(len(sys.argv)) + 'found'
+
+parFile = sys.argv[1]
+with open(parFile, 'r') as fle:
+    pars = json.load(fle)
+
+refSWC, SWC2Align, outFiles, gridSizes, bounds, minStepSize, nCPU = pars
+
+initBounds = bounds
+boundL = lambda x, y: max(y[0], min(y[1], x))
+data = np.loadtxt(SWC2Align)[:, 2:5]
+dataCentered = data - data.mean(axis=0)
+maxDist = max(np.linalg.norm(dataCentered, axis=1).max(), gridSizes[0] * 1.01)
+pool = mp.Pool(processes=nCPU)
+
+SWCDatas = [SWCScale(refSWC, SWC2Align, x) for x in gridSizes]
+
+bestSol = [1.0, 1.0, 1.0]
+
+stepSizes = [max(minStepSize, min(2.0, (maxDist / (maxDist - g)))) for g in gridSizes]
+if debugging:
+    print(maxDist, [(maxDist / (maxDist - g)) for g in gridSizes])
+
+overestimationError = lambda d, g: (d + g) / d
+underestimationError = lambda d, g: ((d + 1.5 * g) * d) / ((d - 0.5 * g) * (d + g))
+
+for gridInd, gridSize in enumerate(gridSizes):
+
+
+    stepSize = stepSizes[gridInd]
+    bounds = np.array(bounds)
+    boundsExponents = np.log([x / y for x, y in zip(bounds, bestSol)]) / np.log(stepSize)
+    boundsExponentsRoundedDown = np.sign(boundsExponents) * np.ceil(np.abs(boundsExponents))
+
+    possiblePts1D = [(bestSol[x] * (stepSize ** np.arange(int(y[0]), int(y[1]) + 1)))
+                        for x, y in enumerate(boundsExponentsRoundedDown)]
+    if debugging:
+        print(stepSize)
+        print('Gridsize:' + str(gridSize))
+        print(bounds)
+        print(map(len, possiblePts1D))
+        print([bestSol[x] * (stepSize ** y) for x, y in enumerate(boundsExponentsRoundedDown)])
+    possiblePts3D = np.round(list(product(*possiblePts1D)), 6).tolist()
+    argGen = ArgGenIterator(possiblePts3D, SWCDatas[gridInd])
+    funcVals = pool.map_async(objFun, argGen).get(1800)
+    minimum = min(funcVals)
+    minimzers = [y for x, y in enumerate(possiblePts3D) if funcVals[x] == minimum]
+
+    if not gridInd:
+
+        distFrom0 = [np.mean([max(x, 1 / x) for x in y]) for y in minimzers]
+        bestSol = minimzers[np.argmin(distFrom0)]
+    else:
+
+        prevVals = [objFun((x, SWCDatas[gridInd - 1])) for x in minimzers]
+        bestSol = minimzers[np.argmin(prevVals)]
+    bounds = [[boundL(x / overestimationError(maxDist, gridSize), iB),
+               boundL(x * underestimationError(maxDist, gridSize), iB)]
+              for x, iB in zip(bestSol, initBounds)]
+
+    if debugging:
+        print(bestSol)
+
+
+if stepSizes[-1] > minStepSize:
+
+    stepSize = minStepSize
+    bounds = np.array(bounds)
+
+    boundsExponents = np.log([x / y for x, y in zip(bounds, bestSol)]) / np.log(stepSize)
+    boundsExponentsRoundedDown = np.sign(boundsExponents) * np.ceil(np.abs(boundsExponents))
+    possiblePts1D = [(bestSol[x] * (stepSize ** np.arange(int(y[0]), int(y[1]) + 1)))
+        for x, y in enumerate(boundsExponentsRoundedDown)]
+    if debugging:
+        print(stepSize)
+        print(bounds)
+        print(map(len, possiblePts1D))
+        print([bestSol[x] * (stepSize ** y) for x, y in enumerate(boundsExponentsRoundedDown)])
+    possiblePts3D = np.round(list(product(*possiblePts1D)), 6).tolist()
+    argGen = ArgGenIterator(possiblePts3D, SWCDatas[-1])
+    funcVals = pool.map_async(objFun, argGen).get(1800)
+    minimum = min(funcVals)
+    minimzers = [y for x, y in enumerate(possiblePts3D) if funcVals[x] == minimum]
+    prevVals = [objFun((x, SWCDatas[-2])) for x in minimzers]
+    bestSol = minimzers[np.argmin(prevVals)]
+    if debugging:
+        print(bestSol, min(funcVals))
+
+bestVal = objFun((bestSol, SWCDatas[-1]))
+nochange = objFun(([1, 1, 1], SWCDatas[-1]))
+
+if debugging:
+    bestVals = [objFun((bestSol, x)) for x in SWCDatas]
+    print(bestSol, nochange, bestVal)
+
+done = False
+
+# all values are worse than doing nothing
+if bestVal > nochange:
+
+    done = True
+    bestSol = [1, 1, 1]
+    bestVal = nochange
+
+# best solution and no change are equally worse
+elif bestVal == nochange:
+
+    # the solution step is very close to zero
+    if np.abs(bestSol).max() <= min(minStepSize, stepSizes[-1]):
+        done = True
+        bestSol = [1, 1, 1]
+        bestVal = nochange
+
+
+SWCDatas[-1].writeSolution(outFiles[0], bestSol)
+temp = SWCTranslate(refSWC, outFiles[0], gridSizes[-1])
+bestVal = objFun(([0, 0, 0], temp))
+matrix = compose_matrix(scale=bestSol).tolist()
+with open(outFiles[1], 'w') as fle:
+    json.dump({'type': 'XYZ Scales', 'bestSol': bestSol,
+               'transMat': matrix, 'done': done, 'bestVal': bestVal}, fle)
+
+

+ 205 - 0
regmaxsn/core/swcFuncs.py

@@ -0,0 +1,205 @@
+import numpy as np
+
+#***********************************************************************************************************************
+
+
+def readSWC_numpy(swcFile):
+    '''
+    Read the return the header and matrix data in a swcFile
+    :param swcFile: filename
+    :return: header (string), matrix data (ndarray)
+    '''
+    headr = ''
+    with open(swcFile, 'r') as fle:
+        lne = fle.readline()
+        while lne[0] == '#':
+            headr = headr + lne[1:]
+            lne = fle.readline()
+
+    headr = headr.rstrip('\n')
+
+    swcData = np.loadtxt(swcFile)
+
+    return headr, swcData
+
+#***********************************************************************************************************************
+
+
+def writeSWC_numpy(fName, swcData, headr=''):
+    '''
+    Write the SWC data in swcData to the file fName with the header headr
+    :param fName: string
+    :param swcData: 2D numpy.ndarray with 7 or 8 columns
+    :param headr: string
+    :return:
+    '''
+
+    swcData = np.array(swcData)
+    assert swcData.shape[1] in [7, 8], 'Width given SWC Matrix data is incompatible.'
+
+
+    formatStr = '%d %d %0.6f %0.6f %0.6f %0.6f %d'
+
+    if swcData.shape[1] == 8:
+         formatStr += ' %0.6f'
+
+    np.savetxt(fName, swcData, formatStr, header=headr, comments='#')
+
+#***********************************************************************************************************************
+
+
+def transSWC(fName, A, b, destFle):
+    '''
+    Generate an SWC file at destFle with each point `x' of the morphology in fName transformed Affinely as Ax+b
+    :param fName: string
+    :param A: 2D numpy.ndarray of shape (3, 3)
+    :param b: 3 member iterable
+    :param destFle: string
+    :return:
+    '''
+
+    headr = ''
+    with open(fName, 'r') as fle:
+        lne = fle.readline()
+        while lne[0] == '#':
+            headr = headr + lne[1:]
+            lne = fle.readline()
+
+    data = np.loadtxt(fName)
+    data[:, 2:5] = np.dot(A, data[:, 2:5].T).T + np.array(b)
+
+    if data.shape[1] == 7:
+        formatStr = '%d %d %0.3f %0.3f %0.3f %0.3f %d'
+    elif data.shape[1] == 8:
+        formatStr = '%d %d %0.3f %0.3f %0.3f %0.3f %d %d'
+    else:
+        raise(TypeError('Data in the input file is of unknown format.'))
+
+    np.savetxt(destFle, data, header=headr, fmt=formatStr)
+
+#***********************************************************************************************************************
+
+
+def transSWC_rotAboutPoint(fName, A, b, destFle, point):
+    '''
+    Generate an SWC file at destFle with each point `x' of the morphology in fName transformed Affinely as A(x-mu)+b
+    where mu is a specified point.
+    Essentially, the morphology is centered at a specified point before being Affinely transformed.
+    :param fName: string
+    :param A: 2D numpy.ndarray of shape (3, 3)
+    :param b: 3 member iterable
+    :param destFle: string
+    :param point: 3 member iterable
+    :return:
+    '''
+
+    headr = ''
+    with open(fName, 'r') as fle:
+        lne = fle.readline()
+        while lne[0] == '#':
+            headr = headr + lne[1:]
+            lne = fle.readline()
+
+    data = np.loadtxt(fName)
+    pts = data[:, 2:5]
+    rotAbout = np.array(point)
+    ptsCentered = pts - rotAbout
+    data[:, 2:5] = np.dot(A, ptsCentered.T).T + np.array(b) + rotAbout
+
+    if data.shape[1] == 7:
+        formatStr = '%d %d %0.3f %0.3f %0.3f %0.3f %d'
+    elif data.shape[1] == 8:
+        formatStr = '%d %d %0.3f %0.3f %0.3f %0.3f %d %d'
+    else:
+        raise(TypeError('Data in the input file is of unknown format.'))
+
+    np.savetxt(destFle, data, header=headr, fmt=formatStr)
+#***********************************************************************************************************************
+
+def getPCADetails(swcFileName, center=True, data=None):
+    '''
+    Returns the principal components and standard deviations along the principal components.
+    Ref: http://arxiv.org/pdf/1404.1100.pdf
+    :param swcFileName: sting, input SWC file name
+    :param center: Boolean,  if True, data is centered before calculating PCA
+    :param data: numpy ndarray of shape [<>, 3]
+    :return: PC, STDs
+    PC: numpy.ndarray with the prinicial components of the data in its columns
+    STDs: 3 member float iterable containing the standard variances of the data along the prinicipal components.
+    '''
+
+    if data is None:
+        data = np.loadtxt(swcFileName)[:, 2:5]
+    if center:
+        mu = np.mean(data, axis=0)
+        data = data - mu
+    U, S, V = np.linalg.svd(data.T)
+    dataProj = np.dot(U, data.T).T
+    newStds = np.std(dataProj, axis=0)
+    return U.T, newStds
+#***********************************************************************************************************************
+
+# **********************************************************************************************************************
+
+def digitizeSWCXYZ(swcXYZ, gridUnitSizes):
+
+    digSWCXYZ = np.empty_like(swcXYZ, dtype=np.intp)
+    for ind in range(3):
+        digSWCXYZ[:, ind] = np.array(np.around((swcXYZ[:, ind]) / gridUnitSizes[ind]), np.int)
+
+    return digSWCXYZ
+
+# **********************************************************************************************************************
+
+def resampleSWC(swcFile, resampleLength, mask=None, swcData=None):
+    '''
+    Resample the SWC points to place points at every resamplelength along the central line of every segment. Radii are interpolated.
+    :param swcData: nx4 swc point data
+    :param resampleLength: length at with resampling is done.
+    :return: totlLen, ndarray of shape (#pts, 4) with each row containing XYZR values
+    '''
+
+    if swcData is  None:
+        swcData = np.loadtxt(swcFile)
+    inds = swcData[:, 0].tolist()
+
+    if mask is None:
+        mask = [True] * swcData.shape[0]
+    else:
+        assert len(mask) == swcData.shape[0], 'Supplied mask is invalid for ' + swcFile
+    resampledSWCData = []
+
+    getSegLen = lambda a, b: np.linalg.norm(a - b)
+
+    totalLen = 0
+    for pt in swcData:
+
+        if pt[6] < 0:
+            if mask[inds.index(int(pt[0]))]:
+                resampledSWCData.append(pt[2:6])
+
+        if (pt[6] > 0) and (int(pt[6]) in inds):
+            if mask[inds.index(int(pt[0]))]:
+                resampledSWCData.append(pt[2:6])
+
+
+                parentPt = swcData[inds.index(pt[6]), :]
+                segLen = getSegLen(pt[2:5], parentPt[2:5])
+                totalLen += segLen
+
+                if segLen > resampleLength:
+
+                    temp = parentPt[2:5] - pt[2:5]
+                    distTemp = np.linalg.norm(temp)
+                    unitDirection = temp / distTemp
+                    radGrad = (pt[5] - parentPt[5]) / distTemp
+
+                    for newPtsInd in range(1, int(np.floor(segLen / resampleLength)) + 1):
+
+                        temp = (pt[2:5] + newPtsInd * resampleLength * unitDirection).tolist()
+                        temp.append(pt[5] + newPtsInd * radGrad * resampleLength)
+                        resampledSWCData.append(temp)
+
+    return totalLen, np.array(resampledSWCData)
+
+# **********************************************************************************************************************

+ 112 - 0
regmaxsn/core/transOnce.py

@@ -0,0 +1,112 @@
+from SWCTransforms import SWCTranslate, ArgGenIterator, objFun
+import multiprocessing as mp
+import numpy as np
+import json
+import sys
+from itertools import product
+from regmaxsn.core.transforms import compose_matrix
+
+debugging = False
+# debugging = True
+
+assert len(sys.argv) == 2, 'Only one argument, the path of the swcfile expected, ' + str(len(sys.argv)) + 'found'
+
+parFile = sys.argv[1]
+with open(parFile, 'r') as fle:
+    pars = json.load(fle)
+
+refSWC, SWC2Align, outFiles, gridSizes, bounds, minRes, nCPU = pars
+
+SWCDatas = [SWCTranslate(refSWC, SWC2Align, x) for x in gridSizes]
+pool = mp.Pool(processes=nCPU)
+bestSol = [0, 0, 0]
+
+for gridInd, gridSize in enumerate(gridSizes):
+
+
+    bounds = (np.array(bounds).T - np.array(bestSol)).T
+    boundsRoundedUp = np.sign(bounds) * np.ceil(np.abs(bounds) / gridSize) * gridSize
+    possiblePts1D = [(bestSol[ind] + np.arange(x[0], x[1] + gridSize, gridSize)).tolist()
+                     for ind, x in enumerate(boundsRoundedUp)]
+
+    possiblePts3D = list(product(*possiblePts1D))
+    if debugging:
+        print('Gridsize:' + str(gridSize))
+        print(bounds)
+        print(map(len, possiblePts1D))
+        print([bestSol[ind] + x for ind, x in enumerate(boundsRoundedUp)])
+
+    argGen = ArgGenIterator(possiblePts3D, SWCDatas[gridInd])
+    funcVals = pool.map_async(objFun, argGen).get(1800)
+    minimum = min(funcVals)
+    minimzers = [y for x, y in enumerate(possiblePts3D) if funcVals[x] == minimum]
+
+    if not gridInd:
+        distFrom0 = np.linalg.norm(minimzers, axis=1)
+        bestSol = minimzers[np.argmin(distFrom0)]
+    else:
+
+        prevVals = [objFun((x, SWCDatas[gridInd - 1])) for x in minimzers]
+        bestSol = minimzers[np.argmin(prevVals)]
+    bounds = map(lambda x: [x - gridSize, x + gridSize], bestSol)
+    if debugging:
+        bestVal = objFun((bestSol, SWCDatas[gridInd]))
+        print(bestSol, bestVal)
+
+if minRes < gridSizes[-1]:
+
+    bounds = (np.array(bounds).T - np.array(bestSol)).T
+    boundsRoundedUp = np.sign(bounds) * np.ceil(np.abs(bounds) / minRes) * minRes
+    possiblePts1D = [(bestSol[ind] + np.arange(x[0], x[1] + minRes, minRes)).tolist()
+                     for ind, x in enumerate(boundsRoundedUp)]
+    possiblePts3D = list(product(*possiblePts1D))
+
+    if debugging:
+        print('StepSize:' + str(minRes))
+        print(bounds)
+        print(map(len, possiblePts1D))
+        print([bestSol[ind] + x for ind, x in enumerate(boundsRoundedUp)])
+
+    argGen = ArgGenIterator(possiblePts3D, SWCDatas[-1])
+    funcVals = pool.map_async(objFun, argGen).get(1800)
+
+    minimum = min(funcVals)
+
+    minimzers = [y for x, y in enumerate(possiblePts3D) if funcVals[x] == minimum]
+    prevVals = [objFun((x, SWCDatas[-2])) for x in minimzers]
+    bestSol = minimzers[np.argmin(prevVals)]
+
+bestVal = objFun((bestSol, SWCDatas[-1]))
+nochange = objFun(([0, 0, 0], SWCDatas[-1]))
+if debugging:
+    bestVals = [objFun((bestSol, x)) for x in SWCDatas]
+    print(bestSol, bestVals)
+
+done = False
+
+# all values are worse than doing nothing
+if bestVal > nochange:
+
+    done = True
+    bestSol = [0, 0, 0]
+    bestVal = nochange
+
+# best solution and no change are equally worse
+elif bestVal == nochange:
+
+    # the solution step is very close to zero
+    if np.abs(bestSol).max() <= min(minRes, gridSizes[-1]):
+
+        done = True
+        bestSol = [0, 0, 0]
+        bestVal = nochange
+
+
+
+SWCDatas[-1].writeSolution(outFiles[0], bestSol)
+matrix = compose_matrix(translate=bestSol).tolist()
+with open(outFiles[1], 'w') as fle:
+    json.dump({'type': 'XYZ Translations in um','bestSol': bestSol,
+               'transMat': matrix, 'done': done, 'bestVal': bestVal}, fle)
+
+

+ 0 - 0
regmaxsn/core/transforms.py


Some files were not shown because too many files changed in this diff