diff --git a/.aicodeprep-gui b/.aicodeprep-gui new file mode 100644 index 0000000..91ca42f --- /dev/null +++ b/.aicodeprep-gui @@ -0,0 +1,25 @@ +# .aicodeprep-gui LLM/AI context helper settings file +# This file stores your preferences (checked code files, window size) for this folder. +# Generated by aicodeprep-gui. +# Homepage: https://wuu73.org/aicp +# GitHub: https://github.com/detroittommy879/aicodeprep-gui +# ---------------------------------------------------------- +# aicodeprep-gui preferences file version 1.0 +version=1.0 + +[window] +width=1200 +height=935 +splitter_state=AAAA/wAAAAEAAAACAAADAAAAAPoB/////wEAAAACAA== + +[format] +output_format=xml + +[pro] +preview_window_enabled=false +syntax_highlight_enabled=false + +[files] +saxstats/__init__.py +denss/core.py +denss/scripts/denss_all.py diff --git a/6lyz.dat b/6lyz.dat deleted file mode 100644 index 7ae33f4..0000000 --- a/6lyz.dat +++ /dev/null @@ -1,1001 +0,0 @@ -0.00000 68517072.00000000 14388.58496094 -0.00100 68512672.00000000 22609.18164062 -0.00200 68499000.00000000 33907.00781250 -0.00300 68475592.00000000 49302.42578125 -0.00400 68442896.00000000 61598.60937500 -0.00500 68400936.00000000 73873.01562500 -0.00600 68349816.00000000 71767.30468750 -0.00700 68289288.00000000 81947.14843750 -0.00800 68219544.00000000 110515.66406250 -0.00900 68140592.00000000 132874.15625000 -0.01000 68052672.00000000 134744.29687500 -0.01100 67955744.00000000 134552.39062500 -0.01200 67849296.00000000 198459.18750000 -0.01300 67734048.00000000 213362.25000000 -0.01400 67609760.00000000 197758.54687500 -0.01500 67476576.00000000 226721.29687500 -0.01600 67334232.00000000 188872.53125000 -0.01700 67183304.00000000 199534.42187500 -0.01800 67023344.00000000 229219.84375000 -0.01900 66854744.00000000 200564.25000000 -0.02000 66677560.00000000 378061.78125000 -0.02100 66491580.00000000 307191.12500000 -0.02200 66297072.00000000 228724.92187500 -0.02300 66094268.00000000 309321.18750000 -0.02400 65883048.00000000 321179.87500000 -0.02500 65663448.00000000 358522.43750000 -0.02600 65435596.00000000 371019.84375000 -0.02700 65199736.00000000 355990.56250000 -0.02800 64955620.00000000 310812.65625000 -0.02900 64703716.00000000 349400.09375000 -0.03000 64443792.00000000 329630.00000000 -0.03100 64176328.00000000 431264.93750000 -0.03200 63901096.00000000 347941.46875000 -0.03300 63618356.00000000 356898.96875000 -0.03400 63328184.00000000 332472.96875000 -0.03500 63030448.00000000 340364.40625000 -0.03600 62725592.00000000 382939.75000000 -0.03700 62413588.00000000 391333.18750000 -0.03800 62094632.00000000 435904.34375000 -0.03900 61768832.00000000 444735.59375000 -0.04000 61436228.00000000 604532.50000000 -0.04100 61096880.00000000 461892.43750000 -0.04200 60751064.00000000 391844.40625000 -0.04300 60398888.00000000 398632.68750000 -0.04400 60040444.00000000 486327.62500000 -0.04500 59675792.00000000 535291.87500000 -0.04600 59305100.00000000 627151.50000000 -0.04700 58928476.00000000 551570.56250000 -0.04800 58546228.00000000 516377.75000000 -0.04900 58158364.00000000 436187.75000000 -0.05000 57765008.00000000 662853.50000000 -0.05100 57366316.00000000 805423.12500000 -0.05200 56962496.00000000 452851.84375000 -0.05300 56553368.00000000 458082.31250000 -0.05400 56139552.00000000 509466.43750000 -0.05500 55720972.00000000 655278.68750000 -0.05600 55297652.00000000 520074.43750000 -0.05700 54869836.00000000 572841.12500000 -0.05800 54437852.00000000 722662.50000000 -0.05900 54001600.00000000 583217.31250000 -0.06000 53561040.00000000 588100.25000000 -0.06100 53116960.00000000 740981.62500000 -0.06200 52668948.00000000 796354.50000000 -0.06300 52217560.00000000 501288.59375000 -0.06400 51762496.00000000 504684.37500000 -0.06500 51304016.00000000 660282.75000000 -0.06600 50842624.00000000 562065.18750000 -0.06700 50377980.00000000 616626.50000000 -0.06800 49910728.00000000 671548.87500000 -0.06900 49440824.00000000 934431.62500000 -0.07000 48968088.00000000 573661.12500000 -0.07100 48493064.00000000 576097.62500000 -0.07200 48015732.00000000 525772.31250000 -0.07300 47536476.00000000 685951.43750000 -0.07400 47055144.00000000 846992.62500000 -0.07500 46572032.00000000 849473.87500000 -0.07600 46087100.00000000 691997.87500000 -0.07700 45600740.00000000 906998.81250000 -0.07800 45113040.00000000 588048.50000000 -0.07900 44624084.00000000 589037.93750000 -0.08000 44134024.00000000 589851.25000000 -0.08100 43643092.00000000 805215.06250000 -0.08200 43151324.00000000 644680.81250000 -0.08300 42658796.00000000 1021251.62500000 -0.08400 42165748.00000000 645136.00000000 -0.08500 41672468.00000000 537574.81250000 -0.08600 41178856.00000000 752337.75000000 -0.08700 40685156.00000000 590748.50000000 -0.08800 40191504.00000000 536556.62500000 -0.08900 39698076.00000000 643108.81250000 -0.09000 39204744.00000000 802717.18750000 -0.09100 38712032.00000000 534226.06250000 -0.09200 38219640.00000000 639796.81250000 -0.09300 37728148.00000000 638360.25000000 -0.09400 37237248.00000000 636757.00000000 -0.09500 36747424.00000000 793744.43750000 -0.09600 36258592.00000000 738587.50000000 -0.09700 35770972.00000000 683583.31250000 -0.09800 35284576.00000000 523975.96875000 -0.09900 34799712.00000000 835193.12500000 -0.10000 34316280.00000000 571880.81250000 -0.10100 33834504.00000000 776501.87500000 -0.10200 33354456.00000000 927587.50000000 -0.10300 32876224.00000000 718016.81250000 -0.10400 32399880.00000000 561327.93750000 -0.10500 31925836.00000000 609145.00000000 -0.10600 31453820.00000000 807734.12500000 -0.10700 30984086.00000000 803107.56250000 -0.10800 30516656.00000000 598736.81250000 -0.10900 30051742.00000000 644609.87500000 -0.11000 29589404.00000000 640462.68750000 -0.11100 29129622.00000000 489377.68750000 -0.11200 28672622.00000000 583201.12500000 -0.11300 28218480.00000000 530789.62500000 -0.11400 27767214.00000000 622679.81250000 -0.11500 27318990.00000000 522885.46875000 -0.11600 26873812.00000000 565962.50000000 -0.11700 26431810.00000000 514627.37500000 -0.11800 25992940.00000000 510371.40625000 -0.11900 25557402.00000000 506036.56250000 -0.12000 25125188.00000000 547226.62500000 -0.12100 24696572.00000000 497142.03125000 -0.12200 24271274.00000000 626927.06250000 -0.12300 23849660.00000000 709765.87500000 -0.12400 23431668.00000000 571146.93750000 -0.12500 23017222.00000000 565533.12500000 -0.12600 22606670.00000000 602919.87500000 -0.12700 22199814.00000000 468860.09375000 -0.12800 21796840.00000000 506122.65625000 -0.12900 21397866.00000000 417258.40625000 -0.13000 21002696.00000000 536513.93750000 -0.13100 20611570.00000000 448920.03125000 -0.13200 20224464.00000000 524521.50000000 -0.13300 19841440.00000000 518456.84375000 -0.13400 19462474.00000000 394115.09375000 -0.13500 19087720.00000000 584084.25000000 -0.13600 18717128.00000000 576955.50000000 -0.13700 18350782.00000000 455833.46875000 -0.13800 17988562.00000000 375061.56250000 -0.13900 17630732.00000000 703466.25000000 -0.14000 17277120.00000000 438493.31250000 -0.14100 16927884.00000000 432676.71875000 -0.14200 16582935.00000000 569126.37500000 -0.14300 16242337.00000000 421001.40625000 -0.14400 15906081.00000000 380553.00000000 -0.14500 15574258.00000000 375183.90625000 -0.14600 15246814.00000000 537907.62500000 -0.14700 14923807.00000000 364439.37500000 -0.14800 14605211.00000000 522282.34375000 -0.14900 14290986.00000000 418011.34375000 -0.15000 13981143.00000000 380007.46875000 -0.15100 13675763.00000000 405349.62500000 -0.15200 13374888.00000000 368344.43750000 -0.15300 13078361.00000000 453165.25000000 -0.15400 12786235.00000000 475648.00000000 -0.15500 12498563.00000000 321713.00000000 -0.15600 12215279.00000000 345203.78125000 -0.15700 11936444.00000000 396051.21875000 -0.15800 11661888.00000000 278136.03125000 -0.15900 11391833.00000000 300744.40625000 -0.16000 11126004.00000000 322431.62500000 -0.16100 10864666.00000000 343214.81250000 -0.16200 10607659.00000000 337164.43750000 -0.16300 10354864.00000000 280202.62500000 -0.16400 10106474.00000000 250135.23437500 -0.16500 9862263.00000000 343798.50000000 -0.16600 9622415.00000000 241041.51562500 -0.16700 9386682.00000000 496743.25000000 -0.16800 9155209.00000000 348126.84375000 -0.16900 8927957.00000000 295961.81250000 -0.17000 8704840.00000000 267934.96875000 -0.17100 8485814.00000000 284614.21875000 -0.17200 8270914.50000000 279019.31250000 -0.17300 8060071.00000000 315551.78125000 -0.17400 7853312.50000000 206149.46875000 -0.17500 7650496.50000000 262565.06250000 -0.17600 7451655.50000000 257193.90625000 -0.17700 7256795.50000000 232507.73437500 -0.17800 7065787.00000000 208688.01562500 -0.17900 6878664.50000000 260013.53125000 -0.18000 6695394.50000000 199957.96875000 -0.18100 6515958.00000000 266828.50000000 -0.18200 6340187.50000000 174038.15625000 -0.18300 6168171.00000000 221313.98437500 -0.18400 5999807.00000000 283040.90625000 -0.18500 5835122.00000000 260479.84375000 -0.18600 5673999.50000000 175071.26562500 -0.18700 5516426.00000000 202232.18750000 -0.18800 5362367.50000000 152023.12500000 -0.18900 5211821.00000000 163390.59375000 -0.19000 5064600.50000000 174120.98437500 -0.19100 4920873.00000000 212581.73437500 -0.19200 4780409.50000000 207589.28125000 -0.19300 4643317.00000000 148632.57812500 -0.19400 4509426.00000000 131900.71875000 -0.19500 4378744.00000000 128735.07812500 -0.19600 4251214.50000000 163310.40625000 -0.19700 4126822.25000000 134823.29687500 -0.19800 4005497.50000000 119564.10937500 -0.19900 3887214.75000000 139939.73437500 -0.20000 3771883.25000000 125094.50781250 -0.20100 3659507.75000000 121971.39843750 -0.20200 3549983.75000000 129716.41406250 -0.20300 3443347.00000000 126439.71093750 -0.20400 3339486.00000000 112958.11718750 -0.20500 3238388.00000000 100066.19531250 -0.20600 3139975.25000000 146244.35937500 -0.20700 3044246.00000000 161466.82812500 -0.20800 2951104.25000000 120272.25781250 -0.20900 2860589.25000000 90108.56250000 -0.21000 2772534.00000000 122850.98437500 -0.21100 2686973.00000000 93990.32031250 -0.21200 2603854.00000000 99831.76562500 -0.21300 2523102.75000000 113388.24218750 -0.21400 2444715.50000000 102494.70312500 -0.21500 2368638.00000000 84418.25781250 -0.21600 2294778.00000000 104573.03906250 -0.21700 2223175.50000000 94507.19531250 -0.21800 2153697.50000000 84898.75781250 -0.21900 2086315.50000000 75733.25781250 -0.22000 2021042.00000000 66997.54687500 -0.22100 1957832.37500000 78234.98437500 -0.22200 1896594.87500000 76129.32812500 -0.22300 1837298.87500000 61733.24218750 -0.22400 1779894.62500000 84100.02343750 -0.22500 1724417.12500000 70149.28906250 -0.22600 1670702.62500000 68264.91406250 -0.22700 1618823.12500000 66436.50781250 -0.22800 1568670.87500000 59272.23437500 -0.22900 1520194.87500000 57691.39843750 -0.23000 1473418.87500000 66370.15625000 -0.23100 1428275.87500000 64615.20312500 -0.23200 1384688.87500000 53234.36718750 -0.23300 1342675.00000000 75404.63281250 -0.23400 1302178.75000000 50491.98437500 -0.23500 1263106.75000000 44713.98046875 -0.23600 1225521.25000000 52280.73828125 -0.23700 1189328.87500000 72180.37500000 -0.23800 1154486.62500000 57943.68359375 -0.23900 1120973.50000000 60532.57031250 -0.24000 1088766.75000000 43294.81250000 -0.24100 1057846.62500000 46079.80078125 -0.24200 1028129.12500000 44970.37109375 -0.24300 999610.06250000 51220.02343750 -0.24400 972255.25000000 53595.57421875 -0.24500 946024.00000000 38399.11328125 -0.24600 920899.93750000 40943.21093750 -0.24700 896842.06250000 36698.77734375 -0.24800 873814.56250000 35900.67187500 -0.24900 851785.18750000 38330.33593750 -0.25000 830738.37500000 34405.03125000 -0.25100 810629.43750000 49026.87109375 -0.25200 791469.81250000 36043.53515625 -0.25300 773186.81250000 44187.62890625 -0.25400 755769.81250000 31799.01562500 -0.25500 739166.00000000 31222.37500000 -0.25600 723393.75000000 41830.24609375 -0.25700 708395.37500000 32897.88281250 -0.25800 694162.37500000 35058.67187500 -0.25900 680657.62500000 29200.21289062 -0.26000 667868.93750000 31376.48437500 -0.26100 655735.12500000 25770.39062500 -0.26200 644302.31250000 30501.27343750 -0.26300 633467.62500000 27593.85156250 -0.26400 623274.37500000 29730.18750000 -0.26500 613665.81250000 39176.42968750 -0.26600 604621.56250000 24215.09375000 -0.26700 596144.62500000 23965.01562500 -0.26800 588193.00000000 23733.58789062 -0.26900 580734.87500000 23519.76367188 -0.27000 573785.43750000 27989.25390625 -0.27100 567296.25000000 27774.82812500 -0.27200 561293.00000000 34477.42578125 -0.27300 555676.00000000 22838.28320312 -0.27400 550457.87500000 31788.94531250 -0.27500 545697.75000000 22591.88671875 -0.27600 541258.56250000 31485.01367188 -0.27700 537224.87500000 22402.27734375 -0.27800 533514.50000000 24560.34179688 -0.27900 530154.81250000 26719.80468750 -0.28000 527096.25000000 26660.52929688 -0.28100 524339.43750000 26615.47070312 -0.28200 521878.87500000 28799.88671875 -0.28300 519693.93750000 33208.44531250 -0.28400 517746.75000000 28773.77734375 -0.28500 516066.90625000 26567.12695312 -0.28600 514596.06250000 24368.69726562 -0.28700 513357.18750000 22177.03125000 -0.28800 512313.75000000 24429.68359375 -0.28900 511486.68750000 35599.47265625 -0.29000 510812.00000000 24526.64062500 -0.29100 510342.93750000 22353.02148438 -0.29200 510011.21875000 24656.49414062 -0.29300 509849.87500000 29229.69531250 -0.29400 509794.65625000 22558.41406250 -0.29500 509899.40625000 27167.44140625 -0.29600 510104.12500000 29542.68164062 -0.29700 510414.09375000 22815.51171875 -0.29800 510837.43750000 25202.16601562 -0.29900 511360.68750000 23011.23242188 -0.30000 511942.00000000 25425.59960938 -0.30100 512624.43750000 30188.45507812 -0.30200 513344.96875000 30330.98828125 -0.30300 514145.37500000 39856.55078125 -0.30400 515000.43750000 35341.90625000 -0.30500 515879.37500000 26046.75000000 -0.30600 516795.50000000 30937.96484375 -0.30700 517763.81250000 23920.68945312 -0.30800 518734.06250000 31256.32421875 -0.30900 519738.87500000 26584.64453125 -0.31000 520749.62500000 43727.34765625 -0.31100 521750.56250000 31743.30664062 -0.31200 522769.12500000 24544.01171875 -0.31300 523774.12500000 24669.76367188 -0.31400 524785.81250000 29755.35742188 -0.31500 525758.25000000 27413.03710938 -0.31600 526724.87500000 25045.76953125 -0.31700 527670.31250000 27686.86132812 -0.31800 528570.31250000 25292.09179688 -0.31900 529461.37500000 27955.56054688 -0.32000 530309.00000000 38301.57031250 -0.32100 531107.81250000 43609.26562500 -0.32200 531882.50000000 38654.56250000 -0.32300 532579.43750000 46590.05078125 -0.32400 533237.37500000 25995.32226562 -0.32500 533842.56250000 31325.88281250 -0.32600 534399.93750000 26212.31640625 -0.32700 534888.12500000 42106.39453125 -0.32800 535331.87500000 29060.49218750 -0.32900 535692.87500000 29168.47851562 -0.33000 536007.87500000 34596.62890625 -0.33100 536214.06250000 37384.84765625 -0.33200 536406.12500000 37510.88281250 -0.33300 536498.25000000 32254.27539062 -0.33400 536521.93750000 35048.29687500 -0.33500 536465.00000000 35149.18750000 -0.33600 536338.37500000 35245.48046875 -0.33700 536124.50000000 27181.51367188 -0.33800 535848.06250000 38147.02734375 -0.33900 535472.87500000 30040.02929688 -0.34000 535024.93750000 38313.13671875 -0.34100 534491.75000000 35645.25781250 -0.34200 533899.12500000 38456.75390625 -0.34300 533195.62500000 27512.89648438 -0.34400 532442.18750000 30309.27343750 -0.34500 531585.93750000 27589.31250000 -0.34600 530666.93750000 38669.70312500 -0.34700 529632.06250000 41470.19140625 -0.34800 528535.87500000 35969.51171875 -0.34900 527355.50000000 27686.16406250 -0.35000 526086.56250000 30468.30468750 -0.35100 524758.75000000 27707.26367188 -0.35200 523312.34375000 38793.14843750 -0.35300 521797.93750000 30478.21875000 -0.35400 520209.43750000 30471.26757812 -0.35500 518541.31250000 30459.11914062 -0.35600 516779.53125000 30440.89843750 -0.35700 514947.15625000 41478.99609375 -0.35800 513038.84375000 33152.57031250 -0.35900 511057.06250000 33116.50000000 -0.36000 509005.71875000 33075.19140625 -0.36100 506862.40625000 33027.15625000 -0.36200 504673.59375000 27479.47851562 -0.36300 502382.21875000 32916.08203125 -0.36400 500021.87500000 32851.43750000 -0.36500 497588.09375000 30049.34570312 -0.36600 495100.81250000 40882.95312500 -0.36700 492529.56250000 32625.16015625 -0.36800 489924.43750000 37964.24609375 -0.36900 487246.96875000 32450.65039062 -0.37000 484473.00000000 32353.10742188 -0.37100 481647.56250000 29563.52929688 -0.37200 478785.81250000 34824.48828125 -0.37300 475850.18750000 34703.75781250 -0.37400 472864.37500000 37238.07031250 -0.37500 469823.81250000 37097.29296875 -0.37600 466733.12500000 36951.26171875 -0.37700 463578.68750000 28913.40234375 -0.37800 460384.09375000 44493.82421875 -0.37900 457157.68750000 28663.78710938 -0.38000 453865.28125000 31126.08398438 -0.38100 450524.59375000 30978.07226562 -0.38200 447155.46875000 33395.80859375 -0.38300 443731.84375000 28114.85156250 -0.38400 440293.37500000 35597.71875000 -0.38500 436790.81250000 40464.30468750 -0.38600 433284.59375000 32697.82226562 -0.38700 429717.18750000 35013.35937500 -0.38800 426126.00000000 34810.23437500 -0.38900 422503.12500000 27188.07812500 -0.39000 418877.31250000 24567.15625000 -0.39100 415208.28125000 31738.52343750 -0.39200 411524.03125000 29111.21093750 -0.39300 407809.59375000 33742.16796875 -0.39400 404105.28125000 26337.56250000 -0.39500 400354.03125000 28537.23632812 -0.39600 396590.21875000 23616.94921875 -0.39700 392818.50000000 28141.51757812 -0.39800 389043.34375000 27941.09570312 -0.39900 385253.53125000 30049.77734375 -0.40000 381453.93750000 27533.34570312 -0.40100 377642.90625000 29603.42968750 -0.40200 373846.68750000 24858.93554688 -0.40300 370028.46875000 26908.47265625 -0.40400 366222.31250000 26697.60742188 -0.40500 362414.71875000 22071.05859375 -0.40600 358622.56250000 30651.47265625 -0.40700 354826.90625000 32573.11132812 -0.40800 351035.71875000 30150.45898438 -0.40900 347252.65625000 40576.47265625 -0.41000 343495.53125000 25411.80078125 -0.41100 339736.59375000 25194.86718750 -0.41200 335986.18750000 24977.21484375 -0.41300 332267.12500000 24760.54687500 -0.41400 328553.43750000 26588.18945312 -0.41500 324870.62500000 22299.12109375 -0.41600 321183.87500000 20090.05273438 -0.41700 317540.37500000 25882.71679688 -0.41800 313935.21875000 25650.07812500 -0.41900 310305.06250000 29323.83007812 -0.42000 306733.40625000 21307.23632812 -0.42100 303195.71875000 21111.51953125 -0.42200 299680.84375000 19014.75000000 -0.42300 296181.28125000 28255.69531250 -0.42400 292721.81250000 20527.11914062 -0.42500 289293.18750000 22183.00195312 -0.42600 285884.78125000 29297.47460938 -0.42700 282533.78125000 21766.40234375 -0.42800 279200.75000000 17966.57031250 -0.42900 275925.06250000 19576.88476562 -0.43000 272675.65625000 24679.87500000 -0.43100 269440.00000000 22697.62695312 -0.43200 266275.03125000 22482.93359375 -0.43300 263132.50000000 22268.90429688 -0.43400 260038.78125000 23754.54296875 -0.43500 256974.76562500 20167.38085938 -0.43600 253980.76562500 16648.43945312 -0.43700 251001.96875000 18139.91210938 -0.43800 248060.73437500 17968.27929688 -0.43900 245182.42187500 19418.44921875 -0.44000 242340.81250000 17633.92968750 -0.44100 239548.78125000 20646.71093750 -0.44200 236803.90625000 15735.62109375 -0.44300 234101.51562500 18709.39453125 -0.44400 231449.43750000 20084.02734375 -0.44500 228817.26562500 22961.81445312 -0.44600 226246.35937500 18203.78320312 -0.44700 223736.04687500 22552.59570312 -0.44800 221255.51562500 14901.55957031 -0.44900 218841.18750000 17726.13671875 -0.45000 216472.90625000 21966.58984375 -0.45100 214130.06250000 17421.62304688 -0.45200 211852.54687500 23032.60937500 -0.45300 209610.71875000 21411.73437500 -0.45400 207426.04687500 21235.24218750 -0.45500 205290.59375000 23871.19140625 -0.45600 203195.15625000 22286.44531250 -0.45700 201154.20312500 17965.08203125 -0.45800 199150.15625000 15082.63867188 -0.45900 197193.35937500 16327.61132812 -0.46000 195307.71875000 17557.18750000 -0.46100 193430.89062500 18766.66601562 -0.46200 191634.14062500 14639.89062500 -0.46300 189868.06250000 15857.78125000 -0.46400 188139.23437500 18371.79687500 -0.46500 186473.98437500 13034.53222656 -0.46600 184843.67187500 15537.95996094 -0.46700 183246.76562500 15436.70800781 -0.46800 181725.78125000 20455.05468750 -0.46900 180217.39062500 16516.92382812 -0.47000 178760.59375000 13892.38085938 -0.47100 177351.84375000 15067.81347656 -0.47200 175986.59375000 18729.37500000 -0.47300 174670.48437500 14902.88671875 -0.47400 173367.84375000 14822.95214844 -0.47500 172127.06250000 14747.84765625 -0.47600 170939.96875000 20792.28320312 -0.47700 169756.93750000 17040.20312500 -0.47800 168634.56250000 19386.23046875 -0.47900 167561.28125000 13270.85449219 -0.48000 166499.68750000 21623.31445312 -0.48100 165510.81250000 14359.71875000 -0.48200 164512.53125000 15494.61328125 -0.48300 163569.71875000 15437.70996094 -0.48400 162669.28125000 14201.02929688 -0.48500 161795.87500000 15333.39550781 -0.48600 160969.18750000 16462.32031250 -0.48700 160166.06250000 12896.57226562 -0.48800 159380.75000000 18704.92578125 -0.48900 158637.01562500 17489.73242188 -0.49000 157930.57812500 18610.53906250 -0.49100 157262.64062500 11605.98339844 -0.49200 156605.34375000 15055.25488281 -0.49300 155986.03125000 11558.56542969 -0.49400 155395.09375000 12691.89453125 -0.49500 154822.39062500 11518.78710938 -0.49600 154292.15625000 16103.47265625 -0.49700 153773.56250000 11486.88574219 -0.49800 153291.34375000 14916.01464844 -0.49900 152818.59375000 16045.95312500 -0.50000 152383.09375000 20612.86132812 -0.50100 151948.60937500 12585.90429688 -0.50200 151564.00000000 18296.80664062 -0.50300 151199.18750000 16002.92285156 -0.50400 150830.45312500 12567.94726562 -0.50500 150501.64062500 13707.68945312 -0.50600 150178.48437500 13705.29003906 -0.50700 149891.37500000 17132.58593750 -0.50800 149609.67187500 13707.23828125 -0.50900 149353.00000000 12568.05468750 -0.51000 149118.29687500 13715.90234375 -0.51100 148885.53125000 16008.17382812 -0.51200 148674.35937500 20592.88671875 -0.51300 148461.39062500 19458.83398438 -0.51400 148282.34375000 18327.69726562 -0.51500 148106.26562500 11463.42578125 -0.51600 147953.60937500 13768.56347656 -0.51700 147808.18750000 17227.04492188 -0.51800 147670.46875000 12645.76074219 -0.51900 147548.34375000 17263.15820312 -0.52000 147433.79687500 13826.34277344 -0.52100 147339.37500000 11536.67382812 -0.52200 147233.20312500 11550.44531250 -0.52300 147166.90625000 15037.51464844 -0.52400 147086.06250000 11583.02832031 -0.52500 147014.59375000 15079.28808594 -0.52600 146945.67187500 11616.05566406 -0.52700 146899.40625000 20941.98046875 -0.52800 146843.90625000 12817.27050781 -0.52900 146795.34375000 19839.39257812 -0.53000 146767.76562500 14028.06347656 -0.53100 146733.62500000 12880.27832031 -0.53200 146699.10937500 14074.31250000 -0.53300 146673.06250000 16447.91796875 -0.53400 146638.81250000 17651.64843750 -0.53500 146630.56250000 14146.91699219 -0.53600 146620.35937500 21258.48632812 -0.53700 146603.17187500 11830.87597656 -0.53800 146596.03125000 11852.29003906 -0.53900 146576.70312500 16621.79882812 -0.54000 146573.18750000 13083.85644531 -0.54100 146566.06250000 13107.40332031 -0.54200 146552.89062500 13130.40722656 -0.54300 146567.32812500 15547.86328125 -0.54400 146552.43750000 14376.79492188 -0.54500 146534.64062500 15601.54394531 -0.54600 146527.39062500 16831.60156250 -0.54700 146519.92187500 18065.90820312 -0.54800 146498.71875000 16889.83789062 -0.54900 146499.53125000 12086.21191406 -0.55000 146476.26562500 18159.39453125 -0.55100 146459.39062500 12126.83789062 -0.55200 146441.20312500 13362.02832031 -0.55300 146410.59375000 14600.06542969 -0.55400 146398.76562500 13406.46777344 -0.55500 146372.35937500 12207.45507812 -0.55600 146341.32812500 12226.81933594 -0.55700 146314.31250000 12246.50878906 -0.55800 146262.00000000 12264.06933594 -0.55900 146228.68750000 13511.53125000 -0.56000 146190.43750000 12301.92578125 -0.56100 146147.71875000 16016.33007812 -0.56200 146088.89062500 14804.64941406 -0.56300 146038.95312500 14825.87500000 -0.56400 145969.71875000 17319.30664062 -0.56500 145901.81250000 16103.18261719 -0.56600 145836.42187500 19845.42187500 -0.56700 145752.56250000 17385.36718750 -0.56800 145676.75000000 13676.86230469 -0.56900 145591.78125000 16182.52636719 -0.57000 145502.62500000 14954.76074219 -0.57100 145415.98437500 13724.36132812 -0.57200 145309.67187500 12489.36718750 -0.57300 145210.82812500 18753.97851562 -0.57400 145092.35937500 15017.05957031 -0.57500 144971.50000000 16283.20019531 -0.57600 144850.85937500 13790.52734375 -0.57700 144716.28125000 15056.28222656 -0.57800 144583.50000000 15068.49218750 -0.57900 144448.68750000 18850.55468750 -0.58000 144300.81250000 13833.39843750 -0.58100 144157.64062500 12584.96289062 -0.58200 143986.21875000 18887.39257812 -0.58300 143823.37500000 15118.71289062 -0.58400 143657.28125000 13866.52050781 -0.58500 143485.07812500 12612.33886719 -0.58600 143303.34375000 20188.57617188 -0.58700 143107.96875000 18933.18554688 -0.58800 142912.01562500 21464.66992188 -0.58900 142713.34375000 17682.18554688 -0.59000 142501.00000000 13895.98535156 -0.59100 142293.21875000 17689.89453125 -0.59200 142065.29687500 13900.37890625 -0.59300 141841.60937500 12638.08886719 -0.59400 141595.62500000 16428.63281250 -0.59500 141369.14062500 17693.76171875 -0.59600 141120.50000000 13901.07519531 -0.59700 140870.28125000 13899.67089844 -0.59800 140604.76562500 16423.34179688 -0.59900 140344.48437500 16420.30664062 -0.60000 140076.29687500 13890.66699219 -0.60100 139792.76562500 13885.61523438 -0.60200 139505.93750000 12618.31347656 -0.60300 139214.04687500 17657.91015625 -0.60400 138915.34375000 16388.53906250 -0.60500 138613.00000000 13859.91406250 -0.60600 138303.09375000 13851.74609375 -0.60700 137986.40625000 16359.66992188 -0.60800 137659.43750000 15090.22851562 -0.60900 137330.65625000 12565.75585938 -0.61000 136989.50000000 18832.63281250 -0.61100 136654.01562500 13799.32226562 -0.61200 136307.23437500 13786.79589844 -0.61300 135959.92187500 12521.90917969 -0.61400 135588.62500000 21263.68750000 -0.61500 135221.28125000 14993.33593750 -0.61600 134849.10937500 12480.28613281 -0.61700 134477.32812500 13712.65429688 -0.61800 134088.95312500 19920.25585938 -0.61900 133694.68750000 19893.76953125 -0.62000 133304.03125000 18625.90625000 -0.62100 132893.32812500 16118.63281250 -0.62200 132493.96875000 13619.71875000 -0.62300 132073.23437500 17306.87695312 -0.62400 131661.60937500 12343.27636719 -0.62500 131231.17187500 13554.86816406 -0.62600 130804.53125000 17223.03320312 -0.62700 130366.28125000 15964.65527344 -0.62800 129923.21875000 14709.90722656 -0.62900 129479.18750000 13459.36132812 -0.63000 129029.91406250 13433.95019531 -0.63100 128573.00781250 15845.33886719 -0.63200 128113.39062500 17030.11328125 -0.63300 127644.82812500 13352.92578125 -0.63400 127182.37500000 12114.12109375 -0.63500 126699.18750000 14504.52441406 -0.63600 126226.00781250 14473.07519531 -0.63700 125737.15625000 12033.04589844 -0.63800 125253.42187500 13206.09472656 -0.63900 124765.48437500 16768.48242188 -0.64000 124259.35937500 13142.29199219 -0.64100 123764.57812500 16685.94140625 -0.64200 123257.80468750 15454.68066406 -0.64300 122748.08593750 15414.70507812 -0.64400 122243.22656250 14192.43945312 -0.64500 121721.23437500 14153.74609375 -0.64600 121205.13281250 16468.14257812 -0.64700 120680.84375000 16422.25000000 -0.64800 120162.41406250 12867.59179688 -0.64900 119621.82031250 16328.37988281 -0.65000 119094.74218750 12792.56250000 -0.65100 118563.50000000 18552.81640625 -0.65200 118025.45312500 18496.94921875 -0.65300 117487.40625000 13830.61914062 -0.65400 116944.48437500 13787.75585938 -0.65500 116411.71875000 14891.38769531 -0.65600 115861.76562500 11418.17773438 -0.65700 115312.48437500 17072.01367188 -0.65800 114760.00000000 13612.83203125 -0.65900 114214.92187500 12438.00585938 -0.66000 113661.26562500 14650.36914062 -0.66100 113115.25781250 11232.34570312 -0.66200 112555.08593750 14551.68554688 -0.66300 112004.82812500 14502.38574219 -0.66400 111455.17187500 12229.41894531 -0.66500 110894.25000000 15509.66992188 -0.66600 110339.65625000 12143.43066406 -0.66700 109777.31250000 13199.62500000 -0.66800 109228.82031250 15345.55761719 -0.66900 108669.78906250 12013.44531250 -0.67000 108112.05468750 10881.47851562 -0.67100 107555.43750000 18430.69921875 -0.67200 107001.46875000 16202.69824219 -0.67300 106448.11718750 10761.90527344 -0.67400 105890.06250000 15009.91699219 -0.67500 105335.75000000 11749.14941406 -0.67600 104785.49218750 10640.96777344 -0.67700 104230.63281250 12720.30761719 -0.67800 103682.00000000 11616.01367188 -0.67900 103137.84375000 12624.07226562 -0.68000 102584.23437500 12574.77539062 -0.68100 102042.03125000 14614.46093750 -0.68200 101501.47656250 15598.24023438 -0.68300 100961.13281250 17609.64062500 -0.68400 100429.02343750 10319.08203125 -0.68500 99895.28125000 13362.99316406 -0.68600 99357.82812500 11262.70703125 -0.68700 98829.71875000 13258.99609375 -0.68800 98303.77343750 16255.51269531 -0.68900 97784.40625000 14168.96093750 -0.69000 97257.25781250 11088.78710938 -0.69100 96741.28125000 10041.74609375 -0.69200 96227.96875000 12003.47753906 -0.69300 95707.88281250 14944.78613281 -0.69400 95208.59375000 12903.14453125 -0.69500 94704.91406250 17796.94921875 -0.69600 94201.14843750 12803.34960938 -0.69700 93702.20312500 14715.93164062 -0.69800 93220.20312500 11728.96582031 -0.69900 92733.50000000 14605.52734375 -0.70000 92251.64843750 14550.39257812 -0.70100 91772.46875000 11596.37011719 -0.70200 91301.83593750 12516.11230469 -0.70300 90818.69531250 12467.59082031 -0.70400 90362.14843750 11466.95800781 -0.70500 89904.94531250 12377.21484375 -0.70600 89450.79687500 12332.13476562 -0.70700 88999.39843750 9451.73632812 -0.70800 88555.00000000 10359.60644531 -0.70900 88112.79687500 14076.02050781 -0.71000 87677.14062500 10285.84472656 -0.71100 87250.01562500 11181.96191406 -0.71200 86821.34375000 9285.54296875 -0.71300 86405.53125000 13881.04980469 -0.71400 85989.45312500 13833.55371094 -0.71500 85581.63281250 13787.20214844 -0.71600 85182.64843750 10993.67285156 -0.71700 84778.00000000 10956.70898438 -0.71800 84393.53906250 10012.02832031 -0.71900 83999.31250000 13607.88964844 -0.72000 83629.05468750 15375.62011719 -0.72100 83248.47656250 13523.71484375 -0.72200 82880.40625000 10786.05664062 -0.72300 82512.58593750 9856.95410156 -0.72400 82165.03125000 11616.08203125 -0.72500 81799.00000000 13361.86718750 -0.72600 81459.06250000 9771.42187500 -0.72700 81117.96093750 11515.50683594 -0.72800 80783.52343750 8833.67871094 -0.72900 80455.56250000 9690.87304688 -0.73000 80120.97656250 14934.95117188 -0.73100 79796.69531250 11390.18066406 -0.73200 79502.84375000 13112.00781250 -0.73300 79191.17187500 10462.73828125 -0.73400 78883.20312500 9566.56054688 -0.73500 78590.14062500 10411.62207031 -0.73600 78306.09375000 9522.41308594 -0.73700 78017.10156250 9500.14355469 -0.73800 77735.85937500 8617.02050781 -0.73900 77463.92187500 8598.49511719 -0.74000 77197.72656250 11154.68554688 -0.74100 76933.63281250 9418.98535156 -0.74200 76674.91406250 11109.04589844 -0.74300 76415.54687500 10233.57031250 -0.74400 76179.78125000 10215.70898438 -0.74500 75928.32031250 11045.29394531 -0.74600 75695.43750000 9329.84179688 -0.74700 75463.95312500 10160.46679688 -0.74800 75237.00000000 9298.16503906 -0.74900 75018.45312500 9283.53417969 -0.75000 74797.29687500 10111.09960938 -0.75100 74584.37500000 10095.74121094 -0.75200 74391.44531250 12603.77148438 -0.75300 74175.82812500 9228.21484375 -0.75400 73981.23437500 9216.21191406 -0.75500 73788.67187500 9204.39941406 -0.75600 73606.46875000 11701.22070312 -0.75700 73412.62500000 10016.41894531 -0.75800 73243.24218750 9172.61718750 -0.75900 73060.56250000 15824.91894531 -0.76000 72889.53906250 9984.41015625 -0.76100 72730.82812500 9975.76074219 -0.76200 72563.40625000 9135.37011719 -0.76300 72404.32812500 9957.04296875 -0.76400 72255.15625000 10778.66406250 -0.76500 72099.81250000 10769.54980469 -0.76600 71961.60937500 12418.77539062 -0.76700 71810.29687500 9099.80078125 -0.76800 71680.46875000 9095.17675781 -0.76900 71536.51562500 9914.96191406 -0.77000 71407.56250000 9909.94238281 -0.77100 71276.42187500 8253.80957031 -0.77200 71164.76562500 9076.70996094 -0.77300 71028.11718750 8246.36523438 -0.77400 70921.17968750 12366.88183594 -0.77500 70805.53125000 9065.94042969 -0.77600 70700.59375000 10712.20117188 -0.77700 70589.75000000 9061.60644531 -0.77800 70486.25781250 11530.84765625 -0.77900 70385.89062500 9058.66503906 -0.78000 70285.12500000 12350.85449219 -0.78100 70192.96875000 9880.36230469 -0.78200 70100.12500000 12349.89062500 -0.78300 70011.65625000 10703.38281250 -0.78400 69923.09375000 9056.78906250 -0.78500 69840.19531250 9057.57519531 -0.78600 69763.48437500 14824.04296875 -0.78700 69675.78125000 8235.67773438 -0.78800 69607.67187500 9885.68261719 -0.78900 69538.43750000 9064.33593750 -0.79000 69471.59375000 9891.36621094 -0.79100 69397.57812500 9893.31835938 -0.79200 69329.12500000 10720.70996094 -0.79300 69268.73437500 9899.88769531 -0.79400 69210.02343750 10729.28417969 -0.79500 69150.55468750 9082.23437500 -0.79600 69100.35156250 9087.04199219 -0.79700 69042.57812500 9917.27636719 -0.79800 68993.49218750 12403.30566406 -0.79900 68938.14843750 9927.09375000 -0.80000 68899.04687500 9106.04296875 -0.80100 68852.27343750 9939.51464844 -0.80200 68811.21875000 13261.29882812 -0.80300 68764.17187500 13268.73535156 -0.80400 68726.92968750 8298.77734375 -0.80500 68695.12500000 9966.29003906 -0.80600 68659.75000000 8311.26367188 -0.80700 68624.60937500 9149.03320312 -0.80800 68593.89062500 14150.57714844 -0.80900 68565.94531250 9996.91503906 -0.81000 68545.59375000 9172.42968750 -0.81100 68516.95312500 9179.90234375 -0.81200 68497.57031250 9188.60742188 -0.81300 68478.55468750 13377.97070312 -0.81400 68467.33593750 10044.15820312 -0.81500 68440.48437500 11727.96191406 -0.81600 68426.82031250 11739.99023438 -0.81700 68422.07812500 10074.46679688 -0.81800 68405.63281250 12605.44824219 -0.81900 68399.28906250 11778.35839844 -0.82000 68386.34375000 9263.95703125 -0.82100 68391.42968750 8432.66406250 -0.82200 68379.95312500 10129.80664062 -0.82300 68375.89062500 9296.38671875 -0.82400 68378.51562500 11000.39453125 -0.82500 68384.04687500 9320.06250000 -0.82600 68390.56250000 11877.38964844 -0.82700 68396.57031250 9344.33984375 -0.82800 68397.75000000 9355.78710938 -0.82900 68412.02343750 11924.21679688 -0.83000 68429.87500000 12794.67675781 -0.83100 68439.56250000 8541.25781250 -0.83200 68447.70312500 10263.04882812 -0.83300 68468.75000000 10278.52929688 -0.83400 68485.72656250 12008.97265625 -0.83500 68510.35156250 12886.79785156 -0.83600 68534.18750000 9464.91406250 -0.83700 68561.67187500 10341.84277344 -0.83800 68582.39843750 10357.31445312 -0.83900 68614.07812500 9509.91210938 -0.84000 68639.28906250 8658.84667969 -0.84100 68673.81250000 8673.50292969 -0.84200 68708.23437500 8688.15722656 -0.84300 68739.56250000 10442.91503906 -0.84400 68773.85937500 9588.79589844 -0.84500 68812.65625000 12225.25683594 -0.84600 68857.07031250 8748.29101562 -0.84700 68894.37500000 14897.72070312 -0.84800 68935.87500000 11412.67968750 -0.84900 68981.85937500 9674.70605469 -0.85000 69024.79687500 9692.11718750 -0.85100 69077.32031250 9710.88964844 -0.85200 69125.14843750 12382.38867188 -0.85300 69177.88281250 9747.85644531 -0.85400 69232.29687500 11542.75488281 -0.85500 69285.46093750 10675.50390625 -0.85600 69332.44531250 14260.29882812 -0.85700 69391.60156250 10716.83984375 -0.85800 69452.58593750 11633.65625000 -0.85900 69510.73437500 12553.63867188 -0.86000 69568.81250000 9883.29394531 -0.86100 69633.82812500 9904.02050781 -0.86200 69697.81250000 13533.57324219 -0.86300 69762.97656250 9945.41015625 -0.86400 69826.22656250 9965.94824219 -0.86500 69892.92187500 12710.72753906 -0.86600 69958.59375000 9098.11523438 -0.86700 70036.19531250 13678.06933594 -0.86800 70100.02343750 10051.29199219 -0.86900 70167.57031250 10072.55468750 -0.87000 70237.07031250 10094.12109375 -0.87100 70312.53125000 10116.56738281 -0.87200 70387.03125000 11982.33691406 -0.87300 70458.91406250 10160.87988281 -0.87400 70534.94531250 10183.48242188 -0.87500 70613.10937500 10206.41992188 -0.87600 70686.78125000 11158.61621094 -0.87700 70762.78906250 12115.29785156 -0.87800 70842.56250000 9340.59179688 -0.87900 70920.93750000 9361.56445312 -0.88000 70995.32812500 9382.03320312 -0.88100 71078.12500000 11284.36328125 -0.88200 71153.78125000 11309.18261719 -0.88300 71233.55468750 9445.56933594 -0.88400 71313.60937500 14200.32324219 -0.88500 71390.03125000 10436.50878906 -0.88600 71471.26562500 10460.17773438 -0.88700 71547.60937500 9530.14160156 -0.88800 71629.53125000 13372.51855469 -0.88900 71712.17187500 9573.57519531 -0.89000 71787.25781250 11513.24121094 -0.89100 71860.45312500 12499.40722656 -0.89200 71940.68750000 14454.68261719 -0.89300 72019.06250000 14486.63574219 -0.89400 72096.10937500 10646.79394531 -0.89500 72173.49218750 17460.21289062 -0.89600 72247.74218750 9720.93359375 -0.89700 72321.33593750 11690.02050781 -0.89800 72393.77343750 10738.53125000 -0.89900 72471.28125000 10761.98632812 -0.90000 72544.14843750 10784.77636719 -0.90100 72615.74218750 9824.91015625 -0.90200 72683.57812500 11813.98925781 -0.90300 72750.56250000 13810.96777344 -0.90400 72822.32812500 16805.57421875 -0.90500 72893.64843750 12878.12109375 -0.90600 72957.47656250 16873.97070312 -0.90700 73020.94531250 12929.08984375 -0.90800 73082.07031250 9964.74121094 -0.90900 73145.54687500 12979.67773438 -0.91000 73209.70312500 13005.33789062 -0.91100 73261.06250000 14030.95996094 -0.91200 73319.26562500 15061.61132812 -0.91300 73375.78125000 10059.82031250 -0.91400 73425.89843750 15116.55761719 -0.91500 73482.01562500 12115.71484375 -0.91600 73530.24218750 15171.12792969 -0.91700 73580.62500000 12158.46289062 -0.91800 73623.96093750 13193.78222656 -0.91900 73669.60937500 13216.32812500 -0.92000 73710.87500000 16293.05175781 -0.92100 73748.33593750 14279.15332031 -0.92200 73786.64062500 11237.33691406 -0.92300 73821.60937500 12278.01074219 -0.92400 73853.35156250 11271.86816406 -0.92500 73884.71875000 15393.88281250 -0.92600 73911.23437500 18499.24414062 -0.92700 73937.88281250 12350.58496094 -0.92800 73961.95312500 14429.23828125 -0.92900 73978.96093750 13416.08496094 -0.93000 74006.95312500 13435.59375000 -0.93100 74019.03125000 16556.57812500 -0.93200 74031.88281250 15541.14355469 -0.93300 74037.46093750 11409.91308594 -0.93400 74046.67968750 13500.56152344 -0.93500 74053.85156250 13516.30957031 -0.93600 74061.23437500 14573.03027344 -0.93700 74056.37500000 11461.70605469 -0.93800 74058.78906250 13560.53515625 -0.93900 74054.26562500 11485.81738281 -0.94000 74047.10156250 11496.92382812 -0.94100 74033.96093750 11507.09863281 -0.94200 74023.67187500 11517.71386719 -0.94300 74011.15625000 12575.97558594 -0.94400 73988.57031250 11536.66894531 -0.94500 73963.10156250 14693.51074219 -0.94600 73948.56250000 12605.27246094 -0.94700 73918.10156250 10511.15429688 -0.94800 73886.72656250 15776.66406250 -0.94900 73852.46875000 12628.77343750 -0.95000 73819.63281250 12636.44531250 -0.95100 73785.70312500 11590.25878906 -0.95200 73750.76562500 14759.74121094 -0.95300 73703.50781250 12656.36718750 -0.95400 73655.64062500 11606.28808594 -0.95500 73613.23437500 13722.97949219 -0.95600 73561.53125000 10559.75781250 -0.95700 73511.68750000 14789.08203125 -0.95800 73456.95312500 13736.81835938 -0.95900 73394.25000000 13739.40429688 -0.96000 73337.07812500 12685.84863281 -0.96100 73274.18750000 16917.54492188 -0.96200 73210.96875000 12690.39062500 -0.96300 73141.61718750 12691.53417969 -0.96400 73069.82812500 13749.91601562 -0.96500 72996.14843750 14807.99902344 -0.96600 72923.82812500 13750.88183594 -0.96700 72847.30468750 11635.17187500 -0.96800 72773.24218750 15866.38671875 -0.96900 72692.82812500 10576.80664062 -0.97000 72607.60937500 10575.29882812 -0.97100 72523.53906250 12688.71972656 -0.97200 72438.58593750 13744.13574219 -0.97300 72348.51562500 12684.14257812 -0.97400 72261.19531250 11625.02050781 -0.97500 72160.60937500 11620.74511719 -0.97600 72071.98437500 11618.36523438 -0.97700 71979.07812500 11615.26464844 -0.97800 71876.77343750 14777.14648438 -0.97900 71777.08593750 10551.23242188 -0.98000 71683.59375000 15822.36132812 -0.98100 71582.79687500 13707.39062500 -0.98200 71473.90625000 16862.12500000 -0.98300 71372.99218750 16855.44726562 -0.98400 71262.81250000 12634.89746094 -0.98500 71157.66406250 13681.48535156 -0.98600 71047.05468750 11570.36914062 -0.98700 70943.12500000 13667.90332031 -0.98800 70827.92187500 10507.32226562 -0.98900 70717.95312500 11551.77832031 -0.99000 70599.22656250 12593.49121094 -0.99100 70490.21875000 11537.83984375 -0.99200 70378.39062500 15724.29296875 -0.99300 70265.30468750 10476.55761719 -0.99400 70142.86718750 11515.70507812 -0.99500 70030.35156250 10462.53515625 -0.99600 69912.87500000 15683.20605469 -0.99700 69793.61718750 13582.53613281 -0.99800 69671.89062500 11484.36621094 -0.99900 69558.62500000 12520.55371094 -1.00000 69440.27343750 13554.39453125 diff --git a/6lyz.out b/6lyz.out deleted file mode 100644 index 737e78e..0000000 --- a/6lyz.out +++ /dev/null @@ -1,1317 +0,0 @@ - - #### G N O M Version 5.0 (r8972) #### - Thu Jan 18 16:01:26 2018 - - #### Configuration #### - - System Type: arbitrary monodisperse (job = 0) - Minimum characteristic size: 0.0000 - Maximum characteristic size: 50.0000 - rad56: 0.0000 - Force 0.0 at r = rmin: yes - Force 0.0 at r = rmax: yes - Initial alpha: 1.0035 - Initial random seed: 7139125050589956034 - Points in real space: 256 - - Input 1: /Users/tgrant/software/denss/6lyz.dat - First data point used: 1 - Last data point used: 1001 - Scaling coefficient: 0.1000E+01 - Experimental setup: point collimation - - - #### Results #### - - Parameter DISCRP OSCILL STABIL SYSDEV POSITV VALCEN SMOOTH - Weight 1.000 3.000 3.000 3.000 1.000 1.000 2.000 - Sigma 0.300 0.600 0.120 0.120 0.120 0.120 0.600 - Ideal 0.700 1.100 0.000 1.000 1.000 0.950 0.000 - Current 0.006 1.453 0.000 0.322 1.000 0.919 0.008 - -------------------------------------------------------- - Estimate 0.005 0.708 1.000 0.000 1.000 0.935 1.000 - - Angular range: 0.0000 to 1.0000 - Reciprocal space Rg: 0.1408E+02 - Reciprocal space I(0): 0.6852E+08 - - Real space range: 0.0000 to 50.0000 - Real space Rg: 0.1429E+02 +- 0.3448E-01 - Real space I(0): 0.6852E+08 +- 0.1279E+05 - - Highest ALPHA (theor): 0.8023E+05 - Current ALPHA: 0.1004E+01 - - Total Estimate: 0.6474 (a REASONABLE solution) - - - - #### Experimental Data and Fit #### - - S J EXP ERROR J REG I REG - - 0.000000E+00 0.685171E+08 0.143886E+05 0.685176E+08 0.685176E+08 - 0.100000E-02 0.685127E+08 0.226092E+05 0.685127E+08 0.685127E+08 - 0.200000E-02 0.684990E+08 0.339070E+05 0.684987E+08 0.684987E+08 - 0.300000E-02 0.684756E+08 0.493024E+05 0.684754E+08 0.684754E+08 - 0.400000E-02 0.684429E+08 0.615986E+05 0.684428E+08 0.684428E+08 - 0.500000E-02 0.684009E+08 0.738730E+05 0.684009E+08 0.684009E+08 - 0.600000E-02 0.683498E+08 0.717673E+05 0.683497E+08 0.683497E+08 - 0.700000E-02 0.682893E+08 0.819471E+05 0.682893E+08 0.682893E+08 - 0.800000E-02 0.682195E+08 0.110516E+06 0.682196E+08 0.682196E+08 - 0.900000E-02 0.681406E+08 0.132874E+06 0.681407E+08 0.681407E+08 - 0.100000E-01 0.680527E+08 0.134744E+06 0.680527E+08 0.680527E+08 - 0.110000E-01 0.679557E+08 0.134552E+06 0.679554E+08 0.679554E+08 - 0.120000E-01 0.678493E+08 0.198459E+06 0.678491E+08 0.678491E+08 - 0.130000E-01 0.677340E+08 0.213362E+06 0.677337E+08 0.677337E+08 - 0.140000E-01 0.676098E+08 0.197759E+06 0.676093E+08 0.676093E+08 - 0.150000E-01 0.674766E+08 0.226721E+06 0.674760E+08 0.674760E+08 - 0.160000E-01 0.673342E+08 0.188873E+06 0.673337E+08 0.673337E+08 - 0.170000E-01 0.671833E+08 0.199534E+06 0.671825E+08 0.671825E+08 - 0.180000E-01 0.670233E+08 0.229220E+06 0.670226E+08 0.670226E+08 - 0.190000E-01 0.668547E+08 0.200564E+06 0.668538E+08 0.668538E+08 - 0.200000E-01 0.666776E+08 0.378062E+06 0.666764E+08 0.666764E+08 - 0.210000E-01 0.664916E+08 0.307191E+06 0.664904E+08 0.664904E+08 - 0.220000E-01 0.662971E+08 0.228725E+06 0.662959E+08 0.662959E+08 - 0.230000E-01 0.660943E+08 0.309321E+06 0.660929E+08 0.660929E+08 - 0.240000E-01 0.658830E+08 0.321180E+06 0.658814E+08 0.658814E+08 - 0.250000E-01 0.656634E+08 0.358522E+06 0.656617E+08 0.656617E+08 - 0.260000E-01 0.654356E+08 0.371020E+06 0.654338E+08 0.654338E+08 - 0.270000E-01 0.651997E+08 0.355991E+06 0.651977E+08 0.651977E+08 - 0.280000E-01 0.649556E+08 0.310813E+06 0.649535E+08 0.649535E+08 - 0.290000E-01 0.647037E+08 0.349400E+06 0.647014E+08 0.647014E+08 - 0.300000E-01 0.644438E+08 0.329630E+06 0.644415E+08 0.644415E+08 - 0.310000E-01 0.641763E+08 0.431265E+06 0.641737E+08 0.641737E+08 - 0.320000E-01 0.639011E+08 0.347941E+06 0.638983E+08 0.638983E+08 - 0.330000E-01 0.636184E+08 0.356899E+06 0.636154E+08 0.636154E+08 - 0.340000E-01 0.633282E+08 0.332473E+06 0.633250E+08 0.633250E+08 - 0.350000E-01 0.630304E+08 0.340364E+06 0.630272E+08 0.630272E+08 - 0.360000E-01 0.627256E+08 0.382940E+06 0.627222E+08 0.627222E+08 - 0.370000E-01 0.624136E+08 0.391333E+06 0.624101E+08 0.624101E+08 - 0.380000E-01 0.620946E+08 0.435904E+06 0.620909E+08 0.620909E+08 - 0.390000E-01 0.617688E+08 0.444736E+06 0.617649E+08 0.617649E+08 - 0.400000E-01 0.614362E+08 0.604532E+06 0.614321E+08 0.614321E+08 - 0.410000E-01 0.610969E+08 0.461892E+06 0.610926E+08 0.610926E+08 - 0.420000E-01 0.607511E+08 0.391844E+06 0.607466E+08 0.607466E+08 - 0.430000E-01 0.603989E+08 0.398633E+06 0.603942E+08 0.603942E+08 - 0.440000E-01 0.600404E+08 0.486328E+06 0.600355E+08 0.600355E+08 - 0.450000E-01 0.596758E+08 0.535292E+06 0.596707E+08 0.596707E+08 - 0.460000E-01 0.593051E+08 0.627152E+06 0.592999E+08 0.592999E+08 - 0.470000E-01 0.589285E+08 0.551571E+06 0.589232E+08 0.589232E+08 - 0.480000E-01 0.585462E+08 0.516378E+06 0.585407E+08 0.585407E+08 - 0.490000E-01 0.581584E+08 0.436188E+06 0.581526E+08 0.581526E+08 - 0.500000E-01 0.577650E+08 0.662854E+06 0.577591E+08 0.577591E+08 - 0.510000E-01 0.573663E+08 0.805423E+06 0.573603E+08 0.573603E+08 - 0.520000E-01 0.569625E+08 0.452852E+06 0.569561E+08 0.569561E+08 - 0.530000E-01 0.565534E+08 0.458082E+06 0.565470E+08 0.565470E+08 - 0.540000E-01 0.561396E+08 0.509466E+06 0.561329E+08 0.561329E+08 - 0.550000E-01 0.557210E+08 0.655279E+06 0.557141E+08 0.557141E+08 - 0.560000E-01 0.552977E+08 0.520074E+06 0.552907E+08 0.552907E+08 - 0.570000E-01 0.548698E+08 0.572841E+06 0.548627E+08 0.548627E+08 - 0.580000E-01 0.544379E+08 0.722662E+06 0.544305E+08 0.544305E+08 - 0.590000E-01 0.540016E+08 0.583217E+06 0.539940E+08 0.539940E+08 - 0.600000E-01 0.535610E+08 0.588100E+06 0.535535E+08 0.535535E+08 - 0.610000E-01 0.531170E+08 0.740982E+06 0.531091E+08 0.531091E+08 - 0.620000E-01 0.526689E+08 0.796354E+06 0.526610E+08 0.526610E+08 - 0.630000E-01 0.522176E+08 0.501289E+06 0.522092E+08 0.522092E+08 - 0.640000E-01 0.517625E+08 0.504684E+06 0.517541E+08 0.517541E+08 - 0.650000E-01 0.513040E+08 0.660283E+06 0.512956E+08 0.512956E+08 - 0.660000E-01 0.508426E+08 0.562065E+06 0.508339E+08 0.508339E+08 - 0.670000E-01 0.503780E+08 0.616626E+06 0.503693E+08 0.503693E+08 - 0.680000E-01 0.499107E+08 0.671549E+06 0.499018E+08 0.499018E+08 - 0.690000E-01 0.494408E+08 0.934432E+06 0.494317E+08 0.494317E+08 - 0.700000E-01 0.489681E+08 0.573661E+06 0.489589E+08 0.489589E+08 - 0.710000E-01 0.484931E+08 0.576098E+06 0.484838E+08 0.484838E+08 - 0.720000E-01 0.480157E+08 0.525772E+06 0.480064E+08 0.480064E+08 - 0.730000E-01 0.475365E+08 0.685951E+06 0.475269E+08 0.475269E+08 - 0.740000E-01 0.470551E+08 0.846993E+06 0.470454E+08 0.470454E+08 - 0.750000E-01 0.465720E+08 0.849474E+06 0.465622E+08 0.465622E+08 - 0.760000E-01 0.460871E+08 0.691998E+06 0.460773E+08 0.460773E+08 - 0.770000E-01 0.456007E+08 0.906999E+06 0.455908E+08 0.455908E+08 - 0.780000E-01 0.451130E+08 0.588048E+06 0.451030E+08 0.451030E+08 - 0.790000E-01 0.446241E+08 0.589038E+06 0.446140E+08 0.446140E+08 - 0.800000E-01 0.441340E+08 0.589851E+06 0.441238E+08 0.441238E+08 - 0.810000E-01 0.436431E+08 0.805215E+06 0.436328E+08 0.436328E+08 - 0.820000E-01 0.431513E+08 0.644681E+06 0.431409E+08 0.431409E+08 - 0.830000E-01 0.426588E+08 0.102125E+07 0.426484E+08 0.426484E+08 - 0.840000E-01 0.421657E+08 0.645136E+06 0.421554E+08 0.421554E+08 - 0.850000E-01 0.416725E+08 0.537575E+06 0.416619E+08 0.416619E+08 - 0.860000E-01 0.411789E+08 0.752338E+06 0.411683E+08 0.411683E+08 - 0.870000E-01 0.406852E+08 0.590748E+06 0.406745E+08 0.406745E+08 - 0.880000E-01 0.401915E+08 0.536557E+06 0.401808E+08 0.401808E+08 - 0.890000E-01 0.396981E+08 0.643109E+06 0.396872E+08 0.396872E+08 - 0.900000E-01 0.392047E+08 0.802717E+06 0.391940E+08 0.391940E+08 - 0.910000E-01 0.387120E+08 0.534226E+06 0.387011E+08 0.387011E+08 - 0.920000E-01 0.382196E+08 0.639797E+06 0.382089E+08 0.382089E+08 - 0.930000E-01 0.377281E+08 0.638360E+06 0.377172E+08 0.377172E+08 - 0.940000E-01 0.372372E+08 0.636757E+06 0.372265E+08 0.372265E+08 - 0.950000E-01 0.367474E+08 0.793744E+06 0.367366E+08 0.367366E+08 - 0.960000E-01 0.362586E+08 0.738588E+06 0.362478E+08 0.362478E+08 - 0.970000E-01 0.357710E+08 0.683583E+06 0.357602E+08 0.357602E+08 - 0.980000E-01 0.352846E+08 0.523976E+06 0.352738E+08 0.352738E+08 - 0.990000E-01 0.347997E+08 0.835193E+06 0.347889E+08 0.347889E+08 - 0.100000E+00 0.343163E+08 0.571881E+06 0.343055E+08 0.343055E+08 - 0.101000E+00 0.338345E+08 0.776502E+06 0.338237E+08 0.338237E+08 - 0.102000E+00 0.333545E+08 0.927588E+06 0.333437E+08 0.333437E+08 - 0.103000E+00 0.328762E+08 0.718017E+06 0.328655E+08 0.328655E+08 - 0.104000E+00 0.323999E+08 0.561328E+06 0.323893E+08 0.323893E+08 - 0.105000E+00 0.319258E+08 0.609145E+06 0.319152E+08 0.319152E+08 - 0.106000E+00 0.314538E+08 0.807734E+06 0.314433E+08 0.314433E+08 - 0.107000E+00 0.309841E+08 0.803108E+06 0.309736E+08 0.309736E+08 - 0.108000E+00 0.305167E+08 0.598737E+06 0.305063E+08 0.305063E+08 - 0.109000E+00 0.300517E+08 0.644610E+06 0.300414E+08 0.300414E+08 - 0.110000E+00 0.295894E+08 0.640463E+06 0.295791E+08 0.295791E+08 - 0.111000E+00 0.291296E+08 0.489378E+06 0.291195E+08 0.291195E+08 - 0.112000E+00 0.286726E+08 0.583201E+06 0.286626E+08 0.286626E+08 - 0.113000E+00 0.282185E+08 0.530790E+06 0.282085E+08 0.282085E+08 - 0.114000E+00 0.277672E+08 0.622680E+06 0.277573E+08 0.277573E+08 - 0.115000E+00 0.273190E+08 0.522885E+06 0.273092E+08 0.273092E+08 - 0.116000E+00 0.268738E+08 0.565962E+06 0.268641E+08 0.268641E+08 - 0.117000E+00 0.264318E+08 0.514627E+06 0.264221E+08 0.264221E+08 - 0.118000E+00 0.259929E+08 0.510371E+06 0.259834E+08 0.259834E+08 - 0.119000E+00 0.255574E+08 0.506037E+06 0.255480E+08 0.255480E+08 - 0.120000E+00 0.251252E+08 0.547227E+06 0.251159E+08 0.251159E+08 - 0.121000E+00 0.246966E+08 0.497142E+06 0.246873E+08 0.246873E+08 - 0.122000E+00 0.242713E+08 0.626927E+06 0.242622E+08 0.242622E+08 - 0.123000E+00 0.238497E+08 0.709766E+06 0.238407E+08 0.238407E+08 - 0.124000E+00 0.234317E+08 0.571147E+06 0.234228E+08 0.234228E+08 - 0.125000E+00 0.230172E+08 0.565533E+06 0.230086E+08 0.230086E+08 - 0.126000E+00 0.226067E+08 0.602920E+06 0.225981E+08 0.225981E+08 - 0.127000E+00 0.221998E+08 0.468860E+06 0.221914E+08 0.221914E+08 - 0.128000E+00 0.217968E+08 0.506123E+06 0.217886E+08 0.217886E+08 - 0.129000E+00 0.213979E+08 0.417258E+06 0.213897E+08 0.213897E+08 - 0.130000E+00 0.210027E+08 0.536514E+06 0.209947E+08 0.209947E+08 - 0.131000E+00 0.206116E+08 0.448920E+06 0.206037E+08 0.206037E+08 - 0.132000E+00 0.202245E+08 0.524522E+06 0.202167E+08 0.202167E+08 - 0.133000E+00 0.198414E+08 0.518457E+06 0.198338E+08 0.198338E+08 - 0.134000E+00 0.194625E+08 0.394115E+06 0.194551E+08 0.194551E+08 - 0.135000E+00 0.190877E+08 0.584084E+06 0.190805E+08 0.190805E+08 - 0.136000E+00 0.187171E+08 0.576956E+06 0.187100E+08 0.187100E+08 - 0.137000E+00 0.183508E+08 0.455833E+06 0.183438E+08 0.183438E+08 - 0.138000E+00 0.179886E+08 0.375062E+06 0.179818E+08 0.179818E+08 - 0.139000E+00 0.176307E+08 0.703466E+06 0.176241E+08 0.176241E+08 - 0.140000E+00 0.172771E+08 0.438493E+06 0.172706E+08 0.172706E+08 - 0.141000E+00 0.169279E+08 0.432677E+06 0.169215E+08 0.169215E+08 - 0.142000E+00 0.165829E+08 0.569126E+06 0.165767E+08 0.165767E+08 - 0.143000E+00 0.162423E+08 0.421001E+06 0.162363E+08 0.162363E+08 - 0.144000E+00 0.159061E+08 0.380553E+06 0.159002E+08 0.159002E+08 - 0.145000E+00 0.155743E+08 0.375184E+06 0.155686E+08 0.155686E+08 - 0.146000E+00 0.152468E+08 0.537908E+06 0.152413E+08 0.152413E+08 - 0.147000E+00 0.149238E+08 0.364439E+06 0.149184E+08 0.149184E+08 - 0.148000E+00 0.146052E+08 0.522282E+06 0.145999E+08 0.145999E+08 - 0.149000E+00 0.142910E+08 0.418011E+06 0.142858E+08 0.142858E+08 - 0.150000E+00 0.139811E+08 0.380007E+06 0.139762E+08 0.139762E+08 - 0.151000E+00 0.136758E+08 0.405350E+06 0.136710E+08 0.136710E+08 - 0.152000E+00 0.133749E+08 0.368344E+06 0.133702E+08 0.133702E+08 - 0.153000E+00 0.130784E+08 0.453165E+06 0.130738E+08 0.130738E+08 - 0.154000E+00 0.127862E+08 0.475648E+06 0.127819E+08 0.127819E+08 - 0.155000E+00 0.124986E+08 0.321713E+06 0.124943E+08 0.124943E+08 - 0.156000E+00 0.122153E+08 0.345204E+06 0.122112E+08 0.122112E+08 - 0.157000E+00 0.119364E+08 0.396051E+06 0.119325E+08 0.119325E+08 - 0.158000E+00 0.116619E+08 0.278136E+06 0.116581E+08 0.116581E+08 - 0.159000E+00 0.113918E+08 0.300744E+06 0.113882E+08 0.113882E+08 - 0.160000E+00 0.111260E+08 0.322432E+06 0.111226E+08 0.111226E+08 - 0.161000E+00 0.108647E+08 0.343215E+06 0.108613E+08 0.108613E+08 - 0.162000E+00 0.106077E+08 0.337164E+06 0.106044E+08 0.106044E+08 - 0.163000E+00 0.103549E+08 0.280203E+06 0.103518E+08 0.103518E+08 - 0.164000E+00 0.101065E+08 0.250135E+06 0.101035E+08 0.101035E+08 - 0.165000E+00 0.986226E+07 0.343798E+06 0.985946E+07 0.985946E+07 - 0.166000E+00 0.962242E+07 0.241042E+06 0.961968E+07 0.961968E+07 - 0.167000E+00 0.938668E+07 0.496743E+06 0.938413E+07 0.938413E+07 - 0.168000E+00 0.915521E+07 0.348127E+06 0.915279E+07 0.915279E+07 - 0.169000E+00 0.892796E+07 0.295962E+06 0.892563E+07 0.892563E+07 - 0.170000E+00 0.870484E+07 0.267935E+06 0.870261E+07 0.870261E+07 - 0.171000E+00 0.848581E+07 0.284614E+06 0.848373E+07 0.848373E+07 - 0.172000E+00 0.827091E+07 0.279019E+06 0.826895E+07 0.826895E+07 - 0.173000E+00 0.806007E+07 0.315552E+06 0.805822E+07 0.805822E+07 - 0.174000E+00 0.785331E+07 0.206149E+06 0.785153E+07 0.785153E+07 - 0.175000E+00 0.765050E+07 0.262565E+06 0.764885E+07 0.764885E+07 - 0.176000E+00 0.745166E+07 0.257194E+06 0.745013E+07 0.745013E+07 - 0.177000E+00 0.725680E+07 0.232508E+06 0.725535E+07 0.725535E+07 - 0.178000E+00 0.706579E+07 0.208688E+06 0.706447E+07 0.706447E+07 - 0.179000E+00 0.687866E+07 0.260014E+06 0.687745E+07 0.687745E+07 - 0.180000E+00 0.669539E+07 0.199958E+06 0.669426E+07 0.669426E+07 - 0.181000E+00 0.651596E+07 0.266828E+06 0.651486E+07 0.651486E+07 - 0.182000E+00 0.634019E+07 0.174038E+06 0.633921E+07 0.633921E+07 - 0.183000E+00 0.616817E+07 0.221314E+06 0.616727E+07 0.616727E+07 - 0.184000E+00 0.599981E+07 0.283041E+06 0.599901E+07 0.599901E+07 - 0.185000E+00 0.583512E+07 0.260480E+06 0.583438E+07 0.583438E+07 - 0.186000E+00 0.567400E+07 0.175071E+06 0.567334E+07 0.567334E+07 - 0.187000E+00 0.551643E+07 0.202232E+06 0.551584E+07 0.551584E+07 - 0.188000E+00 0.536237E+07 0.152023E+06 0.536187E+07 0.536187E+07 - 0.189000E+00 0.521182E+07 0.163391E+06 0.521136E+07 0.521136E+07 - 0.190000E+00 0.506460E+07 0.174121E+06 0.506427E+07 0.506427E+07 - 0.191000E+00 0.492087E+07 0.212582E+06 0.492056E+07 0.492056E+07 - 0.192000E+00 0.478041E+07 0.207589E+06 0.478019E+07 0.478019E+07 - 0.193000E+00 0.464332E+07 0.148633E+06 0.464311E+07 0.464311E+07 - 0.194000E+00 0.450943E+07 0.131901E+06 0.450928E+07 0.450928E+07 - 0.195000E+00 0.437874E+07 0.128735E+06 0.437865E+07 0.437865E+07 - 0.196000E+00 0.425121E+07 0.163310E+06 0.425119E+07 0.425119E+07 - 0.197000E+00 0.412682E+07 0.134823E+06 0.412684E+07 0.412684E+07 - 0.198000E+00 0.400550E+07 0.119564E+06 0.400555E+07 0.400555E+07 - 0.199000E+00 0.388721E+07 0.139940E+06 0.388730E+07 0.388730E+07 - 0.200000E+00 0.377188E+07 0.125095E+06 0.377201E+07 0.377201E+07 - 0.201000E+00 0.365951E+07 0.121971E+06 0.365967E+07 0.365967E+07 - 0.202000E+00 0.354998E+07 0.129716E+06 0.355020E+07 0.355020E+07 - 0.203000E+00 0.344335E+07 0.126440E+06 0.344358E+07 0.344358E+07 - 0.204000E+00 0.333949E+07 0.112958E+06 0.333970E+07 0.333970E+07 - 0.205000E+00 0.323839E+07 0.100066E+06 0.323868E+07 0.323868E+07 - 0.206000E+00 0.313998E+07 0.146244E+06 0.314031E+07 0.314031E+07 - 0.207000E+00 0.304425E+07 0.161467E+06 0.304459E+07 0.304459E+07 - 0.208000E+00 0.295110E+07 0.120272E+06 0.295149E+07 0.295149E+07 - 0.209000E+00 0.286059E+07 0.901086E+05 0.286095E+07 0.286095E+07 - 0.210000E+00 0.277253E+07 0.122851E+06 0.277294E+07 0.277294E+07 - 0.211000E+00 0.268697E+07 0.939903E+05 0.268740E+07 0.268740E+07 - 0.212000E+00 0.260385E+07 0.998318E+05 0.260429E+07 0.260429E+07 - 0.213000E+00 0.252310E+07 0.113388E+06 0.252357E+07 0.252357E+07 - 0.214000E+00 0.244472E+07 0.102495E+06 0.244518E+07 0.244518E+07 - 0.215000E+00 0.236864E+07 0.844183E+05 0.236910E+07 0.236910E+07 - 0.216000E+00 0.229478E+07 0.104573E+06 0.229526E+07 0.229526E+07 - 0.217000E+00 0.222318E+07 0.945072E+05 0.222363E+07 0.222363E+07 - 0.218000E+00 0.215370E+07 0.848988E+05 0.215417E+07 0.215417E+07 - 0.219000E+00 0.208632E+07 0.757333E+05 0.208683E+07 0.208683E+07 - 0.220000E+00 0.202104E+07 0.669975E+05 0.202156E+07 0.202156E+07 - 0.221000E+00 0.195783E+07 0.782350E+05 0.195832E+07 0.195832E+07 - 0.222000E+00 0.189659E+07 0.761293E+05 0.189709E+07 0.189709E+07 - 0.223000E+00 0.183730E+07 0.617332E+05 0.183780E+07 0.183780E+07 - 0.224000E+00 0.177989E+07 0.841000E+05 0.178041E+07 0.178041E+07 - 0.225000E+00 0.172442E+07 0.701493E+05 0.172490E+07 0.172490E+07 - 0.226000E+00 0.167070E+07 0.682649E+05 0.167121E+07 0.167121E+07 - 0.227000E+00 0.161882E+07 0.664365E+05 0.161930E+07 0.161930E+07 - 0.228000E+00 0.156867E+07 0.592722E+05 0.156913E+07 0.156913E+07 - 0.229000E+00 0.152019E+07 0.576914E+05 0.152067E+07 0.152067E+07 - 0.230000E+00 0.147342E+07 0.663702E+05 0.147388E+07 0.147388E+07 - 0.231000E+00 0.142828E+07 0.646152E+05 0.142871E+07 0.142871E+07 - 0.232000E+00 0.138469E+07 0.532344E+05 0.138513E+07 0.138513E+07 - 0.233000E+00 0.134268E+07 0.754046E+05 0.134310E+07 0.134310E+07 - 0.234000E+00 0.130218E+07 0.504920E+05 0.130258E+07 0.130258E+07 - 0.235000E+00 0.126311E+07 0.447140E+05 0.126353E+07 0.126353E+07 - 0.236000E+00 0.122552E+07 0.522807E+05 0.122592E+07 0.122592E+07 - 0.237000E+00 0.118933E+07 0.721804E+05 0.118971E+07 0.118971E+07 - 0.238000E+00 0.115449E+07 0.579437E+05 0.115486E+07 0.115486E+07 - 0.239000E+00 0.112097E+07 0.605326E+05 0.112136E+07 0.112136E+07 - 0.240000E+00 0.108877E+07 0.432948E+05 0.108914E+07 0.108914E+07 - 0.241000E+00 0.105785E+07 0.460798E+05 0.105819E+07 0.105819E+07 - 0.242000E+00 0.102813E+07 0.449704E+05 0.102846E+07 0.102846E+07 - 0.243000E+00 0.999610E+06 0.512200E+05 0.999930E+06 0.999930E+06 - 0.244000E+00 0.972255E+06 0.535956E+05 0.972560E+06 0.972560E+06 - 0.245000E+00 0.946024E+06 0.383991E+05 0.946320E+06 0.946320E+06 - 0.246000E+00 0.920900E+06 0.409432E+05 0.921178E+06 0.921178E+06 - 0.247000E+00 0.896842E+06 0.366988E+05 0.897103E+06 0.897103E+06 - 0.248000E+00 0.873815E+06 0.359007E+05 0.874064E+06 0.874064E+06 - 0.249000E+00 0.851785E+06 0.383303E+05 0.852031E+06 0.852031E+06 - 0.250000E+00 0.830738E+06 0.344050E+05 0.830975E+06 0.830975E+06 - 0.251000E+00 0.810629E+06 0.490269E+05 0.810867E+06 0.810867E+06 - 0.252000E+00 0.791470E+06 0.360435E+05 0.791677E+06 0.791677E+06 - 0.253000E+00 0.773187E+06 0.441876E+05 0.773377E+06 0.773377E+06 - 0.254000E+00 0.755770E+06 0.317990E+05 0.755941E+06 0.755941E+06 - 0.255000E+00 0.739166E+06 0.312224E+05 0.739298E+06 0.739298E+06 - 0.256000E+00 0.723394E+06 0.418302E+05 0.723551E+06 0.723551E+06 - 0.257000E+00 0.708395E+06 0.328979E+05 0.708544E+06 0.708544E+06 - 0.258000E+00 0.694162E+06 0.350587E+05 0.694296E+06 0.694296E+06 - 0.259000E+00 0.680658E+06 0.292002E+05 0.680780E+06 0.680780E+06 - 0.260000E+00 0.667869E+06 0.313765E+05 0.667973E+06 0.667973E+06 - 0.261000E+00 0.655735E+06 0.257704E+05 0.655850E+06 0.655850E+06 - 0.262000E+00 0.644302E+06 0.305013E+05 0.644388E+06 0.644388E+06 - 0.263000E+00 0.633468E+06 0.275939E+05 0.633564E+06 0.633564E+06 - 0.264000E+00 0.623274E+06 0.297302E+05 0.623355E+06 0.623355E+06 - 0.265000E+00 0.613666E+06 0.391764E+05 0.613740E+06 0.613740E+06 - 0.266000E+00 0.604622E+06 0.242151E+05 0.604696E+06 0.604696E+06 - 0.267000E+00 0.596145E+06 0.239650E+05 0.596202E+06 0.596202E+06 - 0.268000E+00 0.588193E+06 0.237336E+05 0.588238E+06 0.588238E+06 - 0.269000E+00 0.580735E+06 0.235198E+05 0.580784E+06 0.580784E+06 - 0.270000E+00 0.573785E+06 0.279893E+05 0.573819E+06 0.573819E+06 - 0.271000E+00 0.567296E+06 0.277748E+05 0.567326E+06 0.567326E+06 - 0.272000E+00 0.561293E+06 0.344774E+05 0.561279E+06 0.561279E+06 - 0.273000E+00 0.555676E+06 0.228383E+05 0.555674E+06 0.555674E+06 - 0.274000E+00 0.550458E+06 0.317889E+05 0.550481E+06 0.550481E+06 - 0.275000E+00 0.545698E+06 0.225919E+05 0.545685E+06 0.545685E+06 - 0.276000E+00 0.541259E+06 0.314850E+05 0.541269E+06 0.541269E+06 - 0.277000E+00 0.537225E+06 0.224023E+05 0.537218E+06 0.537218E+06 - 0.278000E+00 0.533514E+06 0.245603E+05 0.533514E+06 0.533514E+06 - 0.279000E+00 0.530155E+06 0.267198E+05 0.530142E+06 0.530142E+06 - 0.280000E+00 0.527096E+06 0.266605E+05 0.527087E+06 0.527087E+06 - 0.281000E+00 0.524339E+06 0.266155E+05 0.524333E+06 0.524333E+06 - 0.282000E+00 0.521879E+06 0.287999E+05 0.521865E+06 0.521865E+06 - 0.283000E+00 0.519694E+06 0.332084E+05 0.519670E+06 0.519670E+06 - 0.284000E+00 0.517747E+06 0.287738E+05 0.517733E+06 0.517733E+06 - 0.285000E+00 0.516067E+06 0.265671E+05 0.516041E+06 0.516041E+06 - 0.286000E+00 0.514596E+06 0.243687E+05 0.514581E+06 0.514581E+06 - 0.287000E+00 0.513357E+06 0.221770E+05 0.513339E+06 0.513339E+06 - 0.288000E+00 0.512314E+06 0.244297E+05 0.512304E+06 0.512304E+06 - 0.289000E+00 0.511487E+06 0.355995E+05 0.511461E+06 0.511461E+06 - 0.290000E+00 0.510812E+06 0.245266E+05 0.510806E+06 0.510806E+06 - 0.291000E+00 0.510343E+06 0.223530E+05 0.510320E+06 0.510320E+06 - 0.292000E+00 0.510011E+06 0.246565E+05 0.509994E+06 0.509994E+06 - 0.293000E+00 0.509850E+06 0.292297E+05 0.509817E+06 0.509817E+06 - 0.294000E+00 0.509795E+06 0.225584E+05 0.509779E+06 0.509779E+06 - 0.295000E+00 0.509899E+06 0.271674E+05 0.509870E+06 0.509870E+06 - 0.296000E+00 0.510104E+06 0.295427E+05 0.510080E+06 0.510080E+06 - 0.297000E+00 0.510414E+06 0.228155E+05 0.510400E+06 0.510400E+06 - 0.298000E+00 0.510837E+06 0.252022E+05 0.510821E+06 0.510821E+06 - 0.299000E+00 0.511361E+06 0.230112E+05 0.511332E+06 0.511332E+06 - 0.300000E+00 0.511942E+06 0.254256E+05 0.511927E+06 0.511927E+06 - 0.301000E+00 0.512624E+06 0.301885E+05 0.512597E+06 0.512597E+06 - 0.302000E+00 0.513345E+06 0.303310E+05 0.513333E+06 0.513333E+06 - 0.303000E+00 0.514145E+06 0.398566E+05 0.514127E+06 0.514127E+06 - 0.304000E+00 0.515000E+06 0.353419E+05 0.514973E+06 0.514973E+06 - 0.305000E+00 0.515879E+06 0.260468E+05 0.515863E+06 0.515863E+06 - 0.306000E+00 0.516796E+06 0.309380E+05 0.516765E+06 0.516765E+06 - 0.307000E+00 0.517764E+06 0.239207E+05 0.517748E+06 0.517748E+06 - 0.308000E+00 0.518734E+06 0.312563E+05 0.518729E+06 0.518729E+06 - 0.309000E+00 0.519739E+06 0.265846E+05 0.519728E+06 0.519728E+06 - 0.310000E+00 0.520750E+06 0.437273E+05 0.520739E+06 0.520739E+06 - 0.311000E+00 0.521751E+06 0.317433E+05 0.521755E+06 0.521755E+06 - 0.312000E+00 0.522769E+06 0.245440E+05 0.522771E+06 0.522771E+06 - 0.313000E+00 0.523774E+06 0.246698E+05 0.523782E+06 0.523782E+06 - 0.314000E+00 0.524786E+06 0.297554E+05 0.524783E+06 0.524783E+06 - 0.315000E+00 0.525758E+06 0.274130E+05 0.525769E+06 0.525769E+06 - 0.316000E+00 0.526725E+06 0.250458E+05 0.526735E+06 0.526735E+06 - 0.317000E+00 0.527670E+06 0.276869E+05 0.527677E+06 0.527677E+06 - 0.318000E+00 0.528570E+06 0.252921E+05 0.528590E+06 0.528590E+06 - 0.319000E+00 0.529461E+06 0.279556E+05 0.529471E+06 0.529471E+06 - 0.320000E+00 0.530309E+06 0.383016E+05 0.530315E+06 0.530315E+06 - 0.321000E+00 0.531108E+06 0.436093E+05 0.531118E+06 0.531118E+06 - 0.322000E+00 0.531882E+06 0.386546E+05 0.531878E+06 0.531878E+06 - 0.323000E+00 0.532579E+06 0.465901E+05 0.532589E+06 0.532589E+06 - 0.324000E+00 0.533237E+06 0.259953E+05 0.533253E+06 0.533253E+06 - 0.325000E+00 0.533843E+06 0.313259E+05 0.533862E+06 0.533862E+06 - 0.326000E+00 0.534400E+06 0.262123E+05 0.534415E+06 0.534415E+06 - 0.327000E+00 0.534888E+06 0.421064E+05 0.534909E+06 0.534909E+06 - 0.328000E+00 0.535332E+06 0.290605E+05 0.535342E+06 0.535342E+06 - 0.329000E+00 0.535693E+06 0.291685E+05 0.535711E+06 0.535711E+06 - 0.330000E+00 0.536008E+06 0.345966E+05 0.536014E+06 0.536014E+06 - 0.331000E+00 0.536214E+06 0.373848E+05 0.536249E+06 0.536249E+06 - 0.332000E+00 0.536406E+06 0.375109E+05 0.536414E+06 0.536414E+06 - 0.333000E+00 0.536498E+06 0.322543E+05 0.536508E+06 0.536508E+06 - 0.334000E+00 0.536522E+06 0.350483E+05 0.536529E+06 0.536529E+06 - 0.335000E+00 0.536465E+06 0.351492E+05 0.536475E+06 0.536475E+06 - 0.336000E+00 0.536338E+06 0.352455E+05 0.536344E+06 0.536344E+06 - 0.337000E+00 0.536124E+06 0.271815E+05 0.536137E+06 0.536137E+06 - 0.338000E+00 0.535848E+06 0.381470E+05 0.535852E+06 0.535852E+06 - 0.339000E+00 0.535473E+06 0.300400E+05 0.535487E+06 0.535487E+06 - 0.340000E+00 0.535025E+06 0.383131E+05 0.535040E+06 0.535040E+06 - 0.341000E+00 0.534492E+06 0.356453E+05 0.534516E+06 0.534516E+06 - 0.342000E+00 0.533899E+06 0.384568E+05 0.533908E+06 0.533908E+06 - 0.343000E+00 0.533196E+06 0.275129E+05 0.533219E+06 0.533219E+06 - 0.344000E+00 0.532442E+06 0.303093E+05 0.532448E+06 0.532448E+06 - 0.345000E+00 0.531586E+06 0.275893E+05 0.531593E+06 0.531593E+06 - 0.346000E+00 0.530667E+06 0.386697E+05 0.530656E+06 0.530656E+06 - 0.347000E+00 0.529632E+06 0.414702E+05 0.529637E+06 0.529637E+06 - 0.348000E+00 0.528536E+06 0.359695E+05 0.528534E+06 0.528534E+06 - 0.349000E+00 0.527356E+06 0.276862E+05 0.527349E+06 0.527349E+06 - 0.350000E+00 0.526087E+06 0.304683E+05 0.526081E+06 0.526081E+06 - 0.351000E+00 0.524759E+06 0.277073E+05 0.524731E+06 0.524731E+06 - 0.352000E+00 0.523312E+06 0.387931E+05 0.523299E+06 0.523299E+06 - 0.353000E+00 0.521798E+06 0.304782E+05 0.521785E+06 0.521785E+06 - 0.354000E+00 0.520209E+06 0.304713E+05 0.520191E+06 0.520191E+06 - 0.355000E+00 0.518541E+06 0.304591E+05 0.518517E+06 0.518517E+06 - 0.356000E+00 0.516780E+06 0.304409E+05 0.516763E+06 0.516763E+06 - 0.357000E+00 0.514947E+06 0.414790E+05 0.514915E+06 0.514915E+06 - 0.358000E+00 0.513039E+06 0.331526E+05 0.513021E+06 0.513021E+06 - 0.359000E+00 0.511057E+06 0.331165E+05 0.511034E+06 0.511034E+06 - 0.360000E+00 0.509006E+06 0.330752E+05 0.508971E+06 0.508971E+06 - 0.361000E+00 0.506862E+06 0.330272E+05 0.506833E+06 0.506833E+06 - 0.362000E+00 0.504674E+06 0.274795E+05 0.504622E+06 0.504622E+06 - 0.363000E+00 0.502382E+06 0.329161E+05 0.502338E+06 0.502338E+06 - 0.364000E+00 0.500022E+06 0.328514E+05 0.499983E+06 0.499983E+06 - 0.365000E+00 0.497588E+06 0.300493E+05 0.497557E+06 0.497557E+06 - 0.366000E+00 0.495101E+06 0.408830E+05 0.495063E+06 0.495063E+06 - 0.367000E+00 0.492530E+06 0.326252E+05 0.492502E+06 0.492502E+06 - 0.368000E+00 0.489924E+06 0.379642E+05 0.489875E+06 0.489875E+06 - 0.369000E+00 0.487247E+06 0.324507E+05 0.487184E+06 0.487184E+06 - 0.370000E+00 0.484473E+06 0.323531E+05 0.484430E+06 0.484430E+06 - 0.371000E+00 0.481648E+06 0.295635E+05 0.481615E+06 0.481615E+06 - 0.372000E+00 0.478786E+06 0.348245E+05 0.478740E+06 0.478740E+06 - 0.373000E+00 0.475850E+06 0.347038E+05 0.475807E+06 0.475807E+06 - 0.374000E+00 0.472864E+06 0.372381E+05 0.472816E+06 0.472816E+06 - 0.375000E+00 0.469824E+06 0.370973E+05 0.469774E+06 0.469774E+06 - 0.376000E+00 0.466733E+06 0.369513E+05 0.466678E+06 0.466678E+06 - 0.377000E+00 0.463579E+06 0.289134E+05 0.463530E+06 0.463530E+06 - 0.378000E+00 0.460384E+06 0.444938E+05 0.460334E+06 0.460334E+06 - 0.379000E+00 0.457158E+06 0.286638E+05 0.457089E+06 0.457089E+06 - 0.380000E+00 0.453865E+06 0.311261E+05 0.453800E+06 0.453800E+06 - 0.381000E+00 0.450525E+06 0.309781E+05 0.450467E+06 0.450467E+06 - 0.382000E+00 0.447155E+06 0.333958E+05 0.447091E+06 0.447091E+06 - 0.383000E+00 0.443732E+06 0.281149E+05 0.443676E+06 0.443676E+06 - 0.384000E+00 0.440293E+06 0.355977E+05 0.440223E+06 0.440223E+06 - 0.385000E+00 0.436791E+06 0.404643E+05 0.436734E+06 0.436734E+06 - 0.386000E+00 0.433285E+06 0.326978E+05 0.433211E+06 0.433211E+06 - 0.387000E+00 0.429717E+06 0.350134E+05 0.429656E+06 0.429656E+06 - 0.388000E+00 0.426126E+06 0.348102E+05 0.426070E+06 0.426070E+06 - 0.389000E+00 0.422503E+06 0.271881E+05 0.422457E+06 0.422457E+06 - 0.390000E+00 0.418877E+06 0.245672E+05 0.418816E+06 0.418816E+06 - 0.391000E+00 0.415208E+06 0.317385E+05 0.415151E+06 0.415151E+06 - 0.392000E+00 0.411524E+06 0.291112E+05 0.411465E+06 0.411465E+06 - 0.393000E+00 0.407810E+06 0.337422E+05 0.407758E+06 0.407758E+06 - 0.394000E+00 0.404105E+06 0.263376E+05 0.404032E+06 0.404032E+06 - 0.395000E+00 0.400354E+06 0.285372E+05 0.400290E+06 0.400290E+06 - 0.396000E+00 0.396590E+06 0.236169E+05 0.396533E+06 0.396533E+06 - 0.397000E+00 0.392818E+06 0.281415E+05 0.392763E+06 0.392763E+06 - 0.398000E+00 0.389043E+06 0.279411E+05 0.388983E+06 0.388983E+06 - 0.399000E+00 0.385254E+06 0.300498E+05 0.385193E+06 0.385193E+06 - 0.400000E+00 0.381454E+06 0.275333E+05 0.381397E+06 0.381397E+06 - 0.401000E+00 0.377643E+06 0.296034E+05 0.377596E+06 0.377596E+06 - 0.402000E+00 0.373847E+06 0.248589E+05 0.373791E+06 0.373791E+06 - 0.403000E+00 0.370028E+06 0.269085E+05 0.369985E+06 0.369985E+06 - 0.404000E+00 0.366222E+06 0.266976E+05 0.366179E+06 0.366179E+06 - 0.405000E+00 0.362415E+06 0.220711E+05 0.362376E+06 0.362376E+06 - 0.406000E+00 0.358623E+06 0.306515E+05 0.358576E+06 0.358576E+06 - 0.407000E+00 0.354827E+06 0.325731E+05 0.354781E+06 0.354781E+06 - 0.408000E+00 0.351036E+06 0.301505E+05 0.350985E+06 0.350985E+06 - 0.409000E+00 0.347253E+06 0.405765E+05 0.347217E+06 0.347217E+06 - 0.410000E+00 0.343496E+06 0.254118E+05 0.343452E+06 0.343452E+06 - 0.411000E+00 0.339737E+06 0.251949E+05 0.339698E+06 0.339698E+06 - 0.412000E+00 0.335986E+06 0.249772E+05 0.335957E+06 0.335957E+06 - 0.413000E+00 0.332267E+06 0.247605E+05 0.332233E+06 0.332233E+06 - 0.414000E+00 0.328553E+06 0.265882E+05 0.328525E+06 0.328525E+06 - 0.415000E+00 0.324871E+06 0.222991E+05 0.324837E+06 0.324837E+06 - 0.416000E+00 0.321184E+06 0.200901E+05 0.321168E+06 0.321168E+06 - 0.417000E+00 0.317540E+06 0.258827E+05 0.317521E+06 0.317521E+06 - 0.418000E+00 0.313935E+06 0.256501E+05 0.313897E+06 0.313897E+06 - 0.419000E+00 0.310305E+06 0.293238E+05 0.310297E+06 0.310297E+06 - 0.420000E+00 0.306733E+06 0.213072E+05 0.306723E+06 0.306723E+06 - 0.421000E+00 0.303196E+06 0.211115E+05 0.303176E+06 0.303176E+06 - 0.422000E+00 0.299681E+06 0.190148E+05 0.299658E+06 0.299658E+06 - 0.423000E+00 0.296181E+06 0.282557E+05 0.296169E+06 0.296169E+06 - 0.424000E+00 0.292722E+06 0.205271E+05 0.292710E+06 0.292710E+06 - 0.425000E+00 0.289293E+06 0.221830E+05 0.289282E+06 0.289282E+06 - 0.426000E+00 0.285885E+06 0.292975E+05 0.285890E+06 0.285890E+06 - 0.427000E+00 0.282534E+06 0.217664E+05 0.282530E+06 0.282530E+06 - 0.428000E+00 0.279201E+06 0.179666E+05 0.279205E+06 0.279205E+06 - 0.429000E+00 0.275925E+06 0.195769E+05 0.275917E+06 0.275917E+06 - 0.430000E+00 0.272676E+06 0.246799E+05 0.272665E+06 0.272665E+06 - 0.431000E+00 0.269440E+06 0.226976E+05 0.269452E+06 0.269452E+06 - 0.432000E+00 0.266275E+06 0.224829E+05 0.266276E+06 0.266276E+06 - 0.433000E+00 0.263132E+06 0.222689E+05 0.263140E+06 0.263140E+06 - 0.434000E+00 0.260039E+06 0.237545E+05 0.260045E+06 0.260045E+06 - 0.435000E+00 0.256975E+06 0.201674E+05 0.256992E+06 0.256992E+06 - 0.436000E+00 0.253981E+06 0.166484E+05 0.253980E+06 0.253980E+06 - 0.437000E+00 0.251002E+06 0.181399E+05 0.251010E+06 0.251010E+06 - 0.438000E+00 0.248061E+06 0.179683E+05 0.248083E+06 0.248083E+06 - 0.439000E+00 0.245182E+06 0.194184E+05 0.245200E+06 0.245200E+06 - 0.440000E+00 0.242341E+06 0.176339E+05 0.242361E+06 0.242361E+06 - 0.441000E+00 0.239549E+06 0.206467E+05 0.239567E+06 0.239567E+06 - 0.442000E+00 0.236804E+06 0.157356E+05 0.236816E+06 0.236816E+06 - 0.443000E+00 0.234102E+06 0.187094E+05 0.234114E+06 0.234114E+06 - 0.444000E+00 0.231449E+06 0.200840E+05 0.231456E+06 0.231456E+06 - 0.445000E+00 0.228817E+06 0.229618E+05 0.228844E+06 0.228844E+06 - 0.446000E+00 0.226246E+06 0.182038E+05 0.226279E+06 0.226279E+06 - 0.447000E+00 0.223736E+06 0.225526E+05 0.223761E+06 0.223761E+06 - 0.448000E+00 0.221256E+06 0.149016E+05 0.221289E+06 0.221289E+06 - 0.449000E+00 0.218841E+06 0.177261E+05 0.218865E+06 0.218865E+06 - 0.450000E+00 0.216473E+06 0.219666E+05 0.216488E+06 0.216488E+06 - 0.451000E+00 0.214130E+06 0.174216E+05 0.214158E+06 0.214158E+06 - 0.452000E+00 0.211853E+06 0.230326E+05 0.211876E+06 0.211876E+06 - 0.453000E+00 0.209611E+06 0.214117E+05 0.209642E+06 0.209642E+06 - 0.454000E+00 0.207426E+06 0.212352E+05 0.207454E+06 0.207454E+06 - 0.455000E+00 0.205291E+06 0.238712E+05 0.205315E+06 0.205315E+06 - 0.456000E+00 0.203195E+06 0.222864E+05 0.203222E+06 0.203222E+06 - 0.457000E+00 0.201154E+06 0.179651E+05 0.201177E+06 0.201177E+06 - 0.458000E+00 0.199150E+06 0.150826E+05 0.199173E+06 0.199173E+06 - 0.459000E+00 0.197193E+06 0.163276E+05 0.197220E+06 0.197220E+06 - 0.460000E+00 0.195308E+06 0.175572E+05 0.195318E+06 0.195318E+06 - 0.461000E+00 0.193431E+06 0.187667E+05 0.193467E+06 0.193467E+06 - 0.462000E+00 0.191634E+06 0.146399E+05 0.191655E+06 0.191655E+06 - 0.463000E+00 0.189868E+06 0.158578E+05 0.189890E+06 0.189890E+06 - 0.464000E+00 0.188139E+06 0.183718E+05 0.188170E+06 0.188170E+06 - 0.465000E+00 0.186474E+06 0.130345E+05 0.186496E+06 0.186496E+06 - 0.466000E+00 0.184844E+06 0.155380E+05 0.184867E+06 0.184867E+06 - 0.467000E+00 0.183247E+06 0.154367E+05 0.183282E+06 0.183282E+06 - 0.468000E+00 0.181726E+06 0.204551E+05 0.181741E+06 0.181741E+06 - 0.469000E+00 0.180217E+06 0.165169E+05 0.180244E+06 0.180244E+06 - 0.470000E+00 0.178761E+06 0.138924E+05 0.178791E+06 0.178791E+06 - 0.471000E+00 0.177352E+06 0.150678E+05 0.177380E+06 0.177380E+06 - 0.472000E+00 0.175987E+06 0.187294E+05 0.176011E+06 0.176011E+06 - 0.473000E+00 0.174670E+06 0.149029E+05 0.174685E+06 0.174685E+06 - 0.474000E+00 0.173368E+06 0.148230E+05 0.173400E+06 0.173400E+06 - 0.475000E+00 0.172127E+06 0.147478E+05 0.172155E+06 0.172155E+06 - 0.476000E+00 0.170940E+06 0.207923E+05 0.170950E+06 0.170950E+06 - 0.477000E+00 0.169757E+06 0.170402E+05 0.169785E+06 0.169785E+06 - 0.478000E+00 0.168635E+06 0.193862E+05 0.168659E+06 0.168659E+06 - 0.479000E+00 0.167561E+06 0.132709E+05 0.167572E+06 0.167572E+06 - 0.480000E+00 0.166500E+06 0.216233E+05 0.166521E+06 0.166521E+06 - 0.481000E+00 0.165511E+06 0.143597E+05 0.165508E+06 0.165508E+06 - 0.482000E+00 0.164513E+06 0.154946E+05 0.164532E+06 0.164532E+06 - 0.483000E+00 0.163570E+06 0.154377E+05 0.163591E+06 0.163591E+06 - 0.484000E+00 0.162669E+06 0.142010E+05 0.162682E+06 0.162682E+06 - 0.485000E+00 0.161796E+06 0.153334E+05 0.161811E+06 0.161811E+06 - 0.486000E+00 0.160969E+06 0.164623E+05 0.160975E+06 0.160975E+06 - 0.487000E+00 0.160166E+06 0.128966E+05 0.160170E+06 0.160170E+06 - 0.488000E+00 0.159381E+06 0.187049E+05 0.159398E+06 0.159398E+06 - 0.489000E+00 0.158637E+06 0.174897E+05 0.158657E+06 0.158657E+06 - 0.490000E+00 0.157931E+06 0.186105E+05 0.157947E+06 0.157947E+06 - 0.491000E+00 0.157263E+06 0.116060E+05 0.157266E+06 0.157266E+06 - 0.492000E+00 0.156605E+06 0.150553E+05 0.156616E+06 0.156616E+06 - 0.493000E+00 0.155986E+06 0.115586E+05 0.155993E+06 0.155993E+06 - 0.494000E+00 0.155395E+06 0.126919E+05 0.155400E+06 0.155400E+06 - 0.495000E+00 0.154822E+06 0.115188E+05 0.154833E+06 0.154833E+06 - 0.496000E+00 0.154292E+06 0.161035E+05 0.154293E+06 0.154293E+06 - 0.497000E+00 0.153774E+06 0.114869E+05 0.153777E+06 0.153777E+06 - 0.498000E+00 0.153291E+06 0.149160E+05 0.153289E+06 0.153289E+06 - 0.499000E+00 0.152819E+06 0.160460E+05 0.152823E+06 0.152823E+06 - 0.500000E+00 0.152383E+06 0.206129E+05 0.152381E+06 0.152381E+06 - 0.501000E+00 0.151949E+06 0.125859E+05 0.151963E+06 0.151963E+06 - 0.502000E+00 0.151564E+06 0.182968E+05 0.151567E+06 0.151567E+06 - 0.503000E+00 0.151199E+06 0.160029E+05 0.151191E+06 0.151191E+06 - 0.504000E+00 0.150830E+06 0.125679E+05 0.150837E+06 0.150837E+06 - 0.505000E+00 0.150502E+06 0.137077E+05 0.150503E+06 0.150503E+06 - 0.506000E+00 0.150178E+06 0.137053E+05 0.150188E+06 0.150188E+06 - 0.507000E+00 0.149891E+06 0.171326E+05 0.149892E+06 0.149892E+06 - 0.508000E+00 0.149610E+06 0.137072E+05 0.149613E+06 0.149613E+06 - 0.509000E+00 0.149353E+06 0.125681E+05 0.149341E+06 0.149341E+06 - 0.510000E+00 0.149118E+06 0.137159E+05 0.149102E+06 0.149102E+06 - 0.511000E+00 0.148886E+06 0.160082E+05 0.148868E+06 0.148868E+06 - 0.512000E+00 0.148674E+06 0.205929E+05 0.148667E+06 0.148667E+06 - 0.513000E+00 0.148461E+06 0.194588E+05 0.148468E+06 0.148468E+06 - 0.514000E+00 0.148282E+06 0.183277E+05 0.148284E+06 0.148284E+06 - 0.515000E+00 0.148106E+06 0.114634E+05 0.148113E+06 0.148113E+06 - 0.516000E+00 0.147954E+06 0.137686E+05 0.147955E+06 0.147955E+06 - 0.517000E+00 0.147808E+06 0.172270E+05 0.147809E+06 0.147809E+06 - 0.518000E+00 0.147670E+06 0.126458E+05 0.147674E+06 0.147674E+06 - 0.519000E+00 0.147548E+06 0.172632E+05 0.147551E+06 0.147551E+06 - 0.520000E+00 0.147434E+06 0.138263E+05 0.147438E+06 0.147438E+06 - 0.521000E+00 0.147339E+06 0.115367E+05 0.147335E+06 0.147335E+06 - 0.522000E+00 0.147233E+06 0.115504E+05 0.147241E+06 0.147241E+06 - 0.523000E+00 0.147167E+06 0.150375E+05 0.147155E+06 0.147155E+06 - 0.524000E+00 0.147086E+06 0.115830E+05 0.147079E+06 0.147079E+06 - 0.525000E+00 0.147015E+06 0.150793E+05 0.147010E+06 0.147010E+06 - 0.526000E+00 0.146946E+06 0.116161E+05 0.146948E+06 0.146948E+06 - 0.527000E+00 0.146899E+06 0.209420E+05 0.146892E+06 0.146892E+06 - 0.528000E+00 0.146844E+06 0.128173E+05 0.146844E+06 0.146844E+06 - 0.529000E+00 0.146795E+06 0.198394E+05 0.146800E+06 0.146800E+06 - 0.530000E+00 0.146768E+06 0.140281E+05 0.146762E+06 0.146762E+06 - 0.531000E+00 0.146734E+06 0.128803E+05 0.146729E+06 0.146729E+06 - 0.532000E+00 0.146699E+06 0.140743E+05 0.146699E+06 0.146699E+06 - 0.533000E+00 0.146673E+06 0.164479E+05 0.146675E+06 0.146675E+06 - 0.534000E+00 0.146639E+06 0.176516E+05 0.146653E+06 0.146653E+06 - 0.535000E+00 0.146631E+06 0.141469E+05 0.146631E+06 0.146631E+06 - 0.536000E+00 0.146620E+06 0.212585E+05 0.146615E+06 0.146615E+06 - 0.537000E+00 0.146603E+06 0.118309E+05 0.146605E+06 0.146605E+06 - 0.538000E+00 0.146596E+06 0.118523E+05 0.146593E+06 0.146593E+06 - 0.539000E+00 0.146577E+06 0.166218E+05 0.146583E+06 0.146583E+06 - 0.540000E+00 0.146573E+06 0.130839E+05 0.146574E+06 0.146574E+06 - 0.541000E+00 0.146566E+06 0.131074E+05 0.146566E+06 0.146566E+06 - 0.542000E+00 0.146553E+06 0.131304E+05 0.146558E+06 0.146558E+06 - 0.543000E+00 0.146567E+06 0.155479E+05 0.146551E+06 0.146551E+06 - 0.544000E+00 0.146552E+06 0.143768E+05 0.146543E+06 0.146543E+06 - 0.545000E+00 0.146535E+06 0.156015E+05 0.146536E+06 0.146536E+06 - 0.546000E+00 0.146527E+06 0.168316E+05 0.146527E+06 0.146527E+06 - 0.547000E+00 0.146520E+06 0.180659E+05 0.146518E+06 0.146518E+06 - 0.548000E+00 0.146499E+06 0.168898E+05 0.146506E+06 0.146506E+06 - 0.549000E+00 0.146500E+06 0.120862E+05 0.146495E+06 0.146495E+06 - 0.550000E+00 0.146476E+06 0.181594E+05 0.146480E+06 0.146480E+06 - 0.551000E+00 0.146459E+06 0.121268E+05 0.146464E+06 0.146464E+06 - 0.552000E+00 0.146441E+06 0.133620E+05 0.146446E+06 0.146446E+06 - 0.553000E+00 0.146411E+06 0.146001E+05 0.146425E+06 0.146425E+06 - 0.554000E+00 0.146399E+06 0.134065E+05 0.146401E+06 0.146401E+06 - 0.555000E+00 0.146372E+06 0.122075E+05 0.146375E+06 0.146375E+06 - 0.556000E+00 0.146341E+06 0.122268E+05 0.146345E+06 0.146345E+06 - 0.557000E+00 0.146314E+06 0.122465E+05 0.146312E+06 0.146312E+06 - 0.558000E+00 0.146262E+06 0.122641E+05 0.146276E+06 0.146276E+06 - 0.559000E+00 0.146229E+06 0.135115E+05 0.146236E+06 0.146236E+06 - 0.560000E+00 0.146190E+06 0.123019E+05 0.146182E+06 0.146182E+06 - 0.561000E+00 0.146148E+06 0.160163E+05 0.146139E+06 0.146139E+06 - 0.562000E+00 0.146089E+06 0.148046E+05 0.146082E+06 0.146082E+06 - 0.563000E+00 0.146039E+06 0.148259E+05 0.146035E+06 0.146035E+06 - 0.564000E+00 0.145970E+06 0.173193E+05 0.145975E+06 0.145975E+06 - 0.565000E+00 0.145902E+06 0.161032E+05 0.145909E+06 0.145909E+06 - 0.566000E+00 0.145836E+06 0.198454E+05 0.145839E+06 0.145839E+06 - 0.567000E+00 0.145753E+06 0.173854E+05 0.145764E+06 0.145764E+06 - 0.568000E+00 0.145677E+06 0.136769E+05 0.145684E+06 0.145684E+06 - 0.569000E+00 0.145592E+06 0.161825E+05 0.145599E+06 0.145599E+06 - 0.570000E+00 0.145503E+06 0.149548E+05 0.145509E+06 0.145509E+06 - 0.571000E+00 0.145416E+06 0.137244E+05 0.145413E+06 0.145413E+06 - 0.572000E+00 0.145310E+06 0.124894E+05 0.145313E+06 0.145313E+06 - 0.573000E+00 0.145211E+06 0.187540E+05 0.145206E+06 0.145206E+06 - 0.574000E+00 0.145092E+06 0.150171E+05 0.145094E+06 0.145094E+06 - 0.575000E+00 0.144972E+06 0.162832E+05 0.144977E+06 0.144977E+06 - 0.576000E+00 0.144851E+06 0.137905E+05 0.144854E+06 0.144854E+06 - 0.577000E+00 0.144716E+06 0.150563E+05 0.144725E+06 0.144725E+06 - 0.578000E+00 0.144584E+06 0.150685E+05 0.144590E+06 0.144590E+06 - 0.579000E+00 0.144449E+06 0.188506E+05 0.144450E+06 0.144450E+06 - 0.580000E+00 0.144301E+06 0.138334E+05 0.144303E+06 0.144303E+06 - 0.581000E+00 0.144158E+06 0.125850E+05 0.144151E+06 0.144151E+06 - 0.582000E+00 0.143986E+06 0.188874E+05 0.143992E+06 0.143992E+06 - 0.583000E+00 0.143823E+06 0.151187E+05 0.143827E+06 0.143827E+06 - 0.584000E+00 0.143657E+06 0.138665E+05 0.143656E+06 0.143656E+06 - 0.585000E+00 0.143485E+06 0.126123E+05 0.143479E+06 0.143479E+06 - 0.586000E+00 0.143303E+06 0.201886E+05 0.143295E+06 0.143295E+06 - 0.587000E+00 0.143108E+06 0.189332E+05 0.143105E+06 0.143105E+06 - 0.588000E+00 0.142912E+06 0.214647E+05 0.142911E+06 0.142911E+06 - 0.589000E+00 0.142713E+06 0.176822E+05 0.142708E+06 0.142708E+06 - 0.590000E+00 0.142501E+06 0.138960E+05 0.142500E+06 0.142500E+06 - 0.591000E+00 0.142293E+06 0.176899E+05 0.142285E+06 0.142285E+06 - 0.592000E+00 0.142065E+06 0.139004E+05 0.142063E+06 0.142063E+06 - 0.593000E+00 0.141842E+06 0.126381E+05 0.141836E+06 0.141836E+06 - 0.594000E+00 0.141596E+06 0.164286E+05 0.141602E+06 0.141602E+06 - 0.595000E+00 0.141369E+06 0.176938E+05 0.141361E+06 0.141361E+06 - 0.596000E+00 0.141120E+06 0.139011E+05 0.141114E+06 0.141114E+06 - 0.597000E+00 0.140870E+06 0.138997E+05 0.140861E+06 0.140861E+06 - 0.598000E+00 0.140605E+06 0.164233E+05 0.140601E+06 0.140601E+06 - 0.599000E+00 0.140344E+06 0.164203E+05 0.140334E+06 0.140334E+06 - 0.600000E+00 0.140076E+06 0.138907E+05 0.140062E+06 0.140062E+06 - 0.601000E+00 0.139793E+06 0.138856E+05 0.139783E+06 0.139783E+06 - 0.602000E+00 0.139506E+06 0.126183E+05 0.139497E+06 0.139497E+06 - 0.603000E+00 0.139214E+06 0.176579E+05 0.139205E+06 0.139205E+06 - 0.604000E+00 0.138915E+06 0.163885E+05 0.138907E+06 0.138907E+06 - 0.605000E+00 0.138613E+06 0.138599E+05 0.138602E+06 0.138602E+06 - 0.606000E+00 0.138303E+06 0.138517E+05 0.138291E+06 0.138291E+06 - 0.607000E+00 0.137986E+06 0.163597E+05 0.137974E+06 0.137974E+06 - 0.608000E+00 0.137659E+06 0.150902E+05 0.137650E+06 0.137650E+06 - 0.609000E+00 0.137331E+06 0.125658E+05 0.137320E+06 0.137320E+06 - 0.610000E+00 0.136990E+06 0.188326E+05 0.136984E+06 0.136984E+06 - 0.611000E+00 0.136654E+06 0.137993E+05 0.136642E+06 0.136642E+06 - 0.612000E+00 0.136307E+06 0.137868E+05 0.136289E+06 0.136289E+06 - 0.613000E+00 0.135960E+06 0.125219E+05 0.135939E+06 0.135939E+06 - 0.614000E+00 0.135589E+06 0.212637E+05 0.135577E+06 0.135577E+06 - 0.615000E+00 0.135221E+06 0.149933E+05 0.135210E+06 0.135210E+06 - 0.616000E+00 0.134849E+06 0.124803E+05 0.134837E+06 0.134837E+06 - 0.617000E+00 0.134477E+06 0.137127E+05 0.134458E+06 0.134458E+06 - 0.618000E+00 0.134089E+06 0.199203E+05 0.134073E+06 0.134073E+06 - 0.619000E+00 0.133695E+06 0.198938E+05 0.133683E+06 0.133683E+06 - 0.620000E+00 0.133304E+06 0.186259E+05 0.133286E+06 0.133286E+06 - 0.621000E+00 0.132893E+06 0.161186E+05 0.132884E+06 0.132884E+06 - 0.622000E+00 0.132494E+06 0.136197E+05 0.132477E+06 0.132477E+06 - 0.623000E+00 0.132073E+06 0.173069E+05 0.132063E+06 0.132063E+06 - 0.624000E+00 0.131662E+06 0.123433E+05 0.131644E+06 0.131644E+06 - 0.625000E+00 0.131231E+06 0.135549E+05 0.131220E+06 0.131220E+06 - 0.626000E+00 0.130805E+06 0.172230E+05 0.130790E+06 0.130790E+06 - 0.627000E+00 0.130366E+06 0.159647E+05 0.130354E+06 0.130354E+06 - 0.628000E+00 0.129923E+06 0.147099E+05 0.129914E+06 0.129914E+06 - 0.629000E+00 0.129479E+06 0.134594E+05 0.129468E+06 0.129468E+06 - 0.630000E+00 0.129030E+06 0.134340E+05 0.129017E+06 0.129017E+06 - 0.631000E+00 0.128573E+06 0.158453E+05 0.128562E+06 0.128562E+06 - 0.632000E+00 0.128113E+06 0.170301E+05 0.128101E+06 0.128101E+06 - 0.633000E+00 0.127645E+06 0.133529E+05 0.127636E+06 0.127636E+06 - 0.634000E+00 0.127182E+06 0.121141E+05 0.127166E+06 0.127166E+06 - 0.635000E+00 0.126699E+06 0.145045E+05 0.126691E+06 0.126691E+06 - 0.636000E+00 0.126226E+06 0.144731E+05 0.126212E+06 0.126212E+06 - 0.637000E+00 0.125737E+06 0.120330E+05 0.125730E+06 0.125730E+06 - 0.638000E+00 0.125253E+06 0.132061E+05 0.125242E+06 0.125242E+06 - 0.639000E+00 0.124765E+06 0.167685E+05 0.124748E+06 0.124748E+06 - 0.640000E+00 0.124259E+06 0.131423E+05 0.124252E+06 0.124252E+06 - 0.641000E+00 0.123765E+06 0.166859E+05 0.123751E+06 0.123751E+06 - 0.642000E+00 0.123258E+06 0.154547E+05 0.123247E+06 0.123247E+06 - 0.643000E+00 0.122748E+06 0.154147E+05 0.122739E+06 0.122739E+06 - 0.644000E+00 0.122243E+06 0.141924E+05 0.122228E+06 0.122228E+06 - 0.645000E+00 0.121721E+06 0.141537E+05 0.121713E+06 0.121713E+06 - 0.646000E+00 0.121205E+06 0.164681E+05 0.121194E+06 0.121194E+06 - 0.647000E+00 0.120681E+06 0.164222E+05 0.120673E+06 0.120673E+06 - 0.648000E+00 0.120162E+06 0.128676E+05 0.120149E+06 0.120149E+06 - 0.649000E+00 0.119622E+06 0.163284E+05 0.119621E+06 0.119621E+06 - 0.650000E+00 0.119095E+06 0.127926E+05 0.119091E+06 0.119091E+06 - 0.651000E+00 0.118564E+06 0.185528E+05 0.118558E+06 0.118558E+06 - 0.652000E+00 0.118025E+06 0.184969E+05 0.118022E+06 0.118022E+06 - 0.653000E+00 0.117487E+06 0.138306E+05 0.117484E+06 0.117484E+06 - 0.654000E+00 0.116944E+06 0.137878E+05 0.116944E+06 0.116944E+06 - 0.655000E+00 0.116412E+06 0.148914E+05 0.116401E+06 0.116401E+06 - 0.656000E+00 0.115862E+06 0.114182E+05 0.115857E+06 0.115857E+06 - 0.657000E+00 0.115312E+06 0.170720E+05 0.115310E+06 0.115310E+06 - 0.658000E+00 0.114760E+06 0.136128E+05 0.114763E+06 0.114763E+06 - 0.659000E+00 0.114215E+06 0.124380E+05 0.114213E+06 0.114213E+06 - 0.660000E+00 0.113661E+06 0.146504E+05 0.113662E+06 0.113662E+06 - 0.661000E+00 0.113115E+06 0.112323E+05 0.113110E+06 0.113110E+06 - 0.662000E+00 0.112555E+06 0.145517E+05 0.112569E+06 0.112569E+06 - 0.663000E+00 0.112005E+06 0.145024E+05 0.112000E+06 0.112000E+06 - 0.664000E+00 0.111455E+06 0.122294E+05 0.111460E+06 0.111460E+06 - 0.665000E+00 0.110894E+06 0.155097E+05 0.110892E+06 0.110892E+06 - 0.666000E+00 0.110340E+06 0.121434E+05 0.110336E+06 0.110336E+06 - 0.667000E+00 0.109777E+06 0.131996E+05 0.109780E+06 0.109780E+06 - 0.668000E+00 0.109229E+06 0.153456E+05 0.109224E+06 0.109224E+06 - 0.669000E+00 0.108670E+06 0.120134E+05 0.108667E+06 0.108667E+06 - 0.670000E+00 0.108112E+06 0.108815E+05 0.108111E+06 0.108111E+06 - 0.671000E+00 0.107555E+06 0.184307E+05 0.107555E+06 0.107555E+06 - 0.672000E+00 0.107001E+06 0.162027E+05 0.107000E+06 0.107000E+06 - 0.673000E+00 0.106448E+06 0.107619E+05 0.106446E+06 0.106446E+06 - 0.674000E+00 0.105890E+06 0.150099E+05 0.105891E+06 0.105891E+06 - 0.675000E+00 0.105336E+06 0.117491E+05 0.105338E+06 0.105338E+06 - 0.676000E+00 0.104785E+06 0.106410E+05 0.104787E+06 0.104787E+06 - 0.677000E+00 0.104231E+06 0.127203E+05 0.104236E+06 0.104236E+06 - 0.678000E+00 0.103682E+06 0.116160E+05 0.103686E+06 0.103686E+06 - 0.679000E+00 0.103138E+06 0.126241E+05 0.103139E+06 0.103139E+06 - 0.680000E+00 0.102584E+06 0.125748E+05 0.102592E+06 0.102592E+06 - 0.681000E+00 0.102042E+06 0.146145E+05 0.102049E+06 0.102049E+06 - 0.682000E+00 0.101501E+06 0.155982E+05 0.101507E+06 0.101507E+06 - 0.683000E+00 0.100961E+06 0.176096E+05 0.100967E+06 0.100967E+06 - 0.684000E+00 0.100429E+06 0.103191E+05 0.100429E+06 0.100429E+06 - 0.685000E+00 0.998953E+05 0.133630E+05 0.998944E+05 0.998944E+05 - 0.686000E+00 0.993578E+05 0.112627E+05 0.993616E+05 0.993616E+05 - 0.687000E+00 0.988297E+05 0.132590E+05 0.988317E+05 0.988317E+05 - 0.688000E+00 0.983038E+05 0.162555E+05 0.983085E+05 0.983085E+05 - 0.689000E+00 0.977844E+05 0.141690E+05 0.977846E+05 0.977846E+05 - 0.690000E+00 0.972573E+05 0.110888E+05 0.972601E+05 0.972601E+05 - 0.691000E+00 0.967413E+05 0.100417E+05 0.967426E+05 0.967426E+05 - 0.692000E+00 0.962280E+05 0.120035E+05 0.962287E+05 0.962287E+05 - 0.693000E+00 0.957079E+05 0.149448E+05 0.957177E+05 0.957177E+05 - 0.694000E+00 0.952086E+05 0.129031E+05 0.952108E+05 0.952108E+05 - 0.695000E+00 0.947049E+05 0.177969E+05 0.947077E+05 0.947077E+05 - 0.696000E+00 0.942011E+05 0.128033E+05 0.942081E+05 0.942081E+05 - 0.697000E+00 0.937022E+05 0.147159E+05 0.937124E+05 0.937124E+05 - 0.698000E+00 0.932202E+05 0.117290E+05 0.932215E+05 0.932215E+05 - 0.699000E+00 0.927335E+05 0.146055E+05 0.927343E+05 0.927343E+05 - 0.700000E+00 0.922516E+05 0.145504E+05 0.922516E+05 0.922516E+05 - 0.701000E+00 0.917725E+05 0.115964E+05 0.917740E+05 0.917740E+05 - 0.702000E+00 0.913018E+05 0.125161E+05 0.912991E+05 0.912991E+05 - 0.703000E+00 0.908187E+05 0.124676E+05 0.908299E+05 0.908299E+05 - 0.704000E+00 0.903621E+05 0.114670E+05 0.903658E+05 0.903658E+05 - 0.705000E+00 0.899049E+05 0.123772E+05 0.899053E+05 0.899053E+05 - 0.706000E+00 0.894508E+05 0.123321E+05 0.894503E+05 0.894503E+05 - 0.707000E+00 0.889994E+05 0.945174E+04 0.890002E+05 0.890002E+05 - 0.708000E+00 0.885550E+05 0.103596E+05 0.885550E+05 0.885550E+05 - 0.709000E+00 0.881128E+05 0.140760E+05 0.881151E+05 0.881151E+05 - 0.710000E+00 0.876771E+05 0.102858E+05 0.876801E+05 0.876801E+05 - 0.711000E+00 0.872500E+05 0.111820E+05 0.872502E+05 0.872502E+05 - 0.712000E+00 0.868213E+05 0.928554E+04 0.868258E+05 0.868258E+05 - 0.713000E+00 0.864055E+05 0.138810E+05 0.864210E+05 0.864210E+05 - 0.714000E+00 0.859895E+05 0.138336E+05 0.859903E+05 0.859903E+05 - 0.715000E+00 0.855816E+05 0.137872E+05 0.855988E+05 0.855988E+05 - 0.716000E+00 0.851826E+05 0.109937E+05 0.851816E+05 0.851816E+05 - 0.717000E+00 0.847780E+05 0.109567E+05 0.847841E+05 0.847841E+05 - 0.718000E+00 0.843935E+05 0.100120E+05 0.843923E+05 0.843923E+05 - 0.719000E+00 0.839993E+05 0.136079E+05 0.840061E+05 0.840061E+05 - 0.720000E+00 0.836291E+05 0.153756E+05 0.836252E+05 0.836252E+05 - 0.721000E+00 0.832485E+05 0.135237E+05 0.832501E+05 0.832501E+05 - 0.722000E+00 0.828804E+05 0.107861E+05 0.828807E+05 0.828807E+05 - 0.723000E+00 0.825126E+05 0.985695E+04 0.825168E+05 0.825168E+05 - 0.724000E+00 0.821650E+05 0.116161E+05 0.821592E+05 0.821592E+05 - 0.725000E+00 0.817990E+05 0.133619E+05 0.818062E+05 0.818062E+05 - 0.726000E+00 0.814591E+05 0.977142E+04 0.814594E+05 0.814594E+05 - 0.727000E+00 0.811180E+05 0.115155E+05 0.811191E+05 0.811191E+05 - 0.728000E+00 0.807835E+05 0.883368E+04 0.807830E+05 0.807830E+05 - 0.729000E+00 0.804556E+05 0.969087E+04 0.804531E+05 0.804531E+05 - 0.730000E+00 0.801210E+05 0.149350E+05 0.801292E+05 0.801292E+05 - 0.731000E+00 0.797967E+05 0.113902E+05 0.798104E+05 0.798104E+05 - 0.732000E+00 0.795028E+05 0.131120E+05 0.794980E+05 0.794980E+05 - 0.733000E+00 0.791912E+05 0.104627E+05 0.791911E+05 0.791911E+05 - 0.734000E+00 0.788832E+05 0.956656E+04 0.788895E+05 0.788895E+05 - 0.735000E+00 0.785901E+05 0.104116E+05 0.785935E+05 0.785935E+05 - 0.736000E+00 0.783061E+05 0.952241E+04 0.783035E+05 0.783035E+05 - 0.737000E+00 0.780171E+05 0.950014E+04 0.780185E+05 0.780185E+05 - 0.738000E+00 0.777359E+05 0.861702E+04 0.777392E+05 0.777392E+05 - 0.739000E+00 0.774639E+05 0.859850E+04 0.774684E+05 0.774684E+05 - 0.740000E+00 0.771977E+05 0.111547E+05 0.772000E+05 0.772000E+05 - 0.741000E+00 0.769336E+05 0.941899E+04 0.769340E+05 0.769340E+05 - 0.742000E+00 0.766749E+05 0.111090E+05 0.766765E+05 0.766765E+05 - 0.743000E+00 0.764155E+05 0.102336E+05 0.764244E+05 0.764244E+05 - 0.744000E+00 0.761798E+05 0.102157E+05 0.761771E+05 0.761771E+05 - 0.745000E+00 0.759283E+05 0.110453E+05 0.759353E+05 0.759353E+05 - 0.746000E+00 0.756954E+05 0.932984E+04 0.756988E+05 0.756988E+05 - 0.747000E+00 0.754640E+05 0.101605E+05 0.754670E+05 0.754670E+05 - 0.748000E+00 0.752370E+05 0.929817E+04 0.752403E+05 0.752403E+05 - 0.749000E+00 0.750185E+05 0.928353E+04 0.750191E+05 0.750191E+05 - 0.750000E+00 0.747973E+05 0.101111E+05 0.748025E+05 0.748025E+05 - 0.751000E+00 0.745844E+05 0.100957E+05 0.745910E+05 0.745910E+05 - 0.752000E+00 0.743914E+05 0.126038E+05 0.743848E+05 0.743848E+05 - 0.753000E+00 0.741758E+05 0.922821E+04 0.741821E+05 0.741821E+05 - 0.754000E+00 0.739812E+05 0.921621E+04 0.739848E+05 0.739848E+05 - 0.755000E+00 0.737887E+05 0.920440E+04 0.737924E+05 0.737924E+05 - 0.756000E+00 0.736065E+05 0.117012E+05 0.736039E+05 0.736039E+05 - 0.757000E+00 0.734126E+05 0.100164E+05 0.734204E+05 0.734204E+05 - 0.758000E+00 0.732432E+05 0.917262E+04 0.732412E+05 0.732412E+05 - 0.759000E+00 0.730606E+05 0.158249E+05 0.730664E+05 0.730664E+05 - 0.760000E+00 0.728895E+05 0.998441E+04 0.728961E+05 0.728961E+05 - 0.761000E+00 0.727308E+05 0.997576E+04 0.727299E+05 0.727299E+05 - 0.762000E+00 0.725634E+05 0.913537E+04 0.725678E+05 0.725678E+05 - 0.763000E+00 0.724043E+05 0.995704E+04 0.724099E+05 0.724099E+05 - 0.764000E+00 0.722552E+05 0.107787E+05 0.722646E+05 0.722646E+05 - 0.765000E+00 0.720998E+05 0.107695E+05 0.721041E+05 0.721041E+05 - 0.766000E+00 0.719616E+05 0.124188E+05 0.719686E+05 0.719686E+05 - 0.767000E+00 0.718103E+05 0.909980E+04 0.718183E+05 0.718183E+05 - 0.768000E+00 0.716805E+05 0.909518E+04 0.716799E+05 0.716799E+05 - 0.769000E+00 0.715365E+05 0.991496E+04 0.715454E+05 0.715454E+05 - 0.770000E+00 0.714076E+05 0.990994E+04 0.714146E+05 0.714146E+05 - 0.771000E+00 0.712764E+05 0.825381E+04 0.712871E+05 0.712871E+05 - 0.772000E+00 0.711648E+05 0.907671E+04 0.711634E+05 0.711634E+05 - 0.773000E+00 0.710281E+05 0.824637E+04 0.710430E+05 0.710430E+05 - 0.774000E+00 0.709212E+05 0.123669E+05 0.709260E+05 0.709260E+05 - 0.775000E+00 0.708055E+05 0.906594E+04 0.708127E+05 0.708127E+05 - 0.776000E+00 0.707006E+05 0.107122E+05 0.707021E+05 0.707021E+05 - 0.777000E+00 0.705898E+05 0.906161E+04 0.705950E+05 0.705950E+05 - 0.778000E+00 0.704863E+05 0.115308E+05 0.704914E+05 0.704914E+05 - 0.779000E+00 0.703859E+05 0.905867E+04 0.703902E+05 0.703902E+05 - 0.780000E+00 0.702851E+05 0.123509E+05 0.702923E+05 0.702923E+05 - 0.781000E+00 0.701930E+05 0.988036E+04 0.701975E+05 0.701975E+05 - 0.782000E+00 0.701001E+05 0.123499E+05 0.701053E+05 0.701053E+05 - 0.783000E+00 0.700117E+05 0.107034E+05 0.700165E+05 0.700165E+05 - 0.784000E+00 0.699231E+05 0.905679E+04 0.699304E+05 0.699304E+05 - 0.785000E+00 0.698402E+05 0.905758E+04 0.698468E+05 0.698468E+05 - 0.786000E+00 0.697635E+05 0.148240E+05 0.697661E+05 0.697661E+05 - 0.787000E+00 0.696758E+05 0.823568E+04 0.696882E+05 0.696882E+05 - 0.788000E+00 0.696077E+05 0.988568E+04 0.696127E+05 0.696127E+05 - 0.789000E+00 0.695384E+05 0.906434E+04 0.695399E+05 0.695399E+05 - 0.790000E+00 0.694716E+05 0.989137E+04 0.694709E+05 0.694709E+05 - 0.791000E+00 0.693976E+05 0.989332E+04 0.694031E+05 0.694031E+05 - 0.792000E+00 0.693291E+05 0.107207E+05 0.693365E+05 0.693365E+05 - 0.793000E+00 0.692687E+05 0.989989E+04 0.692737E+05 0.692737E+05 - 0.794000E+00 0.692100E+05 0.107293E+05 0.692133E+05 0.692133E+05 - 0.795000E+00 0.691506E+05 0.908223E+04 0.691551E+05 0.691551E+05 - 0.796000E+00 0.691004E+05 0.908704E+04 0.690993E+05 0.690993E+05 - 0.797000E+00 0.690426E+05 0.991728E+04 0.690458E+05 0.690458E+05 - 0.798000E+00 0.689935E+05 0.124033E+05 0.689945E+05 0.689945E+05 - 0.799000E+00 0.689381E+05 0.992709E+04 0.689453E+05 0.689453E+05 - 0.800000E+00 0.688990E+05 0.910604E+04 0.688986E+05 0.688986E+05 - 0.801000E+00 0.688523E+05 0.993951E+04 0.688540E+05 0.688540E+05 - 0.802000E+00 0.688112E+05 0.132613E+05 0.688115E+05 0.688115E+05 - 0.803000E+00 0.687642E+05 0.132687E+05 0.687713E+05 0.687713E+05 - 0.804000E+00 0.687269E+05 0.829878E+04 0.687327E+05 0.687327E+05 - 0.805000E+00 0.686951E+05 0.996629E+04 0.686965E+05 0.686965E+05 - 0.806000E+00 0.686598E+05 0.831126E+04 0.686625E+05 0.686625E+05 - 0.807000E+00 0.686246E+05 0.914903E+04 0.686302E+05 0.686302E+05 - 0.808000E+00 0.685939E+05 0.141506E+05 0.686002E+05 0.686002E+05 - 0.809000E+00 0.685659E+05 0.999692E+04 0.685721E+05 0.685721E+05 - 0.810000E+00 0.685456E+05 0.917243E+04 0.685459E+05 0.685459E+05 - 0.811000E+00 0.685170E+05 0.917990E+04 0.685218E+05 0.685218E+05 - 0.812000E+00 0.684976E+05 0.918861E+04 0.684997E+05 0.684997E+05 - 0.813000E+00 0.684786E+05 0.133780E+05 0.684794E+05 0.684794E+05 - 0.814000E+00 0.684673E+05 0.100442E+05 0.684611E+05 0.684611E+05 - 0.815000E+00 0.684405E+05 0.117280E+05 0.684474E+05 0.684474E+05 - 0.816000E+00 0.684268E+05 0.117400E+05 0.684286E+05 0.684286E+05 - 0.817000E+00 0.684221E+05 0.100745E+05 0.684203E+05 0.684203E+05 - 0.818000E+00 0.684056E+05 0.126054E+05 0.684071E+05 0.684071E+05 - 0.819000E+00 0.683993E+05 0.117784E+05 0.683985E+05 0.683985E+05 - 0.820000E+00 0.683863E+05 0.926396E+04 0.683917E+05 0.683917E+05 - 0.821000E+00 0.683914E+05 0.843266E+04 0.683868E+05 0.683868E+05 - 0.822000E+00 0.683800E+05 0.101298E+05 0.683836E+05 0.683836E+05 - 0.823000E+00 0.683759E+05 0.929639E+04 0.683824E+05 0.683824E+05 - 0.824000E+00 0.683785E+05 0.110004E+05 0.683831E+05 0.683831E+05 - 0.825000E+00 0.683840E+05 0.932006E+04 0.683856E+05 0.683856E+05 - 0.826000E+00 0.683906E+05 0.118774E+05 0.683900E+05 0.683900E+05 - 0.827000E+00 0.683966E+05 0.934434E+04 0.683961E+05 0.683961E+05 - 0.828000E+00 0.683978E+05 0.935579E+04 0.684041E+05 0.684041E+05 - 0.829000E+00 0.684120E+05 0.119242E+05 0.684141E+05 0.684141E+05 - 0.830000E+00 0.684299E+05 0.127947E+05 0.684257E+05 0.684257E+05 - 0.831000E+00 0.684396E+05 0.854126E+04 0.684392E+05 0.684392E+05 - 0.832000E+00 0.684477E+05 0.102630E+05 0.684545E+05 0.684545E+05 - 0.833000E+00 0.684688E+05 0.102785E+05 0.684715E+05 0.684715E+05 - 0.834000E+00 0.684857E+05 0.120090E+05 0.684906E+05 0.684906E+05 - 0.835000E+00 0.685104E+05 0.128868E+05 0.685113E+05 0.685113E+05 - 0.836000E+00 0.685342E+05 0.946491E+04 0.685338E+05 0.685338E+05 - 0.837000E+00 0.685617E+05 0.103418E+05 0.685581E+05 0.685581E+05 - 0.838000E+00 0.685824E+05 0.103573E+05 0.685842E+05 0.685842E+05 - 0.839000E+00 0.686141E+05 0.950991E+04 0.686120E+05 0.686120E+05 - 0.840000E+00 0.686393E+05 0.865885E+04 0.686415E+05 0.686415E+05 - 0.841000E+00 0.686738E+05 0.867350E+04 0.686731E+05 0.686731E+05 - 0.842000E+00 0.687082E+05 0.868816E+04 0.687061E+05 0.687061E+05 - 0.843000E+00 0.687396E+05 0.104429E+05 0.687406E+05 0.687406E+05 - 0.844000E+00 0.687739E+05 0.958880E+04 0.687770E+05 0.687770E+05 - 0.845000E+00 0.688127E+05 0.122253E+05 0.688152E+05 0.688152E+05 - 0.846000E+00 0.688571E+05 0.874829E+04 0.688549E+05 0.688549E+05 - 0.847000E+00 0.688944E+05 0.148977E+05 0.688964E+05 0.688964E+05 - 0.848000E+00 0.689359E+05 0.114127E+05 0.689395E+05 0.689395E+05 - 0.849000E+00 0.689819E+05 0.967471E+04 0.689841E+05 0.689841E+05 - 0.850000E+00 0.690248E+05 0.969212E+04 0.690302E+05 0.690302E+05 - 0.851000E+00 0.690773E+05 0.971089E+04 0.690783E+05 0.690783E+05 - 0.852000E+00 0.691251E+05 0.123824E+05 0.691276E+05 0.691276E+05 - 0.853000E+00 0.691779E+05 0.974786E+04 0.691786E+05 0.691786E+05 - 0.854000E+00 0.692323E+05 0.115428E+05 0.692310E+05 0.692310E+05 - 0.855000E+00 0.692855E+05 0.106755E+05 0.692848E+05 0.692848E+05 - 0.856000E+00 0.693324E+05 0.142603E+05 0.693402E+05 0.693402E+05 - 0.857000E+00 0.693916E+05 0.107168E+05 0.693969E+05 0.693969E+05 - 0.858000E+00 0.694526E+05 0.116337E+05 0.694550E+05 0.694550E+05 - 0.859000E+00 0.695107E+05 0.125536E+05 0.695145E+05 0.695145E+05 - 0.860000E+00 0.695688E+05 0.988329E+04 0.695753E+05 0.695753E+05 - 0.861000E+00 0.696338E+05 0.990402E+04 0.696373E+05 0.696373E+05 - 0.862000E+00 0.696978E+05 0.135336E+05 0.697006E+05 0.697006E+05 - 0.863000E+00 0.697630E+05 0.994541E+04 0.697651E+05 0.697651E+05 - 0.864000E+00 0.698262E+05 0.996595E+04 0.698308E+05 0.698308E+05 - 0.865000E+00 0.698929E+05 0.127107E+05 0.698974E+05 0.698974E+05 - 0.866000E+00 0.699586E+05 0.909812E+04 0.699656E+05 0.699656E+05 - 0.867000E+00 0.700362E+05 0.136781E+05 0.700330E+05 0.700330E+05 - 0.868000E+00 0.701000E+05 0.100513E+05 0.701044E+05 0.701044E+05 - 0.869000E+00 0.701676E+05 0.100726E+05 0.701750E+05 0.701750E+05 - 0.870000E+00 0.702371E+05 0.100941E+05 0.702470E+05 0.702470E+05 - 0.871000E+00 0.703125E+05 0.101166E+05 0.703197E+05 0.703197E+05 - 0.872000E+00 0.703870E+05 0.119823E+05 0.703931E+05 0.703931E+05 - 0.873000E+00 0.704589E+05 0.101609E+05 0.704673E+05 0.704673E+05 - 0.874000E+00 0.705349E+05 0.101835E+05 0.705422E+05 0.705422E+05 - 0.875000E+00 0.706131E+05 0.102064E+05 0.706178E+05 0.706178E+05 - 0.876000E+00 0.706868E+05 0.111586E+05 0.706939E+05 0.706939E+05 - 0.877000E+00 0.707628E+05 0.121153E+05 0.707706E+05 0.707706E+05 - 0.878000E+00 0.708426E+05 0.934059E+04 0.708478E+05 0.708478E+05 - 0.879000E+00 0.709209E+05 0.936156E+04 0.709254E+05 0.709254E+05 - 0.880000E+00 0.709953E+05 0.938203E+04 0.710033E+05 0.710033E+05 - 0.881000E+00 0.710781E+05 0.112844E+05 0.710816E+05 0.710816E+05 - 0.882000E+00 0.711538E+05 0.113092E+05 0.711601E+05 0.711601E+05 - 0.883000E+00 0.712336E+05 0.944557E+04 0.712388E+05 0.712388E+05 - 0.884000E+00 0.713136E+05 0.142003E+05 0.713175E+05 0.713175E+05 - 0.885000E+00 0.713900E+05 0.104365E+05 0.713965E+05 0.713965E+05 - 0.886000E+00 0.714713E+05 0.104602E+05 0.714754E+05 0.714754E+05 - 0.887000E+00 0.715476E+05 0.953014E+04 0.715542E+05 0.715542E+05 - 0.888000E+00 0.716295E+05 0.133725E+05 0.716329E+05 0.716329E+05 - 0.889000E+00 0.717122E+05 0.957358E+04 0.717114E+05 0.717114E+05 - 0.890000E+00 0.717873E+05 0.115132E+05 0.717897E+05 0.717897E+05 - 0.891000E+00 0.718605E+05 0.124994E+05 0.718676E+05 0.718676E+05 - 0.892000E+00 0.719407E+05 0.144547E+05 0.719451E+05 0.719451E+05 - 0.893000E+00 0.720191E+05 0.144866E+05 0.720221E+05 0.720221E+05 - 0.894000E+00 0.720961E+05 0.106468E+05 0.720988E+05 0.720988E+05 - 0.895000E+00 0.721735E+05 0.174602E+05 0.721747E+05 0.721747E+05 - 0.896000E+00 0.722477E+05 0.972093E+04 0.722501E+05 0.722501E+05 - 0.897000E+00 0.723213E+05 0.116900E+05 0.723247E+05 0.723247E+05 - 0.898000E+00 0.723938E+05 0.107385E+05 0.723985E+05 0.723985E+05 - 0.899000E+00 0.724713E+05 0.107620E+05 0.724714E+05 0.724714E+05 - 0.900000E+00 0.725441E+05 0.107848E+05 0.725435E+05 0.725435E+05 - 0.901000E+00 0.726157E+05 0.982491E+04 0.726144E+05 0.726144E+05 - 0.902000E+00 0.726836E+05 0.118140E+05 0.726846E+05 0.726846E+05 - 0.903000E+00 0.727506E+05 0.138110E+05 0.727535E+05 0.727535E+05 - 0.904000E+00 0.728223E+05 0.168056E+05 0.728213E+05 0.728213E+05 - 0.905000E+00 0.728936E+05 0.128781E+05 0.728878E+05 0.728878E+05 - 0.906000E+00 0.729575E+05 0.168740E+05 0.729530E+05 0.729530E+05 - 0.907000E+00 0.730209E+05 0.129291E+05 0.730169E+05 0.730169E+05 - 0.908000E+00 0.730821E+05 0.996474E+04 0.730793E+05 0.730793E+05 - 0.909000E+00 0.731455E+05 0.129797E+05 0.731403E+05 0.731403E+05 - 0.910000E+00 0.732097E+05 0.130053E+05 0.731997E+05 0.731997E+05 - 0.911000E+00 0.732611E+05 0.140310E+05 0.732575E+05 0.732575E+05 - 0.912000E+00 0.733193E+05 0.150616E+05 0.733137E+05 0.733137E+05 - 0.913000E+00 0.733758E+05 0.100598E+05 0.733682E+05 0.733682E+05 - 0.914000E+00 0.734259E+05 0.151166E+05 0.734209E+05 0.734209E+05 - 0.915000E+00 0.734820E+05 0.121157E+05 0.734718E+05 0.734718E+05 - 0.916000E+00 0.735302E+05 0.151711E+05 0.735206E+05 0.735206E+05 - 0.917000E+00 0.735806E+05 0.121585E+05 0.735676E+05 0.735676E+05 - 0.918000E+00 0.736240E+05 0.131938E+05 0.736119E+05 0.736119E+05 - 0.919000E+00 0.736696E+05 0.132163E+05 0.736559E+05 0.736559E+05 - 0.920000E+00 0.737109E+05 0.162931E+05 0.736970E+05 0.736970E+05 - 0.921000E+00 0.737483E+05 0.142792E+05 0.737361E+05 0.737361E+05 - 0.922000E+00 0.737866E+05 0.112373E+05 0.737730E+05 0.737730E+05 - 0.923000E+00 0.738216E+05 0.122780E+05 0.738076E+05 0.738076E+05 - 0.924000E+00 0.738534E+05 0.112719E+05 0.738400E+05 0.738400E+05 - 0.925000E+00 0.738847E+05 0.153939E+05 0.738701E+05 0.738701E+05 - 0.926000E+00 0.739112E+05 0.184992E+05 0.738978E+05 0.738978E+05 - 0.927000E+00 0.739379E+05 0.123506E+05 0.739233E+05 0.739233E+05 - 0.928000E+00 0.739620E+05 0.144292E+05 0.739463E+05 0.739463E+05 - 0.929000E+00 0.739790E+05 0.134161E+05 0.739670E+05 0.739670E+05 - 0.930000E+00 0.740070E+05 0.134356E+05 0.739852E+05 0.739852E+05 - 0.931000E+00 0.740190E+05 0.165566E+05 0.740010E+05 0.740010E+05 - 0.932000E+00 0.740319E+05 0.155411E+05 0.740142E+05 0.740142E+05 - 0.933000E+00 0.740375E+05 0.114099E+05 0.740250E+05 0.740250E+05 - 0.934000E+00 0.740467E+05 0.135006E+05 0.740332E+05 0.740332E+05 - 0.935000E+00 0.740539E+05 0.135163E+05 0.740387E+05 0.740387E+05 - 0.936000E+00 0.740612E+05 0.145730E+05 0.740419E+05 0.740419E+05 - 0.937000E+00 0.740564E+05 0.114617E+05 0.740423E+05 0.740423E+05 - 0.938000E+00 0.740588E+05 0.135605E+05 0.740402E+05 0.740402E+05 - 0.939000E+00 0.740543E+05 0.114858E+05 0.740354E+05 0.740354E+05 - 0.940000E+00 0.740471E+05 0.114969E+05 0.740281E+05 0.740281E+05 - 0.941000E+00 0.740340E+05 0.115071E+05 0.740180E+05 0.740180E+05 - 0.942000E+00 0.740237E+05 0.115177E+05 0.740054E+05 0.740054E+05 - 0.943000E+00 0.740112E+05 0.125760E+05 0.739900E+05 0.739900E+05 - 0.944000E+00 0.739886E+05 0.115367E+05 0.739720E+05 0.739720E+05 - 0.945000E+00 0.739631E+05 0.146935E+05 0.739514E+05 0.739514E+05 - 0.946000E+00 0.739486E+05 0.126053E+05 0.739281E+05 0.739281E+05 - 0.947000E+00 0.739181E+05 0.105112E+05 0.739022E+05 0.739022E+05 - 0.948000E+00 0.738867E+05 0.157767E+05 0.738736E+05 0.738736E+05 - 0.949000E+00 0.738525E+05 0.126288E+05 0.738424E+05 0.738424E+05 - 0.950000E+00 0.738196E+05 0.126364E+05 0.738086E+05 0.738086E+05 - 0.951000E+00 0.737857E+05 0.115903E+05 0.737721E+05 0.737721E+05 - 0.952000E+00 0.737508E+05 0.147597E+05 0.737330E+05 0.737330E+05 - 0.953000E+00 0.737035E+05 0.126564E+05 0.736914E+05 0.736914E+05 - 0.954000E+00 0.736556E+05 0.116063E+05 0.736472E+05 0.736472E+05 - 0.955000E+00 0.736132E+05 0.137230E+05 0.736004E+05 0.736004E+05 - 0.956000E+00 0.735615E+05 0.105598E+05 0.735511E+05 0.735511E+05 - 0.957000E+00 0.735117E+05 0.147891E+05 0.734993E+05 0.734993E+05 - 0.958000E+00 0.734570E+05 0.137368E+05 0.734449E+05 0.734449E+05 - 0.959000E+00 0.733942E+05 0.137394E+05 0.733881E+05 0.733881E+05 - 0.960000E+00 0.733371E+05 0.126858E+05 0.733289E+05 0.733289E+05 - 0.961000E+00 0.732742E+05 0.169175E+05 0.732672E+05 0.732672E+05 - 0.962000E+00 0.732110E+05 0.126904E+05 0.732032E+05 0.732032E+05 - 0.963000E+00 0.731416E+05 0.126915E+05 0.731368E+05 0.731368E+05 - 0.964000E+00 0.730698E+05 0.137499E+05 0.730681E+05 0.730681E+05 - 0.965000E+00 0.729961E+05 0.148080E+05 0.729970E+05 0.729970E+05 - 0.966000E+00 0.729238E+05 0.137509E+05 0.729237E+05 0.729237E+05 - 0.967000E+00 0.728473E+05 0.116352E+05 0.728481E+05 0.728481E+05 - 0.968000E+00 0.727732E+05 0.158664E+05 0.727704E+05 0.727704E+05 - 0.969000E+00 0.726928E+05 0.105768E+05 0.726898E+05 0.726898E+05 - 0.970000E+00 0.726076E+05 0.105753E+05 0.726087E+05 0.726087E+05 - 0.971000E+00 0.725235E+05 0.126887E+05 0.725246E+05 0.725246E+05 - 0.972000E+00 0.724386E+05 0.137441E+05 0.724387E+05 0.724387E+05 - 0.973000E+00 0.723485E+05 0.126841E+05 0.723507E+05 0.723507E+05 - 0.974000E+00 0.722612E+05 0.116250E+05 0.722607E+05 0.722607E+05 - 0.975000E+00 0.721606E+05 0.116207E+05 0.721688E+05 0.721688E+05 - 0.976000E+00 0.720720E+05 0.116184E+05 0.720751E+05 0.720751E+05 - 0.977000E+00 0.719791E+05 0.116153E+05 0.719795E+05 0.719795E+05 - 0.978000E+00 0.718768E+05 0.147771E+05 0.718822E+05 0.718822E+05 - 0.979000E+00 0.717771E+05 0.105512E+05 0.717831E+05 0.717831E+05 - 0.980000E+00 0.716836E+05 0.158224E+05 0.716824E+05 0.716824E+05 - 0.981000E+00 0.715828E+05 0.137074E+05 0.715800E+05 0.715800E+05 - 0.982000E+00 0.714739E+05 0.168621E+05 0.714761E+05 0.714761E+05 - 0.983000E+00 0.713730E+05 0.168554E+05 0.713706E+05 0.713706E+05 - 0.984000E+00 0.712628E+05 0.126349E+05 0.712636E+05 0.712636E+05 - 0.985000E+00 0.711577E+05 0.136815E+05 0.711552E+05 0.711552E+05 - 0.986000E+00 0.710471E+05 0.115704E+05 0.710453E+05 0.710453E+05 - 0.987000E+00 0.709431E+05 0.136679E+05 0.709342E+05 0.709342E+05 - 0.988000E+00 0.708279E+05 0.105073E+05 0.708218E+05 0.708218E+05 - 0.989000E+00 0.707180E+05 0.115518E+05 0.707081E+05 0.707081E+05 - 0.990000E+00 0.705992E+05 0.125935E+05 0.705932E+05 0.705932E+05 - 0.991000E+00 0.704902E+05 0.115378E+05 0.704771E+05 0.704771E+05 - 0.992000E+00 0.703784E+05 0.157243E+05 0.703599E+05 0.703599E+05 - 0.993000E+00 0.702653E+05 0.104766E+05 0.702417E+05 0.702417E+05 - 0.994000E+00 0.701429E+05 0.115157E+05 0.701225E+05 0.701225E+05 - 0.995000E+00 0.700304E+05 0.104625E+05 0.700023E+05 0.700023E+05 - 0.996000E+00 0.699129E+05 0.156832E+05 0.698812E+05 0.698812E+05 - 0.997000E+00 0.697936E+05 0.135825E+05 0.697593E+05 0.697593E+05 - 0.998000E+00 0.696719E+05 0.114844E+05 0.696365E+05 0.696365E+05 - 0.999000E+00 0.695586E+05 0.125206E+05 0.695130E+05 0.695130E+05 - 0.100000E+01 0.694403E+05 0.135544E+05 0.693887E+05 0.693887E+05 - - #### Real Space Data #### - - Distance distribution function of particle - - - R P(R) ERROR - - 0.0000E+00 0.0000E+00 0.0000E+00 - 0.1961E+00 0.1123E+04 0.2057E+03 - 0.3922E+00 0.2314E+04 0.3526E+03 - 0.5882E+00 0.3578E+04 0.4431E+03 - 0.7843E+00 0.4916E+04 0.4810E+03 - 0.9804E+00 0.6334E+04 0.4713E+03 - 0.1176E+01 0.7838E+04 0.4204E+03 - 0.1373E+01 0.9434E+04 0.3355E+03 - 0.1569E+01 0.1113E+05 0.2248E+03 - 0.1765E+01 0.1293E+05 0.9851E+02 - 0.1961E+01 0.1486E+05 0.5765E+02 - 0.2157E+01 0.1690E+05 0.1909E+03 - 0.2353E+01 0.1908E+05 0.3246E+03 - 0.2549E+01 0.2139E+05 0.4460E+03 - 0.2745E+01 0.2385E+05 0.5485E+03 - 0.2941E+01 0.2646E+05 0.6270E+03 - 0.3137E+01 0.2922E+05 0.6780E+03 - 0.3333E+01 0.3214E+05 0.6991E+03 - 0.3529E+01 0.3522E+05 0.6895E+03 - 0.3725E+01 0.3844E+05 0.6499E+03 - 0.3922E+01 0.4182E+05 0.5825E+03 - 0.4118E+01 0.4535E+05 0.4908E+03 - 0.4314E+01 0.4902E+05 0.3801E+03 - 0.4510E+01 0.5282E+05 0.2591E+03 - 0.4706E+01 0.5674E+05 0.1499E+03 - 0.4902E+01 0.6077E+05 0.1362E+03 - 0.5098E+01 0.6491E+05 0.2378E+03 - 0.5294E+01 0.6914E+05 0.3611E+03 - 0.5490E+01 0.7344E+05 0.4778E+03 - 0.5686E+01 0.7781E+05 0.5781E+03 - 0.5882E+01 0.8223E+05 0.6563E+03 - 0.6078E+01 0.8668E+05 0.7088E+03 - 0.6275E+01 0.9117E+05 0.7333E+03 - 0.6471E+01 0.9567E+05 0.7289E+03 - 0.6667E+01 0.1002E+06 0.6962E+03 - 0.6863E+01 0.1047E+06 0.6374E+03 - 0.7059E+01 0.1092E+06 0.5566E+03 - 0.7255E+01 0.1137E+06 0.4606E+03 - 0.7451E+01 0.1181E+06 0.3609E+03 - 0.7647E+01 0.1226E+06 0.2812E+03 - 0.7843E+01 0.1270E+06 0.2615E+03 - 0.8039E+01 0.1313E+06 0.3187E+03 - 0.8235E+01 0.1357E+06 0.4182E+03 - 0.8431E+01 0.1400E+06 0.5275E+03 - 0.8627E+01 0.1443E+06 0.6296E+03 - 0.8824E+01 0.1486E+06 0.7155E+03 - 0.9020E+01 0.1528E+06 0.7794E+03 - 0.9216E+01 0.1571E+06 0.8179E+03 - 0.9412E+01 0.1613E+06 0.8292E+03 - 0.9608E+01 0.1655E+06 0.8132E+03 - 0.9804E+01 0.1697E+06 0.7714E+03 - 0.1000E+02 0.1738E+06 0.7072E+03 - 0.1020E+02 0.1780E+06 0.6264E+03 - 0.1039E+02 0.1821E+06 0.5380E+03 - 0.1059E+02 0.1862E+06 0.4566E+03 - 0.1078E+02 0.1903E+06 0.4032E+03 - 0.1098E+02 0.1944E+06 0.3995E+03 - 0.1118E+02 0.1984E+06 0.4475E+03 - 0.1137E+02 0.2025E+06 0.5276E+03 - 0.1157E+02 0.2064E+06 0.6180E+03 - 0.1176E+02 0.2103E+06 0.7033E+03 - 0.1196E+02 0.2141E+06 0.7739E+03 - 0.1216E+02 0.2179E+06 0.8239E+03 - 0.1235E+02 0.2216E+06 0.8499E+03 - 0.1255E+02 0.2251E+06 0.8504E+03 - 0.1275E+02 0.2286E+06 0.8260E+03 - 0.1294E+02 0.2320E+06 0.7796E+03 - 0.1314E+02 0.2352E+06 0.7161E+03 - 0.1333E+02 0.2383E+06 0.6438E+03 - 0.1353E+02 0.2413E+06 0.5748E+03 - 0.1373E+02 0.2441E+06 0.5256E+03 - 0.1392E+02 0.2468E+06 0.5127E+03 - 0.1412E+02 0.2493E+06 0.5430E+03 - 0.1431E+02 0.2517E+06 0.6078E+03 - 0.1451E+02 0.2539E+06 0.6906E+03 - 0.1471E+02 0.2559E+06 0.7760E+03 - 0.1490E+02 0.2579E+06 0.8526E+03 - 0.1510E+02 0.2596E+06 0.9125E+03 - 0.1529E+02 0.2612E+06 0.9505E+03 - 0.1549E+02 0.2627E+06 0.9636E+03 - 0.1569E+02 0.2641E+06 0.9509E+03 - 0.1588E+02 0.2653E+06 0.9132E+03 - 0.1608E+02 0.2664E+06 0.8536E+03 - 0.1627E+02 0.2674E+06 0.7771E+03 - 0.1647E+02 0.2682E+06 0.6920E+03 - 0.1667E+02 0.2690E+06 0.6103E+03 - 0.1686E+02 0.2697E+06 0.5480E+03 - 0.1706E+02 0.2702E+06 0.5225E+03 - 0.1725E+02 0.2707E+06 0.5421E+03 - 0.1745E+02 0.2711E+06 0.5987E+03 - 0.1765E+02 0.2713E+06 0.6752E+03 - 0.1784E+02 0.2715E+06 0.7549E+03 - 0.1804E+02 0.2716E+06 0.8256E+03 - 0.1824E+02 0.2716E+06 0.8791E+03 - 0.1843E+02 0.2715E+06 0.9104E+03 - 0.1863E+02 0.2713E+06 0.9169E+03 - 0.1882E+02 0.2710E+06 0.8980E+03 - 0.1902E+02 0.2706E+06 0.8555E+03 - 0.1922E+02 0.2700E+06 0.7936E+03 - 0.1941E+02 0.2693E+06 0.7193E+03 - 0.1961E+02 0.2685E+06 0.6435E+03 - 0.1980E+02 0.2676E+06 0.5813E+03 - 0.2000E+02 0.2665E+06 0.5509E+03 - 0.2020E+02 0.2652E+06 0.5646E+03 - 0.2039E+02 0.2638E+06 0.6198E+03 - 0.2059E+02 0.2623E+06 0.7016E+03 - 0.2078E+02 0.2606E+06 0.7931E+03 - 0.2098E+02 0.2587E+06 0.8807E+03 - 0.2118E+02 0.2566E+06 0.9549E+03 - 0.2137E+02 0.2544E+06 0.1009E+04 - 0.2157E+02 0.2520E+06 0.1039E+04 - 0.2176E+02 0.2494E+06 0.1044E+04 - 0.2196E+02 0.2467E+06 0.1022E+04 - 0.2216E+02 0.2439E+06 0.9773E+03 - 0.2235E+02 0.2408E+06 0.9125E+03 - 0.2255E+02 0.2377E+06 0.8343E+03 - 0.2275E+02 0.2344E+06 0.7517E+03 - 0.2294E+02 0.2310E+06 0.6769E+03 - 0.2314E+02 0.2274E+06 0.6238E+03 - 0.2333E+02 0.2238E+06 0.6045E+03 - 0.2353E+02 0.2200E+06 0.6219E+03 - 0.2373E+02 0.2162E+06 0.6678E+03 - 0.2392E+02 0.2122E+06 0.7276E+03 - 0.2412E+02 0.2082E+06 0.7876E+03 - 0.2431E+02 0.2042E+06 0.8370E+03 - 0.2451E+02 0.2001E+06 0.8686E+03 - 0.2471E+02 0.1959E+06 0.8782E+03 - 0.2490E+02 0.1917E+06 0.8643E+03 - 0.2510E+02 0.1875E+06 0.8274E+03 - 0.2529E+02 0.1833E+06 0.7709E+03 - 0.2549E+02 0.1791E+06 0.7011E+03 - 0.2569E+02 0.1748E+06 0.6280E+03 - 0.2588E+02 0.1706E+06 0.5663E+03 - 0.2608E+02 0.1663E+06 0.5341E+03 - 0.2627E+02 0.1621E+06 0.5449E+03 - 0.2647E+02 0.1579E+06 0.5976E+03 - 0.2667E+02 0.1537E+06 0.6782E+03 - 0.2686E+02 0.1496E+06 0.7695E+03 - 0.2706E+02 0.1455E+06 0.8578E+03 - 0.2725E+02 0.1414E+06 0.9332E+03 - 0.2745E+02 0.1374E+06 0.9890E+03 - 0.2765E+02 0.1334E+06 0.1021E+04 - 0.2784E+02 0.1294E+06 0.1027E+04 - 0.2804E+02 0.1255E+06 0.1008E+04 - 0.2824E+02 0.1217E+06 0.9646E+03 - 0.2843E+02 0.1179E+06 0.9022E+03 - 0.2863E+02 0.1142E+06 0.8277E+03 - 0.2882E+02 0.1106E+06 0.7508E+03 - 0.2902E+02 0.1070E+06 0.6848E+03 - 0.2922E+02 0.1035E+06 0.6442E+03 - 0.2941E+02 0.1001E+06 0.6399E+03 - 0.2961E+02 0.9671E+05 0.6722E+03 - 0.2980E+02 0.9344E+05 0.7307E+03 - 0.3000E+02 0.9025E+05 0.8007E+03 - 0.3020E+02 0.8714E+05 0.8690E+03 - 0.3039E+02 0.8413E+05 0.9256E+03 - 0.3059E+02 0.8119E+05 0.9638E+03 - 0.3078E+02 0.7834E+05 0.9801E+03 - 0.3098E+02 0.7558E+05 0.9734E+03 - 0.3118E+02 0.7291E+05 0.9454E+03 - 0.3137E+02 0.7031E+05 0.9002E+03 - 0.3157E+02 0.6781E+05 0.8453E+03 - 0.3176E+02 0.6538E+05 0.7913E+03 - 0.3196E+02 0.6303E+05 0.7510E+03 - 0.3216E+02 0.6076E+05 0.7374E+03 - 0.3235E+02 0.5856E+05 0.7575E+03 - 0.3255E+02 0.5644E+05 0.8091E+03 - 0.3275E+02 0.5438E+05 0.8822E+03 - 0.3294E+02 0.5239E+05 0.9638E+03 - 0.3314E+02 0.5046E+05 0.1042E+04 - 0.3333E+02 0.4859E+05 0.1108E+04 - 0.3353E+02 0.4678E+05 0.1154E+04 - 0.3373E+02 0.4502E+05 0.1176E+04 - 0.3392E+02 0.4332E+05 0.1172E+04 - 0.3412E+02 0.4166E+05 0.1144E+04 - 0.3431E+02 0.4005E+05 0.1094E+04 - 0.3451E+02 0.3849E+05 0.1027E+04 - 0.3471E+02 0.3697E+05 0.9534E+03 - 0.3490E+02 0.3549E+05 0.8847E+03 - 0.3510E+02 0.3405E+05 0.8353E+03 - 0.3529E+02 0.3266E+05 0.8181E+03 - 0.3549E+02 0.3131E+05 0.8389E+03 - 0.3569E+02 0.2999E+05 0.8930E+03 - 0.3588E+02 0.2872E+05 0.9683E+03 - 0.3608E+02 0.2748E+05 0.1051E+04 - 0.3627E+02 0.2629E+05 0.1127E+04 - 0.3647E+02 0.2513E+05 0.1189E+04 - 0.3667E+02 0.2402E+05 0.1230E+04 - 0.3686E+02 0.2294E+05 0.1245E+04 - 0.3706E+02 0.2190E+05 0.1235E+04 - 0.3725E+02 0.2090E+05 0.1201E+04 - 0.3745E+02 0.1994E+05 0.1147E+04 - 0.3765E+02 0.1902E+05 0.1080E+04 - 0.3784E+02 0.1814E+05 0.1009E+04 - 0.3804E+02 0.1729E+05 0.9457E+03 - 0.3824E+02 0.1647E+05 0.9014E+03 - 0.3843E+02 0.1569E+05 0.8852E+03 - 0.3863E+02 0.1494E+05 0.8991E+03 - 0.3882E+02 0.1423E+05 0.9371E+03 - 0.3902E+02 0.1354E+05 0.9884E+03 - 0.3922E+02 0.1288E+05 0.1041E+04 - 0.3941E+02 0.1225E+05 0.1085E+04 - 0.3961E+02 0.1163E+05 0.1114E+04 - 0.3980E+02 0.1105E+05 0.1124E+04 - 0.4000E+02 0.1048E+05 0.1114E+04 - 0.4020E+02 0.9929E+04 0.1086E+04 - 0.4039E+02 0.9398E+04 0.1048E+04 - 0.4059E+02 0.8883E+04 0.1008E+04 - 0.4078E+02 0.8383E+04 0.9772E+03 - 0.4098E+02 0.7897E+04 0.9669E+03 - 0.4118E+02 0.7426E+04 0.9843E+03 - 0.4137E+02 0.6967E+04 0.1030E+04 - 0.4157E+02 0.6521E+04 0.1097E+04 - 0.4176E+02 0.6088E+04 0.1175E+04 - 0.4196E+02 0.5667E+04 0.1253E+04 - 0.4216E+02 0.5260E+04 0.1322E+04 - 0.4235E+02 0.4866E+04 0.1374E+04 - 0.4255E+02 0.4485E+04 0.1405E+04 - 0.4275E+02 0.4120E+04 0.1414E+04 - 0.4294E+02 0.3769E+04 0.1402E+04 - 0.4314E+02 0.3434E+04 0.1374E+04 - 0.4333E+02 0.3115E+04 0.1335E+04 - 0.4353E+02 0.2813E+04 0.1294E+04 - 0.4373E+02 0.2529E+04 0.1260E+04 - 0.4392E+02 0.2262E+04 0.1239E+04 - 0.4412E+02 0.2013E+04 0.1234E+04 - 0.4431E+02 0.1783E+04 0.1244E+04 - 0.4451E+02 0.1571E+04 0.1262E+04 - 0.4471E+02 0.1378E+04 0.1281E+04 - 0.4490E+02 0.1202E+04 0.1293E+04 - 0.4510E+02 0.1043E+04 0.1295E+04 - 0.4529E+02 0.9017E+03 0.1284E+04 - 0.4549E+02 0.7760E+03 0.1266E+04 - 0.4569E+02 0.6655E+03 0.1249E+04 - 0.4588E+02 0.5691E+03 0.1244E+04 - 0.4608E+02 0.4858E+03 0.1264E+04 - 0.4627E+02 0.4142E+03 0.1315E+04 - 0.4647E+02 0.3533E+03 0.1393E+04 - 0.4667E+02 0.3018E+03 0.1488E+04 - 0.4686E+02 0.2584E+03 0.1582E+04 - 0.4706E+02 0.2219E+03 0.1658E+04 - 0.4725E+02 0.1913E+03 0.1701E+04 - 0.4745E+02 0.1654E+03 0.1703E+04 - 0.4765E+02 0.1432E+03 0.1661E+04 - 0.4784E+02 0.1240E+03 0.1588E+04 - 0.4804E+02 0.1069E+03 0.1510E+04 - 0.4824E+02 0.9141E+02 0.1471E+04 - 0.4843E+02 0.7705E+02 0.1517E+04 - 0.4863E+02 0.6354E+02 0.1662E+04 - 0.4882E+02 0.5074E+02 0.1871E+04 - 0.4902E+02 0.3868E+02 0.2077E+04 - 0.4922E+02 0.2752E+02 0.2199E+04 - 0.4941E+02 0.1757E+02 0.2149E+04 - 0.4961E+02 0.9269E+01 0.1834E+04 - 0.4980E+02 0.3187E+01 0.1154E+04 - 0.5000E+02 0.0000E+00 0.0000E+00 diff --git a/denss/core.py b/denss/core.py index 987e24b..1d6a6a8 100755 --- a/denss/core.py +++ b/denss/core.py @@ -350,9 +350,9 @@ def write_mrc(rho, side, filename="map.mrc"): for i in range(0, 12): fout.write(struct.pack(' 0]) - 1e-8 # subtract a tiny bit to deal with floating point error - nbins = int(qmax / qstep) - qbins = np.linspace(0, nbins * qstep, nbins + 1) - - # create an array labeling each voxel according to which qbin it belongs - qbin_labels = np.searchsorted(qbins, qr, "right") - qbin_labels -= 1 - qbl = qbin_labels - qblravel = qbin_labels.ravel() - xcount = np.bincount(qblravel) - - # calculate qbinsc as average of q values in shell - qbinsc = mybinmean(qr.ravel(), qblravel, xcount) - - # allow for any range of q data - qdata = qbinsc[np.where((qbinsc >= q.min()) & (qbinsc <= q.max()))] - Idata = np.interp(qdata, q, I) - - if extrapolate: - qextend = qbinsc[qbinsc >= qdata.max()] - Iextend = qextend ** -4 - Iextend = Iextend / Iextend[0] * Idata[-1] - qdata = np.concatenate((qdata, qextend[1:])) - Idata = np.concatenate((Idata, Iextend[1:])) - - # create list of qbin indices just in region of data for later F scaling - qbin_args = np.in1d(qbinsc, qdata, assume_unique=True) - qba = qbin_args # just for brevity when using it later - # set qba bins outside of scaling region to false. - # start with bins in corners - # qba[qbinsc>qx_.max()] = False - - sigqdata = np.interp(qdata, q, sigq) - - scale_factor = ne ** 2 / Idata[0] - Idata *= scale_factor - sigqdata *= scale_factor - I *= scale_factor - sigq *= scale_factor - - if steps == 'None' or steps is None or int(steps) < 1: - stepsarr = np.concatenate((enforce_connectivity_steps, [shrinkwrap_minstep])) - maxec = np.max(stepsarr) - steps = int(shrinkwrap_iter * ( - np.log(shrinkwrap_sigma_end / shrinkwrap_sigma_start) / np.log(shrinkwrap_sigma_decay)) + maxec) - # add enough steps for convergence after shrinkwrap is finished - # something like 7000 seems reasonable, likely will finish before that on its own - # then just make a round number when using defaults - steps += 7621 - else: - steps = int(steps) - - Imean = np.zeros((len(qbins))) - - if qraw is None: - qraw = q - if Iraw is None: - Iraw = I - if sigqraw is None: - sigqraw = sigq - Iq_exp = np.vstack((qraw, Iraw, sigqraw)).T - Iq_calc = np.vstack((qbinsc, Imean, Imean)).T - idx = np.where(Iraw > 0) - Iq_exp = Iq_exp[idx] - qmax = np.min([Iq_exp[:, 0].max(), Iq_calc[:, 0].max()]) - Iq_exp = Iq_exp[Iq_exp[:, 0] <= qmax] - Iq_calc = Iq_calc[Iq_calc[:, 0] <= qmax] - - chi = np.zeros((steps + 1)) - rg = np.zeros((steps + 1), dtype=np.complex128) - supportV = np.zeros((steps + 1)) - if support_start is not None: - support = np.copy(support_start) - else: - support = np.ones(x.shape, dtype=bool) - - if seed is None: - # Have to reset the random seed to get a random in different from other processes - prng = np.random.RandomState() - seed = prng.randint(2 ** 31 - 1) - else: - seed = int(seed) - - prng = np.random.RandomState(seed) - - if rho_start is not None: - rho = rho_start # *dV - if add_noise is not None: - noise_factor = rho.max() * add_noise - noise = prng.random_sample(size=x.shape) * noise_factor - rho += noise - else: - rho = prng.random_sample(size=x.shape) # - 0.5 - newrho = np.zeros_like(rho) - - sigma = shrinkwrap_sigma_start - - # calculate the starting shrinkwrap volume as the volume of a sphere - # of radius Dmax, i.e. much larger than the particle size - swbyvol = True - swV = V / 2.0 - Vsphere_Dover2 = 4. / 3 * np.pi * (D / 2.) ** 3 - swVend = Vsphere_Dover2 - swV_decay = 0.9 - first_time_swdensity = True - threshold = shrinkwrap_threshold_fraction - # erode will make take five outer edge pixels of the support, like a shell, - # and will make sure no negative density is in that region - # this is to counter an artifact that occurs when allowing for negative density - # as the negative density often appears immediately next to positive density - # at the edges of the object. This ensures (i.e. biases) only real negative density - # in the interior of the object (i.e. more than five pixels from the support boundary) - # thus we only need this on when in membrane mode, i.e. when positivity=False - if shrinkwrap_old_method or positivity: - erode = False - else: - erode = True - erosion_width = int(20 / dx) # this is in pixels - if erosion_width == 0: - # make minimum of one pixel - erosion_width = 1 - - # for icosahedral symmetry, just set ncs to 1 to trigger ncs averaging - if ncs_type == "icosahedral": - ncs = 1 - - my_logger.info('q range of input data: %3.3f < q < %3.3f', q.min(), q.max()) - my_logger.info('Maximum dimension: %3.3f', D) - my_logger.info('Sampling ratio: %3.3f', oversampling) - my_logger.info('Requested real space voxel size: %3.3f', voxel) - my_logger.info('Number of electrons: %3.3f', ne) - my_logger.info('Recenter: %s', recenter) - my_logger.info('Recenter Steps: %s', recenter_steps) - my_logger.info('Recenter Mode: %s', recenter_mode) - my_logger.info('NCS: %s', ncs) - my_logger.info('NCS Type: %s', ncs_type) - my_logger.info('NCS Steps: %s', ncs_steps) - my_logger.info('NCS Axis: %s', ncs_axis) - my_logger.info('Positivity: %s', positivity) - # my_logger.info('Positivity Steps: %s', positivity_steps) - my_logger.info('Extrapolate high q: %s', extrapolate) - my_logger.info('Shrinkwrap: %s', shrinkwrap) - my_logger.info('Shrinkwrap Old Method: %s', shrinkwrap_old_method) - my_logger.info('Shrinkwrap sigma start (angstroms): %s', shrinkwrap_sigma_start * dx) - my_logger.info('Shrinkwrap sigma end (angstroms): %s', shrinkwrap_sigma_end * dx) - my_logger.info('Shrinkwrap sigma start (voxels): %s', shrinkwrap_sigma_start) - my_logger.info('Shrinkwrap sigma end (voxels): %s', shrinkwrap_sigma_end) - my_logger.info('Shrinkwrap sigma decay: %s', shrinkwrap_sigma_decay) - my_logger.info('Shrinkwrap threshold fraction: %s', shrinkwrap_threshold_fraction) - my_logger.info('Shrinkwrap iterations: %s', shrinkwrap_iter) - my_logger.info('Shrinkwrap starting step: %s', shrinkwrap_minstep) - my_logger.info('Enforce connectivity: %s', enforce_connectivity) - my_logger.info('Enforce connectivity steps: %s', enforce_connectivity_steps) - my_logger.info('Chi2 end fraction: %3.3e', chi_end_fraction) - my_logger.info('Maximum number of steps: %i', steps) - my_logger.info('Grid size (voxels): %i x %i x %i', n, n, n) - my_logger.info('Real space box width (angstroms): %3.3f', side) - my_logger.info('Real space box range (angstroms): %3.3f < x < %3.3f', x_.min(), x_.max()) - my_logger.info('Real space box volume (angstroms^3): %3.3f', V) - my_logger.info('Real space voxel size (angstroms): %3.3f', dx) - my_logger.info('Real space voxel volume (angstroms^3): %3.3f', dV) - my_logger.info('Reciprocal space box width (angstroms^(-1)): %3.3f', qx_.max() - qx_.min()) - my_logger.info('Reciprocal space box range (angstroms^(-1)): %3.3f < qx < %3.3f', qx_.min(), qx_.max()) - my_logger.info('Maximum q vector (diagonal) (angstroms^(-1)): %3.3f', qr.max()) - my_logger.info('Number of q shells: %i', nbins) - my_logger.info('Width of q shells (angstroms^(-1)): %3.3f', qstep) - my_logger.info('Random seed: %i', seed) - - if not quiet: - if gui: - my_logger.info("\n Step Chi2 Rg Support Volume") - my_logger.info(" ----- --------- ------- --------------") - else: - print("\n Step Chi2 Rg Support Volume") - print(" ----- --------- ------- --------------") - - if PYFFTW: - a = np.copy(rho) - rho = pyfftw.empty_aligned(a.shape, dtype='complex64') - rho[:] = a - rhoprime = pyfftw.empty_aligned(a.shape, dtype='complex64') - newrho = pyfftw.empty_aligned(a.shape, dtype='complex64') - try: - # Try to plan our transforms with the wisdom we have already - fftw_object = pyfftw.FFTW(rho, - rhoprime, - direction="FFTW_FORWARD", - flags=("FFTW_WISDOM_ONLY",)) - except RuntimeError as e: - # If we don't have enough wisdom, print a warning and proceed. - print(e) - start = time.perf_counter() - fftw_object = pyfftw.FFTW(rho, - rhoprime, - direction="FFTW_FORWARD", - flags=("FFTW_MEASURE",)) - print("Generating wisdom took {}s".format(time.perf_counter() - start)) - with open("fft.wisdom", "wb") as the_file: - wisdom = pyfftw.export_wisdom() - pickle.dump(wisdom, the_file) - - if DENSS_GPU: - rho = cp.array(rho) - qbin_labels = cp.array(qbin_labels) - qbins = cp.array(qbins) - qbinsc = cp.array(qbinsc) - Idata = cp.array(Idata) - qbin_args = cp.array(qbin_args) - sigqdata = cp.array(sigqdata) - support = cp.array(support) - chi = cp.array(chi) - supportV = cp.array(supportV) - Imean = cp.array(Imean) - newrho = cp.array(newrho) - qblravel = cp.array(qblravel) - xcount = cp.array(xcount) - - for j in range(steps): - if abort_event is not None: - if abort_event.is_set(): - my_logger.info('Aborted!') - return [] - - # F = myfftn(rho, DENSS_GPU=DENSS_GPU) - F = myrfftn(rho, DENSS_GPU=DENSS_GPU) - - # sometimes, when using denss_refine.py with non-random starting rho, - # the resulting Fs result in zeros in some locations and the algorithm to break - # here just make those values to be 1e-16 to be non-zero - F[np.abs(F) == 0] = 1e-16 - - # APPLY RECIPROCAL SPACE RESTRAINTS - # calculate spherical average of intensities from 3D Fs - # I3D = myabs(F, DENSS_GPU=DENSS_GPU)**2 - I3D = abs2(F) - Imean = mybinmean(I3D.ravel(), qblravel, xcount=xcount, DENSS_GPU=DENSS_GPU) - - # scale Fs to match data - factors = mysqrt(Idata / Imean, DENSS_GPU=DENSS_GPU) - # do not scale bins outside of desired range - # so set those factors to 1.0 - factors[~qba] = 1.0 - F *= factors[qbin_labels] - - try: - Iq_calc[:, 1] = Imean[qbinsc <= qmax] - chi[j] = calc_chi2(Iq_exp, Iq_calc, scale=True, offset=False, interpolation=True, return_sf=False, - return_fit=False) - except: - # in case the interpolation fails for whatever reason, like the GPU status or something - chi[j] = mysum(((Imean[qba] - Idata[qba]) / sigqdata[qba]) ** 2, DENSS_GPU=DENSS_GPU) / Idata[qba].size - - # APPLY REAL SPACE RESTRAINTS - # rhoprime = myifftn(F, DENSS_GPU=DENSS_GPU).real - rhoprime = myirfftn(F, DENSS_GPU=DENSS_GPU).real - - # use Guinier's law to approximate quickly - rg_j = calc_rg_by_guinier_first_2_points(qbinsc, Imean, DENSS_GPU=DENSS_GPU) - rg[j] = rg_j - - # Error Reduction - newrho *= 0 - newrho[support] = rhoprime[support] - - if not DENSS_GPU and j % write_freq == 0: - if write_xplor_format: - write_xplor(rhoprime / dV, side, fprefix + "_current.xplor") - write_mrc(rhoprime / dV, side, fprefix + "_current.mrc") - - # enforce positivity by making all negative density points zero. - if positivity: # and j in positivity_steps: - newrho[newrho < 0] = 0.0 - - # apply non-crystallographic symmetry averaging - if ncs != 0 and j in ncs_steps: - if DENSS_GPU: - newrho = cp.asnumpy(newrho) - if ncs_type == "icosahedral": - newrho, shift = center_rho_roll(newrho, recenter_mode="com", maxfirst=True, return_shift=True) - support = np.roll(np.roll(np.roll(support, shift[0], axis=0), shift[1], axis=1), shift[2], axis=2) - else: - newrho = align2xyz(newrho) - if DENSS_GPU: - newrho = cp.array(newrho) - - if ncs != 0 and j in [stepi + 1 for stepi in ncs_steps]: - if DENSS_GPU: - newrho = cp.asnumpy(newrho) - if ncs_type == "icosahedral": - rotations = get_icosahedral_matrices() - newrho_total = np.copy(newrho) - for R in rotations[1:]: # Skip identity (first matrix) - sym = transform_rho(newrho, R=R, mode='constant') - newrho_total += sym - newrho = newrho_total / len(rotations) - else: - if ncs_axis == 1: - axes = (1, 2) # longest - if ncs_axis == 2: - axes = (0, 2) # middle - if ncs_axis == 3: - axes = (0, 1) # shortest - degrees = 360. / ncs - newrho_total = np.copy(newrho) - if ncs_type == "dihedral": - # first, rotate original about perpendicular axis by 180 - # then apply n-fold cyclical rotation - d2fold = ndimage.rotate(newrho, 180, axes=axes, reshape=False) - newrhosym = np.copy(newrho) + d2fold - newrhosym /= 2.0 - newrho_total = np.copy(newrhosym) - else: - newrhosym = np.copy(newrho) - for nrot in range(1, ncs): - sym = ndimage.rotate(newrhosym, degrees * nrot, axes=axes, reshape=False) - newrho_total += np.copy(sym) - newrho = newrho_total / ncs - - # run shrinkwrap after ncs averaging to get new support - if shrinkwrap_old_method: - # run the old method - absv = True - newrho, support = shrinkwrap_by_density_value(newrho, absv=absv, sigma=sigma, threshold=threshold, - recenter=recenter, recenter_mode=recenter_mode) - else: - swN = int(swV / dV) - # end this stage of shrinkwrap when the volume is less than a sphere of radius D/2 - if swbyvol and swV > swVend: - newrho, support, threshold = shrinkwrap_by_volume(newrho, absv=True, sigma=sigma, N=swN, - recenter=recenter, recenter_mode=recenter_mode) - swV *= swV_decay - else: - threshold = shrinkwrap_threshold_fraction - if first_time_swdensity: - if not quiet: - if gui: - my_logger.info("switched to shrinkwrap by density threshold = %.4f" % threshold) - else: - print("\nswitched to shrinkwrap by density threshold = %.4f" % threshold) - first_time_swdensity = False - newrho, support = shrinkwrap_by_density_value(newrho, absv=True, sigma=sigma, threshold=threshold, - recenter=recenter, recenter_mode=recenter_mode) - - if DENSS_GPU: - newrho = cp.array(newrho) - - if recenter and j in recenter_steps: - if DENSS_GPU: - newrho = cp.asnumpy(newrho) - support = cp.asnumpy(support) - - # cannot run center_rho_roll() function since we want to also recenter the support - # perhaps we should fix this in the future to clean it up - if recenter_mode == "max": - rhocom = np.unravel_index(newrho.argmax(), newrho.shape) - else: - rhocom = np.array(ndimage.measurements.center_of_mass(np.abs(newrho))) - gridcenter = grid_center(newrho) # (np.array(newrho.shape)-1.)/2. - shift = gridcenter - rhocom - shift = np.rint(shift).astype(int) - newrho = np.roll(np.roll(np.roll(newrho, shift[0], axis=0), shift[1], axis=1), shift[2], axis=2) - support = np.roll(np.roll(np.roll(support, shift[0], axis=0), shift[1], axis=1), shift[2], axis=2) - - if DENSS_GPU: - newrho = cp.array(newrho) - support = cp.array(support) - - # update support using shrinkwrap method - if shrinkwrap and j >= shrinkwrap_minstep and j % shrinkwrap_iter == 1: - if DENSS_GPU: - newrho = cp.asnumpy(newrho) - support = cp.asnumpy(support) - - if shrinkwrap_old_method: - absv = True - newrho, support = shrinkwrap_by_density_value(newrho, absv=absv, sigma=sigma, threshold=threshold, - recenter=recenter, recenter_mode=recenter_mode) - else: - swN = int(swV / dV) - # end this stage of shrinkwrap when the volume is less than a sphere of radius D/2 - if swbyvol and swV > swVend: - newrho, support, threshold = shrinkwrap_by_volume(newrho, absv=True, sigma=sigma, N=swN, - recenter=recenter, recenter_mode=recenter_mode) - swV *= swV_decay - else: - threshold = shrinkwrap_threshold_fraction - if first_time_swdensity: - if not quiet: - if gui: - my_logger.info("switched to shrinkwrap by density threshold = %.4f" % threshold) - else: - print("\nswitched to shrinkwrap by density threshold = %.4f" % threshold) - first_time_swdensity = False - newrho, support = shrinkwrap_by_density_value(newrho, absv=True, sigma=sigma, threshold=threshold, - recenter=recenter, recenter_mode=recenter_mode) - - if sigma > shrinkwrap_sigma_end: - sigma = shrinkwrap_sigma_decay * sigma - - if DENSS_GPU: - newrho = cp.array(newrho) - support = cp.array(support) - - # run erode when shrinkwrap is run - if erode and shrinkwrap and j > shrinkwrap_minstep and j % shrinkwrap_iter == 1: - if DENSS_GPU: - newrho = cp.asnumpy(newrho) - support = cp.asnumpy(support) - - # eroded is the region of the support _not_ including the boundary pixels - # so it is the entire interior. erode_region is _just_ the boundary pixels - eroded = ndimage.binary_erosion(support, np.ones((erosion_width, erosion_width, erosion_width))) - # get just boundary voxels, i.e. where support=True and eroded=False - erode_region = np.logical_and(support, ~eroded) - # set all negative density in boundary pixels to zero. - newrho[(newrho < 0) & (erode_region)] = 0 - - if DENSS_GPU: - newrho = cp.array(newrho) - support = cp.array(support) - - if enforce_connectivity and j in enforce_connectivity_steps: - if DENSS_GPU: - newrho = cp.asnumpy(newrho) - - # first run shrinkwrap to define the features - if shrinkwrap_old_method: - # run the old method - absv = True - newrho, support = shrinkwrap_by_density_value(newrho, absv=absv, sigma=sigma, threshold=threshold, - recenter=recenter, recenter_mode=recenter_mode) - else: - # end this stage of shrinkwrap when the volume is less than a sphere of radius D/2 - swN = int(swV / dV) - if swbyvol and swV > swVend: - newrho, support, threshold = shrinkwrap_by_volume(newrho, absv=True, sigma=sigma, N=swN, - recenter=recenter, recenter_mode=recenter_mode) - else: - newrho, support = shrinkwrap_by_density_value(newrho, absv=True, sigma=sigma, threshold=threshold, - recenter=recenter, recenter_mode=recenter_mode) - - # label the support into separate segments based on a 3x3x3 grid - struct = ndimage.generate_binary_structure(3, 3) - labeled_support, num_features = ndimage.label(support, structure=struct) - sums = np.zeros((num_features)) - num_features_to_keep = np.min([num_features, enforce_connectivity_max_features]) - if not quiet: - if not gui: - print("EC: %d -> %d " % (num_features, num_features_to_keep)) - - # find the feature with the greatest number of electrons - for feature in range(num_features + 1): - sums[feature - 1] = np.sum(newrho[labeled_support == feature]) - big_feature = np.argmax(sums) + 1 - # order the indices of the features in descending order based on their sum/total density - sums_order = np.argsort(sums)[::-1] - sums_sorted = sums[sums_order] - # now grab the actual feature numbers (rather than the indices) - features_sorted = sums_order + 1 - - # remove features from the support that are not the primary feature - # support[labeled_support != big_feature] = False - # reset support to zeros everywhere - # then progressively add in regions of support up to num_features_to_keep - support *= False - for feature in range(num_features_to_keep): - support[labeled_support == features_sorted[feature]] = True - - # clean up density based on new support - newrho[~support] = 0 - - if DENSS_GPU: - newrho = cp.array(newrho) - support = cp.array(support) - - supportV[j] = mysum(support, DENSS_GPU=DENSS_GPU) * dV - - # convert possibly imaginary rg to string for printing - rg_str = (f"{rg[j].real:3.2f}" if abs(rg[j].imag) < 1e-10 else - f"{rg[j].imag:3.2f}j" if abs(rg[j].real) < 1e-10 else - f"{rg[j].real:3.2f}{rg[j].imag:+3.2f}j") - - if not quiet: - if gui: - my_logger.info("% 5i % 4.2e %s % 5i ", j, chi[j], rg_str, supportV[j]) - else: - sys.stdout.write("\r% 5i % 4.2e %s % 5i " % (j, chi[j], rg_str, supportV[j])) - sys.stdout.flush() - - # occasionally report progress in logger - if j % 500 == 0 and not gui: - my_logger.info('Step % 5i: % 4.2e %s % 5i ', j, chi[j], rg_str, supportV[j]) - - if j > 101 + shrinkwrap_minstep: - if DENSS_GPU: - lesser = mystd(chi[j - 100:j], DENSS_GPU=DENSS_GPU).get() < chi_end_fraction * mymean(chi[j - 100:j], - DENSS_GPU=DENSS_GPU).get() - else: - lesser = mystd(chi[j - 100:j], DENSS_GPU=DENSS_GPU) < chi_end_fraction * mymean(chi[j - 100:j], - DENSS_GPU=DENSS_GPU) - if lesser: - break - - rho = newrho - - # convert back to numpy outside of for loop - if DENSS_GPU: - rho = cp.asnumpy(rho) - qbin_labels = cp.asnumpy(qbin_labels) - qbin_args = cp.asnumpy(qbin_args) - sigqdata = cp.asnumpy(sigqdata) - Imean = cp.asnumpy(Imean) - chi = cp.asnumpy(chi) - qbins = cp.asnumpy(qbins) - qbinsc = cp.asnumpy(qbinsc) - Idata = cp.asnumpy(Idata) - support = cp.asnumpy(support) - supportV = cp.asnumpy(supportV) - Idata = cp.asnumpy(Idata) - newrho = cp.asnumpy(newrho) - qblravel = cp.asnumpy(qblravel) - xcount = cp.asnumpy(xcount) - - # F = myfftn(rho) - F = myrfftn(rho) - # calculate spherical average intensity from 3D Fs - I3D = abs2(F) - # I3D = myabs(F)**2 - Imean = mybinmean(I3D.ravel(), qblravel, xcount=xcount) - - # scale Fs to match data - factors = np.sqrt(Idata / Imean) - factors[~qba] = 1.0 - F *= factors[qbin_labels] - # rho = myifftn(F) - rho = myirfftn(F) - rho = rho.real - - # negative images yield the same scattering, so flip the image - # to have more positive than negative values if necessary - # to make sure averaging is done properly - # whether theres actually more positive than negative values - # is ambiguous, but this ensures all maps are at least likely - # the same designation when averaging - if np.sum(np.abs(rho[rho < 0])) > np.sum(rho[rho > 0]): - rho *= -1 - - # scale total number of electrons - if ne is not None: - rho *= ne / np.sum(rho) - - rg[j + 1] = calc_rg_by_guinier_first_2_points(qbinsc, Imean) - supportV[j + 1] = supportV[j] - - # change rho to be the electron density in e-/angstroms^3, rather than number of electrons, - # which is what the FFT assumes - rho /= dV - my_logger.info('FINISHED DENSITY REFINEMENT') - - if cutout: - # here were going to cut rho out of the large real space box - # to the voxels that contain the particle - # use D to estimate particle size - # assume the particle is in the center of the box - # calculate how many voxels needed to contain particle of size D - # use bigger than D to make sure we don't crop actual particle in case its larger than expected - # lets clip it to a maximum of 2*D to be safe - nD = int(2 * D / dx) + 1 - # make sure final box will still have even samples - if nD % 2 == 1: - nD += 1 - - nmin = nbox // 2 - nD // 2 - nmax = nbox // 2 + nD // 2 + 2 - # create new rho array containing only the particle - newrho = rho[nmin:nmax, nmin:nmax, nmin:nmax] - rho = newrho - # do the same for the support - newsupport = support[nmin:nmax, nmin:nmax, nmin:nmax] - support = newsupport - # update side to new size of box - side = dx * (nmax - nmin) - - if write_xplor_format: - write_xplor(rho, side, fprefix + ".xplor") - write_xplor(np.ones_like(rho) * support, side, fprefix + "_support.xplor") - - write_mrc(rho, side, fprefix + ".mrc") - write_mrc(np.ones_like(rho) * support, side, fprefix + "_support.mrc") - - # return original unscaled values of Idata (and therefore Imean) for comparison with real data - Idata /= scale_factor - sigqdata /= scale_factor - Imean /= scale_factor - I /= scale_factor - sigq /= scale_factor - - # Write some more output files - Iq_exp = np.vstack((qraw, Iraw, sigqraw)).T - Iq_calc = np.vstack((qbinsc, Imean, Imean * 0.01)).T - idx = np.where(Iraw > 0) - Iq_exp = Iq_exp[idx] - qmax = np.min([Iq_exp[:, 0].max(), Iq_calc[:, 0].max()]) - Iq_exp = Iq_exp[Iq_exp[:, 0] <= qmax] - Iq_calc = Iq_calc[Iq_calc[:, 0] <= qmax] - final_chi2, exp_scale_factor, offset, fit = calc_chi2(Iq_exp, Iq_calc, scale=True, offset=False, interpolation=True, - return_sf=True, return_fit=True) - - final_step = j+1 - - chi[final_step] = final_chi2 - - np.savetxt(fprefix + '_map.fit', fit, delimiter=' ', fmt='%.5e', - header='q(data),I(data),error(data),I(density); chi2=%.3f' % final_chi2) - - # Create formatted strings for each column (enabling printing of complex rg values) - chi_str = [f"{chi[i].real:.5e}" for i in range(final_step)] - rg_str = [f"{rg[i].real:.5e}" if abs(rg[i].imag) < 1e-10 else f"{rg[i].imag:.5e}j" - for i in range(final_step)] - support_str = [f"{supportV[i].real:.5e}" for i in range(final_step)] - - np.savetxt(fprefix + '_stats_by_step.dat', - np.column_stack((chi_str, rg_str, support_str)), - delimiter=" ", fmt="%s", header='Chi2 Rg SupportVolume') - - my_logger.info('Number of steps: %i', j) - my_logger.info('Final Chi2: %.3e', chi[-1]) - my_logger.info('Final Rg: %s', np.round(rg[-1],3)) - my_logger.info('Final Support Volume: %3.3f', supportV[-1]) - my_logger.info('Mean Density (all voxels): %3.5f', np.mean(rho)) - my_logger.info('Std. Dev. of Density (all voxels): %3.5f', np.std(rho)) - my_logger.info('RMSD of Density (all voxels): %3.5f', np.sqrt(np.mean(np.square(rho)))) - - return qdata, Idata, sigqdata, qbinsc, Imean, chi, rg, supportV, rho, side, fit, final_chi2 def shrinkwrap_by_density_value(rho, absv=True, sigma=3.0, threshold=0.2, recenter=True, recenter_mode="com"): @@ -3944,7 +3256,23 @@ def __init__(self, quiet=False, run_all_on_init=False, logger=None, + + PArhoinvacuosf =1, + PApowersf =1, + PAsf_ex =1, + PAsf_sh =1, ): + + self.PArhoinvacuosf=PArhoinvacuosf, + self.PApowersf =PApowersf, + self.PAsf_ex =PAsf_ex, + self.PAsf_sh =PAsf_sh, + + # self.sf_ex = sf_ex * float(self.PAsf_ex) + # self.sf_sh = sf_sh * float(self.PAsf_sh) + # self.rho_insolvent = float(self.PArhoinvacuosf)*self.rho_invacuo - sf_ex * self.rho_exvol + sf_sh * self.rho_shell + # self.rho_insolvent = self.rho_insolvent**float(self.PApowersf) + self.quiet = quiet self.pdb = pdb self.ignore_waters = ignore_waters @@ -3993,6 +3321,9 @@ def __init__(self, # calculate some optimal grid values self.optimal_side = estimate_side_from_pdb(self.pdb, use_convex_hull=True) self.D = self.optimal_side/3 + 2*(1.7+2.8*2) + print(f'{self.D=}') + # self.D = 61.96488641388 + # self.D = 90.527105 self.optimal_voxel = 1.0 self.optimal_nsamples = np.ceil(self.optimal_side / self.optimal_voxel).astype(int) self.nsamples_limit = 256 @@ -4713,9 +4044,15 @@ def calc_rho_with_modified_params(self, params): sf_sh = params[1] / self.shell_contrast else: sf_sh = 1.0 - self.sf_ex = sf_ex - self.sf_sh = sf_sh - self.rho_insolvent = self.rho_invacuo - sf_ex * self.rho_exvol + sf_sh * self.rho_shell + # print('##########') + # print(self.PAsf_ex) + # print(sf_ex) + self.sf_ex = sf_ex * float(self.PAsf_ex[0]) + self.sf_sh = sf_sh * float(self.PAsf_sh[0]) + self.rho_insolvent = float(self.PArhoinvacuosf[0])*self.rho_invacuo - sf_ex * self.rho_exvol + sf_sh * self.rho_shell + neg_loc = np.where(self.rho_insolvent <0) + self.rho_insolvent = np.abs(self.rho_insolvent)**float(self.PApowersf[0]) + self.rho_insolvent[neg_loc] *=-1 def calculate_excluded_volume_in_A3(self): """Calculate the excluded volume of the particle in angstroms cubed.""" @@ -5713,4 +5050,13 @@ def denss_3DFs(rho_start, dmax, ne=None, voxel=5., oversampling=3., positivity=T +from .recon_new import reconstruct_abinitio_from_scattering_profile_PA +from .recon_old import reconstruct_abinitio_from_scattering_profile + + +# from recon_new import test_recon_new +# from recon_old import test_recon_old +# if __name__=='__main__': + # test_recon_old() + # test_recon_new() diff --git a/denss/inj.py b/denss/inj.py new file mode 100644 index 0000000..fd40910 --- /dev/null +++ b/denss/inj.py @@ -0,0 +1,4 @@ + + + + diff --git a/denss/recon_new.py b/denss/recon_new.py new file mode 100644 index 0000000..2bbb1eb --- /dev/null +++ b/denss/recon_new.py @@ -0,0 +1,838 @@ +import sys +import re +import os +import json +import struct +import logging +from functools import partial +import multiprocessing +import datetime, time +from time import sleep +import warnings +import pickle + +import numpy as np +from scipy import ndimage, interpolate, spatial, special, optimize, signal, stats, fft +from functools import reduce + +# load some dictionaries +from denss.resources import resources + + + +def test_recon_new(): + print('Hello meow') + + +# PYFFTW = False + +from .core import mybinmean, myrfftn, abs2, mysqrt, mysum, myirfftn, write_mrc +from .core import shrinkwrap_by_density_value, PYFFTW, shrinkwrap_by_volume, mystd, mymean, grid_center + +#oran: new function +def reconstruct_abinitio_from_scattering_profile_PA(q, I, sigq, dmax, qraw=None, Iraw=None, sigqraw=None, + ne=None, voxel=5., oversampling=3., recenter=True, recenter_steps=None, + recenter_mode="com", positivity=True, positivity_steps=None, extrapolate=True, output="map", + steps=None, seed=None, rho_start=None, support_start=None, add_noise=None, + shrinkwrap=True, shrinkwrap_old_method=False, shrinkwrap_sigma_start=3, + shrinkwrap_sigma_end=1.5, shrinkwrap_sigma_decay=0.99, shrinkwrap_threshold_fraction=0.2, + shrinkwrap_iter=20, shrinkwrap_minstep=100, chi_end_fraction=0.01, + write_xplor_format=False, write_freq=100, enforce_connectivity=True, + enforce_connectivity_steps=[500], enforce_connectivity_max_features=1, cutout=True, quiet=False, ncs=0, + ncs_steps=[500], ncs_axis=1, ncs_type="cyclical", abort_event=None, my_logger=logging.getLogger(), + path='.', gui=False, DENSS_GPU=False, + PA_outdir=None, PA_cont=True, PA_dparams=[1], PA_files=None, PA_initmrc=None): + + """Calculate electron density from scattering data.""" + + print('##') + print('Using new DENSS recon') + print('##') + + + ###NEW + PA_qs = [] + PA_Is = [] + PA_sigqs = [] + for PA_fname in PA_files: + PA_loaded_array = np.loadtxt(PA_fname) + PA_qs.append(PA_loaded_array[:,0]) + PA_Is.append(PA_loaded_array[:,1]) + PA_sigqs.append(PA_loaded_array[:,2]) + + + if abort_event is not None: + if abort_event.is_set(): + my_logger.info('Aborted!') + return [] + + if DENSS_GPU and CUPY_LOADED: + DENSS_GPU = True + elif DENSS_GPU: + if gui: + my_logger.info("GPU option set, but CuPy failed to load") + else: + print("GPU option set, but CuPy failed to load") + DENSS_GPU = False + + + fprefix = os.path.join(path, output) + + D = dmax + + # Initialize variables + + side = oversampling * D + + + halfside = side / 2 + + n = int(side / voxel) + # want n to be even for speed/memory optimization with the FFT, ideally a power of 2, but wont enforce that + if n % 2 == 1: + n += 1 + # store n for later use if needed + nbox = n + + dx = side / n + dV = dx ** 3 + V = side ** 3 + x_ = np.linspace(-(n // 2) * dx, (n // 2 - 1) * dx, n) + x, y, z = np.meshgrid(x_, x_, x_, indexing='ij') + r = np.sqrt(x ** 2 + y ** 2 + z ** 2) + + df = 1 / side + qx_ = np.fft.fftfreq(x_.size) * n * df * 2 * np.pi + qz_ = np.fft.rfftfreq(x_.size) * n * df * 2 * np.pi + + qx, qy, qz = np.meshgrid(qx_, qx_, qz_, indexing='ij') + qr = np.sqrt(qx ** 2 + qy ** 2 + qz ** 2) + qmax = np.max(qr) + + + qstep = np.min(qr[qr > 0]) - 1e-8 # subtract a tiny bit to deal with floating point error + nbins = int(qmax / qstep) + + qbins = np.linspace(0, nbins * qstep, nbins + 1) + + # create an array labeling each voxel according to which qbin it belongs + qbin_labels = np.searchsorted(qbins, qr, "right") + qbin_labels -= 1 + qbl = qbin_labels + qblravel = qbin_labels.ravel() + xcount = np.bincount(qblravel) + + # calculate qbinsc as average of q values in shell + qbinsc = mybinmean(qr.ravel(), qblravel, xcount) + + # allow for any range of q data + qdata = qbinsc[np.where((qbinsc >= q.min()) & (qbinsc <= q.max()))] + + + + PA_Idatas = [] + for PA_q, PA_I in zip(PA_qs, PA_Is): + PA_Idatas.append(np.interp(qdata, PA_q, PA_I )) + + + # if extrapolate: + # qextend = qbinsc[qbinsc >= qdata.max()] + # Iextend = qextend ** -4 + # Iextend = Iextend / Iextend[0] * Idata[-1] + + # create list of qbin indices just in region of data for later F scaling + qbin_args = np.in1d(qbinsc, qdata, assume_unique=True) + qba = qbin_args # just for brevity when using it later + + + + PA_sigqdata = [] + for PA_q, PA_sigq in zip(PA_qs, PA_sigqs): + PA_sigqdata.append(np.interp(qdata, PA_q, PA_sigq)) + + + # scale_factor = ne ** 2 / Idata[0] + # Idata *= scale_factor + # sigqdata *= scale_factor + # I *= scale_factor + # sigq *= scale_factor + + if steps == 'None' or steps is None or int(steps) < 1: + stepsarr = np.concatenate((enforce_connectivity_steps, [shrinkwrap_minstep])) + maxec = np.max(stepsarr) + steps = int(shrinkwrap_iter * ( + np.log(shrinkwrap_sigma_end / shrinkwrap_sigma_start) / np.log(shrinkwrap_sigma_decay)) + maxec) + # add enough steps for convergence after shrinkwrap is finished + # something like 7000 seems reasonable, likely will finish before that on its own + # then just make a round number when using defaults + steps += 7621 + else: + steps = int(steps) + + + PA_Imeans = [] + for _ in PA_Is: + PA_Imeans.append(np.zeros(len(qbins))) + + + + + + qraw = q + PA_Iraws = PA_Is + PA_sigqraws = PA_sigqs + + PA_Iq_exps = [] + PA_Iq_calcs = [] + + # chi = np.zeros((steps + 1)) + chi = np.zeros( (len(PA_Is), steps+1)) + + rg = np.zeros(( steps + 1), dtype=np.complex128) + supportV = np.zeros((steps + 1)) + + + if support_start is not None: + support = np.copy(support_start) + else: + support = np.ones(x.shape, dtype=bool) + + if seed is None: + # Have to reset the random seed to get a random in different from other processes + prng = np.random.RandomState() + seed = prng.randint(2 ** 31 - 1) + else: + seed = int(seed) + + prng = np.random.RandomState(seed) + + + + if rho_start is not None: + print('') + print('hell yeah') + print(rho_start.min()) + print(rho_start.max()) + + rho = rho_start # *dV + if add_noise is not None: + noise_factor = rho.max() * add_noise + noise = prng.random_sample(size=x.shape) * noise_factor + rho += noise + else: + rho = prng.random_sample(size=x.shape) # - 0.5 + + + print('####', rho.shape) + + + newrho = np.zeros_like(rho) + + sigma = shrinkwrap_sigma_start + + # calculate the starting shrinkwrap volume as the volume of a sphere + # of radius Dmax, i.e. much larger than the particle size + swbyvol = True + swV = V / 2.0 + Vsphere_Dover2 = 4. / 3 * np.pi * (D / 2.) ** 3 + swVend = Vsphere_Dover2 + swV_decay = 0.9 + first_time_swdensity = True + threshold = shrinkwrap_threshold_fraction + # erode will make take five outer edge pixels of the support, like a shell, + # and will make sure no negative density is in that region + # this is to counter an artifact that occurs when allowing for negative density + # as the negative density often appears immediately next to positive density + # at the edges of the object. This ensures (i.e. biases) only real negative density + # in the interior of the object (i.e. more than five pixels from the support boundary) + # thus we only need this on when in membrane mode, i.e. when positivity=False + if shrinkwrap_old_method or positivity: + erode = False + else: + erode = True + erosion_width = int(20 / dx) # this is in pixels + if erosion_width == 0: + # make minimum of one pixel + erosion_width = 1 + + # for icosahedral symmetry, just set ncs to 1 to trigger ncs averaging + if ncs_type == "icosahedral": + ncs = 1 + + my_logger.info('q range of input data: %3.3f < q < %3.3f', q.min(), q.max()) + my_logger.info('Maximum dimension: %3.3f', D) + my_logger.info('Sampling ratio: %3.3f', oversampling) + my_logger.info('Requested real space voxel size: %3.3f', voxel) + my_logger.info('Number of electrons: %3.3f', ne) + my_logger.info('Recenter: %s', recenter) + my_logger.info('Recenter Steps: %s', recenter_steps) + my_logger.info('Recenter Mode: %s', recenter_mode) + my_logger.info('NCS: %s', ncs) + my_logger.info('NCS Type: %s', ncs_type) + my_logger.info('NCS Steps: %s', ncs_steps) + my_logger.info('NCS Axis: %s', ncs_axis) + my_logger.info('Positivity: %s', positivity) + # my_logger.info('Positivity Steps: %s', positivity_steps) + my_logger.info('Extrapolate high q: %s', extrapolate) + my_logger.info('Shrinkwrap: %s', shrinkwrap) + my_logger.info('Shrinkwrap Old Method: %s', shrinkwrap_old_method) + my_logger.info('Shrinkwrap sigma start (angstroms): %s', shrinkwrap_sigma_start * dx) + my_logger.info('Shrinkwrap sigma end (angstroms): %s', shrinkwrap_sigma_end * dx) + my_logger.info('Shrinkwrap sigma start (voxels): %s', shrinkwrap_sigma_start) + my_logger.info('Shrinkwrap sigma end (voxels): %s', shrinkwrap_sigma_end) + my_logger.info('Shrinkwrap sigma decay: %s', shrinkwrap_sigma_decay) + my_logger.info('Shrinkwrap threshold fraction: %s', shrinkwrap_threshold_fraction) + my_logger.info('Shrinkwrap iterations: %s', shrinkwrap_iter) + my_logger.info('Shrinkwrap starting step: %s', shrinkwrap_minstep) + my_logger.info('Enforce connectivity: %s', enforce_connectivity) + my_logger.info('Enforce connectivity steps: %s', enforce_connectivity_steps) + my_logger.info('Chi2 end fraction: %3.3e', chi_end_fraction) + my_logger.info('Maximum number of steps: %i', steps) + my_logger.info('Grid size (voxels): %i x %i x %i', n, n, n) + my_logger.info('Real space box width (angstroms): %3.3f', side) + my_logger.info('Real space box range (angstroms): %3.3f < x < %3.3f', x_.min(), x_.max()) + my_logger.info('Real space box volume (angstroms^3): %3.3f', V) + my_logger.info('Real space voxel size (angstroms): %3.3f', dx) + my_logger.info('Real space voxel volume (angstroms^3): %3.3f', dV) + my_logger.info('Reciprocal space box width (angstroms^(-1)): %3.3f', qx_.max() - qx_.min()) + my_logger.info('Reciprocal space box range (angstroms^(-1)): %3.3f < qx < %3.3f', qx_.min(), qx_.max()) + my_logger.info('Maximum q vector (diagonal) (angstroms^(-1)): %3.3f', qr.max()) + my_logger.info('Number of q shells: %i', nbins) + my_logger.info('Width of q shells (angstroms^(-1)): %3.3f', qstep) + my_logger.info('Random seed: %i', seed) + + if not quiet: + if gui: + my_logger.info("\n Step Chi2 Rg Support Volume") + my_logger.info(" ----- --------- ------- --------------") + else: + print("\n Step Chi2 Rg Support Volume") + print(" ----- --------- ------- --------------") + + if PYFFTW: + a = np.copy(rho) + rho = pyfftw.empty_aligned(a.shape, dtype='complex64') + rho[:] = a + rhoprime = pyfftw.empty_aligned(a.shape, dtype='complex64') + newrho = pyfftw.empty_aligned(a.shape, dtype='complex64') + try: + # Try to plan our transforms with the wisdom we have already + fftw_object = pyfftw.FFTW(rho, + rhoprime, + direction="FFTW_FORWARD", + flags=("FFTW_WISDOM_ONLY",)) + except RuntimeError as e: + # If we don't have enough wisdom, print a warning and proceed. + print(e) + start = time.perf_counter() + fftw_object = pyfftw.FFTW(rho, + rhoprime, + direction="FFTW_FORWARD", + flags=("FFTW_MEASURE",)) + print("Generating wisdom took {}s".format(time.perf_counter() - start)) + with open("fft.wisdom", "wb") as the_file: + wisdom = pyfftw.export_wisdom() + pickle.dump(wisdom, the_file) + + if DENSS_GPU: + rho = cp.array(rho) + qbin_labels = cp.array(qbin_labels) + qbins = cp.array(qbins) + qbinsc = cp.array(qbinsc) + qbin_args = cp.array(qbin_args) + sigqdata = cp.array(sigqdata) + support = cp.array(support) + chi = cp.array(chi) + supportV = cp.array(supportV) + newrho = cp.array(newrho) + qblravel = cp.array(qblravel) + xcount = cp.array(xcount) + Idata = cp.array(Idata) + Imean = cp.array(Imean) + + + for j in range(steps): + if abort_event is not None: + if abort_event.is_set(): + my_logger.info('Aborted!') + return [] + + + + # array to hold the scaled rhos + PA_rhods = np.zeros( (len(PA_dparams), rho.shape[0], rho.shape[1], rho.shape[2])) + + for PA_i_dparam, PA_dparam in enumerate(PA_dparams): + + # get a scaled version of rho + PA_neg_loc = np.where(rho <0) + PA_rhod = np.abs(rho)**PA_dparam + PA_rhod[PA_neg_loc] *= -1 + + + #continue as normal with this scaled version of rho + F = myrfftn(PA_rhod, DENSS_GPU=DENSS_GPU) + + + # sometimes, when using denss_refine.py with non-random starting rho, + # the resulting Fs result in zeros in some locations and the algorithm to break + # here just make those values to be 1e-16 to be non-zero + F[np.abs(F) == 0] = 1e-16 + + # APPLY RECIPROCAL SPACE RESTRAINTS + # calculate spherical average of intensities from 3D Fs + I3D = abs2(F) + + + + + Imean = mybinmean(I3D.ravel(), qblravel, xcount=xcount, DENSS_GPU=DENSS_GPU) + + + + factors = mysqrt(PA_Idatas[PA_i_dparam]/ Imean, DENSS_GPU=DENSS_GPU) + # do not scale bins outside of desired range + # so set those factors to 1.0 + factors[~qba] = 1.0 + F *= factors[qbin_labels] + + # try: + # #apple + # # Iq_calc[:, 1] = Imean[qbinsc <= qmax] + # PA_Iq_calcs[PA_i_dparam][:,1] = Imean[qbinsc <= qmax] + # chi[j] = calc_chi2(Iq_exp, Iq_calc, scale=True, offset=False, interpolation=True, return_sf=False, + # return_fit=False) + # except: + # #apple + # # in case the interpolation fails for whatever reason, like the GPU status or something + # chi[j] = mysum(((Imean[qba] - Idata[qba]) / sigqdata[qba]) ** 2, DENSS_GPU=DENSS_GPU) / Idata[qba].size + + # PA_Iq_calcs[PA_i_dparam][:,1] = Imean[qbinsc <= qmax] + # chi[PA_i_dparam, j] = calc_chi2(Iq_exp, Iq_calc, scale=True, offset=False, interpolation=True, return_sf=False,) + + chi[PA_i_dparam][j] = mysum(((Imean[qba] - PA_Idatas[PA_i_dparam][qba]) / PA_sigqdata[PA_i_dparam][qba]) ** 2, DENSS_GPU=DENSS_GPU) / PA_Idatas[PA_i_dparam][qba].size + + #Save this version of the scaled rho + PA_rhods[PA_i_dparam] = myirfftn(F, DENSS_GPU=DENSS_GPU).real + + + # unscale all the rhos + for PA_i_dparam, PA_dparam in enumerate(PA_dparams): + PA_neg_loc = np.where(PA_rhods[PA_i_dparam]<0) + PA_rhods[PA_i_dparam] = np.abs(PA_rhods[PA_i_dparam])**(1/PA_dparam) + PA_rhods[PA_i_dparam][PA_neg_loc] *= -1 + + #average back the unscaled rhos back together + rhoprime = np.mean(PA_rhods, axis=0) + + + + # use Guinier's law to approximate quickly + # rg_j = calc_rg_by_guinier_first_2_points(qbinsc, Imean, DENSS_GPU=DENSS_GPU) + + rg_j = -1000 + rg[j] = rg_j + + # Error Reduction + newrho *= 0 + newrho[support] = rhoprime[support] + + if not DENSS_GPU and j % write_freq == 0: + if write_xplor_format: + write_xplor(rhoprime / dV, side, fprefix + "_current.xplor") + write_mrc(rhoprime / dV, side, fprefix + "_current.mrc") + + # enforce positivity by making all negative density points zero. + if positivity: # and j in positivity_steps: + newrho[newrho < 0] = 0.0 + + # apply non-crystallographic symmetry averaging + if ncs != 0 and j in ncs_steps: + if DENSS_GPU: + newrho = cp.asnumpy(newrho) + if ncs_type == "icosahedral": + newrho, shift = center_rho_roll(newrho, recenter_mode="com", maxfirst=True, return_shift=True) + support = np.roll(np.roll(np.roll(support, shift[0], axis=0), shift[1], axis=1), shift[2], axis=2) + else: + newrho = align2xyz(newrho) + if DENSS_GPU: + newrho = cp.array(newrho) + + if ncs != 0 and j in [stepi + 1 for stepi in ncs_steps]: + if DENSS_GPU: + newrho = cp.asnumpy(newrho) + if ncs_type == "icosahedral": + rotations = get_icosahedral_matrices() + newrho_total = np.copy(newrho) + for R in rotations[1:]: # Skip identity (first matrix) + sym = transform_rho(newrho, R=R, mode='constant') + newrho_total += sym + newrho = newrho_total / len(rotations) + else: + if ncs_axis == 1: + axes = (1, 2) # longest + if ncs_axis == 2: + axes = (0, 2) # middle + if ncs_axis == 3: + axes = (0, 1) # shortest + degrees = 360. / ncs + newrho_total = np.copy(newrho) + if ncs_type == "dihedral": + # first, rotate original about perpendicular axis by 180 + # then apply n-fold cyclical rotation + d2fold = ndimage.rotate(newrho, 180, axes=axes, reshape=False) + newrhosym = np.copy(newrho) + d2fold + newrhosym /= 2.0 + newrho_total = np.copy(newrhosym) + else: + newrhosym = np.copy(newrho) + for nrot in range(1, ncs): + sym = ndimage.rotate(newrhosym, degrees * nrot, axes=axes, reshape=False) + newrho_total += np.copy(sym) + newrho = newrho_total / ncs + + # run shrinkwrap after ncs averaging to get new support + if shrinkwrap_old_method: + # run the old method + absv = True + newrho, support = shrinkwrap_by_density_value(newrho, absv=absv, sigma=sigma, threshold=threshold, + recenter=recenter, recenter_mode=recenter_mode) + else: + swN = int(swV / dV) + # end this stage of shrinkwrap when the volume is less than a sphere of radius D/2 + if swbyvol and swV > swVend: + newrho, support, threshold = shrinkwrap_by_volume(newrho, absv=True, sigma=sigma, N=swN, + recenter=recenter, recenter_mode=recenter_mode) + swV *= swV_decay + else: + threshold = shrinkwrap_threshold_fraction + if first_time_swdensity: + if not quiet: + if gui: + my_logger.info("switched to shrinkwrap by density threshold = %.4f" % threshold) + else: + print("\nswitched to shrinkwrap by density threshold = %.4f" % threshold) + first_time_swdensity = False + newrho, support = shrinkwrap_by_density_value(newrho, absv=True, sigma=sigma, threshold=threshold, + recenter=recenter, recenter_mode=recenter_mode) + + if DENSS_GPU: + newrho = cp.array(newrho) + + if recenter and j in recenter_steps: + if DENSS_GPU: + newrho = cp.asnumpy(newrho) + support = cp.asnumpy(support) + + # cannot run center_rho_roll() function since we want to also recenter the support + # perhaps we should fix this in the future to clean it up + if recenter_mode == "max": + rhocom = np.unravel_index(newrho.argmax(), newrho.shape) + else: + rhocom = np.array(ndimage.measurements.center_of_mass(np.abs(newrho))) + gridcenter = grid_center(newrho) # (np.array(newrho.shape)-1.)/2. + shift = gridcenter - rhocom + shift = np.rint(shift).astype(int) + newrho = np.roll(np.roll(np.roll(newrho, shift[0], axis=0), shift[1], axis=1), shift[2], axis=2) + support = np.roll(np.roll(np.roll(support, shift[0], axis=0), shift[1], axis=1), shift[2], axis=2) + + if DENSS_GPU: + newrho = cp.array(newrho) + support = cp.array(support) + + # update support using shrinkwrap method + if shrinkwrap and j >= shrinkwrap_minstep and j % shrinkwrap_iter == 1: + if DENSS_GPU: + newrho = cp.asnumpy(newrho) + support = cp.asnumpy(support) + + if shrinkwrap_old_method: + absv = True + newrho, support = shrinkwrap_by_density_value(newrho, absv=absv, sigma=sigma, threshold=threshold, + recenter=recenter, recenter_mode=recenter_mode) + else: + swN = int(swV / dV) + # end this stage of shrinkwrap when the volume is less than a sphere of radius D/2 + if swbyvol and swV > swVend: + newrho, support, threshold = shrinkwrap_by_volume(newrho, absv=True, sigma=sigma, N=swN, + recenter=recenter, recenter_mode=recenter_mode) + swV *= swV_decay + else: + threshold = shrinkwrap_threshold_fraction + if first_time_swdensity: + if not quiet: + if gui: + my_logger.info("switched to shrinkwrap by density threshold = %.4f" % threshold) + else: + print("\nswitched to shrinkwrap by density threshold = %.4f" % threshold) + first_time_swdensity = False + newrho, support = shrinkwrap_by_density_value(newrho, absv=True, sigma=sigma, threshold=threshold, + recenter=recenter, recenter_mode=recenter_mode) + + if sigma > shrinkwrap_sigma_end: + sigma = shrinkwrap_sigma_decay * sigma + + if DENSS_GPU: + newrho = cp.array(newrho) + support = cp.array(support) + + # run erode when shrinkwrap is run + if erode and shrinkwrap and j > shrinkwrap_minstep and j % shrinkwrap_iter == 1: + if DENSS_GPU: + newrho = cp.asnumpy(newrho) + support = cp.asnumpy(support) + + # eroded is the region of the support _not_ including the boundary pixels + # so it is the entire interior. erode_region is _just_ the boundary pixels + eroded = ndimage.binary_erosion(support, np.ones((erosion_width, erosion_width, erosion_width))) + # get just boundary voxels, i.e. where support=True and eroded=False + erode_region = np.logical_and(support, ~eroded) + # set all negative density in boundary pixels to zero. + newrho[(newrho < 0) & (erode_region)] = 0 + + if DENSS_GPU: + newrho = cp.array(newrho) + support = cp.array(support) + + if enforce_connectivity and j in enforce_connectivity_steps: + if DENSS_GPU: + newrho = cp.asnumpy(newrho) + + # first run shrinkwrap to define the features + if shrinkwrap_old_method: + # run the old method + absv = True + newrho, support = shrinkwrap_by_density_value(newrho, absv=absv, sigma=sigma, threshold=threshold, + recenter=recenter, recenter_mode=recenter_mode) + else: + # end this stage of shrinkwrap when the volume is less than a sphere of radius D/2 + swN = int(swV / dV) + if swbyvol and swV > swVend: + newrho, support, threshold = shrinkwrap_by_volume(newrho, absv=True, sigma=sigma, N=swN, + recenter=recenter, recenter_mode=recenter_mode) + else: + newrho, support = shrinkwrap_by_density_value(newrho, absv=True, sigma=sigma, threshold=threshold, + recenter=recenter, recenter_mode=recenter_mode) + + # label the support into separate segments based on a 3x3x3 grid + struct = ndimage.generate_binary_structure(3, 3) + labeled_support, num_features = ndimage.label(support, structure=struct) + sums = np.zeros((num_features)) + num_features_to_keep = np.min([num_features, enforce_connectivity_max_features]) + if not quiet: + if not gui: + print("EC: %d -> %d " % (num_features, num_features_to_keep)) + + # find the feature with the greatest number of electrons + for feature in range(num_features + 1): + sums[feature - 1] = np.sum(newrho[labeled_support == feature]) + big_feature = np.argmax(sums) + 1 + # order the indices of the features in descending order based on their sum/total density + sums_order = np.argsort(sums)[::-1] + sums_sorted = sums[sums_order] + # now grab the actual feature numbers (rather than the indices) + features_sorted = sums_order + 1 + + # remove features from the support that are not the primary feature + # support[labeled_support != big_feature] = False + # reset support to zeros everywhere + # then progressively add in regions of support up to num_features_to_keep + support *= False + for feature in range(num_features_to_keep): + support[labeled_support == features_sorted[feature]] = True + + # clean up density based on new support + newrho[~support] = 0 + + if DENSS_GPU: + newrho = cp.array(newrho) + support = cp.array(support) + + supportV[j] = mysum(support, DENSS_GPU=DENSS_GPU) * dV + + + # convert possibly imaginary rg to string for printing + rg_str = (f"{rg[j].real:3.2f}" if abs(rg[j].imag) < 1e-10 else + f"{rg[j].imag:3.2f}j" if abs(rg[j].real) < 1e-10 else + f"{rg[j].real:3.2f}{rg[j].imag:+3.2f}j") + + # if not quiet: + # if gui: + # my_logger.info("% 5i % 4.2e %s % 5i ", j, chi[j], rg_str, supportV[j]) + # else: + # sys.stdout.write("\r% 5i % 4.2e %s % 5i " % (j, chi[j], rg_str, supportV[j])) + # sys.stdout.flush() + + # occasionally report progress in logger + if j % 500 == 0 and not gui: + # my_logger.info('Step % 5i: % 4.2e %s % 5i ', j, chi[j], rg_str, supportV[j]) + pass + + if j > 101 + shrinkwrap_minstep: + if DENSS_GPU: + lesser = mystd(chi[j - 100:j], DENSS_GPU=DENSS_GPU).get() < chi_end_fraction * mymean(chi[j - 100:j], + DENSS_GPU=DENSS_GPU).get() + else: + lesser = mystd(chi[j - 100:j], DENSS_GPU=DENSS_GPU) < chi_end_fraction * mymean(chi[j - 100:j], + DENSS_GPU=DENSS_GPU) + if lesser: + break + + rho = newrho + + # convert back to numpy outside of for loop + if DENSS_GPU: + rho = cp.asnumpy(rho) + qbin_labels = cp.asnumpy(qbin_labels) + qbin_args = cp.asnumpy(qbin_args) + sigqdata = cp.asnumpy(sigqdata) + Imean = cp.asnumpy(Imean) + chi = cp.asnumpy(chi) + qbins = cp.asnumpy(qbins) + qbinsc = cp.asnumpy(qbinsc) + Idata = cp.asnumpy(Idata) + support = cp.asnumpy(support) + supportV = cp.asnumpy(supportV) + Idata = cp.asnumpy(Idata) + newrho = cp.asnumpy(newrho) + qblravel = cp.asnumpy(qblravel) + xcount = cp.asnumpy(xcount) + + +##apple + # # F = myfftn(rho) + # F = myrfftn(rho) + # # calculate spherical average intensity from 3D Fs + # I3D = abs2(F) + # # I3D = myabs(F)**2 + # Imean = mybinmean(I3D.ravel(), qblravel, xcount=xcount) + + # # scale Fs to match data + # factors = np.sqrt(Idata / Imean) + # factors[~qba] = 1.0 + # F *= factors[qbin_labels] + # # rho = myifftn(F) + # rho = myirfftn(F) + # rho = rho.real + + # negative images yield the same scattering, so flip the image + # to have more positive than negative values if necessary + # to make sure averaging is done properly + # whether theres actually more positive than negative values + # is ambiguous, but this ensures all maps are at least likely + # the same designation when averaging + if np.sum(np.abs(rho[rho < 0])) > np.sum(rho[rho > 0]): + rho *= -1 + + # scale total number of electrons + if ne is not None: + rho *= ne / np.sum(rho) + + # rg[j + 1] = calc_rg_by_guinier_first_2_points(qbinsc, Imean) + # supportV[j + 1] = supportV[j] + + # change rho to be the electron density in e-/angstroms^3, rather than number of electrons, + # which is what the FFT assumes + rho /= dV + my_logger.info('FINISHED DENSITY REFINEMENT') + + if cutout: + # here were going to cut rho out of the large real space box + # to the voxels that contain the particle + # use D to estimate particle size + # assume the particle is in the center of the box + # calculate how many voxels needed to contain particle of size D + # use bigger than D to make sure we don't crop actual particle in case its larger than expected + # lets clip it to a maximum of 2*D to be safe + nD = int(2 * D / dx) + 1 + # make sure final box will still have even samples + if nD % 2 == 1: + nD += 1 + + nmin = nbox // 2 - nD // 2 + nmax = nbox // 2 + nD // 2 + 2 + # create new rho array containing only the particle + newrho = rho[nmin:nmax, nmin:nmax, nmin:nmax] + rho = newrho + # do the same for the support + newsupport = support[nmin:nmax, nmin:nmax, nmin:nmax] + support = newsupport + # update side to new size of box + side = dx * (nmax - nmin) + + if write_xplor_format: + write_xplor(rho, side, fprefix + ".xplor") + write_xplor(np.ones_like(rho) * support, side, fprefix + "_support.xplor") + + write_mrc(rho, side, fprefix + ".mrc") + write_mrc(np.ones_like(rho) * support, side, fprefix + "_support.mrc") + + + + print('######') + import matplotlib.pyplot as plt + plt.figure() + for i_c, c in enumerate(chi): + plt.plot(c, label=PA_dparams[i_c]) + plt.yscale('log') + plt.legend() + plt.xlabel('Iteration') + plt.ylabel('Chi') + plt.show() + + + + +# # return original unscaled values of Idata (and therefore Imean) for comparison with real data + # Idata /= scale_factor + # sigqdata /= scale_factor + # Imean /= scale_factor + # I /= scale_factor + # sigq /= scale_factor + + # # # Write some more output files + # Iq_exp = np.vstack((qraw, Iraw, sigqraw)).T + # Iq_calc = np.vstack((qbinsc, Imean, Imean * 0.01)).T + # idx = np.where(Iraw > 0) + # Iq_exp = Iq_exp[idx] + # qmax = np.min([Iq_exp[:, 0].max(), Iq_calc[:, 0].max()]) + # Iq_exp = Iq_exp[Iq_exp[:, 0] <= qmax] + # Iq_calc = Iq_calc[Iq_calc[:, 0] <= qmax] + # # final_chi2, exp_scale_factor, offset, fit = calc_chi2(Iq_exp, Iq_calc, scale=True, offset=False, interpolation=True, + # # return_sf=True, return_fit=True) + + fit = -120 + final_chi2 = 123456789 + # final_step = j+1 + + # chi[final_step] = final_chi2 + + # np.savetxt(fprefix + '_map.fit', fit, delimiter=' ', fmt='%.5e', + # header='q(data),I(data),error(data),I(density); chi2=%.3f' % final_chi2) + + + # Create formatted strings for each column (enabling printing of complex rg values) + # chi_str = [f"{chi[i].real:.5e}" for i in range(final_step)] + # rg_str = [f"{rg[i].real:.5e}" if abs(rg[i].imag) < 1e-10 else f"{rg[i].imag:.5e}j" + # for i in range(final_step)] + # support_str = [f"{supportV[i].real:.5e}" for i in range(final_step)] + + # np.savetxt(fprefix + '_stats_by_step.dat', + # np.column_stack((chi_str, rg_str, support_str)), + # delimiter=" ", fmt="%s", header='Chi2 Rg SupportVolume') + + # my_logger.info('Number of steps: %i', j) + # my_logger.info('Final Chi2: %.3e', chi[-1]) + # my_logger.info('Final Rg: %s', np.round(rg[-1],3)) + # my_logger.info('Final Support Volume: %3.3f', supportV[-1]) + # my_logger.info('Mean Density (all voxels): %3.5f', np.mean(rho)) + # my_logger.info('Std. Dev. of Density (all voxels): %3.5f', np.std(rho)) + # my_logger.info('RMSD of Density (all voxels): %3.5f', np.sqrt(np.mean(np.square(rho)))) + + + # return None + + + return qdata, Idata, sigqdata, qbinsc, Imean, chi, rg, supportV, rho, side, fit, final_chi2 + + diff --git a/denss/recon_new_v2.py b/denss/recon_new_v2.py new file mode 100644 index 0000000..794da7e --- /dev/null +++ b/denss/recon_new_v2.py @@ -0,0 +1,751 @@ +import sys +import re +import os +import json +import struct +import logging +from functools import partial +import multiprocessing +import datetime, time +from time import sleep +import warnings +import pickle + +import numpy as np +from scipy import ndimage, interpolate, spatial, special, optimize, signal, stats, fft +from functools import reduce + +# load some dictionaries +from denss.resources import resources + + + + +# PYFFTW = False + +from .core import mybinmean, myrfftn, abs2, mysqrt, mysum, myirfftn, write_mrc +from .core import shrinkwrap_by_density_value, PYFFTW, shrinkwrap_by_volume, mystd, mymean, grid_center + +def reconstruct_abinitio_from_scattering_profile_PA(q, I, sigq, dmax, qraw=None, Iraw=None, sigqraw=None, + ne=None, voxel=5., oversampling=3., recenter=True, recenter_steps=None, + recenter_mode="com", positivity=True, positivity_steps=None, extrapolate=True, output="map", + steps=None, seed=None, rho_start=None, support_start=None, add_noise=None, + shrinkwrap=True, shrinkwrap_old_method=False, shrinkwrap_sigma_start=3, + shrinkwrap_sigma_end=1.5, shrinkwrap_sigma_decay=0.99, shrinkwrap_threshold_fraction=0.2, + shrinkwrap_iter=20, shrinkwrap_minstep=100, chi_end_fraction=0.01, + write_xplor_format=False, write_freq=100, enforce_connectivity=True, + enforce_connectivity_steps=[500], enforce_connectivity_max_features=1, cutout=True, quiet=False, ncs=0, + ncs_steps=[500], ncs_axis=1, ncs_type="cyclical", abort_event=None, my_logger=logging.getLogger(), + path='.', gui=False, DENSS_GPU=False, + PA_outdir=None, PA_cont=True, PA_dparams=[1], PA_files=None, PA_initmrc=None): + """Calculate electron density from scattering data.""" + print('') + print('!!') + print('Using V2 PA DENSS recon') + print('!!') + + ### PART 1 + ### Load in the multiple sas profiles + + ### NEW + PA_qs = [] + PA_Is = [] + PA_sigqs = [] + for PA_fname in PA_files: + PA_loaded_array = np.loadtxt(PA_fname) + PA_qs.append(PA_loaded_array[:,0]) + PA_Is.append(PA_loaded_array[:,1]) + PA_sigqs.append(PA_loaded_array[:,2]) + + + ### PART 2 + ### abort if needed and run with cuda if set. Also set the file path. + + if abort_event is not None: + if abort_event.is_set(): + my_logger.info('Aborted!') + return [] + + if DENSS_GPU and CUPY_LOADED: + DENSS_GPU = True + elif DENSS_GPU: + if gui: + my_logger.info("GPU option set, but CuPy failed to load") + else: + print("GPU option set, but CuPy failed to load") + DENSS_GPU = False + + fprefix = os.path.join(path, output) + + + + ### PART 3 + ### set up the varibles ranges. How many qbins? over what range? rbins? + + D = dmax + + side = oversampling * D + halfside = side / 2 + + n = int(side / voxel) + # want n to be even for speed/memory optimization with the FFT, ideally a power of 2, but wont enforce that + if n % 2 == 1: + n += 1 + # store n for later use if needed + nbox = n + + dx = side / n + dV = dx ** 3 + V = side ** 3 + x_ = np.linspace(-(n // 2) * dx, (n // 2 - 1) * dx, n) + x, y, z = np.meshgrid(x_, x_, x_, indexing='ij') + r = np.sqrt(x ** 2 + y ** 2 + z ** 2) + + df = 1 / side + qx_ = np.fft.fftfreq(x_.size) * n * df * 2 * np.pi + qz_ = np.fft.rfftfreq(x_.size) * n * df * 2 * np.pi + qx, qy, qz = np.meshgrid(qx_, qx_, qz_, indexing='ij') + qr = np.sqrt(qx ** 2 + qy ** 2 + qz ** 2) + qmax = np.max(qr) + qstep = np.min(qr[qr > 0]) - 1e-8 # subtract a tiny bit to deal with floating point error + nbins = int(qmax / qstep) + qbins = np.linspace(0, nbins * qstep, nbins + 1) + + # create an array labeling each voxel according to which qbin it belongs + qbin_labels = np.searchsorted(qbins, qr, "right") + qbin_labels -= 1 + qbl = qbin_labels + qblravel = qbin_labels.ravel() + xcount = np.bincount(qblravel) + + # calculate qbinsc as average of q values in shell + qbinsc = mybinmean(qr.ravel(), qblravel, xcount) + + # allow for any range of q data + qdata = qbinsc[np.where((qbinsc >= q.min()) & (qbinsc <= q.max()))] + + ### PART 4 + ### In the original function, the intensity values are interpolated over the + ### qbined values, the original q and I varibles aren't used. + ### for each intensity value you read, interpolate it over qdata. + + + ### NEW + PA_Idatas = [] + for PA_q, PA_I in zip(PA_qs, PA_Is): + PA_Idatas.append(np.interp(qdata, PA_q, PA_I )) + + + ### PART 5 + ### For some reason, the qdata we calculate might be bigger then the data we supplied. + ### in this case, we want to extend the intensity function into this q range. + + if extrapolate: + qextend = qbinsc[qbinsc >= qdata.max()] + Iextend = qextend ** -4 + Iextend = Iextend / Iextend[0] * Idata[-1] + qdata = np.concatenate((qdata, qextend[1:])) + Idata = np.concatenate((Idata, Iextend[1:])) + + # create list of qbin indices just in region of data for later F scaling + qbin_args = np.in1d(qbinsc, qdata, assume_unique=True) + qba = qbin_args # just for brevity when using it later + + sigqdata = np.interp(qdata, q, sigq) + + + ### PART 5 + ### I don't know what this scale factor is doing but I will comment it out + + ### OLD + ### scale_factor = ne ** 2 / Idata[0] + + #### PART 5 + #### Work out how many step are in the recon + + if steps == 'None' or steps is None or int(steps) < 1: + stepsarr = np.concatenate((enforce_connectivity_steps, [shrinkwrap_minstep])) + maxec = np.max(stepsarr) + steps = int(shrinkwrap_iter * ( + np.log(shrinkwrap_sigma_end / shrinkwrap_sigma_start) / np.log(shrinkwrap_sigma_decay)) + maxec) + # add enough steps for convergence after shrinkwrap is finished + # something like 7000 seems reasonable, likely will finish before that on its own + # then just make a round number when using defaults + steps += 7621 + else: + steps = int(steps) + + ### PART 6 + ### We need to copy Imean for each d param + ### raw variables are None by default, so just assign the variables without None check in original code + + + ### NEW + PA_Imeans = [] + for _ in PA_Is: + PA_Imeans.append(np.zeros(len(qbins))) + + qraw = q + PA_Iraws = PA_Is + PA_sigqraws = PA_sigqs + + + ### PART 7 + ### chi is calculated for each sas profile, + ### rg and support is calculated for each real model (only one of those) + + + ### NEW + PA_chi = np.zeros( (len(PA_Is), steps + 1)) + + + + rg = np.zeros((steps + 1), dtype=np.complex128) + supportV = np.zeros((steps + 1)) + if support_start is not None: + support = np.copy(support_start) + else: + support = np.ones(x.shape, dtype=bool) + + ### PART 7 + ### generate random seed + if seed is None: + # Have to reset the random seed to get a random in different from other processes + prng = np.random.RandomState() + seed = prng.randint(2 ** 31 - 1) + else: + seed = int(seed) + + prng = np.random.RandomState(seed) + + + ### PART 8 + ### load in (or generate) initial density + + + ### NEW ####TODO + if rho_start is not None: + print('Loading a new rho start!!') + rho = rho_start + if add_noise is not None: + noise_factor = rho.max() * add_noise + noise = prng.random_sample(size=x.shape) * noise_factor + rho += noise + else: + rho = prng.random_sample(size=x.shape) + newrho = np.zeros_like(rho) + + + + + + ### PART 9 + ### Calculate a bunch of stuff that I don't know + + sigma = shrinkwrap_sigma_start + + # calculate the starting shrinkwrap volume as the volume of a sphere + # of radius Dmax, i.e. much larger than the particle size + swbyvol = True + swV = V / 2.0 + Vsphere_Dover2 = 4. / 3 * np.pi * (D / 2.) ** 3 + swVend = Vsphere_Dover2 + swV_decay = 0.9 + first_time_swdensity = True + threshold = shrinkwrap_threshold_fraction + # erode will make take five outer edge pixels of the support, like a shell, + # and will make sure no negative density is in that region + # this is to counter an artifact that occurs when allowing for negative density + # as the negative density often appears immediately next to positive density + # at the edges of the object. This ensures (i.e. biases) only real negative density + # in the interior of the object (i.e. more than five pixels from the support boundary) + # thus we only need this on when in membrane mode, i.e. when positivity=False + if shrinkwrap_old_method or positivity: + erode = False + else: + erode = True + erosion_width = int(20 / dx) # this is in pixels + if erosion_width == 0: + # make minimum of one pixel + erosion_width = 1 + + # for icosahedral symmetry, just set ncs to 1 to trigger ncs averaging + if ncs_type == "icosahedral": + ncs = 1 + + ### PART 10 + ### bunch of logging stuff was here that I deleted + + my_logger.info('blah blah') + + + ### PART 11 + ### removing PYFFTW DENSS_GPU stuff, by default it is false + + # if PYFFTW: + # ... + # if DENSS_GPU: + # ... + + + + + ### PART 13 + ### The actual iteration loop + + for j in range(steps): + if abort_event is not None: + if abort_event.is_set(): + my_logger.info('Aborted!') + return [] + + ### PART 14 + ### for each sas curve, do the modulus constraint + + + ### NEW + ### make an array to hold the reconstructed densities for each d + PA_rhods = np.zeros( (len(PA_dparams), rho.shape[0], rho.shape[1], rho.shape[2])) + + for PA_i_dparam, PA_dparam in enumerate(PA_dparams): + + + ### for this d param, get rho to the power of d (handling the negatives) + PA_neg_loc = np.where(rho<0) + PA_rhod = np.abs(rho)**PA_dparam + PA_rhod[PA_neq_loc] *= -1 + + + F = myrfftn(PA_rhod, DENSS_GPU=DENSS_GPU) + + # sometimes, when using denss_refine.py with non-random starting rho, + # the resulting Fs result in zeros in some locations and the algorithm to break + # here just make those values to be 1e-16 to be non-zero + F[np.abs(F) == 0] = 1e-16 + + # APPLY RECIPROCAL SPACE RESTRAINTS + # calculate spherical average of intensities from 3D Fs + # I3D = myabs(F, DENSS_GPU=DENSS_GPU)**2 + I3D = abs2(F) + Imean = mybinmean(I3D.ravel(), qblravel, xcount=xcount, DENSS_GPU=DENSS_GPU) + + # scale Fs to match data + factors = mysqrt(Idata / Imean, DENSS_GPU=DENSS_GPU) + # do not scale bins outside of desired range + # so set those factors to 1.0 + factors[~qba] = 1.0 + F *= factors[qbin_labels] + + + ### There was a try: except: statement here. I have just left the except part. + PA_chi[PA_i_dparam][j] = mysum(((Imean[qba] - PA_Idatas[PA_i_dparam][qba]) / PA_sigqdata[PA_i_dparam][qba]) ** 2, DENSS_GPU=DENSS_GPU) / PA_Idatas[PA_i_dparam][qba].size + + + # APPLY REAL SPACE RESTRAINTS + PA_rhods[PA_i_dparam] = myirfftn(F, DENSS_GPU=DENSS_GPU).real + + + ### invert the powering we did at the start of the loop + PA_neg_loc = np.where(PA_rhods[PA_i_dparam]<0) + PA_rhods[PA_i_dparam] = np.abs(PA_rhods[PA_i_dparam])**(1/PA_dparam) + PA_rhods[PA_i_dparam][PA_neg_loc] *= -1 + + + + ### average back the unscaled rhos back together + rhoprime = np.mean(PA_rhods, axis=0) + + + + ### PART 15 + ### Now that we have remade a version of rhoprime, + ### everything down the line should hold + + ### you are here!! + + + + # use Guinier's law to approximate quickly + rg_j = calc_rg_by_guinier_first_2_points(qbinsc, Imean, DENSS_GPU=DENSS_GPU) + + rg[j] = rg_j + + # Error Reduction + newrho *= 0 + newrho[support] = rhoprime[support] + + if not DENSS_GPU and j % write_freq == 0: + if write_xplor_format: + write_xplor(rhoprime / dV, side, fprefix + "_current.xplor") + write_mrc(rhoprime / dV, side, fprefix + "_current.mrc") + + # enforce positivity by making all negative density points zero. + if positivity: # and j in positivity_steps: + newrho[newrho < 0] = 0.0 + + # apply non-crystallographic symmetry averaging + if ncs != 0 and j in ncs_steps: + if DENSS_GPU: + newrho = cp.asnumpy(newrho) + if ncs_type == "icosahedral": + newrho, shift = center_rho_roll(newrho, recenter_mode="com", maxfirst=True, return_shift=True) + support = np.roll(np.roll(np.roll(support, shift[0], axis=0), shift[1], axis=1), shift[2], axis=2) + else: + newrho = align2xyz(newrho) + if DENSS_GPU: + newrho = cp.array(newrho) + + if ncs != 0 and j in [stepi + 1 for stepi in ncs_steps]: + if DENSS_GPU: + newrho = cp.asnumpy(newrho) + if ncs_type == "icosahedral": + rotations = get_icosahedral_matrices() + newrho_total = np.copy(newrho) + for R in rotations[1:]: # Skip identity (first matrix) + sym = transform_rho(newrho, R=R, mode='constant') + newrho_total += sym + newrho = newrho_total / len(rotations) + else: + if ncs_axis == 1: + axes = (1, 2) # longest + if ncs_axis == 2: + axes = (0, 2) # middle + if ncs_axis == 3: + axes = (0, 1) # shortest + degrees = 360. / ncs + newrho_total = np.copy(newrho) + if ncs_type == "dihedral": + # first, rotate original about perpendicular axis by 180 + # then apply n-fold cyclical rotation + d2fold = ndimage.rotate(newrho, 180, axes=axes, reshape=False) + newrhosym = np.copy(newrho) + d2fold + newrhosym /= 2.0 + newrho_total = np.copy(newrhosym) + else: + newrhosym = np.copy(newrho) + for nrot in range(1, ncs): + sym = ndimage.rotate(newrhosym, degrees * nrot, axes=axes, reshape=False) + newrho_total += np.copy(sym) + newrho = newrho_total / ncs + + # run shrinkwrap after ncs averaging to get new support + if shrinkwrap_old_method: + # run the old method + absv = True + newrho, support = shrinkwrap_by_density_value(newrho, absv=absv, sigma=sigma, threshold=threshold, + recenter=recenter, recenter_mode=recenter_mode) + else: + swN = int(swV / dV) + # end this stage of shrinkwrap when the volume is less than a sphere of radius D/2 + if swbyvol and swV > swVend: + newrho, support, threshold = shrinkwrap_by_volume(newrho, absv=True, sigma=sigma, N=swN, + recenter=recenter, recenter_mode=recenter_mode) + swV *= swV_decay + else: + threshold = shrinkwrap_threshold_fraction + if first_time_swdensity: + if not quiet: + if gui: + my_logger.info("switched to shrinkwrap by density threshold = %.4f" % threshold) + else: + print("\nswitched to shrinkwrap by density threshold = %.4f" % threshold) + first_time_swdensity = False + newrho, support = shrinkwrap_by_density_value(newrho, absv=True, sigma=sigma, threshold=threshold, + recenter=recenter, recenter_mode=recenter_mode) + + if DENSS_GPU: + newrho = cp.array(newrho) + + if recenter and j in recenter_steps: + if DENSS_GPU: + newrho = cp.asnumpy(newrho) + support = cp.asnumpy(support) + + # cannot run center_rho_roll() function since we want to also recenter the support + # perhaps we should fix this in the future to clean it up + if recenter_mode == "max": + rhocom = np.unravel_index(newrho.argmax(), newrho.shape) + else: + rhocom = np.array(ndimage.measurements.center_of_mass(np.abs(newrho))) + gridcenter = grid_center(newrho) # (np.array(newrho.shape)-1.)/2. + shift = gridcenter - rhocom + shift = np.rint(shift).astype(int) + newrho = np.roll(np.roll(np.roll(newrho, shift[0], axis=0), shift[1], axis=1), shift[2], axis=2) + support = np.roll(np.roll(np.roll(support, shift[0], axis=0), shift[1], axis=1), shift[2], axis=2) + + if DENSS_GPU: + newrho = cp.array(newrho) + support = cp.array(support) + + # update support using shrinkwrap method + if shrinkwrap and j >= shrinkwrap_minstep and j % shrinkwrap_iter == 1: + if DENSS_GPU: + newrho = cp.asnumpy(newrho) + support = cp.asnumpy(support) + + if shrinkwrap_old_method: + absv = True + newrho, support = shrinkwrap_by_density_value(newrho, absv=absv, sigma=sigma, threshold=threshold, + recenter=recenter, recenter_mode=recenter_mode) + else: + swN = int(swV / dV) + # end this stage of shrinkwrap when the volume is less than a sphere of radius D/2 + if swbyvol and swV > swVend: + newrho, support, threshold = shrinkwrap_by_volume(newrho, absv=True, sigma=sigma, N=swN, + recenter=recenter, recenter_mode=recenter_mode) + swV *= swV_decay + else: + threshold = shrinkwrap_threshold_fraction + if first_time_swdensity: + if not quiet: + if gui: + my_logger.info("switched to shrinkwrap by density threshold = %.4f" % threshold) + else: + print("\nswitched to shrinkwrap by density threshold = %.4f" % threshold) + first_time_swdensity = False + newrho, support = shrinkwrap_by_density_value(newrho, absv=True, sigma=sigma, threshold=threshold, + recenter=recenter, recenter_mode=recenter_mode) + + if sigma > shrinkwrap_sigma_end: + sigma = shrinkwrap_sigma_decay * sigma + + if DENSS_GPU: + newrho = cp.array(newrho) + support = cp.array(support) + + # run erode when shrinkwrap is run + if erode and shrinkwrap and j > shrinkwrap_minstep and j % shrinkwrap_iter == 1: + if DENSS_GPU: + newrho = cp.asnumpy(newrho) + support = cp.asnumpy(support) + + # eroded is the region of the support _not_ including the boundary pixels + # so it is the entire interior. erode_region is _just_ the boundary pixels + eroded = ndimage.binary_erosion(support, np.ones((erosion_width, erosion_width, erosion_width))) + # get just boundary voxels, i.e. where support=True and eroded=False + erode_region = np.logical_and(support, ~eroded) + # set all negative density in boundary pixels to zero. + newrho[(newrho < 0) & (erode_region)] = 0 + + if DENSS_GPU: + newrho = cp.array(newrho) + support = cp.array(support) + + if enforce_connectivity and j in enforce_connectivity_steps: + if DENSS_GPU: + newrho = cp.asnumpy(newrho) + + # first run shrinkwrap to define the features + if shrinkwrap_old_method: + # run the old method + absv = True + newrho, support = shrinkwrap_by_density_value(newrho, absv=absv, sigma=sigma, threshold=threshold, + recenter=recenter, recenter_mode=recenter_mode) + else: + # end this stage of shrinkwrap when the volume is less than a sphere of radius D/2 + swN = int(swV / dV) + if swbyvol and swV > swVend: + newrho, support, threshold = shrinkwrap_by_volume(newrho, absv=True, sigma=sigma, N=swN, + recenter=recenter, recenter_mode=recenter_mode) + else: + newrho, support = shrinkwrap_by_density_value(newrho, absv=True, sigma=sigma, threshold=threshold, + recenter=recenter, recenter_mode=recenter_mode) + + # label the support into separate segments based on a 3x3x3 grid + struct = ndimage.generate_binary_structure(3, 3) + labeled_support, num_features = ndimage.label(support, structure=struct) + sums = np.zeros((num_features)) + num_features_to_keep = np.min([num_features, enforce_connectivity_max_features]) + if not quiet: + if not gui: + print("EC: %d -> %d " % (num_features, num_features_to_keep)) + + # find the feature with the greatest number of electrons + for feature in range(num_features + 1): + sums[feature - 1] = np.sum(newrho[labeled_support == feature]) + big_feature = np.argmax(sums) + 1 + # order the indices of the features in descending order based on their sum/total density + sums_order = np.argsort(sums)[::-1] + sums_sorted = sums[sums_order] + # now grab the actual feature numbers (rather than the indices) + features_sorted = sums_order + 1 + + # remove features from the support that are not the primary feature + # support[labeled_support != big_feature] = False + # reset support to zeros everywhere + # then progressively add in regions of support up to num_features_to_keep + support *= False + for feature in range(num_features_to_keep): + support[labeled_support == features_sorted[feature]] = True + + # clean up density based on new support + newrho[~support] = 0 + + if DENSS_GPU: + newrho = cp.array(newrho) + support = cp.array(support) + + supportV[j] = mysum(support, DENSS_GPU=DENSS_GPU) * dV + + # convert possibly imaginary rg to string for printing + rg_str = (f"{rg[j].real:3.2f}" if abs(rg[j].imag) < 1e-10 else + f"{rg[j].imag:3.2f}j" if abs(rg[j].real) < 1e-10 else + f"{rg[j].real:3.2f}{rg[j].imag:+3.2f}j") + + if not quiet: + if gui: + my_logger.info("% 5i % 4.2e %s % 5i ", j, chi[j], rg_str, supportV[j]) + else: + sys.stdout.write("\r% 5i % 4.2e %s % 5i " % (j, chi[j], rg_str, supportV[j])) + sys.stdout.flush() + + # occasionally report progress in logger + if j % 500 == 0 and not gui: + my_logger.info('Step % 5i: % 4.2e %s % 5i ', j, chi[j], rg_str, supportV[j]) + + if j > 101 + shrinkwrap_minstep: + if DENSS_GPU: + lesser = mystd(chi[j - 100:j], DENSS_GPU=DENSS_GPU).get() < chi_end_fraction * mymean(chi[j - 100:j], + DENSS_GPU=DENSS_GPU).get() + else: + lesser = mystd(chi[j - 100:j], DENSS_GPU=DENSS_GPU) < chi_end_fraction * mymean(chi[j - 100:j], + DENSS_GPU=DENSS_GPU) + if lesser: + break + + rho = newrho + + # convert back to numpy outside of for loop + if DENSS_GPU: + rho = cp.asnumpy(rho) + qbin_labels = cp.asnumpy(qbin_labels) + qbin_args = cp.asnumpy(qbin_args) + sigqdata = cp.asnumpy(sigqdata) + Imean = cp.asnumpy(Imean) + chi = cp.asnumpy(chi) + qbins = cp.asnumpy(qbins) + qbinsc = cp.asnumpy(qbinsc) + Idata = cp.asnumpy(Idata) + support = cp.asnumpy(support) + supportV = cp.asnumpy(supportV) + Idata = cp.asnumpy(Idata) + newrho = cp.asnumpy(newrho) + qblravel = cp.asnumpy(qblravel) + xcount = cp.asnumpy(xcount) + + # F = myfftn(rho) + F = myrfftn(rho) + # calculate spherical average intensity from 3D Fs + I3D = abs2(F) + # I3D = myabs(F)**2 + Imean = mybinmean(I3D.ravel(), qblravel, xcount=xcount) + + # scale Fs to match data + factors = np.sqrt(Idata / Imean) + factors[~qba] = 1.0 + F *= factors[qbin_labels] + # rho = myifftn(F) + rho = myirfftn(F) + rho = rho.real + + # negative images yield the same scattering, so flip the image + # to have more positive than negative values if necessary + # to make sure averaging is done properly + # whether theres actually more positive than negative values + # is ambiguous, but this ensures all maps are at least likely + # the same designation when averaging + if np.sum(np.abs(rho[rho < 0])) > np.sum(rho[rho > 0]): + rho *= -1 + + # scale total number of electrons + if ne is not None: + rho *= ne / np.sum(rho) + + rg[j + 1] = calc_rg_by_guinier_first_2_points(qbinsc, Imean) + supportV[j + 1] = supportV[j] + + # change rho to be the electron density in e-/angstroms^3, rather than number of electrons, + # which is what the FFT assumes + rho /= dV + my_logger.info('FINISHED DENSITY REFINEMENT') + + if cutout: + # here were going to cut rho out of the large real space box + # to the voxels that contain the particle + # use D to estimate particle size + # assume the particle is in the center of the box + # calculate how many voxels needed to contain particle of size D + # use bigger than D to make sure we don't crop actual particle in case its larger than expected + # lets clip it to a maximum of 2*D to be safe + nD = int(2 * D / dx) + 1 + # make sure final box will still have even samples + if nD % 2 == 1: + nD += 1 + + nmin = nbox // 2 - nD // 2 + nmax = nbox // 2 + nD // 2 + 2 + # create new rho array containing only the particle + newrho = rho[nmin:nmax, nmin:nmax, nmin:nmax] + rho = newrho + # do the same for the support + newsupport = support[nmin:nmax, nmin:nmax, nmin:nmax] + support = newsupport + # update side to new size of box + side = dx * (nmax - nmin) + + if write_xplor_format: + write_xplor(rho, side, fprefix + ".xplor") + write_xplor(np.ones_like(rho) * support, side, fprefix + "_support.xplor") + + write_mrc(rho, side, fprefix + ".mrc") + write_mrc(np.ones_like(rho) * support, side, fprefix + "_support.mrc") + + # return original unscaled values of Idata (and therefore Imean) for comparison with real data + Idata /= scale_factor + sigqdata /= scale_factor + Imean /= scale_factor + I /= scale_factor + sigq /= scale_factor + + # Write some more output files + Iq_exp = np.vstack((qraw, Iraw, sigqraw)).T + Iq_calc = np.vstack((qbinsc, Imean, Imean * 0.01)).T + idx = np.where(Iraw > 0) + Iq_exp = Iq_exp[idx] + qmax = np.min([Iq_exp[:, 0].max(), Iq_calc[:, 0].max()]) + Iq_exp = Iq_exp[Iq_exp[:, 0] <= qmax] + Iq_calc = Iq_calc[Iq_calc[:, 0] <= qmax] + final_chi2, exp_scale_factor, offset, fit = calc_chi2(Iq_exp, Iq_calc, scale=True, offset=False, interpolation=True, + return_sf=True, return_fit=True) + + final_step = j+1 + + chi[final_step] = final_chi2 + + np.savetxt(fprefix + '_map.fit', fit, delimiter=' ', fmt='%.5e', + header='q(data),I(data),error(data),I(density); chi2=%.3f' % final_chi2) + + # Create formatted strings for each column (enabling printing of complex rg values) + chi_str = [f"{chi[i].real:.5e}" for i in range(final_step)] + rg_str = [f"{rg[i].real:.5e}" if abs(rg[i].imag) < 1e-10 else f"{rg[i].imag:.5e}j" + for i in range(final_step)] + support_str = [f"{supportV[i].real:.5e}" for i in range(final_step)] + + np.savetxt(fprefix + '_stats_by_step.dat', + np.column_stack((chi_str, rg_str, support_str)), + delimiter=" ", fmt="%s", header='Chi2 Rg SupportVolume') + + my_logger.info('Number of steps: %i', j) + my_logger.info('Final Chi2: %.3e', chi[-1]) + my_logger.info('Final Rg: %s', np.round(rg[-1],3)) + my_logger.info('Final Support Volume: %3.3f', supportV[-1]) + my_logger.info('Mean Density (all voxels): %3.5f', np.mean(rho)) + my_logger.info('Std. Dev. of Density (all voxels): %3.5f', np.std(rho)) + my_logger.info('RMSD of Density (all voxels): %3.5f', np.sqrt(np.mean(np.square(rho)))) + + + + return qdata, Idata, sigqdata, qbinsc, Imean, chi, rg, supportV, rho, side, fit, final_chi2 + + + diff --git a/denss/recon_old.py b/denss/recon_old.py new file mode 100644 index 0000000..7509b33 --- /dev/null +++ b/denss/recon_old.py @@ -0,0 +1,732 @@ +import sys +import re +import os +import json +import struct +import logging +from functools import partial +import multiprocessing +import datetime, time +from time import sleep +import warnings +import pickle + +import numpy as np +from scipy import ndimage, interpolate, spatial, special, optimize, signal, stats, fft +from functools import reduce + +# load some dictionaries +from denss.resources import resources + + + +from .core import mybinmean, myrfftn, abs2, mysqrt, mysum, myirfftn, write_mrc +from .core import shrinkwrap_by_density_value, PYFFTW, shrinkwrap_by_volume, mystd, mymean, grid_center +from .core import calc_rg_by_guinier_first_2_points, calc_chi2 + + +def test_recon_old(): + print('Hello woof') + + +#bana: old function +def reconstruct_abinitio_from_scattering_profile(q, I, sigq, dmax, qraw=None, Iraw=None, sigqraw=None, + ne=None, voxel=5., oversampling=3., recenter=True, recenter_steps=None, + recenter_mode="com", positivity=True, positivity_steps=None, extrapolate=True, output="map", + steps=None, seed=None, rho_start=None, support_start=None, add_noise=None, + shrinkwrap=True, shrinkwrap_old_method=False, shrinkwrap_sigma_start=3, + shrinkwrap_sigma_end=1.5, shrinkwrap_sigma_decay=0.99, shrinkwrap_threshold_fraction=0.2, + shrinkwrap_iter=20, shrinkwrap_minstep=100, chi_end_fraction=0.01, + write_xplor_format=False, write_freq=100, enforce_connectivity=True, + enforce_connectivity_steps=[500], enforce_connectivity_max_features=1, cutout=True, quiet=False, ncs=0, + ncs_steps=[500], ncs_axis=1, ncs_type="cyclical", abort_event=None, my_logger=logging.getLogger(), + path='.', gui=False, DENSS_GPU=False, PA_outdir=None): + """Calculate electron density from scattering data.""" + print('') + print('!!') + print('Using original DENSS recon') + print('DENSS_GPU', DENSS_GPU) + print('!!') + if abort_event is not None: + if abort_event.is_set(): + my_logger.info('Aborted!') + return [] + + if DENSS_GPU and CUPY_LOADED: + DENSS_GPU = True + elif DENSS_GPU: + if gui: + my_logger.info("GPU option set, but CuPy failed to load") + else: + print("GPU option set, but CuPy failed to load") + DENSS_GPU = False + + fprefix = os.path.join(path, output) + + D = dmax + + # Initialize variables + + side = oversampling * D + halfside = side / 2 + + n = int(side / voxel) + # want n to be even for speed/memory optimization with the FFT, ideally a power of 2, but wont enforce that + if n % 2 == 1: + n += 1 + # store n for later use if needed + nbox = n + + dx = side / n + dV = dx ** 3 + V = side ** 3 + x_ = np.linspace(-(n // 2) * dx, (n // 2 - 1) * dx, n) + x, y, z = np.meshgrid(x_, x_, x_, indexing='ij') + r = np.sqrt(x ** 2 + y ** 2 + z ** 2) + + df = 1 / side + qx_ = np.fft.fftfreq(x_.size) * n * df * 2 * np.pi + qz_ = np.fft.rfftfreq(x_.size) * n * df * 2 * np.pi + # qx, qy, qz = np.meshgrid(qx_,qx_,qx_,indexing='ij') + qx, qy, qz = np.meshgrid(qx_, qx_, qz_, indexing='ij') + qr = np.sqrt(qx ** 2 + qy ** 2 + qz ** 2) + qmax = np.max(qr) + qstep = np.min(qr[qr > 0]) - 1e-8 # subtract a tiny bit to deal with floating point error + nbins = int(qmax / qstep) + qbins = np.linspace(0, nbins * qstep, nbins + 1) + + # create an array labeling each voxel according to which qbin it belongs + qbin_labels = np.searchsorted(qbins, qr, "right") + qbin_labels -= 1 + qbl = qbin_labels + qblravel = qbin_labels.ravel() + xcount = np.bincount(qblravel) + + # calculate qbinsc as average of q values in shell + qbinsc = mybinmean(qr.ravel(), qblravel, xcount) + + # allow for any range of q data + qdata = qbinsc[np.where((qbinsc >= q.min()) & (qbinsc <= q.max()))] + Idata = np.interp(qdata, q, I) + + if extrapolate: + qextend = qbinsc[qbinsc >= qdata.max()] + Iextend = qextend ** -4 + Iextend = Iextend / Iextend[0] * Idata[-1] + qdata = np.concatenate((qdata, qextend[1:])) + Idata = np.concatenate((Idata, Iextend[1:])) + + # create list of qbin indices just in region of data for later F scaling + qbin_args = np.in1d(qbinsc, qdata, assume_unique=True) + qba = qbin_args # just for brevity when using it later + # set qba bins outside of scaling region to false. + # start with bins in corners + # qba[qbinsc>qx_.max()] = False + + sigqdata = np.interp(qdata, q, sigq) + + scale_factor = ne ** 2 / Idata[0] + Idata *= scale_factor + sigqdata *= scale_factor + I *= scale_factor + sigq *= scale_factor + + if steps == 'None' or steps is None or int(steps) < 1: + stepsarr = np.concatenate((enforce_connectivity_steps, [shrinkwrap_minstep])) + maxec = np.max(stepsarr) + steps = int(shrinkwrap_iter * ( + np.log(shrinkwrap_sigma_end / shrinkwrap_sigma_start) / np.log(shrinkwrap_sigma_decay)) + maxec) + # add enough steps for convergence after shrinkwrap is finished + # something like 7000 seems reasonable, likely will finish before that on its own + # then just make a round number when using defaults + steps += 7621 + else: + steps = int(steps) + + Imean = np.zeros((len(qbins))) + + if qraw is None: + qraw = q + if Iraw is None: + Iraw = I + if sigqraw is None: + sigqraw = sigq + Iq_exp = np.vstack((qraw, Iraw, sigqraw)).T + Iq_calc = np.vstack((qbinsc, Imean, Imean)).T + idx = np.where(Iraw > 0) + Iq_exp = Iq_exp[idx] + qmax = np.min([Iq_exp[:, 0].max(), Iq_calc[:, 0].max()]) + Iq_exp = Iq_exp[Iq_exp[:, 0] <= qmax] + Iq_calc = Iq_calc[Iq_calc[:, 0] <= qmax] + + chi = np.zeros((steps + 1)) + rg = np.zeros((steps + 1), dtype=np.complex128) + supportV = np.zeros((steps + 1)) + if support_start is not None: + support = np.copy(support_start) + else: + support = np.ones(x.shape, dtype=bool) + + if seed is None: + # Have to reset the random seed to get a random in different from other processes + prng = np.random.RandomState() + seed = prng.randint(2 ** 31 - 1) + else: + seed = int(seed) + + prng = np.random.RandomState(seed) + + if rho_start is not None: + rho = rho_start # *dV + if add_noise is not None: + noise_factor = rho.max() * add_noise + noise = prng.random_sample(size=x.shape) * noise_factor + rho += noise + else: + rho = prng.random_sample(size=x.shape) # - 0.5 + newrho = np.zeros_like(rho) + + sigma = shrinkwrap_sigma_start + + # calculate the starting shrinkwrap volume as the volume of a sphere + # of radius Dmax, i.e. much larger than the particle size + swbyvol = True + swV = V / 2.0 + Vsphere_Dover2 = 4. / 3 * np.pi * (D / 2.) ** 3 + swVend = Vsphere_Dover2 + swV_decay = 0.9 + first_time_swdensity = True + threshold = shrinkwrap_threshold_fraction + # erode will make take five outer edge pixels of the support, like a shell, + # and will make sure no negative density is in that region + # this is to counter an artifact that occurs when allowing for negative density + # as the negative density often appears immediately next to positive density + # at the edges of the object. This ensures (i.e. biases) only real negative density + # in the interior of the object (i.e. more than five pixels from the support boundary) + # thus we only need this on when in membrane mode, i.e. when positivity=False + if shrinkwrap_old_method or positivity: + erode = False + else: + erode = True + erosion_width = int(20 / dx) # this is in pixels + if erosion_width == 0: + # make minimum of one pixel + erosion_width = 1 + + # for icosahedral symmetry, just set ncs to 1 to trigger ncs averaging + if ncs_type == "icosahedral": + ncs = 1 + + my_logger.info('q range of input data: %3.3f < q < %3.3f', q.min(), q.max()) + my_logger.info('Maximum dimension: %3.3f', D) + my_logger.info('Sampling ratio: %3.3f', oversampling) + my_logger.info('Requested real space voxel size: %3.3f', voxel) + my_logger.info('Number of electrons: %3.3f', ne) + my_logger.info('Recenter: %s', recenter) + my_logger.info('Recenter Steps: %s', recenter_steps) + my_logger.info('Recenter Mode: %s', recenter_mode) + my_logger.info('NCS: %s', ncs) + my_logger.info('NCS Type: %s', ncs_type) + my_logger.info('NCS Steps: %s', ncs_steps) + my_logger.info('NCS Axis: %s', ncs_axis) + my_logger.info('Positivity: %s', positivity) + # my_logger.info('Positivity Steps: %s', positivity_steps) + my_logger.info('Extrapolate high q: %s', extrapolate) + my_logger.info('Shrinkwrap: %s', shrinkwrap) + my_logger.info('Shrinkwrap Old Method: %s', shrinkwrap_old_method) + my_logger.info('Shrinkwrap sigma start (angstroms): %s', shrinkwrap_sigma_start * dx) + my_logger.info('Shrinkwrap sigma end (angstroms): %s', shrinkwrap_sigma_end * dx) + my_logger.info('Shrinkwrap sigma start (voxels): %s', shrinkwrap_sigma_start) + my_logger.info('Shrinkwrap sigma end (voxels): %s', shrinkwrap_sigma_end) + my_logger.info('Shrinkwrap sigma decay: %s', shrinkwrap_sigma_decay) + my_logger.info('Shrinkwrap threshold fraction: %s', shrinkwrap_threshold_fraction) + my_logger.info('Shrinkwrap iterations: %s', shrinkwrap_iter) + my_logger.info('Shrinkwrap starting step: %s', shrinkwrap_minstep) + my_logger.info('Enforce connectivity: %s', enforce_connectivity) + my_logger.info('Enforce connectivity steps: %s', enforce_connectivity_steps) + my_logger.info('Chi2 end fraction: %3.3e', chi_end_fraction) + my_logger.info('Maximum number of steps: %i', steps) + my_logger.info('Grid size (voxels): %i x %i x %i', n, n, n) + my_logger.info('Real space box width (angstroms): %3.3f', side) + my_logger.info('Real space box range (angstroms): %3.3f < x < %3.3f', x_.min(), x_.max()) + my_logger.info('Real space box volume (angstroms^3): %3.3f', V) + my_logger.info('Real space voxel size (angstroms): %3.3f', dx) + my_logger.info('Real space voxel volume (angstroms^3): %3.3f', dV) + my_logger.info('Reciprocal space box width (angstroms^(-1)): %3.3f', qx_.max() - qx_.min()) + my_logger.info('Reciprocal space box range (angstroms^(-1)): %3.3f < qx < %3.3f', qx_.min(), qx_.max()) + my_logger.info('Maximum q vector (diagonal) (angstroms^(-1)): %3.3f', qr.max()) + my_logger.info('Number of q shells: %i', nbins) + my_logger.info('Width of q shells (angstroms^(-1)): %3.3f', qstep) + my_logger.info('Random seed: %i', seed) + + if not quiet: + if gui: + my_logger.info("\n Step Chi2 Rg Support Volume") + my_logger.info(" ----- --------- ------- --------------") + else: + print("\n Step Chi2 Rg Support Volume") + print(" ----- --------- ------- --------------") + + if PYFFTW: + a = np.copy(rho) + rho = pyfftw.empty_aligned(a.shape, dtype='complex64') + rho[:] = a + rhoprime = pyfftw.empty_aligned(a.shape, dtype='complex64') + newrho = pyfftw.empty_aligned(a.shape, dtype='complex64') + try: + # Try to plan our transforms with the wisdom we have already + fftw_object = pyfftw.FFTW(rho, + rhoprime, + direction="FFTW_FORWARD", + flags=("FFTW_WISDOM_ONLY",)) + except RuntimeError as e: + # If we don't have enough wisdom, print a warning and proceed. + print(e) + start = time.perf_counter() + fftw_object = pyfftw.FFTW(rho, + rhoprime, + direction="FFTW_FORWARD", + flags=("FFTW_MEASURE",)) + print("Generating wisdom took {}s".format(time.perf_counter() - start)) + with open("fft.wisdom", "wb") as the_file: + wisdom = pyfftw.export_wisdom() + pickle.dump(wisdom, the_file) + + if DENSS_GPU: + rho = cp.array(rho) + qbin_labels = cp.array(qbin_labels) + qbins = cp.array(qbins) + qbinsc = cp.array(qbinsc) + Idata = cp.array(Idata) + qbin_args = cp.array(qbin_args) + sigqdata = cp.array(sigqdata) + support = cp.array(support) + chi = cp.array(chi) + supportV = cp.array(supportV) + Imean = cp.array(Imean) + newrho = cp.array(newrho) + qblravel = cp.array(qblravel) + xcount = cp.array(xcount) + + for j in range(steps): + if abort_event is not None: + if abort_event.is_set(): + my_logger.info('Aborted!') + return [] + + # F = myfftn(rho, DENSS_GPU=DENSS_GPU) + F = myrfftn(rho, DENSS_GPU=DENSS_GPU) + + # sometimes, when using denss_refine.py with non-random starting rho, + # the resulting Fs result in zeros in some locations and the algorithm to break + # here just make those values to be 1e-16 to be non-zero + F[np.abs(F) == 0] = 1e-16 + + # APPLY RECIPROCAL SPACE RESTRAINTS + # calculate spherical average of intensities from 3D Fs + # I3D = myabs(F, DENSS_GPU=DENSS_GPU)**2 + I3D = abs2(F) + Imean = mybinmean(I3D.ravel(), qblravel, xcount=xcount, DENSS_GPU=DENSS_GPU) + + # scale Fs to match data + factors = mysqrt(Idata / Imean, DENSS_GPU=DENSS_GPU) + # do not scale bins outside of desired range + # so set those factors to 1.0 + factors[~qba] = 1.0 + F *= factors[qbin_labels] + + try: + Iq_calc[:, 1] = Imean[qbinsc <= qmax] + chi[j] = calc_chi2(Iq_exp, Iq_calc, scale=True, offset=False, interpolation=True, return_sf=False, + return_fit=False) + except: + # in case the interpolation fails for whatever reason, like the GPU status or something + chi[j] = mysum(((Imean[qba] - Idata[qba]) / sigqdata[qba]) ** 2, DENSS_GPU=DENSS_GPU) / Idata[qba].size + + # APPLY REAL SPACE RESTRAINTS + # rhoprime = myifftn(F, DENSS_GPU=DENSS_GPU).real + rhoprime = myirfftn(F, DENSS_GPU=DENSS_GPU).real + + # use Guinier's law to approximate quickly + rg_j = calc_rg_by_guinier_first_2_points(qbinsc, Imean, DENSS_GPU=DENSS_GPU) + rg[j] = rg_j + + # Error Reduction + newrho *= 0 + newrho[support] = rhoprime[support] + + if not DENSS_GPU and j % write_freq == 0: + if write_xplor_format: + write_xplor(rhoprime / dV, side, fprefix + "_current.xplor") + write_mrc(rhoprime / dV, side, fprefix + "_current.mrc") + + # enforce positivity by making all negative density points zero. + if positivity: # and j in positivity_steps: + newrho[newrho < 0] = 0.0 + + # apply non-crystallographic symmetry averaging + if ncs != 0 and j in ncs_steps: + if DENSS_GPU: + newrho = cp.asnumpy(newrho) + if ncs_type == "icosahedral": + newrho, shift = center_rho_roll(newrho, recenter_mode="com", maxfirst=True, return_shift=True) + support = np.roll(np.roll(np.roll(support, shift[0], axis=0), shift[1], axis=1), shift[2], axis=2) + else: + newrho = align2xyz(newrho) + if DENSS_GPU: + newrho = cp.array(newrho) + + if ncs != 0 and j in [stepi + 1 for stepi in ncs_steps]: + if DENSS_GPU: + newrho = cp.asnumpy(newrho) + if ncs_type == "icosahedral": + rotations = get_icosahedral_matrices() + newrho_total = np.copy(newrho) + for R in rotations[1:]: # Skip identity (first matrix) + sym = transform_rho(newrho, R=R, mode='constant') + newrho_total += sym + newrho = newrho_total / len(rotations) + else: + if ncs_axis == 1: + axes = (1, 2) # longest + if ncs_axis == 2: + axes = (0, 2) # middle + if ncs_axis == 3: + axes = (0, 1) # shortest + degrees = 360. / ncs + newrho_total = np.copy(newrho) + if ncs_type == "dihedral": + # first, rotate original about perpendicular axis by 180 + # then apply n-fold cyclical rotation + d2fold = ndimage.rotate(newrho, 180, axes=axes, reshape=False) + newrhosym = np.copy(newrho) + d2fold + newrhosym /= 2.0 + newrho_total = np.copy(newrhosym) + else: + newrhosym = np.copy(newrho) + for nrot in range(1, ncs): + sym = ndimage.rotate(newrhosym, degrees * nrot, axes=axes, reshape=False) + newrho_total += np.copy(sym) + newrho = newrho_total / ncs + + # run shrinkwrap after ncs averaging to get new support + if shrinkwrap_old_method: + # run the old method + absv = True + newrho, support = shrinkwrap_by_density_value(newrho, absv=absv, sigma=sigma, threshold=threshold, + recenter=recenter, recenter_mode=recenter_mode) + else: + swN = int(swV / dV) + # end this stage of shrinkwrap when the volume is less than a sphere of radius D/2 + if swbyvol and swV > swVend: + newrho, support, threshold = shrinkwrap_by_volume(newrho, absv=True, sigma=sigma, N=swN, + recenter=recenter, recenter_mode=recenter_mode) + swV *= swV_decay + else: + threshold = shrinkwrap_threshold_fraction + if first_time_swdensity: + if not quiet: + if gui: + my_logger.info("switched to shrinkwrap by density threshold = %.4f" % threshold) + else: + print("\nswitched to shrinkwrap by density threshold = %.4f" % threshold) + first_time_swdensity = False + newrho, support = shrinkwrap_by_density_value(newrho, absv=True, sigma=sigma, threshold=threshold, + recenter=recenter, recenter_mode=recenter_mode) + + if DENSS_GPU: + newrho = cp.array(newrho) + + if recenter and j in recenter_steps: + if DENSS_GPU: + newrho = cp.asnumpy(newrho) + support = cp.asnumpy(support) + + # cannot run center_rho_roll() function since we want to also recenter the support + # perhaps we should fix this in the future to clean it up + if recenter_mode == "max": + rhocom = np.unravel_index(newrho.argmax(), newrho.shape) + else: + rhocom = np.array(ndimage.measurements.center_of_mass(np.abs(newrho))) + gridcenter = grid_center(newrho) # (np.array(newrho.shape)-1.)/2. + shift = gridcenter - rhocom + shift = np.rint(shift).astype(int) + newrho = np.roll(np.roll(np.roll(newrho, shift[0], axis=0), shift[1], axis=1), shift[2], axis=2) + support = np.roll(np.roll(np.roll(support, shift[0], axis=0), shift[1], axis=1), shift[2], axis=2) + + if DENSS_GPU: + newrho = cp.array(newrho) + support = cp.array(support) + + # update support using shrinkwrap method + if shrinkwrap and j >= shrinkwrap_minstep and j % shrinkwrap_iter == 1: + if DENSS_GPU: + newrho = cp.asnumpy(newrho) + support = cp.asnumpy(support) + + if shrinkwrap_old_method: + absv = True + newrho, support = shrinkwrap_by_density_value(newrho, absv=absv, sigma=sigma, threshold=threshold, + recenter=recenter, recenter_mode=recenter_mode) + else: + swN = int(swV / dV) + # end this stage of shrinkwrap when the volume is less than a sphere of radius D/2 + if swbyvol and swV > swVend: + newrho, support, threshold = shrinkwrap_by_volume(newrho, absv=True, sigma=sigma, N=swN, + recenter=recenter, recenter_mode=recenter_mode) + swV *= swV_decay + else: + threshold = shrinkwrap_threshold_fraction + if first_time_swdensity: + if not quiet: + if gui: + my_logger.info("switched to shrinkwrap by density threshold = %.4f" % threshold) + else: + print("\nswitched to shrinkwrap by density threshold = %.4f" % threshold) + first_time_swdensity = False + newrho, support = shrinkwrap_by_density_value(newrho, absv=True, sigma=sigma, threshold=threshold, + recenter=recenter, recenter_mode=recenter_mode) + + if sigma > shrinkwrap_sigma_end: + sigma = shrinkwrap_sigma_decay * sigma + + if DENSS_GPU: + newrho = cp.array(newrho) + support = cp.array(support) + + # run erode when shrinkwrap is run + if erode and shrinkwrap and j > shrinkwrap_minstep and j % shrinkwrap_iter == 1: + if DENSS_GPU: + newrho = cp.asnumpy(newrho) + support = cp.asnumpy(support) + + # eroded is the region of the support _not_ including the boundary pixels + # so it is the entire interior. erode_region is _just_ the boundary pixels + eroded = ndimage.binary_erosion(support, np.ones((erosion_width, erosion_width, erosion_width))) + # get just boundary voxels, i.e. where support=True and eroded=False + erode_region = np.logical_and(support, ~eroded) + # set all negative density in boundary pixels to zero. + newrho[(newrho < 0) & (erode_region)] = 0 + + if DENSS_GPU: + newrho = cp.array(newrho) + support = cp.array(support) + + if enforce_connectivity and j in enforce_connectivity_steps: + if DENSS_GPU: + newrho = cp.asnumpy(newrho) + + # first run shrinkwrap to define the features + if shrinkwrap_old_method: + # run the old method + absv = True + newrho, support = shrinkwrap_by_density_value(newrho, absv=absv, sigma=sigma, threshold=threshold, + recenter=recenter, recenter_mode=recenter_mode) + else: + # end this stage of shrinkwrap when the volume is less than a sphere of radius D/2 + swN = int(swV / dV) + if swbyvol and swV > swVend: + newrho, support, threshold = shrinkwrap_by_volume(newrho, absv=True, sigma=sigma, N=swN, + recenter=recenter, recenter_mode=recenter_mode) + else: + newrho, support = shrinkwrap_by_density_value(newrho, absv=True, sigma=sigma, threshold=threshold, + recenter=recenter, recenter_mode=recenter_mode) + + # label the support into separate segments based on a 3x3x3 grid + struct = ndimage.generate_binary_structure(3, 3) + labeled_support, num_features = ndimage.label(support, structure=struct) + sums = np.zeros((num_features)) + num_features_to_keep = np.min([num_features, enforce_connectivity_max_features]) + if not quiet: + if not gui: + print("EC: %d -> %d " % (num_features, num_features_to_keep)) + + # find the feature with the greatest number of electrons + for feature in range(num_features + 1): + sums[feature - 1] = np.sum(newrho[labeled_support == feature]) + big_feature = np.argmax(sums) + 1 + # order the indices of the features in descending order based on their sum/total density + sums_order = np.argsort(sums)[::-1] + sums_sorted = sums[sums_order] + # now grab the actual feature numbers (rather than the indices) + features_sorted = sums_order + 1 + + # remove features from the support that are not the primary feature + # support[labeled_support != big_feature] = False + # reset support to zeros everywhere + # then progressively add in regions of support up to num_features_to_keep + support *= False + for feature in range(num_features_to_keep): + support[labeled_support == features_sorted[feature]] = True + + # clean up density based on new support + newrho[~support] = 0 + + if DENSS_GPU: + newrho = cp.array(newrho) + support = cp.array(support) + + supportV[j] = mysum(support, DENSS_GPU=DENSS_GPU) * dV + + # convert possibly imaginary rg to string for printing + rg_str = (f"{rg[j].real:3.2f}" if abs(rg[j].imag) < 1e-10 else + f"{rg[j].imag:3.2f}j" if abs(rg[j].real) < 1e-10 else + f"{rg[j].real:3.2f}{rg[j].imag:+3.2f}j") + + if not quiet: + if gui: + my_logger.info("% 5i % 4.2e %s % 5i ", j, chi[j], rg_str, supportV[j]) + else: + sys.stdout.write("\r% 5i % 4.2e %s % 5i " % (j, chi[j], rg_str, supportV[j])) + sys.stdout.flush() + + # occasionally report progress in logger + if j % 500 == 0 and not gui: + my_logger.info('Step % 5i: % 4.2e %s % 5i ', j, chi[j], rg_str, supportV[j]) + + if j > 101 + shrinkwrap_minstep: + if DENSS_GPU: + lesser = mystd(chi[j - 100:j], DENSS_GPU=DENSS_GPU).get() < chi_end_fraction * mymean(chi[j - 100:j], + DENSS_GPU=DENSS_GPU).get() + else: + lesser = mystd(chi[j - 100:j], DENSS_GPU=DENSS_GPU) < chi_end_fraction * mymean(chi[j - 100:j], + DENSS_GPU=DENSS_GPU) + if lesser: + break + + rho = newrho + + # convert back to numpy outside of for loop + if DENSS_GPU: + rho = cp.asnumpy(rho) + qbin_labels = cp.asnumpy(qbin_labels) + qbin_args = cp.asnumpy(qbin_args) + sigqdata = cp.asnumpy(sigqdata) + Imean = cp.asnumpy(Imean) + chi = cp.asnumpy(chi) + qbins = cp.asnumpy(qbins) + qbinsc = cp.asnumpy(qbinsc) + Idata = cp.asnumpy(Idata) + support = cp.asnumpy(support) + supportV = cp.asnumpy(supportV) + Idata = cp.asnumpy(Idata) + newrho = cp.asnumpy(newrho) + qblravel = cp.asnumpy(qblravel) + xcount = cp.asnumpy(xcount) + + # F = myfftn(rho) + F = myrfftn(rho) + # calculate spherical average intensity from 3D Fs + I3D = abs2(F) + # I3D = myabs(F)**2 + Imean = mybinmean(I3D.ravel(), qblravel, xcount=xcount) + + # scale Fs to match data + factors = np.sqrt(Idata / Imean) + factors[~qba] = 1.0 + F *= factors[qbin_labels] + # rho = myifftn(F) + rho = myirfftn(F) + rho = rho.real + + # negative images yield the same scattering, so flip the image + # to have more positive than negative values if necessary + # to make sure averaging is done properly + # whether theres actually more positive than negative values + # is ambiguous, but this ensures all maps are at least likely + # the same designation when averaging + if np.sum(np.abs(rho[rho < 0])) > np.sum(rho[rho > 0]): + rho *= -1 + + # scale total number of electrons + if ne is not None: + rho *= ne / np.sum(rho) + + rg[j + 1] = calc_rg_by_guinier_first_2_points(qbinsc, Imean) + supportV[j + 1] = supportV[j] + + # change rho to be the electron density in e-/angstroms^3, rather than number of electrons, + # which is what the FFT assumes + rho /= dV + my_logger.info('FINISHED DENSITY REFINEMENT') + + if cutout: + # here were going to cut rho out of the large real space box + # to the voxels that contain the particle + # use D to estimate particle size + # assume the particle is in the center of the box + # calculate how many voxels needed to contain particle of size D + # use bigger than D to make sure we don't crop actual particle in case its larger than expected + # lets clip it to a maximum of 2*D to be safe + nD = int(2 * D / dx) + 1 + # make sure final box will still have even samples + if nD % 2 == 1: + nD += 1 + + nmin = nbox // 2 - nD // 2 + nmax = nbox // 2 + nD // 2 + 2 + # create new rho array containing only the particle + newrho = rho[nmin:nmax, nmin:nmax, nmin:nmax] + rho = newrho + # do the same for the support + newsupport = support[nmin:nmax, nmin:nmax, nmin:nmax] + support = newsupport + # update side to new size of box + side = dx * (nmax - nmin) + + if write_xplor_format: + write_xplor(rho, side, fprefix + ".xplor") + write_xplor(np.ones_like(rho) * support, side, fprefix + "_support.xplor") + + write_mrc(rho, side, fprefix + ".mrc") + write_mrc(np.ones_like(rho) * support, side, fprefix + "_support.mrc") + + # return original unscaled values of Idata (and therefore Imean) for comparison with real data + Idata /= scale_factor + sigqdata /= scale_factor + Imean /= scale_factor + I /= scale_factor + sigq /= scale_factor + + # Write some more output files + Iq_exp = np.vstack((qraw, Iraw, sigqraw)).T + Iq_calc = np.vstack((qbinsc, Imean, Imean * 0.01)).T + idx = np.where(Iraw > 0) + Iq_exp = Iq_exp[idx] + qmax = np.min([Iq_exp[:, 0].max(), Iq_calc[:, 0].max()]) + Iq_exp = Iq_exp[Iq_exp[:, 0] <= qmax] + Iq_calc = Iq_calc[Iq_calc[:, 0] <= qmax] + final_chi2, exp_scale_factor, offset, fit = calc_chi2(Iq_exp, Iq_calc, scale=True, offset=False, interpolation=True, + return_sf=True, return_fit=True) + + final_step = j+1 + + chi[final_step] = final_chi2 + + np.savetxt(fprefix + '_map.fit', fit, delimiter=' ', fmt='%.5e', + header='q(data),I(data),error(data),I(density); chi2=%.3f' % final_chi2) + + # Create formatted strings for each column (enabling printing of complex rg values) + chi_str = [f"{chi[i].real:.5e}" for i in range(final_step)] + rg_str = [f"{rg[i].real:.5e}" if abs(rg[i].imag) < 1e-10 else f"{rg[i].imag:.5e}j" + for i in range(final_step)] + support_str = [f"{supportV[i].real:.5e}" for i in range(final_step)] + + np.savetxt(fprefix + '_stats_by_step.dat', + np.column_stack((chi_str, rg_str, support_str)), + delimiter=" ", fmt="%s", header='Chi2 Rg SupportVolume') + + my_logger.info('Number of steps: %i', j) + my_logger.info('Final Chi2: %.3e', chi[-1]) + my_logger.info('Final Rg: %s', np.round(rg[-1],3)) + my_logger.info('Final Support Volume: %3.3f', supportV[-1]) + my_logger.info('Mean Density (all voxels): %3.5f', np.mean(rho)) + my_logger.info('Std. Dev. of Density (all voxels): %3.5f', np.std(rho)) + my_logger.info('RMSD of Density (all voxels): %3.5f', np.sqrt(np.mean(np.square(rho)))) + + + + return qdata, Idata, sigqdata, qbinsc, Imean, chi, rg, supportV, rho, side, fit, final_chi2 + + + diff --git a/denss/scripts/denss_all.py b/denss/scripts/denss_all.py index 32d7043..98730cc 100755 --- a/denss/scripts/denss_all.py +++ b/denss/scripts/denss_all.py @@ -45,12 +45,13 @@ def multi_denss(niter, superargs_dict, args_dict): try: - # time.sleep(1) # Processing keyword args for compatibility with RAW GUI args_dict['path'] = '.' - args_dict['output'] = args_dict['output'] + '_' + str(niter) + #don't have tags with '-' + args_dict['output'] = args_dict['output'].split('-')[0] + '-' + str(niter) #fix for multiprocessing overwrites + np.random.seed(niter + int(time.time())) args_dict['seed'] = np.random.randint(2 ** 31 - 1) args_dict['quiet'] = True @@ -75,7 +76,47 @@ def multi_denss(niter, superargs_dict, args_dict): logger.info('Data filename: %s', superargs_dict['file']) logger.info('Output prefix: %s', args_dict['output']) logger.info('Mode: %s', superargs_dict['mode']) - result = denss.reconstruct_abinitio_from_scattering_profile(**args_dict) + + fn_args_dict = dict(args_dict) + + + if fn_args_dict['PA_cont']: ## if "use the PA constraint" + fn = denss.reconstruct_abinitio_from_scattering_profile_PA + + if fn_args_dict['PA_initmrc']: + rho_init, _ = denss.read_mrc(fn_args_dict['PA_initmrc']) + + else: # the setting is not used, + # + del fn_args_dict['PA_cont'] + del fn_args_dict['PA_dparams'] + del fn_args_dict['PA_files'] + del fn_args_dict['PA_initmrc'] + + fn = denss.reconstruct_abinitio_from_scattering_profile + + + # if fn_args_dict['PA_dparams'] is None: ##hack if --PA_cont is set but theres no PA_dparams set + # fn_args_dict['PA_dparams'] = [1.0] + # rho_init, _ = denss.read_mrc(fn_args_dict['PA_initmrc'],) + + + # fn_args_dict['rho_start']= rho_init + + # print('rhoinit',rho_init.shape) + # # fn_args_dict['dmax'] = 61.96488641388 + + + # result = denss.reconstruct_abinitio_from_scattering_profile_PA(**fn_args_dict) + # else: + # fn_args_dict = dict(args_dict) + + # del fn_args_dict['PA_cont'] + # del fn_args_dict['PA_dparams'] + # del fn_args_dict['PA_files'] + # result = denss.reconstruct_abinitio_from_scattering_profile(**fn_args_dict) + + result = fn(**fn_args_dict) logger.info('END') return result @@ -85,6 +126,7 @@ def multi_denss(niter, superargs_dict, args_dict): def main(): + parser = argparse.ArgumentParser() parser.add_argument("-nm", "--nmaps",default = 20,type =int, help="Number of maps to be generated (default 20)") parser.add_argument("-j", "--cores", type=int, default = 1, help="Number of cores used for parallel processing. (default: 1)") @@ -94,6 +136,14 @@ def main(): parser.add_argument("-c_on", "--center_on", dest="center", action="store_true", help="Center reference PDB map.") parser.add_argument("-c_off", "--center_off", dest="center", action="store_false", help="Do not center reference PDB map (default).") parser.add_argument("-r", "--resolution", default=15.0, type=float, help="Resolution of map calculated from reference PDB file (default 15 angstroms).") + + parser.add_argument("--PA_outdir", default='./', type=str, help="PA: output directory parent") + parser.add_argument("--PA_cont", default=False, type=bool, help="PA: Run with new constraint") + parser.add_argument("--PA_dparams", nargs='*', type=float, help="PA: list of d params") + parser.add_argument("--PA_files", nargs='*', type=str, help="PA: list of files to read in") + parser.add_argument("--PA_initmrc", default='', type=str, help="PA: list of files to read in") + + parser.set_defaults(enan = True) parser.set_defaults(center = True) superargs = dopts.parse_arguments(parser) @@ -120,10 +170,6 @@ def main(): __spec__ = None - if superargs.nmaps<2: - print("Not enough maps to align") - sys.exit(1) - fname_nopath = os.path.basename(superargs.file) basename, ext = os.path.splitext(fname_nopath) if (superargs.output is None) or (superargs.output == basename): @@ -131,10 +177,12 @@ def main(): else: output = superargs.output - out_dir = output + # out_dir = output + out_dir = args.PA_outdir + output #PA FIX dirn = 0 while os.path.isdir(out_dir): - out_dir = output + "_" + str(dirn) + # out_dir = output + "_" + str(dirn) + out_dir = args.PA_outdir + output + "_" + str(dirn) #PA FIX dirn += 1 print(out_dir) @@ -170,8 +218,6 @@ def main(): superlogger.info('Starting DENSS runs') try: - #mapfunc = partial(multi_denss, **denss_inputs) - # denss_outputs = pool.map(mapfunc, list(range(superargs.nmaps))) mapfunc = partial(multi_denss, superargs_dict=vars(superargs), args_dict=vars(args)) denss_outputs = pool.map(mapfunc, list(range(superargs.nmaps))) print("\r Finishing denss job: %i / %i" % (superargs.nmaps,superargs.nmaps)) @@ -183,6 +229,16 @@ def main(): pool.close() sys.exit(1) + + if superargs.nmaps<2: + print("Not enough maps to align") + sys.exit(0) + + + + + + superlogger.info('Finished DENSS runs') qdata = denss_outputs[0][0] @@ -391,4 +447,4 @@ def main(): if __name__ == "__main__": print("Entering main() function of denss_all.py") - main() \ No newline at end of file + main() diff --git a/denss/scripts/denss_pdb2mrc.py b/denss/scripts/denss_pdb2mrc.py index 06757ee..a7fd7b9 100644 --- a/denss/scripts/denss_pdb2mrc.py +++ b/denss/scripts/denss_pdb2mrc.py @@ -111,6 +111,10 @@ def main(): parser.add_argument("--print_timings", default=False, action="store_true", help="Print timings for each step of the script.") parser.add_argument("-o", "--output", default=None, help="Output filename prefix (default=basename_pdb)") parser.add_argument("--write_shannon", dest="write_shannon", action="store_true", help=argparse.SUPPRESS) # help="Write a file containing only the Shannon intensities.") + parser.add_argument("--PArhoinvacuosf", default=1, help="PA: scale rho invacuo of the protein") + parser.add_argument("--PApowersf", default=1, help="PA: raise final rho by this power") + parser.add_argument("--PAsf_ex", default=1, help="PA: scale for ex") + parser.add_argument("--PAsf_sh", default=1, help="PA: scale for watershell") parser.set_defaults(fast = False) parser.set_defaults(ignore_waters = True) parser.set_defaults(center = True) @@ -250,6 +254,11 @@ def main(): min_opts=args.minopts, fast=args.fast, use_sasrec_during_fitting=args.use_sasrec_during_fitting, + + PArhoinvacuosf = args.PArhoinvacuosf, + PApowersf =args.PApowersf, + PAsf_ex =args.PAsf_ex, + PAsf_sh =args.PAsf_sh, ) t.append(time.time()) diff --git a/lysozyme.out b/lysozyme.out deleted file mode 100644 index 0f4b440..0000000 --- a/lysozyme.out +++ /dev/null @@ -1,676 +0,0 @@ - - #### G N O M --- Version 4.6 #### - - 04-May-2017 14:08:25 - === Run No 1 === - Run title: ### DATA: - - - ******* Input file(s) : t_dat.dat - Condition P(rmin) = 0 is used. - Condition P(rmax) = 0 is used. - - Highest ALPHA is found to be 0.5405E+01 - - The measure of inconsistency AN1 equals to 0.8920E+00 - Alpha Discrp Oscill Stabil Sysdev Positv Valcen Total - 0.5405E+04 30.9468 1.0240 0.6098 0.1884 1.0000 0.8967 0.39777 - 0.1081E+04 12.7852 1.0165 0.2493 0.0471 1.0000 0.9010 0.40239 - 0.2162E+03 4.4967 1.0079 0.0832 0.1028 1.0000 0.9131 0.55784 - 0.4324E+02 2.0009 1.0334 0.0579 0.3084 1.0000 0.9338 0.61013 - 0.8648E+01 0.8063 1.0902 0.0313 0.7495 1.0000 0.9495 0.72683 - 0.1730E+01 0.5211 1.1203 0.0118 0.9636 1.0000 0.9548 0.97222 - 0.3459E+00 0.4879 1.1365 0.0196 0.9550 1.0000 0.9547 0.95956 - 0.6918E-01 0.4683 1.2010 0.0408 0.9722 0.9996 0.9498 0.92828 - 0.1384E-01 0.4554 1.3635 0.0417 0.9722 0.9983 0.9418 0.88689 - 0.2767E-02 0.4471 1.8637 0.1752 0.9722 0.9943 0.9305 0.53439 - 0.5535E-03 0.4276 3.9857 0.3987 0.9550 0.9783 0.8703 0.42081 - 0.1107E-03 0.4083 5.5843 0.2354 0.9807 0.9340 0.7732 0.35875 - 0.2214E-04 0.4034 6.5042 0.2790 0.9636 0.8994 0.7052 0.32506 - 0.4428E-05 0.3998 8.2374 0.8366 0.9722 0.8374 0.5673 0.29389 - 0.8855E-06 0.3917 7.7802 0.6202 0.9636 0.7686 0.4965 0.28100 - 0.1771E-06 0.3857 7.7286 0.2241 0.9636 0.7446 0.4778 0.28634 - 0.3542E-07 0.3844 8.8461 0.4296 0.9722 0.7367 0.4724 0.27824 - 0.7084E-08 0.3829 9.6363 0.9760 0.9636 0.7193 0.4543 0.27761 - 0.1417E-08 0.3786 8.4514 0.6937 0.9893 0.7060 0.4218 0.27665 - 0.2834E-09 0.3745 8.1851 0.2888 0.9807 0.7034 0.4319 0.27663 - 0.5667E-10 0.3737 8.2183 0.1037 1.0064 0.7043 0.4345 0.39420 - 0.1133E-10 0.3735 9.5565 0.3371 1.0064 0.7075 0.4485 0.27580 - 0.2267E-11 0.3727 15.1350 0.8598 1.0064 0.6876 0.5051 0.00000 - - *** Golden section search to maximize estimate *** - Alpha Discrp Oscill Stabil Sysdev Positv Valcen Total - 0.3198E+01 0.5689 1.1121 0.0169 0.9293 1.0000 0.9536 0.90719 - 0.1368E+01 0.5116 1.1228 0.0107 0.9550 1.0000 0.9551 0.97036 - 0.2187E+01 0.5345 1.1175 0.0134 0.9465 1.0000 0.9545 0.92957 - 0.1581E+01 0.5171 1.1213 0.0113 0.9636 1.0000 0.9549 0.97145 - 0.1892E+01 0.5257 1.1193 0.0124 0.9465 1.0000 0.9547 0.92796 - 0.1671E+01 0.5195 1.1207 0.0116 0.9636 1.0000 0.9549 0.97192 - 0.1790E+01 0.5228 1.1199 0.0120 0.9465 1.0000 0.9548 0.92742 - 0.1707E+01 0.5205 1.1205 0.0117 0.9636 1.0000 0.9548 0.97210 - 0.1752E+01 0.5217 1.1202 0.0119 0.9550 1.0000 0.9548 0.97234 - 0.1767E+01 0.5221 1.1201 0.0119 0.9465 1.0000 0.9548 0.92730 - 0.1744E+01 0.5215 1.1202 0.0119 0.9550 1.0000 0.9548 0.97230 - 0.1758E+01 0.5219 1.1201 0.0119 0.9550 1.0000 0.9548 0.97237 - 0.1761E+01 0.5219 1.1201 0.0119 0.9550 1.0000 0.9548 0.97239 - 0.1763E+01 0.5220 1.1201 0.0119 0.9550 1.0000 0.9548 0.97240 - 0.1765E+01 0.5220 1.1201 0.0119 0.9465 1.0000 0.9548 0.92729 - 0.1762E+01 0.5220 1.1201 0.0119 0.9550 1.0000 0.9548 0.97239 - 0.1763E+01 0.5220 1.1201 0.0119 0.9550 1.0000 0.9548 0.97240 - - - - #### Final results #### - - Parameter DISCRP OSCILL STABIL SYSDEV POSITV VALCEN - Weight 1.000 3.000 3.000 3.000 1.000 1.000 - Sigma 0.300 0.600 0.120 0.120 0.120 0.120 - Ideal 0.700 1.100 0.000 1.000 1.000 0.950 - Current 0.522 1.120 0.012 0.955 1.000 0.955 - - - - - - - - - - - - - - - - - - - - - - - - - - - Estimate 0.703 0.999 0.990 1.000 1.000 0.998 - - Angular range : from 0.0098 to 0.2793 - Real space range : from 0.00 to 40.00 - - Highest ALPHA (theor) : 0.540E+04 JOB = 0 - Current ALPHA : 0.176E+01 Rg : 0.142E+02 I(0) : 0.459E-01 - - Total estimate : 0.972 which is AN EXCELLENT solution - - S J EXP ERROR J REG I REG - - 0.0000E+00 0.4591E-01 - 0.5777E-03 0.4591E-01 - 0.1155E-02 0.4591E-01 - 0.1733E-02 0.4590E-01 - 0.2311E-02 0.4589E-01 - 0.2888E-02 0.4588E-01 - 0.3466E-02 0.4587E-01 - 0.4044E-02 0.4586E-01 - 0.4621E-02 0.4584E-01 - 0.5199E-02 0.4583E-01 - 0.5777E-02 0.4581E-01 - 0.6354E-02 0.4579E-01 - 0.6932E-02 0.4576E-01 - 0.7509E-02 0.4574E-01 - 0.8087E-02 0.4571E-01 - 0.8665E-02 0.4568E-01 - 0.9242E-02 0.4565E-01 - 0.9820E-02 0.4365E-01 0.1432E-02 0.4561E-01 0.4561E-01 - 0.1040E-01 0.4635E-01 0.1312E-02 0.4558E-01 0.4558E-01 - 0.1098E-01 0.4446E-01 0.1286E-02 0.4554E-01 0.4554E-01 - 0.1155E-01 0.4440E-01 0.1160E-02 0.4550E-01 0.4550E-01 - 0.1213E-01 0.4369E-01 0.1214E-02 0.4546E-01 0.4546E-01 - 0.1271E-01 0.4578E-01 0.9751E-03 0.4542E-01 0.4542E-01 - 0.1329E-01 0.4510E-01 0.1016E-02 0.4537E-01 0.4537E-01 - 0.1386E-01 0.4535E-01 0.9385E-03 0.4532E-01 0.4532E-01 - 0.1444E-01 0.4455E-01 0.9670E-03 0.4527E-01 0.4527E-01 - 0.1502E-01 0.4459E-01 0.1017E-02 0.4522E-01 0.4522E-01 - 0.1560E-01 0.4426E-01 0.8005E-03 0.4517E-01 0.4517E-01 - 0.1617E-01 0.4464E-01 0.8856E-03 0.4511E-01 0.4511E-01 - 0.1675E-01 0.4480E-01 0.8140E-03 0.4505E-01 0.4505E-01 - 0.1733E-01 0.4297E-01 0.8314E-03 0.4499E-01 0.4499E-01 - 0.1791E-01 0.4588E-01 0.8271E-03 0.4493E-01 0.4493E-01 - 0.1848E-01 0.4562E-01 0.7584E-03 0.4487E-01 0.4487E-01 - 0.1906E-01 0.4375E-01 0.8470E-03 0.4480E-01 0.4480E-01 - 0.1964E-01 0.4256E-01 0.7157E-03 0.4474E-01 0.4474E-01 - 0.2022E-01 0.4419E-01 0.7499E-03 0.4467E-01 0.4467E-01 - 0.2080E-01 0.4451E-01 0.7389E-03 0.4460E-01 0.4460E-01 - 0.2137E-01 0.4278E-01 0.6881E-03 0.4452E-01 0.4452E-01 - 0.2195E-01 0.4334E-01 0.6851E-03 0.4445E-01 0.4445E-01 - 0.2253E-01 0.4380E-01 0.6341E-03 0.4437E-01 0.4437E-01 - 0.2311E-01 0.4401E-01 0.6256E-03 0.4429E-01 0.4429E-01 - 0.2368E-01 0.4408E-01 0.6189E-03 0.4421E-01 0.4421E-01 - 0.2426E-01 0.4428E-01 0.6242E-03 0.4413E-01 0.4413E-01 - 0.2484E-01 0.4259E-01 0.6117E-03 0.4405E-01 0.4405E-01 - 0.2542E-01 0.4346E-01 0.5813E-03 0.4396E-01 0.4396E-01 - 0.2599E-01 0.4257E-01 0.5866E-03 0.4387E-01 0.4387E-01 - 0.2657E-01 0.4269E-01 0.5959E-03 0.4378E-01 0.4378E-01 - 0.2715E-01 0.4292E-01 0.5586E-03 0.4369E-01 0.4369E-01 - 0.2773E-01 0.4345E-01 0.5524E-03 0.4360E-01 0.4360E-01 - 0.2830E-01 0.4312E-01 0.5550E-03 0.4350E-01 0.4350E-01 - 0.2888E-01 0.4300E-01 0.5413E-03 0.4341E-01 0.4341E-01 - 0.2946E-01 0.4235E-01 0.4922E-03 0.4331E-01 0.4331E-01 - 0.3004E-01 0.4276E-01 0.5059E-03 0.4321E-01 0.4321E-01 - 0.3062E-01 0.4304E-01 0.5021E-03 0.4311E-01 0.4311E-01 - 0.3119E-01 0.4272E-01 0.4919E-03 0.4300E-01 0.4300E-01 - 0.3177E-01 0.4286E-01 0.4979E-03 0.4290E-01 0.4290E-01 - 0.3235E-01 0.4286E-01 0.4789E-03 0.4279E-01 0.4279E-01 - 0.3293E-01 0.4264E-01 0.4928E-03 0.4268E-01 0.4268E-01 - 0.3350E-01 0.4319E-01 0.4864E-03 0.4257E-01 0.4257E-01 - 0.3408E-01 0.4263E-01 0.4756E-03 0.4246E-01 0.4246E-01 - 0.3466E-01 0.4182E-01 0.4535E-03 0.4235E-01 0.4235E-01 - 0.3524E-01 0.4130E-01 0.4543E-03 0.4223E-01 0.4223E-01 - 0.3581E-01 0.4191E-01 0.4568E-03 0.4211E-01 0.4211E-01 - 0.3639E-01 0.4226E-01 0.4512E-03 0.4199E-01 0.4199E-01 - 0.3697E-01 0.4188E-01 0.4557E-03 0.4187E-01 0.4187E-01 - 0.3755E-01 0.4236E-01 0.4456E-03 0.4175E-01 0.4175E-01 - 0.3812E-01 0.4168E-01 0.4330E-03 0.4163E-01 0.4163E-01 - 0.3870E-01 0.4142E-01 0.4503E-03 0.4151E-01 0.4151E-01 - 0.3928E-01 0.4138E-01 0.4335E-03 0.4138E-01 0.4138E-01 - 0.3986E-01 0.4061E-01 0.4384E-03 0.4125E-01 0.4125E-01 - 0.4043E-01 0.4095E-01 0.4213E-03 0.4112E-01 0.4112E-01 - 0.4101E-01 0.4077E-01 0.4296E-03 0.4099E-01 0.4099E-01 - 0.4159E-01 0.4057E-01 0.4250E-03 0.4086E-01 0.4086E-01 - 0.4217E-01 0.4059E-01 0.4135E-03 0.4073E-01 0.4073E-01 - 0.4275E-01 0.4066E-01 0.4159E-03 0.4059E-01 0.4059E-01 - 0.4332E-01 0.4111E-01 0.4116E-03 0.4045E-01 0.4045E-01 - 0.4390E-01 0.4018E-01 0.4135E-03 0.4032E-01 0.4032E-01 - 0.4448E-01 0.3993E-01 0.4044E-03 0.4018E-01 0.4018E-01 - 0.4506E-01 0.4031E-01 0.4022E-03 0.4004E-01 0.4004E-01 - 0.4563E-01 0.3936E-01 0.4092E-03 0.3989E-01 0.3989E-01 - 0.4621E-01 0.4001E-01 0.3983E-03 0.3975E-01 0.3975E-01 - 0.4679E-01 0.4000E-01 0.3980E-03 0.3961E-01 0.3961E-01 - 0.4737E-01 0.3962E-01 0.3968E-03 0.3946E-01 0.3946E-01 - 0.4794E-01 0.3909E-01 0.3851E-03 0.3931E-01 0.3931E-01 - 0.4852E-01 0.3872E-01 0.3836E-03 0.3916E-01 0.3916E-01 - 0.4910E-01 0.3885E-01 0.3841E-03 0.3901E-01 0.3901E-01 - 0.4968E-01 0.3824E-01 0.3949E-03 0.3886E-01 0.3886E-01 - 0.5025E-01 0.3892E-01 0.3755E-03 0.3871E-01 0.3871E-01 - 0.5083E-01 0.3880E-01 0.3849E-03 0.3856E-01 0.3856E-01 - 0.5141E-01 0.3787E-01 0.3785E-03 0.3840E-01 0.3840E-01 - 0.5199E-01 0.3850E-01 0.3704E-03 0.3825E-01 0.3825E-01 - 0.5256E-01 0.3851E-01 0.3719E-03 0.3809E-01 0.3809E-01 - 0.5314E-01 0.3735E-01 0.3698E-03 0.3793E-01 0.3793E-01 - 0.5372E-01 0.3744E-01 0.3678E-03 0.3777E-01 0.3777E-01 - 0.5430E-01 0.3732E-01 0.3641E-03 0.3761E-01 0.3761E-01 - 0.5487E-01 0.3804E-01 0.3711E-03 0.3745E-01 0.3745E-01 - 0.5545E-01 0.3692E-01 0.3623E-03 0.3729E-01 0.3729E-01 - 0.5603E-01 0.3771E-01 0.3652E-03 0.3712E-01 0.3712E-01 - 0.5661E-01 0.3761E-01 0.3815E-03 0.3696E-01 0.3696E-01 - 0.5718E-01 0.3731E-01 0.3811E-03 0.3679E-01 0.3679E-01 - 0.5776E-01 0.3703E-01 0.3905E-03 0.3663E-01 0.3663E-01 - 0.5834E-01 0.3679E-01 0.3829E-03 0.3646E-01 0.3646E-01 - 0.5892E-01 0.3666E-01 0.3885E-03 0.3629E-01 0.3629E-01 - 0.5950E-01 0.3627E-01 0.3998E-03 0.3612E-01 0.3612E-01 - 0.6007E-01 0.3617E-01 0.3867E-03 0.3595E-01 0.3595E-01 - 0.6065E-01 0.3564E-01 0.3995E-03 0.3578E-01 0.3578E-01 - 0.6123E-01 0.3589E-01 0.3980E-03 0.3561E-01 0.3561E-01 - 0.6181E-01 0.3542E-01 0.4041E-03 0.3543E-01 0.3543E-01 - 0.6238E-01 0.3600E-01 0.4018E-03 0.3526E-01 0.3526E-01 - 0.6296E-01 0.3516E-01 0.3918E-03 0.3509E-01 0.3509E-01 - 0.6354E-01 0.3585E-01 0.4114E-03 0.3491E-01 0.3491E-01 - 0.6412E-01 0.3486E-01 0.3987E-03 0.3473E-01 0.3473E-01 - 0.6469E-01 0.3501E-01 0.4105E-03 0.3456E-01 0.3456E-01 - 0.6527E-01 0.3337E-01 0.4011E-03 0.3438E-01 0.3438E-01 - 0.6585E-01 0.3443E-01 0.3992E-03 0.3420E-01 0.3420E-01 - 0.6643E-01 0.3341E-01 0.4231E-03 0.3402E-01 0.3402E-01 - 0.6700E-01 0.3463E-01 0.3958E-03 0.3384E-01 0.3384E-01 - 0.6758E-01 0.3340E-01 0.4174E-03 0.3366E-01 0.3366E-01 - 0.6816E-01 0.3418E-01 0.4080E-03 0.3348E-01 0.3348E-01 - 0.6874E-01 0.3333E-01 0.4125E-03 0.3330E-01 0.3330E-01 - 0.6931E-01 0.3411E-01 0.4062E-03 0.3312E-01 0.3312E-01 - 0.6989E-01 0.3318E-01 0.3703E-03 0.3293E-01 0.3293E-01 - 0.7047E-01 0.3310E-01 0.4037E-03 0.3275E-01 0.3275E-01 - 0.7105E-01 0.3243E-01 0.3957E-03 0.3256E-01 0.3256E-01 - 0.7162E-01 0.3241E-01 0.3915E-03 0.3238E-01 0.3238E-01 - 0.7220E-01 0.3218E-01 0.4165E-03 0.3219E-01 0.3219E-01 - 0.7278E-01 0.3233E-01 0.3918E-03 0.3201E-01 0.3201E-01 - 0.7336E-01 0.3220E-01 0.4226E-03 0.3182E-01 0.3182E-01 - 0.7393E-01 0.3168E-01 0.3953E-03 0.3164E-01 0.3164E-01 - 0.7451E-01 0.3198E-01 0.4073E-03 0.3145E-01 0.3145E-01 - 0.7509E-01 0.3191E-01 0.4011E-03 0.3126E-01 0.3126E-01 - 0.7567E-01 0.3156E-01 0.4086E-03 0.3107E-01 0.3107E-01 - 0.7624E-01 0.3150E-01 0.4117E-03 0.3088E-01 0.3088E-01 - 0.7682E-01 0.3134E-01 0.3823E-03 0.3070E-01 0.3070E-01 - 0.7740E-01 0.3073E-01 0.4189E-03 0.3051E-01 0.3051E-01 - 0.7798E-01 0.3064E-01 0.3945E-03 0.3032E-01 0.3032E-01 - 0.7855E-01 0.2947E-01 0.4049E-03 0.3013E-01 0.3013E-01 - 0.7913E-01 0.3070E-01 0.4059E-03 0.2994E-01 0.2994E-01 - 0.7971E-01 0.2976E-01 0.3926E-03 0.2975E-01 0.2975E-01 - 0.8029E-01 0.2994E-01 0.4030E-03 0.2956E-01 0.2956E-01 - 0.8086E-01 0.3006E-01 0.4103E-03 0.2937E-01 0.2937E-01 - 0.8144E-01 0.3000E-01 0.4006E-03 0.2917E-01 0.2917E-01 - 0.8202E-01 0.2977E-01 0.4087E-03 0.2898E-01 0.2898E-01 - 0.8260E-01 0.2871E-01 0.4116E-03 0.2879E-01 0.2879E-01 - 0.8317E-01 0.2898E-01 0.4127E-03 0.2860E-01 0.2860E-01 - 0.8375E-01 0.2849E-01 0.3958E-03 0.2841E-01 0.2841E-01 - 0.8433E-01 0.2837E-01 0.3982E-03 0.2822E-01 0.2822E-01 - 0.8491E-01 0.2803E-01 0.4061E-03 0.2802E-01 0.2802E-01 - 0.8548E-01 0.2770E-01 0.3952E-03 0.2783E-01 0.2783E-01 - 0.8606E-01 0.2801E-01 0.4095E-03 0.2764E-01 0.2764E-01 - 0.8664E-01 0.2724E-01 0.4057E-03 0.2745E-01 0.2745E-01 - 0.8722E-01 0.2786E-01 0.3970E-03 0.2726E-01 0.2726E-01 - 0.8779E-01 0.2739E-01 0.4162E-03 0.2706E-01 0.2706E-01 - 0.8837E-01 0.2685E-01 0.4005E-03 0.2687E-01 0.2687E-01 - 0.8895E-01 0.2707E-01 0.3945E-03 0.2668E-01 0.2668E-01 - 0.8953E-01 0.2690E-01 0.4027E-03 0.2649E-01 0.2649E-01 - 0.9010E-01 0.2628E-01 0.4091E-03 0.2629E-01 0.2629E-01 - 0.9068E-01 0.2695E-01 0.4059E-03 0.2610E-01 0.2610E-01 - 0.9126E-01 0.2668E-01 0.4026E-03 0.2591E-01 0.2591E-01 - 0.9184E-01 0.2641E-01 0.3971E-03 0.2572E-01 0.2572E-01 - 0.9241E-01 0.2627E-01 0.4012E-03 0.2553E-01 0.2553E-01 - 0.9299E-01 0.2491E-01 0.3994E-03 0.2533E-01 0.2533E-01 - 0.9357E-01 0.2563E-01 0.4012E-03 0.2514E-01 0.2514E-01 - 0.9415E-01 0.2442E-01 0.4052E-03 0.2495E-01 0.2495E-01 - 0.9472E-01 0.2494E-01 0.4022E-03 0.2476E-01 0.2476E-01 - 0.9530E-01 0.2489E-01 0.4083E-03 0.2457E-01 0.2457E-01 - 0.9588E-01 0.2421E-01 0.4044E-03 0.2438E-01 0.2438E-01 - 0.9645E-01 0.2496E-01 0.4067E-03 0.2419E-01 0.2419E-01 - 0.9703E-01 0.2453E-01 0.4017E-03 0.2400E-01 0.2400E-01 - 0.9761E-01 0.2374E-01 0.4003E-03 0.2381E-01 0.2381E-01 - 0.9819E-01 0.2343E-01 0.4155E-03 0.2362E-01 0.2362E-01 - 0.9876E-01 0.2339E-01 0.3989E-03 0.2343E-01 0.2343E-01 - 0.9934E-01 0.2341E-01 0.3918E-03 0.2324E-01 0.2324E-01 - 0.9992E-01 0.2281E-01 0.3981E-03 0.2305E-01 0.2305E-01 - 0.1005E+00 0.2325E-01 0.4022E-03 0.2286E-01 0.2286E-01 - 0.1011E+00 0.2249E-01 0.4069E-03 0.2267E-01 0.2267E-01 - 0.1017E+00 0.2248E-01 0.4033E-03 0.2249E-01 0.2249E-01 - 0.1022E+00 0.2250E-01 0.4037E-03 0.2230E-01 0.2230E-01 - 0.1028E+00 0.2241E-01 0.3977E-03 0.2211E-01 0.2211E-01 - 0.1034E+00 0.2230E-01 0.3967E-03 0.2192E-01 0.2192E-01 - 0.1040E+00 0.2091E-01 0.4033E-03 0.2174E-01 0.2174E-01 - 0.1045E+00 0.2167E-01 0.3909E-03 0.2155E-01 0.2155E-01 - 0.1051E+00 0.2125E-01 0.3691E-03 0.2137E-01 0.2137E-01 - 0.1057E+00 0.2074E-01 0.3593E-03 0.2118E-01 0.2118E-01 - 0.1063E+00 0.2112E-01 0.3718E-03 0.2100E-01 0.2100E-01 - 0.1068E+00 0.2129E-01 0.3787E-03 0.2081E-01 0.2081E-01 - 0.1074E+00 0.2087E-01 0.3866E-03 0.2063E-01 0.2063E-01 - 0.1080E+00 0.1984E-01 0.3980E-03 0.2045E-01 0.2045E-01 - 0.1086E+00 0.2028E-01 0.3752E-03 0.2027E-01 0.2027E-01 - 0.1092E+00 0.2039E-01 0.3799E-03 0.2008E-01 0.2008E-01 - 0.1097E+00 0.1975E-01 0.3900E-03 0.1990E-01 0.1990E-01 - 0.1103E+00 0.1999E-01 0.3925E-03 0.1972E-01 0.1972E-01 - 0.1109E+00 0.1969E-01 0.3896E-03 0.1954E-01 0.1954E-01 - 0.1115E+00 0.1957E-01 0.3876E-03 0.1936E-01 0.1936E-01 - 0.1120E+00 0.1913E-01 0.3877E-03 0.1918E-01 0.1918E-01 - 0.1126E+00 0.1895E-01 0.3892E-03 0.1901E-01 0.1901E-01 - 0.1132E+00 0.1860E-01 0.3828E-03 0.1883E-01 0.1883E-01 - 0.1138E+00 0.1832E-01 0.3809E-03 0.1865E-01 0.1865E-01 - 0.1144E+00 0.1848E-01 0.3890E-03 0.1848E-01 0.1848E-01 - 0.1149E+00 0.1880E-01 0.3948E-03 0.1830E-01 0.1830E-01 - 0.1155E+00 0.1797E-01 0.3874E-03 0.1813E-01 0.1813E-01 - 0.1161E+00 0.1796E-01 0.3769E-03 0.1795E-01 0.1795E-01 - 0.1167E+00 0.1730E-01 0.3866E-03 0.1778E-01 0.1778E-01 - 0.1172E+00 0.1727E-01 0.3891E-03 0.1761E-01 0.1761E-01 - 0.1178E+00 0.1737E-01 0.3933E-03 0.1743E-01 0.1743E-01 - 0.1184E+00 0.1698E-01 0.3797E-03 0.1726E-01 0.1726E-01 - 0.1190E+00 0.1762E-01 0.3904E-03 0.1709E-01 0.1709E-01 - 0.1195E+00 0.1770E-01 0.3833E-03 0.1692E-01 0.1692E-01 - 0.1201E+00 0.1663E-01 0.3900E-03 0.1675E-01 0.1675E-01 - 0.1207E+00 0.1707E-01 0.3862E-03 0.1659E-01 0.1659E-01 - 0.1213E+00 0.1703E-01 0.3877E-03 0.1642E-01 0.1642E-01 - 0.1219E+00 0.1562E-01 0.3872E-03 0.1625E-01 0.1625E-01 - 0.1224E+00 0.1630E-01 0.3755E-03 0.1609E-01 0.1609E-01 - 0.1230E+00 0.1663E-01 0.3747E-03 0.1592E-01 0.1592E-01 - 0.1236E+00 0.1581E-01 0.3832E-03 0.1576E-01 0.1576E-01 - 0.1242E+00 0.1528E-01 0.3865E-03 0.1559E-01 0.1559E-01 - 0.1247E+00 0.1532E-01 0.3897E-03 0.1543E-01 0.1543E-01 - 0.1253E+00 0.1507E-01 0.3815E-03 0.1527E-01 0.1527E-01 - 0.1259E+00 0.1520E-01 0.3803E-03 0.1511E-01 0.1511E-01 - 0.1265E+00 0.1478E-01 0.3763E-03 0.1495E-01 0.1495E-01 - 0.1271E+00 0.1545E-01 0.3790E-03 0.1479E-01 0.1479E-01 - 0.1276E+00 0.1444E-01 0.3822E-03 0.1463E-01 0.1463E-01 - 0.1282E+00 0.1458E-01 0.3798E-03 0.1447E-01 0.1447E-01 - 0.1288E+00 0.1445E-01 0.3791E-03 0.1432E-01 0.1432E-01 - 0.1294E+00 0.1415E-01 0.3872E-03 0.1416E-01 0.1416E-01 - 0.1299E+00 0.1380E-01 0.3745E-03 0.1401E-01 0.1401E-01 - 0.1305E+00 0.1358E-01 0.3834E-03 0.1386E-01 0.1386E-01 - 0.1311E+00 0.1359E-01 0.3774E-03 0.1370E-01 0.1370E-01 - 0.1317E+00 0.1290E-01 0.3848E-03 0.1355E-01 0.1355E-01 - 0.1322E+00 0.1365E-01 0.3758E-03 0.1340E-01 0.1340E-01 - 0.1328E+00 0.1356E-01 0.3843E-03 0.1325E-01 0.1325E-01 - 0.1334E+00 0.1274E-01 0.3754E-03 0.1310E-01 0.1310E-01 - 0.1340E+00 0.1307E-01 0.3753E-03 0.1295E-01 0.1295E-01 - 0.1346E+00 0.1277E-01 0.3742E-03 0.1281E-01 0.1281E-01 - 0.1351E+00 0.1321E-01 0.3730E-03 0.1266E-01 0.1266E-01 - 0.1357E+00 0.1229E-01 0.3891E-03 0.1252E-01 0.1252E-01 - 0.1363E+00 0.1329E-01 0.3724E-03 0.1237E-01 0.1237E-01 - 0.1369E+00 0.1158E-01 0.3805E-03 0.1223E-01 0.1223E-01 - 0.1374E+00 0.1232E-01 0.3764E-03 0.1209E-01 0.1209E-01 - 0.1380E+00 0.1121E-01 0.3871E-03 0.1195E-01 0.1195E-01 - 0.1386E+00 0.1126E-01 0.3721E-03 0.1181E-01 0.1181E-01 - 0.1392E+00 0.1193E-01 0.3736E-03 0.1167E-01 0.1167E-01 - 0.1398E+00 0.1049E-01 0.3576E-03 0.1153E-01 0.1153E-01 - 0.1403E+00 0.1150E-01 0.3448E-03 0.1139E-01 0.1139E-01 - 0.1409E+00 0.1121E-01 0.3371E-03 0.1126E-01 0.1126E-01 - 0.1415E+00 0.1088E-01 0.3519E-03 0.1112E-01 0.1112E-01 - 0.1421E+00 0.1111E-01 0.3545E-03 0.1099E-01 0.1099E-01 - 0.1426E+00 0.1005E-01 0.3643E-03 0.1085E-01 0.1085E-01 - 0.1432E+00 0.9959E-02 0.3641E-03 0.1072E-01 0.1072E-01 - 0.1438E+00 0.1108E-01 0.3600E-03 0.1059E-01 0.1059E-01 - 0.1444E+00 0.1049E-01 0.3478E-03 0.1046E-01 0.1046E-01 - 0.1449E+00 0.1051E-01 0.3586E-03 0.1033E-01 0.1033E-01 - 0.1455E+00 0.9771E-02 0.3622E-03 0.1020E-01 0.1020E-01 - 0.1461E+00 0.9711E-02 0.3646E-03 0.1008E-01 0.1008E-01 - 0.1467E+00 0.9796E-02 0.3461E-03 0.9951E-02 0.9951E-02 - 0.1473E+00 0.9697E-02 0.3550E-03 0.9827E-02 0.9827E-02 - 0.1478E+00 0.9303E-02 0.3539E-03 0.9703E-02 0.9703E-02 - 0.1484E+00 0.9663E-02 0.3597E-03 0.9580E-02 0.9580E-02 - 0.1490E+00 0.9287E-02 0.3576E-03 0.9459E-02 0.9459E-02 - 0.1496E+00 0.9322E-02 0.3526E-03 0.9338E-02 0.9338E-02 - 0.1501E+00 0.9558E-02 0.3546E-03 0.9219E-02 0.9219E-02 - 0.1507E+00 0.8278E-02 0.3682E-03 0.9100E-02 0.9100E-02 - 0.1513E+00 0.8486E-02 0.3551E-03 0.8983E-02 0.8983E-02 - 0.1519E+00 0.9126E-02 0.3602E-03 0.8867E-02 0.8867E-02 - 0.1524E+00 0.8394E-02 0.3706E-03 0.8751E-02 0.8751E-02 - 0.1530E+00 0.8700E-02 0.3613E-03 0.8637E-02 0.8637E-02 - 0.1536E+00 0.8405E-02 0.3630E-03 0.8524E-02 0.8524E-02 - 0.1542E+00 0.8419E-02 0.3609E-03 0.8412E-02 0.8412E-02 - 0.1548E+00 0.8571E-02 0.3602E-03 0.8301E-02 0.8301E-02 - 0.1553E+00 0.7790E-02 0.3581E-03 0.8191E-02 0.8191E-02 - 0.1559E+00 0.8820E-02 0.3619E-03 0.8082E-02 0.8082E-02 - 0.1565E+00 0.7919E-02 0.3589E-03 0.7974E-02 0.7974E-02 - 0.1571E+00 0.7620E-02 0.3668E-03 0.7867E-02 0.7867E-02 - 0.1576E+00 0.7426E-02 0.3547E-03 0.7761E-02 0.7761E-02 - 0.1582E+00 0.7543E-02 0.3514E-03 0.7656E-02 0.7656E-02 - 0.1588E+00 0.7505E-02 0.3534E-03 0.7552E-02 0.7552E-02 - 0.1594E+00 0.7359E-02 0.3584E-03 0.7449E-02 0.7449E-02 - 0.1599E+00 0.7094E-02 0.3625E-03 0.7348E-02 0.7348E-02 - 0.1605E+00 0.7488E-02 0.3652E-03 0.7247E-02 0.7247E-02 - 0.1611E+00 0.6778E-02 0.3602E-03 0.7147E-02 0.7147E-02 - 0.1617E+00 0.6876E-02 0.3578E-03 0.7049E-02 0.7049E-02 - 0.1623E+00 0.6811E-02 0.3558E-03 0.6951E-02 0.6951E-02 - 0.1628E+00 0.7192E-02 0.3485E-03 0.6855E-02 0.6855E-02 - 0.1634E+00 0.6375E-02 0.3569E-03 0.6759E-02 0.6759E-02 - 0.1640E+00 0.6706E-02 0.3557E-03 0.6665E-02 0.6665E-02 - 0.1646E+00 0.6005E-02 0.3575E-03 0.6571E-02 0.6571E-02 - 0.1651E+00 0.6836E-02 0.3599E-03 0.6479E-02 0.6479E-02 - 0.1657E+00 0.6580E-02 0.3541E-03 0.6387E-02 0.6387E-02 - 0.1663E+00 0.6561E-02 0.3578E-03 0.6297E-02 0.6297E-02 - 0.1669E+00 0.6317E-02 0.3493E-03 0.6208E-02 0.6208E-02 - 0.1675E+00 0.5972E-02 0.3484E-03 0.6119E-02 0.6119E-02 - 0.1680E+00 0.6129E-02 0.3651E-03 0.6032E-02 0.6032E-02 - 0.1686E+00 0.5993E-02 0.3627E-03 0.5945E-02 0.5945E-02 - 0.1692E+00 0.5937E-02 0.3497E-03 0.5860E-02 0.5860E-02 - 0.1698E+00 0.5364E-02 0.3615E-03 0.5776E-02 0.5776E-02 - 0.1703E+00 0.4587E-02 0.3533E-03 0.5692E-02 0.5692E-02 - 0.1709E+00 0.5510E-02 0.3569E-03 0.5610E-02 0.5610E-02 - 0.1715E+00 0.5026E-02 0.3474E-03 0.5528E-02 0.5528E-02 - 0.1721E+00 0.5285E-02 0.3599E-03 0.5448E-02 0.5448E-02 - 0.1726E+00 0.5520E-02 0.3478E-03 0.5368E-02 0.5368E-02 - 0.1732E+00 0.5638E-02 0.3501E-03 0.5290E-02 0.5290E-02 - 0.1738E+00 0.4967E-02 0.3499E-03 0.5212E-02 0.5212E-02 - 0.1744E+00 0.5017E-02 0.3415E-03 0.5136E-02 0.5136E-02 - 0.1749E+00 0.5503E-02 0.3348E-03 0.5060E-02 0.5060E-02 - 0.1755E+00 0.5341E-02 0.3203E-03 0.4985E-02 0.4985E-02 - 0.1761E+00 0.4747E-02 0.3257E-03 0.4911E-02 0.4911E-02 - 0.1767E+00 0.5155E-02 0.3341E-03 0.4839E-02 0.4839E-02 - 0.1773E+00 0.4857E-02 0.3305E-03 0.4767E-02 0.4767E-02 - 0.1778E+00 0.4700E-02 0.3430E-03 0.4696E-02 0.4696E-02 - 0.1784E+00 0.4654E-02 0.3375E-03 0.4626E-02 0.4626E-02 - 0.1790E+00 0.4231E-02 0.3421E-03 0.4557E-02 0.4557E-02 - 0.1796E+00 0.4184E-02 0.3357E-03 0.4488E-02 0.4488E-02 - 0.1801E+00 0.4237E-02 0.3393E-03 0.4421E-02 0.4421E-02 - 0.1807E+00 0.4089E-02 0.3434E-03 0.4355E-02 0.4355E-02 - 0.1813E+00 0.4459E-02 0.3380E-03 0.4289E-02 0.4289E-02 - 0.1819E+00 0.4554E-02 0.3394E-03 0.4225E-02 0.4225E-02 - 0.1824E+00 0.4769E-02 0.3345E-03 0.4161E-02 0.4161E-02 - 0.1830E+00 0.4155E-02 0.3398E-03 0.4098E-02 0.4098E-02 - 0.1836E+00 0.3974E-02 0.3408E-03 0.4036E-02 0.4036E-02 - 0.1842E+00 0.3914E-02 0.3513E-03 0.3975E-02 0.3975E-02 - 0.1848E+00 0.3752E-02 0.3472E-03 0.3915E-02 0.3915E-02 - 0.1853E+00 0.4039E-02 0.3403E-03 0.3856E-02 0.3856E-02 - 0.1859E+00 0.3982E-02 0.3467E-03 0.3797E-02 0.3797E-02 - 0.1865E+00 0.4019E-02 0.3494E-03 0.3739E-02 0.3739E-02 - 0.1871E+00 0.3472E-02 0.3434E-03 0.3683E-02 0.3683E-02 - 0.1876E+00 0.3530E-02 0.3504E-03 0.3627E-02 0.3627E-02 - 0.1882E+00 0.3501E-02 0.3439E-03 0.3572E-02 0.3572E-02 - 0.1888E+00 0.3968E-02 0.3443E-03 0.3517E-02 0.3517E-02 - 0.1894E+00 0.3434E-02 0.3492E-03 0.3464E-02 0.3464E-02 - 0.1899E+00 0.3364E-02 0.3460E-03 0.3411E-02 0.3411E-02 - 0.1905E+00 0.3498E-02 0.3403E-03 0.3359E-02 0.3359E-02 - 0.1911E+00 0.3005E-02 0.3453E-03 0.3308E-02 0.3308E-02 - 0.1917E+00 0.2811E-02 0.3446E-03 0.3258E-02 0.3258E-02 - 0.1923E+00 0.3074E-02 0.3382E-03 0.3208E-02 0.3208E-02 - 0.1928E+00 0.2955E-02 0.3402E-03 0.3159E-02 0.3159E-02 - 0.1934E+00 0.3242E-02 0.3491E-03 0.3111E-02 0.3111E-02 - 0.1940E+00 0.2753E-02 0.3461E-03 0.3064E-02 0.3064E-02 - 0.1946E+00 0.3306E-02 0.3420E-03 0.3018E-02 0.3018E-02 - 0.1951E+00 0.3135E-02 0.3487E-03 0.2972E-02 0.2972E-02 - 0.1957E+00 0.2954E-02 0.3352E-03 0.2927E-02 0.2927E-02 - 0.1963E+00 0.3091E-02 0.3417E-03 0.2883E-02 0.2883E-02 - 0.1969E+00 0.2847E-02 0.3404E-03 0.2839E-02 0.2839E-02 - 0.1974E+00 0.2785E-02 0.3482E-03 0.2796E-02 0.2796E-02 - 0.1980E+00 0.2964E-02 0.3477E-03 0.2754E-02 0.2754E-02 - 0.1986E+00 0.2625E-02 0.3421E-03 0.2713E-02 0.2713E-02 - 0.1992E+00 0.2576E-02 0.3478E-03 0.2672E-02 0.2672E-02 - 0.1998E+00 0.2751E-02 0.3469E-03 0.2632E-02 0.2632E-02 - 0.2003E+00 0.1986E-02 0.3338E-03 0.2593E-02 0.2593E-02 - 0.2009E+00 0.2443E-02 0.3457E-03 0.2554E-02 0.2554E-02 - 0.2015E+00 0.2981E-02 0.3457E-03 0.2516E-02 0.2516E-02 - 0.2021E+00 0.2527E-02 0.3415E-03 0.2479E-02 0.2479E-02 - 0.2026E+00 0.1939E-02 0.3496E-03 0.2442E-02 0.2442E-02 - 0.2032E+00 0.2257E-02 0.3493E-03 0.2406E-02 0.2406E-02 - 0.2038E+00 0.2823E-02 0.3446E-03 0.2371E-02 0.2371E-02 - 0.2044E+00 0.2132E-02 0.3456E-03 0.2336E-02 0.2336E-02 - 0.2049E+00 0.2279E-02 0.3468E-03 0.2302E-02 0.2302E-02 - 0.2055E+00 0.2561E-02 0.3337E-03 0.2269E-02 0.2269E-02 - 0.2061E+00 0.2092E-02 0.3397E-03 0.2236E-02 0.2236E-02 - 0.2067E+00 0.1892E-02 0.3416E-03 0.2203E-02 0.2203E-02 - 0.2072E+00 0.2111E-02 0.3461E-03 0.2172E-02 0.2172E-02 - 0.2078E+00 0.1818E-02 0.3349E-03 0.2141E-02 0.2141E-02 - 0.2084E+00 0.2498E-02 0.3518E-03 0.2110E-02 0.2110E-02 - 0.2090E+00 0.1731E-02 0.3414E-03 0.2080E-02 0.2080E-02 - 0.2096E+00 0.1893E-02 0.3385E-03 0.2051E-02 0.2051E-02 - 0.2101E+00 0.1791E-02 0.3271E-03 0.2022E-02 0.2022E-02 - 0.2107E+00 0.1990E-02 0.3131E-03 0.1994E-02 0.1994E-02 - 0.2113E+00 0.1964E-02 0.3075E-03 0.1966E-02 0.1966E-02 - 0.2119E+00 0.2608E-02 0.3136E-03 0.1939E-02 0.1939E-02 - 0.2124E+00 0.2517E-02 0.3260E-03 0.1913E-02 0.1913E-02 - 0.2130E+00 0.1132E-02 0.3197E-03 0.1887E-02 0.1887E-02 - 0.2136E+00 0.1538E-02 0.3289E-03 0.1861E-02 0.1861E-02 - 0.2142E+00 0.1994E-02 0.3254E-03 0.1836E-02 0.1836E-02 - 0.2147E+00 0.2129E-02 0.3265E-03 0.1812E-02 0.1812E-02 - 0.2153E+00 0.1962E-02 0.3183E-03 0.1788E-02 0.1788E-02 - 0.2159E+00 0.1589E-02 0.3309E-03 0.1764E-02 0.1764E-02 - 0.2165E+00 0.1740E-02 0.3309E-03 0.1741E-02 0.1741E-02 - 0.2170E+00 0.1636E-02 0.3293E-03 0.1719E-02 0.1719E-02 - 0.2176E+00 0.1775E-02 0.3400E-03 0.1696E-02 0.1696E-02 - 0.2182E+00 0.1954E-02 0.3388E-03 0.1675E-02 0.1675E-02 - 0.2188E+00 0.1697E-02 0.3413E-03 0.1654E-02 0.1654E-02 - 0.2194E+00 0.1570E-02 0.3352E-03 0.1633E-02 0.1633E-02 - 0.2199E+00 0.2052E-02 0.3419E-03 0.1613E-02 0.1613E-02 - 0.2205E+00 0.9467E-03 0.3400E-03 0.1593E-02 0.1593E-02 - 0.2211E+00 0.9945E-03 0.3390E-03 0.1574E-02 0.1574E-02 - 0.2217E+00 0.1238E-02 0.3385E-03 0.1555E-02 0.1555E-02 - 0.2222E+00 0.1391E-02 0.3431E-03 0.1536E-02 0.1536E-02 - 0.2228E+00 0.1683E-02 0.3358E-03 0.1518E-02 0.1518E-02 - 0.2234E+00 0.1180E-02 0.3438E-03 0.1500E-02 0.1500E-02 - 0.2240E+00 0.2206E-02 0.3470E-03 0.1483E-02 0.1483E-02 - 0.2245E+00 0.1053E-02 0.3417E-03 0.1466E-02 0.1466E-02 - 0.2251E+00 0.1757E-02 0.3395E-03 0.1449E-02 0.1449E-02 - 0.2257E+00 0.1845E-02 0.3356E-03 0.1433E-02 0.1433E-02 - 0.2263E+00 0.1818E-02 0.3438E-03 0.1417E-02 0.1417E-02 - 0.2268E+00 0.1093E-02 0.3420E-03 0.1402E-02 0.1402E-02 - 0.2274E+00 0.1485E-02 0.3512E-03 0.1387E-02 0.1387E-02 - 0.2280E+00 0.1687E-02 0.3260E-03 0.1372E-02 0.1372E-02 - 0.2286E+00 0.1272E-02 0.3361E-03 0.1358E-02 0.1358E-02 - 0.2292E+00 0.1223E-02 0.3388E-03 0.1344E-02 0.1344E-02 - 0.2297E+00 0.1142E-02 0.3342E-03 0.1330E-02 0.1330E-02 - 0.2303E+00 0.1563E-02 0.3399E-03 0.1317E-02 0.1317E-02 - 0.2309E+00 0.1092E-02 0.3405E-03 0.1304E-02 0.1304E-02 - 0.2315E+00 0.1635E-02 0.3323E-03 0.1291E-02 0.1291E-02 - 0.2320E+00 0.1299E-02 0.3343E-03 0.1279E-02 0.1279E-02 - 0.2326E+00 0.1458E-02 0.3410E-03 0.1266E-02 0.1266E-02 - 0.2332E+00 0.7187E-03 0.3436E-03 0.1255E-02 0.1255E-02 - 0.2338E+00 0.1707E-02 0.3365E-03 0.1243E-02 0.1243E-02 - 0.2343E+00 0.1020E-02 0.3407E-03 0.1232E-02 0.1232E-02 - 0.2349E+00 0.7116E-03 0.3403E-03 0.1221E-02 0.1221E-02 - 0.2355E+00 0.8889E-03 0.3419E-03 0.1210E-02 0.1210E-02 - 0.2361E+00 0.1519E-02 0.3360E-03 0.1200E-02 0.1200E-02 - 0.2366E+00 0.1496E-02 0.3330E-03 0.1190E-02 0.1190E-02 - 0.2372E+00 0.7445E-03 0.3429E-03 0.1180E-02 0.1180E-02 - 0.2378E+00 0.1432E-02 0.3448E-03 0.1170E-02 0.1170E-02 - 0.2384E+00 0.1051E-02 0.3356E-03 0.1161E-02 0.1161E-02 - 0.2389E+00 0.6195E-03 0.3306E-03 0.1152E-02 0.1152E-02 - 0.2395E+00 0.1253E-02 0.3332E-03 0.1143E-02 0.1143E-02 - 0.2401E+00 0.1091E-02 0.3429E-03 0.1134E-02 0.1134E-02 - 0.2407E+00 0.9435E-03 0.3347E-03 0.1126E-02 0.1126E-02 - 0.2413E+00 0.1347E-02 0.3336E-03 0.1117E-02 0.1117E-02 - 0.2418E+00 0.6974E-03 0.3402E-03 0.1109E-02 0.1109E-02 - 0.2424E+00 0.7204E-03 0.3374E-03 0.1102E-02 0.1102E-02 - 0.2430E+00 0.3569E-03 0.3355E-03 0.1094E-02 0.1094E-02 - 0.2436E+00 0.7783E-03 0.3334E-03 0.1087E-02 0.1087E-02 - 0.2441E+00 0.9828E-03 0.3285E-03 0.1079E-02 0.1079E-02 - 0.2447E+00 0.1402E-02 0.3343E-03 0.1072E-02 0.1072E-02 - 0.2453E+00 0.1099E-02 0.3219E-03 0.1066E-02 0.1066E-02 - 0.2459E+00 0.6110E-03 0.3043E-03 0.1059E-02 0.1059E-02 - 0.2464E+00 0.4908E-03 0.2989E-03 0.1052E-02 0.1052E-02 - 0.2470E+00 0.1089E-02 0.3179E-03 0.1046E-02 0.1046E-02 - 0.2476E+00 0.1376E-02 0.3185E-03 0.1040E-02 0.1040E-02 - 0.2482E+00 0.1520E-02 0.3193E-03 0.1034E-02 0.1034E-02 - 0.2487E+00 0.1313E-02 0.3202E-03 0.1028E-02 0.1028E-02 - 0.2493E+00 0.1088E-02 0.3236E-03 0.1023E-02 0.1023E-02 - 0.2499E+00 0.7012E-03 0.3288E-03 0.1017E-02 0.1017E-02 - 0.2505E+00 0.8186E-03 0.3210E-03 0.1012E-02 0.1012E-02 - 0.2510E+00 0.1244E-02 0.3297E-03 0.1007E-02 0.1007E-02 - 0.2516E+00 0.1478E-02 0.3203E-03 0.1002E-02 0.1002E-02 - 0.2522E+00 0.1204E-02 0.3312E-03 0.9967E-03 0.9967E-03 - 0.2528E+00 0.3329E-03 0.3331E-03 0.9919E-03 0.9919E-03 - 0.2533E+00 0.5888E-03 0.3386E-03 0.9872E-03 0.9872E-03 - 0.2539E+00 0.7831E-03 0.3421E-03 0.9826E-03 0.9826E-03 - 0.2545E+00 0.1089E-02 0.3386E-03 0.9782E-03 0.9782E-03 - 0.2551E+00 0.7749E-03 0.3295E-03 0.9739E-03 0.9739E-03 - 0.2557E+00 0.9396E-03 0.3362E-03 0.9697E-03 0.9697E-03 - 0.2562E+00 0.1019E-02 0.3339E-03 0.9656E-03 0.9656E-03 - 0.2568E+00 0.1502E-02 0.3323E-03 0.9616E-03 0.9616E-03 - 0.2574E+00 0.1079E-02 0.3323E-03 0.9577E-03 0.9577E-03 - 0.2580E+00 0.1310E-02 0.3333E-03 0.9539E-03 0.9539E-03 - 0.2585E+00 0.8090E-03 0.3337E-03 0.9502E-03 0.9502E-03 - 0.2591E+00 0.7189E-03 0.3389E-03 0.9466E-03 0.9466E-03 - 0.2597E+00 0.7503E-03 0.3295E-03 0.9430E-03 0.9430E-03 - 0.2603E+00 0.6347E-03 0.3467E-03 0.9396E-03 0.9396E-03 - 0.2608E+00 0.1154E-02 0.3332E-03 0.9362E-03 0.9362E-03 - 0.2614E+00 0.9578E-03 0.3360E-03 0.9330E-03 0.9330E-03 - 0.2620E+00 0.6142E-03 0.3302E-03 0.9297E-03 0.9297E-03 - 0.2626E+00 0.1363E-02 0.3350E-03 0.9266E-03 0.9266E-03 - 0.2631E+00 0.5162E-03 0.3333E-03 0.9235E-03 0.9235E-03 - 0.2637E+00 0.5269E-03 0.3277E-03 0.9205E-03 0.9205E-03 - 0.2643E+00 0.2966E-03 0.3385E-03 0.9176E-03 0.9176E-03 - 0.2649E+00 0.7004E-03 0.3340E-03 0.9147E-03 0.9147E-03 - 0.2654E+00 0.1298E-02 0.3371E-03 0.9119E-03 0.9119E-03 - 0.2660E+00 0.3281E-03 0.3373E-03 0.9091E-03 0.9091E-03 - 0.2666E+00 0.4308E-03 0.3334E-03 0.9064E-03 0.9064E-03 - 0.2672E+00 0.1101E-02 0.3349E-03 0.9037E-03 0.9037E-03 - 0.2677E+00 0.2589E-03 0.3310E-03 0.9011E-03 0.9011E-03 - 0.2683E+00 0.1377E-02 0.3379E-03 0.8985E-03 0.8985E-03 - 0.2689E+00 0.7841E-03 0.3273E-03 0.8959E-03 0.8959E-03 - 0.2695E+00 0.6406E-03 0.3320E-03 0.8934E-03 0.8934E-03 - 0.2701E+00 0.8170E-03 0.3341E-03 0.8910E-03 0.8910E-03 - 0.2706E+00 0.9485E-03 0.3377E-03 0.8885E-03 0.8885E-03 - 0.2712E+00 0.8606E-03 0.3295E-03 0.8861E-03 0.8861E-03 - 0.2718E+00 0.1011E-02 0.3421E-03 0.8838E-03 0.8838E-03 - 0.2724E+00 0.1198E-02 0.3327E-03 0.8815E-03 0.8815E-03 - 0.2729E+00 0.1016E-02 0.3333E-03 0.8791E-03 0.8791E-03 - 0.2735E+00 0.2922E-03 0.3372E-03 0.8769E-03 0.8769E-03 - 0.2741E+00 0.3994E-03 0.3310E-03 0.8746E-03 0.8746E-03 - 0.2747E+00 0.1028E-02 0.3457E-03 0.8724E-03 0.8724E-03 - 0.2752E+00 0.6060E-03 0.3332E-03 0.8701E-03 0.8701E-03 - 0.2758E+00 0.7384E-03 0.3407E-03 0.8679E-03 0.8679E-03 - 0.2764E+00 0.6883E-03 0.3319E-03 0.8658E-03 0.8658E-03 - 0.2770E+00 0.9998E-03 0.3328E-03 0.8636E-03 0.8636E-03 - 0.2775E+00 0.8683E-03 0.3318E-03 0.8614E-03 0.8614E-03 - 0.2781E+00 0.6266E-03 0.3349E-03 0.8593E-03 0.8593E-03 - 0.2787E+00 0.1041E-02 0.3335E-03 0.8572E-03 0.8572E-03 - 0.2793E+00 0.1317E-02 0.3276E-03 0.8550E-03 0.8550E-03 - - Distance distribution function of particle - - - R P(R) ERROR - - 0.0000E+00 0.0000E+00 0.0000E+00 - 0.4000E+00 0.2189E-05 0.1014E-06 - 0.8000E+00 0.4665E-05 0.1887E-06 - 0.1200E+01 0.7424E-05 0.2621E-06 - 0.1600E+01 0.1046E-04 0.3218E-06 - 0.2000E+01 0.1377E-04 0.3684E-06 - 0.2400E+01 0.1735E-04 0.4022E-06 - 0.2800E+01 0.2118E-04 0.4239E-06 - 0.3200E+01 0.2526E-04 0.4343E-06 - 0.3600E+01 0.2957E-04 0.4342E-06 - 0.4000E+01 0.3409E-04 0.4246E-06 - 0.4400E+01 0.3882E-04 0.4067E-06 - 0.4800E+01 0.4374E-04 0.3817E-06 - 0.5200E+01 0.4882E-04 0.3512E-06 - 0.5600E+01 0.5405E-04 0.3174E-06 - 0.6000E+01 0.5941E-04 0.2827E-06 - 0.6400E+01 0.6487E-04 0.2510E-06 - 0.6800E+01 0.7043E-04 0.2271E-06 - 0.7200E+01 0.7605E-04 0.2166E-06 - 0.7600E+01 0.8171E-04 0.2232E-06 - 0.8000E+01 0.8739E-04 0.2462E-06 - 0.8400E+01 0.9306E-04 0.2813E-06 - 0.8800E+01 0.9871E-04 0.3235E-06 - 0.9200E+01 0.1043E-03 0.3689E-06 - 0.9600E+01 0.1098E-03 0.4149E-06 - 0.1000E+02 0.1153E-03 0.4594E-06 - 0.1040E+02 0.1206E-03 0.5010E-06 - 0.1080E+02 0.1258E-03 0.5387E-06 - 0.1120E+02 0.1308E-03 0.5716E-06 - 0.1160E+02 0.1356E-03 0.5992E-06 - 0.1200E+02 0.1403E-03 0.6209E-06 - 0.1240E+02 0.1447E-03 0.6365E-06 - 0.1280E+02 0.1489E-03 0.6459E-06 - 0.1320E+02 0.1528E-03 0.6491E-06 - 0.1360E+02 0.1565E-03 0.6461E-06 - 0.1400E+02 0.1599E-03 0.6373E-06 - 0.1440E+02 0.1630E-03 0.6230E-06 - 0.1480E+02 0.1658E-03 0.6040E-06 - 0.1520E+02 0.1683E-03 0.5809E-06 - 0.1560E+02 0.1705E-03 0.5548E-06 - 0.1600E+02 0.1724E-03 0.5269E-06 - 0.1640E+02 0.1739E-03 0.4989E-06 - 0.1680E+02 0.1751E-03 0.4724E-06 - 0.1720E+02 0.1760E-03 0.4496E-06 - 0.1760E+02 0.1765E-03 0.4328E-06 - 0.1800E+02 0.1767E-03 0.4238E-06 - 0.1840E+02 0.1766E-03 0.4243E-06 - 0.1880E+02 0.1761E-03 0.4345E-06 - 0.1920E+02 0.1753E-03 0.4538E-06 - 0.1960E+02 0.1742E-03 0.4808E-06 - 0.2000E+02 0.1728E-03 0.5134E-06 - 0.2040E+02 0.1711E-03 0.5496E-06 - 0.2080E+02 0.1691E-03 0.5876E-06 - 0.2120E+02 0.1668E-03 0.6258E-06 - 0.2160E+02 0.1642E-03 0.6626E-06 - 0.2200E+02 0.1614E-03 0.6972E-06 - 0.2240E+02 0.1583E-03 0.7283E-06 - 0.2280E+02 0.1550E-03 0.7555E-06 - 0.2320E+02 0.1515E-03 0.7779E-06 - 0.2360E+02 0.1478E-03 0.7952E-06 - 0.2400E+02 0.1439E-03 0.8071E-06 - 0.2440E+02 0.1398E-03 0.8133E-06 - 0.2480E+02 0.1355E-03 0.8139E-06 - 0.2520E+02 0.1311E-03 0.8088E-06 - 0.2560E+02 0.1266E-03 0.7983E-06 - 0.2600E+02 0.1220E-03 0.7828E-06 - 0.2640E+02 0.1172E-03 0.7627E-06 - 0.2680E+02 0.1124E-03 0.7387E-06 - 0.2720E+02 0.1076E-03 0.7117E-06 - 0.2760E+02 0.1027E-03 0.6827E-06 - 0.2800E+02 0.9771E-04 0.6530E-06 - 0.2840E+02 0.9275E-04 0.6243E-06 - 0.2880E+02 0.8779E-04 0.5983E-06 - 0.2920E+02 0.8284E-04 0.5769E-06 - 0.2960E+02 0.7792E-04 0.5623E-06 - 0.3000E+02 0.7304E-04 0.5560E-06 - 0.3040E+02 0.6821E-04 0.5592E-06 - 0.3080E+02 0.6346E-04 0.5723E-06 - 0.3120E+02 0.5879E-04 0.5945E-06 - 0.3160E+02 0.5421E-04 0.6246E-06 - 0.3200E+02 0.4974E-04 0.6607E-06 - 0.3240E+02 0.4539E-04 0.7009E-06 - 0.3280E+02 0.4118E-04 0.7431E-06 - 0.3320E+02 0.3711E-04 0.7854E-06 - 0.3360E+02 0.3319E-04 0.8261E-06 - 0.3400E+02 0.2944E-04 0.8634E-06 - 0.3440E+02 0.2586E-04 0.8957E-06 - 0.3480E+02 0.2247E-04 0.9216E-06 - 0.3520E+02 0.1928E-04 0.9396E-06 - 0.3560E+02 0.1630E-04 0.9483E-06 - 0.3600E+02 0.1353E-04 0.9462E-06 - 0.3640E+02 0.1100E-04 0.9318E-06 - 0.3680E+02 0.8694E-05 0.9038E-06 - 0.3720E+02 0.6640E-05 0.8606E-06 - 0.3760E+02 0.4844E-05 0.8007E-06 - 0.3800E+02 0.3313E-05 0.7225E-06 - 0.3840E+02 0.2059E-05 0.6245E-06 - 0.3880E+02 0.1091E-05 0.5049E-06 - 0.3920E+02 0.4185E-06 0.3621E-06 - 0.3960E+02 0.5158E-07 0.1944E-06 - 0.4000E+02 0.0000E+00 0.0000E+00 - Reciprocal space: Rg = 14.18 , I(0) = 0.4591E-01 - Real space: Rg = 14.18 +- 0.024 I(0) = 0.4591E-01 +- 0.6230E-04 diff --git a/pyproject.toml b/pyproject.toml index 064b589..8749b6c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -51,3 +51,4 @@ denss-regrid = "denss.scripts.denss_regrid:main" denss-generate-reference = "denss.scripts.denss_generate_reference:main" denss-select-enantiomers = "denss.scripts.denss_select_enantiomers:main" denss-select-enantiomer = "denss.scripts.denss_select_enantiomer:main" +denss-all-pa = "denss.scripts.denss_allpa:main"