solvation-analysis 0.4.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.
Files changed (126) hide show
  1. solvation_analysis-0.4.0/CODE_OF_CONDUCT.md +159 -0
  2. solvation_analysis-0.4.0/LICENSE +574 -0
  3. solvation_analysis-0.4.0/MANIFEST.in +9 -0
  4. solvation_analysis-0.4.0/PKG-INFO +691 -0
  5. solvation_analysis-0.4.0/README.md +76 -0
  6. solvation_analysis-0.4.0/pyproject.toml +66 -0
  7. solvation_analysis-0.4.0/requirements.txt +11 -0
  8. solvation_analysis-0.4.0/setup.cfg +27 -0
  9. solvation_analysis-0.4.0/setup.py +64 -0
  10. solvation_analysis-0.4.0/solvation_analysis/__init__.py +19 -0
  11. solvation_analysis-0.4.0/solvation_analysis/_column_names.py +32 -0
  12. solvation_analysis-0.4.0/solvation_analysis/_utils.py +254 -0
  13. solvation_analysis-0.4.0/solvation_analysis/_version.py +21 -0
  14. solvation_analysis-0.4.0/solvation_analysis/coordination.py +203 -0
  15. solvation_analysis-0.4.0/solvation_analysis/networking.py +291 -0
  16. solvation_analysis-0.4.0/solvation_analysis/pairing.py +189 -0
  17. solvation_analysis-0.4.0/solvation_analysis/plotting.py +773 -0
  18. solvation_analysis-0.4.0/solvation_analysis/rdf_parser.py +387 -0
  19. solvation_analysis-0.4.0/solvation_analysis/residence.py +314 -0
  20. solvation_analysis-0.4.0/solvation_analysis/solute.py +1030 -0
  21. solvation_analysis-0.4.0/solvation_analysis/speciation.py +240 -0
  22. solvation_analysis-0.4.0/solvation_analysis/tests/__init__.py +3 -0
  23. solvation_analysis-0.4.0/solvation_analysis/tests/conftest.py +332 -0
  24. solvation_analysis-0.4.0/solvation_analysis/tests/data/.DS_Store +0 -0
  25. solvation_analysis-0.4.0/solvation_analysis/tests/data/README.md +54 -0
  26. solvation_analysis-0.4.0/solvation_analysis/tests/data/bn_fec_data/bn_fec.data +42325 -0
  27. solvation_analysis-0.4.0/solvation_analysis/tests/data/bn_fec_data/bn_fec_elements.csv +7118 -0
  28. solvation_analysis-0.4.0/solvation_analysis/tests/data/bn_fec_data/bn_fec_short_unwrap.dcd +0 -0
  29. solvation_analysis-0.4.0/solvation_analysis/tests/data/bn_fec_data/bn_fec_short_wrap.dcd +0 -0
  30. solvation_analysis-0.4.0/solvation_analysis/tests/data/bn_fec_data/bn_solv_df_large.csv +136136 -0
  31. solvation_analysis-0.4.0/solvation_analysis/tests/data/ea_fec_data/ea_fec.dcd +0 -0
  32. solvation_analysis-0.4.0/solvation_analysis/tests/data/ea_fec_data/ea_fec.pdb +14861 -0
  33. solvation_analysis-0.4.0/solvation_analysis/tests/data/eax_data/ea/topology.pdb +17045 -0
  34. solvation_analysis-0.4.0/solvation_analysis/tests/data/eax_data/ea/trajectory_equil.dcd +0 -0
  35. solvation_analysis-0.4.0/solvation_analysis/tests/data/eax_data/eaf/topology.pdb +17109 -0
  36. solvation_analysis-0.4.0/solvation_analysis/tests/data/eax_data/eaf/trajectory_equil.dcd +0 -0
  37. solvation_analysis-0.4.0/solvation_analysis/tests/data/eax_data/fea/topology.pdb +17125 -0
  38. solvation_analysis-0.4.0/solvation_analysis/tests/data/eax_data/fea/trajectory_equil.dcd +0 -0
  39. solvation_analysis-0.4.0/solvation_analysis/tests/data/eax_data/feaf/topology.pdb +17157 -0
  40. solvation_analysis-0.4.0/solvation_analysis/tests/data/eax_data/feaf/trajectory_equil.dcd +0 -0
  41. solvation_analysis-0.4.0/solvation_analysis/tests/data/iba_data/isobutyric_acid.dcd +0 -0
  42. solvation_analysis-0.4.0/solvation_analysis/tests/data/iba_data/isobutyric_acid.pdb +12005 -0
  43. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_bn_N_vs_fec_F_bins.npz +0 -0
  44. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_bn_N_vs_fec_F_data.npz +0 -0
  45. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_bn_N_vs_fec_O_bins.npz +0 -0
  46. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_bn_N_vs_fec_O_data.npz +0 -0
  47. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_bn_N_vs_fec_all_bins.npz +0 -0
  48. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_bn_N_vs_fec_all_data.npz +0 -0
  49. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_bn_N_vs_pf6_F_bins.npz +0 -0
  50. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_bn_N_vs_pf6_F_data.npz +0 -0
  51. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_bn_N_vs_pf6_all_bins.npz +0 -0
  52. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_bn_N_vs_pf6_all_data.npz +0 -0
  53. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_fec_F_vs_bn_N_bins.npz +0 -0
  54. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_fec_F_vs_bn_N_data.npz +0 -0
  55. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_fec_F_vs_bn_all_bins.npz +0 -0
  56. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_fec_F_vs_bn_all_data.npz +0 -0
  57. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_fec_F_vs_pf6_F_bins.npz +0 -0
  58. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_fec_F_vs_pf6_F_data.npz +0 -0
  59. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_fec_F_vs_pf6_all_bins.npz +0 -0
  60. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_fec_F_vs_pf6_all_data.npz +0 -0
  61. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_fec_O_vs_bn_N_bins.npz +0 -0
  62. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_fec_O_vs_bn_N_data.npz +0 -0
  63. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_fec_O_vs_bn_all_bins.npz +0 -0
  64. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_fec_O_vs_bn_all_data.npz +0 -0
  65. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_fec_O_vs_pf6_F_bins.npz +0 -0
  66. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_fec_O_vs_pf6_F_data.npz +0 -0
  67. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_fec_O_vs_pf6_all_bins.npz +0 -0
  68. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_fec_O_vs_pf6_all_data.npz +0 -0
  69. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_pf6_F_vs_bn_N_bins.npz +0 -0
  70. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_pf6_F_vs_bn_N_data.npz +0 -0
  71. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_pf6_F_vs_bn_all_bins.npz +0 -0
  72. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_pf6_F_vs_bn_all_data.npz +0 -0
  73. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_pf6_F_vs_fec_F_bins.npz +0 -0
  74. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_pf6_F_vs_fec_F_data.npz +0 -0
  75. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_pf6_F_vs_fec_O_bins.npz +0 -0
  76. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_pf6_F_vs_fec_O_data.npz +0 -0
  77. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_pf6_F_vs_fec_all_bins.npz +0 -0
  78. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_non_solvated/rdf_pf6_F_vs_fec_all_data.npz +0 -0
  79. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_easy/rdf_bn_N_bins.npz +0 -0
  80. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_easy/rdf_bn_N_data.npz +0 -0
  81. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_easy/rdf_bn_all_bins.npz +0 -0
  82. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_easy/rdf_bn_all_data.npz +0 -0
  83. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_easy/rdf_fec_F_bins.npz +0 -0
  84. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_easy/rdf_fec_F_data.npz +0 -0
  85. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_easy/rdf_fec_O_bins.npz +0 -0
  86. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_easy/rdf_fec_O_data.npz +0 -0
  87. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_easy/rdf_fec_all_bins.npz +0 -0
  88. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_easy/rdf_fec_all_data.npz +0 -0
  89. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_easy/rdf_pf6_F_bins.npz +0 -0
  90. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_easy/rdf_pf6_F_data.npz +0 -0
  91. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_easy/rdf_pf6_all_bins.npz +0 -0
  92. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_easy/rdf_pf6_all_data.npz +0 -0
  93. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_easy/rdf_universe_all_bins.npz +0 -0
  94. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_easy/rdf_universe_all_data.npz +0 -0
  95. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_hard/rdf_bn_N_bins.npz +0 -0
  96. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_hard/rdf_bn_N_data.npz +0 -0
  97. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_hard/rdf_bn_all_bins.npz +0 -0
  98. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_hard/rdf_bn_all_data.npz +0 -0
  99. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_hard/rdf_fec_F_bins.npz +0 -0
  100. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_hard/rdf_fec_F_data.npz +0 -0
  101. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_hard/rdf_fec_O_bins.npz +0 -0
  102. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_hard/rdf_fec_O_data.npz +0 -0
  103. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_hard/rdf_fec_all_bins.npz +0 -0
  104. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_hard/rdf_fec_all_data.npz +0 -0
  105. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_hard/rdf_pf6_F_bins.npz +0 -0
  106. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_hard/rdf_pf6_F_data.npz +0 -0
  107. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_hard/rdf_pf6_all_bins.npz +0 -0
  108. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_hard/rdf_pf6_all_data.npz +0 -0
  109. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_hard/rdf_universe_all_bins.npz +0 -0
  110. solvation_analysis-0.4.0/solvation_analysis/tests/data/rdf_vs_li_hard/rdf_universe_all_data.npz +0 -0
  111. solvation_analysis-0.4.0/solvation_analysis/tests/datafiles.py +72 -0
  112. solvation_analysis-0.4.0/solvation_analysis/tests/test_coordination.py +52 -0
  113. solvation_analysis-0.4.0/solvation_analysis/tests/test_networking.py +36 -0
  114. solvation_analysis-0.4.0/solvation_analysis/tests/test_pairing.py +53 -0
  115. solvation_analysis-0.4.0/solvation_analysis/tests/test_plotting.py +328 -0
  116. solvation_analysis-0.4.0/solvation_analysis/tests/test_rdf_parser.py +211 -0
  117. solvation_analysis-0.4.0/solvation_analysis/tests/test_residence.py +35 -0
  118. solvation_analysis-0.4.0/solvation_analysis/tests/test_selection.py +105 -0
  119. solvation_analysis-0.4.0/solvation_analysis/tests/test_solute.py +370 -0
  120. solvation_analysis-0.4.0/solvation_analysis/tests/test_speciation.py +54 -0
  121. solvation_analysis-0.4.0/solvation_analysis.egg-info/PKG-INFO +691 -0
  122. solvation_analysis-0.4.0/solvation_analysis.egg-info/SOURCES.txt +124 -0
  123. solvation_analysis-0.4.0/solvation_analysis.egg-info/dependency_links.txt +1 -0
  124. solvation_analysis-0.4.0/solvation_analysis.egg-info/requires.txt +10 -0
  125. solvation_analysis-0.4.0/solvation_analysis.egg-info/top_level.txt +1 -0
  126. solvation_analysis-0.4.0/versioneer.py +2064 -0
