copulas 0.9.2.dev0__tar.gz → 0.10.0.dev0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of copulas might be problematic. Click here for more details.

Files changed (180) hide show
  1. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/HISTORY.md +13 -0
  2. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/PKG-INFO +14 -1
  3. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/__init__.py +1 -1
  4. copulas-0.10.0.dev0/copulas/visualization.py +350 -0
  5. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas.egg-info/PKG-INFO +14 -1
  6. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas.egg-info/requires.txt +1 -2
  7. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/setup.cfg +1 -1
  8. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/setup.py +2 -3
  9. copulas-0.9.2.dev0/copulas/visualization.py +0 -164
  10. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/AUTHORS.rst +0 -0
  11. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/CONTRIBUTING.rst +0 -0
  12. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/LICENSE +0 -0
  13. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/MANIFEST.in +0 -0
  14. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/README.md +0 -0
  15. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/RELEASE.md +0 -0
  16. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/bivariate/__init__.py +0 -0
  17. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/bivariate/base.py +0 -0
  18. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/bivariate/clayton.py +0 -0
  19. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/bivariate/frank.py +0 -0
  20. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/bivariate/gumbel.py +0 -0
  21. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/bivariate/independence.py +0 -0
  22. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/bivariate/utils.py +0 -0
  23. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/datasets.py +0 -0
  24. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/multivariate/__init__.py +0 -0
  25. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/multivariate/base.py +0 -0
  26. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/multivariate/gaussian.py +0 -0
  27. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/multivariate/tree.py +0 -0
  28. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/multivariate/vine.py +0 -0
  29. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/optimize/__init__.py +0 -0
  30. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/univariate/__init__.py +0 -0
  31. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/univariate/base.py +0 -0
  32. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/univariate/beta.py +0 -0
  33. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/univariate/gamma.py +0 -0
  34. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/univariate/gaussian.py +0 -0
  35. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/univariate/gaussian_kde.py +0 -0
  36. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/univariate/log_laplace.py +0 -0
  37. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/univariate/selection.py +0 -0
  38. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/univariate/student_t.py +0 -0
  39. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/univariate/truncated_gaussian.py +0 -0
  40. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas/univariate/uniform.py +0 -0
  41. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas.egg-info/SOURCES.txt +0 -0
  42. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas.egg-info/dependency_links.txt +0 -0
  43. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas.egg-info/not-zip-safe +0 -0
  44. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/copulas.egg-info/top_level.txt +0 -0
  45. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/docs/Makefile +0 -0
  46. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/docs/authors.rst +0 -0
  47. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/docs/conf.py +0 -0
  48. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/docs/contributing.rst +0 -0
  49. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/docs/history.rst +0 -0
  50. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/docs/images/copulas-200.png +0 -0
  51. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/docs/images/copulas.png +0 -0
  52. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/docs/images/copulas_sample_dataset.png +0 -0
  53. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/docs/images/dai-logo-white.png +0 -0
  54. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/docs/images/dice_cdf.png +0 -0
  55. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/docs/images/pdf_cdf.png +0 -0
  56. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/docs/images/pit.png +0 -0
  57. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/docs/images/quickstart.png +0 -0
  58. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/docs/index.rst +0 -0
  59. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/docs/install.rst +0 -0
  60. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/docs/make.bat +0 -0
  61. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/__init__.py +0 -0
  62. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/end-to-end/README.md +0 -0
  63. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/end-to-end/__init__.py +0 -0
  64. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/end-to-end/bivariate/__init__.py +0 -0
  65. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/end-to-end/bivariate/test_base.py +0 -0
  66. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/end-to-end/multivariate/__init__.py +0 -0
  67. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/end-to-end/multivariate/test_base.py +0 -0
  68. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/end-to-end/multivariate/test_gaussian.py +0 -0
  69. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/end-to-end/multivariate/test_vine.py +0 -0
  70. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/end-to-end/test___init__.py +0 -0
  71. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/end-to-end/test_visualization.py +0 -0
  72. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/end-to-end/univariate/__init__.py +0 -0
  73. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/end-to-end/univariate/test_beta.py +0 -0
  74. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/end-to-end/univariate/test_gamma.py +0 -0
  75. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/end-to-end/univariate/test_gaussian.py +0 -0
  76. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/end-to-end/univariate/test_gaussian_kde.py +0 -0
  77. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/end-to-end/univariate/test_student_t.py +0 -0
  78. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/end-to-end/univariate/test_truncated_gaussian.py +0 -0
  79. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/large_scale_evaluation.py +0 -0
  80. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/README.md +0 -0
  81. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/__init__.py +0 -0
  82. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/__init__.py +0 -0
  83. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/input/bivariate_cdf_input.csv +0 -0
  84. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/output/clayton_cdf_test_case_1_output_Matlab.csv +0 -0
  85. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/output/clayton_cdf_test_case_1_output_R.csv +0 -0
  86. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/output/clayton_cdf_test_case_2_output_Matlab.csv +0 -0
  87. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/output/clayton_cdf_test_case_2_output_R.csv +0 -0
  88. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/output/clayton_cdf_test_case_3_output_Matlab.csv +0 -0
  89. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/output/clayton_cdf_test_case_3_output_R.csv +0 -0
  90. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/output/frank_cdf_test_case_1_output_Matlab.csv +0 -0
  91. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/output/frank_cdf_test_case_1_output_R.csv +0 -0
  92. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/output/frank_cdf_test_case_2_output_Matlab.csv +0 -0
  93. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/output/frank_cdf_test_case_2_output_R.csv +0 -0
  94. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/output/frank_cdf_test_case_3_output_Matlab.csv +0 -0
  95. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/output/frank_cdf_test_case_3_output_R.csv +0 -0
  96. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/output/gumbel_cdf_test_case_1_output_Matlab.csv +0 -0
  97. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/output/gumbel_cdf_test_case_1_output_R.csv +0 -0
  98. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/output/gumbel_cdf_test_case_2_output_Matlab.csv +0 -0
  99. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/output/gumbel_cdf_test_case_2_output_R.csv +0 -0
  100. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/scripts/bivariate_cdf_input.py +0 -0
  101. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/scripts/bivariate_cdf_output.R +0 -0
  102. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/scripts/bivariate_cdf_output.m +0 -0
  103. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/test_cases/clayton/clayton_cdf_test_case_1.json +0 -0
  104. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/test_cases/clayton/clayton_cdf_test_case_2.json +0 -0
  105. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/test_cases/clayton/clayton_cdf_test_case_3.json +0 -0
  106. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/test_cases/frank/frank_cdf_test_case_1.json +0 -0
  107. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/test_cases/frank/frank_cdf_test_case_2.json +0 -0
  108. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/test_cases/frank/frank_cdf_test_case_3.json +0 -0
  109. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/test_cases/gumbel/gumbel_cdf_test_case_1.json +0 -0
  110. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/test_cases/gumbel/gumbel_cdf_test_case_2.json +0 -0
  111. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/cdf/test_cdf.py +0 -0
  112. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/fit/__init__.py +0 -0
  113. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/fit/input/bivariate_fit_test_case_1_input.csv +0 -0
  114. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/fit/input/bivariate_fit_test_case_2_input.csv +0 -0
  115. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/fit/scripts/bivariate_fit_output.R +0 -0
  116. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/fit/scripts/bivariate_fit_output.m +0 -0
  117. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/fit/test_cases/clayton/clayton_fit_test_case_1.json +0 -0
  118. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/fit/test_cases/clayton/clayton_fit_test_case_2.json +0 -0
  119. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/fit/test_cases/frank/frank_fit_test_case_1.json +0 -0
  120. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/fit/test_cases/frank/frank_fit_test_case_2.json +0 -0
  121. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/fit/test_cases/gumbel/gumbel_fit_test_case_1.json +0 -0
  122. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/fit/test_cases/gumbel/gumbel_fit_test_case_2.json +0 -0
  123. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/fit/test_fit.py +0 -0
  124. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/__init__.py +0 -0
  125. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/input/bivariate_pdf_input.csv +0 -0
  126. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/output/clayton_pdf_test_case_1_output_Matlab.csv +0 -0
  127. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/output/clayton_pdf_test_case_1_output_R.csv +0 -0
  128. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/output/clayton_pdf_test_case_2_output_Matlab.csv +0 -0
  129. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/output/clayton_pdf_test_case_2_output_R.csv +0 -0
  130. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/output/clayton_pdf_test_case_3_output_Matlab.csv +0 -0
  131. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/output/clayton_pdf_test_case_3_output_R.csv +0 -0
  132. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/output/frank_pdf_test_case_1_output_Matlab.csv +0 -0
  133. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/output/frank_pdf_test_case_1_output_R.csv +0 -0
  134. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/output/frank_pdf_test_case_2_output_Matlab.csv +0 -0
  135. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/output/frank_pdf_test_case_2_output_R.csv +0 -0
  136. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/output/frank_pdf_test_case_3_output_Matlab.csv +0 -0
  137. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/output/frank_pdf_test_case_3_output_R.csv +0 -0
  138. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/output/gumbel_pdf_test_case_1_output_Matlab.csv +0 -0
  139. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/output/gumbel_pdf_test_case_1_output_R.csv +0 -0
  140. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/output/gumbel_pdf_test_case_2_output_Matlab.csv +0 -0
  141. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/output/gumbel_pdf_test_case_2_output_R.csv +0 -0
  142. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/scripts/bivariate_pdf_input.py +0 -0
  143. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/scripts/bivariate_pdf_output.R +0 -0
  144. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/scripts/bivariate_pdf_output.m +0 -0
  145. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/test_cases/clayton/clayton_pdf_test_case_1.json +0 -0
  146. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/test_cases/clayton/clayton_pdf_test_case_2.json +0 -0
  147. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/test_cases/clayton/clayton_pdf_test_case_3.json +0 -0
  148. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/test_cases/frank/frank_pdf_test_case_1.json +0 -0
  149. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/test_cases/frank/frank_pdf_test_case_2.json +0 -0
  150. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/test_cases/frank/frank_pdf_test_case_3.json +0 -0
  151. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/test_cases/gumbel/gumbel_pdf_test_case_1.json +0 -0
  152. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/test_cases/gumbel/gumbel_pdf_test_case_2.json +0 -0
  153. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/numerical/pdf/test_pdf.py +0 -0
  154. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/__init__.py +0 -0
  155. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/bivariate/__init__.py +0 -0
  156. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/bivariate/test___init__.py +0 -0
  157. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/bivariate/test_base.py +0 -0
  158. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/bivariate/test_clayton.py +0 -0
  159. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/bivariate/test_frank.py +0 -0
  160. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/bivariate/test_gumbel.py +0 -0
  161. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/bivariate/test_independence.py +0 -0
  162. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/multivariate/__init__.py +0 -0
  163. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/multivariate/test_base.py +0 -0
  164. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/multivariate/test_gaussian.py +0 -0
  165. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/multivariate/test_tree.py +0 -0
  166. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/multivariate/test_vine.py +0 -0
  167. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/optimize/__init__.py +0 -0
  168. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/optimize/test___init__.py +0 -0
  169. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/test___init__.py +0 -0
  170. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/univariate/__init__.py +0 -0
  171. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/univariate/test_base.py +0 -0
  172. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/univariate/test_beta.py +0 -0
  173. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/univariate/test_gamma.py +0 -0
  174. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/univariate/test_gaussian.py +0 -0
  175. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/univariate/test_gaussian_kde.py +0 -0
  176. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/univariate/test_log_laplace.py +0 -0
  177. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/univariate/test_selection.py +0 -0
  178. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/univariate/test_student_t.py +0 -0
  179. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/univariate/test_truncated_gaussian.py +0 -0
  180. {copulas-0.9.2.dev0 → copulas-0.10.0.dev0}/tests/unit/univariate/test_uniform.py +0 -0
