Commit 1b42d917 authored by Alessandro 's avatar Alessandro

Merge branch 'merging' into 'master'

Finalizing the merging

See merge request !3
parents 85034d61 a89edbca
# This file is machine-generated - editing it directly is not advised # This file is machine-generated - editing it directly is not advised
[[ADerrors]] manifest_format = "2.0"
[[deps.ADerrors]]
deps = ["BDIO", "FFTW", "FastGaussQuadrature", "ForwardDiff", "LaTeXStrings", "LinearAlgebra", "Nettle", "PGFPlotsX", "Plots", "Printf", "QuadGK", "Roots", "Statistics", "Test", "UnicodePlots"] deps = ["BDIO", "FFTW", "FastGaussQuadrature", "ForwardDiff", "LaTeXStrings", "LinearAlgebra", "Nettle", "PGFPlotsX", "Plots", "Printf", "QuadGK", "Roots", "Statistics", "Test", "UnicodePlots"]
git-tree-sha1 = "dbd07b2feb31ec25de3887c3bb704b7056cc682c" git-tree-sha1 = "d000836bc8bfe86f6213501588684cd4a58fa0c9"
repo-rev = "master" repo-rev = "master"
repo-url = "https://gitlab.ift.uam-csic.es/alberto/aderrors.jl" repo-url = "https://gitlab.ift.uam-csic.es/alberto/aderrors.jl.git"
uuid = "5e92007d-7bf1-471c-8ceb-4591b8b567a9" uuid = "5e92007d-7bf1-471c-8ceb-4591b8b567a9"
version = "0.1.0" version = "0.1.0"
[[ANSIColoredPrinters]] [[deps.ANSIColoredPrinters]]
git-tree-sha1 = "574baf8110975760d391c710b6341da1afa48d8c" git-tree-sha1 = "574baf8110975760d391c710b6341da1afa48d8c"
uuid = "a4c015fc-c6ff-483c-b24f-f7ea428134e9" uuid = "a4c015fc-c6ff-483c-b24f-f7ea428134e9"
version = "0.0.1" version = "0.0.1"
[[AbstractFFTs]] <<<<<<< HEAD
deps = ["LinearAlgebra"] [[deps.AbstractFFTs]]
git-tree-sha1 = "485ee0867925449198280d4af84bdb46a2a404d0" deps = ["ChainRulesCore", "LinearAlgebra", "Test"]
git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef"
uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c"
version = "1.0.1" version = "1.5.0"
[[Adapt]] [[deps.AbstractTrees]]
deps = ["LinearAlgebra"] git-tree-sha1 = "faa260e4cb5aba097a73fab382dd4b5819d8ec8c"
git-tree-sha1 = "84918055d15b3114ede17ac6a7182f68870c16f7" uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c"
version = "0.4.4"
[[deps.Adapt]]
deps = ["LinearAlgebra", "Requires"]
git-tree-sha1 = "02f731463748db57cc2ebfbd9fbc9ce8280d3433"
uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
version = "3.3.1" version = "3.7.1"
[[deps.ArgCheck]]
=======
[[AbstractFFTs]]
deps = ["ChainRulesCore", "LinearAlgebra"]
git-tree-sha1 = "69f7020bd72f069c219b5e8c236c1fa90d2cb409"
uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c"
version = "1.2.1"
[[ArgCheck]] [[ArgCheck]]
git-tree-sha1 = "dedbbb2ddb876f899585c4ec4433265e3017215a" >>>>>>> alejandro
git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4"
uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197"
version = "2.1.0" version = "2.3.0"
[[ArgTools]] <<<<<<< HEAD
git-tree-sha1 = "bdf73eec6a88885256f282d48eafcad25d7de494" [[deps.ArgTools]]
uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f"
version = "1.1.1"
[[ArrayInterface]] [[deps.ArrayInterface]]
deps = ["Compat", "IfElse", "LinearAlgebra", "Requires", "SparseArrays", "Static"] deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"]
git-tree-sha1 = "265b06e2b1f6a216e0e8f183d28e4d354eab3220" git-tree-sha1 = "eba0af42241f0cb648806604222bab1e064edb67"
uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9"
version = "3.2.1" version = "7.5.0"
[[deps.Artifacts]]
=======
[[ArgTools]]
uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f"
[[ArrayInterfaceCore]]
deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"]
git-tree-sha1 = "e6cba4aadba7e8a7574ab2ba2fcfb307b4c4b02a"
uuid = "30b0a656-2188-435a-8636-2ec0e6a096e2"
version = "0.1.23"
[[Artifacts]] [[Artifacts]]
deps = ["Pkg"] >>>>>>> alejandro
git-tree-sha1 = "c30985d8821e0cd73870b17b0ed0ce6dc44cb744"
uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33"
version = "1.3.0"
[[BDIO]] [[deps.BDIO]]
deps = ["Documenter", "Nettle"] deps = ["Documenter", "Nettle"]
git-tree-sha1 = "31aa5298af4936ad33dd39f43ef0c3f7c45fb197" git-tree-sha1 = "31aa5298af4936ad33dd39f43ef0c3f7c45fb197"
repo-rev = "master" repo-rev = "master"
...@@ -55,1134 +80,1996 @@ repo-url = "https://gitlab.ift.uam-csic.es/alberto/bdio.jl" ...@@ -55,1134 +80,1996 @@ repo-url = "https://gitlab.ift.uam-csic.es/alberto/bdio.jl"
uuid = "375f315e-f2c4-11e9-2ef9-134f02f79e27" uuid = "375f315e-f2c4-11e9-2ef9-134f02f79e27"
version = "0.1.0" version = "0.1.0"
[[Base64]] [[deps.Base64]]
uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
<<<<<<< HEAD
[[deps.BitFlags]]
git-tree-sha1 = "43b1a4a8f797c1cddadf60499a8a077d4af2cd2d"
uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35"
version = "0.1.7"
[[deps.Bzip2_jll]]
=======
[[BitFlags]]
git-tree-sha1 = "84259bb6172806304b9101094a7cc4bc6f56dbc6"
uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35"
version = "0.1.5"
[[Bzip2_jll]] [[Bzip2_jll]]
>>>>>>> alejandro
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "c3598e525718abcc440f69cc6d5f60dda0a1b61e" git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2"
uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0"
version = "1.0.6+5" version = "1.0.8+0"
<<<<<<< HEAD
[[deps.Cairo_jll]]
deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"]
=======
[[CEnum]]
git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90"
uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82"
version = "0.4.2"
[[Cairo_jll]] [[Cairo_jll]]
deps = ["Artifacts", "Bzip2_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] deps = ["Artifacts", "Bzip2_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"]
git-tree-sha1 = "e2f47f6d8337369411569fd45ae5753ca10394c6" >>>>>>> alejandro
git-tree-sha1 = "4b859a208b2397a7a623a03449e4636bdb17bcf2"
uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a"
version = "1.16.0+6" version = "1.16.1+1"
[[ChainRulesCore]] [[deps.ChainRulesCore]]
deps = ["Compat", "LinearAlgebra", "SparseArrays"] deps = ["Compat", "LinearAlgebra", "SparseArrays"]
git-tree-sha1 = "4c26b4e9e91ca528ea212927326ece5918a04b47" <<<<<<< HEAD
git-tree-sha1 = "e0af648f0692ec1691b5d094b8724ba1346281cf"
uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
version = "1.11.2" version = "1.18.0"
[[deps.ChangesOfVariables]]
deps = ["InverseFunctions", "LinearAlgebra", "Test"]
git-tree-sha1 = "2fba81a302a7be671aefe194f0525ef231104e7f"
uuid = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0"
version = "0.1.8"
[[deps.CodecZlib]]
deps = ["TranscodingStreams", "Zlib_jll"]
git-tree-sha1 = "cd67fc487743b2f0fd4380d4cbd3a24660d0eec8"
uuid = "944b1d66-785c-5afd-91f1-9de20f533193"
version = "0.7.3"
[[deps.ColorSchemes]]
deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"]
git-tree-sha1 = "67c1f244b991cad9b0aa4b7540fb758c2488b129"
uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4"
version = "3.24.0"
=======
git-tree-sha1 = "e7ff6cadf743c098e08fca25c91103ee4303c9bb"
uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
version = "1.15.6"
[[ChangesOfVariables]] [[ChangesOfVariables]]
deps = ["LinearAlgebra", "Test"] deps = ["ChainRulesCore", "LinearAlgebra", "Test"]
git-tree-sha1 = "9a1d594397670492219635b35a3d830b04730d62" git-tree-sha1 = "38f7a08f19d8810338d4f5085211c7dfa5d5bdd8"
uuid = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" uuid = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0"
version = "0.1.1" version = "0.1.4"
[[CodecZlib]]
deps = ["TranscodingStreams", "Zlib_jll"]
git-tree-sha1 = "ded953804d019afa9a3f98981d99b33e3db7b6da"
uuid = "944b1d66-785c-5afd-91f1-9de20f533193"
version = "0.7.0"
[[ColorSchemes]] [[ColorSchemes]]
deps = ["ColorTypes", "Colors", "FixedPointNumbers", "Random"] deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "Random"]
git-tree-sha1 = "a851fec56cb73cfdf43762999ec72eff5b86882a" git-tree-sha1 = "1fd869cc3875b57347f7027521f561cf46d1fcd8"
uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4"
version = "3.15.0" version = "3.19.0"
>>>>>>> alejandro
[[ColorTypes]] [[deps.ColorTypes]]
deps = ["FixedPointNumbers", "Random"] deps = ["FixedPointNumbers", "Random"]
git-tree-sha1 = "024fe24d83e4a5bf5fc80501a314ce0d1aa35597" git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4"
uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f"
version = "0.11.0" version = "0.11.4"
[[Colors]] <<<<<<< HEAD
[[deps.ColorVectorSpace]]
deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"]
git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249"
uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4"
version = "0.10.0"
=======
[[ColorVectorSpace]]
deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "SpecialFunctions", "Statistics", "TensorCore"]
git-tree-sha1 = "d08c20eef1f2cbc6e60fd3612ac4340b89fea322"
uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4"
version = "0.9.9"
>>>>>>> alejandro
[[deps.Colors]]
deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] deps = ["ColorTypes", "FixedPointNumbers", "Reexport"]
git-tree-sha1 = "417b0ed7b8b838aa6ca0a87aadf1bb9eb111ce40" git-tree-sha1 = "fc08e5930ee9a4e03f84bfb5211cb54e7769758a"
uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" uuid = "5ae59095-9a9b-59fe-a467-6f913c188581"
version = "0.12.8" version = "0.12.10"
<<<<<<< HEAD
[[deps.CommonSolve]]
git-tree-sha1 = "0eee5eb66b1cf62cd6ad1b460238e60e4b09400c"
uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2"
version = "0.2.4"
=======
[[CommonSolve]] [[CommonSolve]]
git-tree-sha1 = "68a0743f578349ada8bc911a5cbd5a2ef6ed6d1f" git-tree-sha1 = "332a332c97c7071600984b3c31d9067e1a4e6e25"
uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2"
version = "0.2.0" version = "0.2.1"
>>>>>>> alejandro
[[CommonSubexpressions]] [[deps.CommonSubexpressions]]
deps = ["MacroTools", "Test"] deps = ["MacroTools", "Test"]
git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7"
uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" uuid = "bbf7d656-a473-5ed7-a52c-81e309532950"
version = "0.3.0" version = "0.3.0"
[[Compat]] [[deps.Compat]]
deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "SHA", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"] deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "SHA", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"]
git-tree-sha1 = "dce3e3fea680869eaa0b774b2e8343e9ff442313" <<<<<<< HEAD
git-tree-sha1 = "6c0100a8cf4ed66f66e2039af7cde3357814bad2"
uuid = "34da2185-b29b-5c13-b0c7-acf172513d20"
version = "3.46.2"
[[deps.CompilerSupportLibraries_jll]]
=======
git-tree-sha1 = "78bee250c6826e1cf805a88b7f1e86025275d208"
uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20"
version = "3.40.0" version = "3.46.0"
[[CompilerSupportLibraries_jll]] [[CompilerSupportLibraries_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] >>>>>>> alejandro
git-tree-sha1 = "8e695f735fca77e9708e795eda62afdb869cbb70" deps = ["Artifacts", "Libdl"]
uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae"
version = "0.3.4+0"
[[Conda]] [[deps.ConcurrentUtilities]]
deps = ["Serialization", "Sockets"]
git-tree-sha1 = "5372dbbf8f0bdb8c700db5367132925c0771ef7e"
uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb"
version = "2.2.1"
[[deps.Conda]]
deps = ["Downloads", "JSON", "VersionParsing"] deps = ["Downloads", "JSON", "VersionParsing"]
git-tree-sha1 = "6cdc8832ba11c7695f494c9d9a1c31e90959ce0f" <<<<<<< HEAD
git-tree-sha1 = "8c86e48c0db1564a1d49548d3515ced5d604c408"
uuid = "8f4d0f93-b110-5947-807f-2305c1781a2d" uuid = "8f4d0f93-b110-5947-807f-2305c1781a2d"
version = "1.6.0" version = "1.9.1"
=======
git-tree-sha1 = "6e47d11ea2776bc5627421d59cdcc1296c058071"
uuid = "8f4d0f93-b110-5947-807f-2305c1781a2d"
version = "1.7.0"
>>>>>>> alejandro
[[ConstructionBase]] [[deps.ConstructionBase]]
deps = ["LinearAlgebra"] deps = ["LinearAlgebra"]
git-tree-sha1 = "f74e9d5388b8620b4cee35d4c5a618dd4dc547f4" <<<<<<< HEAD
git-tree-sha1 = "c53fc348ca4d40d7b371e71fd52251839080cbc9"
uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9"
version = "1.3.0" version = "1.5.4"
[[deps.Contour]]
=======
git-tree-sha1 = "fb21ddd70a051d882a1686a5a550990bbe371a95"
uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9"
version = "1.4.1"
[[Contour]] [[Contour]]
deps = ["StaticArrays"] >>>>>>> alejandro
git-tree-sha1 = "9f02045d934dc030edad45944ea80dbd1f0ebea7" git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781"
uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" uuid = "d38c429a-6771-53c6-b99e-75d170b6e991"
version = "0.5.7" version = "0.6.2"
<<<<<<< HEAD
[[deps.Crayons]]
=======
[[Crayons]] [[Crayons]]
git-tree-sha1 = "3f71217b538d7aaee0b69ab47d9b7724ca8afa0d" >>>>>>> alejandro
git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15"
uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f"
version = "4.0.4" version = "4.1.1"
<<<<<<< HEAD
[[deps.DataAPI]]
git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c"
uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a"
version = "1.15.0"
=======
[[DataAPI]] [[DataAPI]]
git-tree-sha1 = "cc70b17275652eb47bc9e5f81635981f13cea5c8" git-tree-sha1 = "46d2680e618f8abd007bce0c3026cb0c4a8f2032"
uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a"
version = "1.9.0" version = "1.12.0"
>>>>>>> alejandro
[[DataStructures]] [[deps.DataStructures]]
deps = ["Compat", "InteractiveUtils", "OrderedCollections"] deps = ["Compat", "InteractiveUtils", "OrderedCollections"]
git-tree-sha1 = "7d9d316f04214f7efdbb6398d545446e246eff02" <<<<<<< HEAD
git-tree-sha1 = "3dbd312d370723b6bb43ba9d02fc36abade4518d"
uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
version = "0.18.15"
=======
git-tree-sha1 = "d1fff3a548102f48987a52a2e0d114fa97d730f0"
uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
version = "0.18.10" version = "0.18.13"
>>>>>>> alejandro
[[DataValueInterfaces]] [[deps.DataValueInterfaces]]
git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6"
uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464"
version = "1.0.0" version = "1.0.0"
[[Dates]] [[deps.Dates]]
deps = ["Printf"] deps = ["Printf"]
uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" uuid = "ade2ca70-3891-5945-98fb-dc099432e06a"
[[DefaultApplication]] [[deps.DefaultApplication]]
deps = ["InteractiveUtils"] deps = ["InteractiveUtils"]
git-tree-sha1 = "fc2b7122761b22c87fec8bf2ea4dc4563d9f8c24" git-tree-sha1 = "c0dfa5a35710a193d83f03124356eef3386688fc"
uuid = "3f0dd361-4fe0-5fc6-8523-80b14ec94d85" uuid = "3f0dd361-4fe0-5fc6-8523-80b14ec94d85"
version = "1.0.0" version = "1.1.0"
[[DelimitedFiles]] [[deps.DelimitedFiles]]
deps = ["Mmap"] deps = ["Mmap"]
uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab"
<<<<<<< HEAD
[[deps.DiffResults]]
=======
[[DiffResults]] [[DiffResults]]
deps = ["StaticArrays"] >>>>>>> alejandro
git-tree-sha1 = "c18e98cba888c6c25d1c3b048e4b3380ca956805" deps = ["StaticArraysCore"]
git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621"
uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5"
version = "1.0.3" version = "1.1.0"
<<<<<<< HEAD
[[deps.DiffRules]]
deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"]
git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272"
uuid = "b552c78f-8df3-52c6-915a-8e097449b14b"
version = "1.15.1"
=======
[[DiffRules]] [[DiffRules]]
deps = ["LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"]
git-tree-sha1 = "d8f468c5cd4d94e86816603f7d18ece910b4aaf1" git-tree-sha1 = "8b7a4d23e22f5d44883671da70865ca98f2ebf9d"
uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" uuid = "b552c78f-8df3-52c6-915a-8e097449b14b"
version = "1.5.0" version = "1.12.0"
>>>>>>> alejandro
[[Distributed]] [[deps.Distributed]]
deps = ["Random", "Serialization", "Sockets"] deps = ["Random", "Serialization", "Sockets"]
uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b"
[[Distributions]] [[deps.Distributions]]
deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SparseArrays", "SpecialFunctions", "Statistics", "StatsBase", "StatsFuns"] deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SparseArrays", "SpecialFunctions", "Statistics", "StatsBase", "StatsFuns"]
git-tree-sha1 = "a837fdf80f333415b69684ba8e8ae6ba76de6aaa" git-tree-sha1 = "a837fdf80f333415b69684ba8e8ae6ba76de6aaa"
uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" uuid = "31c24e10-a181-5473-b8eb-7969acd0382f"
version = "0.24.18" version = "0.24.18"
[[DocStringExtensions]] [[deps.DocStringExtensions]]
deps = ["LibGit2"] deps = ["LibGit2"]
git-tree-sha1 = "b19534d1895d702889b219c382a6e18010797f0b" <<<<<<< HEAD
git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d"
uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
version = "0.8.6" version = "0.9.3"
[[deps.Documenter]]
deps = ["ANSIColoredPrinters", "AbstractTrees", "Base64", "Dates", "DocStringExtensions", "Downloads", "IOCapture", "InteractiveUtils", "JSON", "LibGit2", "Logging", "Markdown", "MarkdownAST", "Pkg", "PrecompileTools", "REPL", "RegistryInstances", "SHA", "Test", "Unicode"]
git-tree-sha1 = "662fb21ae7fad33e044c2b59ece832fdce32c171"
uuid = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
version = "1.1.2"
[[deps.Downloads]]
deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"]
uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6"
[[deps.EpollShim_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "8e9441ee83492030ace98f9789a654a6d0b1f643"
uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43"
version = "0.0.20230411+0"
[[deps.ExceptionUnwrapping]]
deps = ["Test"]
git-tree-sha1 = "e90caa41f5a86296e014e148ee061bd6c3edec96"
uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4"
version = "0.1.9"
[[deps.Expat_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "4558ab818dcceaab612d1bb8c19cee87eda2b83c"
uuid = "2e619515-83b5-522b-bb60-26c02a35a201"
version = "2.5.0+0"
=======
git-tree-sha1 = "c36550cb29cbe373e95b3f40486b9a4148f89ffd"
uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
version = "0.9.2"
[[Documenter]] [[Documenter]]
deps = ["ANSIColoredPrinters", "Base64", "Dates", "DocStringExtensions", "IOCapture", "InteractiveUtils", "JSON", "LibGit2", "Logging", "Markdown", "REPL", "Test", "Unicode"] deps = ["ANSIColoredPrinters", "Base64", "Dates", "DocStringExtensions", "IOCapture", "InteractiveUtils", "JSON", "LibGit2", "Logging", "Markdown", "REPL", "Test", "Unicode"]
git-tree-sha1 = "f425293f7e0acaf9144de6d731772de156676233" git-tree-sha1 = "6030186b00a38e9d0434518627426570aac2ef95"
uuid = "e30172f5-a6a5-5a46-863b-614d45cd2de4" uuid = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
version = "0.27.10" version = "0.27.23"
[[Downloads]] [[Downloads]]
deps = ["ArgTools", "LibCURL", "NetworkOptions"] deps = ["ArgTools", "LibCURL", "NetworkOptions"]
git-tree-sha1 = "cd7f38a6540ce18f53dba40f8e251eeab49871c6"
uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6"
version = "1.5.2"
[[EarCut_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "92d8f9f208637e8d2d28c664051a00569c01493d"
uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5"
version = "2.1.5+1"
[[Expat_jll]] [[Expat_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "1402e52fcda25064f51c77a9655ce8680b76acf0" git-tree-sha1 = "bad72f730e9e91c08d9427d5e8db95478a3c323d"
uuid = "2e619515-83b5-522b-bb60-26c02a35a201" uuid = "2e619515-83b5-522b-bb60-26c02a35a201"
version = "2.2.7+6" version = "2.4.8+0"
>>>>>>> alejandro
[[FFMPEG]] [[deps.FFMPEG]]
deps = ["FFMPEG_jll"] deps = ["FFMPEG_jll"]
git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8"
uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a"
version = "0.4.1" version = "0.4.1"
<<<<<<< HEAD
[[deps.FFMPEG_jll]]
=======
[[FFMPEG_jll]] [[FFMPEG_jll]]
deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "LibVPX_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "Pkg", "Zlib_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] >>>>>>> alejandro
git-tree-sha1 = "3cc57ad0a213808473eafef4845a74766242e05f" deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Pkg", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"]
git-tree-sha1 = "74faea50c1d007c85837327f6775bea60b5492dd"
uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5"
version = "4.3.1+4" version = "4.4.2+2"
<<<<<<< HEAD
[[deps.FFTW]]
deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"]
git-tree-sha1 = "b4fbdd20c889804969571cc589900803edda16b7"
uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341"
version = "1.7.1"
=======
[[FFTW]] [[FFTW]]
deps = ["AbstractFFTs", "FFTW_jll", "IntelOpenMP_jll", "Libdl", "LinearAlgebra", "MKL_jll", "Reexport"] deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"]
git-tree-sha1 = "1b48dbde42f307e48685fa9213d8b9f8c0d87594" git-tree-sha1 = "90630efff0894f8142308e334473eba54c433549"
uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341"
version = "1.3.2" version = "1.5.0"
>>>>>>> alejandro
[[FFTW_jll]] [[deps.FFTW_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "3676abafff7e4ff07bbd2c42b3d8201f31653dcc" git-tree-sha1 = "c6033cc3892d0ef5bb9cd29b7f2f0331ea5184ea"
uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a"
version = "3.3.9+8" version = "3.3.10+0"
[[FastGaussQuadrature]] [[deps.FastGaussQuadrature]]
deps = ["LinearAlgebra", "SpecialFunctions", "StaticArrays"] deps = ["LinearAlgebra", "SpecialFunctions", "StaticArrays"]
git-tree-sha1 = "58d83dd5a78a36205bdfddb82b1bb67682e64487" git-tree-sha1 = "93ff6a4d5e7bfe27732259bfabbdd19940d8af1f"
uuid = "442a2c76-b920-505d-bb47-c5924d526838" uuid = "442a2c76-b920-505d-bb47-c5924d526838"
version = "0.4.9" version = "1.0.0"
<<<<<<< HEAD
[[deps.FileWatching]]
uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee"
[[deps.FillArrays]]
=======
[[FileIO]]
deps = ["Pkg", "Requires", "UUIDs"]
git-tree-sha1 = "7be5f99f7d15578798f338f5433b6c432ea8037b"
uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549"
version = "1.16.0"
[[FillArrays]] [[FillArrays]]
>>>>>>> alejandro
deps = ["LinearAlgebra", "Random", "SparseArrays"] deps = ["LinearAlgebra", "Random", "SparseArrays"]
git-tree-sha1 = "693210145367e7685d8604aee33d9bfb85db8b31" git-tree-sha1 = "693210145367e7685d8604aee33d9bfb85db8b31"
uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" uuid = "1a297f60-69ca-5386-bcde-b61e274b549b"
version = "0.11.9" version = "0.11.9"
<<<<<<< HEAD
[[deps.FiniteDiff]]
deps = ["ArrayInterface", "LinearAlgebra", "Requires", "Setfield", "SparseArrays", "StaticArrays"]
git-tree-sha1 = "c6e4a1fbe73b31a3dea94b1da449503b8830c306"
uuid = "6a86dc24-6348-571c-b903-95158fe2bd41"
version = "2.21.1"
=======
[[FiniteDiff]] [[FiniteDiff]]
deps = ["ArrayInterface", "LinearAlgebra", "Requires", "SparseArrays", "StaticArrays"] deps = ["ArrayInterfaceCore", "LinearAlgebra", "Requires", "Setfield", "SparseArrays", "StaticArrays"]
git-tree-sha1 = "8b3c09b56acaf3c0e581c66638b85c8650ee9dca" git-tree-sha1 = "5a2cff9b6b77b33b89f3d97a4d367747adce647e"
uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" uuid = "6a86dc24-6348-571c-b903-95158fe2bd41"
version = "2.8.1" version = "2.15.0"
>>>>>>> alejandro
[[FixedPointNumbers]] [[deps.FixedPointNumbers]]
deps = ["Statistics"] deps = ["Statistics"]
git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc"
uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93"
version = "0.8.4" version = "0.8.4"
[[Fontconfig_jll]] [[deps.Fontconfig_jll]]
deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Pkg", "Zlib_jll"] deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Pkg", "Zlib_jll"]
git-tree-sha1 = "35895cf184ceaab11fd778b4590144034a167a2f" git-tree-sha1 = "21efd19106a55620a188615da6d3d06cd7f6ee03"
uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" uuid = "a3f928ae-7b40-5064-980b-68af3947d34b"
version = "2.13.1+14" version = "2.13.93+0"
[[Formatting]] [[deps.Formatting]]
deps = ["Printf"] deps = ["Printf"]
git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8"
uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" uuid = "59287772-0a20-5a39-b81b-1366585eb4c0"
version = "0.4.2" version = "0.4.2"
[[ForwardDiff]] [[deps.ForwardDiff]]
deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions", "StaticArrays"] deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions", "StaticArrays"]
git-tree-sha1 = "6406b5112809c08b1baa5703ad274e1dded0652f" <<<<<<< HEAD
git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad"
uuid = "f6369f11-7733-5829-9624-2563aa707210" uuid = "f6369f11-7733-5829-9624-2563aa707210"
version = "0.10.23" version = "0.10.36"
[[deps.FreeType2_jll]]
deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"]
git-tree-sha1 = "d8db6a5a2fe1381c1ea4ef2cab7c69c2de7f9ea0"
uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7"
version = "2.13.1+0"
=======
git-tree-sha1 = "187198a4ed8ccd7b5d99c41b69c679269ea2b2d4"
uuid = "f6369f11-7733-5829-9624-2563aa707210"
version = "0.10.32"
[[FreeType]]
deps = ["CEnum", "FreeType2_jll"]
git-tree-sha1 = "cabd77ab6a6fdff49bfd24af2ebe76e6e018a2b4"
uuid = "b38be410-82b0-50bf-ab77-7b57e271db43"
version = "4.0.0"
[[FreeType2_jll]] [[FreeType2_jll]]
deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"]
git-tree-sha1 = "cbd58c9deb1d304f5a245a0b7eb841a2560cfec6" git-tree-sha1 = "87eb71354d8ec1a96d4a7636bd57a7347dde3ef9"
uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7"
version = "2.10.1+5" version = "2.10.4+0"
>>>>>>> alejandro
[[FriBidi_jll]] [[deps.FriBidi_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "0d20aed5b14dd4c9a2453c1b601d08e1149679cc" git-tree-sha1 = "aa31987c2ba8704e23c6c8ba8a4f769d5d7e4f91"
uuid = "559328eb-81f9-559d-9380-de523a88c83c" uuid = "559328eb-81f9-559d-9380-de523a88c83c"
version = "1.0.5+6" version = "1.0.10+0"
[[Future]] [[deps.Future]]
deps = ["Random"] deps = ["Random"]
uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820"
[[GLFW_jll]] [[deps.GLFW_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"]
git-tree-sha1 = "a199aefead29c3c2638c3571a9993b564109d45a" git-tree-sha1 = "d972031d28c8c8d9d7b41a536ad7bb0c2579caca"
uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89"
version = "3.3.4+0" version = "3.3.8+0"
<<<<<<< HEAD
[[deps.GMP_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "781609d7-10c4-51f6-84f2-b8444358ff6d"
[[deps.GR]]
deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "UUIDs", "p7zip_jll"]
git-tree-sha1 = "27442171f28c952804dede8ff72828a96f2bfc1f"
uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71"
version = "0.72.10"
[[deps.GR_jll]]
deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"]
git-tree-sha1 = "025d171a2847f616becc0f84c8dc62fe18f0f6dd"
uuid = "d2c73de3-f751-5644-a686-071e5b155ba9"
version = "0.72.10+0"
[[deps.Gettext_jll]]
=======
[[GMP_jll]] [[GMP_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "Libdl"]
git-tree-sha1 = "15abc5f976569a1c9d651aff02f7222ef305eb2a"
uuid = "781609d7-10c4-51f6-84f2-b8444358ff6d" uuid = "781609d7-10c4-51f6-84f2-b8444358ff6d"
version = "6.1.2+6"
[[GR]] [[GR]]
deps = ["Base64", "DelimitedFiles", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Printf", "Random", "Serialization", "Sockets", "Test", "UUIDs"] deps = ["Base64", "DelimitedFiles", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Preferences", "Printf", "Random", "Serialization", "Sockets", "Test", "UUIDs"]
git-tree-sha1 = "30f2b340c2fff8410d89bfcdc9c0a6dd661ac5f7" git-tree-sha1 = "00a9d4abadc05b9476e937a5557fcce476b9e547"
uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71"
version = "0.62.1" version = "0.69.5"
[[GR_jll]] [[GR_jll]]
deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Pkg", "Qt5Base_jll", "Zlib_jll", "libpng_jll"] deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Pkg", "Qt5Base_jll", "Zlib_jll", "libpng_jll"]
git-tree-sha1 = "d59e8320c2747553788e4fc42231489cc602fa50" git-tree-sha1 = "bc9f7725571ddb4ab2c4bc74fa397c1c5ad08943"
uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" uuid = "d2c73de3-f751-5644-a686-071e5b155ba9"
version = "0.58.1+0" version = "0.69.1+0"
[[GeometryBasics]]
deps = ["EarCut_jll", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"]
git-tree-sha1 = "58bcdf5ebc057b085e58d95c138725628dd7453c"
uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326"
version = "0.4.1"
[[Gettext_jll]] [[Gettext_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] >>>>>>> alejandro
git-tree-sha1 = "8c14294a079216000a0bdca5ec5a447f073ddc9d" deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"]
git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046"
uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" uuid = "78b55507-aeef-58d4-861c-77aaff3498b1"
version = "0.20.1+7" version = "0.21.0+0"
<<<<<<< HEAD
[[deps.Glib_jll]]
deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"]
git-tree-sha1 = "e94c92c7bf4819685eb80186d51c43e71d4afa17"
uuid = "7746bdde-850d-59dc-9ae8-88ece973131d"
version = "2.76.5+0"
=======
[[Glib_jll]] [[Glib_jll]]
deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE_jll", "Pkg", "Zlib_jll"] deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Pkg", "Zlib_jll"]
git-tree-sha1 = "04690cc5008b38ecbdfede949220bc7d9ba26397" git-tree-sha1 = "fb83fbe02fe57f2c068013aa94bcdf6760d3a7a7"
uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d"
version = "2.59.0+4" version = "2.74.0+1"
[[Grisu]] [[Graphite2_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011"
uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472"
version = "1.3.14+0"
>>>>>>> alejandro
[[deps.Graphite2_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011"
uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472"
version = "1.3.14+0"
[[deps.Grisu]]
git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2"
uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe"
version = "1.0.2" version = "1.0.2"
<<<<<<< HEAD
[[deps.HTTP]]
deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"]
git-tree-sha1 = "5eab648309e2e060198b45820af1a37182de3cce"
uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3"
version = "1.10.0"
[[deps.HarfBuzz_jll]]
=======
[[HTTP]] [[HTTP]]
deps = ["Base64", "Dates", "IniFile", "Logging", "MbedTLS", "NetworkOptions", "Sockets", "URIs"] deps = ["Base64", "CodecZlib", "Dates", "IniFile", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"]
git-tree-sha1 = "0fa77022fe4b511826b39c894c90daf5fce3334a" git-tree-sha1 = "a97d47758e933cd5fe5ea181d178936a9fc60427"
uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3"
version = "0.9.17" version = "1.5.1"
[[HarfBuzz_jll]]
>>>>>>> alejandro
deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"]
git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3"
uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566"
version = "2.8.1+1"
[[IOCapture]] [[deps.IOCapture]]
deps = ["Logging", "Random"] deps = ["Logging", "Random"]
git-tree-sha1 = "f7be53659ab06ddc986428d3a9dcc95f6fa6705a" git-tree-sha1 = "d75853a0bdbfb1ac815478bacd89cd27b550ace6"
uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89"
version = "0.2.2" <<<<<<< HEAD
version = "0.2.3"
[[IfElse]] [[deps.IntelOpenMP_jll]]
git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" =======
uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" version = "0.2.2"
version = "0.1.1"
[[IniFile]] [[IniFile]]
deps = ["Test"] git-tree-sha1 = "f550e6e32074c939295eb5ea6de31849ac2c9625"
git-tree-sha1 = "098e4d2c533924c921f9f9847274f2ad89e018b8"
uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f" uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f"
version = "0.5.0" version = "0.5.1"
[[IntelOpenMP_jll]] [[IntelOpenMP_jll]]
>>>>>>> alejandro
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "d979e54b71da82f3a65b62553da4fc3d18c9004c" git-tree-sha1 = "ad37c091f7d7daf900963171600d7c1c5c3ede32"
uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0"
version = "2018.0.3+2" version = "2023.2.0+0"
[[InteractiveUtils]] [[deps.InteractiveUtils]]
deps = ["Markdown"] deps = ["Markdown"]
uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
[[InverseFunctions]] [[deps.InverseFunctions]]
deps = ["Test"] deps = ["Test"]
git-tree-sha1 = "a7254c0acd8e62f1ac75ad24d5db43f5f19f3c65" <<<<<<< HEAD
git-tree-sha1 = "68772f49f54b479fa88ace904f6127f0a3bb2e46"
uuid = "3587e190-3f89-42d0-90ee-14403ec27112" uuid = "3587e190-3f89-42d0-90ee-14403ec27112"
version = "0.1.2" version = "0.1.12"
=======
git-tree-sha1 = "49510dfcb407e572524ba94aeae2fced1f3feb0f"
uuid = "3587e190-3f89-42d0-90ee-14403ec27112"
version = "0.1.8"
>>>>>>> alejandro
[[IrrationalConstants]] [[deps.IrrationalConstants]]
git-tree-sha1 = "7fd44fd4ff43fc60815f8e764c0f352b83c49151" git-tree-sha1 = "7fd44fd4ff43fc60815f8e764c0f352b83c49151"
uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" uuid = "92d709cd-6900-40b7-9082-c6be49f344b6"
version = "0.1.1" version = "0.1.1"
[[IterTools]] <<<<<<< HEAD
git-tree-sha1 = "05110a2ab1fc5f932622ffea2a003221f4782c18" [[deps.IteratorInterfaceExtensions]]
uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" =======
version = "1.3.0"
[[IteratorInterfaceExtensions]] [[IteratorInterfaceExtensions]]
>>>>>>> alejandro
git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856"
uuid = "82899510-4779-5014-852e-03e436cf321d" uuid = "82899510-4779-5014-852e-03e436cf321d"
version = "1.0.0" version = "1.0.0"
<<<<<<< HEAD
[[deps.JLFzf]]
deps = ["Pipe", "REPL", "Random", "fzf_jll"]
git-tree-sha1 = "9fb0b890adab1c0a4a475d4210d51f228bfc250d"
uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c"
version = "0.1.6"
[[deps.JLLWrappers]]
deps = ["Artifacts", "Preferences"]
git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca"
uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210"
version = "1.5.0"
=======
[[JLFzf]]
deps = ["Pipe", "REPL", "Random", "fzf_jll"]
git-tree-sha1 = "f377670cda23b6b7c1c0b3893e37451c5c1a2185"
uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c"
version = "0.1.5"
[[JLLWrappers]] [[JLLWrappers]]
deps = ["Preferences"] deps = ["Preferences"]
git-tree-sha1 = "642a199af8b68253517b80bd3bfd17eb4e84df6e" git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1"
uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210"
version = "1.3.0" version = "1.4.1"
>>>>>>> alejandro
[[JSON]] [[deps.JSON]]
deps = ["Dates", "Mmap", "Parsers", "Unicode"] deps = ["Dates", "Mmap", "Parsers", "Unicode"]
git-tree-sha1 = "8076680b162ada2a031f707ac7b4953e30667a37" <<<<<<< HEAD
git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a"
uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
version = "0.21.4"
[[deps.JpegTurbo_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "6f2675ef130a300a112286de91973805fcc5ffbc"
uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8"
version = "2.1.91+0"
=======
git-tree-sha1 = "3c837543ddb02250ef42f4738347454f95079d4e"
uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
version = "0.21.2" version = "0.21.3"
[[JpegTurbo_jll]] [[JpegTurbo_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "9aff0587d9603ea0de2c6f6300d9f9492bbefbd3" git-tree-sha1 = "b53380851c6e6664204efb2e62cd24fa5c47e4ba"
uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8"
version = "2.0.1+3" version = "2.1.2+0"
>>>>>>> alejandro
[[LAME_jll]] [[deps.LAME_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "df381151e871f41ee86cee4f5f6fd598b8a68826" git-tree-sha1 = "f6250b16881adf048549549fba48b1161acdac8c"
uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d"
version = "3.100.0+3" version = "3.100.1+0"
[[LZO_jll]] <<<<<<< HEAD
[[deps.LERC_jll]]
=======
[[LERC_jll]]
>>>>>>> alejandro
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "f128cd6cd05ffd6d3df0523ed99b90ff6f9b349a" git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434"
uuid = "88015f11-f218-50d7-93a8-a6af411a945d"
version = "3.0.0+1"
<<<<<<< HEAD
[[deps.LLVMOpenMP_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "f689897ccbe049adb19a065c495e75f372ecd42b"
uuid = "1d63c593-3942-5779-bab2-d838dc0a180e"
version = "15.0.4+0"
=======
>>>>>>> alejandro
[[deps.LZO_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "e5b909bcf985c5e2605737d2ce278ed791b89be6"
uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac"
version = "2.10.0+3" version = "2.10.1+0"
[[LaTeXStrings]] [[deps.LaTeXStrings]]
git-tree-sha1 = "c7aebfecb1a60d59c0fe023a68ec947a208b1e6b" git-tree-sha1 = "c7aebfecb1a60d59c0fe023a68ec947a208b1e6b"
uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f"
version = "1.2.0" version = "1.2.0"
<<<<<<< HEAD
[[deps.Latexify]]
deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Printf", "Requires"]
git-tree-sha1 = "f428ae552340899a935973270b8d98e5a31c49fe"
uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316"
version = "0.16.1"
[[deps.LazilyInitializedFields]]
git-tree-sha1 = "410fe4739a4b092f2ffe36fcb0dcc3ab12648ce1"
uuid = "0e77f7df-68c5-4e49-93ce-4cd80f5598bf"
version = "1.2.1"
[[deps.LazyArtifacts]]
=======
[[Latexify]] [[Latexify]]
deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "Printf", "Requires"] deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Printf", "Requires"]
git-tree-sha1 = "a8f4f279b6fa3c3c4f1adadd78a621b13a506bce" git-tree-sha1 = "ab9aa169d2160129beb241cb2750ca499b4e90e9"
uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316"
version = "0.15.9" version = "0.15.17"
[[LazyArtifacts]] [[LazyArtifacts]]
deps = ["Pkg"] >>>>>>> alejandro
git-tree-sha1 = "4bb5499a1fc437342ea9ab7e319ede5a457c0968" deps = ["Artifacts", "Pkg"]
uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3"
version = "1.3.0"
[[LibCURL]] [[deps.LibCURL]]
deps = ["LibCURL_jll", "MozillaCACerts_jll"] deps = ["LibCURL_jll", "MozillaCACerts_jll"]
git-tree-sha1 = "cdbe7465ab7b52358804713a53c7fe1dac3f8a3f"
uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21"
version = "0.6.3"
<<<<<<< HEAD
[[deps.LibCURL_jll]]
deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"]
uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0"
[[deps.LibGit2]]
deps = ["Base64", "NetworkOptions", "Printf", "SHA"]
uuid = "76f85450-5226-5b5a-8eaa-529ad045b433"
[[deps.LibSSH2_jll]]
deps = ["Artifacts", "Libdl", "MbedTLS_jll"]
uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8"
[[deps.Libdl]]
=======
[[LibCURL_jll]] [[LibCURL_jll]]
deps = ["LibSSH2_jll", "Libdl", "MbedTLS_jll", "Pkg", "Zlib_jll", "nghttp2_jll"] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"]
git-tree-sha1 = "897d962c20031e6012bba7b3dcb7a667170dad17"
uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0"
version = "7.70.0+2"
[[LibGit2]] [[LibGit2]]
deps = ["Printf"] deps = ["Base64", "NetworkOptions", "Printf", "SHA"]
uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" uuid = "76f85450-5226-5b5a-8eaa-529ad045b433"
[[LibSSH2_jll]] [[LibSSH2_jll]]
deps = ["Libdl", "MbedTLS_jll", "Pkg"] deps = ["Artifacts", "Libdl", "MbedTLS_jll"]
git-tree-sha1 = "717705533148132e5466f2924b9a3657b16158e8"
uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8"
version = "1.9.0+3"
[[LibVPX_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "85fcc80c3052be96619affa2fe2e6d2da3908e11"
uuid = "dd192d2f-8180-539f-9fb4-cc70b1dcf69a"
version = "1.9.0+1"
[[Libdl]] [[Libdl]]
>>>>>>> alejandro
uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
[[Libffi_jll]] [[deps.Libffi_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "a2cd088a88c0d37eef7d209fd3d8712febce0d90" git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290"
uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490"
version = "3.2.1+4" version = "3.2.2+1"
[[Libgcrypt_jll]] [[deps.Libgcrypt_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"]
git-tree-sha1 = "b391a18ab1170a2e568f9fb8d83bc7c780cb9999" git-tree-sha1 = "64613c82a59c120435c067c2b809fc61cf5166ae"
uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4"
version = "1.8.5+4" version = "1.8.7+0"
[[Libglvnd_jll]] [[deps.Libglvnd_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"]
git-tree-sha1 = "7739f837d6447403596a75d19ed01fd08d6f56bf" git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733"
uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29"
version = "1.3.0+3" version = "1.6.0+0"
[[Libgpg_error_jll]] [[deps.Libgpg_error_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "ec7f2e8ad5c9fa99fc773376cdbc86d9a5a23cb7" git-tree-sha1 = "c333716e46366857753e273ce6a69ee0945a6db9"
uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8"
version = "1.36.0+3" version = "1.42.0+0"
<<<<<<< HEAD
[[deps.Libiconv_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175"
uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531"
version = "1.17.0+0"
=======
[[Libiconv_jll]] [[Libiconv_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "cba7b560fcc00f8cd770fa85a498cbc1d63ff618" git-tree-sha1 = "42b62845d70a619f063a7da093d995ec8e15e778"
uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531"
version = "1.16.0+8" version = "1.16.1+1"
>>>>>>> alejandro
[[Libmount_jll]] [[deps.Libmount_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "51ad0c01c94c1ce48d5cad629425035ad030bfd5" git-tree-sha1 = "9c30530bf0effd46e15e0fdcf2b8636e78cbbd73"
uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9"
version = "2.34.0+3" version = "2.35.0+0"
<<<<<<< HEAD
[[deps.Libtiff_jll]]
deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"]
git-tree-sha1 = "2da088d113af58221c52828a80378e16be7d037a"
uuid = "89763e89-9b03-5906-acba-b20f662cd828"
version = "4.5.1+1"
=======
[[Libtiff_jll]] [[Libtiff_jll]]
deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Pkg", "Zlib_jll", "Zstd_jll"] deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "Pkg", "Zlib_jll", "Zstd_jll"]
git-tree-sha1 = "291dd857901f94d683973cdf679984cdf73b56d0" git-tree-sha1 = "3eb79b0ca5764d4799c06699573fd8f533259713"
uuid = "89763e89-9b03-5906-acba-b20f662cd828" uuid = "89763e89-9b03-5906-acba-b20f662cd828"
version = "4.1.0+2" version = "4.4.0+0"
>>>>>>> alejandro
[[Libuuid_jll]] [[deps.Libuuid_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "f879ae9edbaa2c74c922e8b85bb83cc84ea1450b" git-tree-sha1 = "7f3efec06033682db852f8b3bc3c1d2b0a0ab066"
uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700"
version = "2.34.0+7" version = "2.36.0+0"
[[LineSearches]] [[deps.LineSearches]]
deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"] deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"]
git-tree-sha1 = "f27132e551e959b3667d8c93eae90973225032dd" git-tree-sha1 = "f27132e551e959b3667d8c93eae90973225032dd"
uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255"
version = "7.1.1" version = "7.1.1"
[[LinearAlgebra]] [[deps.LinearAlgebra]]
deps = ["Libdl"] deps = ["Libdl", "libblastrampoline_jll"]
uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
[[LogExpFunctions]] [[deps.LogExpFunctions]]
deps = ["ChainRulesCore", "ChangesOfVariables", "DocStringExtensions", "InverseFunctions", "IrrationalConstants", "LinearAlgebra"] deps = ["ChainRulesCore", "ChangesOfVariables", "DocStringExtensions", "InverseFunctions", "IrrationalConstants", "LinearAlgebra"]
git-tree-sha1 = "be9eef9f9d78cecb6f262f3c10da151a6c5ab827" <<<<<<< HEAD
git-tree-sha1 = "7d6dd4e9212aebaeed356de34ccf262a3cd415aa"
uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688"
version = "0.3.26"
=======
git-tree-sha1 = "94d9c52ca447e23eac0c0f074effbcd38830deb5"
uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688"
version = "0.3.5" version = "0.3.18"
>>>>>>> alejandro
[[Logging]] [[deps.Logging]]
uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"
<<<<<<< HEAD
[[deps.LoggingExtras]]
deps = ["Dates", "Logging"]
git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075"
uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36"
version = "1.0.3"
[[deps.LsqFit]]
=======
[[LoggingExtras]]
deps = ["Dates", "Logging"]
git-tree-sha1 = "5d4d2d9904227b8bd66386c1138cf4d5ffa826bf"
uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36"
version = "0.4.9"
[[LsqFit]] [[LsqFit]]
>>>>>>> alejandro
deps = ["Distributions", "ForwardDiff", "LinearAlgebra", "NLSolversBase", "OptimBase", "Random", "StatsBase"] deps = ["Distributions", "ForwardDiff", "LinearAlgebra", "NLSolversBase", "OptimBase", "Random", "StatsBase"]
git-tree-sha1 = "0c33987800fbc37edf3a5fd94520e6b06783a63b" git-tree-sha1 = "0c33987800fbc37edf3a5fd94520e6b06783a63b"
uuid = "2fda8390-95c7-5789-9bda-21331edee243" uuid = "2fda8390-95c7-5789-9bda-21331edee243"
version = "0.12.0" version = "0.12.0"
[[MKL_jll]] [[deps.MKL_jll]]
deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"] deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"]
git-tree-sha1 = "5455aef09b40e5020e1520f551fa3135040d4ed0" <<<<<<< HEAD
git-tree-sha1 = "eb006abbd7041c28e0d16260e50a24f8f9104913"
uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7"
version = "2021.1.1+2" version = "2023.2.0+0"
=======
git-tree-sha1 = "2ce8695e1e699b68702c03402672a69f54b8aca9"
uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7"
version = "2022.2.0+0"
>>>>>>> alejandro
[[MacroTools]] [[deps.MacroTools]]
deps = ["Markdown", "Random"] deps = ["Markdown", "Random"]
git-tree-sha1 = "3d3e902b31198a27340d0bf00d6ac452866021cf" <<<<<<< HEAD
git-tree-sha1 = "9ee1618cbf5240e6d4e0371d6f24065083f60c48"
uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09"
version = "0.5.11"
[[deps.MarchingCubes]]
deps = ["PrecompileTools", "StaticArrays"]
git-tree-sha1 = "c8e29e2bacb98c9b6f10445227a8b0402f2f173a"
uuid = "299715c1-40a9-479a-aaf9-4a633d36f717"
version = "0.1.8"
=======
git-tree-sha1 = "42324d08725e200c23d4dfb549e0d5d89dede2d2"
uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09"
version = "0.5.9" version = "0.5.10"
[[Markdown]] [[MarchingCubes]]
deps = ["SnoopPrecompile", "StaticArrays"]
git-tree-sha1 = "ffc66942498a5f0d02b9e7b1b1af0f5873142cdc"
uuid = "299715c1-40a9-479a-aaf9-4a633d36f717"
version = "0.1.4"
>>>>>>> alejandro
[[deps.Markdown]]
deps = ["Base64"] deps = ["Base64"]
uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" uuid = "d6f4376e-aef5-505a-96c1-9c027394607a"
<<<<<<< HEAD
[[deps.MarkdownAST]]
deps = ["AbstractTrees", "Markdown"]
git-tree-sha1 = "465a70f0fc7d443a00dcdc3267a497397b8a3899"
uuid = "d0879d2d-cac2-40c8-9cee-1863dc0c7391"
version = "0.1.2"
[[deps.MbedTLS]]
deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "Random", "Sockets"]
git-tree-sha1 = "03a9b9718f5682ecb107ac9f7308991db4ce395b"
uuid = "739be429-bea8-5141-9913-cc70e7f3736d"
version = "1.1.7"
[[deps.MbedTLS_jll]]
=======
[[MbedTLS]] [[MbedTLS]]
deps = ["Dates", "MbedTLS_jll", "Random", "Sockets"] deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "Random", "Sockets"]
git-tree-sha1 = "1c38e51c3d08ef2278062ebceade0e46cefc96fe" git-tree-sha1 = "6872f9594ff273da6d13c7c1a1545d5a8c7d0c1c"
uuid = "739be429-bea8-5141-9913-cc70e7f3736d" uuid = "739be429-bea8-5141-9913-cc70e7f3736d"
version = "1.0.3" version = "1.1.6"
[[MbedTLS_jll]] [[MbedTLS_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] >>>>>>> alejandro
git-tree-sha1 = "0eef589dd1c26a3ac9d753fe1a8bcad63f956fa6" deps = ["Artifacts", "Libdl"]
uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1"
version = "2.16.8+1"
[[Measures]] [[deps.Measures]]
git-tree-sha1 = "e498ddeee6f9fdb4551ce855a46f54dbd900245f" git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102"
uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e"
version = "0.3.1" version = "0.3.2"
[[Missings]] [[deps.Missings]]
deps = ["DataAPI"] deps = ["DataAPI"]
git-tree-sha1 = "bf210ce90b6c9eed32d25dbcae1ebc565df2687f" git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272"
uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28"
version = "1.0.2" version = "1.1.0"
[[Mmap]] [[deps.Mmap]]
uuid = "a63ad114-7e13-5084-954f-fe012c677804" uuid = "a63ad114-7e13-5084-954f-fe012c677804"
<<<<<<< HEAD
[[deps.MozillaCACerts_jll]]
=======
[[MozillaCACerts_jll]] [[MozillaCACerts_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] >>>>>>> alejandro
git-tree-sha1 = "f1662575f7bf53c73c2bbc763bace4b024de822c"
uuid = "14a3606d-f60d-562e-9121-12d972cd8159" uuid = "14a3606d-f60d-562e-9121-12d972cd8159"
version = "2021.1.19+0"
[[NLSolversBase]] [[deps.NLSolversBase]]
deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"]
git-tree-sha1 = "50310f934e55e5ca3912fb941dec199b49ca9b68" git-tree-sha1 = "a0b464d183da839699f4c79e7606d9d186ec172c"
uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" uuid = "d41bc354-129a-5804-8e4c-c37616107c6c"
version = "7.8.2" version = "7.8.3"
<<<<<<< HEAD
[[deps.NaNMath]]
=======
[[NaNMath]] [[NaNMath]]
git-tree-sha1 = "bfe47e760d60b82b66b61d2d44128b62e3a369fb" >>>>>>> alejandro
git-tree-sha1 = "b086b7ea07f8e38cf122f5016af580881ac914fe"
uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3"
version = "0.3.5" version = "0.3.7"
[[Nettle]] [[deps.Nettle]]
deps = ["Libdl", "Nettle_jll"] deps = ["Libdl", "Nettle_jll"]
git-tree-sha1 = "a68340b9edfd98d0ed96aee8137cb716ea3b6dea" git-tree-sha1 = "6fa48cbae828267848ee32c1bb31d1652e210d7d"
uuid = "49dea1ee-f6fa-5aa6-9a11-8816cee7d4b9" uuid = "49dea1ee-f6fa-5aa6-9a11-8816cee7d4b9"
version = "0.5.1" version = "1.0.0"
[[Nettle_jll]] [[deps.Nettle_jll]]
deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "578f3f3e04c1408fc9cbd0d09b22c20355345a50" git-tree-sha1 = "eca63e3847dad608cfa6a3329b95ef674c7160b4"
uuid = "4c82536e-c426-54e4-b420-14f461c4ed8b" uuid = "4c82536e-c426-54e4-b420-14f461c4ed8b"
version = "3.5.1+0" version = "3.7.2+0"
<<<<<<< HEAD
[[deps.NetworkOptions]]
=======
[[NetworkOptions]] [[NetworkOptions]]
git-tree-sha1 = "ed3157f48a05543cce9b241e1f2815f7e843d96e" >>>>>>> alejandro
uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
version = "1.2.0"
[[Ogg_jll]] [[deps.Ogg_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "a42c0f138b9ebe8b58eba2271c5053773bde52d0" git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f"
uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051"
version = "1.3.4+2" version = "1.3.5+1"
<<<<<<< HEAD
[[deps.OpenBLAS_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"]
uuid = "4536629a-c528-5b80-bd46-f80d51c5b363"
[[deps.OpenLibm_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "05823500-19ac-5b8b-9628-191a04bc5112"
[[deps.OpenSSL]]
deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"]
git-tree-sha1 = "51901a49222b09e3743c65b8847687ae5fc78eb2"
uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c"
version = "1.4.1"
[[deps.OpenSSL_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "a12e56c72edee3ce6b96667745e6cbbe5498f200"
uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95"
version = "1.1.23+0"
=======
[[OpenLibm_jll]] [[OpenLibm_jll]]
deps = ["Libdl", "Pkg"] deps = ["Artifacts", "Libdl"]
git-tree-sha1 = "d22054f66695fe580009c09e765175cbf7f13031"
uuid = "05823500-19ac-5b8b-9628-191a04bc5112" uuid = "05823500-19ac-5b8b-9628-191a04bc5112"
version = "0.7.1+0"
[[OpenSSL]]
deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"]
git-tree-sha1 = "3c3c4a401d267b04942545b1e964a20279587fd7"
uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c"
version = "1.3.0"
[[OpenSSL_jll]] [[OpenSSL_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "71bbbc616a1d710879f5a1021bcba65ffba6ce58" git-tree-sha1 = "e60321e3f2616584ff98f0a4f18d98ae6f89bbb3"
uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95"
version = "1.1.1+6" version = "1.1.17+0"
>>>>>>> alejandro
[[OpenSpecFun_jll]] [[deps.OpenSpecFun_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "9db77584158d0ab52307f8c04f8e7c08ca76b5b3" git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1"
uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e"
version = "0.5.3+4" version = "0.5.5+0"
[[Optim]] [[deps.Optim]]
deps = ["Compat", "FillArrays", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"] deps = ["Compat", "FillArrays", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"]
git-tree-sha1 = "8a8208d3a1b97994d15ebcdae235d332b4a69e78" git-tree-sha1 = "8a8208d3a1b97994d15ebcdae235d332b4a69e78"
uuid = "429524aa-4258-5aef-a3af-852621145aeb" uuid = "429524aa-4258-5aef-a3af-852621145aeb"
version = "1.2.3" version = "1.2.3"
[[OptimBase]] [[deps.OptimBase]]
deps = ["NLSolversBase", "Printf", "Reexport"] deps = ["NLSolversBase", "Printf", "Reexport"]
git-tree-sha1 = "9cb1fee807b599b5f803809e85c81b582d2009d6" git-tree-sha1 = "9cb1fee807b599b5f803809e85c81b582d2009d6"
uuid = "87e2bd06-a317-5318-96d9-3ecbac512eee" uuid = "87e2bd06-a317-5318-96d9-3ecbac512eee"
version = "2.0.2" version = "2.0.2"
[[Opus_jll]] [[deps.Opus_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "f9d57f4126c39565e05a2b0264df99f497fc6f37" git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720"
uuid = "91d4177d-7536-5919-b921-800302f37372" uuid = "91d4177d-7536-5919-b921-800302f37372"
version = "1.3.1+3" version = "1.3.2+0"
[[OrderedCollections]] [[deps.OrderedCollections]]
git-tree-sha1 = "85f8e6578bf1f9ee0d11e7bb1b1456435479d47c" git-tree-sha1 = "2e73fe17cac3c62ad1aebe70d44c963c3cfdc3e3"
uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
version = "1.4.1" version = "1.6.2"
[[PCRE_jll]] <<<<<<< HEAD
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] [[deps.PCRE2_jll]]
git-tree-sha1 = "1b556ad51dceefdbf30e86ffa8f528b73c7df2bb" =======
uuid = "2f80f16e-611a-54ab-bc61-aa92de5b98fc" [[PCRE2_jll]]
version = "8.42.0+4" >>>>>>> alejandro
deps = ["Artifacts", "Libdl"]
uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15"
[[PDMats]] [[deps.PDMats]]
deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"]
git-tree-sha1 = "ee26b350276c51697c9c2d88a072b339f9f03d73" <<<<<<< HEAD
git-tree-sha1 = "66b2fcd977db5329aa35cac121e5b94dd6472198"
uuid = "90014a1f-27ba-587c-ab20-58faa44d9150"
version = "0.11.28"
[[deps.PGFPlotsX]]
deps = ["ArgCheck", "Dates", "DefaultApplication", "DocStringExtensions", "MacroTools", "OrderedCollections", "Parameters", "Requires", "Tables"]
git-tree-sha1 = "3e7a0345b9f37da2cd770a5d47bb5cb6e62c7a81"
uuid = "8314cec4-20b6-5062-9cdb-752b83310925"
version = "1.6.0"
=======
git-tree-sha1 = "cf494dca75a69712a72b80bc48f59dcf3dea63ec"
uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" uuid = "90014a1f-27ba-587c-ab20-58faa44d9150"
version = "0.11.5" version = "0.11.16"
[[PGFPlotsX]] [[PGFPlotsX]]
deps = ["ArgCheck", "DataStructures", "Dates", "DefaultApplication", "DocStringExtensions", "MacroTools", "Parameters", "Requires", "Tables"] deps = ["ArgCheck", "DataStructures", "Dates", "DefaultApplication", "DocStringExtensions", "MacroTools", "Parameters", "Requires", "Tables"]
git-tree-sha1 = "b9b8bbff3d08e2e919a0f568d24ef0a1e1eaab62" git-tree-sha1 = "1d3729f2cd114a8150ce134f697d07f9ef2b9657"
uuid = "8314cec4-20b6-5062-9cdb-752b83310925" uuid = "8314cec4-20b6-5062-9cdb-752b83310925"
version = "1.4.1" version = "1.5.1"
>>>>>>> alejandro
[[Parameters]] [[deps.Parameters]]
deps = ["OrderedCollections", "UnPack"] deps = ["OrderedCollections", "UnPack"]
git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe"
uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a"
version = "0.12.3" version = "0.12.3"
<<<<<<< HEAD
[[deps.Parsers]]
deps = ["Dates", "PrecompileTools", "UUIDs"]
git-tree-sha1 = "716e24b21538abc91f6205fd1d8363f39b442851"
uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
version = "2.7.2"
[[deps.Pipe]]
git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d"
uuid = "b98c9c47-44ae-5843-9183-064241ee97a0"
version = "1.3.0"
[[deps.Pixman_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"]
git-tree-sha1 = "64779bc4c9784fee475689a1752ef4d5747c5e87"
uuid = "30392449-352a-5448-841d-b1acce4e97dc"
version = "0.42.2+0"
[[deps.Pkg]]
deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"]
uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
[[deps.PlotThemes]]
=======
[[Parsers]] [[Parsers]]
deps = ["Dates"] deps = ["Dates"]
git-tree-sha1 = "ae4bbcadb2906ccc085cf52ac286dc1377dceccc" git-tree-sha1 = "6c01a9b494f6d2a9fc180a08b182fcb06f0958a0"
uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
version = "2.1.2" version = "2.4.2"
[[Pipe]]
git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d"
uuid = "b98c9c47-44ae-5843-9183-064241ee97a0"
version = "1.3.0"
[[Pixman_jll]] [[Pixman_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "6a20a83c1ae86416f0a5de605eaea08a552844a3" git-tree-sha1 = "b4f5d02549a10e20780a24fce72bea96b6329e29"
uuid = "30392449-352a-5448-841d-b1acce4e97dc" uuid = "30392449-352a-5448-841d-b1acce4e97dc"
version = "0.40.0+0" version = "0.40.1+0"
[[Pkg]] [[Pkg]]
deps = ["Dates", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "UUIDs"] deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"]
uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
[[PlotThemes]] [[PlotThemes]]
deps = ["PlotUtils", "Requires", "Statistics"] >>>>>>> alejandro
git-tree-sha1 = "a3a964ce9dc7898193536002a6dd892b1b5a6f1d" deps = ["PlotUtils", "Statistics"]
git-tree-sha1 = "1f03a2d339f42dca4a4da149c7e15e9b896ad899"
uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a"
version = "2.0.1" version = "3.1.0"
<<<<<<< HEAD
[[deps.PlotUtils]]
deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "Statistics"]
git-tree-sha1 = "f92e1315dadf8c46561fb9396e525f7200cdc227"
uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043"
version = "1.3.5"
[[deps.Plots]]
deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Preferences", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"]
git-tree-sha1 = "ccee59c6e48e6f2edf8a5b64dc817b6729f99eb5"
uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
version = "1.39.0"
=======
[[PlotUtils]] [[PlotUtils]]
deps = ["ColorSchemes", "Colors", "Dates", "Printf", "Random", "Reexport", "Statistics"] deps = ["ColorSchemes", "Colors", "Dates", "Printf", "Random", "Reexport", "SnoopPrecompile", "Statistics"]
git-tree-sha1 = "b084324b4af5a438cd63619fd006614b3b20b87b" git-tree-sha1 = "21303256d239f6b484977314674aef4bb1fe4420"
uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043"
version = "1.0.15" version = "1.3.1"
[[Plots]] [[Plots]]
deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "GeometryBasics", "JSON", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "PlotThemes", "PlotUtils", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun"] deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SnoopPrecompile", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "Unzip"]
git-tree-sha1 = "d73736030a094e8d24fdf3629ae980217bf1d59d" git-tree-sha1 = "0a56829d264eb1bc910cf7c39ac008b5bcb5a0d9"
uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
version = "1.24.3" version = "1.35.5"
>>>>>>> alejandro
[[PositiveFactorizations]] [[deps.PositiveFactorizations]]
deps = ["LinearAlgebra"] deps = ["LinearAlgebra"]
git-tree-sha1 = "17275485f373e6673f7e7f97051f703ed5b15b20" git-tree-sha1 = "17275485f373e6673f7e7f97051f703ed5b15b20"
uuid = "85a6dd25-e78a-55b7-8502-1745935b8125" uuid = "85a6dd25-e78a-55b7-8502-1745935b8125"
version = "0.2.4" version = "0.2.4"
[[Preferences]] [[deps.PrecompileTools]]
deps = ["Preferences"]
git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f"
uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a"
version = "1.2.0"
[[deps.Preferences]]
deps = ["TOML"] deps = ["TOML"]
git-tree-sha1 = "00cfd92944ca9c760982747e9a1d0d5d86ab1e5a" <<<<<<< HEAD
git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e"
uuid = "21216c6a-2e73-6563-6e65-726566657250" uuid = "21216c6a-2e73-6563-6e65-726566657250"
version = "1.2.2" version = "1.4.1"
=======
git-tree-sha1 = "47e5f437cc0e7ef2ce8406ce1e7e24d44915f88d"
uuid = "21216c6a-2e73-6563-6e65-726566657250"
version = "1.3.0"
>>>>>>> alejandro
[[Printf]] [[deps.Printf]]
deps = ["Unicode"] deps = ["Unicode"]
uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7"
[[PyCall]] [[deps.PyCall]]
deps = ["Conda", "Dates", "Libdl", "LinearAlgebra", "MacroTools", "Serialization", "VersionParsing"] deps = ["Conda", "Dates", "Libdl", "LinearAlgebra", "MacroTools", "Serialization", "VersionParsing"]
git-tree-sha1 = "4ba3651d33ef76e24fef6a598b63ffd1c5e1cd17" <<<<<<< HEAD
git-tree-sha1 = "43d304ac6f0354755f1d60730ece8c499980f7ba"
uuid = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0" uuid = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0"
version = "1.92.5" version = "1.96.1"
=======
git-tree-sha1 = "53b8b07b721b77144a0fbbbc2675222ebf40a02d"
uuid = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0"
version = "1.94.1"
>>>>>>> alejandro
[[PyPlot]] [[deps.PyPlot]]
deps = ["Colors", "LaTeXStrings", "PyCall", "Sockets", "Test", "VersionParsing"] deps = ["Colors", "LaTeXStrings", "PyCall", "Sockets", "Test", "VersionParsing"]
git-tree-sha1 = "67dde2482fe1a72ef62ed93f8c239f947638e5a2" git-tree-sha1 = "67dde2482fe1a72ef62ed93f8c239f947638e5a2"
uuid = "d330b81b-6aea-500a-939a-2ce795aea3ee" uuid = "d330b81b-6aea-500a-939a-2ce795aea3ee"
version = "2.9.0" version = "2.9.0"
<<<<<<< HEAD
[[deps.Qt6Base_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Vulkan_Loader_jll", "Xorg_libSM_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_cursor_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "libinput_jll", "xkbcommon_jll"]
git-tree-sha1 = "7c29f0e8c575428bd84dc3c72ece5178caa67336"
uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56"
version = "6.5.2+2"
=======
[[Qt5Base_jll]] [[Qt5Base_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "xkbcommon_jll"] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "xkbcommon_jll"]
git-tree-sha1 = "16626cfabbf7206d60d84f2bf4725af7b37d4a77" git-tree-sha1 = "c6c0f690d0cc7caddb74cef7aa847b824a16b256"
uuid = "ea2cea3b-5b76-57ae-a6ef-0a8af62496e1" uuid = "ea2cea3b-5b76-57ae-a6ef-0a8af62496e1"
version = "5.15.2+0" version = "5.15.3+1"
>>>>>>> alejandro
[[QuadGK]] [[deps.QuadGK]]
deps = ["DataStructures", "LinearAlgebra"] deps = ["DataStructures", "LinearAlgebra"]
git-tree-sha1 = "78aadffb3efd2155af139781b8a8df1ef279ea39" <<<<<<< HEAD
git-tree-sha1 = "9ebcd48c498668c7fa0e97a9cae873fbee7bfee1"
uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc"
version = "2.4.2" version = "2.9.1"
[[deps.REPL]]
=======
git-tree-sha1 = "3c009334f45dfd546a16a57960a821a1a023d241"
uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc"
version = "2.5.0"
[[REPL]] [[REPL]]
deps = ["InteractiveUtils", "Markdown", "Sockets"] >>>>>>> alejandro
deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"]
uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
[[Random]] [[deps.Random]]
deps = ["Serialization"] deps = ["SHA", "Serialization"]
uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
<<<<<<< HEAD
[[deps.RecipesBase]]
deps = ["PrecompileTools"]
git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff"
uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
version = "1.3.4"
[[deps.RecipesPipeline]]
deps = ["Dates", "NaNMath", "PlotUtils", "PrecompileTools", "RecipesBase"]
git-tree-sha1 = "45cf9fd0ca5839d06ef333c8201714e888486342"
uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c"
version = "0.6.12"
=======
[[RecipesBase]] [[RecipesBase]]
git-tree-sha1 = "6bf3f380ff52ce0832ddd3a2a7b9538ed1bcca7d" deps = ["SnoopPrecompile"]
git-tree-sha1 = "d12e612bba40d189cead6ff857ddb67bd2e6a387"
uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
version = "1.2.1" version = "1.3.1"
[[RecipesPipeline]] [[RecipesPipeline]]
deps = ["Dates", "NaNMath", "PlotUtils", "RecipesBase"] deps = ["Dates", "NaNMath", "PlotUtils", "RecipesBase", "SnoopPrecompile"]
git-tree-sha1 = "7ad0dfa8d03b7bcf8c597f59f5292801730c55b8" git-tree-sha1 = "9b1c0c8e9188950e66fc28f40bfe0f8aac311fe0"
uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c"
version = "0.4.1" version = "0.6.7"
>>>>>>> alejandro
[[Reexport]] [[deps.Reexport]]
git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b"
uuid = "189a3867-3050-52da-a836-e630ba90ab69" uuid = "189a3867-3050-52da-a836-e630ba90ab69"
version = "1.2.2" version = "1.2.2"
<<<<<<< HEAD
[[deps.RegistryInstances]]
deps = ["LazilyInitializedFields", "Pkg", "TOML", "Tar"]
git-tree-sha1 = "ffd19052caf598b8653b99404058fce14828be51"
uuid = "2792f1a3-b283-48e8-9a74-f99dce5104f3"
version = "0.1.0"
[[deps.RelocatableFolders]]
deps = ["SHA", "Scratch"]
git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864"
uuid = "05181044-ff0b-4ac5-8273-598c1e38db00"
version = "1.0.1"
[[deps.Requires]]
=======
[[RelocatableFolders]]
deps = ["SHA", "Scratch"]
git-tree-sha1 = "90bc7a7c96410424509e4263e277e43250c05691"
uuid = "05181044-ff0b-4ac5-8273-598c1e38db00"
version = "1.0.0"
[[Requires]] [[Requires]]
>>>>>>> alejandro
deps = ["UUIDs"] deps = ["UUIDs"]
git-tree-sha1 = "4036a3bd08ac7e968e27c203d45f5fff15020621" git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7"
uuid = "ae029012-a4dd-5104-9daa-d747884805df" uuid = "ae029012-a4dd-5104-9daa-d747884805df"
version = "1.1.3" version = "1.3.0"
[[Rmath]] [[deps.Rmath]]
deps = ["Random", "Rmath_jll"] deps = ["Random", "Rmath_jll"]
git-tree-sha1 = "86c5647b565873641538d8f812c04e4c9dbeb370" <<<<<<< HEAD
git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b"
uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa"
version = "0.7.1"
=======
git-tree-sha1 = "bf3188feca147ce108c76ad82c2792c57abe7b1f"
uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa"
version = "0.6.1" version = "0.7.0"
>>>>>>> alejandro
[[Rmath_jll]] [[deps.Rmath_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "1b7bf41258f6c5c9c31df8c1ba34c1fc88674957" <<<<<<< HEAD
git-tree-sha1 = "6ed52fdd3382cf21947b15e8870ac0ddbff736da"
uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f"
version = "0.4.0+0"
[[deps.Roots]]
deps = ["ChainRulesCore", "CommonSolve", "Printf", "Setfield"]
git-tree-sha1 = "06b5ac80ff1b88bd82df92c1c1875eea3954cd6e"
uuid = "f2b01f46-fcfa-551c-844a-d8ac1e96c665"
version = "2.0.20"
=======
git-tree-sha1 = "68db32dff12bb6127bac73c209881191bf0efbb7"
uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f"
version = "0.2.2+2" version = "0.3.0+0"
[[Roots]] [[Roots]]
deps = ["CommonSolve", "Printf", "Setfield"] deps = ["ChainRulesCore", "CommonSolve", "Printf", "Setfield"]
git-tree-sha1 = "51ee572776905ee34c0568f5efe035d44bf59f74" git-tree-sha1 = "a3db467ce768343235032a1ca0830fc64158dadf"
uuid = "f2b01f46-fcfa-551c-844a-d8ac1e96c665" uuid = "f2b01f46-fcfa-551c-844a-d8ac1e96c665"
version = "1.3.11" version = "2.0.8"
>>>>>>> alejandro
[[SHA]] [[deps.SHA]]
uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce"
[[Scratch]] [[deps.Scratch]]
deps = ["Dates"] deps = ["Dates"]
git-tree-sha1 = "0b4b7f1393cff97c33891da2a0bf69c6ed241fda" <<<<<<< HEAD
git-tree-sha1 = "30449ee12237627992a99d5e30ae63e4d78cd24a"
uuid = "6c6a2e73-6563-6170-7368-637461726353" uuid = "6c6a2e73-6563-6170-7368-637461726353"
version = "1.1.0" version = "1.2.0"
=======
git-tree-sha1 = "f94f779c94e58bf9ea243e77a37e16d9de9126bd"
uuid = "6c6a2e73-6563-6170-7368-637461726353"
version = "1.1.1"
>>>>>>> alejandro
[[Serialization]] [[deps.Serialization]]
uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
<<<<<<< HEAD
[[deps.Setfield]]
=======
[[Setfield]] [[Setfield]]
deps = ["ConstructionBase", "Future", "MacroTools", "Requires"] >>>>>>> alejandro
git-tree-sha1 = "0afd9e6c623e379f593da01f20590bacc26d1d14" deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"]
git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac"
uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46"
version = "0.8.1" version = "1.1.1"
[[SharedArrays]] [[deps.SharedArrays]]
deps = ["Distributed", "Mmap", "Random", "Serialization"] deps = ["Distributed", "Mmap", "Random", "Serialization"]
uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383"
[[Showoff]] [[deps.Showoff]]
deps = ["Dates", "Grisu"] deps = ["Dates", "Grisu"]
git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de"
uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f"
version = "1.0.3" version = "1.0.3"
<<<<<<< HEAD
[[deps.SimpleBufferStream]]
=======
[[SimpleBufferStream]]
>>>>>>> alejandro
git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1"
uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7"
version = "1.1.0"
<<<<<<< HEAD
[[deps.Sockets]]
=======
[[SnoopPrecompile]]
git-tree-sha1 = "f604441450a3c0569830946e5b33b78c928e1a85"
uuid = "66db9d55-30c0-4569-8b51-7e840670fc0c"
version = "1.0.1"
[[Sockets]] [[Sockets]]
>>>>>>> alejandro
uuid = "6462fe0b-24de-5631-8697-dd941f90decc" uuid = "6462fe0b-24de-5631-8697-dd941f90decc"
[[SortingAlgorithms]] [[deps.SortingAlgorithms]]
deps = ["DataStructures"] deps = ["DataStructures"]
git-tree-sha1 = "b3363d7460f7d098ca0912c69b082f75625d7508" git-tree-sha1 = "5165dfb9fd131cf0c6957a3a7605dede376e7b63"
uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c"
version = "1.0.1" version = "1.2.0"
[[SparseArrays]] [[deps.SparseArrays]]
deps = ["LinearAlgebra", "Random"] deps = ["LinearAlgebra", "Random"]
uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
[[SpecialFunctions]] [[deps.SpecialFunctions]]
deps = ["ChainRulesCore", "IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] deps = ["ChainRulesCore", "IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"]
git-tree-sha1 = "f0bccf98e16759818ffc5d97ac3ebf87eb950150" <<<<<<< HEAD
git-tree-sha1 = "6da46b16e6bca4abe1b6c6fa40b94beb0c87f4ac"
uuid = "276daf66-3868-5448-9aa4-cd146d93841b" uuid = "276daf66-3868-5448-9aa4-cd146d93841b"
version = "1.8.1" version = "1.8.8"
[[Static]] [[deps.StaticArrays]]
deps = ["IfElse"] deps = ["LinearAlgebra", "Random", "StaticArraysCore", "Statistics"]
git-tree-sha1 = "e7bc80dc93f50857a5d1e3c8121495852f407e6a" git-tree-sha1 = "0adf069a2a490c47273727e029371b31d44b72b2"
uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" uuid = "90137ffa-7385-5640-81b9-e52037218182"
version = "0.4.0" version = "1.6.5"
=======
git-tree-sha1 = "5d65101b2ed17a8862c4c05639c3ddc7f3d791e1"
uuid = "276daf66-3868-5448-9aa4-cd146d93841b"
version = "1.8.7"
[[StaticArrays]] [[StaticArrays]]
deps = ["LinearAlgebra", "Random", "Statistics"] deps = ["LinearAlgebra", "Random", "StaticArraysCore", "Statistics"]
git-tree-sha1 = "3c76dde64d03699e074ac02eb2e8ba8254d428da" git-tree-sha1 = "f86b3a049e5d05227b10e15dbb315c5b90f14988"
uuid = "90137ffa-7385-5640-81b9-e52037218182" uuid = "90137ffa-7385-5640-81b9-e52037218182"
version = "1.2.13" version = "1.5.9"
[[Statistics]] [[StaticArraysCore]]
git-tree-sha1 = "6b7ba252635a5eff6a0b0664a41ee140a1c9e72a"
uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c"
version = "1.4.0"
>>>>>>> alejandro
[[deps.StaticArraysCore]]
git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d"
uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c"
version = "1.4.2"
[[deps.Statistics]]
deps = ["LinearAlgebra", "SparseArrays"] deps = ["LinearAlgebra", "SparseArrays"]
uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
<<<<<<< HEAD
[[deps.StatsAPI]]
deps = ["LinearAlgebra"]
git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed"
uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0"
version = "1.7.0"
=======
[[StatsAPI]] [[StatsAPI]]
git-tree-sha1 = "0f2aa8e32d511f758a2ce49208181f7733a0936a" deps = ["LinearAlgebra"]
git-tree-sha1 = "f9af7f195fb13589dd2e2d57fdb401717d2eb1f6"
uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0"
version = "1.1.0" version = "1.5.0"
>>>>>>> alejandro
[[StatsBase]] [[deps.StatsBase]]
deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"]
git-tree-sha1 = "2bb0cb32026a66037360606510fca5984ccc6b75" git-tree-sha1 = "d1bf48bfcc554a3761a133fe3a9bb01488e06916"
uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
version = "0.33.13" version = "0.33.21"
[[StatsFuns]] [[deps.StatsFuns]]
deps = ["ChainRulesCore", "InverseFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] deps = ["ChainRulesCore", "InverseFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"]
git-tree-sha1 = "bedb3e17cc1d94ce0e6e66d3afa47157978ba404" git-tree-sha1 = "5950925ff997ed6fb3e985dcce8eb1ba42a0bbe7"
uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c"
version = "0.9.14" version = "0.9.18"
[[StructArrays]]
deps = ["Adapt", "DataAPI", "StaticArrays", "Tables"]
git-tree-sha1 = "2ce41e0d042c60ecd131e9fb7154a3bfadbf50d3"
uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a"
version = "0.6.3"
[[SuiteSparse]] [[deps.SuiteSparse]]
deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"]
uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9"
[[TOML]] [[deps.TOML]]
deps = ["Dates"] deps = ["Dates"]
git-tree-sha1 = "44aaac2d2aec4a850302f9aa69127c74f0c3787e"
uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
version = "1.0.3"
[[TableTraits]] [[deps.TableTraits]]
deps = ["IteratorInterfaceExtensions"] deps = ["IteratorInterfaceExtensions"]
git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39"
uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c"
version = "1.0.1" version = "1.0.1"
<<<<<<< HEAD
[[deps.Tables]]
deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"]
git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d"
uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c"
version = "1.11.1"
[[deps.Tar]]
deps = ["ArgTools", "SHA"]
uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e"
[[deps.TensorCore]]
deps = ["LinearAlgebra"]
git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6"
uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50"
version = "0.1.1"
[[deps.Test]]
deps = ["InteractiveUtils", "Logging", "Random", "Serialization"]
uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
[[deps.TranscodingStreams]]
deps = ["Random", "Test"]
git-tree-sha1 = "49cbf7c74fafaed4c529d47d48c8f7da6a19eb75"
uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa"
version = "0.10.1"
[[deps.URIs]]
git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b"
uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4"
version = "1.5.1"
=======
[[Tables]] [[Tables]]
deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "TableTraits", "Test"] deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits", "Test"]
git-tree-sha1 = "fed34d0e71b91734bf0a7e10eb1bb05296ddbcd0" git-tree-sha1 = "c79322d36826aa2f4fd8ecfa96ddb47b174ac78d"
uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c"
version = "1.6.0" version = "1.10.0"
[[Tar]]
deps = ["ArgTools", "SHA"]
uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e"
[[TensorCore]]
deps = ["LinearAlgebra"]
git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6"
uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50"
version = "0.1.1"
[[Test]] [[Test]]
deps = ["Distributed", "InteractiveUtils", "Logging", "Random"] deps = ["InteractiveUtils", "Logging", "Random", "Serialization"]
uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
[[TranscodingStreams]]
deps = ["Random", "Test"]
git-tree-sha1 = "8a75929dcd3c38611db2f8d08546decb514fcadf"
uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa"
version = "0.9.9"
[[URIs]] [[URIs]]
git-tree-sha1 = "97bbe755a53fe859669cd907f2d96aee8d2c1355" git-tree-sha1 = "e59ecc5a41b000fa94423a578d29290c7266fc10"
uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4"
version = "1.3.0" version = "1.4.0"
>>>>>>> alejandro
[[UUIDs]] [[deps.UUIDs]]
deps = ["Random", "SHA"] deps = ["Random", "SHA"]
uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
[[UnPack]] [[deps.UnPack]]
git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b"
uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed"
version = "1.0.2" version = "1.0.2"
[[Unicode]] [[deps.Unicode]]
uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
[[UnicodeFun]] [[deps.UnicodeFun]]
deps = ["REPL"] deps = ["REPL"]
git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf"
uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1"
version = "0.4.1" version = "0.4.1"
<<<<<<< HEAD
[[deps.UnicodePlots]]
deps = ["ColorSchemes", "ColorTypes", "Contour", "Crayons", "Dates", "LinearAlgebra", "MarchingCubes", "NaNMath", "PrecompileTools", "Printf", "Requires", "SparseArrays", "StaticArrays", "StatsBase"]
git-tree-sha1 = "b96de03092fe4b18ac7e4786bee55578d4b75ae8"
uuid = "b8865327-cd53-5732-bb35-84acbb429228"
version = "3.6.0"
[[deps.Unitful]]
deps = ["ConstructionBase", "Dates", "InverseFunctions", "LinearAlgebra", "Random"]
git-tree-sha1 = "a72d22c7e13fe2de562feda8645aa134712a87ee"
uuid = "1986cc42-f94f-5a68-af5c-568840ba703d"
version = "1.17.0"
[[deps.UnitfulLatexify]]
deps = ["LaTeXStrings", "Latexify", "Unitful"]
git-tree-sha1 = "e2d817cc500e960fdbafcf988ac8436ba3208bfd"
uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728"
version = "1.6.3"
[[deps.Unzip]]
git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78"
uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d"
version = "0.2.0"
[[deps.VersionParsing]]
=======
[[UnicodePlots]] [[UnicodePlots]]
deps = ["Crayons", "Dates", "SparseArrays", "StatsBase"] deps = ["ColorSchemes", "ColorTypes", "Contour", "Crayons", "Dates", "FileIO", "FreeType", "LinearAlgebra", "MarchingCubes", "NaNMath", "Printf", "Requires", "SnoopPrecompile", "SparseArrays", "StaticArrays", "StatsBase", "Unitful"]
git-tree-sha1 = "78f9ced7f2db6d71db9857a3de26a0d7c5cc0853" git-tree-sha1 = "390b2e8e5535f5beb50885d1a1059f460547d3a5"
uuid = "b8865327-cd53-5732-bb35-84acbb429228" uuid = "b8865327-cd53-5732-bb35-84acbb429228"
version = "2.5.0" version = "3.1.6"
[[Unitful]]
deps = ["ConstructionBase", "Dates", "LinearAlgebra", "Random"]
git-tree-sha1 = "d57a4ed70b6f9ff1da6719f5f2713706d57e0d66"
uuid = "1986cc42-f94f-5a68-af5c-568840ba703d"
version = "1.12.0"
[[Unzip]]
git-tree-sha1 = "34db80951901073501137bdbc3d5a8e7bbd06670"
uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d"
version = "0.1.2"
[[VersionParsing]] [[VersionParsing]]
git-tree-sha1 = "e575cf85535c7c3292b4d89d89cc29e8c3098e47" >>>>>>> alejandro
git-tree-sha1 = "58d6e80b4ee071f5efd07fda82cb9fbe17200868"
uuid = "81def892-9a0e-5fdd-b105-ffc91e053289" uuid = "81def892-9a0e-5fdd-b105-ffc91e053289"
version = "1.2.1" version = "1.3.0"
<<<<<<< HEAD
[[deps.Vulkan_Loader_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXrandr_jll", "xkbcommon_jll"]
git-tree-sha1 = "2f0486047a07670caad3a81a075d2e518acc5c59"
uuid = "a44049a8-05dd-5a78-86c9-5fde0876e88c"
version = "1.3.243+0"
[[deps.Wayland_jll]]
deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"]
git-tree-sha1 = "7558e29847e99bc3f04d6569e82d0f5c54460703"
uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89"
version = "1.21.0+1"
=======
[[Wayland_jll]] [[Wayland_jll]]
deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"]
git-tree-sha1 = "dc643a9b774da1c2781413fd7b6dcd2c56bb8056" git-tree-sha1 = "3e61f0b86f90dacb0bc0e73a0c5a83f6a8636e23"
uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89"
version = "1.17.0+4" version = "1.19.0+0"
>>>>>>> alejandro
[[Wayland_protocols_jll]] [[deps.Wayland_protocols_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "66d72dc6fcc86352f01676e8f0f698562e60510f" git-tree-sha1 = "4528479aa01ee1b3b4cd0e6faef0e04cf16466da"
uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91"
version = "1.23.0+0" version = "1.25.0+0"
<<<<<<< HEAD
[[deps.XML2_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"]
git-tree-sha1 = "24b81b59bd35b3c42ab84fa589086e19be919916"
uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a"
version = "2.11.5+0"
[[deps.XSLT_jll]]
=======
[[XML2_jll]] [[XML2_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"]
git-tree-sha1 = "be0db24f70aae7e2b89f2f3092e93b8606d659a6" git-tree-sha1 = "58443b63fb7e465a8a7210828c91c08b92132dff"
uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a"
version = "2.9.10+3" version = "2.9.14+0"
[[XSLT_jll]] [[XSLT_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Pkg", "XML2_jll"] >>>>>>> alejandro
git-tree-sha1 = "2b3eac39df218762d2d005702d601cd44c997497" deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"]
git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a"
uuid = "aed1982a-8fda-507f-9586-7b0439959a61" uuid = "aed1982a-8fda-507f-9586-7b0439959a61"
version = "1.1.33+4" version = "1.1.34+0"
<<<<<<< HEAD
[[Xorg_libX11_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] [[deps.XZ_jll]]
git-tree-sha1 = "5be649d550f3f4b95308bf0183b82e2582876527" deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "cf2c7de82431ca6f39250d2fc4aacd0daa1675c0"
uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800"
version = "5.4.4+0"
=======
>>>>>>> alejandro
[[deps.Xorg_libICE_jll]]
deps = ["Libdl", "Pkg"]
git-tree-sha1 = "e5becd4411063bdcac16be8b66fc2f9f6f1e8fe5"
uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c"
version = "1.0.10+1"
[[deps.Xorg_libSM_jll]]
deps = ["Libdl", "Pkg", "Xorg_libICE_jll"]
git-tree-sha1 = "4a9d9e4c180e1e8119b5ffc224a7b59d3a7f7e18"
uuid = "c834827a-8449-5923-a945-d239c165b7dd"
version = "1.2.3+0"
[[deps.Xorg_libX11_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"]
git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495"
uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc"
version = "1.6.9+4" version = "1.8.6+0"
[[Xorg_libXau_jll]] [[deps.Xorg_libXau_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "4e490d5c960c314f33885790ed410ff3a94ce67e" git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8"
uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec"
version = "1.0.9+4" version = "1.0.11+0"
[[Xorg_libXcursor_jll]] [[deps.Xorg_libXcursor_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"]
git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd"
uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724"
version = "1.2.0+4" version = "1.2.0+4"
[[Xorg_libXdmcp_jll]] [[deps.Xorg_libXdmcp_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "4fe47bd2247248125c428978740e18a681372dd4" git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7"
uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05"
version = "1.1.3+4" version = "1.1.4+0"
[[Xorg_libXext_jll]] [[deps.Xorg_libXext_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"]
git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3" git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3"
uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3"
version = "1.3.4+4" version = "1.3.4+4"
[[Xorg_libXfixes_jll]] [[deps.Xorg_libXfixes_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"]
git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4"
uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" uuid = "d091e8ba-531a-589c-9de9-94069b037ed8"
version = "5.0.3+4" version = "5.0.3+4"
[[Xorg_libXi_jll]] [[deps.Xorg_libXi_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"]
git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246"
uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" uuid = "a51aa0fd-4e3c-5386-b890-e753decda492"
version = "1.7.10+4" version = "1.7.10+4"
[[Xorg_libXinerama_jll]] [[deps.Xorg_libXinerama_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"]
git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123"
uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" uuid = "d1454406-59df-5ea1-beac-c340f2130bc3"
version = "1.1.4+4" version = "1.1.4+4"
[[Xorg_libXrandr_jll]] [[deps.Xorg_libXrandr_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"]
git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631"
uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484"
version = "1.5.2+4" version = "1.5.2+4"
[[Xorg_libXrender_jll]] [[deps.Xorg_libXrender_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"]
git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96" git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96"
uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa"
version = "0.9.10+4" version = "0.9.10+4"
[[Xorg_libpthread_stubs_jll]] [[deps.Xorg_libpthread_stubs_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "6783737e45d3c59a4a4c4091f5f88cdcf0908cbb" git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9"
uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74"
version = "0.1.0+3" version = "0.1.1+0"
[[Xorg_libxcb_jll]] [[deps.Xorg_libxcb_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"]
git-tree-sha1 = "daf17f441228e7a3833846cd048892861cff16d6" git-tree-sha1 = "b4bfde5d5b652e22b9c790ad00af08b6d042b97d"
uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b"
version = "1.13.0+3" version = "1.15.0+0"
[[Xorg_libxkbfile_jll]] [[deps.Xorg_libxkbfile_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"]
git-tree-sha1 = "926af861744212db0eb001d9e40b5d16292080b2" git-tree-sha1 = "730eeca102434283c50ccf7d1ecdadf521a765a4"
uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a"
version = "1.1.0+4" version = "1.1.2+0"
[[Xorg_xcb_util_image_jll]] [[deps.Xorg_xcb_util_cursor_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"]
git-tree-sha1 = "04341cb870f29dcd5e39055f895c39d016e18ccd"
uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43"
version = "0.1.4+0"
[[deps.Xorg_xcb_util_image_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"]
git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97"
uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b"
version = "0.4.0+1" version = "0.4.0+1"
[[Xorg_xcb_util_jll]] [[deps.Xorg_xcb_util_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"]
git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1"
uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5"
version = "0.4.0+1" version = "0.4.0+1"
[[Xorg_xcb_util_keysyms_jll]] [[deps.Xorg_xcb_util_keysyms_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"]
git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00"
uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7"
version = "0.4.0+1" version = "0.4.0+1"
[[Xorg_xcb_util_renderutil_jll]] [[deps.Xorg_xcb_util_renderutil_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"]
git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e"
uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e"
version = "0.3.9+1" version = "0.3.9+1"
[[Xorg_xcb_util_wm_jll]] [[deps.Xorg_xcb_util_wm_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"]
git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67"
uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361"
version = "0.4.1+1" version = "0.4.1+1"
[[Xorg_xkbcomp_jll]] [[deps.Xorg_xkbcomp_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxkbfile_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxkbfile_jll"]
git-tree-sha1 = "4bcbf660f6c2e714f87e960a171b119d06ee163b" git-tree-sha1 = "330f955bc41bb8f5270a369c473fc4a5a4e4d3cb"
uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4"
version = "1.4.2+4" version = "1.4.6+0"
[[Xorg_xkeyboard_config_jll]] [[deps.Xorg_xkeyboard_config_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xkbcomp_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"]
git-tree-sha1 = "5c8424f8a67c3f2209646d4425f3d415fee5931d" git-tree-sha1 = "691634e5453ad362044e2ad653e79f3ee3bb98c3"
uuid = "33bec58e-1273-512f-9401-5d533626f822" uuid = "33bec58e-1273-512f-9401-5d533626f822"
version = "2.27.0+4" version = "2.39.0+0"
[[Xorg_xtrans_jll]] [[deps.Xorg_xtrans_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "79c31e7844f6ecf779705fbc12146eb190b7d845" git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77"
uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10"
version = "1.4.0+3" version = "1.5.0+0"
[[Zlib_jll]] <<<<<<< HEAD
[[deps.Zlib_jll]]
deps = ["Libdl"]
uuid = "83775a58-1f1d-513f-b197-d71354ab007a"
[[deps.Zstd_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "49ce682769cd5de6c72dcf1b94ed7790cd08974c"
uuid = "3161d3a3-bdf6-5164-811a-617609db77b4"
version = "1.5.5+0"
[[deps.eudev_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "gperf_jll"]
git-tree-sha1 = "431b678a28ebb559d224c0b6b6d01afce87c51ba"
uuid = "35ca27e7-8b34-5b7f-bca9-bdc33f59eb06"
version = "3.2.9+0"
[[deps.fzf_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "47cf33e62e138b920039e8ff9f9841aafe1b733e"
uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09"
version = "0.35.1+0"
[[deps.gperf_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "320228915c8debb12cb434c59057290f0834dbf6" git-tree-sha1 = "3516a5630f741c9eecb3720b1ec9d8edc3ecc033"
uuid = "1a1c6b14-54f6-533d-8383-74cd7377aa70"
version = "3.1.1+0"
[[deps.libaom_jll]]
=======
[[Zlib_jll]]
deps = ["Libdl"]
uuid = "83775a58-1f1d-513f-b197-d71354ab007a" uuid = "83775a58-1f1d-513f-b197-d71354ab007a"
version = "1.2.11+18"
[[Zstd_jll]] [[Zstd_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "2c1332c54931e83f8f94d310fa447fd743e8d600" git-tree-sha1 = "e45044cd873ded54b6a5bac0eb5c971392cf1927"
uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" uuid = "3161d3a3-bdf6-5164-811a-617609db77b4"
version = "1.4.8+0" version = "1.5.2+0"
[[fzf_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "868e669ccb12ba16eaf50cb2957ee2ff61261c56"
uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09"
version = "0.29.0+0"
[[libaom_jll]]
>>>>>>> alejandro
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "3a2ea60308f0996d26f1e5354e10c24e9ef905d4"
uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b"
version = "3.4.0+0"
<<<<<<< HEAD
[[deps.libass_jll]]
=======
[[libass_jll]] [[libass_jll]]
deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] >>>>>>> alejandro
git-tree-sha1 = "acc685bcf777b2202a904cdcb49ad34c2fa1880c" deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"]
git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47"
uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0"
version = "0.14.0+4" version = "0.15.1+0"
<<<<<<< HEAD
[[deps.libblastrampoline_jll]]
deps = ["Artifacts", "Libdl", "OpenBLAS_jll"]
uuid = "8e850b90-86db-534c-a0d3-1478176c7d93"
=======
>>>>>>> alejandro
[[deps.libevdev_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
<<<<<<< HEAD
git-tree-sha1 = "141fe65dc3efabb0b1d5ba74e91f6ad26f84cc22"
uuid = "2db6ffa8-e38f-5e21-84af-90c45d0032cc"
version = "1.11.0+0"
[[libfdk_aac_jll]] [[deps.libfdk_aac_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "7a5780a0d9c6864184b3a2eeeb833a0c871f00ab" git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55"
uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280"
version = "2.0.2+0"
[[deps.libinput_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "eudev_jll", "libevdev_jll", "mtdev_jll"]
git-tree-sha1 = "ad50e5b90f222cfe78aa3d5183a20a12de1322ce"
uuid = "36db933b-70db-51c0-b978-0f229ee0e533"
version = "1.18.0+0"
=======
git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55"
uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280"
version = "0.1.6+4" version = "2.0.2+0"
>>>>>>> alejandro
[[libpng_jll]] [[deps.libpng_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"]
git-tree-sha1 = "6abbc424248097d69c0c87ba50fcb0753f93e0ee" git-tree-sha1 = "94d180a6d2b5e55e447e2d27a29ed04fe79eb30c"
uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f"
version = "1.6.37+6" version = "1.6.38+0"
[[libvorbis_jll]] [[deps.libvorbis_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"]
git-tree-sha1 = "fa14ac25af7a4b8a7f61b287a124df7aab601bcd" git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c"
uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a"
version = "1.3.6+6" version = "1.3.7+1"
<<<<<<< HEAD
[[deps.mtdev_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "814e154bdb7be91d78b6802843f76b6ece642f11"
uuid = "009596ad-96f7-51b1-9f1b-5ce2d5e8a71e"
version = "1.1.6+0"
[[deps.nghttp2_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d"
=======
[[nghttp2_jll]] [[nghttp2_jll]]
deps = ["Libdl", "Pkg"] deps = ["Artifacts", "Libdl"]
git-tree-sha1 = "8e2c44ab4d49ad9518f359ed8b62f83ba8beede4"
uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d"
version = "1.40.0+2"
[[x264_jll]] [[p7zip_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0"
>>>>>>> alejandro
[[deps.p7zip_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0"
[[deps.x264_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "d713c1ce4deac133e3334ee12f4adff07f81778f" git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2"
uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a"
version = "2020.7.14+2" version = "2021.5.5+0"
[[x265_jll]] [[deps.x265_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "487da2f8f2f0c8ee0e83f39d13037d6bbf0a45ab" git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9"
uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76"
version = "3.0.0+3" version = "3.5.0+0"
[[xkbcommon_jll]] [[deps.xkbcommon_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"]
git-tree-sha1 = "ece2350174195bb31de1a63bea3a41ae1aa593b6" <<<<<<< HEAD
git-tree-sha1 = "9c304562909ab2bab0262639bd4f444d7bc2be37"
uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd"
version = "1.4.1+1"
=======
git-tree-sha1 = "9ebfc140cc56e8c2156a15ceac2f0302e327ac0a"
uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd"
version = "0.9.1+5" version = "1.4.1+0"
>>>>>>> alejandro
...@@ -6,6 +6,7 @@ version = "0.1.0" ...@@ -6,6 +6,7 @@ version = "0.1.0"
[deps] [deps]
ADerrors = "5e92007d-7bf1-471c-8ceb-4591b8b567a9" ADerrors = "5e92007d-7bf1-471c-8ceb-4591b8b567a9"
BDIO = "375f315e-f2c4-11e9-2ef9-134f02f79e27" BDIO = "375f315e-f2c4-11e9-2ef9-134f02f79e27"
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
LaTeXStrings = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" LaTeXStrings = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
LsqFit = "2fda8390-95c7-5789-9bda-21331edee243" LsqFit = "2fda8390-95c7-5789-9bda-21331edee243"
......
using ADerrors using ADerrors
#PDG #PDG
const hc = 197.3269804 #MeV fm const hc = 197.3269804 #MeV fm
const M_values = [1869.65, 2010.26, 1968.34, 2112.2, 2980.3, 3096.916, 5279.65] #MD, MD*, MDs, MDs*, \eta_c, J/\psi , MB (MeV) const M_values = [1869.65, 2010.26, 1968.34, 2112.2, 2980.3, 3096.916, 5279.65, 5366.3] #MD, MD*, MDs, MDs*, \eta_c, J/\psi , MB, MBs(MeV)
const M_error = [0.05, 0.05, 0.07, 0.4, 1.2, 0.011, 0.12] const M_error = [0.05, 0.05, 0.07, 0.4, 1.2, 0.011, 0.12, 0.6]
#1802.05243 #1802.05243
const b_values = [3.40, 3.46, 3.55, 3.70, 3.85] const b_values = [3.40, 3.46, 3.55, 3.70, 3.85]
const ZM_data = [1.9684, 1.9935, 2.0253, 2.0630, 2.0814] const ZM_data = [1.9684, 1.9935, 2.0253, 2.0630, 2.0814]
const ZM_error = [35, 27, 33, 38, 45] .* 1e-4 const ZM_error = [35, 27, 33, 38, 45] .* 1e-4
const ZM_tm_data = [2.6047, 2.6181, 2.6312, 2.6339, 2.6127] const ZM_tm_data = [2.6047, 2.6181, 2.6312, 2.6339, 2.6127]
const ZM_tm_error = [42, 33, 42, 48, 55] .* 1e-4 const ZM_tm_error = [42, 33, 42, 48, 55] .* 1e-4
# 1808.09236 #1808.09236
const ZA_data = [0.75642, 0.76169, 0.76979, 0.78378, 0.79667] const ZA_data = [0.75642, 0.76169, 0.76979, 0.78378, 0.79667]
const ZA_err = [72, 93, 43, 47, 47] .*1e-5 const ZA_err = [72, 93, 43, 47, 47] .*1e-5
const ZV_data = [0.72259, 0.72845, 0.73886, 0.75574, 0.77074] const ZV_data = [0.72259, 0.72845, 0.73886, 0.75574, 0.77074]
...@@ -17,41 +17,63 @@ const ZV_err = [74, 89, 46, 48, 49] .* 1e-5 ...@@ -17,41 +17,63 @@ const ZV_err = [74, 89, 46, 48, 49] .* 1e-5
#2005.01352 #2005.01352
const ZS_over_ZP_data = [1.3497, 1.2914, 1.2317, 1.1709, 1.1343] const ZS_over_ZP_data = [1.3497, 1.2914, 1.2317, 1.1709, 1.1343]
const ZS_over_ZP_err = [83, 64, 48, 23, 25 ] .* 1e-4 const ZS_over_ZP_err = [83, 64, 48, 23, 25 ] .* 1e-4
#1608.08900 #2101.02694
const b_values2 = [3.40, 3.46, 3.55, 3.70] # const b_values2 = [3.40, 3.46, 3.55, 3.70]
const t0_data = [2.86, 3.659, 5.164, 8.595] const t0_data = [2.846, 3.634, 5.140, 8.564, 14.064]
const t0_error = [11, 16, 18, 29] .* 1e-3 const t0_error = [8, 13, 21, 24, 63] .* 1e-3
const t0_ph_value = [0.413] # from AS analysis
const t0_ph_error = ones(1,1) .* 5e-3 const t0_ph_value = [0.4118]
const t0_ph_error = ones(1,1) .* 25e-4
## taking into account correlations in zm_tm #2101.10969
const RM_data = [2.335, 1.869, 1.523, 1.267, 1.149]
const RM_err = [31, 19, 14, 16, 18] .* 1e-3
#1906.03445 LCP1 for heavy quarks
const BA_MINUS_BP_data = [-0.324, -0.265, -0.196, -0.119, -0.073]
const BA_MINUS_BP_err = [17, 14, 14, 14, 12] .*1e-3
const ZDATA = [0.8981, 0.9468, 1.0015, 1.0612, 1.0971]
const ZERR = [35, 35, 30, 17, 18 ] .* 1e-4
#1802.05243 taking into account correlations in zm_tm
C = [[0.375369e-6, 0.429197e-6, -0.186896e-5] [0.429197e-6, 0.268393e-4, 0.686776e-4] [-0.186896e-5, 0.686776e-4, 0.212386e-3]] C = [[0.375369e-6, 0.429197e-6, -0.186896e-5] [0.429197e-6, 0.268393e-4, 0.686776e-4] [-0.186896e-5, 0.686776e-4, 0.212386e-3]]
z = cobs([0.348629, 0.020921, 0.070613], C, "z") z = cobs([0.348629, 0.020921, 0.070613], C, "z")
ZP(b) = z[1] + z[2] * (b - 3.79) + z[3] * (b - 3.79)^2 ZP(b) = z[1] + z[2] * (b - 3.79) + z[3] * (b - 3.79)^2
Mrat = uwreal([.9148, 0.0088], "M/mhad") Mrat = uwreal([.9148, 0.0088], "M/mhad")
zm_tm_covar(b) = Mrat / ZP(b) zm_tm_covar(b) = Mrat / ZP(b)
# same for zm wilson
CC = [[0.164635e-4, 0.215658e-4, -0.754203e-4] [0.215658e-4, 0.121072e-2, 0.308890e-2] [-0.754203e-4, 0.308890e-2, 0.953843e-2]]
zz = cobs([2.270073, 0.121644, -0.464575], CC, "zm")
z_covar(b) = value(Mrat) * (zz[1] + zz[2]*(b-3.79) + zz[3]*(b-3.79)^2)
## taking into account correlations in r_m
#Crm = [[3.699760, -2.198586, -1.476913e-3] [-2.198586, 1.306512, 8.776569e-4] [-1.476913e-3, 8.776569e-4, 5.895710e-7] ]
#c_i = cobs([-7.86078, 5.49175, -0.54078], Crm, "c_i in rm")
#rm(b::Float64) = 1.0 + 0.004630*(6/b)^4 * ((1. +c_i[1]*(6/b)^2 + c_i[2]*(6/b)^4) / (1. + c_i[3]*(6/b)^2))
## ##
#Cov matrices #Cov matrices
const C1 = zeros(5, 5) const C1 = zeros(5, 5)
const C2 = zeros(5, 5) const C2 = zeros(5, 5)
const C3 = zeros(4, 4) const C3 = zeros(5, 5)
const C4 = zeros(7, 7) const C4 = zeros(8, 8)
const C5 = zeros(5, 5) const C5 = zeros(5, 5)
const C6 = zeros(5, 5) const C6 = zeros(5, 5)
const C7 = zeros(5, 5) const C7 = zeros(5, 5)
const C8 = zeros(5, 5)
const C9 = zeros(5, 5)
const C10 = zeros(5, 5)
for i = 1:7 for i = 1:8
C4[i, i] = M_error[i] ^ 2 C4[i, i] = M_error[i] ^ 2
if i<=5 if i<=5
C1[i, i] = ZM_error[i] ^ 2 C1[i, i] = ZM_error[i] ^ 2
C2[i, i] = ZM_tm_error[i] ^ 2 C2[i, i] = ZM_tm_error[i] ^ 2
C5[i, i] = ZA_err[i] ^ 2 C5[i, i] = ZA_err[i] ^ 2
C6[i, i] = ZS_over_ZP_err[i] ^ 2 C6[i, i] = ZS_over_ZP_err[i] ^ 2
C7[i, i] = ZV_err[i] ^ 2 C7[i, i] = ZV_err[i] ^ 2
if i <= 4 C8[i, i] = RM_err[i] ^2
C3[i, i] = t0_error[i] ^ 2 C9[i,i] = BA_MINUS_BP_err[i] ^2
end C10[i,i] = ZERR[i] ^2
C3[i, i] = t0_error[i] ^ 2
end end
end end
...@@ -63,12 +85,93 @@ const a_ = t0_ph ./ sqrt.(8 .* t0_) ...@@ -63,12 +85,93 @@ const a_ = t0_ph ./ sqrt.(8 .* t0_)
const M = cobs(M_values, C4, "charmed meson masses") const M = cobs(M_values, C4, "charmed meson masses")
const Za = cobs(ZA_data, C5, "ZA") const Za = cobs(ZA_data, C5, "ZA")
const Zv = cobs(ZV_data, C7, "ZV") const Zv = cobs(ZV_data, C7, "ZV")
const ZS_over_ZP = cobs(ZS_over_ZP_data, C6, "ZS over ZP") const ZS_over_ZP = cobs(ZS_over_ZP_data, C6, "ZS/ZP")
const RM = cobs(RM_data, C8, "rm")
const BA_BP = cobs(BA_MINUS_BP_data, C9, "ba-bp")
const ZZ = cobs(ZDATA, C10, "Z")
zm(beta::Float64) = ZM[b_values .== beta][1]
zm_tm(beta::Float64) = ZM_tm[b_values .== beta][1]
t0(beta::Float64) = t0_[b_values .== beta][1]
a(beta::Float64) = a_[b_values .== beta][1]
za(beta::Float64) = Za[b_values .== beta][1]
zv(beta::Float64) = Zv[b_values .== beta][1]
zs_over_zp(beta::Float64) = ZS_over_ZP[b_values .== beta][1]
rm(beta::Float64) = RM[b_values .== beta][1]
ba_bp(beta::Float64) = BA_BP[b_values .== beta][1]
Z(beta::Float64) = ZZ[b_values .== beta][1]
const ens_db = Dict(
#"ens_id"=>[L, T, beta, dtr, vrw, trunc_cnfg]
"H101" => [32, 96, 3.4, 2, "1.2", [1001,1009]],
"H102r001" => [32, 96, 3.4, 2, "2.0", [997]],
"H102r002" => [32, 96, 3.4, 2, "2.0", [1008]],
"H105" => [32, 96, 3.4, 2, "2.0", [947,1042]],
"H105r005" => [32, 96, 3.4, 1, "1.2", [837]],
"H400" => [32, 96, 3.46, 1, "1.2", [505,540]],
"D450" => [64, 128, 3.46, 1, ["2.0"], [1000]],
"N202" => [48, 128, 3.55, 2, "1.2", [899]],
"N203" => [48, 128, 3.55, 1, "2.0", [756,787]],
"N200" => [48, 128, 3.55, 1, "2.0", [856,856]],
"D200" => [64, 128, 3.55, 2, "2.0", [2001]],
"E250" => [96, 192, 3.55, 1, ["2.0"], [1009]],
"N300" => [48, 128, 3.70, 1, "1.2", [1521]],
"N302" => [48, 128, 3.70, 1, "1.2", [2201]],
"J303" => [64, 192, 3.70, 2, "2.0", [1073]],
"E300" => [96, 192, 3.70, 1, ["1.4"], [1139]],
"J500" => [64, 192, 3.85, 2, ["1.2", "1.4", "2.0"], [789,655,431]],
"J501" => [64, 192, 3.85, 1, ["1.2", "1.4", "2.0"], [1635,1142,1150]]
)
const db = Dict(
"J501" => ["ts001_chunk1", "ts001_chunk3", "ts190_chunk1", "ts190_chunk2"],
"J500" => ["ts001_chunk1", "ts001_chunk2", "ts190_chunk1", "ts190_chunk2"],
"E250" => ["ts001", "ts097"],
"E300" => ["ts001_chunk2", "ts001_chunk3", "ts190_chunk1"],#, "ts001_chunk1"],
"D450" => ["ts001", "ts065_1", "ts065_2"]
)
const db_c = Dict(
"J501" => ["ts001", "ts190"],
"J500" => ["ts001_chunk1", "ts190_chunk2"],
"E250" => ["ts001"],
"E300" => ["ts001_chunk2"],#, "ts001_chunk1"]
"D450" => ["ts001_1", "ts001_2"]
)
const sym_bool = Dict(
"J501" => true,
"J500" => true,
"E250" => false,
"E300" => false,
"D450" => false
)
const flag_s = Dict(
"J303r003" => [324,325,326],
"H105r001" => [100,105,106],
"H105r002" => [1],
"H105r005" => [254, 255, 256, 257, 259, 260, 261, 264, 265, 266, 269, 280, 282, 283, 284, 285, 286, 287, 288, 289, 291, 299, 301, 313, 314, 315, 316, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342]
)
zm(beta::Float64) = ZM[b_values .== beta][1] const ensemble_inv = Dict(
zm_tm(beta::Float64) = ZM_tm[b_values .== beta][1] "H101" => 1,
t0(beta::Float64) = t0_[b_values2 .== beta][1] "H102r001" => 2,
a(beta::Float64) = a_[b_values2 .== beta][1] "H102r002" => 3,
za(beta::Float64) = Za[b_values .== beta][1] "H105" => 4,
zv(beta::Float64) = Zv[b_values .== beta][1] "H105r005" => 5,
zs_over_zp(beta::Float64) = ZS_over_ZP[b_values .== beta][1] "H400" => 6,
\ No newline at end of file "D450" => 7,
"N202" => 8,
"N203" => 9,
"N200" => 10,
"D200" => 11,
"E250" => 12,
"N300" => 13,
"N302" => 14,
"J303" => 15,
"E300" => 16,
"J500" => 17,
"J501" => 18
)
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
module juobs module juobs
using ADerrors, PyPlot, LaTeXStrings, LinearAlgebra, LsqFit, Optim using ADerrors, PyPlot, LaTeXStrings, LinearAlgebra, LsqFit, Optim, ForwardDiff
using Base: Float64 using Base: Float64
import Statistics: mean import Statistics: mean
...@@ -8,10 +8,14 @@ include("juobs_linalg.jl") ...@@ -8,10 +8,14 @@ include("juobs_linalg.jl")
include("juobs_reader.jl") include("juobs_reader.jl")
include("juobs_tools.jl") include("juobs_tools.jl")
include("juobs_obs.jl") include("juobs_obs.jl")
include("../constants/juobs_const.jl")
include("../constants/path_csv.jl")
export read_mesons, read_mesons_correction, read_ms1, read_ms, read_md, truncate_data! export EnsInfo
export ens_db, db, db_c, flag_s, sym_bool, ensemble_inv
export read_mesons, read_mesons_correction, read_mesons_multichunks, read_mesons_correction_multichunks, read_ens_tm, read_ens_tm_sym, read_ens_TSM, read_ens_wil, read_ens_csv, get_corr_tm, get_corr_TSM, get_corr_TSM_multichunks, get_corr_wil, read_ms1, read_ms, read_md, get_YM, get_YM_dYM, truncate_data!, concat_data!
export get_matrix, energies, uwdot, uweigvals, uweigvecs, uweigen, invert, getall_eigvals, getall_eigvecs, hess_reduce, uwcholesky, transpose, tridiag_reduction, make_positive_def, invert_covar_matrix export get_matrix, energies, uwdot, uweigvals, uweigvecs, uweigen, invert, getall_eigvals, getall_eigvecs, hess_reduce, uwcholesky, transpose, tridiag_reduction, make_positive_def, invert_covar_matrix
export corr_obs, corr_obs_TSM, corr_sym, md_sea, md_val, plat_av, lin_fit, x_lin_fit, y_lin_fit, fit_routine, global_fit_routine, bayesian_av export corr_obs, corr_obs_TSM, corr_sym, corr_sym_E250, corr_sym_D450, md_sea, md_val, plat_av, lin_fit, x_lin_fit, y_lin_fit, fit_routine, global_fit_routine, bayesian_av, pvalue, fve, model_av, fit_alg
export meff, mpcac, dec_const, dec_const_pcvc, comp_t0 export meff, mpcac, dec_const, dec_const_w, dec_const_pcvc, comp_t0, get_m, get_m_pbc, get_mpcac, get_f_wil, get_f_wil_pbc, get_f_tm, get_f_tm_pbc, get_w0t0_plat
end # module end # module
...@@ -62,7 +62,7 @@ function get_matrix(corr_diag::Vector{Vector{uwreal}}, corr_upper::Vector{Vector ...@@ -62,7 +62,7 @@ function get_matrix(corr_diag::Vector{Vector{uwreal}}, corr_upper::Vector{Vector
if d != (n*(n-1) / 2) if d != (n*(n-1) / 2)
error("Error get_matrix") error("Error get_matrix")
end end
res = Vector{Matrix}(undef, time) # array with all the matrices at each time step. res = Vector{Matrix{uwreal}}(undef, time) # array with all the matrices at each time step.
aux = Matrix{uwreal}(undef, n, n) aux = Matrix{uwreal}(undef, n, n)
for t in 1:time for t in 1:time
count=0 count=0
...@@ -180,10 +180,10 @@ matrices = [corr_diag, corr_upper] ...@@ -180,10 +180,10 @@ matrices = [corr_diag, corr_upper]
Julia> Julia>
``` ```
""" """
function getall_eigvals(a::Vector{Matrix{uwreal}}, t0::Int64; iter=30 ) function getall_eigvals(a::Vector{Matrix{uwreal}}, t0::Int64; iter=5 )
n = length(a) n = length(a)
res = Vector{Vector{uwreal}}(undef, n) res = Vector{Vector{uwreal}}(undef, n)
[res[i] = uweigvals(a[i], a[t0]) for i=1:n] [res[i] = uweigvals(a[i], a[t0], iter=iter) for i=1:n]
return res return res
end end
...@@ -237,7 +237,7 @@ function uweigvals(a::Matrix{uwreal}, b::Matrix{uwreal}; iter = 5, diag::Bool=t ...@@ -237,7 +237,7 @@ function uweigvals(a::Matrix{uwreal}, b::Matrix{uwreal}; iter = 5, diag::Bool=t
end end
function uweigvals_dim_geq3(a::Matrix{uwreal}; iter = 5, diag::Bool=true) function uweigvals_dim_geq3(a::Matrix{uwreal}; iter = 5, diag::Bool=true)
n = size(a,1) n = size(a,1)
a = tridiag_reduction(a) #a = tridiag_reduction(a)
for k in 1:iter for k in 1:iter
q_k, r_k = qr(a) q_k, r_k = qr(a)
a = uwdot(r_k, q_k) a = uwdot(r_k, q_k)
...@@ -281,7 +281,7 @@ mat_array = get_matrix(diag, upper_diag) ...@@ -281,7 +281,7 @@ mat_array = get_matrix(diag, upper_diag)
evecs = getall_eigvecs(mat_array, 5) evecs = getall_eigvecs(mat_array, 5)
``` ```
""" """
function getall_eigvecs(a::Vector{Matrix}, delta_t; iter=5) function getall_eigvecs(a::Vector{Matrix{uwreal}}, delta_t; iter=5)
n = length(a)-delta_t n = length(a)-delta_t
res = Vector{Matrix{uwreal}}(undef, n) res = Vector{Matrix{uwreal}}(undef, n)
[res[i] = uweigvecs(a[i+delta_t], a[i]) for i=1:n] [res[i] = uweigvecs(a[i+delta_t], a[i]) for i=1:n]
...@@ -315,20 +315,21 @@ res = uweigvecs(a) ##eigenvectors in column ...@@ -315,20 +315,21 @@ res = uweigvecs(a) ##eigenvectors in column
res1 = uweigvecs(a,b) ## generalised eigenvectors in column res1 = uweigvecs(a,b) ## generalised eigenvectors in column
``` ```
""" """
function uweigvecs(a::Matrix{uwreal}; iter = 5) function uweigvecs(a::Matrix{uwreal}; iter = 10)
n = size(a,1) n = size(a,1)
if n > 2 # if n > 2
a, q = tridiag_reduction(a, q_mat=true) # a, q = tridiag_reduction(a, q_mat=true)
end # end
u = idty(n) u = idty(n)
for k in 1:iter for k in 1:iter
q_k, r_k = qr(a) q_k, r_k = qr(a)
a = uwdot(r_k, q_k) a = uwdot(r_k, q_k)
u = uwdot(u, q_k) u = uwdot(u, q_k)
end end
n > 2 ? (return uwdot(q,u)) : (return u) #n > 2 ? (return uwdot(q,u)) : (return u)
return u
end end
function uweigvecs(a::Matrix{uwreal}, b::Matrix{uwreal}; iter = 5) function uweigvecs(a::Matrix{uwreal}, b::Matrix{uwreal}; iter = 10)
c = uwdot(invert(b), a) c = uwdot(invert(b), a)
#return uweigvecs(c, iter=iter) #return uweigvecs(c, iter=iter)
n = size(c,1) n = size(c,1)
...@@ -691,9 +692,15 @@ end ...@@ -691,9 +692,15 @@ end
""" """
Return the transpose of a matrix or vector of uwreals Return the transpose of a matrix or vector of uwreals
""" """
function transpose(a::Matrix{uwreal})
function Base.transpose(a::Matrix{uwreal})
res = similar(a) res = similar(a)
n = size(a, 1) n = size(a, 1)
if size(a,1) == 1
return reshape(a, :,1)
elseif size(a,2) == 1
return reshape(a, 1,:)
end
for i in 1:n-1 for i in 1:n-1
for j in i+1:n for j in i+1:n
temp = a[i,j] temp = a[i,j]
...@@ -705,7 +712,7 @@ function transpose(a::Matrix{uwreal}) ...@@ -705,7 +712,7 @@ function transpose(a::Matrix{uwreal})
res[n,n] = a[n,n] res[n,n] = a[n,n]
return res return res
end end
function transpose(vec::Vector{uwreal}) function Base.transpose(vec::Vector{uwreal})
res = deepcopy(vec) res = deepcopy(vec)
return reshape(res,1,:) return reshape(res,1,:)
end end
...@@ -741,25 +748,37 @@ function idty(n::Int64) ...@@ -741,25 +748,37 @@ function idty(n::Int64)
return res return res
end end
function make_positive_def(A::Matrix) function make_positive_def(A::Matrix; eps::Float64=10^(-14))
B = 0.5 * (A + A') vals, vecs = eigen(Symmetric(A))
U, S, V = svd(B) idx = findall(x-> x<0.0, vals)
H = V * Diagonal(S) * V' vals[idx] .= eps
A_hat = 0.5 * (B + H) return Symmetric(vecs * Diagonal(vals) * vecs')
A_hat = 0.5 * ( A_hat + A_hat') #B = 0.5 * (A + A')
k = 0 #U, S, V = svd(B)
while !isposdef(A_hat) #H = V * Diagonal(S) * V'
mineig = minimum(eigvals(A_hat)) #A_hat = 0.5 * (B + H)
eps = 2.220446049250313e-16 #A_hat = 0.5 * ( A_hat + A_hat')
A_hat = A_hat + (-mineig*k^2 .+ eps*Matrix(I, size(A))) #k = 0
k+=1 #while !isposdef(A_hat)
end # mineig = minimum(eigvals(A_hat))
return A_hat # eps = 2.220446049250313e-16
# A_hat = A_hat + (-mineig*k^2 .+ eps*Matrix(I, size(A)))
# k+=1
#end
#return A_hat
end end
function invert_covar_matrix(A::Matrix) function invert_covar_matrix(A::Matrix; eps::Float64=10^(-9))
F = svd(A) F = svd(A)
cov_inv = F.V * Diagonal(1 ./F.S) * F.U' s_diag = F.S
for i in 1:length(s_diag)
if s_diag[i] < eps
s_diag[i] = 0.0
else
s_diag[i] = 1 / s_diag[i]
end
end
cov_inv = F.V * Diagonal(s_diag) * F.U'
return cov_inv return cov_inv
end end
...@@ -769,7 +788,80 @@ function more_penrose_inv(A::Matrix) ...@@ -769,7 +788,80 @@ function more_penrose_inv(A::Matrix)
end end
########################
# OPERATOR OVERLOADING
########################
function Base.:*(x::uwreal, y::Array{Any})
N = size(y, 1)
return fill(x, N) .* y
end
Base.:*(x::Array{Any}, y::uwreal) = Base.:*(y,x)
function Base.:*(x::uwreal, y::Array{Float64})
N = size(y, 1)
return fill(x, N) .* y
end
Base.:*(x::Array{Float64}, y::uwreal) = Base.:*(y,x)
function Base.:*(x::uwreal, y::Array{uwreal})
N = size(y, 1)
return fill(x, N) .* y
end
Base.:*(x::Array{uwreal}, y::uwreal) = Base.:*(y,x)
function Base.:+(x::uwreal, y::Vector{uwreal})
N = size(y, 1)
return fill(x, N) .+ y
end
function Base.:+(x::Float64, y::Vector{Float64})
N = size(y, 1)
return fill(x, N) .+ y
end
function Base.:+(x::Float64, y::Vector{uwreal})
N = size(y, 1)
return fill(x, N) .+ y
end
function Base.:-(x::Float64, y::Vector{Any})
N = size(y, 1)
return fill(x, N) .- y
end
function Base.:-(x::Float64, y::Vector{Float64})
N = size(y, 1)
return fill(x, N) .- y
end
function Base.:-(x::Float64, y::Vector{uwreal})
N = size(y, 1)
return fill(x, N) .- y
end
function Base.length(uw::uwreal)
return length(value(uw))
end
function Base.iterate(uw::uwreal)
return iterate(uw, 1)
end
function Base.iterate(uw::uwreal, state::Int64)
if state > length(uw)
return nothing
else
return uw[state], state +1
end
end
function Base.iterate(uw::Vector{uwreal})
return iterate(uw, 1)
end
function Base.iterate(uw::Vector{uwreal}, state::Int64)
if state > length(uw)
return nothing
else
return uw[state], state +1
end
end
function Base.getindex(uw::uwreal, ii::Int64)
idx = getindex(value(uw), ii)
return uw # uwreal([getindex(value(uw), kwargs...), err(uw)], " ")
end
function Base.abs2(uw::uwreal)
return (uw^2)^0.5
end
""" """
Base.:*(x::uwreal, y::Matrix{uwreal}) Base.:*(x::uwreal, y::Matrix{uwreal})
......
...@@ -23,9 +23,9 @@ function meff(corr::Vector{uwreal}, plat::Vector{Int64}; pl::Bool=true, data::Bo ...@@ -23,9 +23,9 @@ function meff(corr::Vector{uwreal}, plat::Vector{Int64}; pl::Bool=true, data::Bo
if pl if pl
isnothing(wpm) ? uwerr(mass) : uwerr(mass, wpm) isnothing(wpm) ? uwerr(mass) : uwerr(mass, wpm)
x = 1:length(aux) x = 1:length(aux)
y = value.(aux) y = abs.(value.(aux))
dy = err.(aux) dy = err.(aux)
v = value(mass) v = abs(value(mass))
e = err(mass) e = err(mass)
figure() figure()
...@@ -33,7 +33,12 @@ function meff(corr::Vector{uwreal}, plat::Vector{Int64}; pl::Bool=true, data::Bo ...@@ -33,7 +33,12 @@ function meff(corr::Vector{uwreal}, plat::Vector{Int64}; pl::Bool=true, data::Bo
errorbar(x, y, dy, fmt="x", color="black") errorbar(x, y, dy, fmt="x", color="black")
ylabel(L"$m_\mathrm{eff}$") ylabel(L"$m_\mathrm{eff}$")
xlabel(L"$x_0$") xlabel(L"$x_0$")
ylim(v-100*e, v+100*e) _, max_idx = findmax(value.(corr))
ylim(v-80*e, v+80*e)
xlim(left=max_idx)
# ylim(v-30*e, v+30*e)
# ylim(0.15, 0.18)
#xlim(64,length(y))
if !isnothing(kappa) if !isnothing(kappa)
title(string(L"$\kappa_1 = $", kappa[1], L" $\kappa_2 = $", kappa[2])) title(string(L"$\kappa_1 = $", kappa[1], L" $\kappa_2 = $", kappa[2]))
...@@ -42,6 +47,7 @@ function meff(corr::Vector{uwreal}, plat::Vector{Int64}; pl::Bool=true, data::Bo ...@@ -42,6 +47,7 @@ function meff(corr::Vector{uwreal}, plat::Vector{Int64}; pl::Bool=true, data::Bo
title(string(L"$\mu_1 = $", mu[1], L" $\mu_2 = $", mu[2])) title(string(L"$\mu_1 = $", mu[1], L" $\mu_2 = $", mu[2]))
end end
display(gcf()) display(gcf())
close("all")
end end
if !data if !data
return mass return mass
...@@ -49,7 +55,6 @@ function meff(corr::Vector{uwreal}, plat::Vector{Int64}; pl::Bool=true, data::Bo ...@@ -49,7 +55,6 @@ function meff(corr::Vector{uwreal}, plat::Vector{Int64}; pl::Bool=true, data::Bo
return (mass, aux) return (mass, aux)
end end
end end
function meff(corr::Corr, plat::Vector{Int64}; pl::Bool=true, data::Bool=false, function meff(corr::Corr, plat::Vector{Int64}; pl::Bool=true, data::Bool=false,
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing) wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
...@@ -92,10 +97,12 @@ function mpcac(a0p::Vector{uwreal}, pp::Vector{uwreal}, plat::Vector{Int64}; ca: ...@@ -92,10 +97,12 @@ function mpcac(a0p::Vector{uwreal}, pp::Vector{uwreal}, plat::Vector{Int64}; ca:
corr_a0p = -a0p[1:end] corr_a0p = -a0p[1:end]
corr_pp = pp[1:end] corr_pp = pp[1:end]
der_a0p = (corr_a0p[3:end] .- corr_a0p[1:end-2]) / 2
if ca != 0.0 if ca != 0.0
der_a0p = (corr_a0p[3:end] .- corr_a0p[1:end-2]) / 2
der2_pp = (corr_pp[1:end-4] - 2*corr_pp[3:end-2] + corr_pp[5:end])/4 der2_pp = (corr_pp[1:end-4] - 2*corr_pp[3:end-2] + corr_pp[5:end])/4
der_a0p = der_a0p[2:end-1] + ca * der2_pp der_a0p = der_a0p[2:end-1] + ca * der2_pp
else
der_a0p = (corr_a0p[4:end-1] .- corr_a0p[2:end-3]) / 2
end end
#der_a0p = (corr_a0p[3:end] .- corr_a0p[1:end-2]) / 2 #der_a0p = (corr_a0p[3:end] .- corr_a0p[1:end-2]) / 2
...@@ -104,7 +111,7 @@ function mpcac(a0p::Vector{uwreal}, pp::Vector{uwreal}, plat::Vector{Int64}; ca: ...@@ -104,7 +111,7 @@ function mpcac(a0p::Vector{uwreal}, pp::Vector{uwreal}, plat::Vector{Int64}; ca:
# der_a0p = der_a0p + ca * der2_pp # der_a0p = der_a0p + ca * der2_pp
#end #end
aux = der_a0p ./ ( corr_pp[3:end-2]) aux = der_a0p ./ ( 2. .* corr_pp[3:end-2])
mass = plat_av(aux, plat, wpm) mass = plat_av(aux, plat, wpm)
if pl if pl
isnothing(wpm) ? uwerr(mass) : uwerr(mass, wpm) isnothing(wpm) ? uwerr(mass) : uwerr(mass, wpm)
...@@ -119,7 +126,9 @@ function mpcac(a0p::Vector{uwreal}, pp::Vector{uwreal}, plat::Vector{Int64}; ca: ...@@ -119,7 +126,9 @@ function mpcac(a0p::Vector{uwreal}, pp::Vector{uwreal}, plat::Vector{Int64}; ca:
errorbar(x, y, dy, fmt="x", color="black") errorbar(x, y, dy, fmt="x", color="black")
ylabel(L"$m_\mathrm{PCAC}$") ylabel(L"$m_\mathrm{PCAC}$")
xlabel(L"$x_0$") xlabel(L"$x_0$")
ylim(v-100*e, v+100*e) _, max_idx = findmax(value.(pp))
ylim(v-20*e, v+20*e)
xlim(left=max_idx)
if !isnothing(kappa) if !isnothing(kappa)
title(string(L"$\kappa_1 = $", kappa[1], L" $\kappa_2 = $", kappa[2])) title(string(L"$\kappa_1 = $", kappa[1], L" $\kappa_2 = $", kappa[2]))
...@@ -132,7 +141,7 @@ function mpcac(a0p::Vector{uwreal}, pp::Vector{uwreal}, plat::Vector{Int64}; ca: ...@@ -132,7 +141,7 @@ function mpcac(a0p::Vector{uwreal}, pp::Vector{uwreal}, plat::Vector{Int64}; ca:
if !data if !data
return mass return mass
else else
return (mass, aux) return (mass, aux)
end end
end end
...@@ -199,16 +208,17 @@ f_ratio = dec_const(corr_a0pL, corr_a0pR, corr_ppL, corr_ppR, [50, 60], m, pl=tr ...@@ -199,16 +208,17 @@ f_ratio = dec_const(corr_a0pL, corr_a0pR, corr_ppL, corr_ppR, [50, 60], m, pl=tr
function dec_const(a0p::Vector{uwreal}, pp::Vector{uwreal}, plat::Vector{Int64}, m::uwreal, y0::Int64; ca::Float64=0.0, pl::Bool=true, data::Bool=false, function dec_const(a0p::Vector{uwreal}, pp::Vector{uwreal}, plat::Vector{Int64}, m::uwreal, y0::Int64; ca::Float64=0.0, pl::Bool=true, data::Bool=false,
kappa::Union{Vector{Float64}, Nothing}=nothing, wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing) kappa::Union{Vector{Float64}, Nothing}=nothing, wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
corr_a0p = -a0p corr_a0p = -a0p[2:end-1]
corr_pp = pp corr_pp = pp[2:end-1]
T = length(corr_a0p)
if ca != 0.0 if ca != 0.0
der_pp = (corr_pp[3:end] - corr_pp[1:end-2]) / 2 der_pp = (corr_pp[3:end] - corr_pp[1:end-2]) / 2
corr_a0p = corr_a0p[2:end-1] + ca * der_pp corr_a0p = corr_a0p[2:end-1] + ca * der_pp
aux = exp.((collect(1:T-2) .- (T-1)/2) .* [m for k = 1:T-2]) T = length(corr_a0p)
aux = exp.((collect(1:T) .- (T)/2) .* [m for k = 1:T])
else else
aux = exp.((collect(0:T-1) .- T/2) .* [m for k = 1:T]) T = length(corr_a0p)
aux = exp.((collect(0:T-1) .- (T-1)/2) .* [m for k = 1:T])
end end
R = corr_a0p .* aux ./ [((corr_pp[T-y0])^2)^(1/4) for k = 1:length(corr_a0p)] R = corr_a0p .* aux ./ [((corr_pp[T-y0])^2)^(1/4) for k = 1:length(corr_a0p)]
...@@ -237,7 +247,7 @@ function dec_const(a0p::Vector{uwreal}, pp::Vector{uwreal}, plat::Vector{Int64}, ...@@ -237,7 +247,7 @@ function dec_const(a0p::Vector{uwreal}, pp::Vector{uwreal}, plat::Vector{Int64},
title(string(L"$\kappa_1 = $", kappa[1], L" $\kappa_2 = $", kappa[2])) title(string(L"$\kappa_1 = $", kappa[1], L" $\kappa_2 = $", kappa[2]))
end end
display(gcf()) display(gcf())
close() #close()
end end
if !data if !data
return f return f
...@@ -325,13 +335,13 @@ function dec_const(vv::Vector{uwreal}, plat::Vector{Int64}, m::uwreal, y0::Int64 ...@@ -325,13 +335,13 @@ function dec_const(vv::Vector{uwreal}, plat::Vector{Int64}, m::uwreal, y0::Int64
corr_vv = vv[2:end-1] corr_vv = vv[2:end-1]
T = length(corr_vv) T = length(corr_vv)
aux = exp.((collect(1:T) .- y0 ) .* fill(m, T)) aux = exp.((collect(1:T) .- y0 ) .* fill(m, T))
R = ((aux .* corr_vv).^2).^0.25 R = ((aux .* corr_vv).^2).^0.25
R_av = plat_av(R, plat, wpm) R_av = plat_av(R, plat, wpm)
f = sqrt(2 / m) * R_av f = sqrt(2 / m) * R_av
R .*= sqrt.(2 ./ [m for i in 1:length(R)])
if pl if pl
R .*= sqrt.(2 ./ [m for i in 1:length(R)])
uwerr.(R) uwerr.(R)
R_av *= sqrt(2/m) R_av *= sqrt(2/m)
isnothing(wpm) ? uwerr(R_av) : uwerr(R_av, wpm) isnothing(wpm) ? uwerr(R_av) : uwerr(R_av, wpm)
...@@ -347,7 +357,7 @@ function dec_const(vv::Vector{uwreal}, plat::Vector{Int64}, m::uwreal, y0::Int64 ...@@ -347,7 +357,7 @@ function dec_const(vv::Vector{uwreal}, plat::Vector{Int64}, m::uwreal, y0::Int64
fill_between(plat[1]:plat[2], v-e, v+e, color="green", alpha=0.75, label=L"$R$") fill_between(plat[1]:plat[2], v-e, v+e, color="green", alpha=0.75, label=L"$R$")
errorbar(x, y, dy, fmt="x", color="black", label=lbl) errorbar(x, y, dy, fmt="x", color="black", label=lbl)
legend() legend()
xlim(y0, y0 +plat[2] +15) xlim(left=y0)
ylim(v-10*e, v+10*e) ylim(v-10*e, v+10*e)
ylabel(L"$af_{B}$") ylabel(L"$af_{B}$")
#ylabel(L"$R_\mathrm{av}$") #ylabel(L"$R_\mathrm{av}$")
...@@ -369,7 +379,68 @@ end ...@@ -369,7 +379,68 @@ end
function dec_const(vv::Corr, plat::Vector{Int64}, m::uwreal; pl::Bool=true, data::Bool=false, function dec_const(vv::Corr, plat::Vector{Int64}, m::uwreal; pl::Bool=true, data::Bool=false,
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing) wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
return dec_const(vv.obs, plat, m, vv.y0+1, kappa=vv.kappa, pl=pl, data=data, wpm=wpm) return dec_const(vv.obs, plat, m, vv.y0, kappa=vv.kappa, pl=pl, data=data, wpm=wpm)
end
# this can be used also for pseudoscalar decay constants with wilson fermions
function dec_const_w(vv::Vector{uwreal}, pp::Vector{uwreal}, plat::Vector{Int64}, m::uwreal, y0::Int64; ca::Float64=0.0, pl::Bool=true, data::Bool=false,
kappa::Union{Vector{Float64}, Nothing}=nothing, wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
corr_vv = vv[2:end-1]
corr_pp = pp[2:end-1]
T = length(corr_vv)
if ca != 0.0
der_pp = (corr_pp[3:end] - corr_pp[1:end-2]) / 2
corr_vv = corr_vv[2:end-1] + ca* der_pp
aux = exp.((collect(1:T-2) .- y0 ) .* fill(m, T-2))
else
#corr_vv = corr_vv[2:end-1]
aux = exp.((collect(1:T) .- y0 ) .* fill(m/2, T))
end
R = (aux .* corr_vv ./ sqrt.(corr_pp))
R_av = plat_av(R, plat, wpm)
f = sqrt(2 / m) * R_av
if pl
R .*= sqrt.(2 ./ [m for i in 1:length(R)])
uwerr.(R)
R_av *= sqrt(2/m)
isnothing(wpm) ? uwerr(R_av) : uwerr(R_av, wpm)
isnothing(wpm) ? uwerr(f) : uwerr(f, wpm)
x = 1:length(R)
y = value.(R)
dy = err.(R)
v = value(R_av)
e = err(R_av)
figure()
lbl = string(L"$af = $", sprint(show, f))
fill_between(plat[1]:plat[2], v-e, v+e, color="green", alpha=0.75, label=L"$R$")
errorbar(x, y, dy, fmt="x", color="black", label=lbl)
legend()
xlim(y0, y0 +plat[2] )
ylim(v-10*e, v+10*e)
ylabel(L"$af_{vec}$")
#ylabel(L"$R_\mathrm{av}$")
xlabel(L"$x_0$")
#title(L"$f_{B^*}$")
if !isnothing(kappa)
title(string( L"$\kappa_1 = $", kappa[1], L" $\kappa_2 = $", kappa[2]))
end
display(gcf())
#t = "ps_decay_$(kappa[1])_$(kappa[2]).pdf"
#savefig(joinpath("/Users/ale/Il mio Drive/phd/secondment/3pf test/analysis/plots",t))
end
if !data
return f
else
return f, R
end
end
function dec_const_w(vv::Corr, pp::Corr, plat::Vector{Int64}, m::uwreal; ca::Float64=0.0, pl::Bool=true, data::Bool=false,
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
return dec_const_w(vv.obs, pp.obs, plat, m, vv.y0, ca=ca, kappa=vv.mu, pl=pl, data=data, wpm=wpm)
end end
@doc raw""" @doc raw"""
...@@ -424,6 +495,8 @@ function dec_const_pcvc(corr::Vector{uwreal}, plat::Vector{Int64}, m::uwreal, mu ...@@ -424,6 +495,8 @@ function dec_const_pcvc(corr::Vector{uwreal}, plat::Vector{Int64}, m::uwreal, mu
errorbar(1:length(R), value.(R), err.(R), fmt="x", color="black", label=lbl) errorbar(1:length(R), value.(R), err.(R), fmt="x", color="black", label=lbl)
ylabel(L"$R$") ylabel(L"$R$")
xlabel(L"$x_0$") xlabel(L"$x_0$")
xlim(y0,y0+plat[2])
ylim(v-10*e, v+10*e)
legend() legend()
title(string(L"$\mu_1 = $", mu[1], L" $\mu_2 = $", mu[2])) title(string(L"$\mu_1 = $", mu[1], L" $\mu_2 = $", mu[2]))
display(gcf()) display(gcf())
...@@ -549,6 +622,7 @@ function comp_t0(Y::YData, plat::Vector{Int64}; L::Int64, pl::Bool=false, ...@@ -549,6 +622,7 @@ function comp_t0(Y::YData, plat::Vector{Int64}; L::Int64, pl::Bool=false,
println("Automatic truncation in Ysl ", ivrep_ws[1], " / ", replica[1], ". R = 1") println("Automatic truncation in Ysl ", ivrep_ws[1], " / ", replica[1], ". R = 1")
Ysl = Ysl[1:ivrep_ws[1], :, :] Ysl = Ysl[1:ivrep_ws[1], :, :]
elseif replica[1] < ivrep_ws[1] elseif replica[1] < ivrep_ws[1]
println(replica[1])
error("Automatic truncation failed. R = 1\nTry using truncate_data!") error("Automatic truncation failed. R = 1\nTry using truncate_data!")
end end
end end
...@@ -599,20 +673,29 @@ function comp_t0(Y::YData, plat::Vector{Int64}; L::Int64, pl::Bool=false, ...@@ -599,20 +673,29 @@ function comp_t0(Y::YData, plat::Vector{Int64}; L::Int64, pl::Bool=false,
e = err.(t2E) e = err.(t2E)
figure() figure()
errorbar(x, v, e, fmt="x") errorbar(x, v, e, fmt="d", capsize=2, mfc="none", color="black")
errorbar(value(t0), 0.3, xerr=err(t0), capsize=2, color="red", fmt="d")
errorbar(value(t0), 0.3, xerr=err(t0), fmt="x") xarr = Float64.(range(5.0, 5.2, length=100))
ylabel(L"$t^2E$") yarr = model(xarr, par); uwerr.(yarr)
fill_between(xarr, value.(yarr) .- err.(yarr), value.(yarr) .+ err.(yarr), color="royalblue", alpha=0.2 )
ylabel(L"$t^2\langle E(x_0, t)\rangle$")
xlabel(L"$t/a^2$") xlabel(L"$t/a^2$")
tight_layout()
savefig("/Users/alessandroconigli/Desktop/t0_interp.pdf")
display(gcf()) display(gcf())
figure() figure()
t_pl = dt0 + 1 t_pl = dt0 + 1
plot(collect(1:xmax), value.(Y_aux[:, t_pl]) * t[nt0]^2 / L^3, "x") yyy = Y_aux[:, t_pl] * t[nt0]^2 / L^3 ; uwerr.(yyy)
fill_between(collect(plat[1]:plat[2]), v[t_pl]+e[t_pl], v[t_pl]-e[t_pl], alpha=0.75, color="green") # plot(collect(1:xmax), value.(Y_aux[:, t_pl]) * t[nt0]^2 / L^3, "x")
ylabel(L"$t^2E(x0, t)$") errorbar(collect(1:xmax), value.(yyy), err.(yyy), fmt="d", mfc="none", color="black", capsize=2)
fill_between(collect(plat[1]:plat[2]), v[t_pl]+e[t_pl], v[t_pl]-e[t_pl], alpha=0.75, color="royalblue")
ylabel(L"$t^2\langle E(x_0, t)\rangle$")
xlabel(L"$x_0/a$") xlabel(L"$x_0/a$")
ylim(v[t_pl]-30*e[t_pl], v[t_pl]+50*e[t_pl])
title(string(L"$t/a^2 = $", t[nt0])) title(string(L"$t/a^2 = $", t[nt0]))
tight_layout()
savefig("/Users/alessandroconigli/Desktop/t0_plateau.pdf")
display(gcf()) display(gcf())
end end
if info && !isnothing(rw) if info && !isnothing(rw)
...@@ -745,4 +828,838 @@ function t0_guess(t::Vector{Float64}, Ysl::Array{Float64, 3}, plat::Vector{Int64 ...@@ -745,4 +828,838 @@ function t0_guess(t::Vector{Float64}, Ysl::Array{Float64, 3}, plat::Vector{Int64
t0_aux = minimum(abs.(t2E_ax .- 0.3)) t0_aux = minimum(abs.(t2E_ax .- 0.3))
nt0 = findfirst(x-> abs(x - 0.3) == t0_aux, t2E_ax) #index closest value to t0 nt0 = findfirst(x-> abs(x - 0.3) == t0_aux, t2E_ax) #index closest value to t0
return nt0 return nt0
end
function get_m(corr::juobs.Corr, ens::EnsInfo, PS::String;
tm::Union{Vector{Vector{Int64}}, Nothing}=nothing, tM::Union{Vector{Vector{Int64}}, Nothing}=nothing,
pl::Bool=false, wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
corr_d = corr.obs
m_dat = 0.5 .* log.((corr_d[2:end-2] ./ corr_d[3:end-1]) .^ 2)
y0 = corr.y0
T = length(corr_d) - 1 - y0
isnothing(tm) ? tm = [[y0+10,y0+15,y0+20,y0+25,y0+30,y0+35,y0+40], [i for i in Int(round(T / 3)):Int(round(T / 3))+10]] : tm=tm
isnothing(tM) ? tM = [[T-10,T-15,T-20,T-25,T-30,T-35,T-40], [i for i in Int(round(2 * T / 3)):Int(round(2 * T / 3))+10]] : tM=tM
@.fit_exp(x,p) = p[1] + p[2] * exp(-p[3] * (x-y0)) + p[4] * exp(-p[5] * (T-x))
@.fit_const(x,p) = p[1] * x ^ 0
k1 = 5
k2 = 1
guess = value(m_dat[Int64(round(T / 2))])
m, syst, m_i, weight, pval = model_av([fit_exp, fit_const], m_dat, guess, tm=tm, tM=tM, k=[k1,k2], wpm=wpm)
if pl == true
isnothing(wpm) ? uwerr(m) : uwerr(m, wpm)
isnothing(wpm) ? uwerr.(m_dat) : [uwerr(m_dat[i], wpm) for i in 1:length(m_dat)]
isnothing(wpm) ? uwerr.(m_i) : [uwerr(m_i[i], wpm) for i in 1:length(m_i)]
v = value(m)
e = err(m)
fig = figure("eff")
errorbar(1:length(m_dat), value.(m_dat), err.(m_dat), fmt="x", color="black")
ylabel(L"$am_\mathrm{eff}$")
xlabel(L"$x_0/a$")
ylim(v-7*e, v+20*e)
tight_layout()
#savefig(string("/home/asaez/cls_ens/codes/lattA.jl/plots/m_",ens.id,"_",PS,"_plat.pdf"))
models = Array{String,1}()
for i in 1:length(tm[1])
for j in 1:length(tM[1])
push!(models, string("[",tm[1][i],",",tM[1][j],"]"))
end
end
for i in 1:length(tm[2])
for j in 1:length(tM[2])
push!(models, string("[",tm[2][i],",",tM[2][j],"]"))
end
end
fig = figure("model av")
subplot(411)
fill_between(1:length(m_dat), v-e, v+e, color="green", alpha=0.5)
errorbar(1:length(m_dat), value.(m_dat), err.(m_dat), fmt="x", color="black")
ylabel(L"$am_\mathrm{eff}$")
xlabel(L"$x_0/a$")
ylim(v-10*e, v+20*e)
ax = gca()
setp(ax.get_xticklabels(),visible=false)
subplot(412)
ylabel(L"$m_i$")
fill_between(1:length(m_i), v-e, v+e, color="green", alpha=0.5)
errorbar(1:length(m_i), value.(m_i), err.(m_i), fmt="x", color="black")
ax = gca()
ax[:set_xlim]([0, length(models)+1])
setp(ax.get_xticklabels(),visible=false)
subplot(413)
ylabel(L"$W_i$")
bar(1:length(m_i), weight, color="green")
ax = gca()
ax[:set_xlim]([0, length(models)+1])
setp(ax.get_xticklabels(),visible=false)
subplot(414)
ylabel("p-value")
bar(1:length(m_i), pval, color="green")
ax = gca()
ax[:set_xlim]([0, length(models)+1])
plt.xticks(collect(1:length(m_i)), models)
xticks(rotation=90)
tight_layout()
#savefig(string("/home/asaez/cls_ens/codes/lattA.jl/plots/m_",ens.id,"_",PS,".pdf"))
#close("all")
end
return m, syst, m_i, weight, pval
end
function get_m_pbc(corr::juobs.Corr, ens::EnsInfo, PS::String;
tm::Union{Vector{Int64}, Nothing}=nothing, tM::Union{Vector{Int64}, Nothing}=nothing,
pl::Bool=false, wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing,
method::String="cosh")
corr_d = corr.obs
m_dat = 0.5 .* log.((corr_d[2:end-2] ./ corr_d[3:end-1]) .^ 2)
if ens.id == "E250"
global T = 192
global T2 = 192
global Thalf = 96
elseif ens.id == "D450"
global T = 128
global T2 = 128
global Thalf = 64
end
guess = value(m_dat[Int64(round(T / 3))])
isnothing(tm) ? tm = [y0+10,y0+15,y0+20,y0+25,y0+30,y0+35,y0+40] : tm=tm
isnothing(tM) ? tM = [Thalf] : tM=tM
aux = [corr_d[i] / corr_d[i+1] for i in 2:length(corr_d)-1]
if ens.id == "E250"
global T = 96
elseif ens.id == "D450"
global T = 64
end
@.fit_fun(x,p) = cosh(p[1] * (x-T)) / cosh(p[1] * (x+1-T))
k1 = 1
aux2 = corr_d
@.fit_fun2(x,p) = p[2] * exp(-p[1] * (x-1)) + p[2] * exp(-p[1] * (T2+1-x))
k2 = 2
if method == "cosh"
m, syst, m_i, weight, pval = model_av(fit_fun, aux, guess, tm=tm, tM=tM, k=k1, wpm=wpm)
elseif method == "corr"
m, syst, m_i, weight, pval = model_av(fit_fun2, aux2, guess, tm=tm, tM=tM, k=k2, wpm=wpm)
end
if pl == true
##TODO
bla = 1
end
return m, syst, m_i, weight, pval
end
function get_mpcac(corr_pp::juobs.Corr, corr_ap::juobs.Corr, ens::EnsInfo, PS::String;
tm::Union{Vector{Vector{Int64}}, Nothing}=nothing, tM::Union{Vector{Vector{Int64}}, Nothing}=nothing,
impr::Bool=true, pl::Bool=false,
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
ap_dat = -corr_ap.obs[2:end-1]
pp_dat = corr_pp.obs[2:end-1]
der_ap = (ap_dat[3:end] .- ap_dat[1:end-2]) / 2
if impr == true
ca = ens.ca
der2_pp = pp_dat[1:end-2] + pp_dat[3:end] - 2*pp_dat[2:end-1]
der_ap = der_ap + ca*der2_pp
end
mpcac_dat = der_ap ./ (2*pp_dat[2:end-1])
y0 = corr_pp.y0
T = length(pp_dat) - 1 - y0
isnothing(tm) ? tm = [[y0+10,y0+15,y0+20,y0+25,y0+30,y0+35,y0+40], [i for i in Int(round(T / 3)):Int(round(T / 3))+10]] : tm=tm
isnothing(tM) ? tM = [[T-10,T-15,T-20,T-25,T-30,T-35,T-40], [i for i in Int(round(2 * T / 3)):Int(round(2 * T / 3))+10]] : tM=tM
@.fit_exp(x,p) = p[1] + p[2] * exp(-p[3] * (x-y0)) + p[4] * exp(-p[5] * (T-x))
@.fit_const(x,p) = p[1] * x ^ 0
k1 = 5
k2 = 1
guess = value(mpcac_dat[Int64(round(T / 2))])
mpcac, syst, mpcac_i, weight, pval = model_av([fit_exp, fit_const], mpcac_dat, guess, tm=tm, tM=tM, k=[k1,k2], wpm=wpm)
if pl == true
isnothing(wpm) ? uwerr(mpcac) : uwerr(mpcac, wpm)
isnothing(wpm) ? uwerr.(mpcac_dat) : [uwerr(mpcac_dat[i], wpm) for i in 1:length(mpcac_dat)]
isnothing(wpm) ? uwerr.(mpcac_i) : [uwerr(mpcac_i[i], wpm) for i in 1:length(mpcac_i)]
v = value(mpcac)
e = err(mpcac)
fig = figure("eff")
errorbar(1:length(mpcac_dat), value.(mpcac_dat), err.(mpcac_dat), fmt="x", color="black")
ylabel(L"$am_\mathrm{pcac}$")
xlabel(L"$x_0/a$")
ylim(v-10*e, v+20*e)
tight_layout()
#savefig(string("/home/asaez/cls_ens/codes/lattA.jl/plots/mpcac_",ens.id,"_",PS,"_plat.pdf"))
fig = figure("model av")
subplot(411)
fill_between(1:length(mpcac_dat), v-e, v+e, color="green", alpha=0.5)
errorbar(1:length(mpcac_dat), value.(mpcac_dat), err.(mpcac_dat), fmt="x", color="black")
ylabel(L"$am_\mathrm{pcac}$")
xlabel(L"$x_0/a$")
ylim(v-10*e, v+10*e)
subplot(412)
ylabel(L"$mpcac_i$")
fill_between(1:length(mpcac_i), v-e, v+e, color="green", alpha=0.5)
errorbar(1:length(mpcac_i), value.(mpcac_i), err.(mpcac_i), fmt="x", color="black")
subplot(413)
ylabel(L"$W_i$")
bar(1:length(mpcac_i), weight, color="green")
subplot(414)
ylabel("p-value")
bar(1:length(mpcac_i), pval, color="green")
#savefig(string("/home/asaez/cls_ens/codes/lattA.jl/plots/mpcac_",ens.id,"_",PS,".pdf"))
#close("all")
end
return mpcac, syst, mpcac_i, weight, pval
end
function get_f_wil(corr_pp::juobs.Corr, corr_ap::juobs.Corr, m::uwreal, ens::EnsInfo, PS::String;
tm::Union{Vector{Vector{Int64}}, Nothing}=nothing, tM::Union{Vector{Vector{Int64}}, Nothing}=nothing,
impr::Bool=true, pl::Bool=false,
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
ap_dat = -corr_ap.obs
pp_dat = corr_pp.obs
T = length(pp_dat)
y0 = corr_pp.y0
if impr == true
ca = ens.ca
der_pp = (pp_dat[3:end] .- pp_dat[1:end-2]) / 2
ap_dat = ap_dat[2:end-1] + ca * der_pp
aux = exp.((collect(1:T-2) .- (T-1)/2) .* [m for k = 1:T-2])
else
aux = exp.((collect(0:T-1) .- (T-1)/2) .* [m for k = 1:T])
end
R_dat = ap_dat .* aux ./ [((pp_dat[T-y0])^2)^(1/4) for k = 1:length(ap_dat)]
#f_dat = [sqrt(2) * sqrt(R_dat[i] ^ 2) / sqrt(m) for i in 1:length(R_dat)]
isnothing(tm) ? tm = [[y0+10,y0+15,y0+20,y0+25,y0+30,y0+35,y0+40], [i for i in Int(round(T / 3)):Int(round(T / 3))+10]] : tm=tm
isnothing(tM) ? tM = [[T-10,T-15,T-20,T-25,T-30,T-35,T-40], [i for i in Int(round(2 * T / 3)):Int(round(2 * T / 3))+10]] : tM=tM
@.fit_exp(x,p) = p[1] + p[2] * exp(-p[3] * (x-y0)) + p[4] * exp(-p[5] * (T-1-y0-x))
@.fit_const(x,p) = p[1] * x ^ 0
k1 = 5
k2 = 1
guess = value(R_dat[Int64(round(T / 2))])
R, syst, R_i, weight, pval = model_av([fit_exp, fit_const], R_dat, guess, tm=tm, tM=tM, k=[k1,k2], wpm=wpm)
f = sqrt(2) * sqrt(R^2) / sqrt(m)
if pl == true
isnothing(wpm) ? uwerr(R) : uwerr(R, wpm)
isnothing(wpm) ? uwerr.(R_dat) : [uwerr(R_dat[i], wpm) for i in 1:length(R_dat)]
isnothing(wpm) ? uwerr.(R_i) : [uwerr(R_i[i], wpm) for i in 1:length(R_i)]
v = value(R)
e = err(R)
fig = figure("eff")
errorbar(1:length(R_dat), value.(R_dat), err.(R_dat), fmt="x", color="black")
ylabel(L"$R_\mathrm{PS}$")
xlabel(L"$x_0/a$")
ylim(v-20*e, v+20*e)
tight_layout()
#savefig(string("/home/asaez/cls_ens/codes/lattA.jl/plots/R_",ens.id,"_",PS,"_plat.pdf"))
fig = figure("model av")
subplot(411)
fill_between(1:length(R_dat), v-e, v+e, color="green", alpha=0.5)
errorbar(1:length(R_dat), value.(R_dat), err.(R_dat), fmt="x", color="black")
ylabel(L"$R_\mathrm{PS}$")
xlabel(L"$x_0/a$")
ylim(v-10*e, v+10*e)
subplot(412)
ylabel(L"$R_i$")
fill_between(1:length(R_i), v-e, v+e, color="green", alpha=0.5)
errorbar(1:length(R_i), value.(R_i), err.(R_i), fmt="x", color="black")
subplot(413)
ylabel(L"$W_i$")
bar(1:length(R_i), weight, color="green")
subplot(414)
ylabel("p-value")
bar(1:length(R_i), pval, color="green")
#savefig(string("/home/asaez/cls_ens/codes/lattA.jl/plots/R_",ens.id,"_",PS,".pdf"))
#close("all")
end
return f, syst, R_i, weight, pval
end
function get_f_wil(corr_ppL::juobs.Corr, corr_ppR::juobs.Corr, corr_apL::juobs.Corr, corr_apR::juobs.Corr,
m::uwreal, ens::EnsInfo, PS::String; tm::Union{Vector{Int64}, Nothing}=nothing,
tM::Union{Vector{Int64}, Nothing}=nothing, impr::Bool=true, pl::Bool=false,
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
pp_dat = (corr_ppL.obs + corr_ppR.obs[end:-1:1]) / 2
T = length(corr_ppL.obs)
y0 = corr_ppL.y0
if impr == true
ca = ens.ca
der_ppL = (corr_ppL.obs[3:end] - corr_ppL.obs[1:end-2]) / 2
der_ppR = (corr_ppR.obs[3:end] - corr_ppR.obs[1:end-2]) / 2
apL_dat = -corr_apL.obs[2:end-1] + ca * der_ppL
apR_dat = -corr_apR.obs[2:end-1] + ca * der_ppR
else
apL_dat = -corr_apL.obs[2:end-1]
apR_dat = -corr_apR.obs[2:end-1]
end
f1 = [pp_dat[T - y0] for k = 1:length(apL_dat)]
R_dat = ((apL_dat .* apR_dat ./ f1).^2).^(1/4)
#f_dat = [sqrt(2) * sqrt(R_dat[i] ^ 2) / sqrt(m) for i in 1:length(R_dat)]
isnothing(tm) ? tm = [[y0+10,y0+15,y0+20,y0+25,y0+30,y0+35,y0+40], [i for i in Int(round(T / 3)):Int(round(T / 3))+10]] : tm=tm
isnothing(tM) ? tM = [[T-10,T-15,T-20,T-25,T-30,T-35,T-40], [i for i in Int(round(2 * T / 3)):Int(round(2 * T / 3))+10]] : tM=tM
@.fit_exp(x,p) = p[1] + p[2] * exp(-p[3] * (x-y0)) + p[4] * exp(-p[5] * (T-1-y0-x))
@.fit_const(x,p) = p[1] * x ^ 0
k1 = 5
k2 = 1
guess = value(R_dat[Int64(round(T / 2))])
R, syst, R_i, weight, pval = model_av([fit_exp, fit_const], R_dat, guess, tm=tm, tM=tM, k=[k1,k2], wpm=wpm)
f = sqrt(2) * sqrt(R^2) / sqrt(m)
if pl == true
isnothing(wpm) ? uwerr(R) : uwerr(R, wpm)
isnothing(wpm) ? uwerr.(R_dat) : [uwerr(R_dat[i], wpm) for i in 1:length(R_dat)]
isnothing(wpm) ? uwerr.(R_i) : [uwerr(R_i[i], wpm) for i in 1:length(R_i)]
v = value(R)
e = err(R)
fig = figure("eff")
errorbar(1:length(R_dat), value.(R_dat), err.(R_dat), fmt="x", color="black")
ylabel(L"$R_\mathrm{PS}$")
xlabel(L"$x_0/a$")
ylim(v-20*e, v+20*e)
tight_layout()
#savefig(string("/home/asaez/cls_ens/codes/lattA.jl/plots/R_",ens.id,"_",PS,"_plat.pdf"))
fig = figure("model av")
subplot(411)
fill_between(1:length(R_dat), v-e, v+e, color="green", alpha=0.5)
errorbar(1:length(R_dat), value.(R_dat), err.(R_dat), fmt="x", color="black")
ylabel(L"$R_\mathrm{PS}$")
xlabel(L"$x_0/a$")
ylim(v-10*e, v+10*e)
subplot(412)
ylabel(L"$R_i$")
fill_between(1:length(R_i), v-e, v+e, color="green", alpha=0.5)
errorbar(1:length(R_i), value.(R_i), err.(R_i), fmt="x", color="black")
subplot(413)
ylabel(L"$W_i$")
bar(1:length(R_i), weight, color="green")
subplot(414)
ylabel("p-value")
bar(1:length(R_i), pval, color="green")
#savefig(string("/home/asaez/cls_ens/codes/lattA.jl/plots/R_",ens.id,"_",PS,".pdf"))
#close("all")
end
return f, syst, R_i, weight, pval
end
function get_f_wil_pbc(corr_pp::juobs.Corr, corr_ap::juobs.Corr, m::uwreal, ens::EnsInfo, PS::String;
tm::Union{Vector{Int64}, Nothing}=nothing, tM::Union{Vector{Int64}, Nothing}=nothing,
impr::Bool=true, pl::Bool=false, method::String="ratio",
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
ap_dat = -corr_ap.obs
pp_dat = corr_pp.obs
if ens.id == "E250"
global T = 192
global Thalf = 96
elseif ens.id == "D450"
global T = 128
global Thalf = 64
end
if impr == true
ca = ens.ca
der_pp = (pp_dat[3:end] .- pp_dat[1:end-2]) / 2
ap_dat = ap_dat[2:end-1] + ca * der_pp
pp_dat = pp_dat[2:end-1]
end
R_dat = ap_dat ./ sqrt.(pp_dat)
isnothing(tm) ? tm = [y0+10,y0+15,y0+20,y0+25,y0+30,y0+35,y0+40] : tm=tm
isnothing(tM) ? tM = [Thalf] : tM=tM
@.fit_fun(x,p) = p[1] * (-exp(-value(m) * (x-1)) + exp(-value(m) * (T+1-x))) / sqrt(exp(-value(m) * (x-1)) + exp(-value(m) * (T+1-x)))
@.fit_fun_ap(x,p) = p[1] * (-exp(-value(m) * (x-1)) + exp(-value(m) * (T+1-x)))
@.fit_fun_pp(x,p) = p[1] * (exp(-value(m) * (x-1)) + exp(-value(m) * (T+1-x)))
@.fit_const(x,p) = p[1] * x ^ 0
k = 1
function fit_corr_sim(x,p)
f = [p[1] * (-exp(-value(m) * x[i]) + exp(-value(m) * (T - x[i]))) for i in 1:div(length(x),2)]
g = [p[2] * (exp(-value(m) * x[i]) + exp(-value(m) * (T - x[i]))) for i in div(length(x),2)+1:length(x)]
return [f;g]
end
if method == "ratio"
R, syst, R_i, weight, pval = model_av(fit_fun, R_dat, .5, tm=tm, tM=tM, k=k, wpm=wpm)
f_i = sqrt.(2 ./ [m for i in 1:length(R_i)]) .* R_i
f = sqrt(2 / m) * R
elseif method == "corr"
cap, syst_ap, cap_i, weight_ap, pval_ap = model_av(fit_fun_ap, ap_dat, .5, tm=tm, tM=tM, k=k, wpm=wpm)
cpp, syst_pp, cpp_i, weight_pp, pval_pp = model_av(fit_fun_pp, pp_dat, .5, tm=tm, tM=tM, k=k, wpm=wpm)
f_i = sqrt.(2 ./ [m for i in 1:length(cap_i)]) .* cap_i ./ sqrt.(cpp_i)
f = sqrt(2 / m) * cap / sqrt(cpp)
syst = [syst_ap, syst_pp]
pval = [pval_ap, pval_pp]
weight = [weight_ap, weight_pp]
elseif method == "corr_sim"
pval = Array{Float64,1}()
TIC = Array{Float64,1}()
cap_i = Array{uwreal,1}()
cpp_i = Array{uwreal,1}()
for i in tm
y = [ap_dat[i:end]; pp_dat[i:end]]
x = collect(i:length(ap_dat))
x = [x; x]
uwerr.(y)
W = 1 ./ ADerrors.err.(y) .^ 2
uprm, chi2, chi_exp, pv = fit_alg(fit_corr_sim, x, y, 2, [.5, .5])
push!(cap_i, uprm[1])
push!(cpp_i, uprm[2])
push!(pval, pv)
push!(TIC, chi2 - 2 * chi_exp)
end
weight = exp.(-0.5 * TIC) ./ sum(exp.(-0.5 * TIC))
R_i = cap_i ./ sqrt.(cpp_i)
R_av = sum(R_i .* weight)
syst = sum(R_i .^ 2 .* weight) - R_av ^ 2
f_i = sqrt.(2 ./ [m for i in 1:length(cap_i)]) .* R_i
f = sqrt(2 / m) * R_av
elseif method == "pcac"
if impr == false
error("pcac method implemented only for improved axial current, set impr=true")
end
cpp, syst_pp, cap_i, weight, pval = model_av(fit_fun_pp, pp_dat, .5, tm=tm, tM=tM, k=k, wpm=wpm)
der_ap = (ap_dat[3:end] .- ap_dat[1:end-2]) / 2
der2_pp = pp_dat[1:end-2] + pp_dat[3:end] - 2*pp_dat[2:end-1]
der_ap = der_ap + ca*der2_pp
mpcac_dat = der_ap ./ (2*pp_dat[2:end-1])
f_dat = [sqrt(8 / m ^ 3 * cpp) for i in 1:length(mpcac_dat)] .* mpcac_dat
f, syst, f_i, weight, pval = model_av(fit_const, f_dat, .5, tm=tm, tM=tM, k=k, wpm=wpm)
end
if pl == true
##TODO
bla = 1
x = collect(1:length(R_dat))
R_dat = R_dat ./ [(-exp(-value(m) * (x[i]-1)) + exp(-value(m) * (T+1-x[i]))) / sqrt(exp(-value(m) * (x[i]-1)) + exp(-value(m) * (T+1-x[i]))) for i in 1:length(x)]
isnothing(wpm) ? uwerr.(R_dat) : [uwerr(R_dat[i], wpm) for i in 1:length(R_dat)]
v = value(R_dat[40])
e = err(R_dat[40])
figure()
errorbar(1:length(R_dat), value.(R_dat), err.(R_dat), fmt="x", color="black")
ylabel(L"$R_\mathrm{PS}$")
xlabel(L"$x_0/a$")
ylim(v-20*e, v+20*e)
tight_layout()
#savefig(string("/home/asaez/cls_ens/codes/lattA.jl/plots/R_",ens.id,"_",PS,"_plat.pdf"))
end
return f, syst, f_i, weight, pval
end
function get_f_tm(corr_pp::juobs.Corr, m::uwreal, ens::EnsInfo, PS::String;
tm::Union{Vector{Vector{Int64}}, Nothing}=nothing, tM::Union{Vector{Vector{Int64}}, Nothing}=nothing,
pl::Bool=false, wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
T = length(corr_pp.obs)
y0 = corr_pp.y0
mu = corr_pp.mu
pp_dat = corr_pp.obs
aux = exp.((collect(0:T-1) .- (T-1)/2 ) .* [m for k in 1:T])
R_dat = pp_dat .* aux ./ [((pp_dat[T-y0])^2)^(1/4) for k = 1:T]
isnothing(tm) ? tm = [[y0+10,y0+15,y0+20,y0+25,y0+30,y0+35,y0+40], [i for i in Int(round(T / 3)):Int(round(T / 3))+10]] : tm=tm
isnothing(tM) ? tM = [[T-10,T-15,T-20,T-25,T-30,T-35,T-40], [i for i in Int(round(2 * T / 3)):Int(round(2 * T / 3))+10]] : tM=tM
@.fit_exp(x,p) = p[1] + p[2] * exp(-p[3] * (x-y0)) + p[4] * exp(-p[5] * (T-1-y0-x))
@.fit_const(x,p) = p[1] * x ^ 0
k1 = 5
k2 = 1
guess = value(R_dat[Int64(round(T / 2))])
R, syst, R_i, weight, pval = model_av([fit_exp, fit_const], R_dat, guess, tm=tm, tM=tM, k=[k1,k2], wpm=wpm)
f = sqrt(2) * (mu[1] + mu[2]) * R / m^1.5
if pl == true
isnothing(wpm) ? uwerr(R) : uwerr(R, wpm)
isnothing(wpm) ? uwerr.(R_dat) : [uwerr(R_dat[i], wpm) for i in 1:length(R_dat)]
isnothing(wpm) ? uwerr.(R_i) : [uwerr(R_i[i], wpm) for i in 1:length(R_i)]
v = value(R)
e = err(R)
fig = figure("eff")
errorbar(1:length(R_dat), value.(R_dat), err.(R_dat), fmt="x", color="black")
ylabel(L"$R_\mathrm{PS}$")
xlabel(L"$x_0/a$")
ylim(v-20*e, v+20*e)
tight_layout()
#savefig(string("/home/asaez/cls_ens/codes/lattA.jl/plots/R_",ens.id,"_",PS,"_plat.pdf"))
fig = figure("model av")
subplot(411)
fill_between(1:length(R_dat), v-e, v+e, color="green", alpha=0.5)
errorbar(1:length(R_dat), value.(R_dat), err.(R_dat), fmt="x", color="black")
ylabel(L"$R_\mathrm{PS}$")
xlabel(L"$x_0/a$")
ylim(v-10*e, v+10*e)
subplot(412)
ylabel(L"$R_i$")
fill_between(1:length(R_i), v-e, v+e, color="green", alpha=0.5)
errorbar(1:length(R_i), value.(R_i), err.(R_i), fmt="x", color="black")
subplot(413)
ylabel(L"$W_i$")
bar(1:length(R_i), weight, color="green")
subplot(414)
ylabel("p-value")
bar(1:length(R_i), pval, color="green")
#savefig(string("/home/asaez/cls_ens/codes/lattA.jl/plots/R_",ens.id,"_",PS,".pdf"))
#close("all")
end
return f, syst, R_i, weight, pval
end
function get_f_tm(corr_ppL::juobs.Corr, corr_ppR::juobs.Corr, m::uwreal, ens::EnsInfo, PS::String;
tm::Union{Vector{Vector{Int64}}, Nothing}=nothing, tM::Union{Vector{Vector{Int64}}, Nothing}=nothing,
pl::Bool=false, wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
T = length(corr_ppL.obs)
y0 = corr_ppL.y0
mu = corr_ppL.mu
ppL_dat = corr_ppL.obs
ppR_dat = corr_ppR.obs
f1 = [ppL_dat[T - y0] for k = 1:T]
R_dat = ((ppL_dat .* ppR_dat ./ f1).^2).^(1/4)
isnothing(tm) ? tm = [[y0+10,y0+15,y0+20,y0+25,y0+30,y0+35,y0+40], [i for i in Int(round(T / 3)):Int(round(T / 3))+10]] : tm=tm
isnothing(tM) ? tM = [[T-10,T-15,T-20,T-25,T-30,T-35,T-40], [i for i in Int(round(2 * T / 3)):Int(round(2 * T / 3))+10]] : tM=tM
@.fit_exp(x,p) = p[1] + p[2] * exp(-p[3] * (x-y0)) + p[4] * exp(-p[5] * (T-1-y0-x))
@.fit_const(x,p) = p[1] * x ^ 0
k1 = 5
k2 = 1
guess = value(R_dat[Int64(round(T / 2))])
R, syst, R_i, weight, pval = model_av([fit_exp, fit_const], R_dat, guess, tm=tm, tM=tM, k=[k1,k2], wpm=wpm)
f = sqrt(2) * (mu[1] + mu[2]) * R / m^1.5
if pl == true
isnothing(wpm) ? uwerr(R) : uwerr(R, wpm)
isnothing(wpm) ? uwerr.(R_dat) : [uwerr(R_dat[i], wpm) for i in 1:length(R_dat)]
isnothing(wpm) ? uwerr.(R_i) : [uwerr(R_i[i], wpm) for i in 1:length(R_i)]
v = value(R)
e = err(R)
fig = figure("eff")
errorbar(1:length(R_dat), value.(R_dat), err.(R_dat), fmt="x", color="black")
ylabel(L"$R_\mathrm{PS}$")
xlabel(L"$x_0/a$")
ylim(v-20*e, v+20*e)
tight_layout()
#savefig(string("/home/asaez/cls_ens/codes/lattA.jl/plots/R_",ens.id,"_",PS,"_plat.pdf"))
fig = figure("model av")
subplot(411)
fill_between(1:length(R_dat), v-e, v+e, color="green", alpha=0.5)
errorbar(1:length(R_dat), value.(R_dat), err.(R_dat), fmt="x", color="black")
ylabel(L"$R_\mathrm{PS}$")
xlabel(L"$x_0/a$")
ylim(v-10*e, v+10*e)
subplot(412)
ylabel(L"$R_i$")
fill_between(1:length(R_i), v-e, v+e, color="green", alpha=0.5)
errorbar(1:length(R_i), value.(R_i), err.(R_i), fmt="x", color="black")
subplot(413)
ylabel(L"$W_i$")
bar(1:length(R_i), weight, color="green")
subplot(414)
ylabel("p-value")
bar(1:length(R_i), pval, color="green")
#savefig(string("/home/asaez/cls_ens/codes/lattA.jl/plots/R_",ens.id,"_",PS,".pdf"))
#close("all")
end
return f, syst, R_i, weight, pval
end
function get_f_tm_pbc(corr_pp::juobs.Corr, m::uwreal, ens::EnsInfo, PS::String;
tm::Union{Vector{Int64}, Nothing}=nothing, tM::Union{Vector{Int64}, Nothing}=nothing,
pl::Bool=false,
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
pp_dat = corr_pp.obs[2:end]
mu = corr_pp.mu
if ens.id == "E250"
global T = 192
global Thalf = 96
elseif ens.id == "D450"
global T = 128
global Thalf = 64
end
isnothing(tm) ? tm = [y0+10,y0+15,y0+20,y0+25,y0+30,y0+35,y0+40] : tm=tm
isnothing(tM) ? tM = [Thalf] : tM=tM
@.fit_fun_pp(x,p) = p[1] * (exp(-value(m) * (x-1)) + exp(-value(m) * (T+1-x)))
k = 1
cpp, syst, cpp_i, weight, pval = model_av(fit_fun_pp, pp_dat, .5, tm=tm, tM=tM, k=k, wpm=wpm)
f_i = [sqrt(2) * (mu[1] + mu[2]) / m ^ 1.5 for i in 1:length(cpp_i)] .* sqrt.(cpp_i)
f = sqrt(2) * (mu[1] + mu[2]) / m ^ 1.5 * sqrt(cpp)
if pl == true
##TODO
bla = 1
x = collect(1:length(pp_dat))
R_dat = pp_dat #./ [exp(-m * (x[i]-1)) + exp(-m * (T+1-x[i])) for i in 1:length(x)]
vec = cpp .* [exp(-m * (x[i]-1)) + exp(-m * (T+1-x[i])) for i in 1:length(x)]
isnothing(wpm) ? uwerr(cpp) : uwerr(cpp, wpm)
isnothing(wpm) ? uwerr.(R_dat) : [uwerr(R_dat[i], wpm) for i in 1:length(R_dat)]
isnothing(wpm) ? uwerr.(vec) : [uwerr(vec[i], wpm) for i in 1:length(vec)]
v = value.(vec)
e = err.(vec)
#v = value(cpp)
#e = err(cpp)
figure()
errorbar(1:length(R_dat), value.(R_dat), err.(R_dat), fmt="x", color="black")
fill_between(x, v-e, v+e, color="gray", alpha=0.75)
ylabel(L"$R_\mathrm{PS}$")
xlabel(L"$x_0/a$")
#ylim(1e-8, 1e-7)
#xlim(0,length(R_dat))
yscale("log")
tight_layout()
#savefig(string("/home/asaez/cls_ens/codes/lattA.jl/plots/R_",ens.id,"_",PS,"_plat.pdf"))
#@gp x value.(R_dat) err.(R_dat) "w errorbars t ''"
#@gp:- x v-e v+e "w filledcurves t ''"
#@gp:- "set logscale y"
#save(string("/home/asaez/cls_ens/codes/lattA.jl/plots/R_",ens.id,"_",PS,"_plat.gp"))
end
return f, syst, f_i, weight, pval
end
function get_w0t0_plat(path::String, ens::EnsInfo, plat1::Vector{Int64}, plat2::Vector{Int64};
pl::Bool=false,
rw=false, npol::Int64=2, ws::ADerrors.wspace=ADerrors.wsg,
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing,
w0_guess::Union{Float64, Nothing}=nothing,
tau::Union{Float64, Nothing}=nothing)
y0 = 1 ## assumes this is the case, hardcoded, some ensembles will not fulfil !
println("WARNING!: make sure t_src is 1 in this ensemble")
t2YM, tdt2YM, W_obs, t, t_aux = get_YM_dYM(path, ens, rw=rw, w0=w0_guess, tau=tau)
dt0 = iseven(npol) ? Int64(npol / 2) : Int64((npol+1) / 2)
model(x, p) = get_model(x, p, npol)
fmin(x, p) = model(x, p) .- 0.3
function fit_defs(x,W) ## uncorrelated fit
chisq(p,d) = sum((d .- [p[1] for i in 1:length(x)]).^2 .* W)
return chisq
end
## w0
tdt2YM_guess = [plat_av(tdt2YM[:,i], plat1) for i in 1:length(tdt2YM[1,:])]
nt0 = findmin(abs.(value.(tdt2YM_guess[2:end-1]) .- 0.3))[2] + 1
x = t_aux[nt0-dt0:nt0+dt0]
xmax = size(tdt2YM, 1)
T = xmax - 1 - y0
tdt2E_i = Array{uwreal,1}()
syst_i = Array{uwreal,1}()
for j in 1:2*dt0+1
i = Int(round(dt0+0.5))
dat = tdt2YM[:,nt0-dt0-1+j]
if j == i
tdt2E_aux = plat_av(dat, plat1)
uwerr.(dat)
chisq = fit_defs(collect(plat1[1]:plat1[2]), 1 ./ err.(dat[plat1[1]:plat1[2]]) .^ 2)
chi2 = chisq(tdt2E_aux,dat[plat1[1]:plat1[2]])
isnothing(wpm) ? pval = pvalue(chisq,value(chi2),value.(tdt2E_aux),dat[plat1[1]:plat1[2]]) : pval = pvalue(chisq,value(chi2),value.(tdt2E_aux),dat[plat1[1]:plat1[2]],wpm=wpm)
if pl == true
isnothing(wpm) ? uwerr(tdt2E_aux) : uwerr(tdt2E_aux, wpm)
isnothing(wpm) ? uwerr.(dat) : [uwerr(dat[i], wpm) for i in 1:length(dat)]
v = value(tdt2E_aux)
e = err(tdt2E_aux)
fig = figure(string("pvalue=",pval))
errorbar(1:length(dat), value.(dat), err.(dat), fmt="x", color="black")
x_plot = collect(plat1[1]:plat1[2])
fill_between(x_plot, v-e, v+e, color="green", alpha=0.3)
ylabel(L"$t\frac{d}{dt}t^2E(x_0,t)$")
xlabel(L"$x_0$")
ylim(v-5*e, v+20*e)
tight_layout()
#savefig(string("/home/asaez/cls_ens/codes/lattA.jl/plots/tdt2E_",ens.id,"_plat.pdf"))
end
else
tdt2E_aux = plat_av(dat, plat1)
end
push!(tdt2E_i, tdt2E_aux)
end
if tdt2E_i[end] < 0.30 || tdt2E_i[1] > 0.30
println("WARNING!: extrapolating w0/a")
end
#uwerr.(tdt2E_i)
#uwerr.(syst_i)
#println("tdt2E_i = ", tdt2E_i)
#println("syst_i = ", syst_i)
par, aux = fit_alg(model, x[1:length(tdt2E_i)], tdt2E_i, npol, wpm=wpm)
w0 = root_error(fmin, t_aux[nt0], par)
if pl == true
v = value.(tdt2E_i)
e = err.(tdt2E_i)
uwerr(w0)
fig = figure("tdt2E_vs_t")
errorbar(x[1:length(tdt2E_i)], v, e, fmt="x")
errorbar(value(w0), 0.3, xerr=err(w0), fmt="x")
ylabel(L"$t\frac{d}{dt}t^2\left<E\right>$")
xlabel(L"$t/a^2$")
tight_layout()
#savefig(string("/home/asaez/cls_ens/codes/lattA.jl/plots/w0_",ens.id,".pdf"))
#close("all")
end
##
## t0
t2YM_guess = [plat_av(t2YM[:,i], plat2) for i in 1:length(t2YM[1,:])]
nt0 = findmin(abs.(value.(t2YM_guess[2:end-1]) .- 0.3))[2] + 1
x = t[nt0-dt0:nt0+dt0]
xmax = size(t2YM, 1)
T = xmax - 1 - y0
t2E_i = Array{uwreal,1}()
syst_i = Array{uwreal,1}()
for j in 1:2*dt0+1
i = Int(round(dt0+0.5))
dat = t2YM[:,nt0-dt0-1+j]
if j == i
t2E_aux = plat_av(dat, plat2)
uwerr.(dat)
chisq = fit_defs(collect(plat2[1]:plat2[2]), 1 ./ err.(dat[plat2[1]:plat2[2]]) .^ 2)
chi2 = chisq(t2E_aux,dat[plat2[1]:plat2[2]])
isnothing(wpm) ? pval = pvalue(chisq,value(chi2),value.(t2E_aux),dat[plat2[1]:plat2[2]]) : pval = pvalue(chisq,value(chi2),value.(t2E_aux),dat[plat2[1]:plat2[2]],wpm=wpm)
if pl == true
isnothing(wpm) ? uwerr(t2E_aux) : uwerr(t2E_aux, wpm)
isnothing(wpm) ? uwerr.(dat) : [uwerr(dat[i], wpm) for i in 1:length(dat)]
v = value(t2E_aux)
e = err(t2E_aux)
fig = figure(string("pvalue= ",pval))
errorbar(1:length(dat), value.(dat), err.(dat), fmt="x", color="black")
x_plot = collect(plat2[1]:plat2[2])
fill_between(x_plot, v-e, v+e, color="green", alpha=0.3)
ylabel(L"$t^2E(x_0,t)$")
xlabel(L"$x_0$")
ylim(v-5*e, v+20*e)
tight_layout()
#savefig(string("/home/asaez/cls_ens/codes/lattA.jl/plots/t2E_",ens.id,"_plat.pdf"))
end
else
t2E_aux = plat_av(dat, plat2)
end
push!(t2E_i, t2E_aux)
end
if t2E_i[end] < 0.30 || t2E_i[1] > 0.30
println("WARNING!: extrapolating t0/a")
end
#uwerr.(t2E_i)
#uwerr.(syst_i)
#println("t2E_i = ", t2E_i)
#println("syst_i = ", syst_i)
par, aux = fit_alg(model, x[1:length(t2E_i)], t2E_i, npol, wpm=wpm)
t0 = root_error(fmin, t[nt0], par)
if pl == true
v = value.(t2E_i)
e = err.(t2E_i)
uwerr(t0)
fig = figure("t2E_vs_t")
errorbar(x[1:length(t2E_i)], v, e, fmt="x")
errorbar(value(t0), 0.3, xerr=err(t0), fmt="x")
ylabel(L"$t^2\left<E\right>$")
xlabel(L"$t/a^2$")
tight_layout()
#savefig(string("/home/asaez/cls_ens/codes/lattA.jl/plots/t0_",ens.id,".pdf"))
#close("all")
end
##
return w0,t0
end end
\ No newline at end of file
...@@ -91,6 +91,10 @@ ADerrors id can be specified as argument. If is not specified, the `id` is fixed ...@@ -91,6 +91,10 @@ ADerrors id can be specified as argument. If is not specified, the `id` is fixed
*For the old version (without smearing, distance preconditioning and theta) set legacy=true. *For the old version (without smearing, distance preconditioning and theta) set legacy=true.
For Julien's most updated inversion code, the sign of the valence derivatives is flipped. Note also that for the new dat files version, no `_d1, _d2`
is written by the reader, so you must select by hand (looking at the log files e.g.) which are you derivative correlators. In the log file, the
derivative correlators are signaled by `seq_prop=some number`.
Examples: Examples:
```@example ```@example
read_mesons(path) read_mesons(path)
...@@ -128,6 +132,7 @@ function read_mesons(path::String, g1::Union{String, Nothing}=nothing, g2::Union ...@@ -128,6 +132,7 @@ function read_mesons(path::String, g1::Union{String, Nothing}=nothing, g2::Union
ncfg = div(fsize - g_header.hsize - sum(getfield.(c_header, :hsize)), datsize) #(total size - header_size) / data_size ncfg = div(fsize - g_header.hsize - sum(getfield.(c_header, :hsize)), datsize) #(total size - header_size) / data_size
corr_match = findall(x-> (x.type1==t1 || isnothing(t1)) && (x.type2==t2 || isnothing(t2)), c_header) corr_match = findall(x-> (x.type1==t1 || isnothing(t1)) && (x.type2==t2 || isnothing(t2)), c_header)
#findall(x-> (x.mu1==0.2209), c_header)
seek(data, g_header.hsize + sum(c.hsize for c in c_header)) seek(data, g_header.hsize + sum(c.hsize for c in c_header))
...@@ -325,21 +330,130 @@ function read_rw(path::String; v::String="1.2") ...@@ -325,21 +330,130 @@ function read_rw(path::String; v::String="1.2")
return r_data return r_data
end end
@doc raw"""
read_rw_openQCD2(path::String; print_info::Bool=false)
This function reads the reweighting factors generated with openQCD version 2.#.
The flag print_info if set to true print additional information for debugging
"""
function read_rw_openQCD2(path::String; print_info::Bool=false)
data = open(path, "r")
nrw = read(data, Int32)
nrw = Int32(nrw / 2)
nfct = Array{Int32}(undef, nrw)
read!(data, nfct)
nsrc = Array{Int32}(undef, nrw)
read!(data, nsrc)
null = read(data, Int32)
if null !== Int32(0)
error("In openQCD 2.0 this Int32 should be a zero.")
end
data_array = Array{Array{Float64}}(undef, nrw)
[data_array[k] = Array{Float64}(undef, 0) for k in 1:nrw]
vcfg = Vector{Int32}(undef, 0)
while !eof(data)
push!(vcfg, read(data, Int32))
if print_info
println("\n ######## cnfg: ", vcfg[end])
end
for k in 1:nrw
read_array_rwf_dat_openQCD2(data)
tmp_rw, n = read_array_rwf_dat_openQCD2(data)
tmp_nfct=1.0
for j in 1:n[1]
tmp_nfct *= mean((exp.(.-tmp_rw[j])))
end
push!(data_array[k], tmp_nfct)
end
end
return permutedims(hcat(data_array...), (2,1))
end
function read_array_rwf_dat_openQCD2(data::IOStream; print_info::Bool=false)
d = read(data, Int32)
n = Array{Int32}(undef, d)
read!(data, n)
size = read(data, Int32)
m = prod(n)
if print_info
println("d: ", d)
println("n: ", n)
println("size: ", size)
println("m: ", m)
end
if size == 4
types = Int32
elseif size == 8
types = Float64
elseif size == 16
types = Float64x2
else
error("No type with size=$(size) supported")
end
tmp_data = Array{types}(undef, m)
read!(data, tmp_data)
res = parse_array_openQCD2(d, n, tmp_data, quadprec=true)
return res, n
end
function parse_array_openQCD2(d, n, dat; quadprec=true)
if d != 2
error("dat must be a two-dimensional array")
end
res = Vector{Vector{Float64}}(undef, 0)
for k in range(1,n[1])
tmp = dat[(k-1)*n[2]+1:k*n[2]]
if quadprec
tmp2 = Vector{Float64}(undef, 0)
for j in range(start=1,step=2,stop=length(tmp))
push!(tmp2, tmp[j])
end
push!(res, tmp2)
else
push!(res, tmp)
end
end
return res
end
@doc raw""" @doc raw"""
read_ms1(path::String; v::String="1.2") read_ms1(path::String; v::String="1.2")
Reads openQCD ms1 dat files at a given path. This method returns a matrix `W[irw, icfg]` that contains the reweighting factors, where Reads openQCD ms1 dat files at a given path. This method returns a matrix `W[irw, icfg]` that contains the reweighting factors, where
`irw` is the `rwf` index and icfg the configuration number. `irw` is the `rwf` index and icfg the configuration number.
The function is compatible with the output files of openQCD v=1.2, 1.4 and 1.6. Version can be specified as argument. The function is compatible with the output files of openQCD v=1.2, 1.4, 1.6 and 2.0. Version can be specified as argument.
Examples: Examples:
```@example ```@example
read_ms1(path) read_ms1(path)
read_ms1(path, v="1.4") read_ms1(path, v="1.4")
read_ms1(path, v="1.6") read_ms1(path, v="1.6")
read_ms1(path, v="2.0")
``` ```
""" """
function read_ms1(path::String; v::String="1.2") function read_ms1(path::String; v::String="1.2")
if v == "2.0"
return read_rw_openQCD2(path)
end
r_data = read_rw(path, v=v) r_data = read_rw(path, v=v)
nrw = length(r_data) nrw = length(r_data)
ncnfg = size(r_data[1])[3] ncnfg = size(r_data[1])[3]
...@@ -412,7 +526,9 @@ function read_ms(path::String; id::Union{String, Nothing}=nothing, dtr::Int64=1 ...@@ -412,7 +526,9 @@ function read_ms(path::String; id::Union{String, Nothing}=nothing, dtr::Int64=1
ntr = Int32((fsize - 3*4 - 8) / datsize) ntr = Int32((fsize - 3*4 - 8) / datsize)
if mod(ntr, dtr) != 0 if mod(ntr, dtr) != 0
error("ntr / dtr must be exact") println("ntr = ", ntr)
println("dtr = ", dtr)
@warn("ntr / dtr must be exact, truncating...")
end end
vntr = Vector{Int32}(undef, div(ntr, dtr)) vntr = Vector{Int32}(undef, div(ntr, dtr))
...@@ -516,4 +632,679 @@ function truncate_data!(data::Vector{Vector{CData}}, nc::Vector{Int64}) ...@@ -516,4 +632,679 @@ function truncate_data!(data::Vector{Vector{CData}}, nc::Vector{Int64})
end end
end end
return nothing return nothing
end
@doc raw"""
concat_data!(data1::Vector{CData}, data2::Vector{CData})
concat_data!(data1::Vector{Vector{CData}}, data2::Vector{Vector{CData}})
Concatenates the output of 2 calls to `read_mesons` over configurations.
Both data must have the same number of replicas and correlators.
The output is saved in the first argument, so if you want to concatenate
3 data sets: `concat_data!(data1, data2); concat_data!(data1, data3)`
Examples:
```@example
#Single replica
dat = read_mesons(path, "G5", "G5")
dat2 = read_mesons(path2, "G5", "G5")
concat_data!(dat, dat2)
#Two replicas
dat = read_mesons([path1, path2], "G5", "G5")
dat2 = read_mesons([path3, path4], "G5", "G5")
concat_data!(dat, dat2)
```
"""
function concat_data!(data1::Vector{juobs.CData}, data2::Vector{juobs.CData})
N = length(data1)
if length(data1) != length(data2)
error("number of correlators do not match")
end
for k = 1:N
data1[k].vcfg = vcat(data1[k].vcfg, data2[k].vcfg)
data1[k].re_data = vcat(data1[k].re_data, data2[k].re_data)
data1[k].im_data = vcat(data1[k].im_data, data2[k].im_data)
idx = sortperm(data1[k].vcfg)
data1[k].vcfg = data1[k].vcfg[idx]
data1[k].re_data = data1[k].re_data[idx, :]
data1[k].im_data = data1[k].im_data[idx, :]
end
return nothing
end
function concat_data!(data1::Vector{Vector{juobs.CData}}, data2::Vector{Vector{juobs.CData}})
N = length(data1)
if length(data1) != length(data2)
error("number of correlators do not match")
end
R = length(data1[1])
if length(data1[1]) != length(data2[1])
error("number of replicas do not match")
end
for k = 1:N
for r = 1:R
data1[k][r].vcfg = vcat(data1[k][r].vcfg, data2[k][r].vcfg)
data1[k][r].re_data = vcat(data1[k][r].re_data, data2[k][r].re_data)
data1[k][r].im_data = vcat(data1[k][r].im_data, data2[k][r].im_data)
idx = sortperm(data1[k][r].vcfg)
data1[k][r].vcfg = data1[k][r].vcfg[idx]
data1[k][r].re_data = data1[k][r].re_data[idx, :]
data1[k][r].im_data = data1[k][r].im_data[idx, :]
end
end
return nothing
end
function get_YM(path::String, ens::EnsInfo; rw=false, ws::ADerrors.wspace=ADerrors.wsg, w0::Union{Float64, Nothing}=nothing)
path_ms = joinpath(path, ens.id, "gf")
path_ms = filter(x->occursin(".dat", x), readdir(path_ms, join=true))
Y = read_ms.(path_ms, dtr=ens.dtr)
nr = length(Y)
Ysl = getfield.(Y, :obs)
t = getfield.(Y, :t)
t = t[1]
id = getfield.(Y, :id)
replica = size.(Ysl, 1)
L = ens.L
id = ens.id
#T = length(Y[:,1]) - y0
y0 = 1 ## assumes this is the case, hardcoded, some ensembles will not fulfil !
println("WARNING!: make sure t_src is 1 in this ensemble")
#Truncation
if id in keys(ADerrors.wsg.str2id)
n_ws = findfirst(x-> x == ws.str2id[id], ws.map_nob)
if !isnothing(n_ws)
ivrep_ws = ws.fluc[n_ws].ivrep
if length(replica) != length(ivrep_ws)
error("Different number of replicas")
end
for k = 1:length(replica)
if replica[k] > ivrep_ws[k]
println("Automatic truncation in Ysl ", ivrep_ws[k], " / ", replica[k], ". R = ", k)
Ysl[k] = Ysl[k][1:ivrep_ws[k], :, :]
elseif replica[k] < ivrep_ws[k]
error("Automatic truncation failed. R = ", replica[k], "\nTry using truncate_data!")
end
end
replica = size.(Ysl, 1)
end
end
tmp = Ysl[1]
[tmp = cat(tmp, Ysl[k], dims=1) for k = 2:nr]
xmax = size(tmp, 2)
T = xmax - 1 - y0
Y_aux = Matrix{uwreal}(undef, xmax, length(t))
if rw
path_rw = joinpath(path, ens.id, "rwf")
path_rw = filter(x->occursin(".dat", x), readdir(path_rw, join=true))
if ens.id == "D200"
rwf_1 = read_ms1.([path_rw[1]], v=ens.vrw)
rwf_2 = read_ms1.([path_rw[2]], v=ens.vrw)
rwf = [hcat(rwf_2[1],rwf_1[1])]
elseif ens.id in ["E250", "E300", "J500", "J501", "D450"]
rwf = [read_ms1(path_rw[i], v=ens.vrw[i]) for i in 1:length(ens.vrw)]
[Ysl[k] = Ysl[k][1:size(rwf[k],2), :, :] for k in 1:length(Ysl)]
else
rwf = read_ms1.(path_rw, v=ens.vrw)
end
Ysl_r, W = juobs.apply_rw(Ysl, rwf)
tmp_r = Ysl_r[1]
tmp_W = W[1]
[tmp_r = cat(tmp_r, Ysl_r[k], dims=1) for k = 2:nr]
[tmp_W = cat(tmp_W, W[k], dims=1) for k = 2:nr]
W_obs = uwreal(tmp_W, id, replica, collect(1:length(tmp_W)), sum(replica))
WY_aux = Matrix{uwreal}(undef, xmax, length(t))
end
for i = 1:xmax
k = 1
for j = 1:length(t)
if !rw
Y_aux[i, k] = uwreal(tmp[:, i, j], id, replica)
else
WY_aux[i, k] = uwreal(tmp_r[:, i, j], id, replica, collect(1:length(tmp_W)), sum(replica))
Y_aux[i, k] = WY_aux[i, k] / W_obs
end
k = k + 1
end
end
t2YM = similar(Y_aux)
tdt2YM = similar(Y_aux)
for i in 1:length(Y_aux[:,1])
t2YM[i,:] = Y_aux[i,:] .* t .^ 2 ./ L ^ 3
end
for i in 1:length(t2YM[:,1])
if isnothing(w0)
tdt2YM[i,2:end-1] = [(t2YM[i,j+1] - t2YM[i,j-1]) / (t[j+1] - t[j-1]) * t[j] for j in 2:length(t2YM[i,:])-1]
tdt2YM[i,1] = tdt2YM[i,end] = t2YM[i,1]
else
ixm = findmin(abs.(t .- (w0-0.5)))[2]
ixM = findmin(abs.(t[1:end-1] .- (w0+0.5)))[2]
tdt2YM[i,1:end] .= t2YM[i,2]
tdt2YM[i,ixm:ixM] = [(t2YM[i,j+1] - t2YM[i,j-1]) / (t[j+1] - t[j-1]) * t[j] for j in ixm:ixM]
end
end
return t2YM, tdt2YM, W_obs, t
end
function get_YM_dYM(path::String, ens::EnsInfo; rw=false, ws::ADerrors.wspace=ADerrors.wsg, w0::Union{Float64, Nothing}=nothing, tau::Union{Float64, Nothing}=nothing)
path_ms = joinpath(path, ens.id, "gf")
path_ms = filter(x->occursin(".dat", x), readdir(path_ms, join=true))
Y = read_ms.(path_ms, dtr=ens.dtr)
truncate_data!(Y, ens.cnfg)
nr = length(Y)
Ysl = getfield.(Y, :obs)
t = getfield.(Y, :t)
t = t[1]
id = getfield.(Y, :id)
replica = size.(Ysl, 1)
L = ens.L
id = ens.id
#T = length(Y[:,1]) - y0
y0 = 1 ## assumes this is the case, hardcoded, some ensembles will not fulfil !
println("WARNING!: make sure t_src is 1 in this ensemble")
#Truncation
if id in keys(ADerrors.wsg.str2id)
n_ws = findfirst(x-> x == ws.str2id[id], ws.map_nob)
if !isnothing(n_ws)
ivrep_ws = ws.fluc[n_ws].ivrep
if length(replica) != length(ivrep_ws)
error("Different number of replicas")
end
for k = 1:length(replica)
if replica[k] > ivrep_ws[k]
println("Automatic truncation in Ysl ", ivrep_ws[k], " / ", replica[k], ". R = ", k)
Ysl[k] = Ysl[k][1:ivrep_ws[k], :, :]
elseif replica[k] < ivrep_ws[k]
error("Automatic truncation failed. R = ", replica[k], "\nTry using truncate_data!")
end
end
replica = size.(Ysl, 1)
end
end
tmp = Ysl[1]
[tmp = cat(tmp, Ysl[k], dims=1) for k = 2:nr]
xmax = size(tmp, 2)
T = xmax - 1 - y0
Y_aux = Matrix{uwreal}(undef, xmax, length(t))
if rw
path_rw = joinpath(path, ens.id, "rwf")
path_rw = filter(x->occursin(".dat", x), readdir(path_rw, join=true))
if ens.id in ["H105", "J500", "J501"]
rwf = [read_ms1(path_rw[i], v=ens.vrw[i]) for i in 1:length(ens.vrw)]
[Ysl[k] = Ysl[k][1:size(rwf[k],2), :, :] for k in 1:length(Ysl)]
else
rwf = read_ms1.(path_rw, v=ens.vrw)
end
Ysl_r, W = juobs.apply_rw(Ysl, rwf)
tmp_r = Ysl_r[1]
tmp_W = W[1]
[tmp_r = cat(tmp_r, Ysl_r[k], dims=1) for k = 2:nr]
[tmp_W = cat(tmp_W, W[k], dims=1) for k = 2:nr]
W_obs = uwreal(tmp_W, id, replica, collect(1:length(tmp_W)), sum(replica))
WY_aux = Matrix{uwreal}(undef, xmax, length(t))
end
for i = 1:xmax
k = 1
for j = 1:length(t)
if !rw
Y_aux[i, k] = uwreal(tmp[:, i, j], id, replica)
else
WY_aux[i, k] = uwreal(tmp_r[:, i, j], id, replica, collect(1:length(tmp_W)), sum(replica))
Y_aux[i, k] = WY_aux[i, k] / W_obs
end
k = k + 1
end
end
if tau == nothing
t2YM = similar(Y_aux)
tdt2YM = Matrix{uwreal}(undef,size(t2YM)[1],size(t2YM)[2]-2)
else
tau_ind = Int64(div(tau, t[2]-t[1]))
if tau >= 0.0
global t = t[1:end-tau_ind]
elseif tau < 0.0
global t = t[1-tau_ind:end]
end
t2YM = Matrix{uwreal}(undef,size(Y_aux)[1],length(t))
tdt2YM = Matrix{uwreal}(undef,size(t2YM)[1],size(t2YM)[2]-2)
end
for i in 1:length(Y_aux[:,1])
if tau == nothing
t2YM[i,:] = Y_aux[i,:] .* t .^ 2 ./ L ^ 3
else
if tau >= 0.0
t2YM[i,1:end] = Y_aux[i,1+tau_ind:end] .* t .^ 2 ./ L ^ 3
elseif tau < 0.0
t2YM[i,1:end] = Y_aux[i,1:end+tau_ind] .* t .^ 2 ./ L ^ 3
end
end
end
for i in 1:length(t2YM[:,1])
if isnothing(w0)
tdt2YM[i,1:end] = [(t2YM[i,j+1] - t2YM[i,j-1]) / (t[j+1] - t[j-1]) * t[j] for j in 2:length(t2YM[i,:])-1]
global t_aux = t[2:end-1]
else
global t_aux = t[2:end-1]
ixm = findmin(abs.(t_aux .- (w0-0.5)))[2]
ixM = findmin(abs.(t_aux[1:end-1] .- (w0+0.5)))[2]
tdt2YM[i,1:ixm-1] .= t2YM[i,2]
tdt2YM[i,ixm:end] = [(t2YM[i,j+1] - t2YM[i,j-1]) / (t[j+1] - t[j-1]) * t[j] for j in ixm+1:length(t2YM[i,:])-1]
end
end
return t2YM, tdt2YM, W_obs, t, t_aux
end
function read_mesons_multichunks(path::String, ens::String, g1::String="G5", g2::String="G5"; legacy::Bool=false)
idx_ts001 = findall(x->occursin("ts001",x), db[ens])
idx_tsT = findall(x->!occursin("ts001",x), db[ens])
store_cdata_aux = []
for i in db[ens]
aux = filter(x->occursin(i, x), readdir(path, join=true))
data_chunk = read_mesons(aux, g1, g2, legacy=legacy);
push!(store_cdata_aux, data_chunk)
end
#=
if ens == "E300"
for i in 1:length(idx_ts001)-1
concat_data!(store_cdata_aux[idx_ts001[1]][1:2:end], store_cdata_aux[idx_ts001[i+1]])
end
concat_data!(store_cdata_aux[idx_tsT[1]], store_cdata_aux[idx_ts001[1]][2:2:end])
for i in 1:length(idx_tsT)-1
concat_data!(store_cdata_aux[idx_tsT[1]], store_cdata_aux[idx_tsT[i+1]])
end
store_cdata_aux[idx_ts001[1]] = store_cdata_aux[idx_ts001[1]][1:2:end]
else
for i in 1:length(idx_ts001)-1
concat_data!(store_cdata_aux[idx_ts001[1]], store_cdata_aux[idx_ts001[i+1]])
end
for i in 1:length(idx_tsT)-1
concat_data!(store_cdata_aux[idx_tsT[1]], store_cdata_aux[idx_tsT[i+1]])
end
end
=#
for i in 1:length(idx_ts001)-1
concat_data!(store_cdata_aux[idx_ts001[1]], store_cdata_aux[idx_ts001[i+1]])
end
for i in 1:length(idx_tsT)-1
concat_data!(store_cdata_aux[idx_tsT[1]], store_cdata_aux[idx_tsT[i+1]])
end
dat_ts001 = store_cdata_aux[idx_ts001[1]]
dat_ts190 = store_cdata_aux[idx_tsT[1]]
dat = Vector{Vector{juobs.CData}}()
for i in 1:length(dat_ts001)
push!(dat, dat_ts001[i])
push!(dat, dat_ts190[i])
end
return dat
end
function read_mesons_correction_multichunks(path::String, ens::String, g1::String="G5", g2::String="G5"; legacy::Bool=false)
idx_ts001 = findall(x->occursin("ts001",x), db_c[ens])
idx_tsT = findall(x->!occursin("ts001",x), db_c[ens])
store_cdata_aux = []
for i in db_c[ens]
aux = filter(x->occursin(i, x), readdir(path, join=true))
data_chunk = read_mesons_correction(aux, g1, g2, legacy=legacy);
push!(store_cdata_aux, data_chunk)
end
for i in 1:length(idx_ts001)-1
concat_data!(store_cdata_aux[idx_ts001[1]], store_cdata_aux[idx_ts001[i+1]])
end
for i in 1:length(idx_tsT)-1
concat_data!(store_cdata_aux[idx_tsT[1]], store_cdata_aux[idx_tsT[i+1]])
end
dat_ts001 = store_cdata_aux[idx_ts001[1]]
if length(idx_tsT) >= 1
dat_ts190 = store_cdata_aux[idx_tsT[1]]
dat = Vector{Vector{juobs.CData}}()
for i in 1:length(dat_ts001)
push!(dat, dat_ts001[i])
push!(dat, dat_ts190[i])
end
else
dat = dat_ts001
end
return dat
end
function get_corr_TSM_multichunks(path::String, ens::EnsInfo; info=false)
path = joinpath(path, ens.id)
path_sl = joinpath.(path, "sloppy")
path_c = joinpath.(path, "correc")
path_rw = joinpath(path, "rwf_def")
path_rw = filter(x->occursin(".dat", x), readdir(path_rw, join=true))
if length(path_rw) == 0
path_rw = joinpath(path, "rwf")
global path_rw = filter(x->occursin(".dat", x), readdir(path_rw, join=true))
end
pp_dat = read_mesons_multichunks(path_sl, ens.id, "G5", "G5")
ap_dat = read_mesons_multichunks(path_sl, ens.id, "G5", "G0G5")
pp_dat_c = read_mesons_correction_multichunks(path_c, ens.id, "G5", "G5")
ap_dat_c = read_mesons_correction_multichunks(path_c, ens.id, "G5", "G0G5")
rwf = [read_ms1(path_rw[i], v=ens.vrw[i]) for i in 1:length(ens.vrw)]
cnfg_rw = size.(rwf,2)
cnfg_trunc_ts001 = [findall(pp_dat[1][i].vcfg .< cnfg_rw[i])[end] for i in 1:length(cnfg_rw)] ## rwf missing some configs at the end
cnfg_trunc_ts001_c = [findall(pp_dat_c[1][i].vcfg .< cnfg_rw[i])[end] for i in 1:length(cnfg_rw)]
cnfg_trunc_ts190 = [findall(pp_dat[2][i].vcfg .< cnfg_rw[i])[end] for i in 1:length(cnfg_rw)] ## rwf missing some configs at the end
cnfg_trunc_ts190_c = [findall(pp_dat_c[2][i].vcfg .< cnfg_rw[i])[end] for i in 1:length(cnfg_rw)]
truncate_data!(pp_dat[1:2:end], cnfg_trunc_ts001)
truncate_data!(ap_dat[1:2:end], cnfg_trunc_ts001)
truncate_data!(pp_dat_c[1:2:end], cnfg_trunc_ts001_c)
truncate_data!(ap_dat_c[1:2:end], cnfg_trunc_ts001_c)
truncate_data!(pp_dat[2:2:end], cnfg_trunc_ts190)
truncate_data!(ap_dat[2:2:end], cnfg_trunc_ts190)
truncate_data!(pp_dat_c[2:2:end], cnfg_trunc_ts190_c)
truncate_data!(ap_dat_c[2:2:end], cnfg_trunc_ts190_c)
if sym_bool[ens.id] == true
pp = corr_obs_TSM.(pp_dat[1:length(ap_dat_c)], pp_dat_c[1:length(ap_dat_c)], rw=rwf, L=ens.L, info=info, replica_sl=ens.cnfg, nms=sum(ens.cnfg))
ap = corr_obs_TSM.(ap_dat[1:length(ap_dat_c)], ap_dat_c[1:length(ap_dat_c)], rw=rwf, L=ens.L, info=info, replica_sl=ens.cnfg, nms=sum(ens.cnfg))
if ens.id == "E250"
pp_sym = [corr_sym_E250(pp[i], pp[i+1], +1) for i in 1:2:length(ap)]
ap_sym = [corr_sym_E250(ap[i], ap[i+1], -1) for i in 1:2:length(ap)]
elseif ens.id == "D450"
pp_sym = [corr_sym_D450(pp_ts001[i], pp_tsT[i], +1) for i in 1:length(pp_ts001)]
ap_sym = [corr_sym_D450(ap_ts001[i], ap_tsT[i], -1) for i in 1:length(pp_ts001)]
else
pp_sym = [corr_sym(pp[i], pp[i+1], +1) for i in 1:2:length(ap)]
ap_sym = [corr_sym(ap[i], ap[i+1], -1) for i in 1:2:length(ap)]
end
else
pp_ts001 = corr_obs_TSM.(pp_dat[1:2:length(ap_dat)], pp_dat_c[1:length(ap_dat_c)], rw=rwf, L=ens.L, info=info, replica_sl=ens.cnfg, nms=sum(ens.cnfg))
ap_ts001 = corr_obs_TSM.(ap_dat[1:2:length(ap_dat)], ap_dat_c[1:length(ap_dat_c)], rw=rwf, L=ens.L, info=info, replica_sl=ens.cnfg, nms=sum(ens.cnfg))
pp_tsT = corr_obs.(pp_dat[2:2:length(ap_dat)], rw=rwf, L=ens.L, info=info, replica=ens.cnfg, nms=sum(ens.cnfg))
ap_tsT = corr_obs.(ap_dat[2:2:length(ap_dat)], rw=rwf, L=ens.L, info=info, replica=ens.cnfg, nms=sum(ens.cnfg))
if ens.id == "E250"
pp_sym = [corr_sym_E250(pp_ts001[i], pp_tsT[i], +1) for i in 1:length(pp_ts001)]
ap_sym = [corr_sym_E250(ap_ts001[i], ap_tsT[i], -1) for i in 1:length(pp_ts001)]
elseif ens.id == "D450"
pp_sym = [corr_sym_D450(pp_ts001[i], pp_tsT[i], +1) for i in 1:length(pp_ts001)]
ap_sym = [corr_sym_D450(ap_ts001[i], ap_tsT[i], -1) for i in 1:length(pp_ts001)]
else
pp_sym = [corr_sym(pp_ts001[i], pp_tsT[i], +1) for i in 1:length(pp_ts001)]
ap_sym = [corr_sym(ap_ts001[i], ap_tsT[i], -1) for i in 1:length(pp_ts001)]
end
end
return pp_sym, ap_sym
end
function get_corr_TSM(path::String, ens::EnsInfo, g1::String, g2::String; rw=false, info=false, legacy=false, fs=false)
path_rw = joinpath(path, ens.id, "rwf_def")
path_rw = filter(x->occursin(".dat", x), readdir(path_rw, join=true))
if length(path_rw) == 0
path_rw = joinpath(path, ens.id, "rwf")
global path_rw = filter(x->occursin(".dat", x), readdir(path_rw, join=true))
end
path_sl = joinpath(path, ens.id, "sloppy")
path_sl = filter(x->occursin(".mesons.dat", x), readdir(path_sl, join=true))
path_c = joinpath(path, ens.id, "correc")
path_c = filter(x->occursin(".mesons.dat", x), readdir(path_c, join=true))
rwf = read_ms1.(path_rw, v=ens.vrw)
dat_sl = read_mesons([path_sl[i] for i in 1:length(path_sl)], g1, g2, legacy=legacy, id=ens.id)
dat_c = read_mesons_correction([path_c[i] for i in 1:length(path_c)], g1, g2, legacy=legacy, id=ens.id)
rw ? corr = [corr_obs_TSM(dat_sl[i], dat_c[i], L=ens.L, rw=rwf, info=info) for i in 1:length(dat_sl)] : corr = [corr_obs_TSM(dat_sl[i], dat_c[i], L=ens.L, info=info) for i in 1:length(dat_sl)]
if info == false
return corr
else
pp = getindex.(corr,1)
ppw = getindex.(corr,2)
w = getindex.(corr,3)
return pp, ppw, w[1]
end
end
function get_corr_wil(path::String, ens::EnsInfo, g1::String, g2::String; rw=false, info=false, legacy=false, fs=false)
path_rw = joinpath(path, ens.id, "rwf_def")
path_rw = filter(x->occursin(".dat", x), readdir(path_rw, join=true))
if length(path_rw) == 0
path_rw = joinpath(path, ens.id, "rwf")
global path_rw = filter(x->occursin(".dat", x), readdir(path_rw, join=true))
end
path = joinpath(path, ens.id, "wil")
path = filter(x->occursin(".mesons.dat", x), readdir(path, join=true))
if ens.id == "D200"
#rwf_1 = read_ms1.([path_rw[1]], v=ens.vrw)
#rwf_2 = read_ms1.([path_rw[2]], v=ens.vrw)
#rwf = [hcat(rwf_1[1],rwf_2[1])]
rwf = read_ms1.(path_rw, v=ens.vrw)
dat = read_mesons([path[1]], g1, g2, legacy=legacy, id=ens.id)
dat_2 = read_mesons([path[2]], g1, g2, legacy=legacy, id=ens.id)
concat_data!(dat,dat_2)
else
rwf = read_ms1.(path_rw, v=ens.vrw)
dat = read_mesons([path[i] for i in 1:length(path)], g1, g2, legacy=legacy, id=ens.id)
truncate_data!(dat,ens.cnfg)
end
rw ? corr = [corr_obs(dat[i], L=ens.L, rw=rwf, info=info, flag_strange=fs) for i in 1:length(dat)] : corr = [corr_obs(dat[i], L=ens.L, info=info) for i in 1:length(dat)]
if info == false
return corr
else
pp = getindex.(corr,1)
ppw = getindex.(corr,2)
w = getindex.(corr,3)
return pp, ppw, w[1]
end
end
function get_corr_tm(path::String, ens::EnsInfo, g1::String, g2::String; rw=false, info=false, legacy=false, fs=false)
path_rw = joinpath(path, ens.id, "rwf_def")
path_rw = filter(x->occursin(".dat", x), readdir(path_rw, join=true))
if length(path_rw) == 0
path_rw = joinpath(path, ens.id, "rwf")
global path_rw = filter(x->occursin(".dat", x), readdir(path_rw, join=true))
end
path = joinpath(path, ens.id, "tm")
path = filter(x->occursin(".mesons.dat", x), readdir(path, join=true))
if ens.id == "J303"
rwf = read_ms1.(path_rw, v=ens.vrw)
dat = read_mesons([path[1]], g1, g2, legacy=legacy, id=ens.id)
dat_2 = read_mesons([path[2]], g1, g2, legacy=legacy, id=ens.id)
concat_data!(dat,dat_2)
elseif ens.id == "D200"
#rwf_1 = read_ms1.([path_rw[1]], v=ens.vrw)
#rwf_2 = read_ms1.([path_rw[2]], v=ens.vrw)
#rwf = [hcat(rwf_2[1],rwf_1[1])]
rwf = read_ms1.(path_rw, v=ens.vrw)
dat = read_mesons([path[1]], g1, g2, legacy=legacy, id=ens.id)
dat_2 = read_mesons([path[2]], g1, g2, legacy=legacy, id=ens.id)
dat_3 = read_mesons([path[3]], g1, g2, legacy=legacy, id=ens.id)
concat_data!(dat,dat_3)
concat_data!(dat,dat_2)
elseif ens.id == "N300"
rwf = read_ms1.(path_rw, v=ens.vrw)
dat_1 = read_mesons([path[1]], g1, g2, legacy=legacy, id=ens.id)
dat = read_mesons([path[2]], g1, g2, legacy=legacy, id=ens.id)
truncate_data!(dat,[199])
concat_data!(dat,dat_1)
else
rwf = read_ms1.(path_rw, v=ens.vrw)
dat = read_mesons([path[i] for i in 1:length(path)], g1, g2, legacy=legacy, id=ens.id)
truncate_data!(dat,ens.cnfg)
end
rw ? corr = [corr_obs(dat[i], L=ens.L, rw=rwf, info=info) for i in 1:length(dat)] : corr = [corr_obs(dat[i], L=ens.L, info=info) for i in 1:length(dat)]
if info == false
return corr
else
pp = getindex.(corr,1)
ppw = getindex.(corr,2)
w = getindex.(corr,3)
return pp, ppw, w[1]
end
end
function read_ens_TSM(path::String, ens::EnsInfo; legacy=false, fs=false)
pp = get_corr_TSM(path, ens, "G5", "G5", rw=true, info=false, legacy=legacy);
ap = get_corr_TSM(path, ens, "G5", "G0G5", rw=true, info=false, legacy=legacy);
idx_wil = findall([pp[i].mu == [.0,.0] for i in 1:length(pp)]);
idx_tm = findall([pp[i].mu[1] != .0 for i in 1:length(pp)]);
pp_sym = [corr_sym(pp[i], pp[i+1], +1) for i in idx_wil[1]:2:idx_wil[end]-1];
ap_sym = [corr_sym(ap[i], ap[i+1], -1) for i in idx_wil[1]:2:idx_wil[end]-1];
pp_tm_sym = [corr_sym(pp[i], pp[i+div(length(idx_tm),2)], +1) for i in idx_tm[1]:idx_tm[1]+div(length(idx_tm),2)-1];
ap_tm_sym = [corr_sym(ap[i], ap[i+div(length(idx_tm),2)], -1) for i in idx_tm[1]:idx_tm[1]+div(length(idx_tm),2)-1];
pp_sym = [pp_sym[1:3]; pp_tm_sym]
ap_sym = [ap_sym[1:3]; ap_tm_sym]
return pp_sym, ap_sym
end
function read_ens_wil(path::String, ens::EnsInfo; legacy=false, fs=false)
pp, ppw, w = get_corr_wil(path, ens, "G5", "G5", rw=true, info=true, legacy=legacy);
pp_sym = [corr_sym(pp[i], pp[i+1], +1) for i in 1:2:length(pp)-1];
ap, apw, w = get_corr_wil(path, ens, "G5", "G0G5", rw=true, info=true, legacy=legacy);
ap_sym = [corr_sym(ap[i], ap[i+1], -1) for i in 1:2:length(ap)-1];
pp_d1 = get_corr_wil(path, ens, "G5_d1", "G5_d1", rw=true, legacy=legacy);
pp_d2 = get_corr_wil(path, ens, "G5_d2", "G5_d2", rw=true, legacy=legacy);
ap_d1 = get_corr_wil(path, ens, "G5_d1", "G0G5_d1", rw=true, legacy=legacy);
ap_d2 = get_corr_wil(path, ens, "G5_d2", "G0G5_d2", rw=true, legacy=legacy);
if ens.id == "D200"
dSdm = get_dSdm(path, ens)
aux = [hcat(dSdm[3], dSdm[1])]
aux = [hcat(aux[1], dSdm[2])]
dSdm = aux
else
dSdm = get_dSdm(path, ens)
end
pp_val = [[pp_d1[i], pp_d2[i]] for i in 1:length(pp_d1)];
ap_val = [[ap_d1[i], ap_d2[i]] for i in 1:length(ap_d1)];
corr = [[pp[i] for i in 1:length(pp)]; [ap[i] for i in 1:length(ap)]];
corr_val = [[pp_val[i] for i in 1:length(pp)]; [ap_val[i] for i in 1:length(ap)]];
corrw = [[ppw[i] for i in 1:length(pp)]; [apw[i] for i in 1:length(ap)]];
return pp_sym, ap_sym, corr, corr_val, corrw, dSdm, w
end
function read_ens_tm_sym(path::String, ens::EnsInfo; legacy=false)
pp, ppw, w = get_corr_tm(path, ens, "G5", "G5", rw=true, info=true, legacy=legacy);
pp_sym = [corr_sym(pp[i], pp[i+9], +1) for i in 1:9];
ap, apw, w = get_corr_tm(path, ens, "G5", "G0G5", rw=true, info=true, legacy=legacy);
ap_sym = [corr_sym(ap[i], ap[i+9], -1) for i in 1:9];
dSdm = get_dSdm(path, ens)
corrw = [[ppw[i] for i in 1:length(pp)]; [apw[i] for i in 1:length(ap)]];
return pp_sym, ap_sym, corrw, dSdm, w
end
function read_ens_tm(path::String, ens::EnsInfo; legacy=false)
pp, ppw, w = get_corr_tm(path, ens, "G5", "G5", rw=true, info=true, legacy=legacy);
pp_sym = [corr_sym(pp[i], pp[i+24], +1) for i in 1:24];
ap, apw, w = get_corr_tm(path, ens, "G5", "G0G5", rw=true, info=true, legacy=legacy);
ap_sym = [corr_sym(ap[i], ap[i+24], -1) for i in 1:24];
if ens.id == "D200"
dSdm = get_dSdm(path, ens)
aux = [hcat(dSdm[3], dSdm[1])]
aux = [hcat(aux[1], dSdm[2])]
dSdm = aux
else
dSdm = get_dSdm(path, ens)
end
corrw = [[ppw[i] for i in 1:length(pp)]; [apw[i] for i in 1:length(ap)]];
return pp_sym, ap_sym, corrw, dSdm, w
end
function read_ens_csv(ens::EnsInfo)
ix = ensemble_inv[ens.id]
path_ll = Path_ll[ix]
path_ls = Path_ls[ix]
path_ss = Path_ss[ix]
path_ll_sym = Path_ll_sym[ix]
path_ls_sym = Path_ls_sym[ix]
path_ss_sym = Path_ss_sym[ix]
path2_ll = Path2_ll[ix]
path2_ls = Path2_ls[ix]
path2_ss = Path2_ss[ix]
path2_ll_sym = Path2_ll_sym[ix]
path2_ls_sym = Path2_ls_sym[ix]
path2_ss_sym = Path2_ss_sym[ix]
pp_ll = [csv2Corr(path_ll[i], ens_cnfg[ens.id], trunc=ens.cnfg, id=ens.id) for i in 1:length(path_ll)]
pp_ls = [csv2Corr(path_ls[i], ens_cnfg[ens.id], trunc=ens.cnfg, id=ens.id) for i in 1:length(path_ls)]
pp_ss = [csv2Corr(path_ss[i], ens_cnfg[ens.id], trunc=ens.cnfg, id=ens.id) for i in 1:length(path_ss)]
ap_ll = [csv2Corr(path2_ll[i], ens_cnfg[ens.id], trunc=ens.cnfg, id=ens.id) for i in 1:length(path2_ll)]
ap_ls = [csv2Corr(path2_ls[i], ens_cnfg[ens.id], trunc=ens.cnfg, id=ens.id) for i in 1:length(path2_ls)]
ap_ss = [csv2Corr(path2_ss[i], ens_cnfg[ens.id], trunc=ens.cnfg, id=ens.id) for i in 1:length(path2_ss)]
pp_ll_2 = [csv2Corr(path_ll_sym[i], ens_cnfg[ens.id], trunc=ens.cnfg, id=ens.id) for i in 1:length(path_ll_sym)]
pp_ls_2 = [csv2Corr(path_ls_sym[i], ens_cnfg[ens.id], trunc=ens.cnfg, id=ens.id) for i in 1:length(path_ls_sym)]
pp_ss_2 = [csv2Corr(path_ss_sym[i], ens_cnfg[ens.id], trunc=ens.cnfg, id=ens.id) for i in 1:length(path_ss_sym)]
ap_ll_2 = [csv2Corr(path2_ll_sym[i], ens_cnfg[ens.id], trunc=ens.cnfg, id=ens.id) for i in 1:length(path2_ll_sym)]
ap_ls_2 = [csv2Corr(path2_ls_sym[i], ens_cnfg[ens.id], trunc=ens.cnfg, id=ens.id) for i in 1:length(path2_ls_sym)]
ap_ss_2 = [csv2Corr(path2_ss_sym[i], ens_cnfg[ens.id], trunc=ens.cnfg, id=ens.id) for i in 1:length(path2_ss_sym)]
pp_ll_sym = [corr_sym(pp_ll[i],pp_ll_2[i],+1) for i in 1:1:length(pp_ll)]
pp_ls_sym = [corr_sym(pp_ls[i],pp_ls_2[i],+1) for i in 1:1:length(pp_ls)]
ap_ll_sym = [corr_sym(ap_ll[i],ap_ll_2[i],-1) for i in 1:1:length(ap_ll)]
ap_ls_sym = [corr_sym(ap_ls[i],ap_ls_2[i],-1) for i in 1:1:length(ap_ls)]
pp_ss_sym = [corr_sym(pp_ss[i],pp_ss_2[i],+1) for i in 1:1:length(pp_ss)]
ap_ss_sym = [corr_sym(ap_ss[i],ap_ss_2[i],-1) for i in 1:1:length(ap_ss)]
i=j=1
pp_sym = Array{juobs.Corr,1}()
ap_sym = Array{juobs.Corr,1}()
while i < length(pp_ll_sym)
pp_sym = vcat(pp_sym, [pp_ll_sym[i:i+2]; pp_ls_sym[j:j+8]; pp_ss_sym[i:i+2]])
ap_sym = vcat(ap_sym, [ap_ll_sym[i:i+2]; ap_ls_sym[j:j+8]; ap_ss_sym[i:i+2]])
i+=3
j+=9
end
return pp_sym, ap_sym, [pp_ll;pp_ls;pp_ss;pp_ll_2;pp_ls_2;pp_ss_2], [ap_ll;ap_ls;ap_ss;ap_ll_2;ap_ls_2;ap_ss_2]
end end
\ No newline at end of file
#TODO: apply_rw with gaps function apply_rw(data::Array{Float64}, W::Matrix{Float64}, vcfg::Union{Nothing, Vector{Int32}}=nothing; id::Union{String, Nothing}=nothing, fs::Bool=false)
function apply_rw(data::Array{Float64}, W::Matrix{Float64}) nc = size(W,2)
nc = size(data, 1) if isnothing(vcfg)
W1 = W[1, 1:nc] vcfg = collect(1:nc)
W2 = W[2, 1:nc] end
data_r = data .* W1 .* W2 if fs == false
return (data_r, W1 .* W2) if id == "A653"
rw1 = W[1, 1:nc]
rw = rw1
data_r = data .* rw[vcfg]
return (data_r, rw)
else
rw1 = W[1, 1:nc]
rw2 = W[2, 1:nc]
rw = rw1 .* rw2
data_r = data .* rw[vcfg]
return (data_r, rw)
end
else
rw1 = W[1, 1:nc]
rw2 = W[2, 1:nc]
rw_s = [1.0 for i in 1:nc]
if id in ["H105r001", "H105r002", "H105r005", "J303", "J303r003"]
rw_s[flag_s[id]] .= -1.0
end
rw = rw1 .* rw2 .* rw_s
data_r = data .* rw[vcfg]
return (data_r, rw)
end
end end
function apply_rw(data::Vector{<:Array{Float64}}, W::Vector{Matrix{Float64}}) function apply_rw(data::Vector{<:Array{Float64}}, W::Vector{Matrix{Float64}}, vcfg::Union{Nothing, Vector{Vector{Int32}}}=nothing; id::Union{String, Nothing}=nothing, fs::Bool=false)
if length(W) != length(data) nc = size.(W, 2)
error("Lenghts must match") if isnothing(vcfg)
vcfg = [collect(1:nc[k]) for k=1:length(nc)]
end end
nc = size.(data, 1)
rw1 = [W[k][1, 1:nc[k]] for k=1:length(W)] if fs == false
rw2 = [W[k][2, 1:nc[k]] for k=1:length(W)] if id == "A653"
rw = [rw1[k] .* rw2[k] for k=1:length(W)] rw1 = [W[k][1, 1:nc[k]] for k=1:length(W)]
data_r = [data[k] .* rw[k] for k=1:length(data)] rw = [rw1[k] for k =1:length(W)]
return (data_r, rw) data_r = [data[k] .* rw[k][vcfg[k]] for k=1:length(data)]
return (data_r, rw)
else
rw1 = [W[k][1, 1:nc[k]] for k=1:length(W)]
rw2 = [W[k][2, 1:nc[k]] for k=1:length(W)]
rw = [rw1[k] .* rw2[k] for k =1:length(W)]
data_r = [data[k] .* rw[k][vcfg[k]] for k=1:length(data)]
return (data_r, rw)
end
else
rw1 = [W[k][1, 1:nc[k]] for k=1:length(W)]
rw2 = [W[k][2, 1:nc[k]] for k=1:length(W)]
rw_s = [[1.0 for i in 1:nc[k]] for k=1:length(W)]
if id == "H105"
rw_s[1][flag_s["H105r001"]] .= -1.0
rw_s[2][flag_s["H105r002"]] .= -1.0
elseif id == "H105r005"
rw_s[1][flag_s["H105r005"]] .= -1.0
elseif id == "J303" || id == "J303r003"
rw_s[1][flag_s["J303r003"]] .= -1.0
end
rw = [rw1[k] .* rw2[k] .* rw_s[k] for k =1:length(W)]
data_r = [data[k] .* rw[k][vcfg[k]] for k=1:length(data)]
return (data_r, rw)
end
end end
function check_corr_der(obs::Corr, derm::Vector{Corr}) function check_corr_der(obs::Corr, derm::Vector{Corr}; new_version::Bool=false)
g1 = Vector{String}(undef, 0) g1 = Vector{String}(undef, 0)
g2 = Vector{String}(undef, 0) g2 = Vector{String}(undef, 0)
for d in derm for d in derm
aux = [d.gamma[1], d.gamma[2]] if !new_version
push!(g1, aux[1][1:end-3]) aux = [d.gamma[1], d.gamma[2]]
push!(g2, aux[2][1:end-3]) push!(g1, aux[1][1:end-3])
push!(g2, aux[2][1:end-3])
else
aux = [d.gamma[1], d.gamma[2]]
push!(g1, aux[1][1:end])
push!(g2, aux[2][1:end])
end
end end
h = copy(derm) h = copy(derm)
...@@ -68,6 +120,8 @@ The correlator can be normalized with the volume factor if `L` is fixed. ...@@ -68,6 +120,8 @@ The correlator can be normalized with the volume factor if `L` is fixed.
The flag `info` provides extra output that contains information about the primary observables. The function returns the primary observables ``<WO>`` and ``<W>`` The flag `info` provides extra output that contains information about the primary observables. The function returns the primary observables ``<WO>`` and ``<W>``
(it returns the observable <O> if rw=nothing) (it returns the observable <O> if rw=nothing)
If you turn `flag_strange=true` and `rw` is passed, will reweight to undo negative sign of the strange quark determinant.
```@example ```@example
#Single replica #Single replica
data = read_mesons(path, "G5", "G5") data = read_mesons(path, "G5", "G5")
...@@ -90,17 +144,21 @@ corr_pp = corr_obs.(data) ...@@ -90,17 +144,21 @@ corr_pp = corr_obs.(data)
corr_pp_r = corr_obs.(data, rw=[rw1, rw2]) corr_pp_r = corr_obs.(data, rw=[rw1, rw2])
``` ```
""" """
function corr_obs(cdata::CData; real::Bool=true, rw::Union{Array{Float64, 2}, Nothing}=nothing, L::Int64=1, info::Bool=false) function corr_obs(cdata::CData; real::Bool=true, rw::Union{Array{Float64, 2}, Nothing}=nothing, L::Int64=1, info::Bool=false, idm::Union{Vector{Int64},Nothing}=nothing, nms::Int64=Int64(maximum(cdata.vcfg)), flag_strange::Bool=false)
real ? data = cdata.re_data ./ L^3 : data = cdata.im_data ./ L^3 real ? data = cdata.re_data ./ L^3 : data = cdata.im_data ./ L^3
nt = size(data)[2] nt = size(data)[2]
idm = isnothing(idm) ? Int64.(cdata.vcfg) : idm
if isnothing(rw) if isnothing(rw)
obs = [uwreal(data[:, x0], cdata.id) for x0 = 1:nt] # idm = isnothing(idm) ? collect(1:nms) : idm
obs = [uwreal(data[:, x0], cdata.id, idm, nms) for x0 = 1:nt]
else else
data_r, W = apply_rw(data, rw) # idm = isnothing(idm) ? collect(1:nms) : idm
ow = [uwreal(data_r[:, x0], cdata.id) for x0 = 1:nt] data_r, W = apply_rw(data, rw, cdata.vcfg, id=cdata.id, fs=flag_strange)
W_obs = uwreal(W, cdata.id) ow = [uwreal(data_r[:, x0], cdata.id, idm, nms) for x0 = 1:nt]
W_obs = uwreal(W, cdata.id, idm, nms)
obs = [ow[x0] / W_obs for x0 = 1:nt] obs = [ow[x0] / W_obs for x0 = 1:nt]
end end
...@@ -114,11 +172,22 @@ function corr_obs(cdata::CData; real::Bool=true, rw::Union{Array{Float64, 2}, No ...@@ -114,11 +172,22 @@ function corr_obs(cdata::CData; real::Bool=true, rw::Union{Array{Float64, 2}, No
end end
#function corr_obs for R != 1 #function corr_obs for R != 1
#TODO: vcfg with gaps #TODO: vcfg with gaps
function corr_obs(cdata::Array{CData, 1}; real::Bool=true, rw::Union{Array{Array{Float64, 2}, 1}, Nothing}=nothing, L::Int64=1, info::Bool=false) function corr_obs(cdata::Array{CData, 1}; real::Bool=true, rw::Union{Array{Array{Float64, 2}, 1}, Nothing}=nothing, L::Int64=1, info::Bool=false, replica::Union{Vector{Int64},Nothing}=nothing, idm::Union{Vector{Int64},Nothing}=nothing, nms::Union{Int64, Nothing}=nothing, flag_strange::Bool=false)
nr = length(cdata) nr = length(cdata)
id = getfield.(cdata, :id) id = getfield.(cdata, :id)
vcfg = getfield.(cdata, :vcfg) vcfg = getfield.(cdata, :vcfg)
replica = Int64.(maximum.(vcfg)) replica = isnothing(replica) ? Int64.(maximum.(vcfg)) : replica
nms = isnothing(nms) ? sum(replica) : nms
nr = length(vcfg)
if isnothing(idm)
a = vcfg[1]
for i in 2:nr
a = [a; a[end] .+ vcfg[i]]
end
idm = Int64.(a)
end
if !all(id .== id[1]) if !all(id .== id[1])
error("IDs are not equal") error("IDs are not equal")
...@@ -131,16 +200,17 @@ function corr_obs(cdata::Array{CData, 1}; real::Bool=true, rw::Union{Array{Array ...@@ -131,16 +200,17 @@ function corr_obs(cdata::Array{CData, 1}; real::Bool=true, rw::Union{Array{Array
if isnothing(rw) if isnothing(rw)
tmp = data[1] tmp = data[1]
[tmp = cat(tmp, data[k], dims=1) for k = 2:nr] [tmp = cat(tmp, data[k], dims=1) for k = 2:nr]
obs = [uwreal(tmp[:, x0], id[1], replica) for x0 = 1:nt] obs = [uwreal(tmp[:, x0], id[1], replica, idm, nms) for x0 = 1:nt]
else else
data_r, W = apply_rw(data, rw) data_r, W = apply_rw(data, rw, vcfg, id=id[1], fs=flag_strange)
tmp = data_r[1] tmp = data_r[1]
tmp_W = W[1] tmp_W = W[1]
[tmp = cat(tmp, data_r[k], dims=1) for k = 2:nr] [tmp = cat(tmp, data_r[k], dims=1) for k = 2:nr]
[tmp_W = cat(tmp_W, W[k], dims=1) for k = 2:nr] [tmp_W = cat(tmp_W, W[k], dims=1) for k = 2:nr]
ow = [uwreal(tmp[:, x0], id[1], replica) for x0 = 1:nt] ow = [uwreal(tmp[:, x0], id[1], replica, idm, nms) for x0 = 1:nt]
W_obs = uwreal(tmp_W, id[1], replica) W_obs = uwreal(tmp_W, id[1], replica, idm, nms)
obs = [ow[x0] / W_obs for x0 = 1:nt] obs = [ow[x0] / W_obs for x0 = 1:nt]
end end
if info && !isnothing(rw) if info && !isnothing(rw)
...@@ -152,46 +222,113 @@ function corr_obs(cdata::Array{CData, 1}; real::Bool=true, rw::Union{Array{Array ...@@ -152,46 +222,113 @@ function corr_obs(cdata::Array{CData, 1}; real::Bool=true, rw::Union{Array{Array
end end
end end
function corr_obs_TSM(cdata1::CData, cdata2::CData; real::Bool=true, rw::Union{Array{Float64, 2}, Nothing}=nothing, L::Int64=1, info::Bool=false) @doc raw"""
if cdata1.id != cdata2.id corr_obs_TSM(cdata_sl::CData, cdata_corr::CData; real::Bool=true, rw::Union{Array{Float64, 2}, Nothing}=nothing, L::Int64=1, info::Bool=false, idm_sl::Union{Vector{Int64},Nothing}=nothing, idm_corr::Union{Vector{Int64},Nothing}=nothing, nms::Int64=Int64(maximum(cdata_sl.vcfg)))
error("Error: cdata1 id != cdata2 id")
corr_obs(cdata::Array{CData, 1}; real::Bool=true, rw::Union{Array{Array{Float64, 2}, 1}, Nothing}=nothing, L::Int64=1, info::Bool=false)
Creates a `Corr` struct for Truncated Solver Method (TSM) with the given `CData` structs `cdata_sl` and `cdata_ex` for a single replica.
Two arrays of `CData` can be passed as argument for multiple replicas.
The flag `real` select the real or imaginary part of the correlator.
If `rw` is specified, the method applies reweighting. `rw` is passed as a matrix of Float64 (`read_ms1`)
The correlator can be normalized with the volume factor if `L` is fixed.
The flag `info` provides extra output that contains information about the primary observables. The function returns the primary observables ``<WO>`` and ``<W>``
(it returns the observable <O> if rw=nothing)
The flags `idm_sl`, `idm_corr` and `nms` can be used if the observable is not measure in every configuration. In particular:
`idm_sl::Vector{Int64}` If given, label the configurations where the sloppy observables is measured. Not required if sloppy is full statistics.
`idm_corr::Vector{Int64}` If given, label the configurations where the correction observables is measured. Not required if correction is full statistics.
`nms::Int64` Total number of measurements in the ensembles. By default, nms=maximum(cdata_sl.vcfg) it is assumed that the sloppy observable is full statistics, while the exact observable is not.
Typically, only `idm_corr` has to be passed, if the exact observable is not full statistics.
By playing with these three flags you ensure that the Gamma method is still working even if the configurations between sloppy and correction do not match.
```@example
#Single replica
data_sloppy = read_mesons(path_sl, "G5", "G5")
data_correction = read_mesons_correction(path_corr, "G5", "G5")
rw = read_ms1(path_rw)
corr_pp = corr_obs_TSM.(data_sloppy, data_correction)
corr_pp_r = corr_obs_TSM.(data_sloppy, data_correction rw=rw)
#Single replica + Info
data_sloppy = read_mesons(path_sl, "G5", "G5")
data_correction = read_mesons_correction(path_corr, "G5", "G5")
rw = read_ms1(path_rw)
corr_pp, O = corr_obs_TSM(data_sloppy, data_correction, info=true)
corr_pp_r, WO, W = corr_obs(data_sloppy, data_correction,, rw=rw, info=true)
#Two replicas
data = read_mesons([path_r1, path_r2], "G5", "G5")
rw1 = read_ms1(path_rw1)
rw2 = read_ms1(path_rw2)
corr_pp = corr_obs.(data)
corr_pp_r = corr_obs.(data, rw=[rw1, rw2])
```
"""
function corr_obs_TSM(cdata_sl::CData, cdata_corr::CData; real::Bool=true, rw::Union{Array{Float64, 2}, Nothing}=nothing, L::Int64=1, info::Bool=false, idm_sl::Union{Vector{Int64},Nothing}=nothing, idm_corr::Union{Vector{Int64},Nothing}=nothing, nms::Union{Int64,Nothing}=nothing, flag_strange::Bool=false)
# cdata1 is sloppy, cdata2 is correction
if cdata_sl.id != cdata_corr.id
error("Error: cdata_sl id != cdata_corr id")
end end
if cdata1.header != cdata2.header # Base.:(==) and Base.:(!=) are redifined in juobs_types.jl if cdata_sl.header != cdata_corr.header # Base.:(==) and Base.:(!=) are redifined in juobs_types.jl
error("Error: cdata1 header != cdata2 header") error("Error: cdata_sl header != cdata_corr header")
end end
data1 = real ? cdata1.re_data ./ L^3 : cdata1.im_data ./ L^3 id = getfield(cdata_sl, :id)
data2 = real ? cdata2.re_data ./ L^3 : cdata2.im_data ./ L^3
nt = size(data1, 2) vcfg_sl = getfield(cdata_sl, :vcfg)
id = cdata1.id vcfg_corr = getfield(cdata_corr, :vcfg)
nms = isnothing(nms) ? Int64(maximum(vcfg_sl)) : nms # assuming vcfg_sl >= vcfg_corr
idm_sl = isnothing(idm_sl) ? Int64.(vcfg_sl) : idm_sl
idm_corr = isnothing(idm_corr) ? Int64.(vcfg_corr) : idm_corr
data1 = real ? cdata_sl.re_data ./ L^3 : cdata_sl.im_data ./ L^3
data2 = real ? cdata_corr.re_data ./ L^3 : cdata_corr.im_data ./ L^3
nt = size(data1, 2) # 1
# added automatic idsm detection
# nms_vec_sl = cdata_sl.vcfg
# nms_vec_corr = cdata_corr.vcfg
# delta_cnfg_sl = nms_vec_sl[2] - nms_vec_sl[1]
# delta_cnfg_corr = nms_vec_corr[2] - nms_vec_corr[1]
# idm_sl = isnothing(idm_sl) ? collect(1:delta_cnfg_sl:nms_vec_sl[end]) : idm_sl
# idm_corr = isnothing(idm_corr) ? collect(1:delta_cnfg_corr:nms_vec_corr[end]) : idm_corr
# end section to be tested
if isnothing(rw) if isnothing(rw)
obs1 = [uwreal(data1[:, x0], id) for x0 = 1:nt] obs1 = [uwreal(data1[:, x0], id, idm_sl, nms) for x0 = 1:nt]
obs2 = [uwreal(data2[:, x0], id) for x0 = 1:nt] obs2 = [uwreal(data2[:, x0], id, idm_corr, nms) for x0 = 1:nt]
else else
data1_r, W = apply_rw(data1, rw) data1_r, W_sl = apply_rw(data1, rw, vcfg_sl, id=id, fs=flag_strange)
data2_r, W = apply_rw(data2, rw) data2_r, W_corr = apply_rw(data2, rw, vcfg_corr, id=id, fs=flag_strange)
ow1 = [uwreal(data1_r[:, x0], id, idm_sl, nms) for x0 = 1:nt]
ow2 = [uwreal(data2_r[:, x0], id, idm_corr, nms) for x0 = 1:nt]
ow1 = [uwreal(data1_r[:, x0], id) for x0 = 1:nt] W_obs_sl = uwreal(W_sl, id, idm_sl, nms)
ow2 = [uwreal(data2_r[:, x0], id) for x0 = 1:nt] W_obs_corr = uwreal(W_corr, id, idm_corr, nms)
W_obs = uwreal(W, id) obs1 = [ow1[x0] / W_obs_sl for x0 = 1:nt]
obs2 = [ow2[x0] / W_obs_corr for x0 = 1:nt]
obs1 = [ow1[x0] / W_obs for x0 = 1:nt]
obs2 = [ow2[x0] / W_obs for x0 = 1:nt]
end end
if info && !isnothing(rw) if info && !isnothing(rw)
return (Corr(obs1 + obs2, cdata1), ow1, ow2, W_obs) return (Corr(obs1 + obs2, cdata_sl), ow1, ow2, W_obs_sl)
elseif info && isnothing(rw) elseif info && isnothing(rw)
return (Corr(obs1 + obs2, cdata1), obs1, obs2) return (Corr(obs1 + obs2, cdata_sl), obs1, obs2)
else else
return Corr(obs1 + obs2, cdata1) return Corr(obs1 + obs2, cdata_sl)
end end
end end
function corr_obs_TSM(cdata1::Array{CData, 1}, cdata2::Array{CData, 1}; real::Bool=true, rw::Union{Array{Array{Float64, 2}, 1}, Nothing}=nothing, L::Int64=1, info::Bool=false) function corr_obs_TSM(cdata1::Array{CData, 1}, cdata2::Array{CData, 1}; real::Bool=true, rw::Union{Array{Array{Float64, 2}, 1}, Nothing}=nothing, L::Int64=1, info::Bool=false, replica_sl::Union{Vector{Int64},Nothing}=nothing, idm_sl::Union{Vector{Int64},Nothing}=nothing, idm_corr::Union{Vector{Int64},Nothing}=nothing, nms::Union{Int64, Nothing}=nothing, flag_strange::Bool=false)
if any(getfield.(cdata1, :id) .!= getfield.(cdata2, :id)) if any(getfield.(cdata1, :id) .!= getfield.(cdata2, :id))
error("Error: cdata1 id != cdata2 id") error("Error: cdata1 id != cdata2 id")
end end
...@@ -200,50 +337,69 @@ function corr_obs_TSM(cdata1::Array{CData, 1}, cdata2::Array{CData, 1}; real::Bo ...@@ -200,50 +337,69 @@ function corr_obs_TSM(cdata1::Array{CData, 1}, cdata2::Array{CData, 1}; real::Bo
end end
id = getfield.(cdata1, :id) id = getfield.(cdata1, :id)
vcfg = getfield.(cdata1, :vcfg)
replica = Int64.(maximum.(vcfg))
if !all(id .== id[1]) if !all(id .== id[1])
error("IDs are not equal") error("IDs are not equal")
end end
vcfg_sl = getfield.(cdata1, :vcfg)
replica_sl = isnothing(replica_sl) ? Int64.(maximum.(vcfg_sl)) : replica_sl
vcfg_corr = getfield.(cdata2, :vcfg)
replica_corr = Int64.(maximum.(vcfg_corr))
nms = isnothing(nms) ? sum(replica_sl) : nms # assuming vcfg_sl >= vcfg_corr
nr = length(vcfg_sl)
if isnothing(idm_sl)
a = vcfg_sl[1]
for i in 2:nr
a = [a; a[end] .+ vcfg_sl[i]]
end
idm_sl = Int64.(a)
end
if isnothing(idm_corr)
a = vcfg_corr[1]
for i in 2:nr
a = [a; a[end] .+ vcfg_corr[i]]
end
idm_corr = Int64.(a)
end
data1 = real ? getfield.(cdata1, :re_data) ./ L^3 : getfield.(cdata1, :im_data) ./ L^3 data1 = real ? getfield.(cdata1, :re_data) ./ L^3 : getfield.(cdata1, :im_data) ./ L^3
data2 = real ? getfield.(cdata2, :re_data) ./ L^3 : getfield.(cdata2, :im_data) ./ L^3 data2 = real ? getfield.(cdata2, :re_data) ./ L^3 : getfield.(cdata2, :im_data) ./ L^3
nt = size(data1[1], 2) nt = size(data1[1], 2)
if isnothing(rw) if isnothing(rw)
tmp1 = cat(data1..., dims=1) tmp1 = cat(data1..., dims=1)
tmp2 = cat(data2..., dims=1) tmp2 = cat(data2..., dims=1)
obs1 = [uwreal(tmp1[:, x0], id[1], replica) for x0 = 1:nt] obs1 = [uwreal(tmp1[:, x0], id[1], replica_sl, idm_sl, nms) for x0 = 1:nt]
obs2 = [uwreal(tmp2[:, x0], id[1], replica) for x0 = 1:nt] obs2 = [uwreal(tmp2[:, x0], id[1], replica_sl, idm_corr, nms) for x0 = 1:nt]
else else
data1_r, W = apply_rw(data1, rw) data1_r, W = apply_rw(data1, rw, vcfg_sl, id=id[1], fs=flag_strange)
data2_r, W = apply_rw(data2, rw) data2_r, W = apply_rw(data2, rw, vcfg_corr, id=id[1], fs=flag_strange)
tmp1 = cat(data1_r..., dims=1) tmp1 = cat(data1_r..., dims=1)
tmp2 = cat(data2_r..., dims=1) tmp2 = cat(data2_r..., dims=1)
tmp_W = cat(W..., dims=1) tmp_W = cat(W..., dims=1)
ow1 = [uwreal(tmp1[:, x0], id[1], replica) for x0 = 1:nt] ow1 = [uwreal(tmp1[:, x0], id[1], replica_sl, idm_sl, nms) for x0 = 1:nt]
ow2 = [uwreal(tmp2[:, x0], id[1], replica) for x0 = 1:nt] ow2 = [uwreal(tmp2[:, x0], id[1], replica_sl, idm_corr, nms) for x0 = 1:nt]
W_obs = uwreal(tmp_W, id[1], replica) W_obs = uwreal(tmp_W, id[1], replica_sl, idm_sl, nms)
obs1 = [ow1[x0] / W_obs for x0 = 1:nt] obs1 = [ow1[x0] / W_obs for x0 = 1:nt]
obs2 = [ow2[x0] / W_obs for x0 = 1:nt] obs2 = [ow2[x0] / W_obs for x0 = 1:nt]
end end
if info && !isnothing(rw) if info && !isnothing(rw)
return (Corr(obs1 + obs2, cdata), ow1, ow2, W_obs) return (Corr(obs1 + obs2, cdata1), ow1, ow2, W_obs)
elseif info && isnothing(rw) elseif info && isnothing(rw)
return (Corr(obs1 + obs2, cdata), obs1, obs2) return (Corr(obs1 + obs2, cdata1), obs1, obs2)
else else
return Corr(obs1 + obs2, cdata) return Corr(obs1 + obs2, cdata1)
end end
end end
@doc raw""" @doc raw"""
corr_sym(corrL::Corr, corrR::Corr, parity::Int64=1) corr_sym(corrL::Corr, corrR::Corr, parity::Int64=1)
...@@ -271,13 +427,32 @@ function corr_sym(corrL::Corr, corrR::Corr, parity::Int64=1) ...@@ -271,13 +427,32 @@ function corr_sym(corrL::Corr, corrR::Corr, parity::Int64=1)
end end
res = (corrL.obs[1:end] + parity * corrR.obs[end:-1:1]) / 2 res = (corrL.obs[1:end] + parity * corrR.obs[end:-1:1]) / 2
return Corr(res, corrL.kappa, corrL.mu, corrL.gamma, corrL.y0) return Corr(res, corrL.kappa, corrL.mu, corrL.gamma, corrL.y0, corrL.theta1, corrL.theta2)
end end
function corr_sym_E250(corr1::Corr, corr2::Corr, parity::Int64=1)
aux = [corr2.obs[97:end]; corr2.obs[1:96]]
corr2_sym = Corr(aux, corr2.kappa, corr2.mu, corr2.gamma, corr1.y0, corr2.theta1, corr2.theta2)
corr = [corr1.obs[1:3]; (corr1.obs[4:98] .+ parity * corr2_sym.obs[192:-1:98]) / 2]
return Corr(corr, corr1.kappa, corr1.mu, corr1.gamma, corr1.y0, corr1.theta1, corr1.theta2)
end
function corr_sym_D450(corr1::Corr, corr2::Corr, parity::Int64=1)
aux = [corr2.obs[65:end]; corr2.obs[1:64]]
corr2_sym = Corr(aux, corr2.kappa, corr2.mu, corr2.gamma, corr1.y0, corr2.theta1, corr2.theta2)
corr = [corr1.obs[1:3]; (corr1.obs[4:66] .+ parity * corr2_sym.obs[128:-1:66]) / 2]
return Corr(corr, corr1.kappa, corr1.mu, corr1.gamma, corr1.y0, corr1.theta1, corr1.theta2)
end
#TODO: VECTORIZE, uwreal? #TODO: VECTORIZE, uwreal?
@doc raw""" @doc raw"""
md_sea(a::uwreal, md::Vector{Matrix{Float64}}, ow::uwreal, w::Union{uwreal, Nothing}=nothing, ws::ADerrors.wspace=ADerrors.wsg) md_sea(a::uwreal, md::Vector{Matrix{Float64}}, ow::uwreal, w::Union{uwreal, Nothing}=nothing, ws::ADerrors.wspace=ADerrors.wsg, wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
md_sea(a::uwreal, md::Vector{Matrix{Float64}}, ow::Array{uwreal}, w::Union{uwreal, Nothing}=nothing, ws::ADerrors.wspace=ADerrors.wsg) md_sea(a::uwreal, md::Vector{Matrix{Float64}}, ow::Array{uwreal}, w::Union{uwreal, Nothing}=nothing, ws::ADerrors.wspace=ADerrors.wsg, wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
Computes the derivative of an observable A with respect to the sea quark masses. Computes the derivative of an observable A with respect to the sea quark masses.
...@@ -320,29 +495,29 @@ m_mdl, m_mds = md_sea(m, [md1, md2], pp, ADerrors.wsg) ...@@ -320,29 +495,29 @@ m_mdl, m_mds = md_sea(m, [md1, md2], pp, ADerrors.wsg)
m_shifted = m + 2 * dml * m_mdl + dms * m_mds m_shifted = m + 2 * dml * m_mdl + dms * m_mds
``` ```
""" """
function md_sea(a::uwreal, md::Vector{Matrix{Float64}}, ow::uwreal, w::Union{uwreal, Nothing}=nothing, ws::ADerrors.wspace=ADerrors.wsg) function md_sea(a::uwreal, md::Vector{Matrix{Float64}}, ow::uwreal, w::Union{uwreal, Nothing}=nothing, ws::ADerrors.wspace=ADerrors.wsg, wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
nid = neid(a) nid = neid(a)
p = findall(t-> t==1, a.prop) p = findall(t-> t==1, a.prop)
if nid != 1 if nid != 1
error("Error: neid > 1") @info("Error: neid > 1")
end end
id = ws.map_nob[p] id = ws.map_nob[p]
if !all(id .== id[1]) if !all(id .== id[1])
error("ids do not match") @info("ids do not match")
end end
id = ws.id2str[id[1]] id = ws.id2str[id[1]]
ivrep = getfield.(ws.fluc[p], :ivrep) ivrep = getfield.(ws.fluc[p], :ivrep)
ivrep1 = fill(ivrep[1], length(ivrep)) ivrep1 = fill(ivrep[1], length(ivrep))
if !all(ivrep .== ivrep1) if !all(ivrep .== ivrep1)
error("ivreps do not match") @info("ivreps do not match")
end end
ivrep = ivrep[1] ivrep = ivrep[1]
if length(md) != length(ivrep) if length(md) != length(ivrep)
error("Nr obs != Nr md") @info("Nr obs != Nr md")
end end
#md_aux as a Matrix + Automatic truncation #md_aux as a Matrix + Automatic truncation
...@@ -352,7 +527,7 @@ function md_sea(a::uwreal, md::Vector{Matrix{Float64}}, ow::uwreal, w::Union{uwr ...@@ -352,7 +527,7 @@ function md_sea(a::uwreal, md::Vector{Matrix{Float64}}, ow::uwreal, w::Union{uwr
end end
nrw = size(md_aux, 1) nrw = size(md_aux, 1)
uwerr(ow) isnothing(wpm) ? uwerr(ow) : uwerr(ow,wpm)
ow_data = ow.mean .+ mchist(ow, id) ow_data = ow.mean .+ mchist(ow, id)
if isnothing(w) if isnothing(w)
...@@ -382,15 +557,20 @@ function md_sea(a::uwreal, md::Vector{Matrix{Float64}}, ow::uwreal, w::Union{uwr ...@@ -382,15 +557,20 @@ function md_sea(a::uwreal, md::Vector{Matrix{Float64}}, ow::uwreal, w::Union{uwr
return nothing return nothing
end end
function md_sea(a::uwreal, md::Vector{Matrix{Float64}}, ow::Array{uwreal}, w::Union{uwreal, Nothing}=nothing, ws::ADerrors.wspace=ADerrors.wsg) function md_sea(a::uwreal, md::Vector{Matrix{Float64}}, ow::Array{uwreal}, w::Union{uwreal, Nothing}=nothing, ws::ADerrors.wspace=ADerrors.wsg, wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
d = [md_sea(a, md, ow_, w, ws) for ow_ in ow] d = [md_sea(a, md, ow_, w, ws, wpm) for ow_ in ow]
return (sum(getindex.(d, 1)), sum(getindex.(d, 2))) return (sum(getindex.(d, 1)), sum(getindex.(d, 2)))
end end
@doc raw""" @doc raw"""
md_val(a::uwreal, obs::Corr, derm::Vector{Corr}) md_val(a::uwreal, obs::Corr, derm::Vector{Corr}; new_version::Bool=false, TSM::Bool=false)
Computes the derivative of an observable A with respect to the valence quark masses. Computes the derivative of an observable A with respect to the valence quark masses.
If `new_version=true`, then the sign of the valence derivatives in `derm` is flipped
(Julien's most updated code has the sign changed for the valence derivatives). Note
also that for the new dat files version, no `_d1, _d2` is written by the reader, so
you must select by hand (looking at the log files e.g.) which are you derivative
correlators. In the log file, the derivative correlators are signaled by `seq_prop=some number`.
``\frac{d <A>}{dm(val)} = \sum_i \frac{\partial <A>}{\partial <O_i>} \frac{d <O_i>}{d m(val)}`` ``\frac{d <A>}{dm(val)} = \sum_i \frac{\partial <A>}{\partial <O_i>} \frac{d <O_i>}{d m(val)}``
...@@ -421,7 +601,7 @@ m_md1, m_md2 = md_val(m, corr_pp[1], derm[1]) ...@@ -421,7 +601,7 @@ m_md1, m_md2 = md_val(m, corr_pp[1], derm[1])
m_shifted = m + dm1 * m_md1 + dm2 * m_md2 m_shifted = m + dm1 * m_md1 + dm2 * m_md2
``` ```
""" """
function md_val(a::uwreal, obs::Corr, derm::Vector{Corr}) function md_val(a::uwreal, obs::Corr, derm::Vector{Corr}; new_version::Bool=false)
nid = neid(a) nid = neid(a)
if nid != 1 if nid != 1
error("Error: neid > 1") error("Error: neid > 1")
...@@ -429,7 +609,7 @@ function md_val(a::uwreal, obs::Corr, derm::Vector{Corr}) ...@@ -429,7 +609,7 @@ function md_val(a::uwreal, obs::Corr, derm::Vector{Corr})
if length(derm) != 2 if length(derm) != 2
error("Error: length derm != 2") error("Error: length derm != 2")
end end
if !check_corr_der(obs, derm) if !check_corr_der(obs, derm; new_version=new_version)
error("Corr parameters does not match") error("Corr parameters does not match")
end end
...@@ -463,7 +643,11 @@ function md_val(a::uwreal, obs::Corr, derm::Vector{Corr}) ...@@ -463,7 +643,11 @@ function md_val(a::uwreal, obs::Corr, derm::Vector{Corr})
return nothing return nothing
end end
derm1, derm2 = derm derm1, derm2 = derm
return (sum(der .* derm1.obs), sum(der .* derm2.obs)) if !new_version
return (sum(der .* derm1.obs), sum(der .* derm2.obs))
else
return (-sum(der .* derm1.obs), -sum(der .* derm2.obs))
end
end end
function plat_av(obs::Vector{uwreal}, plat::Vector{Int64}, wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing) function plat_av(obs::Vector{uwreal}, plat::Vector{Int64}, wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
...@@ -473,6 +657,74 @@ function plat_av(obs::Vector{uwreal}, plat::Vector{Int64}, wpm::Union{Dict{Int64 ...@@ -473,6 +657,74 @@ function plat_av(obs::Vector{uwreal}, plat::Vector{Int64}, wpm::Union{Dict{Int64
return av return av
end end
function model_av(fun::Function, y::Vector{uwreal}, guess::Float64;
tm::Vector{Int64}, tM::Vector{Int64}, k::Int64,
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
pval = Array{Float64,1}()
p_1 = Array{uwreal,1}()
TIC = Array{Float64,1}()
isnothing(wpm) ? uwerr.(y) : [uwerr(y[i], wpm) for i in 1:length(y)]
for i in tm
for j in tM
if i < j
x = collect(i:j)
y_aux = y[i:j]
try
up, chi2, chi_exp, pval_i = fit_alg(fun,x,y_aux,k,guess,wpm=wpm)
push!(pval, pval_i)
push!(TIC, chi2 - 2*chi_exp)
push!(p_1, up[1])
catch e
end
end
end
end
TIC = TIC .- minimum(TIC)
weight = exp.(-0.5 .* TIC) ./ sum(exp.(-0.5 .* TIC))
p_av = sum(p_1 .* weight)
syst2 = sum(p_1 .^ 2 .* weight) - p_av ^ 2
return p_av, syst2, p_1, weight, pval
end
function model_av(fun::Vector{Function}, y::Vector{uwreal}, guess::Float64;
tm::Vector{Vector{Int64}}, tM::Vector{Vector{Int64}}, k::Vector{Int64},
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
pval = Array{Float64,1}()
p_1 = Array{uwreal,1}()
TIC = Array{Float64,1}()
isnothing(wpm) ? uwerr.(y) : [uwerr(y[i], wpm) for i in 1:length(y)]
for ind in 1:length(fun)
f = fun[ind]
for i in tm[ind]
for j in tM[ind]
if i < j
x = collect(i:j)
y_aux = y[i:j]
try
up, chi2, chi_exp, pval_i = fit_alg(f,x,y_aux,k[ind],guess,wpm=wpm)
push!(pval, pval_i)
push!(TIC, chi2 - 2*chi_exp)
push!(p_1, up[1])
catch e
end
end
end
end
end
TIC = TIC .- minimum(TIC)
weight = exp.(-0.5 .* TIC) ./ sum(exp.(-0.5 .* TIC))
p_av = sum(p_1 .* weight)
syst2 = sum(p_1 .^ 2 .* weight) - p_av ^ 2
return p_av, syst2, p_1, weight, pval
end
@doc raw""" @doc raw"""
bayesian_av(fun::Function, y::Array{uwreal}, tmin_array::Array{Int64}, tmax_array::Array{Int64}, k::Int64, pl::Bool, data::Bool; wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing) bayesian_av(fun::Function, y::Array{uwreal}, tmin_array::Array{Int64}, tmax_array::Array{Int64}, k::Int64, pl::Bool, data::Bool; wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
...@@ -518,20 +770,23 @@ tmax_array = [80,81,82,83,84,85] ...@@ -518,20 +770,23 @@ tmax_array = [80,81,82,83,84,85]
(average, systematics) = bayesian_av([fun1,fun2],x,tmin_array,tmax_array,[k1,k2]) (average, systematics) = bayesian_av([fun1,fun2],x,tmin_array,tmax_array,[k1,k2])
``` ```
""" """
function bayesian_av(fun::Function, y::Array{uwreal}, tmin_array::Array{Int64}, tmax_array::Array{Int64}, k::Int64, pl::Bool=false, data::Bool=false; wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing) function bayesian_av(fun::Function, y::Array{uwreal}, tmin_array::Array{Int64}, tmax_array::Array{Int64}, k::Int64; pl::Bool=false, data::Bool=false,
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing, path_plt::Union{String,Nothing}=nothing,
plt_title::Union{Nothing,String}=nothing, label::Union{Nothing, LaTeXString}=nothing)
weight_model = Array{Float64,1}() weight_model = Array{Float64,1}()
AIC = Array{Float64,1}() AIC = Array{Float64,1}()
chi2chi2exp = Array{Float64,1}() chi2chi2exp = Array{Float64,1}()
p1 = Array{uwreal,1}() p1 = Array{uwreal,1}()
mods = Array{String,1}() mods = Array{String,1}()
Pval = Array{Float64,1}()
if tmax_array[end] > length(y) if tmax_array[end] > length(y)
error("Error: upper bound for the fits is bigger than last data point") error("Error: upper bound for the fits is bigger than last data point")
end end
total = length(y) total = length(y)
isnothing(wpm) ? uwerr.(y) : for i in 1:length(y) uwerr(y[i],wpm) end isnothing(wpm) ? uwerr.(y) : [uwerr(y[i],wpm) for i in 1:length(y)]
for INDEX in tmin_array ## vary tmin for INDEX in tmin_array ## vary tmin
for j in tmax_array ## vary tmax for j in tmax_array ## vary tmax
...@@ -547,58 +802,123 @@ function bayesian_av(fun::Function, y::Array{uwreal}, tmin_array::Array{Int64}, ...@@ -547,58 +802,123 @@ function bayesian_av(fun::Function, y::Array{uwreal}, tmin_array::Array{Int64},
fit = curve_fit(fun,x,value.(yy),W,p00) fit = curve_fit(fun,x,value.(yy),W,p00)
isnothing(wpm) ? (up,chi_exp) = fit_error(chisq,coef(fit),yy) : (up,chi_exp) = fit_error(chisq,coef(fit),yy,wpm) isnothing(wpm) ? (up,chi_exp) = fit_error(chisq,coef(fit),yy) : (up,chi_exp) = fit_error(chisq,coef(fit),yy,wpm)
isnothing(wpm) ? uwerr(up[1]) : uwerr(up[1],wpm) isnothing(wpm) ? uwerr(up[1]) : uwerr(up[1],wpm)
chi2 = sum(fit.resid.^2) * dof(fit) / chi_exp chi2 = sum(fit.resid.^2) # * dof(fit) / chi_exp
push!(AIC, chi2 + 2*k + 2*Ncut) Q = pvalue(chisq, sum(fit.resid.^2), value.(up), yy, wpm=wpm, W=W, nmc=10000)
push!(chi2chi2exp, chi2 / dof(fit)) # if chi2 / dof(fit) > 5. || abs(value(up[1])) > 2. || err(up[1])/value(up[1])*100 >= 10.
# error()
# end
# println(up[1], " ", up[2], " ", up[3])
push!(Pval, Q)
# push!(AIC, chi2 + 2*k + 2*Ncut) # AIC criteria
push!(AIC, chi2 - 2*chi_exp) # TIC criteria
push!(chi2chi2exp, chi2 / dof(fit)) #substitute chi_exp with dof(fit) for chi^2/dof
push!(p1, up[1]) push!(p1, up[1])
push!(mods,string("[", INDEX+1, ",", j, "]")) push!(mods,string("[", INDEX+1, ",", j, "]"))
catch e # println("chi2_vs_exp " , chi2 / dof(fit), " chi2/dof ", sum(fit.resid.^2)/dof(fit))
catch
@warn string(":/ Negative window for error propagation at tmin = ", INDEX, ", tmax = ", j, "; skipping that point") @warn string(":/ Negative window for error propagation at tmin = ", INDEX, ", tmax = ", j, "; skipping that point")
end end
end end
end end
# compute all weights
offset = minimum(AIC) offset = minimum(AIC)
AIC = AIC .- offset AIC = AIC .- offset
weight_model = exp.(-0.5 .* AIC) weight_model = exp.(-0.5 .* AIC)
p1_mean = sum(p1 .* weight_model)/sum(weight_model) ; isnothing(wpm) ? uwerr(p1_mean) : uwerr(p1_mean,wpm)
weight_model = weight_model ./ sum(weight_model) weight_model = weight_model ./ sum(weight_model)
systematic_err = sqrt(sum(p1 .^ 2 .* weight_model) - (sum(p1 .* weight_model)) ^ 2)
# sort weights and discard 5% tail
idxW = sortperm(weight_model, rev=true)
cumulative_w = cumsum(weight_model[idxW])
# println("acceptance in bayeasian_av set to 0.99, should be 0.95")
idxcumw = findfirst(x->x>=0.95, cumulative_w)
# println(length(idxW) - idxcumw)
idxW = sort(idxW[1:idxcumw])
# take only the accepted
AIC = AIC[idxW]
Pval = Pval[idxW]
chi2chi2exp = chi2chi2exp[idxW]
mods = mods[idxW]
p1 = p1[idxW]
weight_model = weight_model[idxW]
weight_model ./= sum(weight_model)
if pl
p1_mean = sum(p1 .* weight_model)
isnothing(wpm) ? uwerr(p1_mean) : uwerr(p1_mean, wpm)
# println(sum(p1 .^ 2 .* weight_model))
# println((sum(p1 .* weight_model)) ^ 2)
systematic_err = 0.0 #sqrt(sum(p1 .^ 2 .* weight_model) - (sum(p1 .* weight_model)) ^ 2)
if pl
fig = figure(figsize=(10,7.5))
subplots_adjust(hspace=0.1)
subplot(411)
if !isnothing(plt_title)
#title(plt_title)
end
ax1 = gca()
x = 1:length(p1) x = 1:length(p1)
y = value.(p1) y = value.(p1)
dy = err.(p1) dy = err.(p1)
v = value(p1_mean) v = value(p1_mean)
e = err(p1_mean) e = err(p1_mean)
figure()
fill_between(1:length(p1), v-e, v+e, color="green", alpha=0.75)
errorbar(mods, y, dy, fmt="x", color="black")
ylabel(L"$p_1$")
xlabel(L"model")
display(gcf())
figure() fill_between(x, v-e, v+e, color="royalblue", alpha=0.2)
errorbar(mods, weight_model, 0*dy, color="green") errorbar(x, y, dy, fmt="^", mfc="none", color="navy", capsize=2)
ylabel(L"$weight$") setp(ax1.get_xticklabels(),visible=false) # Disable x tick labels
xlabel(L"model") isnothing(label) ? ylabel(L"$p_1$") : ylabel(label)
display(gcf()) subplot(412)
ax2=gca()
bar(x, weight_model, alpha=0.4, color="forestgreen", edgecolor="darkgreen", linewidth=1.5)
setp(ax2.get_xticklabels(),visible=false) # Disable x tick labels
# errorbar(mods, weight_model, 0*dy, color="green")
ylabel(L"$W$")
subplot(413)
ax3=gca()
setp(ax3.get_xticklabels(),visible=false) # Disable x tick labels
bar(x, Pval, alpha=0.4, color="forestgreen", edgecolor="darkgreen", linewidth=1.5 )
ylabel(L"$p-value$")
subplot(414)
bar(x, chi2chi2exp, alpha=0.4, color="forestgreen", edgecolor="darkgreen", linewidth=1.5 )
# ylabel(L"$\chi^2/\chi^2_{\mathrm{exp}}$")
ylabel(L"$\chi^2/\mathrm{d.o.f.}$")
xticks(x, mods, rotation=45)
xlabel(L"$\mathrm{Models} \ [t_{\mathrm{min}}/a,t_{\mathrm{max}}/a]$")
tight_layout()
display(fig)
if !isnothing(path_plt)
#tt = plt_title *".pdf"
savefig(path_plt)
end
close()
end end
if !data if !data
return (p1_mean, systematic_err) return (p1_mean, systematic_err)
else else
return (p1_mean, systematic_err, p1, weight_model) FitStorage = Dict(
"W" => weight_model,
"AIC" => AIC .+ offset,
"pval" => Pval,
"chivsexp" => chi2chi2exp,
"mods" => mods
)
return (p1_mean, systematic_err, p1, FitStorage)
end end
end end
function bayesian_av(fun1::Function, fun2::Function, y::Array{uwreal}, tmin_array::Array{Int64}, tmax_array::Array{Int64}, k1::Int64, k2::Int64, pl::Bool=false, data::Bool=false; wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing) function bayesian_av(fun1::Function, fun2::Function, y::Array{uwreal}, tmin_array::Array{Int64}, tmax_array::Array{Int64}, k1::Int64, k2::Int64; pl::Bool=false, data::Bool=false, wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
weight_model = Array{Float64,1}() weight_model = Array{Float64,1}()
AIC = Array{Float64,1}() AIC = Array{Float64,1}()
...@@ -643,7 +963,7 @@ function bayesian_av(fun1::Function, fun2::Function, y::Array{uwreal}, tmin_arra ...@@ -643,7 +963,7 @@ function bayesian_av(fun1::Function, fun2::Function, y::Array{uwreal}, tmin_arra
push!(AIC, chi2 + 2*k2 + 2*Ncut) push!(AIC, chi2 + 2*k2 + 2*Ncut)
push!(chi2chi2exp, chi2 / dof(fit)) push!(chi2chi2exp, chi2 / dof(fit))
push!(p1, up[1]) push!(p1, up[1])
println(up[end])
push!(mods,string("[", INDEX+1, ",", j, "]")) push!(mods,string("[", INDEX+1, ",", j, "]"))
catch e catch e
...@@ -691,20 +1011,23 @@ function bayesian_av(fun1::Function, fun2::Function, y::Array{uwreal}, tmin_arra ...@@ -691,20 +1011,23 @@ function bayesian_av(fun1::Function, fun2::Function, y::Array{uwreal}, tmin_arra
end end
function bayesian_av(fun::Array{Function}, y::Array{uwreal}, tmin_array::Array{Int64}, tmax_array::Array{Int64}, k::Array{Int64}, pl::Bool=false, data::Bool=false; wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing) function bayesian_av(fun::Array{Function}, y::Array{uwreal}, tmin_array::Array{Int64}, tmax_array::Array{Int64}, k::Array{Int64}; pl::Bool=false,
data::Bool=false, wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing,
path_plt::Union{String,Nothing}=nothing, plt_title::Union{Nothing,String}=nothing)
weight_model = Array{Float64,1}() weight_model = Array{Float64,1}()
AIC = Array{Float64,1}() AIC = Array{Float64,1}()
chi2chi2exp = Array{Float64,1}() chi2chi2exp = Array{Float64,1}()
p1 = Array{uwreal,1}() p1 = Array{uwreal,1}()
mods = Array{String,1}() mods = Array{String,1}()
Pval = Array{Float64,1}()
if tmax_array[end] > length(y) if tmax_array[end] > length(y)
error("Error: upper bound for the fits is bigger than last data point") error("Error: upper bound for the fits is bigger than last data point")
end end
total = length(y) total = length(y)
isnothing(wpm) ? uwerr.(y) : for i in 1:length(y) uwerr(y[i],wpm) end isnothing(wpm) ? uwerr.(y) : [uwerr(y[i],wpm) for i in 1:length(y)]
for INDEX in tmin_array ## vary tmin for INDEX in tmin_array ## vary tmin
for j in tmax_array ## vary tmax for j in tmax_array ## vary tmax
...@@ -722,10 +1045,17 @@ function bayesian_av(fun::Array{Function}, y::Array{uwreal}, tmin_array::Array{I ...@@ -722,10 +1045,17 @@ function bayesian_av(fun::Array{Function}, y::Array{uwreal}, tmin_array::Array{I
isnothing(wpm) ? (up,chi_exp) = fit_error(chisq,coef(fit),yy) : (up,chi_exp) = fit_error(chisq,coef(fit),yy,wpm) isnothing(wpm) ? (up,chi_exp) = fit_error(chisq,coef(fit),yy) : (up,chi_exp) = fit_error(chisq,coef(fit),yy,wpm)
isnothing(wpm) ? uwerr(up[1]) : uwerr(up[1],wpm) isnothing(wpm) ? uwerr(up[1]) : uwerr(up[1],wpm)
chi2 = sum(fit.resid.^2) * dof(fit) / chi_exp chi2 = sum(fit.resid.^2) * dof(fit) / chi_exp
push!(AIC, chi2 + 2*k[indice] + 2*Ncut) Q = pvalue(chisq, sum(fit.resid.^2), value.(up), yy, wpm=wpm, W=W, nmc=10000)
push!(chi2chi2exp, chi2 / dof(fit)) if chi2 / dof(fit) < 5.
push!(p1, up[1]) # if err(up[1])/value(up[1])*100 >= 10.
push!(mods,string("[", INDEX+1, ",", j, "]")) # error()
# end
push!(Pval, Q)
push!(AIC, chi2 + 2*k[indice] + 2*Ncut)
push!(chi2chi2exp, chi2 / dof(fit))
push!(p1, up[1])
push!(mods,string("[", INDEX+1, ",", j, "]"))
end
end end
catch e catch e
...@@ -733,42 +1063,91 @@ function bayesian_av(fun::Array{Function}, y::Array{uwreal}, tmin_array::Array{I ...@@ -733,42 +1063,91 @@ function bayesian_av(fun::Array{Function}, y::Array{uwreal}, tmin_array::Array{I
end end
end end
end end
# compute all weights
offset = minimum(AIC) offset = minimum(AIC)
AIC = AIC .- offset AIC = AIC .- offset
weight_model = exp.(-0.5 .* AIC) weight_model = exp.(-0.5 .* AIC)
p1_mean = sum(p1 .* weight_model)/sum(weight_model) ; isnothing(wpm) ? uwerr(p1_mean) : uwerr(p1_mean,wpm)
weight_model = weight_model ./ sum(weight_model) weight_model = weight_model ./ sum(weight_model)
# sort weights and discard 5% tail
idxW = sortperm(weight_model, rev=true)
cumulative_w = cumsum(weight_model[idxW])
idxcumw = findfirst(x->x>=0.95, cumulative_w)
println(length(idxW) - idxcumw)
idxW = sort(idxW[1:idxcumw])
# take only the accepted
AIC = AIC[idxW]
Pval = Pval[idxW]
chi2chi2exp = chi2chi2exp[idxW]
mods = mods[idxW]
p1 = p1[idxW]
weight_model = weight_model[idxW]
weight_model /= sum(weight_model)
p1_mean = sum(p1 .* weight_model)
isnothing(wpm) ? uwerr(p1_mean) : uwerr(p1_mean,wpm)
systematic_err = sqrt(sum(p1 .^ 2 .* weight_model) - (sum(p1 .* weight_model)) ^ 2) systematic_err = sqrt(sum(p1 .^ 2 .* weight_model) - (sum(p1 .* weight_model)) ^ 2)
if pl if pl
subplots_adjust(hspace=0.1)
subplot(411)
if !isnothing(plt_title)
title(plt_title)
end
ax1 = gca()
x = 1:length(p1) x = 1:length(p1)
y = value.(p1) y = value.(p1)
dy = err.(p1) dy = err.(p1)
v = value(p1_mean) v = value(p1_mean)
e = err(p1_mean) e = err(p1_mean)
figure() fill_between(x, v-e, v+e, color="royalblue", alpha=0.2)
fill_between(1:length(p1), v-e, v+e, color="green", alpha=0.75) errorbar(x, y, dy, fmt="^", mfc="none", color="navy", capsize=2)
errorbar(mods, y, dy, fmt="x", color="black") setp(ax1.get_xticklabels(),visible=false) # Disable x tick labels
ylabel(L"$p_1$") ylabel(L"$p_1$")
xlabel(L"model")
display(gcf()) subplot(412)
ax2=gca()
bar(x, weight_model, alpha=0.4, color="forestgreen", edgecolor="darkgreen", linewidth=1.5)
setp(ax2.get_xticklabels(),visible=false) # Disable x tick labels
# errorbar(mods, weight_model, 0*dy, color="green")
ylabel(L"$W$")
subplot(413)
ax3=gca()
setp(ax3.get_xticklabels(),visible=false) # Disable x tick labels
bar(x, Pval, alpha=0.4, color="forestgreen", edgecolor="darkgreen", linewidth=1.5 )
ylabel(L"$p\ value$")
subplot(414)
bar(x, chi2chi2exp, alpha=0.4, color="forestgreen", edgecolor="darkgreen", linewidth=1.5 )
ylabel(L"$\chi^2/\chi^2_{\mathrm{exp}}$")
xticks(x, mods, rotation=45)
xlabel(L"$Models$")
figure()
errorbar(mods, weight_model, 0*dy, color="green")
ylabel(L"$weight$")
xlabel(L"model")
display(gcf()) display(gcf())
if !isnothing(path_plt)
tt = plt_title *".pdf"
savefig(joinpath(path_plt, tt))
end
close()
end end
if !data if !data
return (p1_mean, systematic_err) return (p1_mean, systematic_err)
else else
return (p1_mean, systematic_err, p1, weight_model) FitStorage = Dict(
"W" => weight_model,
"AIC" => AIC .+ offset,
"pval" => Pval,
"chivsexp" => chi2chi2exp,
"mods" => mods
)
return (p1_mean, systematic_err, p1, FitStorage)
end end
end end
...@@ -849,31 +1228,37 @@ fit_routine(model, xdata, ydata, param=3) ...@@ -849,31 +1228,37 @@ fit_routine(model, xdata, ydata, param=3)
fit_routine(model, xdata, ydata, param=3, covar=true) fit_routine(model, xdata, ydata, param=3, covar=true)
``` ```
""" """
function fit_routine(model::Function, xdata::Array{<:Real}, ydata::Array{uwreal}, param::Int64=3; info::Bool=false, wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing, correlated_fit::Bool=false) function fit_routine(model::Function, xdata::Array{<:Real}, ydata::Array{uwreal}, param::Int64=3; info::Bool=false, wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing,
inv_cov::Union{Matrix{Float64}, Nothing}=nothing)
isnothing(wpm) ? uwerr.(ydata) : [uwerr(yaux, wpm) for yaux in ydata] isnothing(wpm) ? uwerr.(ydata) : [uwerr(yaux, wpm) for yaux in ydata]
yval = value.(ydata) yval = value.(ydata)
yer = err.(ydata) yer = err.(ydata)
if !correlated_fit ## CODE HERE THE UPDATED VERSION OF CORRELATED FITS
if isnothing(inv_cov)
@info("Uncorrelated fit")
chisq = gen_chisq(model, xdata, yer) chisq = gen_chisq(model, xdata, yer)
fit = curve_fit(model, xdata, yval, 1.0 ./ yer.^2, fill(0.5, param)) fit = curve_fit(model, xdata, yval, 1.0 ./ yer.^2, fill(0.5, param))
(upar, chi_exp) = isnothing(wpm) ? fit_error(chisq, coef(fit), ydata) : fit_error(chisq, coef(fit), ydata, wpm) (upar, chi_exp) = isnothing(wpm) ? fit_error(chisq, coef(fit), ydata) : fit_error(chisq, coef(fit), ydata, wpm)
else else
covar_inv = make_positive_def(invert_covar_matrix(cov(ydata))) @info("Correlated fit")
#covar_inv = inv(get_covariance(ydata))
#covar_inv = (covar_inv + covar_inv')/2 #covar_inv = (covar_inv + covar_inv')/2
chisq(par,dat) = gen_chisq_correlated(model, xdata, covar_inv, par, dat) #covar_inv = inv(Symmetric(get_covariance(ydata)))
chisq(par, dat) = gen_chisq_correlated(model, xdata, covar_inv, par, dat)
fit = curve_fit(model, xdata, yval, covar_inv, fill(0.5, param)) fit = curve_fit(model, xdata, yval, covar_inv, fill(0.5, param))
println(chisq(coef(fit), ydata)) #println(chisq(coef(fit), ydata))
(upar, chi_exp) = isnothing(wpm) ? fit_error(chisq, coef(fit), ydata, W=covar_inv) : fit_error(chisq, coef(fit), ydata, wpm, W=covar_inv) (upar, chi_exp) = isnothing(wpm) ? fit_error(chisq, coef(fit), ydata, W=covar_inv) : fit_error(chisq, coef(fit), ydata, wpm, W=covar_inv)
end end
chi2_fit_res = sum(fit.resid.^2 ) chi2_fit_res = sum(fit.resid.^2 )
println("\n") # compute and print single point contribution to chi2
for i in 1:length(fit.resid) # println("\n")
println((fit.resid[i])^2) # for i in 1:length(fit.resid)
end # println((fit.resid[i])^2)
println("\n") # end
# println("\n")
println("chi2 from fit residual = ", chi2_fit_res) println("chi2 from fit residual = ", chi2_fit_res)
println("chi2 from chi2 function = ", chisq(coef(fit), ydata)) println("chi2 from chi2 function = ", chisq(coef(fit), ydata))
...@@ -893,10 +1278,13 @@ function fit_routine(model::Function, xdata::Array{<:Real}, ydata::Array{uwreal} ...@@ -893,10 +1278,13 @@ function fit_routine(model::Function, xdata::Array{<:Real}, ydata::Array{uwreal}
#println("Chisq / chiexp: ", chisq(coef(fit), ydata), " / ", chi_exp, " (dof: ", length(yval) - param,")") #println("Chisq / chiexp: ", chisq(coef(fit), ydata), " / ", chi_exp, " (dof: ", length(yval) - param,")")
println("Chisq / chiexp: ", chi2_fit_res, " / ", chi_exp, " (dof: ", length(yval) - param,")") println("Chisq / chiexp: ", chi2_fit_res, " / ", chi_exp, " (dof: ", length(yval) - param,")")
println("Chisq corrected: ", chis2_corrected) println("Chisq corrected: ", chis2_corrected)
return upar, chi2_fit_res / chi_exp println("Return: params, chi2, chi2exp")
return upar, chi2_fit_res, chi_exp
end end
function fit_routine(model::Vector{Function}, xdata::Vector{Array{Float64, N}} where N, ydata::Vector{Array{uwreal, N}} where N, param::Int64; wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing) function fit_routine(model::Vector{Function}, xdata::Vector{Array{Float64, N}} where N, ydata::Vector{Array{uwreal, N}} where N, param::Int64; wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing,
correlated_fit::Bool=false)
if !(length(model) == length(xdata) == length(ydata)) if !(length(model) == length(xdata) == length(ydata))
error("Dimension mismatch") error("Dimension mismatch")
end end
...@@ -910,7 +1298,11 @@ function fit_routine(model::Vector{Function}, xdata::Vector{Array{Float64, N}} w ...@@ -910,7 +1298,11 @@ function fit_routine(model::Vector{Function}, xdata::Vector{Array{Float64, N}} w
if isnothing(wpm) if isnothing(wpm)
uwerr.(ydata[i]) uwerr.(ydata[i])
else else
[uwerr(yaux, wpm) for yaux in ydata[i]] # println(yaux for yaux in ydata[i])
for yaux in ydata[i]
[uwerr(yaux[k], wpm) for k in 1:length(yaux)]
end
# [[uwerr(yaux[k], wpm) for k in eachindex(yaux)] for yaux in ydata[i]]
end end
e[i] = err.(ydata[i]) e[i] = err.(ydata[i])
...@@ -921,20 +1313,48 @@ function fit_routine(model::Vector{Function}, xdata::Vector{Array{Float64, N}} w ...@@ -921,20 +1313,48 @@ function fit_routine(model::Vector{Function}, xdata::Vector{Array{Float64, N}} w
idx[i] = collect(j:stp) idx[i] = collect(j:stp)
j = stp + 1 j = stp + 1
end end
if !correlated_fit
chisq = (par, dat) -> sum([sum((dat[idx[i]] .- model[i](xdata[i], par)).^2 ./e[i].^2) for i=1:N])
else
inv_cov_tot = juobs.inv_covar(vcat(ydata...)) #[inv_covar_multi_id(dat[idx[ii]]) for ii in 1:N]
function chisq(par, dat)
res = Vector{uwreal}(undef,0)
for ii in 1:N
res = vcat(res, dat[idx[ii]] .- model[ii](xdata[ii],par))
end
chi = reshape(res, 1,:) * inv_cov_tot*res
return chi[1]
end
end
chisq = (par, dat) -> sum([sum((dat[idx[i]] .- model[i](xdata[i], par)).^2 ./e[i].^2) for i=1:N])
min_fun(t) = chisq(t, value.(dat)) min_fun(t) = chisq(t, value.(dat))
p = fill(0.5, param) p = fill(0.5, param)
#println(chisq(p,dat))
sol = optimize(min_fun, p, LBFGS()) sol = optimize(min_fun, p, LBFGS())
#println(chisq(sol.minimizer,dat))
(upar, chi2_exp) = isnothing(wpm) ? fit_error(chisq, sol.minimizer, dat) : fit_error(chisq, sol.minimizer, dat, wpm) if !correlated_fit
@info("Uncorrelated fit ")
(upar, chi2_exp) = isnothing(wpm) ? fit_error(chisq, sol.minimizer, dat) : fit_error(chisq, sol.minimizer, dat, wpm)
else
@info("Correlated fit ")
#inv_cov_merge = zeros(size(inv_cov_tot[1],1)*N, size(inv_cov_tot[1],1)*N )
#count = 1
#for k in 1:N
# dim_tmp = size(inv_cov_tot[k], 1)
# inv_cov_merge[count:dim_tmp+count-1, count:dim_tmp+count-1] = inv_cov_tot[k]
# count +=dim_tmp
#end
(upar, chi2_exp) = isnothing(wpm) ? fit_error(chisq, sol.minimizer, dat, W=inv_cov_tot) : fit_error(chisq, sol.minimizer, dat, wpm, W=inv_cov_tot)
end
println("Chisq / chiexp: ", min_fun(sol.minimizer), " / ", chi2_exp, " (dof: ", length(dat) - param,")") println("Chisq / chiexp: ", min_fun(sol.minimizer), " / ", chi2_exp, " (dof: ", length(dat) - param,")")
chis2_corrected = (length(dat) - param) * min_fun(sol.minimizer) / chi2_exp chis2_corrected = (length(dat) - param) * min_fun(sol.minimizer) / chi2_exp
println("Chisq corrected: ", chis2_corrected) println("Chisq corrected: ", chis2_corrected)
return upar, chis2_corrected @info("Returns: params, chi2, chi2_exp\n")
return upar, min_fun(sol.minimizer) , chi2_exp
end end
function fit_routine(model::Function, xdata::Array{uwreal}, ydata::Array{uwreal}, param::Int64=3; function fit_routine(model::Function, xdata::Array{uwreal}, ydata::Array{uwreal}, param::Int64=3;
...@@ -991,7 +1411,7 @@ function fit_routine(model::Function, xdata::Array{uwreal}, ydata::Array{uwreal} ...@@ -991,7 +1411,7 @@ function fit_routine(model::Function, xdata::Array{uwreal}, ydata::Array{uwreal}
println("Chisq / chiexp: ", min_fun_cov(sol.minimizer), " / ", chi2_exp, " (dof: ", length(ydata) - param,")") println("Chisq / chiexp: ", min_fun_cov(sol.minimizer), " / ", chi2_exp, " (dof: ", length(ydata) - param,")")
chis2_corrected = (length(ydata) - param) * min_fun_cov(sol.minimizer) / chi2_exp chis2_corrected = (length(ydata) - param) * min_fun_cov(sol.minimizer) / chi2_exp
println("Chisq corrected: ", chis2_corrected) println("Chisq corrected: ", chis2_corrected)
return upar, min_fun_cov(sol.minimizer) / chi2_exp return upar, min_fun_cov(sol.minimizer) / chi2_exp, chi2_exp
else else
chisq_full(p, d) = get_chi2(model, d, ddat, p, Nalpha) chisq_full(p, d) = get_chi2(model, d, ddat, p, Nalpha)
...@@ -1002,7 +1422,7 @@ function fit_routine(model::Function, xdata::Array{uwreal}, ydata::Array{uwreal} ...@@ -1002,7 +1422,7 @@ function fit_routine(model::Function, xdata::Array{uwreal}, ydata::Array{uwreal}
println("Chisq / chiexp: ", min_fun(sol.minimizer), " / ", chi2_exp, " (dof: ", length(ydata) - param,")") println("Chisq / chiexp: ", min_fun(sol.minimizer), " / ", chi2_exp, " (dof: ", length(ydata) - param,")")
chis2_corrected = (length(ydata) - param) * min_fun(sol.minimizer) / chi2_exp chis2_corrected = (length(ydata) - param) * min_fun(sol.minimizer) / chi2_exp
println("Chisq corrected: ", chis2_corrected) println("Chisq corrected: ", chis2_corrected)
return upar, min_fun(sol.minimizer) / chi2_exp return upar, min_fun(sol.minimizer) / chi2_exp, chi2_exp
end end
#### chisq_full, min_fun out of conditional -> #### chisq_full, min_fun out of conditional ->
...@@ -1017,7 +1437,10 @@ function fit_routine(model::Function, xdata::Array{uwreal}, ydata::Array{uwreal} ...@@ -1017,7 +1437,10 @@ function fit_routine(model::Function, xdata::Array{uwreal}, ydata::Array{uwreal}
end end
function global_fit_routine(models::Vector{Function}, xdata::Vector{Array{Float64, 1}}, ydata::Vector{Array{uwreal, 1}}, n_par::Int64; guess_param::Vector{Float64}=fill(0.5, n_par), log::Bool=true, wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing) function global_fit_routine(models::Vector{Function}, xdata::Vector{Array{Float64, 1}} , ydata::Vector{Array{uwreal, 1}}, n_par::Int64; guess_param::Vector{Float64}=fill(0.5, n_par), log::Bool=true,
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing,
inv_cov::Union{Matrix{Float64}, Nothing}=nothing)
if !(length(models) == length(ydata)) if !(length(models) == length(ydata))
error("Dimension mismatch") error("Dimension mismatch")
end end
...@@ -1046,28 +1469,216 @@ function global_fit_routine(models::Vector{Function}, xdata::Vector{Array{Float6 ...@@ -1046,28 +1469,216 @@ function global_fit_routine(models::Vector{Function}, xdata::Vector{Array{Float6
return fx return fx
end end
function flat_chisq(param, data) function flat_chisq(param, data)
chi = 0.0 if isnothing(inv_cov)
for ii in 1:N_sets chi = 0.0
mod = models[ii] for ii in 1:N_sets
# uncorrelated chi2 mod = models[ii]
chi += sum((data[chunk_idx[ii]] .- mod(x_flat[chunk_idx[ii]], param)).^2 ./ err.(y_flat[chunk_idx[ii]]).^2 ) chi += sum((data[chunk_idx[ii]] .- mod(x_flat[chunk_idx[ii]], param)).^2 ./ err.(y_flat[chunk_idx[ii]]).^2 )
# correlated chi2 end
return chi
else
# take pieces of covariance and build correlated chi2 piece by piec
# chi =0.0
# for ii in 1:N_sets
# mod = models[ii]
# cov_inv = juovs.inv_covar(ydata[ii])
# res = ydata[ii] .- mod(xdata[ii], param)
# chi += (reshape(res, 1,:) * cov_inv * res)[1]
# end
# return chi
# take whole covariance and multiply for whole vector of dat-mod(x,param)
res = Vector{uwreal}(undef, 0)
for ii in 1:N_sets
mod = models[ii]
res =vcat(res, data[chunk_idx[ii]] .- mod(x_flat[chunk_idx[ii]], param))
end
chi = reshape(res, 1,:) * inv_cov * res
return chi[1]
end end
return chi end
end
fit = curve_fit(flat_model, x_flat, value.(y_flat), 1.0 ./ err.(y_flat).^2, guess_param ) if isnothing(inv_cov)
#uncorrelated chi2exp @info("Uncorrelated fit")
(upar, chi2_exp) = isnothing(wpm) ? fit_error(flat_chisq, coef(fit) , y_flat) : fit_error(flat_chisq, coef(fit) , y_flat, wpm) fit = curve_fit(flat_model, x_flat, value.(y_flat), 1.0 ./ err.(y_flat).^2, guess_param )
#correlated chi2exp (upar, chi2_exp) = isnothing(wpm) ? fit_error(flat_chisq, coef(fit) , y_flat) : fit_error(flat_chisq, coef(fit) , y_flat, wpm)
#(upar, chi2_exp) = isnothing(wpm) ? fit_error(flat_chisq, coef(fit) , y_flat, W=cov(y_flat)^(-1)) : fit_error(flat_chisq, coef(fit) , y_flat, wpm) else
chisq = value(flat_chisq(coef(fit), y_flat)) @info("Correlated fit")
fit = curve_fit(flat_model, x_flat, value.(y_flat), inv_cov, guess_param )
(upar, chi2_exp) = isnothing(wpm) ? fit_error(flat_chisq, coef(fit) , y_flat, W=inv_cov) : fit_error(flat_chisq, coef(fit) , y_flat, wpm, W=inv_cov)
end
println("chi2 from fit residue: ", sum(fit.resid.^2))
chisq = flat_chisq(coef(fit), y_flat)
if log if log
println("Converged param: ", fit.converged) println("Converged param: ", fit.converged)
println("Chisq / chiexp: ", chisq, " / ", chi2_exp, " (dof: ", dof(fit),")") println("Chisq / chiexp: ", chisq, " / ", chi2_exp, " (dof: ", dof(fit),")")
chis2_corrected = (dof(fit)) * chisq / chi2_exp chis2_corrected = (dof(fit)) * chisq / chi2_exp
println("Chisq corrected: ", chis2_corrected) println("Chisq corrected: ", chis2_corrected)
end end
return upar, chisq, chi2_exp, dof(fit) return upar, value(chisq), chi2_exp, dof(fit)
end
function fit_alg(f::Function, x::Union{Vector{Int64}, Vector{Float64}, Matrix{Float64}}, y::Vector{uwreal},
n::Int64, guess::Union{Float64, Vector{Float64}, Nothing}=nothing;
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
isnothing(wpm) ? uwerr.(y) : [uwerr(y[i], wpm) for i in 1:length(y)]
W = 1 ./ err.(y) .^ 2
chisq = fit_defs(f,x,W)
#lb = [-Inf for i in 1:n]
#ub = [+Inf for i in 1:n]
if guess == nothing
p0 = [.5 for i in 1:n]
else
p0 = [guess; [1. for i in 1:n-length(guess)]]
#lb[1] = .9 * guess
#ub[1] = 1.1 * guess
end
fit = curve_fit(f,x,value.(y),W,p0)#,lower=lb,upper=ub)
chi2 = sum(fit.resid .^ 2)
isnothing(wpm) ? (up,chi_exp) = fit_error(chisq,coef(fit),y) : (up,chi_exp) = fit_error(chisq,coef(fit),y,wpm)
isnothing(wpm) ? pval = pvalue(chisq,chi2,value.(up),y) : pval = pvalue(chisq,chi2,value.(up),y,wpm=wpm)
return up, chi2, chi_exp, pval
end
function fit_alg(model::Function,x::Array{Float64},y::Array{uwreal},param::Int64,W::Matrix{Float64};
guess::Union{Float64, Vector{Float64}, Nothing}=nothing,
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
if guess == nothing
p00 = [.5 for i in 1:param]
else
p00 = [guess; [1. for i in 1:param-length(guess)]]
#lb[1] = .9 * guess
#ub[1] = 1.1 * guess
end
chisq_corr(par,dat) = juobs.gen_chisq_correlated(model, x, W, par, dat)
fit = curve_fit(model,x,value.(y),W,p00)
up, chi_exp = fit_error(chisq_corr, coef(fit), y, wpm, W=W)
uwerr.(up)
chi2 = sum(fit.resid .^ 2)
pval = pvalue(chisq_corr, sum(fit.resid .^ 2), value.(up), y, W)
doff = dof(fit)
return up, chi2, chi_exp, pval, doff
end
function fit_alg(f::Vector{Function}, x::Vector{Matrix{Float64}}, y::Vector{Vector{uwreal}},
n::Int64, guess::Union{Float64, Vector{Float64}, Nothing}=nothing;
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
y_n = y[1]
x_n = x[1]
for i in 2:length(x)
y_n = vcat(y_n, y[i])
x_n = vcat(x_n, x[i])
end
idx = [collect(1:size(x[i],1)) for i in 1:length(x)]
[idx[i] = idx[i] .+ idx[i-1][end] for i in 2:length(idx)]
isnothing(wpm) ? [uwerr.(y[i]) for i in 1:length(y)] : [[uwerr(y[i][j], wpm) for j in 1:length(y[i])] for i in 1:length(y)]
W = [1 ./ err.(y[i]) .^ 2 for i in 1:length(y)]
chisq = (par, y_n) -> sum([sum((y_n[idx[i]] .- f[i](x[i], par)) .^ 2 .* W[i]) for i in 1:length(x)])
min_fun(t) = chisq(t, value.(y_n))
if guess == nothing
p0 = [.5 for i in 1:n]
else
p0 = [guess; [1. for i in 1:n-length(guess)]]
end
sol = optimize(min_fun, p0, Optim.Options(g_tol=1e-8, iterations=1000000))
chi2 = min_fun(sol.minimizer)
isnothing(wpm) ? (up,chi_exp) = fit_error(chisq,sol.minimizer,y_n) : (up,chi_exp) = fit_error(chisq,sol.minimizer,y_n,wpm)
isnothing(wpm) ? pval = pvalue(chisq,chi2,value.(up),y_n) : pval = pvalue(chisq,chi2,value.(up),y_n,wpm=wpm)
return up, chi2, chi_exp, pval
end
##CHECK THIS ONE, NOT WORKING GOOD
function fit_alg(f::Vector{Function}, x::Vector{Matrix{Float64}}, y::Vector{Vector{uwreal}}, W::Vector{Matrix{Float64}},
n::Int64, guess::Union{Float64, Vector{Float64}, Nothing}=nothing;
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
y_n = y[1]
x_n = x[1]
for i in 2:length(x)
y_n = vcat(y_n, y[i])
x_n = vcat(x_n, x[i])
end
idx = [collect(1:size(x[i],1)) for i in 1:length(x)]
[idx[i] = idx[i] .+ idx[i-1][end] for i in 2:length(idx)]
isnothing(wpm) ? [uwerr.(y[i]) for i in 1:length(y)] : [[uwerr(y[i][j], wpm) for j in 1:length(y[i])] for i in 1:length(y)]
chisq = (par, y_n) -> sum([juobs.gen_chisq_correlated(f[i], x[i], W[i], par, y_n[i]) for i in 1:length(x)])
min_fun(t) = chisq(t, value.(y_n))
if guess == nothing
p0 = [.5 for i in 1:n]
else
p0 = [guess; [1. for i in 1:n-length(guess)]]
end
sol = optimize(min_fun, p0, Optim.Options(g_tol=1e-8, iterations=1000000))
chi2 = min_fun(sol.minimizer)
W_aux = Matrix{Float64}(undef, length(y_n), length(y_n))
for i in 1:length(y_n)
for j in 1:length(y_n)
if i <= length(y[1])
if j <= length(y[1])
W_aux[i,j] = W[1][i,j]
else
W_aux[i,j] = .0
end
else
if j <= length(y[1])
W_aux[i,j] = .0
else
W_aux[i,j] = W[2][i-length(y[1]),j-length(y[1])]
end
end
end
end
isnothing(wpm) ? (up,chi_exp) = fit_error(chisq,sol.minimizer,y_n,W=W_aux) : (up,chi_exp) = fit_error(chisq,sol.minimizer,y_n,wpm,W=W_aux)
isnothing(wpm) ? pval = pvalue(chisq,chi2,value.(up),y_n,W_aux) : pval = pvalue(chisq,chi2,value.(up),y_n,wpm=wpm,W_aux)
return up, chi2, chi_exp, pval
end
function fit_alg(f::Vector{Function}, x::Vector{Matrix{Float64}}, y::Vector{Vector{uwreal}},
n::Int64, lb::Vector{Float64}, ub::Vector{Float64}, guess::Union{Float64, Vector{Float64}, Nothing}=nothing;
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
y_n = y[1]
x_n = x[1]
for i in 2:length(x)
y_n = vcat(y_n, y[i])
x_n = vcat(x_n, x[i])
end
idx = [collect(1:size(x[i],1)) for i in 1:length(x)]
[idx[i] = idx[i] .+ idx[i-1][end] for i in 2:length(idx)]
isnothing(wpm) ? [uwerr.(y[i]) for i in 1:length(y)] : [[uwerr(y[i][j], wpm) for j in 1:length(y[i])] for i in 1:length(y)]
W = [1 ./ err.(y[i]) .^ 2 for i in 1:length(y)]
chisq = (par, y_n) -> sum([sum((y_n[idx[i]] .- f[i](x[i], par)) .^ 2 .* W[i]) for i in 1:length(x)])
min_fun(t) = chisq(t, value.(y_n))
if guess == nothing
p0 = [.5 for i in 1:n]
else
p0 = [guess; [1. for i in 1:n-length(guess)]]
end
sol = optimize(min_fun, lb, ub, p0, Fminbox(NelderMead()), Optim.Options(g_tol=1e-8, iterations=1000000))
chi2 = min_fun(sol.minimizer)
isnothing(wpm) ? (up,chi_exp) = fit_error(chisq,sol.minimizer,y_n) : (up,chi_exp) = fit_error(chisq,sol.minimizer,y_n,wpm)
isnothing(wpm) ? pval = pvalue(chisq,chi2,value.(up),y_n) : pval = pvalue(chisq,chi2,value.(up),y_n,wpm=wpm)
return up, chi2, chi_exp, pval
end
function fit_defs(f::Function,x,W) ## uncorrelated fit
chisq(p,d) = sum((d .- f(x,p)).^2 .* W)
return chisq
end end
function gen_chisq(f::Function, x::Array{<:Real}, err::Vector{Float64}) #constrained function gen_chisq(f::Function, x::Array{<:Real}, err::Vector{Float64}) #constrained
...@@ -1078,8 +1689,8 @@ function gen_chisq_correlated(f::Function, x::Array{<:Real}, covar_inv::Matrix, ...@@ -1078,8 +1689,8 @@ function gen_chisq_correlated(f::Function, x::Array{<:Real}, covar_inv::Matrix,
chi2 = 0.0 chi2 = 0.0
#delta = dat - f(x, par) #delta = dat - f(x, par)
#chi2 = (reshape(delta, 1,:) * covar_inv * delta )[1] #chi2 = (reshape(delta, 1,:) * covar_inv * delta )[1]
for i in 1:length(dat) for i in eachindex(dat)
for j in 1:length(dat) for j in eachindex(dat)
#println(f(x,par)[i]) #println(f(x,par)[i])
#println(f(x,par)[j]) #println(f(x,par)[j])
#println(f(x[j,:],par)) #println(f(x[j,:],par))
...@@ -1138,4 +1749,247 @@ function get_chi2_cov(f::Function, data, C, par, Nalpha) # full + cov ...@@ -1138,4 +1749,247 @@ function get_chi2_cov(f::Function, data, C, par, Nalpha) # full + cov
chi2 += delta' * Cinv * delta chi2 += delta' * Cinv * delta
end end
return chi2 return chi2
end end
\ No newline at end of file
function get_covar(obs::Vector{uwreal}; wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
isnothing(wpm) ? uwerr.(obs) : [uwerr(yaux, wpm) for yaux in obs]
ens = vcat(ensembles.(obs)...)
tmp_fluc = mchist.(obs, ens)
fluc = mapreduce(permutedims, vcat, tmp_fluc)'
covar = fluc' * fluc ./ size(fluc)[1]^2
return covar
end
function get_covar_multi_id(obs::Vector{uwreal}; wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
isnothing(wpm) ? uwerr.(obs) : [uwerr(yaux, wpm) for yaux in obs]
id_set = getindex.(ensembles.(obs), 2) # hardcoded assuming that ens label is always the second entry in each ensembles(obs[i])
cov_tot = zeros(length(id_set), length(id_set))
count = 1
for (k,id) in enumerate(unique(id_set))
idx = findall(x-> x==id, id_set )
fluc_aux = mchist.(obs[idx], fill(id, length(idx)))
fluc = mapreduce(permutedims, vcat, fluc_aux)'
covar_set = fluc' * fluc ./ size(fluc)[1]^2
dim_tmp = size(covar_set,1)
cov_tot[count:dim_tmp+count-1, count:dim_tmp+count-1] = covar_set
count +=dim_tmp
end
return cov_tot
end
function inv_covar(obs::Vector{uwreal}; wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
cov = get_covar(obs, wpm=wpm)
cov_inv = inv(cov)
return (cov_inv' + cov_inv) / 2.
end
function inv_covar_multi_id(obs::Vector{uwreal}; wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
cov = get_covar_multi_id(obs, wpm=wpm)
cov_inv = inv(cov)
return (cov_inv' + cov_inv) / 2.
end
@doc raw"""
pvalue(chisq::Function,
chi2::Float64,
xp::Vector{Float64},
data::Vector{uwreal},
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing} = Dict{Int64,Vector{Float64}}();
W::Union{Vector{Float64},Array{Float64,2}} = Vector{Float64}(),
nmc::Int64 = 5000)
Computes the p-value of a previously done fit, using as input the `\chi^2` observed from the fit, the fit parameters and the fitted data.
The p-value for a given `\chi^2` is the probability of, given the data you have, finding such a `\chi^2` or worse from a fit, and still
have the data well described by the fit function. `nmc` is the number of MC samples used to estimate the p-value integral, default is 5000.
By now it only works with a vector for weights (containing the diagonal of W)
```@example
function fit_defs(f::Function,x,W)
chisq(p,d)=sum((d-f(x,p)).^2 .*W)
return chisq
end
@.fun(x,p) = p[1] + p[2] * x
chisq = fit_defs(fun, x, 1.0 ./ err.(y) .^ 2)
fit = curve_fit(fun, x, value.(y), 1.0 ./ err.(y) .^ 2, [0.5, 0.5])
(up, chiexp) = fit_error(chisq, coef(fit), y)
wpm = Dict{Int64,Vector{Float64}}()
wpm[1] = [-1.0,-1.0,4-0,-1.0]
Q = pvalue(chisq, chi2, value.(up), y, wpm; W = 1.0 ./ err.(y) .^ 2, nmc=10000)
#Q = pvalue(chisq, chi2, value.(up), y; W = 1.0 ./ err.(y) .^ 2, nmc=10000)
#Q = pvalue(chisq, chi2, value.(up), y)
```
"""
function pvalue(chisq::Function,
chi2::Float64,
xp::Vector{Float64},
data::Vector{uwreal};
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing} = Dict{Int64,Vector{Float64}}(),
nmc::Int64 = 5000)
n = length(xp) # Number of fit parameters
m = length(data) # Number of data
xav = zeros(Float64, n+m)
for i in 1:n
xav[i] = xp[i]
end
for i in n+1:n+m
xav[i] = data[i-n].mean
end
ccsq(x::Vector) = chisq(view(x, 1:n), view(x, n+1:n+m))
if (n+m < 4)
cfg = ForwardDiff.HessianConfig(ccsq, xav, ADerrors.Chunk{1}());
else
cfg = ForwardDiff.HessianConfig(ccsq, xav, ADerrors.Chunk{4}());
end
hess = Array{Float64}(undef, n+m, n+m)
ForwardDiff.hessian!(hess, ccsq, xav, cfg)
if (m-n > 0)
W = zeros(Float64, m)
for i in 1:m
if (data[i].err == 0.0)
#isnothing(wpm) ? wuerr(data[i]) : uwerr(data[i], wpm)
uwerr(data[i], wpm)
if (data[i].err == 0.0)
error("Zero error in fit data")
end
end
global W[i] = 1.0 / data[i].err^2
end
m = length(data)
n = size(hess, 1) - m
hm = view(hess, 1:n, n+1:n+m)
sm = Array{Float64, 2}(undef, n, m)
for i in 1:n, j in 1:m
sm[i,j] = hm[i,j] / sqrt.(W[j])
end
maux = sm * sm'
hi = LinearAlgebra.pinv(maux)
Px = -hm' * hi * hm
for i in 1:m
Px[i,i] = W[i] + Px[i,i]
end
C = cov(data)
nu = sqrt(C) * Px * sqrt(C)
N = length(nu[1,:])
z = randn(N, nmc)
eig = abs.(eigvals(nu))
eps = 1e-14 * maximum(eig)
eig = eig .* (eig .> eps)
aux = eig' * (z .^ 2)
Q = 1.0 - juobs.mean(aux .< chi2)
x = chi2 .- eig[2:end]' * (z[2:end,:].^2)
x = x / eig[1]
#dQ = juobs.mean((x .> 0) .* exp.(-x * 0.5) * 0.5 ./ sqrt.(abs.(x)))
#dQ = err(cse)/value(cse) * dQ
end
return Q
end
function pvalue(chisq::Function,
chi2::Float64,
xp::Vector{Float64},
data::Vector{uwreal},
W::Array{Float64,2};
wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing} = Dict{Int64,Vector{Float64}}(),
nmc::Int64 = 5000)
n = length(xp) # Number of fit parameters
m = length(data) # Number of data
xav = zeros(Float64, n+m)
for i in 1:n
xav[i] = xp[i]
end
for i in n+1:n+m
xav[i] = data[i-n].mean
end
ccsq(x::Vector) = chisq(view(x, 1:n), view(x, n+1:n+m))
if (n+m < 4)
cfg = ForwardDiff.HessianConfig(ccsq, xav, ADerrors.Chunk{1}());
else
cfg = ForwardDiff.HessianConfig(ccsq, xav, ADerrors.Chunk{4}());
end
hess = Array{Float64}(undef, n+m, n+m)
ForwardDiff.hessian!(hess, ccsq, xav, cfg)
if (m-n > 0)
m = length(data)
n = size(hess, 1) - m
Lm = LinearAlgebra.cholesky(LinearAlgebra.Symmetric(W))
Li = LinearAlgebra.inv(Lm.L)
hm = view(hess, 1:n, n+1:n+m)
sm = hm * Li'
maux = sm * sm'
hi = LinearAlgebra.pinv(maux)
Px = W - hm' * hi * hm
C = cov(data)
nu = sqrt(C) * Px * sqrt(C)
N = length(nu[1,:])
z = randn(N, nmc)
eig = abs.(eigvals(nu))
eps = 1e-14 * maximum(eig)
eig = eig .* (eig .> eps)
aux = eig' * (z .^ 2)
Q = 1.0 - juobs.mean(aux .< chi2)
x = chi2 .- eig[2:end]' * (z[2:end,:].^2)
x = x / eig[1]
#dQ = juobs.mean((x .> 0) .* exp.(-x * 0.5) * 0.5 ./ sqrt.(abs.(x)))
#dQ = err(cse)/value(cse) * dQ
end
return Q
end
function fve(mpi::uwreal, mk::uwreal, fpi::uwreal, fk::uwreal, ens::EnsInfo)
mm = [6,12,8,6,24,24,0,12,30,24,24,8,24,48,0,6,48,36,24,24]
nn = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
meta = sqrt(4/3 * mk ^ 2 - 1/3 * mpi ^ 2)
jipi = value(mpi) ^ 2 / (4*pi*fpi) ^ 2
jik = value(mk) ^ 2 / (4*pi*fpi) ^ 2
jieta = value(meta) ^ 2 / (4*pi*fpi) ^ 2
mpiL = value(mpi) * ens.L
mkL = value(mk) * ens.L
metaL = value(meta) * ens.L
lampi = mpiL * sqrt.(nn)
lamk = mkL * sqrt.(nn)
lameta = metaL * sqrt.(nn)
g1pi = sum(4 .* mm ./ lampi .* besselk.(1, lampi))
g1k = sum(4 .* mm ./ lamk .* besselk.(1, lamk))
g1eta = sum(4 .* mm ./ lameta .* besselk.(1, lameta))
fve_mpi = 1/4 * jipi * g1pi - 1/12 * jieta * g1eta
fve_mk = 1/6 * jieta * g1eta
fve_fpi = - jipi * g1pi - 1/2 * jik * g1k
fve_fk = -3/8 * jipi *g1pi - 3/4 * jik * g1k - 3/8 * jieta * g1eta
mpi_infty = mpi / (1+fve_mpi)
mk_infty = mk / (1+fve_mk)
fpi_infty = fpi / (1+fve_fpi)
fk_infty = fk / (1+fve_fk)
return mpi_infty, mk_infty, fpi_infty, fk_infty
end
...@@ -182,7 +182,7 @@ mutable struct Corr ...@@ -182,7 +182,7 @@ mutable struct Corr
theta2 = h[1].theta2 theta2 = h[1].theta2
return new(a, kappa, mu, gamma, y0, theta1, theta2) return new(a, kappa, mu, gamma, y0, theta1, theta2)
end end
Corr(o::Vector{uwreal}, k::Vector{Float64}, m::Vector{Float64}, g::Vector{String}, y::Int64) = new(o, k, m, g, y) Corr(o::Vector{uwreal}, k::Vector{Float64}, m::Vector{Float64}, g::Vector{String}, y::Int64, th1::Vector{Float64}, th2::Vector{Float64} ) = new(o, k, m, g, y, th1, th2)
end end
mutable struct YData mutable struct YData
...@@ -193,6 +193,42 @@ mutable struct YData ...@@ -193,6 +193,42 @@ mutable struct YData
YData(a, b, c, d) = new(a, b, c, d) YData(a, b, c, d) = new(a, b, c, d)
end end
@doc raw"""
EnsInfo(ens_id::String, info::Vector{Any})
Examples:
```@example
id = "H101"
ens = EnsInfo(id, ens_db[id])
```
"""
mutable struct EnsInfo
id::String
L::Int64
T::Int64
beta::Float64
ca::Float64
dtr::Int64
vrw::Union{String, Vector{String}}
cnfg::Vector{Int64}
function EnsInfo(ens_id::String, info::Vector{Any})
id = ens_id
L = info[1]
T = info[2]
beta = info[3]
dtr = info[4]
vrw = info[5]
cnfg = info[6]
p0 = 9.2056
p1 = -13.9847
g2 = 6 ./ beta
ca = - 0.006033 .* g2 .*( 1 .+exp.(p0 .+ p1./g2))
return new(id, L, T, beta, ca, dtr, vrw, cnfg)
end
end
function Base.show(io::IO, a::GHeader) function Base.show(io::IO, a::GHeader)
print(io, "ncorr = ", a.ncorr, "\t") print(io, "ncorr = ", a.ncorr, "\t")
print(io, "nnoise = ", a.nnoise, "\t") print(io, "nnoise = ", a.nnoise, "\t")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment