fullwave25 1.2.6.dev9__tar.gz → 1.2.6.dev10__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.
Files changed (75) hide show
  1. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/.bumpversion.toml +1 -1
  2. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/PKG-INFO +1 -1
  3. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/__init__.py +1 -1
  4. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/utils/pulse.py +14 -3
  5. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/pyproject.toml +1 -1
  6. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/uv.lock +1 -1
  7. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/.gitignore +0 -0
  8. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/.pre-commit-config.yaml +0 -0
  9. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/.python-version +0 -0
  10. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/20260120_0844.log +0 -0
  11. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/CITATION.cff +0 -0
  12. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/CLAUDE.md +0 -0
  13. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/CONTRIBUTING.md +0 -0
  14. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/LICENSE +0 -0
  15. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/Makefile +0 -0
  16. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/README.md +0 -0
  17. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/beamformer.m +0 -0
  18. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/debug_solver_bin/fullwave2_2d_2_relax_multi_gpu_cuda124 +0 -0
  19. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/debug_solver_bin/fullwave2_2d_exponential_attenuation_multi_gpu +0 -0
  20. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/debug_solver_bin/fullwave2_2d_exponential_attenuation_multi_gpu_cuda124 +0 -0
  21. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/debug_solver_bin/fullwave2_2d_exponential_attenuation_multi_gpu_cuda124_ +0 -0
  22. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/debug_solver_bin/fullwave2_3d_exponential_attenuation_multi_gpu_cuda124 +0 -0
  23. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/debug_solver_bin/fullwave2_3d_exponential_attenuation_multi_gpu_cuda124_ +0 -0
  24. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/experiments/__init__.py +0 -0
  25. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/experiments/exp_scatterer_diameter.py +0 -0
  26. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/beamformer/__init__.py +0 -0
  27. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/beamformer/beamformer.py +0 -0
  28. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/constants/__init__.py +0 -0
  29. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/constants/material_properties.py +0 -0
  30. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/grid.py +0 -0
  31. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/medium.py +0 -0
  32. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/medium_builder/__init__.py +0 -0
  33. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/medium_builder/domain.py +0 -0
  34. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/medium_builder/medium_builder.py +0 -0
  35. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/medium_builder/presets/__init__.py +0 -0
  36. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/medium_builder/presets/data/.keep +0 -0
  37. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/medium_builder/presets/data/abdominal_wall/i2365f_etfw1.mat +0 -0
  38. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/medium_builder/presets/domain_abdominal_wall.py +0 -0
  39. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/medium_builder/presets/domain_background.py +0 -0
  40. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/medium_builder/presets/domain_scatterer.py +0 -0
  41. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/medium_builder/presets/domain_simple.py +0 -0
  42. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/medium_builder/presets/domain_water_gel.py +0 -0
  43. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/sensor.py +0 -0
  44. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/solver/__init__.py +0 -0
  45. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/solver/binary_manager.py +0 -0
  46. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/solver/bins/_gpu/2d/num_relax=2/fullwave2_2d_2_relax_multi_gpu_cuda118 +0 -0
  47. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/solver/bins/_gpu/2d/num_relax=2/fullwave2_2d_2_relax_multi_gpu_cuda124 +0 -0
  48. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/solver/bins/_gpu/2d/num_relax=2/fullwave2_2d_2_relax_multi_gpu_cuda129 +0 -0
  49. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/solver/bins/_gpu/2d/num_relax=2/fullwave2_2d_2_relax_multi_gpu_cuda130 +0 -0
  50. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/solver/bins/_gpu/3d/num_relax=2/fullwave2_3d_2_relax_multi_gpu_cuda118 +0 -0
  51. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/solver/bins/_gpu/3d/num_relax=2/fullwave2_3d_2_relax_multi_gpu_cuda124 +0 -0
  52. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/solver/bins/_gpu/3d/num_relax=2/fullwave2_3d_2_relax_multi_gpu_cuda129 +0 -0
  53. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/solver/bins/_gpu/3d/num_relax=2/fullwave2_3d_2_relax_multi_gpu_cuda130 +0 -0
  54. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/solver/bins/database/relaxation_params_database_num_relax=2_20260113_0957.mat +0 -0
  55. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/solver/cuda_utils.py +0 -0
  56. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/solver/input_file_writer.py +0 -0
  57. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/solver/launcher.py +0 -0
  58. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/solver/pml_builder.py +0 -0
  59. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/solver/solver.py +0 -0
  60. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/solver/utils.py +0 -0
  61. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/source.py +0 -0
  62. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/transducer.py +0 -0
  63. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/utils/__init__.py +0 -0
  64. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/utils/check_functions.py +0 -0
  65. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/utils/coordinates.py +0 -0
  66. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/utils/memory_tempfile.py +0 -0
  67. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/utils/numerical.py +0 -0
  68. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/utils/plot_utils.py +0 -0
  69. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/utils/relaxation_parameters.py +0 -0
  70. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/utils/scatterer.py +0 -0
  71. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/utils/signal_filter.py +0 -0
  72. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/fullwave/utils/signal_process.py +0 -0
  73. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/ruff.log +0 -0
  74. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/ruff.toml +0 -0
  75. {fullwave25-1.2.6.dev9 → fullwave25-1.2.6.dev10}/signal_filter_example.png +0 -0