@@ -0,0 +1,159 @@
1
+ <!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-generate-toc again -->
2
+ **Table of Contents**
3
+
4
+ - [MDAnalysis Code of Conduct and Community Guidelines](#mdanalysis-code-of-conduct-and-community-guidelines)
5
+ - [Reporting](#reporting)
6
+ - [Enforcement](#enforcement)
7
+ - [Acknowledgment](#acknowledgment)
8
+
9
+ <!-- markdown-toc end -->
10
+ # MDAnalysis Code of Conduct and Community Guidelines
11
+
12
+ MDAnalysis is an engaged and respectful community made up of people from all
13
+ over the world. Your involvement helps us to further our mission and to create
14
+ an open platform that serves a broad range of communities, from research and
15
+ education to industry and beyond. This diversity is one of our biggest
16
+ strengths, but it can also lead to communication issues and conflicts.
17
+ Therefore, we have a few ground rules we ask that our community members adhere
18
+ to.
19
+
20
+ Fundamentally, we are committed to providing a productive,
21
+ harassment-free environment for everyone. Rather than considering this
22
+ code an exhaustive list of things that you can’t do, take it in the
23
+ spirit it is intended - a guide to make it easier to enrich all of us
24
+ and the communities in which we participate.
25
+
26
+ Importantly: as a member of our community, you are also a steward of these
27
+ values. Not all problems need to be resolved via formal processes, and often a
28
+ quick, friendly but clear word on an online forum or in person can help resolve
29
+ a misunderstanding and de-escalate things.
30
+
31
+ However, sometimes these informal processes may be inadequate: they fail to
32
+ work, there is urgency or risk to someone, nobody is intervening publicly and
33
+ you don't feel comfortable speaking in public, etc. For these or other reasons,
34
+ structured follow-up may be necessary and here we provide the means for that: we
35
+ welcome reports by
36
+ emailing [*Conduct-email*][conduct-mail] or
37
+ in anonymous by filling out [*this form*][conduct-form].
38
+
39
+ This code applies equally to founders, developers, mentors and new
40
+ community members, in all spaces managed by MDAnalysis. This
41
+ includes the mailing lists, our GitHub organizations, our chat rooms,
42
+ in-person events, and any other forums created by the project team. In
43
+ addition, violations of this code outside these spaces may affect a
44
+ person's ability to participate within them.
45
+
46
+ By embracing the following principles, guidelines and actions to follow or
47
+ avoid, you will help us make MDAnalysis a welcoming and productive community. If
48
+ that doesn't answer your questions, feel free to contact us
49
+ at our [*user-mailing-list*](mailto:mdnalysis-discussions@googlegroups.com).
50
+
51
+
52
+ 1. **Be friendly and patient**.
53
+
54
+ 2. **Be welcoming**. We strive to be a community that welcomes and supports
55
+ people of all backgrounds and identities. This includes, but is not limited
56
+ to, members of any race, ethnicity, culture, national origin, color,
57
+ immigration status, social and economic class, educational level, sex, sexual
58
+ orientation, gender identity and expression, age, physical appearance, family
59
+ status, political belief, technological or professional choices, academic
60
+ discipline, religion, mental ability, and physical ability.
61
+
62
+ 3. **Be considerate**. Your work will be used by other people, and you in turn
63
+ will depend on the work of others. Any decision you take will affect users
64
+ and colleagues, and you should take those consequences into account when
65
+ making decisions. Remember that we're a world-wide community. You may be
66
+ communicating with someone with a different primary language or cultural
67
+ background.
68
+
69
+ 4. **Be respectful**. Not all of us will agree all the time, but disagreement is
70
+ no excuse for poor behavior or poor manners. We might all experience some
71
+ frustration now and then, but we cannot allow that frustration to turn into a
72
+ personal attack. It’s important to remember that a community where people
73
+ feel uncomfortable or threatened is not a productive one.
74
+
75
+ 5. **Be careful in the words that you choose**. Be kind to others. Do not insult
76
+ or put down other community members. Harassment and other exclusionary
77
+ behavior are not acceptable. This includes, but is not limited to:
78
+ * threats or violent language directed against another person
79
+ * discriminatory jokes and language
80
+ * posting sexually explicit or violent material
81
+ * posting (or threatening to post) other people's personally identifying
82
+ information ("doxing")
83
+ * personal insults, especially those using racist or sexist terms
84
+ * unwelcome sexual attention
85
+ * advocating for, or encouraging, any of the above behavior
86
+ * repeated harassment of others. In general, if someone asks you to stop,
87
+ then stop
88
+
89
+ 6. **Moderate your expectations**. Many in our community volunteer their time.
90
+ They are probably not purposefully ignoring issues, refusing to engage in
91
+ discussion, avoiding features, etc. but often just unavailable.
92
+
93
+ 7. **When we disagree, try to understand why**. Disagreements, both social and
94
+ technical, happen all the time and MDAnalysis is no exception. It is important
95
+ that we resolve disagreements and differing views constructively. Remember
96
+ that we’re different. The strength of MDAnalysis comes from its varied community
97
+ that includes people from a wide range of backgrounds. Different people have
98
+ different perspectives on issues. Being unable to understand why someone
99
+ holds a viewpoint doesn’t mean they’re wrong. Don’t forget that it is human
100
+ to err and blaming each other doesn’t get us anywhere. Instead, focus on
101
+ helping to resolve issues and learning from mistakes.
102
+
103
+ 8. **A simple apology can go a long way**. It can often de-escalate a situation,
104
+ and telling someone that you are sorry is act of empathy that doesn’t
105
+ automatically imply an admission of guilt.
106
+
107
+ # Reporting
108
+
109
+ If someone makes you or any other contributor feel unsafe or unwelcome, please
110
+ report this in a timely manner. Code of conduct violations reduce the value of
111
+ the community for everyone and we take them seriously. All complaints will be
112
+ reviewed and investigated and will result in a response that is deemed necessary
113
+ and appropriate to the circumstances.
114
+
115
+ You can file a report by emailing
116
+ the [*Conduct-mail*][conduct-mail] or by
117
+ filing out [this form][conduct-form]. The project team is obligated to maintain
118
+ confidentiality with regard to the reporter of an incident.
119
+
120
+ The online form gives you the option to keep your report anonymous or request
121
+ that we follow up with you directly. While we cannot follow up on an anonymous
122
+ report, we will take appropriate action.
123
+
124
+ # Enforcement
125
+
126
+ When a report is sent to us we will reply as soon as possible to confirm receipt;
127
+ we strive to answer in less than 24 hours. We will review the incident and
128
+ determine, to the best of our ability
129
+
130
+ - what happened
131
+ - whether this event constitutes a code of conduct violation
132
+ - who, if anyone, was at fault
133
+ - whether this is an ongoing situation
134
+
135
+ This information will be collected in writing. We strive to reach a resolution
136
+ within a week of confirmation. Once a resolution has been agreed upon, but before it is
137
+ enacted, we will contact the original reporter and any other affected parties
138
+ and explain the proposed resolution. We will ask if this resolution is
139
+ acceptable and note feedback for the record. We are, however, not required to act
140
+ on this feedback.
141
+
142
+
143
+ # Acknowledgment
144
+
145
+ Original text courtesy of
146
+ the
147
+ [*Speak Up!*](http://web.archive.org/web/20141109123859/http://speakup.io/coc.html),
148
+ [*Django*](https://www.djangoproject.com/conduct),
149
+ [*Contributor Covenant*](http://contributor-covenant.org/),
150
+ and
151
+ [*Jupyter*](https://github.com/jupyter/governance/blob/master/conduct/code_of_conduct.md) projects,
152
+ modified by MDAnalysis. We are grateful to those projects for contributing these
153
+ materials under open licensing terms for us to easily reuse.
154
+
155
+ All content on this page is licensed under a [*Creative Commons
156
+ Attribution*](http://creativecommons.org/licenses/by/3.0/) license.
157
+
158
+ [conduct-mail]: mailto:mdnalysis-conduct@googlegroups.com
159
+ [conduct-form]: https://goo.gl/forms/w2IwBKkY3oT0aVEB3