hbat 2.2.12__tar.gz → 2.2.12.dev30__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 (156) hide show
  1. hbat-2.2.12.dev30/.github/workflows/joss-paper.yml +43 -0
  2. {hbat-2.2.12 → hbat-2.2.12.dev30}/PKG-INFO +1 -1
  3. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/examples/index.rst +19 -17
  4. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/_version.py +2 -2
  5. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat.egg-info/SOURCES.txt +3 -0
  6. hbat-2.2.12.dev30/paper/paper.bib +95 -0
  7. hbat-2.2.12.dev30/paper/paper.md +88 -0
  8. {hbat-2.2.12 → hbat-2.2.12.dev30}/.github/workflows/cleanup-prereleases.yml +0 -0
  9. {hbat-2.2.12 → hbat-2.2.12.dev30}/.github/workflows/release.yml +0 -0
  10. {hbat-2.2.12 → hbat-2.2.12.dev30}/.github/workflows/test.yml +0 -0
  11. {hbat-2.2.12 → hbat-2.2.12.dev30}/CITATION.cff +0 -0
  12. {hbat-2.2.12 → hbat-2.2.12.dev30}/CODE_OF_CONDUCT.md +0 -0
  13. {hbat-2.2.12 → hbat-2.2.12.dev30}/CONTRIBUTING.md +0 -0
  14. {hbat-2.2.12 → hbat-2.2.12.dev30}/LICENSE +0 -0
  15. {hbat-2.2.12 → hbat-2.2.12.dev30}/MANIFEST.in +0 -0
  16. {hbat-2.2.12 → hbat-2.2.12.dev30}/Makefile +0 -0
  17. {hbat-2.2.12 → hbat-2.2.12.dev30}/README.md +0 -0
  18. {hbat-2.2.12 → hbat-2.2.12.dev30}/build_standalone.py +0 -0
  19. {hbat-2.2.12 → hbat-2.2.12.dev30}/build_standalone_linux.py +0 -0
  20. {hbat-2.2.12 → hbat-2.2.12.dev30}/build_standalone_windows.py +0 -0
  21. {hbat-2.2.12 → hbat-2.2.12.dev30}/conda/meta.yaml +0 -0
  22. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/Makefile +0 -0
  23. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/requirements.txt +0 -0
  24. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/_static/custom.css +0 -0
  25. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/_static/light-theme.css +0 -0
  26. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/ccd/ccd_analyzer.rst +0 -0
  27. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/ccd/constants_generator.rst +0 -0
  28. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/ccd/generate_ccd_constants.rst +0 -0
  29. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/ccd/index.rst +0 -0
  30. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/cli/index.rst +0 -0
  31. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/constants/app.rst +0 -0
  32. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/constants/atomic_data.rst +0 -0
  33. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/constants/index.rst +0 -0
  34. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/constants/misc.rst +0 -0
  35. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/constants/parameters.rst +0 -0
  36. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/constants/pdb_constants.rst +0 -0
  37. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/core/index.rst +0 -0
  38. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/core/interactions.rst +0 -0
  39. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/core/np_analyzer.rst +0 -0
  40. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/core/np_vector.rst +0 -0
  41. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/core/pdb_fixer.rst +0 -0
  42. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/core/pdb_parser.rst +0 -0
  43. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/core/structure.rst +0 -0
  44. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/gui/index.rst +0 -0
  45. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/index.rst +0 -0
  46. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/utilities/atom_utils.rst +0 -0
  47. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/utilities/graphviz_utils.rst +0 -0
  48. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/api/utilities/index.rst +0 -0
  49. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/cli.rst +0 -0
  50. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/conf.py +0 -0
  51. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/development.rst +0 -0
  52. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/index.rst +0 -0
  53. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/installation.rst +0 -0
  54. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/license.rst +0 -0
  55. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/logic.rst +0 -0
  56. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/parameters.rst +0 -0
  57. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/pdbfixing.rst +0 -0
  58. {hbat-2.2.12 → hbat-2.2.12.dev30}/docs/source/quickstart.rst +0 -0
  59. {hbat-2.2.12 → hbat-2.2.12.dev30}/example_pdb_files/1bhl.pdb +0 -0
  60. {hbat-2.2.12 → hbat-2.2.12.dev30}/example_pdb_files/1gai.pdb +0 -0
  61. {hbat-2.2.12 → hbat-2.2.12.dev30}/example_pdb_files/1ubi.pdb +0 -0
  62. {hbat-2.2.12 → hbat-2.2.12.dev30}/example_pdb_files/2izf.pdb +0 -0
  63. {hbat-2.2.12 → hbat-2.2.12.dev30}/example_pdb_files/4jsv.pdb +0 -0
  64. {hbat-2.2.12 → hbat-2.2.12.dev30}/example_pdb_files/4laz.pdb +0 -0
  65. {hbat-2.2.12 → hbat-2.2.12.dev30}/example_pdb_files/4ub7.pdb +0 -0
  66. {hbat-2.2.12 → hbat-2.2.12.dev30}/example_pdb_files/4x21.pdb +0 -0
  67. {hbat-2.2.12 → hbat-2.2.12.dev30}/example_pdb_files/6rsa.pdb +0 -0
  68. {hbat-2.2.12 → hbat-2.2.12.dev30}/example_presets/drug_design_strict.hbat +0 -0
  69. {hbat-2.2.12 → hbat-2.2.12.dev30}/example_presets/high_resolution.hbat +0 -0
  70. {hbat-2.2.12 → hbat-2.2.12.dev30}/example_presets/low_resolution.hbat +0 -0
  71. {hbat-2.2.12 → hbat-2.2.12.dev30}/example_presets/membrane_proteins.hbat +0 -0
  72. {hbat-2.2.12 → hbat-2.2.12.dev30}/example_presets/nmr_structures.hbat +0 -0
  73. {hbat-2.2.12 → hbat-2.2.12.dev30}/example_presets/standard_resolution.hbat +0 -0
  74. {hbat-2.2.12 → hbat-2.2.12.dev30}/example_presets/strong_interactions_only.hbat +0 -0
  75. {hbat-2.2.12 → hbat-2.2.12.dev30}/example_presets/weak_interactions_permissive.hbat +0 -0
  76. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/__init__.py +0 -0
  77. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/ccd/__init__.py +0 -0
  78. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/ccd/ccd_analyzer.py +0 -0
  79. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/ccd/constants_generator.py +0 -0
  80. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/ccd/generate_ccd_constants.py +0 -0
  81. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/cli/__init__.py +0 -0
  82. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/cli/main.py +0 -0
  83. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/constants/__init__.py +0 -0
  84. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/constants/app.py +0 -0
  85. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/constants/atomic_data.py +0 -0
  86. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/constants/misc.py +0 -0
  87. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/constants/parameters.py +0 -0
  88. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/constants/pdb_constants.py +0 -0
  89. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/constants/residue_bonds.py +0 -0
  90. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/core/__init__.py +0 -0
  91. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/core/analysis.py +0 -0
  92. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/core/analyzer.py +0 -0
  93. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/core/app_config.py +0 -0
  94. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/core/atom_classifier.py +0 -0
  95. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/core/interactions.py +0 -0
  96. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/core/np_analyzer.py +0 -0
  97. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/core/np_vector.py +0 -0
  98. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/core/pdb_fixer.py +0 -0
  99. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/core/pdb_parser.py +0 -0
  100. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/core/structure.py +0 -0
  101. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/gui/__init__.py +0 -0
  102. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/gui/chain_visualization.py +0 -0
  103. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/gui/export_manager.py +0 -0
  104. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/gui/graphviz_preferences_dialog.py +0 -0
  105. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/gui/graphviz_renderer.py +0 -0
  106. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/gui/main_window.py +0 -0
  107. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/gui/matplotlib_renderer.py +0 -0
  108. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/gui/parameter_panel.py +0 -0
  109. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/gui/results_panel.py +0 -0
  110. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/gui/visualization_renderer.py +0 -0
  111. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/utilities/__init__.py +0 -0
  112. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/utilities/atom_utils.py +0 -0
  113. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat/utilities/graphviz_utils.py +0 -0
  114. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat.icns +0 -0
  115. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat.ico +0 -0
  116. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat.png +0 -0
  117. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat.svg +0 -0
  118. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat_cli.py +0 -0
  119. {hbat-2.2.12 → hbat-2.2.12.dev30}/hbat_gui.py +0 -0
  120. {hbat-2.2.12 → hbat-2.2.12.dev30}/pyproject.toml +0 -0
  121. {hbat-2.2.12 → hbat-2.2.12.dev30}/pytest.ini +0 -0
  122. {hbat-2.2.12 → hbat-2.2.12.dev30}/requirements-dev.txt +0 -0
  123. {hbat-2.2.12 → hbat-2.2.12.dev30}/requirements.txt +0 -0
  124. {hbat-2.2.12 → hbat-2.2.12.dev30}/setup.cfg +0 -0
  125. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/README.md +0 -0
  126. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/__init__.py +0 -0
  127. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/cli/__init__.py +0 -0
  128. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/cli/test_cli_main.py +0 -0
  129. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/cli/test_cli_output_formats.py +0 -0
  130. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/conftest.py +0 -0
  131. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/e2e/__init__.py +0 -0
  132. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/e2e/test_cli_workflows.py +0 -0
  133. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/e2e/test_complete_workflows.py +0 -0
  134. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/e2e/test_graphviz_workflows.py +0 -0
  135. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/e2e/test_gui_workflows.py +0 -0
  136. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/gui/__init__.py +0 -0
  137. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/gui/test_gui_components.py +0 -0
  138. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/integration/__init__.py +0 -0
  139. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/integration/test_analyzer_components.py +0 -0
  140. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/integration/test_cli_integration.py +0 -0
  141. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/integration/test_graphviz_renderer.py +0 -0
  142. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/integration/test_molecular_validation.py +0 -0
  143. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/integration/test_pdb_parsing.py +0 -0
  144. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/performance/__init__.py +0 -0
  145. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/performance/test_ccd_performance.py +0 -0
  146. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/performance/test_performance_workflows.py +0 -0
  147. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/run_tests.py +0 -0
  148. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/unit/__init__.py +0 -0
  149. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/unit/test_cli_parsing.py +0 -0
  150. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/unit/test_graphviz_utils.py +0 -0
  151. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/unit/test_gui_components.py +0 -0
  152. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/unit/test_interactions.py +0 -0
  153. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/unit/test_parameters.py +0 -0
  154. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/unit/test_scrollable_canvas.py +0 -0
  155. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/unit/test_structures.py +0 -0
  156. {hbat-2.2.12 → hbat-2.2.12.dev30}/tests/unit/test_vector_math.py +0 -0
