Skip to content

Commit 94f940d

Browse files
Add files for public release
1 parent 31a8350 commit 94f940d

File tree

2 files changed

+135
-9
lines changed

2 files changed

+135
-9
lines changed

GitHubRepoPublicReleaseApproval.md

+9-9
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,21 @@
77
The project identified above, which is contained within the repository this
88
document is stored in, has met the following criteria for public release:
99

10-
1. [ ] The project, including the test criteria, meets the requirements defined
10+
1. [x] The project, including the test criteria, meets the requirements defined
1111
in the ITS Software Development Publication Policy for making a repository public.
1212
The major pre-established criteria for publication are listed below, and the check
1313
mark next to each attests that the criterion has been met.
14-
* [ ] Unit tests are available and the software has been tested against the unit tests.
15-
* [ ] The software can be compiled and/or used on Windows, macOS, and Linux.
16-
* [ ] The repository structure and contents follow from the ITS PropLib template, and
14+
* [x] Unit tests are available and the software has been tested against the unit tests.
15+
* [x] The software can be compiled and/or used on Windows, macOS, and Linux.
16+
* [x] The repository structure and contents follow from the ITS PropLib template, and
1717
all template or placeholder code has been removed.
18-
* [ ] The repository includes the appropriate `LICENSE.md` file
19-
2. [ ] Any test data necessary for the code and its unit tests to function is included in this
18+
* [x] The repository includes the appropriate `LICENSE.md` file
19+
2. [x] Any test data necessary for the code and its unit tests to function is included in this
2020
GitHub repository, either directly or as a linked Git submodule.
21-
3. [ ] The README.md file has passed editorial review from the ITS Publications Office.
22-
4. [ ] The project complies with the ITS Code Style Guide or an appropriate style
21+
3. [x] The README.md file has passed editorial review from the ITS Publications Office.
22+
4. [x] The project complies with the ITS Code Style Guide or an appropriate style
2323
guide as agreed to by the sponsor, project lead, or Supervising Division Chief.
24-
5. [ ] Approved disclaimer and licensing language has been included.
24+
5. [x] Approved disclaimer and licensing language has been included.
2525

2626
In order to complete this approval, please create a new branch, upload and commit
2727
your version of this Markdown document to that branch, then create a pull request

README.md