@@ -1,5 +1,5 @@
1
1
  [tool.bumpversion]
2
- current_version = "1.2.6-dev9"
2
+ current_version = "1.2.6-dev10"
3
3
  parse = """(?x)
4
4
  (?P<major>0|[1-9]\\d*)\\.
5
5
  (?P<minor>0|[1-9]\\d*)\\.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fullwave25
3
- Version: 1.2.6.dev9
3
+ Version: 1.2.6.dev10
4
4
  Summary: Fullwave 2.5: Ultrasound wave propagation simulation with heterogeneous power law attenuation modelling capabilities
5
5
  Author: Masashi Sode, Gianmarco Pinton
6
6
  Maintainer: Masashi Sode
@@ -60,7 +60,7 @@ try:
60
60
  __version__ = version("fullwave")
61
61
  except PackageNotFoundError:
62
62
  # Update via bump-my-version, not manually
63
- __version__ = "1.2.6-dev9"
63
+ __version__ = "1.2.6-dev10"
64
64
 
65
65
  VERSION = __version__ # for convenience
66
66
  logger.info("Fullwave version: %s", __version__)
@@ -61,6 +61,7 @@ def gaussian_modulated_sinusoidal_signal(
61
61
  dt = duration / nt
62
62
  t_offset = ncycles / f0 + delay_sec
63
63
 
64
+ phase_correction = 0.0
64
65
  if i_layer is not None:
65
66
  if dt_for_layer_delay is None:
66
67
  error_msg = "dt_for_layer_delay must be provided if i_layer is provided"
@@ -68,7 +69,17 @@ def gaussian_modulated_sinusoidal_signal(
68
69
  if cfl_for_layer_delay is None:
69
70
  error_msg = "cfl_for_layer_delay must be provided if i_layer is provided"
70
71
  raise ValueError(error_msg)
71
- t_offset += (dt_for_layer_delay / cfl_for_layer_delay) * i_layer
72
+ layer_delay_sec = (dt_for_layer_delay / cfl_for_layer_delay) * i_layer
73
+ t_offset += layer_delay_sec
74
+ # Correct carrier phase for fractional-sample delays.
75
+ # A continuous time shift of a fractional number of samples changes
76
+ # the carrier phase at each discrete sample point, causing sign
77
+ # inversion and wrong peak positions. Remove the fractional phase
78
+ # offset so the carrier stays on the same discrete phase grid as
79
+ # the base (i_layer=0) signal.
80
+ delay_samples = layer_delay_sec / dt
81
+ fractional_samples = delay_samples - round(delay_samples)
82
+ phase_correction = 2.0 * np.pi * f0 * fractional_samples * dt
72
83
 
73
84
  t = np.arange(nt, dtype=dtype) * dt - t_offset
74
85
 
@@ -87,5 +98,5 @@ def gaussian_modulated_sinusoidal_signal(
87
98
  else:
88
99
  env = np.exp(-(a_sq**drop_off))
89
100
 
90
- # Compute final signal
91
- return env * np.sin(w_t) * p0
101
+ # Compute final signal with phase-corrected carrier
102
+ return env * np.sin(w_t + phase_correction) * p0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fullwave25"
3
- version = "1.2.6-dev9" # Update via bump-my-version, not manually
3
+ version = "1.2.6-dev10" # Update via bump-my-version, not manually
4
4
  description = "Fullwave 2.5: Ultrasound wave propagation simulation with heterogeneous power law attenuation modelling capabilities"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -735,7 +735,7 @@ wheels = [
735
735
 
736
736
  [[package]]
737
737
  name = "fullwave25"
738
- version = "1.2.6.dev9"
738
+ version = "1.2.6.dev10"
739
739
  source = { editable = "." }
740
740
  dependencies = [
741
741
  { name = "matplotlib" },