@@ -0,0 +1,43 @@
1
+ name: Build JOSS Paper
2
+
3
+ on:
4
+ push:
5
+ paths:
6
+ - 'paper/**'
7
+ pull_request:
8
+ paths:
9
+ - 'paper/**'
10
+ workflow_dispatch:
11
+
12
+ jobs:
13
+ build-paper:
14
+ runs-on: ubuntu-latest
15
+ name: Build JOSS Paper PDF
16
+
17
+ steps:
18
+ - name: Checkout repository
19
+ uses: actions/checkout@v4
20
+
21
+ - name: Build paper PDF
22
+ uses: docker://openjournals/inara:latest
23
+ with:
24
+ args: paper/paper.md
25
+
26
+ - name: Upload paper artifacts
27
+ uses: actions/upload-artifact@v4
28
+ with:
29
+ name: joss-paper
30
+ path: |
31
+ paper/paper.pdf
32
+ paper/paper.crossref
33
+ retention-days: 30
34
+
35
+ - name: Check if paper PDF was generated
36
+ run: |
37
+ if [ -f paper/paper.pdf ]; then
38
+ echo "✅ Paper PDF generated successfully"
39
+ ls -la paper/paper.pdf
40
+ else
41
+ echo "❌ Paper PDF generation failed"
42
+ exit 1
43
+ fi
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hbat
3
- Version: 2.2.12
3
+ Version: 2.2.12.dev30
4
4
  Summary: Hydrogen Bond Analysis Tool for PDB structures
