pyfemtet 1.2.2__tar.gz → 1.3.0__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 pyfemtet might be problematic. Click here for more details.

Files changed (181) hide show
  1. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/PKG-INFO +2 -2
  2. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_util/dask_util.py +2 -3
  3. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/history/_history.py +48 -46
  4. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/history/_hypervolume.py +64 -6
  5. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_femtet_interface/femtet_interface.py +3 -2
  6. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyproject.toml +2 -2
  7. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/LICENSE +0 -0
  8. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/LICENSE_THIRD_PARTY.txt +0 -0
  9. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/README.md +0 -0
  10. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/__init__.py +0 -0
  11. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_i18n/1. make_pot_and_update_po.bat +0 -0
  12. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_i18n/2. build_mo.bat +0 -0
  13. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_i18n/__init__.py +0 -0
  14. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_i18n/babel.cfg +0 -0
  15. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_i18n/i18n.py +0 -0
  16. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_i18n/locales/ja/LC_MESSAGES/messages.mo +0 -0
  17. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_i18n/locales/ja/LC_MESSAGES/messages.po +0 -0
  18. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_i18n/locales/messages.pot +0 -0
  19. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_i18n/messages.py +0 -0
  20. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_util/__init__.py +0 -0
  21. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_util/closing.py +0 -0
  22. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_util/df_util.py +0 -0
  23. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_util/excel_macro_util.py +0 -0
  24. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_util/excel_parse_util.py +0 -0
  25. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_util/femtet_access_inspection.py +0 -0
  26. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_util/femtet_autosave.py +0 -0
  27. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_util/femtet_exit.py +0 -0
  28. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_util/femtet_version.py +0 -0
  29. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_util/helper.py +0 -0
  30. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_util/process_util.py +0 -0
  31. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_util/sample.xlsx +0 -0
  32. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_util/solidworks_variable.py +0 -0
  33. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_util/str_enum.py +0 -0
  34. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/_util/symbol_support_for_param_name.py +0 -0
  35. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/core.py +0 -0
  36. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/dispatch_extensions/__init__.py +0 -0
  37. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/dispatch_extensions/_impl.py +0 -0
  38. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/logger/__init__.py +0 -0
  39. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/logger/_impl.py +0 -0
  40. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/__init__.py +0 -0
  41. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/exceptions.py +0 -0
  42. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/femopt.py +0 -0
  43. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/history/__init__.py +0 -0
  44. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/history/_optimality.py +0 -0
  45. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/__init__.py +0 -0
  46. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_base_interface.py +0 -0
  47. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_dummy_classes.py +0 -0
  48. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_excel_interface/__init__.py +0 -0
  49. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_excel_interface/debug-excel-interface.xlsm +0 -0
  50. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_excel_interface/excel_interface.py +0 -0
  51. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_femtet_interface/__init__.py +0 -0
  52. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_femtet_interface/_femtet_parametric.py +0 -0
  53. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/__init__.py +0 -0
  54. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/femtet_with_nx_interface.py +0 -0
  55. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/model1.prt +0 -0
  56. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/model1.x_t +0 -0
  57. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/update_model.py +0 -0
  58. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_femtet_with_solidworks/__init__.py +0 -0
  59. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_femtet_with_solidworks/femtet_with_solidworks_interface.py +0 -0
  60. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_solidworks_interface/__init__.py +0 -0
  61. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_solidworks_interface/solidworks_interface.py +0 -0
  62. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_solidworks_interface/sw_const.py +0 -0
  63. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_surrogate_model_interface/__init__.py +0 -0
  64. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_surrogate_model_interface/base_surrogate_interface.py +0 -0
  65. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_surrogate_model_interface/botorch_interface.py +0 -0
  66. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_surrogate_model_interface/debug-pof-botorch.reccsv +0 -0
  67. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_with_excel_settings/__init__.py +0 -0
  68. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/interface/_with_excel_settings/with_excel_settings.py +0 -0
  69. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/meta_script/YAML_Generator.xlsm +0 -0
  70. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/meta_script/__init__.py +0 -0
  71. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/meta_script/__main__.py +0 -0
  72. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/meta_script/sample/sample.bas +0 -0
  73. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/meta_script/sample/sample.femprj +0 -0
  74. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/optimizer/__init__.py +0 -0
  75. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/optimizer/_base_optimizer.py +0 -0
  76. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/optimizer/_trial_queue.py +0 -0
  77. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/optimizer/optuna_optimizer/__init__.py +0 -0
  78. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/optimizer/optuna_optimizer/_optuna_attribute.py +0 -0
  79. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/optimizer/optuna_optimizer/_optuna_optimizer.py +0 -0
  80. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/__init__.py +0 -0
  81. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/debug-pof-botorch.reccsv +0 -0
  82. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/enable_nonlinear_constraint.py +0 -0
  83. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/pof_botorch_sampler.py +0 -0
  84. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/optimizer/optuna_optimizer/wat_ex14_parametric_jp.femprj +0 -0
  85. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/optimizer/scipy_optimizer/__init__.py +0 -0
  86. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/optimizer/scipy_optimizer/_scipy_optimizer.py +0 -0
  87. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/prediction/__init__.py +0 -0
  88. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/prediction/_botorch_utils.py +0 -0
  89. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/prediction/_gpytorch_modules_extension.py +0 -0
  90. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/prediction/_helper.py +0 -0
  91. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/prediction/_model.py +0 -0
  92. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/problem/__init__.py +0 -0
  93. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/problem/problem.py +0 -0
  94. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/problem/variable_manager/__init__.py +0 -0
  95. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/problem/variable_manager/_string_as_expression.py +0 -0
  96. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/problem/variable_manager/_variable_manager.py +0 -0
  97. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/__init__.py +0 -0
  98. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/_create_wrapped_components.py +0 -0
  99. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/__init__.py +0 -0
  100. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/__main__.py +0 -0
  101. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/_base_application.py +0 -0
  102. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/_common_pages.py +0 -0
  103. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/__init__.py +0 -0
  104. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/alert_region.py +0 -0
  105. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/control_femtet.py +0 -0
  106. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/detail_graphs.py +0 -0
  107. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/main_graph.py +0 -0
  108. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/pm_graph.py +0 -0
  109. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/_detail_page.py +0 -0
  110. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/_helper.py +0 -0
  111. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/_process_monitor/__init__.py +0 -0
  112. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/_process_monitor/_application.py +0 -0
  113. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/_process_monitor/_pages.py +0 -0
  114. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/__init__.py +0 -0
  115. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/dbc.py +0 -0
  116. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/dcc.py +0 -0
  117. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/html.py +0 -0
  118. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/str_enum.py +0 -0
  119. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/.gitignore +0 -0
  120. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/__init__.py +0 -0
  121. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/__main__.py +0 -0
  122. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/_application.py +0 -0
  123. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/_pages.py +0 -0
  124. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08.csv +0 -0
  125. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08.db +0 -0
  126. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.jpg +0 -0
  127. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.log +0 -0
  128. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.pdt +0 -0
  129. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_1.jpg +0 -0
  130. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_1.pdt +0 -0
  131. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_10.jpg +0 -0
  132. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_10.pdt +0 -0
  133. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_11.jpg +0 -0
  134. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_11.pdt +0 -0
  135. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_12.jpg +0 -0
  136. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_12.pdt +0 -0
  137. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_13.jpg +0 -0
  138. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_13.pdt +0 -0
  139. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_14.jpg +0 -0
  140. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_14.pdt +0 -0
  141. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_15.jpg +0 -0
  142. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_15.pdt +0 -0
  143. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_16.jpg +0 -0
  144. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_16.pdt +0 -0
  145. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_17.jpg +0 -0
  146. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_17.pdt +0 -0
  147. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_18.jpg +0 -0
  148. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_18.pdt +0 -0
  149. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_19.jpg +0 -0
  150. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_19.pdt +0 -0
  151. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_2.jpg +0 -0
  152. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_2.pdt +0 -0
  153. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_20.jpg +0 -0
  154. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_20.pdt +0 -0
  155. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_3.jpg +0 -0
  156. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_3.pdt +0 -0
  157. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.bgr +0 -0
  158. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.bnd +0 -0
  159. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.btr +0 -0
  160. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.jpg +0 -0
  161. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.mtl +0 -0
  162. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.pdt +0 -0
  163. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.prm +0 -0
  164. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_5.jpg +0 -0
  165. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_5.pdt +0 -0
  166. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_6.jpg +0 -0
  167. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_6.pdt +0 -0
  168. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_7.jpg +0 -0
  169. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_7.pdt +0 -0
  170. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_8.jpg +0 -0
  171. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_8.pdt +0 -0
  172. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_9.jpg +0 -0
  173. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_9.pdt +0 -0
  174. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.femprj +0 -0
  175. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/plotter/__init__.py +0 -0
  176. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/plotter/contour_creator.py +0 -0
  177. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/plotter/main_figure_creator.py +0 -0
  178. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/plotter/parallel_plot_creator.py +0 -0
  179. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/visualization/plotter/pm_graph_creator.py +0 -0
  180. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/wat_ex14_parametric_jp.femprj +0 -0
  181. {pyfemtet-1.2.2 → pyfemtet-1.3.0}/pyfemtet/opt/worker_status.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyfemtet
