From 7ee1c48a37ce4a08991d9d137769e56d524c6515 Mon Sep 17 00:00:00 2001 From: Jakob Maljaars <jakob.maljaars@stcorp.nl> Date: Mon, 16 Nov 2020 13:39:35 +0100 Subject: [PATCH] Make release --- CMake/version.h.in | 9 ++++ CMakeLists.txt | 23 +++++++-- README.md | 45 ++++++++++++++---- .../comparison-oskar/{README.md => readme.md} | 41 ++++++++-------- docs/design.md | 45 ++++-------------- docs/everybeam_aterms.png | Bin 0 -> 32221 bytes python/placeholder.md | 1 - python/readme.md | 12 +++++ 8 files changed, 107 insertions(+), 69 deletions(-) create mode 100644 CMake/version.h.in rename demo/comparison-oskar/{README.md => readme.md} (73%) create mode 100644 docs/everybeam_aterms.png delete mode 100644 python/placeholder.md create mode 100644 python/readme.md diff --git a/CMake/version.h.in b/CMake/version.h.in new file mode 100644 index 00000000..5357c8ff --- /dev/null +++ b/CMake/version.h.in @@ -0,0 +1,9 @@ +#ifndef EVERYBEAM_VERSION_H_ +#define EVERYBEAM_VERSION_H_ + +#define EVERYBEAM_VERSION "@EVERYBEAM_VERSION@" +#define EVERYBEAM_VERSION_MAJOR @EVERYBEAM_VERSION_MAJOR@ +#define EVERYBEAM_VERSION_MINOR @EVERYBEAM_VERSION_MINOR@ +#define EVERYBEAM_VERSION_PATCH @EVERYBEAM_VERSION_PATCH@ + +#endif \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 58982b14..c7aa1e0e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,8 +3,18 @@ cmake_minimum_required(VERSION 3.0.0) #------------------------------------------------------------------------------ -# Set project name and version number -project(EveryBeam VERSION 5.0.0) +# Set version name and project number +set(EVERYBEAM_VERSION 0.1.0) +if(EVERYBEAM_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)") + set(EVERYBEAM_VERSION_MAJOR "${CMAKE_MATCH_1}") + set(EVERYBEAM_VERSION_MINOR "${CMAKE_MATCH_2}") + set(EVERYBEAM_VERSION_PATCH "${CMAKE_MATCH_3}") + message(${EVERYBEAM_VERSION_PATCH}) +else() + message(FATAL_ERROR "Failed to parse EVERYBEAM_VERSION='${EVERYBEAM_VERSION}'") +endif() + +project(EveryBeam VERSION ${EVERYBEAM_VERSION}) option (BUILD_WITH_PYTHON "Build python bindings" OFF) @@ -126,8 +136,15 @@ if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND BUILD_TESTING) endif() #------------------------------------------------------------------------------ -# Generate config.h file +# Generate config.h and version.h headers configure_file(${CMAKE_SOURCE_DIR}/CMake/config.h.in ${CMAKE_BINARY_DIR}/config.h) +configure_file(${CMAKE_SOURCE_DIR}/CMake/version.h.in ${CMAKE_BINARY_DIR}/version.h) + +install(FILES + ${CMAKE_BINARY_DIR}/config.h + ${CMAKE_BINARY_DIR}/version.h + DESTINATION "include/${CMAKE_PROJECT_NAME}" + ) #------------------------------------------------------------------------------ if(BUILD_WITH_PYTHON) diff --git a/README.md b/README.md index 97b07415..345b0965 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,56 @@ # EveryBeam library -Stand alone version of the LOFAR station response library (LOFARBeam). +This package can be used to compute the beam response for a variety of +radio telescopes, i.e.: -This package provides an abstract interface to a selection of beam responses, and beamformed versions thereof. Currently implemented are: +* LOFAR +* OSKAR +* MWA +* VLA +* ATCA + +This package also provides an abstract interface to a selection of beam responses for apperture arrays (LOFAR/OSKAR), and beamformed versions thereof. Currently implemented are: * Hamaker - * OSKAR-dipole - * LOBES (work in progress) * OSKAR spherical wave model + * OSKAR-dipole: work in progress + * LOBES: work in progress. A coefficient file is currently only available for LOFAR station CS302LBA. Selecting the LOBES model defaults back to Hamaker, except for the aforementioned station. + +EveryBeam aims to gradually replace the stand alone version of the LOFAR station response library (LOFARBeam). +EveryBeam is licensed under the terms of the [GNU GPL3 license](LICENSE). + ## Installation -On a clean ubuntu 18.04 computer, the following packages are required: +On a clean ubuntu 18.04 computer, the following packages are required, see also the [docker file](docker/Dockerfile-base): + +General packages + + apt-get -y install wget git make cmake g++ doxygen \ + libboost-all-dev libhdf5-dev libfftw3-dev \ + libblas-dev liblapack-dev libgsl-dev libxml2-dev \ + libgtkmm-3.0-dev libpython3-dev python3-distutils - apt install build-essential casacore-dev cmake python3-distutils libblas-dev liblapack-dev libhdf5-dev +Astronomy packages: + + apt-get -y install casacore-dev libcfitsio-dev wcslib-dev Installation is then typically done as: mkdir build cd build - cmake .. + cmake -DBUILD_WITH_PYTHON=On/Off .. make make install -A `Dockerfile` to compile a working version of DPPP and EveryBeam is included in the `test` directory. +The `BUILD_WITH_PYTHON` option indicates whether the python bindings for EveryBeam should be generated. If switched `On` (non-default), a shared `everybeam.cpython` should appear in the `[INSTALL_DIR]/lib/python[MAJOR].[MINOR]/site-packages` directory. + +A [`Dockerfile`](docker/Dockerfile-everybeam) to compile a working version of DPPP and EveryBeam is included in the `test` directory. ## Usage with DPPP -To use with DPPP, the streaming visibility framework used for LOFAR, currently the branch `oskar` from that repository is required. +To use with DPPP, the streaming visibility framework used for LOFAR, currently the `development` branch from that repository is required, +see https://git.astron.nl/RD/DP3/. A test measurementset is included in DPPP (`tNDPPP-generic.in_MS.tgz`). @@ -40,6 +63,10 @@ To simulate visibilities with a certain element model, use `DPPP DPPP.parset` wh predict.elementmodel=oskardipole predict.sourcedb=tNDPPP-generic.MS/sky # sourcedb file +## Usage with WSClean + +To use EveryBeam with WSClean (for A-term or primary beam corrections), WSClean needs to be compiled against EveryBeam. In order to do so, make sure WSClean can find EveryBeam by adding the EveryBeam install dir to the `CMAKE_PREFIX_PATH`. + ## Design See [docs/design.md](@ref designpage) for design considerations. diff --git a/demo/comparison-oskar/README.md b/demo/comparison-oskar/readme.md similarity index 73% rename from demo/comparison-oskar/README.md rename to demo/comparison-oskar/readme.md index 4efbb8ff..44c64404 100644 --- a/demo/comparison-oskar/README.md +++ b/demo/comparison-oskar/readme.md @@ -1,43 +1,46 @@ +OSKAR-demo +=================== + # Introduction The scripts in this directory compare the implementations of the spherical wave model for the element response in OSKAR and EveryBeam. The comparison is made per basefunction. One basefunction has two complex components. # Usage Comparison plots can be generated by giving the following command in the build directory -``` -make comparison -``` + + make comparison + This will generate a series of image files named basefunction*.png in the \<builddir\>/demo/comparison-oskar directory. The number of basefunctions depends on $L$, the maximum order, and is given by $N = 2(L+1)^2-2$. The maximum order can be set by the environment variable MAX_ORDER, for example -``` -MAX_ORDER=3 make comparison-oskar -``` + + MAX_ORDER=3 make comparison-oskar + computes the basefunctions up to order 3, generating 30 image files. The application of the 'transpose' can be activated by the APPLY_TRANSPOSE environment variable, for example -``` -APPLY_TRANSPOSE=ON MAX_ORDER=3 make comparison-oskar -``` + + APPLY_TRANSPOSE=ON MAX_ORDER=3 make comparison-oskar + This option was needed to make the results of OSKAR and EveryBeam the same. With the fix of the 'transpose' issue the default value was changed from 'ON' to 'OFF. The environment variable TOLERANCE makes the demo a test that fails if the difference between OSKAR and EveryBeam results is larger its value. For example -``` -TOLERANCE=1e-16 make comparison-oskar -``` + + TOLERANCE=1e-16 make comparison-oskar + fails, while -``` -TOLERANCE=1e-12 make comparison-oskar -``` + + TOLERANCE=1e-12 make comparison-oskar + succeeds. This test is part of the 'integration' configuration of CTests. It will be run when the integration configuration is run with -``` -ctest -C integration -``` + + ctest -C integration + # Notes -The read_oskar_beam.py script tranforms the polarization vector from a X,Y coordinate system to a theta,phi coordinate system. It still needs to be verified that this transformation is the same as in OSKAR. +The `read_oskar_beam.py` script tranforms the polarization vector from a X,Y coordinate system to a theta,phi coordinate system. It still needs to be verified that this transformation is the same as in OSKAR. diff --git a/docs/design.md b/docs/design.md index 5c2f5ac9..6314d987 100644 --- a/docs/design.md +++ b/docs/design.md @@ -20,7 +20,7 @@ Design {#designpage} LOFAR specific is [lofarreadutils](@ref lofarreadutils.h) which reads metadata from a LOFAR MeasurementSet. Based on that data it composes Station -consisting of BeamFormers and Elements. +consisting of BeamFormers and Elements. OSKAR specific is [msv3readutils](@ref msv3readutils.h) for reading OSKAR simulated measurement sets. The inputs of a BeamFormer are elements at a given positions. A BeamFormer is also an Element. This allows composition of multilevel @@ -33,6 +33,10 @@ HBA1 as inputs. <img src="https://git.astron.nl/RD/EveryBeam/-/raw/6f8f7c3e9c2e50ad14e3b1afe538b2602460f97a/docs/everybeam_uml.png" alt="everybeam_uml" width="1200"/> +In addition, EveryBeam offers a suite of aterm calculation methods in the `aterms` namespace. This namespace rougly has the following layout: + +<img src="https://git.astron.nl/RD/EveryBeam/-/raw/92f9aa123560fa2841468b2201d259b2c4b1ddd7/docs/everybeam_aterms.png" alt="everybeam_aterms" width="1200"/> + ## Classes: * [Station](@ref everybeam::Station) is a thin (but central!) wrapper around an @@ -42,8 +46,8 @@ HBA1 as inputs. - `position`: position of station - `model`: antenna model/element response model (Hamaker/OSKARDipole/OSKARSphericalWave/LOBES) - The all important attribute is the `itsAntenna`, which (somewhat confusingly) can denote either an `Element` or a `BeamFormer` pointer. - `Station` class contains a couple of convenience specialisations for the `response` and `arrayFactor` methods to facilitate implementation in dependencies such as `DP3` and `WSClean`. + The all important attribute is the `antenna_`, which (somewhat confusingly) can denote either an `Element` or a `BeamFormer` pointer. + `Station` class contains a couple of convenience specialisations for the `response` and `ArrayFactor` methods to facilitate implementation in dependencies such as `DP3` and `WSClean`. * [Element](@ref everybeam::Element) - something for which a response can be computed, can be a single element (antenna) or a beamformer. Constructor consumes: @@ -62,39 +66,6 @@ HBA1 as inputs. Constructor (optionally) consumes: - `CoordinateSystem` - `phase_reference_position` +* [AtermConfig](@ref everybeam::aterms::ATermConfig) - Class to configure the aterms calculation. This class is typically interfaced from DP3 and WSClean in order to request aterm calculations from EveryBeam -## Questions/Remarks in view of development: - -* [Station](@ref everybeam::Station): - - **Question**: header file `Stations.h` contains different specializations of `response` method. Are they all needed? - - **Question**: re-use `Station::rotation` (and maybe place `rotation` in a utilities / common directory) ? - - **Question**: `Station` is said to be a thin wrapper around - `Element`, can't we make it "header-only"? - - **Remark**: `Station` is probably the central class which needs to be interfaced by `DP3` and `WSClean`. So when designing the new API, it requires due attention how the methods for this class should look like. -* [Element](@ref everybeam::Element) -* [ElementResponse](@ref everybeam::ElementResponse) - - **Question**: Can be made a `struct`, since only `public` components anyway? -* [BeamFormer](@ref everybeam::BeamFormer): - - **Question**: seems that `#include "Element.h"` is unused? -* [Antenna](@ref everybeam::ElementResponse): - - **Question**: can't we make `Antenna` header-only? Only requires migration of `transform_to_local_direction` to header file. - - -<!--Markdown | Less | Pretty ---- | --- | --- -*Still* | `renders` | **nicely** -1 | 2 | 3 ---> - - - - - - - -<!--```python -s = "Python syntax highlighting" -print s -```--> - diff --git a/docs/everybeam_aterms.png b/docs/everybeam_aterms.png new file mode 100644 index 0000000000000000000000000000000000000000..4c22e7822f871cf5eb01af18193d1cc1bc1e0c5c GIT binary patch literal 32221 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	@zak6z_cd$x;D7VcVT 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 literal 0 HcmV?d00001 diff --git a/python/placeholder.md b/python/placeholder.md deleted file mode 100644 index ed8b205f..00000000 --- a/python/placeholder.md +++ /dev/null @@ -1 +0,0 @@ -# Python bindings go here \ No newline at end of file diff --git a/python/readme.md b/python/readme.md new file mode 100644 index 00000000..8ad94ecf --- /dev/null +++ b/python/readme.md @@ -0,0 +1,12 @@ +Python wrappers +=============== + +This directory contains the python bindings for everybeam, along with a couple of utility functions for the LOBES model response. In order to compile the python bindings make sure that + + -DBUILD_WITH_PYTHON=On + +Once installed, make sure that the installed `everybeam.cpython` shared object is on you `PYTHONPATH`. Check if everything works by running + + python3 -c "import everybeam" + +from the commandline. \ No newline at end of file -- GitLab