@@ -1,5 +1,18 @@
1
1
  # History
2
2
 
3
+ ## v0.9.2 - 2023-10-12
4
+
5
+ This release removes a warning that was being raised when univariate distributions failed to fit and logs the message instead.
6
+
7
+ ### New Features
8
+
9
+ * When Copulas univariate fit fails, produce a log instead of a warning - Issue [#359](https://github.com/sdv-dev/Copulas/issues/359) by @R-Palazzo
10
+
11
+ ### Maintenance
12
+
13
+ * Switch default branch from master to main - Issue [#360](https://github.com/sdv-dev/Copulas/issues/360) by @amontanez24
14
+ * Update add-on detection for Copulas - Issue [#362](https://github.com/sdv-dev/Copulas/issues/362) by @pvk-developer
15
+
3
16
  ## v0.9.1 - 2023-08-10
4
17
 
5
18
  This release fixes problems with the documentation site and drops support for Python 3.7.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: copulas
3
- Version: 0.9.2.dev0
3
+ Version: 0.10.0.dev0
4
4
  Summary: Create tabular synthetic data using copulas-based modeling.
5
5
  Home-page: https://github.com/sdv-dev/Copulas
6
6
  Author: DataCebo, Inc.
@@ -162,6 +162,19 @@ for specific needs.
162
162
 
163
163
  # History
164
164
 
165
+ ## v0.9.2 - 2023-10-12
166
+
167
+ This release removes a warning that was being raised when univariate distributions failed to fit and logs the message instead.
168
+
169
+ ### New Features
170
+
171
+ * When Copulas univariate fit fails, produce a log instead of a warning - Issue [#359](https://github.com/sdv-dev/Copulas/issues/359) by @R-Palazzo
172
+
173
+ ### Maintenance
174
+
175
+ * Switch default branch from master to main - Issue [#360](https://github.com/sdv-dev/Copulas/issues/360) by @amontanez24
176
+ * Update add-on detection for Copulas - Issue [#362](https://github.com/sdv-dev/Copulas/issues/362) by @pvk-developer
177
+
165
178
  ## v0.9.1 - 2023-08-10
166
179
 
167
180
  This release fixes problems with the documentation site and drops support for Python 3.7.
@@ -4,7 +4,7 @@
4
4
 
5
5
  __author__ = 'DataCebo, Inc.'
6
6
  __email__ = 'info@sdv.dev'
7
- __version__ = '0.9.2.dev0'
7
+ __version__ = '0.10.0.dev0'
8
8
 
9
9
  import contextlib
10
10
  import importlib
@@ -0,0 +1,350 @@
1
+ """Visualization utilities for the Copulas library."""
2
+
3
+ import pandas as pd
4
+ import plotly.express as px
5
+ import plotly.figure_factory as ff
6
+
7
+
8
+ class PlotConfig:
9
+ """Custom plot settings for visualizations."""
10
+
11
+ DATACEBO_DARK = '#000036'
12
+ DATACEBO_GREEN = '#01E0C9'
13
+ BACKGROUND_COLOR = '#F5F5F8'
14
+ FONT_SIZE = 18
15
+
16
+
17
+ def _generate_1d_plot(data, title, labels, colors):
18
+ """Generate a density plot of an array-like structure.
19
+
20
+ Args:
21
+ data (array-like structure):
22
+ The data to plot.
23
+ title (str):
24
+ The title of the plot.
25
+ labels (list[str]):
26
+ The labels of the data.
27
+ colors (list[str]):
28
+ The colors of the data.
29
+
30
+ Returns:
31
+ plotly.graph_objects._figure.Figure
32
+ """
33
+ fig = ff.create_distplot(
34
+ hist_data=data,
35
+ group_labels=labels,
36
+ show_hist=False,
37
+ show_rug=False,
38
+ colors=colors
39
+ )
40
+
41
+ for i, name in enumerate(labels):
42
+ fig.update_traces(
43
+ x=fig.data[i].x,
44
+ hovertemplate=f'<b>{name}</b><br>Frequency: %{{y}}<extra></extra>',
45
+ selector={'name': name},
46
+ fill='tozeroy',
47
+ )
48
+
49
+ fig.update_layout(
50
+ title=title,
51
+ plot_bgcolor=PlotConfig.BACKGROUND_COLOR,
52
+ font={'size': PlotConfig.FONT_SIZE},
53
+ showlegend=True if labels[0] else False,
54
+ xaxis_title='value',
55
+ yaxis_title='frequency'
56
+ )
57
+
58
+ return fig
59
+
60
+
61
+ def dist_1d(data, title=None, label=None):
62
+ """Plot the 1 dimensional data.
63
+
64
+ Args:
65
+ data (array_like structure):
66
+ The table data.
67
+ title (str):
68
+ The title of the plot.
69
+ label (str):
70
+ The label of the plot.
71
+
72
+ Returns:
73
+ plotly.graph_objects._figure.Figure
74
+ """
75
+ if not title:
76
+ title = 'Data'
77
+ if isinstance(data, pd.DataFrame):
78
+ title += f" for column '{data.columns[0]}'"
79
+ elif isinstance(data, pd.Series) and data.name:
80
+ title += f" for column '{data.name}'"
81
+
82
+ return _generate_1d_plot(
83
+ data=[data],
84
+ title=title,
85
+ labels=[label],
86
+ colors=[PlotConfig.DATACEBO_DARK]
87
+ )
88
+
89
+
90
+ def compare_1d(real, synth, title=None):
91
+ """Plot the comparison between real and synthetic data.
92
+
93
+ Args:
94
+ real (array_like):
95
+ The real data.
96
+ synth (array_like):
97
+ The synthetic data.
98
+ title (str):
99
+ The title of the plot.
100
+
101
+ Returns:
102
+ plotly.graph_objects._figure.Figure
103
+ """
104
+ if not title:
105
+ title = 'Real vs. Synthetic Data'
106
+ if isinstance(real, pd.DataFrame):
107
+ title += f" for column '{real.columns[0]}'"
108
+ elif isinstance(real, pd.Series) and real.name:
109
+ title += f" for column '{real.name}'"
110
+
111
+ return _generate_1d_plot(
112
+ data=[real, synth],
113
+ title=title,
114
+ labels=['Real', 'Synthetic'],
115
+ colors=[PlotConfig.DATACEBO_DARK, PlotConfig.DATACEBO_GREEN]
116
+ )
117
+
118
+
119
+ def _generate_scatter_2d_plot(data, columns, color_discrete_map, title):
120
+ """Generate a scatter plot for a pair of columns.
121
+
122
+ Args:
123
+ data (pandas.DataFrame):
124
+ The data for the desired column pair containing a
125
+ ``Data`` column indicating whether it is real or synthetic.
126
+ columns (list):
127
+ A list of the columns being plotted.
128
+ color_discrete_map (dict):
129
+ A dictionary mapping the values of the ``Data`` column to the colors
130
+ used to plot them.
131
+ title (str):
132
+ The title of the plot.
133
+
134
+ Returns:
135
+ plotly.graph_objects._figure.Figure
136
+ """
137
+ if columns:
138
+ columns.append('Data')
139
+ else:
140
+ columns = data.columns
141
+
142
+ if len(columns) != 3: # includes the 'Data' column
143
+ raise ValueError('Only 2 columns can be plotted')
144
+
145
+ fig = px.scatter(
146
+ data,
147
+ x=columns[0],
148
+ y=columns[1],
149
+ color='Data',
150
+ color_discrete_map=color_discrete_map,
151
+ symbol='Data'
152
+ )
153
+
154
+ fig.update_layout(
155
+ title=title,
156
+ plot_bgcolor=PlotConfig.BACKGROUND_COLOR,
157
+ font={'size': PlotConfig.FONT_SIZE},
158
+ showlegend=False if len(color_discrete_map) == 1 else True,
159
+ )
160
+
161
+ return fig
162
+
163
+
164
+ def scatter_2d(data, columns=None, title=None):
165
+ """Plot 2 dimensional data in a scatter plot.
166
+
167
+ Args:
168
+ data (pandas.DataFrame):
169
+ The table data.
170
+ columns (list[string]):
171
+ The names of the two columns to plot.
172
+ title (str):
173
+ The title of the plot.
174
+
175
+ Returns:
176
+ plotly.graph_objects._figure.Figure
177
+ """
178
+ data = data.copy()
179
+ data['Data'] = 'Real'
180
+
181
+ if not title:
182
+ title = 'Data'
183
+ if columns:
184
+ title += f" for columns '{columns[0]}' and '{columns[1]}'"
185
+ elif isinstance(data, pd.DataFrame):
186
+ title += f" for columns '{data.columns[0]}' and '{data.columns[1]}'"
187
+
188
+ return _generate_scatter_2d_plot(
189
+ data=data,
190
+ columns=columns,
191
+ color_discrete_map={'Real': PlotConfig.DATACEBO_DARK},
192
+ title=title
193
+ )
194
+
195
+
196
+ def compare_2d(real, synth, columns=None, title=None):
197
+ """Plot the comparison between real and synthetic data for a given column pair.
198
+
199
+ Args:
200
+ real (pandas.DataFrame):
201
+ The real table data.
202
+ synth (pandas.Dataframe):
203
+ The synthetic table data.
204
+ columns (list[string]):
205
+ The names of the two columns to plot.
206
+ title (str):
207
+ The title of the plot.
208
+
209
+ Returns:
210
+ plotly.graph_objects._figure.Figure
211
+ """
212
+ real, synth = real.copy(), synth.copy()
213
+ real['Data'] = 'Real'
214
+ synth['Data'] = 'Synthetic'
215
+ data = pd.concat([real, synth], axis=0, ignore_index=True)
216
+
217
+ if not title:
218
+ title = 'Real vs. Synthetic Data'
219
+ if columns:
220
+ title += f" for columns '{columns[0]}' and '{columns[1]}'"
221
+ elif isinstance(data, pd.DataFrame):
222
+ title += f" for columns '{data.columns[0]}' and '{data.columns[1]}'"
223
+
224
+ return _generate_scatter_2d_plot(
225
+ data=data,
226
+ columns=columns,
227
+ color_discrete_map={
228
+ 'Real': PlotConfig.DATACEBO_DARK,
229
+ 'Synthetic': PlotConfig.DATACEBO_GREEN
230
+ },
231
+ title=title
232
+ )
233
+
234
+
235
+ def _generate_scatter_3d_plot(data, columns, color_discrete_map, title):
236
+ """Generate a scatter plot for column pair plot.
237
+
238
+ Args:
239
+ data (pandas.DataFrame):
240
+ The data for the desired three columns containing a
241
+ ``Data`` column that indicates whether it is real or synthetic.
242
+ columns (list):
243
+ A list of the columns being plotted.
244
+ color_discrete_map (dict):
245
+ A dictionary mapping the values of the ``Data`` column to the colors
246
+ used to plot them.
247
+ title (str):
248
+ The title of the plot.
249
+
250
+ Returns:
251
+ plotly.graph_objects._figure.Figure
252
+ """
253
+ if columns:
254
+ columns.append('Data')
255
+ else:
256
+ columns = data.columns
257
+
258
+ if len(columns) != 4: # includes the 'Data' column
259
+ raise ValueError('Only 3 columns can be plotted')
260
+
261
+ fig = px.scatter_3d(
262
+ data,
263
+ x=columns[0],
264
+ y=columns[1],
265
+ z=columns[2],
266
+ color='Data',
267
+ color_discrete_map=color_discrete_map,
268
+ symbol='Data',
269
+ )
270
+
271
+ fig.update_traces(marker={'size': 5})
272
+
273
+ fig.update_layout(
274
+ title=title,
275
+ plot_bgcolor=PlotConfig.BACKGROUND_COLOR,
276
+ font={'size': PlotConfig.FONT_SIZE},
277
+ showlegend=False if len(color_discrete_map) == 1 else True,
278
+ )
279
+
280
+ return fig
281
+
282
+
283
+ def scatter_3d(data, columns=None, title=None):
284
+ """Plot 3 dimensional data in a scatter plot.
285
+
286
+ Args:
287
+ data (pandas.DataFrame):
288
+ The table data. Must have at least 3 columns.
289
+ columns (list[string]):
290
+ The names of the three columns to plot.
291
+ title (str):
292
+ The title of the plot.
293
+
294
+ Returns:
295
+ plotly.graph_objects._figure.Figure
296
+ """
297
+ data = data.copy()
298
+ data['Data'] = 'Real'
299
+
300
+ if not title:
301
+ title = 'Data'
302
+ if columns:
303
+ title += f" for columns '{columns[0]}', '{columns[1]}' and '{columns[2]}'"
304
+ elif isinstance(data, pd.DataFrame):
305
+ title += \
306
+ f" for columns '{data.columns[0]}', '{data.columns[1]}' and '{data.columns[2]}'"
307
+
308
+ return _generate_scatter_3d_plot(
309
+ data=data,
310
+ columns=columns,
311
+ color_discrete_map={'Real': PlotConfig.DATACEBO_DARK},
312
+ title=title
313
+ )
314
+
315
+
316
+ def compare_3d(real, synth, columns=None, title=None):
317
+ """Plot the comparison between real and synthetic data for a given column triplet.
318
+
319
+ Args:
320
+ real (pd.DataFrame):
321
+ The real data.
322
+ synth (pd.DataFrame):
323
+ The synthetic data.
324
+ columns (list):
325
+ The name of the columns to plot.
326
+ title (str):
327
+ The title of the plot.
328
+ """
329
+ real, synth = real.copy(), synth.copy()
330
+ real['Data'] = 'Real'
331
+ synth['Data'] = 'Synthetic'
332
+ data = pd.concat([real, synth], axis=0, ignore_index=True)
333
+
334
+ if not title:
335
+ title = 'Real vs. Synthetic Data'
336
+ if columns:
337
+ title += f" for columns '{columns[0]}', '{columns[1]}' and '{columns[2]}'"
338
+ elif isinstance(data, pd.DataFrame):
339
+ title += \
340
+ f" for columns '{data.columns[0]}', '{data.columns[1]}' and '{data.columns[2]}'"
341
+
342
+ return _generate_scatter_3d_plot(
343
+ data=data,
344
+ columns=columns,
345
+ color_discrete_map={
346
+ 'Real': PlotConfig.DATACEBO_DARK,
347
+ 'Synthetic': PlotConfig.DATACEBO_GREEN
348
+ },
349
+ title=title
350
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: copulas
3
- Version: 0.9.2.dev0
3
+ Version: 0.10.0.dev0
4
4
  Summary: Create tabular synthetic data using copulas-based modeling.
5
5
  Home-page: https://github.com/sdv-dev/Copulas
6
6
  Author: DataCebo, Inc.
@@ -162,6 +162,19 @@ for specific needs.
162
162
 
163
163
  # History
164
164
 
165
+ ## v0.9.2 - 2023-10-12
166
+
167
+ This release removes a warning that was being raised when univariate distributions failed to fit and logs the message instead.
168
+
169
+ ### New Features
170
+
171
+ * When Copulas univariate fit fails, produce a log instead of a warning - Issue [#359](https://github.com/sdv-dev/Copulas/issues/359) by @R-Palazzo
172
+
173
+ ### Maintenance
174
+
175
+ * Switch default branch from master to main - Issue [#360](https://github.com/sdv-dev/Copulas/issues/360) by @amontanez24
176
+ * Update add-on detection for Copulas - Issue [#362](https://github.com/sdv-dev/Copulas/issues/362) by @pvk-developer
177
+
165
178
  ## v0.9.1 - 2023-08-10
166
179
 
167
180
  This release fixes problems with the documentation site and drops support for Python 3.7.
@@ -1,12 +1,11 @@
1
+ plotly<6,>=5.10.0
1
2
 
2
3
  [:python_version < "3.10"]
3
- matplotlib<4,>=3.4.0
4
4
  numpy<2,>=1.20.0
5
5
  pandas>=1.1.3
6
6
  scipy<2,>=1.5.4
7
7
 
8
8
  [:python_version >= "3.10"]
9
- matplotlib<4,>=3.6.0
10
9
  numpy<2,>=1.23.3
11
10
  scipy<2,>=1.9.2
12
11
 
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 0.9.2.dev0
2
+ current_version = 0.10.0.dev0
3
3
  commit = True
4
4
  tag = True
5
5
  parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\.(?P<release>[a-z]+)(?P<candidate>\d+))?
@@ -12,13 +12,12 @@ with open('HISTORY.md', encoding='utf-8') as history_file:
12
12
  history = history_file.read()
13
13
 
14
14
  install_requires = [
15
- "matplotlib>=3.4.0,<4;python_version<'3.10'",
16
- "matplotlib>=3.6.0,<4;python_version>='3.10'",
17
15
  "numpy>=1.20.0,<2;python_version<'3.10'",
18
16
  "numpy>=1.23.3,<2;python_version>='3.10'",
19
17
  "pandas>=1.1.3;python_version<'3.10'",
20
18
  "pandas>=1.3.4;python_version>='3.10' and python_version<'3.11'",
21
19
  "pandas>=1.5.0;python_version>='3.11'",
20
+ 'plotly>=5.10.0,<6',
22
21
  "scipy>=1.5.4,<2;python_version<'3.10'",
23
22
  "scipy>=1.9.2,<2;python_version>='3.10'",
24
23
  ]
@@ -136,6 +135,6 @@ setup(
136
135
  test_suite='tests',
137
136
  tests_require=tests_require,
138
137
  url='https://github.com/sdv-dev/Copulas',
139
- version='0.9.2.dev0',
138
+ version='0.10.0.dev0',
140
139
  zip_safe=False,
141
140
  )
@@ -1,164 +0,0 @@
1
- """Visualization utilities for the Copulas library."""
2
-
3
- import pandas as pd
4
-
5
- try:
6
- import matplotlib.pyplot as plt
7
- except RuntimeError as e:
8
- if 'Python is not installed as a framework.' in e.message:
9
- import matplotlib
10
- matplotlib.use('PS') # Avoid crash on macos
11
- import matplotlib.pyplot as plt
12
-
13
-
14
- def scatter_3d(data, columns=None, fig=None, title=None, position=None):
15
- """Plot 3 dimensional data in a scatter plot."""
16
- fig = fig or plt.figure()
17
- position = position or 111
18
-
19
- ax = fig.add_subplot(position, projection='3d')
20
- ax.scatter(*(
21
- data[column]
22
- for column in columns or data.columns
23
- ))
24
- if title:
25
- ax.set_title(title)
26
- ax.title.set_position([.5, 1.05])
27
-
28
- return ax
29
-
30
-
31
- def scatter_2d(data, columns=None, fig=None, title=None, position=None):
32
- """Plot 2 dimensional data in a scatter plot."""
33
- fig = fig or plt.figure()
34
- position = position or 111
35
-
36
- ax = fig.add_subplot(position)
37
- columns = columns or data.columns
38
- if len(columns) != 2:
39
- raise ValueError('Only 2 columns can be plotted')
40
-
41
- x, y = columns
42
-
43
- ax.scatter(data[x], data[y])
44
- plt.xlabel(x)
45
- plt.ylabel(y)
46
-
47
- if title:
48
- ax.set_title(title)
49
- ax.title.set_position([.5, 1.05])
50
-
51
- return ax
52
-
53
-
54
- def hist_1d(data, fig=None, title=None, position=None, bins=20, label=None):
55
- """Plot 1 dimensional data in a histogram."""
56
- fig = fig or plt.figure()
57
- position = position or 111
58
-
59
- ax = fig.add_subplot(position)
60
- ax.hist(data, density=True, bins=bins, alpha=0.8, label=label)
61
-
62
- if label:
63
- ax.legend()
64
-
65
- if title:
66
- ax.set_title(title)
67
- ax.title.set_position([.5, 1.05])
68
-
69
- return ax
70
-
71
-
72
- def side_by_side(plotting_func, arrays):
73
- """Plot side-by-side figures.
74
-
75
- Args:
76
- plotting_func (callable):
77
- A matplotlib function which takes in the standard plot kwargs.
78
- arrays (dict[str, np.ndarray]):
79
- A mapping from the name of the subplot to the values.
80
- """
81
- fig = plt.figure(figsize=(10, 4))
82
-
83
- position_base = f'1{len(arrays)}'
84
- for index, (title, array) in enumerate(arrays.items()):
85
- position = int(position_base + str(index + 1))
86
- plotting_func(array, fig=fig, title=title, position=position)
87
-
88
- plt.tight_layout()
89
-
90
-
91
- def compare_3d(real, synth, columns=None, figsize=(10, 4)):
92
- """Generate a 3d scatter plot comparing real/synthetic data.
93
-
94
- Args:
95
- real (pd.DataFrame):
96
- The real data.
97
- synth (pd.DataFrame):
98
- The synthetic data.
99
- columns (list):
100
- The name of the columns to plot.
101
- figsize:
102
- Figure size, passed to matplotlib.
103
- """
104
- columns = columns or real.columns
105
- fig = plt.figure(figsize=figsize)
106
-
107
- scatter_3d(real[columns], fig=fig, title='Real Data', position=121)
108
- scatter_3d(synth[columns], fig=fig, title='Synthetic Data', position=122)
109
-
110
- plt.tight_layout()
111
-
112
-
113
- def compare_2d(real, synth, columns=None, figsize=None):
114
- """Generate a 2d scatter plot comparing real/synthetic data.
115
-
116
- Args:
117
- real (pd.DataFrame):
118
- The real data.
119
- synth (pd.DataFrame):
120
- The synthetic data.
121
- columns (list):
122
- The name of the columns to plot.
123
- figsize:
124
- Figure size, passed to matplotlib.
125
- """
126
- x, y = columns or real.columns
127
- ax = real.plot.scatter(x, y, color='blue', alpha=0.5, figsize=figsize)
128
- ax = synth.plot.scatter(x, y, ax=ax, color='orange', alpha=0.5, figsize=figsize)
129
- ax.legend(['Real', 'Synthetic'])
130
-
131
-
132
- def compare_1d(real, synth, columns=None, figsize=None):
133
- """Generate a 1d scatter plot comparing real/synthetic data.
134
-
135
- Args:
136
- real (pd.DataFrame):
137
- The real data.
138
- synth (pd.DataFrame):
139
- The synthetic data.
140
- columns (list):
141
- The name of the columns to plot.
142
- figsize:
143
- Figure size, passed to matplotlib.
144
- """
145
- if len(real.shape) == 1:
146
- real = pd.DataFrame({'': real})
147
- synth = pd.DataFrame({'': synth})
148
-
149
- columns = columns or real.columns
150
-
151
- num_cols = len(columns)
152
- fig_cols = min(2, num_cols)
153
- fig_rows = (num_cols // fig_cols) + 1
154
- prefix = f'{fig_rows}{fig_cols}'
155
-
156
- figsize = figsize or (5 * fig_cols, 3 * fig_rows)
157
- fig = plt.figure(figsize=figsize)
158
-
159
- for idx, column in enumerate(columns):
160
- position = int(prefix + str(idx + 1))
161
- hist_1d(real[column], fig=fig, position=position, title=column, label='Real')
162
- hist_1d(synth[column], fig=fig, position=position, title=column, label='Synthetic')
163
-
164
- plt.tight_layout()
File without changes
File without changes
File without changes
File without changes
File without changes