5
5
  Author-email: Abhishek Tiwari <hbat@abhishek-tiwari.com>
6
6
  License-Expression: MIT
@@ -20,10 +20,10 @@ Simple Hydrogen Bond Analysis
20
20
 
21
21
  .. code-block:: python
22
22
 
23
- from hbat.core.analysis import MolecularInteractionAnalyzerractionAnalyzer
23
+ from hbat.core.analysis import MolecularInteractionAnalyzer
24
24
 
25
25
  # Initialize analyzer
26
- analyzer = MolecularInteractionAnalyzerractionAnalyzer()
26
+ analyzer = MolecularInteractionAnalyzer()
27
27
 
28
28
  # Analyze PDB file
29
29
  analyzer.analyze_file("1abc.pdb")
@@ -42,7 +42,8 @@ Advanced Parameter Customization
42
42
 
43
43
  .. code-block:: python
44
44
 
45
- from hbat.core.analysis import MolecularInteractionAnalyzerractionAnalyzer, AnalysisParameters
45
+ from hbat.core.analysis import MolecularInteractionAnalyzer
46
+ from hbat.constants.parameters import AnalysisParameters
46
47
 
47
48
  # Create custom parameters for drug design
48
49
  drug_params = AnalysisParameters(
@@ -52,7 +53,7 @@ Advanced Parameter Customization
52
53
  analysis_mode="global" # Include all interactions
53
54
  )