3
- Version: 1.2.2
3
+ Version: 1.3.0
4
4
  Summary: Design parameter optimization using Femtet.
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -25,7 +25,7 @@ Requires-Dist: fire (>=0.7)
25
25
  Requires-Dist: frozendict (>=2.4.6)
26
26
  Requires-Dist: numpy (>=2.0.0,<3)
27
27
  Requires-Dist: openpyxl (>=3.1.2,<4)
28
- Requires-Dist: optuna (>=3.4.0,<5.0.0)
28
+ Requires-Dist: optuna (>=4.5.0,<4.6.0)
29
29
  Requires-Dist: optuna-integration (>=3.6.0,<5.0.0)
30
30
  Requires-Dist: pandas (>=2.2.3,<3)
31
31
  Requires-Dist: plotly (>=5.22.0,<6)
@@ -23,6 +23,7 @@ remove_all_output(get_dask_logger())
23
23
  warnings.filterwarnings('ignore', category=RuntimeWarning, message="Couldn't detect a suitable IP address")
24
24
 
25
25
  cfg.set({'distributed.scheduler.worker-ttl': None})
26
+ cfg.set({"distributed.scheduler.locks.lease-timeout": "inf"})
26
27
 
27
28
  logger = get_module_logger('opt.dask', False)
28
29
 