+126
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
# Low Frequency / Medium Frequency (LF/MF) Propagation Model, Python® Wrapper #
2+
3+
[![NTIA/ITS PropLib][proplib-badge]][proplib-link]
4+
[![PyPI Release][pypi-release-badge]][pypi-release-link]
5+
[![GitHub Actions Unit Test Status][gh-actions-test-badge]][gh-actions-test-link]
6+
[![GitHub Issues][gh-issues-badge]][gh-issues-link]
7+
[![DOI][doi-badge]][doi-link]
8+
9+
[proplib-badge]: https://img.shields.io/badge/PropLib-badge?label=%F0%9F%87%BA%F0%9F%87%B8%20NTIA%2FITS&labelColor=162E51&color=D63E04
10+
[proplib-link]: https://ntia.github.io/propagation-library-wiki
11+
[gh-actions-test-badge]: https://img.shields.io/github/actions/workflow/status/NTIA/LFMF-python/pytest.yml?branch=main&logo=pytest&logoColor=ffffff&label=Tests&labelColor=162E51
12+
[gh-actions-test-link]: https://github.com/NTIA/LFMF-python/actions/workflows/pytest.yml
13+
[pypi-release-badge]: https://img.shields.io/pypi/v/proplib-lfmf?logo=pypi&logoColor=ffffff&label=Release&labelColor=162E51&color=D63E04
14+
[pypi-release-link]: https://pypi.org/project/proplib-lfmf
15+
[gh-issues-badge]: https://img.shields.io/github/issues/NTIA/LFMF-python?logo=github&label=Issues&labelColor=162E51
16+
[gh-issues-link]: https://github.com/NTIA/LFMF-python/issues
17+
[doi-badge]: https://zenodo.org/badge/896234119.svg
18+
[doi-link]: https://zenodo.org/badge/latestdoi/896234119
19+
20+
This code repository contains a Python wrapper for the NTIA/ITS implementation of the
21+
Low Frequency / Medium Frequency (LF/MF) Propagation Model. LF/MF predicts basic transmission
22+
loss in the frequency range 0.01 - 30 MHz for propagation paths over a smooth Earth and antenna
23+
heights less than 50 meters. This Python package wraps the [NTIA/ITS C++ implementation](https://github.com/NTIA/LFMF).
24+
25+
## Getting Started ##
26+
27+
This software is distributed on [PyPI](https://pypi.org/project/proplib-lfmf) and is easily installable
28+
using the following command.
29+
30+
```cmd
31+
pip install proplib-lfmf
32+
```
33+
34+
General information about using this model is available on
35+
[its page on the **NTIA/ITS Propagation Library Wiki**](https://ntia.github.io/propagation-library-wiki/models/LFMF/).
36+
Additionally, Python-specific instructions and code examples are available
37+
[here](https://ntia.github.io/propagation-library-wiki/models/LFMF/python).
38+
39+
If you're a developer and would like to contribute to or extend this repository,
40+
please review the guide for contributors [here](CONTRIBUTING.md) or open an
41+
[issue](https://github.com/NTIA/LFMF-python/issues) to start a discussion.
42+
43+
## Development ##
44+
45+
This repository contains code which wraps [the C++ shared library](https://github.com/NTIA/LFMF)
46+
as an importable Python module. If you wish to contribute to this repository,
47+
testing your changes will require the inclusion of this shared library. You may retrieve
48+
this either from the
49+
[relevant GitHub Releases page](https://github.com/NTIA/LFMF/releases), or by
50+
compiling it yourself from the C++ source code. Either way, ensure that the shared library
51+
(`.dll`, `.dylib`, or `.so` file) is placed in `src/ITS/Propagation/LFMF/`, alongside `__init__.py`.
52+
53+
Below are the steps to build and install the Python package from the source code.
54+
Working installations of Git and a [currently-supported version](https://devguide.python.org/versions/)
55+
of Python are required. Additional requirements exist if you want to compile the shared
56+
library from C++ source code; see relevant build instructions
57+
[here](https://github.com/NTIA/LFMF?tab=readme-ov-file#configure-and-build).
58+
59+
1. Optionally, configure and activate a virtual environment using a tool such as
60+
[`venv`](https://docs.python.org/3/library/venv.html) or
61+
[`conda`](https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html).
62+
63+
1. Clone this repository, then initialize the Git submodule containing the test data.
64+
65+
```cmd
66+
# Clone the repository
67+
git clone https://github.com/NTIA/LFMF-python
68+
cd LFMF-python
69+
70+
# Initialize Git submodule containing test data
71+
git submodule init
72+
73+
# Clone the submodule
74+
git submodule update
75+
```
76+
77+
1. Download the shared library (`.dll`, `.so`, or `.dylib`) from a
78+
[GitHub Release](https://github.com/NTIA/LFMF/releases). Then place the
79+
downloaded file in `src/ITS/Propagation/LFMF/` (alongside `__init__.py`).
80+
81+
1. Install the local package and development dependencies into your current environment:
82+
83+
```cmd
84+
pip install .[dev]
85+
```
86+
87+
1. To build the wheel for your platform:
88+
89+
```cmd
90+
hatchling build
91+
```
92+
93+
### Running Tests ###
94+
95+
Python unit tests can be run to confirm successful installation. You will need to
96+
clone this repository's test data submodule (as described above). Then, run the tests
97+
with pytest using the following command.
98+
99+
```cmd
100+
pytest
101+
```
102+
103+
## References ##
104+
105+
- [ITS Propagation Library Wiki](https://ntia.github.io/propagation-library-wiki)
106+
- [LFMF Wiki Page](https://ntia.github.io/propagation-library-wiki/models/LFMF)
107+
- [`ITS.Propagation.LFMF` C++ API Reference](https://ntia.github.io/LFMF)
108+
- Bremmer, H. "Terrestrial Radio Waves" _Elsevier_, 1949.
109+
- DeMinco, N. "Medium Frequency Propagation Prediction Techniques and Antenna Modeling for Intelligent Transportation Systems (ITS) Broadcast Applications", [_NTIA Report 99-368_](https://www.its.bldrdoc.gov/publications/2399.aspx), August 1999
110+
- DeMinco, N. "Ground-wave Analysis Model For MF Broadcast System", [_NTIA Report 86-203_](https://www.its.bldrdoc.gov/publications/2226.aspx), September 1986
111+
- Sommerfeld, A. "The propagation of waves in wireless telegraphy", _Ann. Phys._, 1909, 28, p.665
112+
- Wait, J. "Radiation From a Vertical Antenna Over a Curved Stratified Ground", _Journal of Research of the National Bureau of Standards_. Vol 56, No. 4, April 1956. Research Paper 2671
113+
114+
## License ##
115+
116+
See [LICENSE](./LICENSE.md).
117+
118+
"Python" and the Python logos are trademarks or registered trademarks of the Python Software Foundation, used by the National Telecommunications and Information Administration with permission from the Foundation.
119+
120+
## Contact ##
121+
122+
For technical questions, contact <[email protected]>.
123+
124+
## Disclaimer ##
125+
126+
Certain commercial equipment, instruments, or materials are identified in this project were used for the convenience of the developers. In no case does such identification imply recommendation or endorsement by the National Telecommunications and Information Administration, nor does it imply that the material or equipment identified is necessarily the best available for the purpose.

0 commit comments

Comments
 (0)