54
55
 
55
- analyzer = MolecularInteractionAnalyzerractionAnalyzer(parameters=drug_params)
56
+ analyzer = MolecularInteractionAnalyzer(parameters=drug_params)
56
57
  analyzer.analyze_file("drug_target_complex.pdb")
57
58
 
58
59
  # Focus on strong interactions only
@@ -67,7 +68,7 @@ Multi-Type Interaction Analysis
67
68
  .. code-block:: python
68
69
 
69
70
  # Analyze all interaction types
70
- analyzer = MolecularInteractionAnalyzerractionAnalyzer()
71
+ analyzer = MolecularInteractionAnalyzer()
71
72
  analyzer.analyze_file("membrane_protein.pdb")
72
73
 
73
74
  print("=== Interaction Summary ===")
@@ -94,14 +95,14 @@ Processing Multiple Structures
94
95
 
95
96
  import glob
96
97
  import csv
97
- from hbat.core.analysis import MolecularInteractionAnalyzerractionAnalyzer
98
+ from hbat.core.analysis import MolecularInteractionAnalyzer
98
99
 
99
100
  # Process all PDB files in directory
100
101
  pdb_files = glob.glob("structures/*.pdb")
101
102
  results = []
102
103
 
103
104
  for pdb_file in pdb_files:
104
- analyzer = MolecularInteractionAnalyzerractionAnalyzer()
105
+ analyzer = MolecularInteractionAnalyzer()
105
106
  if analyzer.analyze_file(pdb_file):
106
107
  stats = analyzer.get_statistics()