@@ -62,9 +63,7 @@ def Lock(name, client=None):
62
63
 
63
64
  if client is not None:
64
65
  # import inspect
65
- # logger.debug(f'{name}, {[stack.function for stack in inspect.stack()[1:]]}')
66
- with cfg.set({"distributed.scheduler.locks.lease-timeout": "inf"}):
67
- _lock = _DaskLock(name)
66
+ _lock = _DaskLock(name)
68
67
 
69
68
  else:
70
69
  if name in _lock_pool:
@@ -9,8 +9,7 @@ import math
9
9
  import json
10
10
  import datetime
11
11
  import dataclasses
12
- from time import sleep
13
- from contextlib import nullcontext
12
+ from time import sleep, time
14
13
 
15
14
  import numpy as np
16
15
  import pandas as pd
@@ -51,6 +50,16 @@ MAIN_FILTER: dict = {
51
50
 
52
51
 
53
52
  logger = get_module_logger('opt.history', False)
53
+ logger_dask = get_module_logger('opt.dask', False)
54
+
55
+
56
+ def _assert_locked_with_timeout(lock, assertion_message=None, timeout=10.):
57
+ start = time()
58
+ while not lock.locked():
59
+ sleep(0.5)
60
+ if time() - start > timeout:
61
+ assert False, assertion_message or "Lock is not acquired."
62
+ logger_dask.debug("Lock is not acquired. Retry to check locked.")
54
63
 
55
64
 
56
65
  class MetaColumnNames(StrEnum):
@@ -153,13 +162,6 @@ class DataFrameWrapper:
153
162
  def lock(self):
154
163
  return Lock(self._lock_name)
155
164
 
156
- @property
157
- def lock_if_not_locked(self):
158
- if self.lock.locked():
159
- return nullcontext()
160
- else:
161
- return self.lock
162
-
163
165
  def get_df(self, equality_filters: dict = None) -> pd.DataFrame:
164
166
  """
165
167
 
@@ -235,7 +237,7 @@ class DataFrameWrapper:
235
237
  # partial_df を get_df した時点のものから
236
238
  # 変わっていたらエラーになる
237
239
  if equality_filters is not None:
238
- assert self.lock.locked(), 'set_df() with equality_filters must be called with locking.'
240
+ _assert_locked_with_timeout(self.lock, 'set_df() with equality_filters must be called with locking.')
239
241
  partial_df = df
240
242
  df = self.get_df()
241
243
  apply_partial_df(df, partial_df, equality_filters)
@@ -796,7 +798,7 @@ class EntireDependentValuesCalculator:
796
798
  self.entire_df: pd.DataFrame = entire_df
797
799
  self.partial_df: pd.DataFrame = get_partial_df(entire_df, equality_filters)
798
800
 
799
- assert self.records.df_wrapper.lock.locked()
801
+ _assert_locked_with_timeout(self.records.df_wrapper.lock)
800
802
 
801
803
  # get column names
802
804
  obj_names = self.records.column_manager.get_obj_names()
@@ -826,7 +828,7 @@ class EntireDependentValuesCalculator:
826
828
 
827
829
  def update_optimality(self):
828
830
 
829
- assert self.records.df_wrapper.lock.locked()
831
+ _assert_locked_with_timeout(self.records.df_wrapper.lock)
830
832
 
831
833
  # calc optimality
832
834
  optimality = calc_optimality(
@@ -839,13 +841,13 @@ class EntireDependentValuesCalculator:
839
841
 
840
842
  def update_hypervolume(self):
841
843
 
842
- assert self.records.df_wrapper.lock.locked()
844
+ _assert_locked_with_timeout(self.records.df_wrapper.lock)
843
845
 
844
846
  # calc hypervolume
845
847
  hv_values = calc_hypervolume(
846
848
  self.partial_y_internal,
847
849
  self.partial_feasibility,
848
- ref_point='nadir-up-to-the-point',
850
+ ref_point='optuna-nadir',
849
851
  )
850
852
 
851
853
  # update
@@ -853,7 +855,7 @@ class EntireDependentValuesCalculator:
853
855
 
854
856
  def update_trial_number(self):
855
857
 
856
- assert self.records.df_wrapper.lock.locked()
858
+ _assert_locked_with_timeout(self.records.df_wrapper.lock)
857
859
 
858
860
  # calc trial
859
861
  trial_number = 1 + np.arange(len(self.partial_df)).astype(int)
@@ -1139,45 +1141,45 @@ class Records:
1139
1141
 
1140
1142
  def update_entire_dependent_values(self, processing_df: pd.DataFrame):
1141
1143
 
1142
- with self.df_wrapper.lock_if_not_locked:
1144
+ _assert_locked_with_timeout(self.df_wrapper.lock)
1143
1145
 
1144
- # check trial_id is filled
1145
- trial_processed = False
1146
- if processing_df['trial_id'].notna().all():
1147
- id_to_n: dict = {tid: i + 1 for i, tid
1148
- in enumerate(processing_df['trial_id'].unique())}
1149
- processing_df['trial'] = processing_df['trial_id'].map(id_to_n)
1150
- trial_processed = True
1146
+ # check trial_id is filled
1147
+ trial_processed = False
1148
+ if processing_df['trial_id'].notna().all():
1149
+ id_to_n: dict = {tid: i + 1 for i, tid
1150
+ in enumerate(processing_df['trial_id'].unique())}
1151
+ processing_df['trial'] = processing_df['trial_id'].map(id_to_n)
1152
+ trial_processed = True
1151
1153
 
1152
- # update main fidelity
1153
- equality_filters = MAIN_FILTER
1154
+ # update main fidelity
1155
+ equality_filters = MAIN_FILTER
1156
+ mgr = EntireDependentValuesCalculator(
1157
+ self,
1158
+ equality_filters,
1159
+ processing_df,
1160
+ )
1161
+ mgr.update_optimality()
1162
+ mgr.update_hypervolume()
1163
+ if not trial_processed:
1164
+ mgr.update_trial_number() # per_fidelity
1165
+ pdf = mgr.partial_df
1166
+ apply_partial_df(df=processing_df, partial_df=pdf, equality_filters=equality_filters)
1167
+
1168
+ # update sub fidelity
1169
+ sub_fidelity_names: list = np.unique(processing_df['sub_fidelity_name']).tolist()
1170
+ if MAIN_FIDELITY_NAME in sub_fidelity_names:
1171
+ sub_fidelity_names.remove(MAIN_FIDELITY_NAME)
1172
+ for sub_fidelity_name in sub_fidelity_names:
1173
+ equality_filters = {'sub_fidelity_name': sub_fidelity_name}
1154
1174
  mgr = EntireDependentValuesCalculator(
1155
1175
  self,
1156
1176
  equality_filters,
1157
- processing_df,
1177
+ processing_df
1158
1178
  )
1159
- mgr.update_optimality()
1160
- mgr.update_hypervolume()
1161
1179
  if not trial_processed:
1162
1180
  mgr.update_trial_number() # per_fidelity
1163
- pdf = mgr.partial_df
1164
- apply_partial_df(df=processing_df, partial_df=pdf, equality_filters=equality_filters)
1165
-
1166
- # update sub fidelity
1167
- sub_fidelity_names: list = np.unique(processing_df['sub_fidelity_name']).tolist()
1168
- if MAIN_FIDELITY_NAME in sub_fidelity_names:
1169
- sub_fidelity_names.remove(MAIN_FIDELITY_NAME)
1170
- for sub_fidelity_name in sub_fidelity_names:
1171
- equality_filters = {'sub_fidelity_name': sub_fidelity_name}
1172
- mgr = EntireDependentValuesCalculator(
1173
- self,
1174
- equality_filters,
1175
- processing_df
1176
- )
1177
- if not trial_processed:
1178
- mgr.update_trial_number() # per_fidelity
1179
- pdf = mgr.partial_df
1180
- apply_partial_df(df=processing_df, partial_df=pdf, equality_filters=equality_filters)
1181
+ pdf = mgr.partial_df
1182
+ apply_partial_df(df=processing_df, partial_df=pdf, equality_filters=equality_filters)
1181
1183
 
1182
1184
 
1183
1185
  class History:
@@ -12,7 +12,13 @@ else:
12
12
  from optuna._hypervolume import wfg
13
13
  compute_hypervolume = wfg.compute_hypervolume
14
14
 
15
- from ._optimality import *
15
+ import datetime
16
+ from optuna.visualization._hypervolume_history import _get_hypervolume_history_info, _get_hypervolume_history_plot
17
+
18
+ try:
19
+ from ._optimality import *
20
+ except ImportError:
21
+ from _optimality import *
16
22
 
17
23
 
18
24
  __all__ = [
@@ -23,7 +29,7 @@ __all__ = [
23
29
  def calc_hypervolume(
24
30
  y_internal: np.ndarray,
25
31
  feasibility: np.ndarray,
26
- ref_point: str | np.ndarray = 'nadir-up-to-the-point'
32
+ ref_point: str | np.ndarray = 'optuna-nadir'
27
33
  ) -> np.ndarray:
28
34
  """
29
35
 
@@ -57,6 +63,8 @@ def calc_hypervolume(
57
63
  elif ref_point.lower() == 'worst':
58
64
  hv = calc_hypervolume_worst(y_internal, feasibility)
59
65
  hv_values = hv * np.ones(len(y_internal)).astype(float)
66
+ elif ref_point.lower() == 'optuna-nadir':
67
+ hv_values = calc_hypervolume_by_optuna(y_internal, feasibility)
60
68
  else:
61
69
  raise NotImplementedError
62
70
 
@@ -80,12 +88,13 @@ def get_pareto_set(
80
88
  return non_dominated_solutions
81
89
 
82
90
 
83
- def calc_hypervolume_nadir(y, feasibility) -> float:
91
+ def calc_hypervolume_nadir(y, feasibility, ref_point=None) -> float:
84
92
  """Use Nadir point as the ref_point.
85
93
 
86
94
  Args:
87
95
  y: (n, m) shaped 2d-array. float.
88
96
  feasibility (np.ndarray): n shaped 1d-array. bool.
97
+ ref_point: (m) shaped array. float.
89
98
 
90
99
  Returns: float.
91
100
 
@@ -95,8 +104,10 @@ def calc_hypervolume_nadir(y, feasibility) -> float:
95
104
  if len(pareto_set) == 0:
96
105
  return 0.
97
106
 
98
- nadir_point = pareto_set.max(axis=0)
99
- ref_point = nadir_point + 1e-8
107
+ if ref_point is None:
108
+ nadir_point = pareto_set.max(axis=0)
109
+ ref_point = nadir_point + 1e-8
110
+
100
111
  hv = compute_hypervolume(pareto_set, ref_point)
101
112
 
102
113
  return hv
@@ -116,10 +127,26 @@ def calc_hypervolume_nadir_up_to_the_point(y, feasibility) -> np.ndarray:
116
127
  out = []
117
128
 
118
129
  assert len(y) == len(feasibility)
130
+
131
+ nadir_points = []
119
132
  for n in range(len(y)):
120
133
  y_up = y[:n]
121
134
  f_up = feasibility[:n]
122
- out.append(calc_hypervolume_nadir(y_up, f_up))
135
+ pareto_set = get_pareto_set(y_up, f_up)
136
+ if len(pareto_set) == 0:
137
+ continue
138
+ nadir_points.append(pareto_set.max(axis=0))
139
+
140
+ if len(nadir_points) == 0:
141
+ return np.zeros(len(y))
142
+
143
+ nadir_point = np.array(nadir_points).max(axis=0)
144
+ ref_point = nadir_point + 1e-8
145
+
146
+ for n in range(len(y)):
147
+ y_up = y[:n]
148
+ f_up = feasibility[:n]
149
+ out.append(calc_hypervolume_nadir(y_up, f_up, ref_point=ref_point))
123
150
 
124
151
  return np.array(out).astype(float)
125
152
 
@@ -167,3 +194,34 @@ def calc_hypervolume_fixed_point(y, feasibility, ref_point) -> float:
167
194
  hv = compute_hypervolume(feasible_solutions, ref_point)
168
195
 
169
196
  return hv
197
+
198
+
199
+ def calc_hypervolume_by_optuna(y, f):
200
+ study = optuna.create_study(
201
+ directions=['minimize'] * y.shape[-1]
202
+ )
203
+ number = 0
204
+ for y_ in y:
205
+ system_attrs = {}
206
+ if np.isnan(y_).any():
207
+ system_attrs.update({"constraints": [1.]})
208
+ y_ = y[0]
209
+ trial = optuna.trial.FrozenTrial(
210
+ number=number,
211
+ value=None,
212
+ values=y_,
213
+ state=optuna.trial.TrialState.COMPLETE,
214
+ datetime_start=datetime.datetime.now(),
215
+ datetime_complete=datetime.datetime.now(),
216
+ params={},
217
+ distributions={},
218
+ user_attrs={},
219
+ system_attrs=system_attrs,
220
+ intermediate_values={},
221
+ trial_id=number,
222
+ )
223
+ study.add_trial(trial)
224
+ number += 1
225
+ ref_point = get_pareto_set(y, f).max(axis=0) + 1e-8
226
+ info = _get_hypervolume_history_info(study, reference_point=ref_point)
227
+ return np.array(info.values)
@@ -354,7 +354,7 @@ class FemtetInterface(COMInterface):
354
354
 
355
355
  """
356
356
  # noinspection PyGlobalUndefined
357
- global constants
357
+ global constants, Dispatch
358
358
 
359
359
  if connect_method == "new":
360
360
  self._connect_new_femtet()
@@ -379,8 +379,9 @@ class FemtetInterface(COMInterface):
379
379
 
380
380
  import win32com.client
381
381
  importlib.reload(win32com.client)
382
- from win32com.client import Dispatch, constants
382
+ Dispatch = win32com.client.Dispatch
383
383
  Dispatch('FemtetMacro.Femtet')
384
+ constants = win32com.client.constants
384
385
 
385
386
  if not hasattr(constants, "STATIC_C"):
386
387
  message = _(
@@ -22,7 +22,7 @@ dependencies = [
22
22
  "pandas>=2.2.3,<3",
23
23
  "openpyxl>=3.1.2,<4",
24
24
  "scipy>=1.11.4,<2",
25
- "optuna>=3.4.0, <5.0.0",
25
+ "optuna~=4.5.0",
26
26
  "optuna-integration>=3.6.0, <5.0.0",
27
27
  "botorch>=0.12.0, <0.15.0",
28
28
  "torch", # botorch specifies torch's version
@@ -33,7 +33,7 @@ dependencies = [
33
33
 
34
34
  #[project.optional-dependencies]
35
35
  #brep = ["brepmatching>=0.1.8,<0.2"]
36
- version = "1.2.2"
36
+ version = "1.3.0"
37
37
 
38
38
  [project.urls]
39
39
  Repository = "https://github.com/pyfemtet/pyfemtet"
File without changes
File without changes
File without changes
File without changes