107
108
  results.append({
@@ -134,7 +135,7 @@ Comparative Analysis
134
135
  results = {}
135
136
 
136
137
  for name, pdb_file in structures.items():
137
- analyzer = MolecularInteractionAnalyzerractionAnalyzer()
138
+ analyzer = MolecularInteractionAnalyzer()
138
139
  analyzer.analyze_file(pdb_file)
139
140
 
140
141
  results[name] = {
@@ -161,9 +162,9 @@ Detailed CSV Export
161
162
  .. code-block:: python
162
163
 
163
164
  import csv
164
- from hbat.core.analysis import MolecularInteractionAnalyzerractionAnalyzer
165
+ from hbat.core.analysis import MolecularInteractionAnalyzer
165
166
 
166
- analyzer = MolecularInteractionAnalyzerractionAnalyzer()
167
+ analyzer = MolecularInteractionAnalyzer()
167
168
  analyzer.analyze_file("protein.pdb")
168
169
 
169
170
  # Export hydrogen bonds to CSV
@@ -193,9 +194,9 @@ JSON Export with Metadata
193
194
 
194
195
  import json
195
196
  from datetime import datetime
196
- from hbat.core.analysis import MolecularInteractionAnalyzerractionAnalyzer
197
+ from hbat.core.analysis import MolecularInteractionAnalyzer
197
198
 
198
- analyzer = MolecularInteractionAnalyzerractionAnalyzer()
199
+ analyzer = MolecularInteractionAnalyzer()
199
200
  analyzer.analyze_file("complex.pdb")
200
201
 
201
202
  # Create comprehensive results dictionary
@@ -244,7 +245,8 @@ Drug-Target Interaction Analysis
244
245
 
245
246
  .. code-block:: python
246
247
 
247
- from hbat.core.analysis import MolecularInteractionAnalyzerractionAnalyzer, AnalysisParameters
248
+ from hbat.core.analysis import MolecularInteractionAnalyzer
249
+ from hbat.constants.parameters import AnalysisParameters
248
250
 
249
251
  # Custom parameters for drug analysis
250
252
  drug_params = AnalysisParameters(
@@ -253,7 +255,7 @@ Drug-Target Interaction Analysis
253
255
  analysis_mode="global"
254
256
  )
255
257
 
256
- analyzer = MolecularInteractionAnalyzerractionAnalyzer(parameters=drug_params)
258
+ analyzer = MolecularInteractionAnalyzer(parameters=drug_params)
257
259
  analyzer.analyze_file("drug_target.pdb")
258
260
 
259
261
  # Filter interactions involving the drug (assuming it's a HET residue)
@@ -275,7 +277,7 @@ Membrane Protein Analysis
275
277
  .. code-block:: python
276
278
 
277
279
  # Analyze interactions in membrane proteins
278
- analyzer = MolecularInteractionAnalyzerractionAnalyzer()
280
+ analyzer = MolecularInteractionAnalyzer()
279
281
  analyzer.analyze_file("membrane_protein.pdb")
280
282
 
281
283
  # Categorize interactions by region (transmembrane vs extracellular)
@@ -307,9 +309,9 @@ Using with Pandas for Analysis
307
309
  .. code-block:: python
308
310
 
309
311
  import pandas as pd
310
- from hbat.core.analysis import MolecularInteractionAnalyzerractionAnalyzer
312
+ from hbat.core.analysis import MolecularInteractionAnalyzer
311
313
 
312
- analyzer = MolecularInteractionAnalyzerractionAnalyzer()
314
+ analyzer = MolecularInteractionAnalyzer()
313
315
  analyzer.analyze_file("protein.pdb")
314
316
 
315
317
  # Convert results to pandas DataFrame
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '2.2.12'
21
- __version_tuple__ = version_tuple = (2, 2, 12)
20
+ __version__ = version = '2.2.12.dev30'
21
+ __version_tuple__ = version_tuple = (2, 2, 12, 'dev30')
@@ -19,6 +19,7 @@ pytest.ini
19
19
  requirements-dev.txt
20
20
  requirements.txt
21
21
  .github/workflows/cleanup-prereleases.yml
22
+ .github/workflows/joss-paper.yml
22
23
  .github/workflows/release.yml
23
24
  .github/workflows/test.yml
24
25
  conda/meta.yaml
@@ -116,6 +117,8 @@ hbat/gui/visualization_renderer.py
116
117
  hbat/utilities/__init__.py
117
118
  hbat/utilities/atom_utils.py
118
119
  hbat/utilities/graphviz_utils.py
120
+ paper/paper.bib
121
+ paper/paper.md
119
122
  tests/README.md
120
123
  tests/__init__.py
121
124
  tests/conftest.py
@@ -0,0 +1,95 @@
1
+ @article{tiwari2007hbat,
2
+ title={HBAT: A Complete Package for Analysing Strong and Weak Hydrogen Bonds in Macromolecular Crystal Structures},
3
+ author={Tiwari, Abhishek and Panigrahi, Sunil Kumar},
4
+ journal={In Silico Biology},
5
+ volume={7},
6
+ number={6},
7
+ pages={651--661},
8
+ year={2007},
9
+ doi={10.3233/ISI-2007-00337},
10
+ publisher={IOS Press}
11
+ }
12
+
13
+ @article{berman2000protein,
14
+ title={The protein data bank},
15
+ author={Berman, Helen M and Westbrook, John and Feng, Zukang and Gilliland, Gary and Bhat, T N and Weissig, Helge and Shindyalov, Ilya N and Bourne, Philip E},
16
+ journal={Nucleic acids research},
17
+ volume={28},
18
+ number={1},
19
+ pages={235--242},
20
+ year={2000},
21
+ publisher={Oxford University Press}
22
+ }
23
+
24
+ @article{mcdonald1994satisfying,
25
+ title={Satisfying hydrogen bonding potential in proteins},
26
+ author={McDonald, Iain K and Thornton, Janet M},
27
+ journal={Journal of molecular biology},
28
+ volume={238},
29
+ number={5},
30
+ pages={777--793},
31
+ year={1994},
32
+ publisher={Elsevier}
33
+ }
34
+
35
+ @article{lindauer1996hbexplore,
36
+ title={HBexplore--a new tool for identifying and analysing hydrogen bonding patterns in biological macromolecules},
37
+ author={Lindauer, Klaus and Bendic, Cvetko and S{\"u}hnel, J{\"u}rgen},
38
+ journal={Computer applications in the biosciences: CABIOS},
39
+ volume={12},
40
+ number={4},
41
+ pages={281--289},
42
+ year={1996},
43
+ publisher={Oxford University Press}
44
+ }
45
+
46
+ @article{harris2020numpy,
47
+ title={Array programming with NumPy},
48
+ author={Harris, Charles R and Millman, K Jarrod and Van Der Walt, St{\'e}fan J and Gommers, Ralf and Virtanen, Pauli and Cournapeau, David and Wieser, Eric and Taylor, Julian and Berg, Sebastian and Smith, Nathaniel J and others},
49
+ journal={Nature},
50
+ volume={585},
51
+ number={7825},
52
+ pages={357--362},
53
+ year={2020},
54
+ publisher={Nature Publishing Group},
55
+ doi={10.1038/s41586-020-2649-2}
56
+ }
57
+
58
+ @article{hunter2007matplotlib,
59
+ title={Matplotlib: A 2D graphics environment},
60
+ author={Hunter, John D},
61
+ journal={Computing in science \& engineering},
62
+ volume={9},
63
+ number={3},
64
+ pages={90--95},
65
+ year={2007},
66
+ publisher={IEEE Computer Society},
67
+ doi={10.1109/MCSE.2007.55}
68
+ }
69
+
70
+ @inproceedings{hagberg2008networkx,
71
+ title={Exploring network structure, dynamics, and function using NetworkX},
72
+ author={Hagberg, Aric and Swart, Pieter and Chult, Daniel S},
73
+ booktitle={Proceedings of the 7th Python in Science Conference},
74
+ volume={11},
75
+ pages={11--15},
76
+ year={2008},
77
+ organization={Pasadena, CA USA}
78
+ }
79
+
80
+ @misc{graphviz2024,
81
+ title={Graphviz - Graph Visualization Software},
82
+ author={{Graphviz Contributors}},
83
+ year={2024},
84
+ howpublished={\url{https://graphviz.org/}},
85
+ note={Accessed: 2024-08-03}
86
+ }
87
+
88
+ @manual{tkinter2024,
89
+ title={tkinter --- Python interface to Tcl/Tk},
90
+ author={{Python Software Foundation}},
91
+ year={2024},
92
+ organization={Python Software Foundation},
93
+ howpublished={\url{https://docs.python.org/3/library/tkinter.html}},
94
+ note={Python Standard Library Documentation}
95
+ }
@@ -0,0 +1,88 @@
1
+ ---
2
+ title: 'HBAT: An updated with Python Reimplementation for Hydrogen Bond Analysis in
3
+ Macromolecular Structures'
4
+ tags:
5
+ - Python
6
+ - structural biology
7
+ - hydrogen bonds
8
+ - molecular interactions
9
+ - protein structures
10
+ - bioinformatics
11
+ authors:
12
+ - name: Abhishek Tiwari
13
+ orcid: 0000-0003-2222-2395
14
+ affiliation: 1
15
+ affiliations:
16
+ - name: Independent Researcher
17
+ index: 1
18
+ date: 3 August 2025
19
+ bibliography: paper.bib
20
+ ---
21
+
22
+ # Summary
23
+
24
+ The Hydrogen Bond Analysis Tool (HBAT) is a comprehensive Python package for automated analysis of non-covalent interactions in macromolecular structures. Originally developed in Perl/Tk and published in 2007 [@tiwari2007hbat], latest version of HBAT has been completely rewritten in Python with enhanced functionality. The software identifies and analyzes hydrogen bonds, halogen bonds, and X-H...$\pi$ interactions using geometric criteria, providing detailed statistical analysis and advanced visualization capabilities for cooperativity chains. Latest version of HBAT offers improved graphical interface (tkinter), a simple command-line interfaces, and a developer-friendly API interface making it accessible to users with different computational backgrounds and workflow requirements.
25
+
26
+ # Statement of need
27
+
28
+ Hydrogen bonds and other weak interactions are fundamental to protein structure, stability, and function. With over 200,000 structures in the Protein Data Bank [@berman2000protein], there is an increasing need for automated tools to analyze these interactions systematically. While several tools exist for hydrogen bond analysis [@mcdonald1994satisfying; @lindauer1996hbexplore], they often lack comprehensive coverage of interaction types, modern interfaces, or advanced visualization capabilities.
29
+
30
+ The original HBAT [@tiwari2007hbat] was developed in Perl/Tk with a Windows-only GUI, limiting its adoption in modern computational environments. The software needed modernization to address current research needs including: (1) cross-platform compatibility, (2) support for modern Python scientific computing ecosystems and extensibility, (3) enhanced visualization capabilities, (4) improved performance for large structures, and (5) flexible output formats for downstream analysis.
31
+
32
+ HBAT addresses these limitations by providing a modern, cross-platform Python implementation that integrates seamlessly with contemporary structural biology workflows. The software is particularly valuable for researchers in structural biology, computational chemistry, and drug design who need detailed analysis of molecular interactions.
33
+
34
+ ![Latest update to HBAT usage tkinter to provide a cross-platform graphical user interface (GUI))](https://static.abhishek-tiwari.com/hbat/hbat-window-v1.png)
35
+
36
+ # Key Enhancements
37
+
38
+ Latest HBAT update introduces several major improvements over the original 2007 version:
39
+
40
+ **Reimplementation in Python**: Complete rewrite from Perl/Tk to Python, enabling integration with the scientific Python ecosystem including NumPy [@harris2020numpy], Matplotlib [@hunter2007matplotlib], and NetworkX [@hagberg2008networkx].
41
+
42
+ **Cross-Platform Compatibility**: Unlike the original Windows-only version, HBAT now runs on Windows, macOS, and Linux systems.
43
+
44
+ **Enhanced Interaction Analysis**: Expanded coverage includes hydrogen bonds (O-H...O, N-H...O, N-H...N, C-H...O), halogen bonds (C-X...Y where X=F,Cl,Br,I), and X-H...$\pi$ interactions with aromatic systems.
45
+
46
+ **Cooperativity chain Visualization**: Two rendering engines for cooperativity chain visualization: NetworkX [@hagberg2008networkx]/matplotlib [@hunter2007matplotlib] for basic networks and GraphViz [@graphviz2024] for publication-quality graphics with customizable layouts and high-resolution export (PNG, SVG, PDF).
47
+
48
+ **Dual Interface Design**: Both graphical interface (tkinter [@tkinter2024]-based) and command-line interface with extensive parameter customization and preset configurations for different structure types (high-resolution, NMR, membrane proteins). In addition, users can use HBAT's API interfaces to build custom scientific workflows and perform analysis using scientific notebooks.
49
+
50
+ **Flexible Output Formats**: Multiple export options including text, CSV, and JSON formats for integration with downstream analysis pipelines and statistical software.
51
+
52
+ **Parameter Presets**: Built-in parameter sets optimized for different experimental conditions and structure types, addressing the challenge of parameter selection for different research contexts.
53
+
54
+ **PDB Fixing Integration**: Optional integration with PDBFixer for automated correction of missing hydrogen atoms, addressing a common preprocessing requirement.
55
+
56
+ ![An example visualization of potential cooperativity chain generated by HBAT software for Protein Data Bank (PDB) entry 6RSA](https://static.abhishek-tiwari.com/hbat/6rsa-pdb-chain-6.png)
57
+
58
+ # Implementation
59
+
60
+ HBAT employs a modular architecture with separate components for PDB parsing, geometric analysis, statistical computation, and visualization. The core analysis engine uses efficient nearest-neighbor searching with configurable distance cutoffs, followed by geometric filtering based on distance and angular criteria.
61
+
62
+ The software implements the same fundamental geometric approach as the original version [@tiwari2007hbat] but with optimized algorithms and improved numerical precision.
63
+
64
+ Statistical analysis includes frequency distributions, geometric parameter distributions, and furcation analysis (bifurcated, trifurcated interactions). The cooperativity analysis uses graph theory to identify hydrogen bond networks and chains, with visualization support for understanding complex interaction patterns.
65
+
66
+ # Impact and Applications
67
+
68
+ Since its original publication, HBAT has been cited in numerous studies of protein structure and molecular recognition [@tiwari2007hbat]. Latest update, however, extends this impact by providing modern tools for:
69
+
70
+ - **Structure-based drug design**: Analysis of protein-ligand interactions and binding site characterization
71
+ - **Protein engineering**: Understanding stabilization mechanisms and rational design strategies
72
+ - **Molecular dynamics analysis**: Post-simulation analysis of interaction networks and stability
73
+ - **Crystallographic studies**: Validation and interpretation of high-resolution structures
74
+ - **Comparative structural analysis**: Systematic comparison of interaction patterns across protein families
75
+
76
+ The software's preset configurations and flexible parameter system make it accessible to both computational experts and experimental structural biologists, broadening its potential user base compared to the original version.
77
+
78
+ # Availability and Future Development
79
+
80
+ HBAT is freely available under the MIT license at https://github.com/abhishektiwari/hbat with comprehensive documentation at https://hbat.abhishek-tiwari.com/. The software can be installed via PyPI (`pip install hbat`) or `conda`, with optional GraphViz integration for advanced visualization features.
81
+
82
+ Future development plans include support for trajectory analysis from molecular dynamics simulations, enhanced machine learning-based interaction classification, and integration with structural biology workflows through plugins for popular molecular visualization software.
83
+
84
+ # Acknowledgements
85
+
86
+ The author thanks the original co-developer Sunil K. Panigrahi and acknowledges the structural biology community for feedback that guided the modernization of HBAT.
87
+
88
+ # References
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes