diff --git a/.codedocs b/.codedocs new file mode 100644 index 0000000..a612d93 --- /dev/null +++ b/.codedocs @@ -0,0 +1,47 @@ +# CodeDocs.xyz Configuration File + +# Optional project name, if left empty the GitHub repository name will be used. +PROJECT_NAME = "SageCal" + +# One or more directories and files that contain example code to be included. +#EXAMPLE_PATH = + +# One or more directories and files to exclude from documentation generation. +# Use relative paths with respect to the repository root directory. +EXCLUDE = pkg build + +# One or more wildcard patterns to exclude files and directories from document +# generation. +#EXCLUDE_PATTERNS = + +# One or more symbols to exclude from document generation. Symbols can be +# namespaces, classes, or functions. +#EXCLUDE_SYMBOLS = + +# Override the default parser (language) used for each file extension. +EXTENSION_MAPPING = + +# Set the wildcard patterns used to filter out the source-files. +# If left blank the default is: +# *.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, +# *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, +# *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox, *.py, +# *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js. +FILE_PATTERNS = *.c \ + *.cpp \ + *.cxx \ + *.cu \ + *.h \ + *.hpp \ + *.md + +# Hide undocumented class members. +#HIDE_UNDOC_MEMBERS = + +# Hide undocumented classes. +#HIDE_UNDOC_CLASSES = + +# Specify a markdown page whose contents should be used as the main page +# (index.html). This will override a page marked as \mainpage. For example, a +# README.md file usually serves as a useful main page. +USE_MDFILE_AS_MAINPAGE = README.md diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..344a864 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +charset = utf-8 +trim_trailing_whitespace = true +end_of_line = lf +insert_final_newline = true + +# Tab indentation (no size specified) +[Makefile] +indent_style = tab + +[*.{c,h,cpp,hpp}] +indent_size = 2 diff --git a/.gitignore b/.gitignore index 4e08c7a..cb06cfc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +build + .idea */*.png diff --git a/.travis.yml b/.travis.yml index 6565cc9..55e1471 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,18 +6,17 @@ language: cpp #env: before_install: - - docker pull ubuntu:xenial - - docker run -itd -v "${TRAVIS_BUILD_DIR}:/travis/workdir" --name ubuntu-build ubuntu:xenial + - docker pull fdiblen/ubuntu1604-test:latest + - docker run -itd -v "${TRAVIS_BUILD_DIR}:/travis/workdir" --name ubuntu-build fdiblen/ubuntu1604-test:latest + - docker pull fdiblen/sl7-test:latest + - docker run -itd -v "${TRAVIS_BUILD_DIR}:/travis/workdir" --name sl-build fdiblen/sl7-test:latest +# - docker pull base/archlinux +# - docker run -itd -v "${TRAVIS_BUILD_DIR}:/travis/workdir" --name arch-build base/archlinux script: - export BRANCH=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then echo $TRAVIS_BRANCH; else echo $TRAVIS_PULL_REQUEST_BRANCH; fi) - echo "TRAVIS_BRANCH=$TRAVIS_BRANCH, PR=$PR, BRANCH=$BRANCH" - - docker exec ubuntu-build apt-get update -y - - docker exec ubuntu-build apt-get install software-properties-common -y - - docker exec ubuntu-build add-apt-repository -s ppa:kernsuite/kern-3 -y - - docker exec ubuntu-build apt-add-repository multiverse - - docker exec ubuntu-build apt-get update -y - - docker exec ubuntu-build apt-get install -y git cmake g++ pkg-config libcfitsio-bin libcfitsio-dev libopenblas-base libopenblas-dev wcslib-dev wcslib-tools libglib2.0-dev libcasa-casa2 casacore-dev casacore-data casacore-tools - - | - docker exec --env BRANCH=$BRANCH ubuntu-build /bin/bash -c "/travis/workdir/test-builds/test-ubuntu.sh" - + - docker exec -e BRANCH=$BRANCH -e IMAGE='ubuntu' ubuntu-build /bin/bash -c "/travis/workdir/build-tests/compile_sagecal.sh" + - docker exec -e BRANCH=$BRANCH -e IMAGE='sl7' sl-build /bin/bash -c "/travis/workdir/build-tests/compile_sagecal.sh" +# - docker exec --env BRANCH=$BRANCH arch-build /bin/bash -c "/travis/workdir/build-tests/arch/prepare-arch.sh" +# - docker exec --env BRANCH=$BRANCH arch-build /bin/bash -c "/travis/workdir/build-tests/arch/compile-arch.sh" diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f52744..f35fd1c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,13 @@ enable_language(CXX) #--------------------------------------- project project (SageCal) + +if (NOT EXISTS ${CMAKE_BINARY_DIR}/CMakeCache.txt) + if (NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release" FORCE) + endif() +endif() + set(PROJECT_VERSION_MAJOR 0) set(PROJECT_VERSION_MINOR 6) set(PROJECT_VERSION_PATCH 0) @@ -10,6 +17,7 @@ set(PROJECT_VERSION_REVISION 1) set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") +message(STATUS "\n############################\n# HOST SYSTEM v${CMAKE_HOST_SYSTEM_NAME}\n############################") message(STATUS "\n############################\n# Building SageCal v${PROJECT_VERSION}\n############################") include(CheckCXXCompilerFlag) @@ -27,7 +35,6 @@ SET(LIBRARY_OUTPUT_PATH "${MAINFOLDER}/dist/lib") set( CMAKE_MODULE_PATH $ENV{CMAKE_MODULE_PATH} ) set( CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH} ) - #--------------------------------------- cmake modules list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/CMakeModules) @@ -49,14 +56,15 @@ IF("${isSystemDir}" STREQUAL "-1") SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") ENDIF("${isSystemDir}" STREQUAL "-1") -# libsynthesis has mix of C++ and Fortran which is not handled well by -# versions before 2.8. -if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.8) - if(NOT LIB_EXTRA_SYNTHESIS) - set(LIB_EXTRA_SYNTHESIS gfortran) - endif(NOT LIB_EXTRA_SYNTHESIS) -endif(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.8) +# # libsynthesis has mix of C++ and Fortran which is not handled well by +# # versions before 2.8. +# if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.8) +# if(NOT LIB_EXTRA_SYNTHESIS) +# set(LIB_EXTRA_SYNTHESIS gfortran) +# endif(NOT LIB_EXTRA_SYNTHESIS) +# endif(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.8) +# #--------------------------------------- SageCal dependencies @@ -72,7 +80,7 @@ include_directories(${CASACORE_INCLUDE_DIR}) #cfitsio find_package(CfitsIO REQUIRED) -include_directories(${CFITSIO_INCLUDE_DIR}) +include_directories(${CFITSIO_INCLUDE}) #lapack find_package(LAPACK REQUIRED) @@ -90,10 +98,21 @@ include_directories(${OpenBLAS_INCLUDE_DIR}) #find_package(BLAS REQUIRED) #include_directories(${BLAS_INCLUDE_DIR}) -# FIXME: is this really needed? -##gfortran +# ##gfortran +enable_language(Fortran) #find_package(GFortranLibs REQUIRED) -#include_directories(${GFORTRAN_INCLUDE_DIR}) +# include_directories(${GFORTRAN_INCLUDE_DIR}) + + + + + +# enable_language(Fortran) +# # get_filename_component (Fortran_COMPILER_NAME ${CMAKE_Fortran_COMPILER} NAME) +# set(FC "$ENV{FC}" CACHE INTERNAL "Got from environment variable") +# set(CMAKE_Fortran_COMPILER "$ENV{FC}" CACHE INTERNAL "Got from environment variable") +# + ##hdf5 #find_package(HDF5 REQUIRED) @@ -121,11 +140,9 @@ endif() #--------------------------------------- build parameters for all targets -#set (CMAKE_CXX_FLAGS "-g -O3 -Wall -Wextra -std=c++11 -W -pedantic -ansi -fPIC -fpermissive -fno-omit-frame-pointer -fno-inline-functions -fno-inline-functions-called-once -fno-optimize-sibling-calls") -# set (CMAKE_CXX_FLAGS "-std=c++0x -g -O3 -Wall -Wextra -W -pedantic -ansi -fPIC -fpermissive") -set (CMAKE_CXX_FLAGS "-std=c++0x -g -O3 -Wall") -# FIXME: add debug build option -#set (CMAKE_CXX_FLAGS_DEBUG "-g -pg -pedantic -Wall -DNDEBUG -Wextra -Wcast-align -Wpointer-arith -Woverloaded-virtual -Wwrite-strings -Wcast-qual -Wctor-dtor-privacy -Wno-long-long-Wdisabled-optimization -Wformat=2 -Winit-self -Wlogical-op -Wmissing-declarations -Wmissing-include-dirs -Wnoexcept -Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow=5 -Wswitch-default -Wundef -Werror -Wno-unused") +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -std=c++0x -g -O3") +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -pg -Wall -DNDEBUG -Wextra -Wcast-align -Wpointer-arith -Woverloaded-virtual -Wwrite-strings -Wcast-qual -Wctor-dtor-privacy -Wno-long-long-Wdisabled-optimization -Wformat=2 -Winit-self -Wlogical-op -Wmissing-declarations -Wmissing-include-dirs -Wnoexcept -Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow=5 -Wswitch-default -Wundef -Werror -Wno-unused") + @@ -133,6 +150,7 @@ set (CMAKE_CXX_FLAGS "-std=c++0x -g -O3 -Wall") #--------------------------------------- summary message(STATUS "\n############################\n# Configuration summary\n############################") message (STATUS "CMAKE_SYSTEM .......... = ${CMAKE_SYSTEM}") +message (STATUS "CMAKE_INSTALL_PREFIX .. = ${CMAKE_INSTALL_PREFIX}") message (STATUS "CMAKE_BUILD_TYPE ...... = ${CMAKE_BUILD_TYPE}") message (STATUS "BUILD_SHARED_LIBS ..... = ${BUILD_SHARED_LIBS}") message (STATUS "CMAKE_INSTALL_NAME_DIR = ${CMAKE_INSTALL_NAME_DIR}") @@ -143,30 +161,36 @@ message (STATUS "CMAKE_CXX_FLAGS ....... = ${CMAKE_CXX_FLAGS}") message (STATUS "ENABLE_MPI ............ = ${ENABLE_MPI}") message (STATUS "ENABLE_CUDA ........... = ${ENABLE_CUDA}") -message (STATUS "CASACORE_INCLUDE_DIR........... = ${CASACORE_INCLUDE_DIR}") -message (STATUS "CASACORE_LIBRARIES........... = ${CASACORE_LIBRARIES}") +message (STATUS "CASACORE_INCLUDE_DIR....= ${CASACORE_INCLUDE_DIR}") +message (STATUS "CASACORE_LIBRARIES......= ${CASACORE_LIBRARIES}") message (STATUS "OpenBLAS_LIB .......... = ${OpenBLAS_LIB}") -message (STATUS "GLIB_PKG_INCLUDE_DIRS.............. = ${GLIB_PKG_INCLUDE_DIRS}") -message (STATUS "GLIB_PKG_LIBRARIES............. = ${GLIB_PKG_LIBRARIES}") +message (STATUS "GLIB_PKG_INCLUDE_DIRS...= ${GLIB_PKG_INCLUDE_DIRS}") +message (STATUS "GLIB_PKG_LIBRARIES......= ${GLIB_PKG_LIBRARIES}") #message (STATUS "LAPACK-INC ............ = ${LAPACK_INCLUDE_DIR}") -message (STATUS "LAPACK_LIBRARIES........... = ${LAPACK_LIBRARIES}") +message (STATUS "LAPACK_LIBRARIES........= ${LAPACK_LIBRARIES}") -#message (STATUS "GFORTRAN-INC ......... = ${GFORTRAN_INCLUDE_DIR}") -#message (STATUS "GFORTRAN-LIBS ......... = ${LIBGFORTRAN_LIBRARIES}") +# message (STATUS "GFORTRAN-INC ......... = ${GFORTRAN_INCLUDE_DIR}") +# message (STATUS "GFORTRAN-LIBS ......... = ${LIBGFORTRAN_LIBRARIES}") +message (STATUS "CMAKE_Fortran_COMPILER = ${CMAKE_Fortran_COMPILER}") -message (STATUS "CFITSIO_INCLUDE_DIR.......... = ${CFITSIO_INCLUDE_DIR}") -message (STATUS "CFITSIO_LIBRARIES.......... = ${CFITSIO_LIBRARIES}") +message (STATUS "CFITSIO_ROOT_DIR........= ${CFITSIO_ROOT_DIR}") +message (STATUS "CFITSIO_INCLUDE.........= ${CFITSIO_INCLUDE}") +message (STATUS "CFITSIO_LIB.............= ${CFITSIO_LIB}") -message (STATUS "WCSLIB_INCLUDE_DIR........... = ${WCSLIB_INCLUDE_DIR}") -message (STATUS "WCSLIB_LIBRARIES ........... = ${WCSLIB_LIBRARIES}") +message (STATUS "WCSLIB_INCLUDE_DIRS.....= ${WCSLIB_INCLUDE_DIRS}") +message (STATUS "WCSLIB_LIBRARIES .......= ${WCSLIB_LIBRARIES}") -message (STATUS "HDF5_INCLUDE_DIR........... = ${HDF5_INCLUDE_DIRS}") -message (STATUS "HDF5_LIBRARIES........... = ${HDF5_LIBRARIES}") +message (STATUS "HDF5_INCLUDE_DIR........= ${HDF5_INCLUDE_DIRS}") +message (STATUS "HDF5_LIBRARIES..........= ${HDF5_LIBRARIES}") +message (STATUS "CMAKE_CURRENT_BINARY_DIR..........= ${CMAKE_CURRENT_BINARY_DIR}") +message (STATUS "CMAKE_CURRENT_LIST_DIR..........= ${CMAKE_CURRENT_LIST_DIR}") +message (STATUS "CMAKE_INSTALL_PREFIX..........= ${CMAKE_INSTALL_PREFIX}") + #--------------------------------------- include directories add_subdirectory(src) @@ -177,3 +201,5 @@ add_subdirectory(src) # FIXME: this will be the final step for testing #file(COPY ${PROJECT_SOURCE_DIR}/test DESTINATION ${MAINFOLDER}/dist/test) + +install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/dist/ DESTINATION ${CMAKE_INSTALL_PREFIX}) diff --git a/CMakeModules/FindCasaCore.cmake b/CMakeModules/FindCasaCore.cmake index 6c6e1cd..0939e6e 100644 --- a/CMakeModules/FindCasaCore.cmake +++ b/CMakeModules/FindCasaCore.cmake @@ -71,7 +71,15 @@ # directly fed to the linker. # # Usage: casacore_resolve_dependencies(result components...) -# + + +if (NOT "$ENV{CASACORE_ROOT_DIR}" STREQUAL "") +set(CASACORE_ROOT_DIR "$ENV{CASACORE_ROOT_DIR}" CACHE INTERNAL "Got from environment variable") +endif() + + + + macro(casacore_resolve_dependencies _result) set(${_result} ${ARGN}) set(_index 0) diff --git a/CMakeModules/FindCfitsIO.cmake b/CMakeModules/FindCfitsIO.cmake index a749701..cbfda03 100644 --- a/CMakeModules/FindCfitsIO.cmake +++ b/CMakeModules/FindCfitsIO.cmake @@ -3,11 +3,11 @@ # CFITSIO_ROOT_DIR - CFITSIO root directory # Variables defined by this module: # CFITSIO_FOUND - system has CFITSIO -# CFITSIO_INCLUDE_DIR - the CFITSIO include directory (cached) -# CFITSIO_INCLUDE_DIRS - the CFITSIO include directories -# (identical to CFITSIO_INCLUDE_DIR) +# CFITSIO_INCLUDE - the CFITSIO include directory (cached) +# CFITSIO_INCLUDES - the CFITSIO include directories +# (identical to CFITSIO_INCLUDE) # CFITSIO_LIBRARY - the CFITSIO library (cached) -# CFITSIO_LIBRARIES - the CFITSIO libraries +# CFITSIO_LIB - the CFITSIO libraries # (identical to CFITSIO_LIBRARY) # CFITSIO_VERSION_STRING the found version of CFITSIO, padded to 3 digits @@ -33,12 +33,17 @@ if(NOT CFITSIO_FOUND) - find_path(CFITSIO_INCLUDE_DIR fitsio.h + if (NOT "$ENV{CFITSIO_ROOT_DIR}" STREQUAL "") + set(CFITSIO_ROOT_DIR "$ENV{CFITSIO_ROOT_DIR}" CACHE INTERNAL "Got from environment variable") + endif() + + + find_path(CFITSIO_INCLUDE fitsio.h HINTS ${CFITSIO_ROOT_DIR} PATH_SUFFIXES include include/cfitsio include/libcfitsio0) - if(CFITSIO_INCLUDE_DIR) - FILE(READ "${CFITSIO_INCLUDE_DIR}/fitsio.h" CFITSIO_H) + if(CFITSIO_INCLUDE) + FILE(READ "${CFITSIO_INCLUDE}/fitsio.h" CFITSIO_H) set(CFITSIO_VERSION_REGEX ".*#define CFITSIO_VERSION[^0-9]*([0-9]+)\\.([0-9]+).*") if ("${CFITSIO_H}" MATCHES ${CFITSIO_VERSION_REGEX}) # Pad CFITSIO minor version to three digit because 3.181 is older than 3.35 @@ -51,24 +56,24 @@ if(NOT CFITSIO_FOUND) else () set(CFITSIO_VERSION_STRING "Unknown") endif() - endif(CFITSIO_INCLUDE_DIR) + endif(CFITSIO_INCLUDE) find_library(CFITSIO_LIBRARY cfitsio HINTS ${CFITSIO_ROOT_DIR} PATH_SUFFIXES lib) find_library(M_LIBRARY m) - mark_as_advanced(CFITSIO_INCLUDE_DIR CFITSIO_LIBRARY M_LIBRARY) + mark_as_advanced(CFITSIO_INCLUDE CFITSIO_LIBRARY M_LIBRARY) if(CMAKE_VERSION VERSION_LESS "2.8.3") find_package_handle_standard_args(CFITSIO DEFAULT_MSG - CFITSIO_LIBRARY M_LIBRARY CFITSIO_INCLUDE_DIR) + CFITSIO_LIBRARY M_LIBRARY CFITSIO_INCLUDE) else () include(FindPackageHandleStandardArgs) find_package_handle_standard_args(CFITSIO - REQUIRED_VARS CFITSIO_LIBRARY M_LIBRARY CFITSIO_INCLUDE_DIR + REQUIRED_VARS CFITSIO_LIBRARY M_LIBRARY CFITSIO_INCLUDE VERSION_VAR CFITSIO_VERSION_STRING) endif () - set(CFITSIO_INCLUDE_DIRS ${CFITSIO_INCLUDE_DIR}) - set(CFITSIO_LIBRARIES ${CFITSIO_LIBRARY} ${M_LIBRARY}) + set(CFITSIO_INCLUDES ${CFITSIO_INCLUDE}) + set(CFITSIO_LIB ${CFITSIO_LIBRARY} ${M_LIBRARY}) endif(NOT CFITSIO_FOUND) diff --git a/CMakeModules/FindGFortranLibs.cmake b/CMakeModules/FindGFortranLibs.cmake index 36b42bf..2e7d9e3 100644 --- a/CMakeModules/FindGFortranLibs.cmake +++ b/CMakeModules/FindGFortranLibs.cmake @@ -24,120 +24,128 @@ if(NOT CMAKE_REQUIRED_QUIET) message(STATUS "Looking for gfortran related libraries...") endif() +# enable_language(Fortran) +# if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU") +# +# # Basically, call "gfortran -v" to dump compiler info to the string +# # GFORTRAN_VERBOSE_STR, which will be used to get necessary paths +# message(STATUS "Extracting library and header information by calling 'gfortran -v'...") +# execute_process(COMMAND "${CMAKE_Fortran_COMPILER}" "-v" ERROR_VARIABLE +# GFORTRAN_VERBOSE_STR RESULT_VARIABLE FLAG) +# +# # For debugging +# message(STATUS "'gfortran -v' returned:") +# message(STATUS "${GFORTRAN_VERBOSE_STR}") +# +# # Detect gfortran version +# string(REGEX MATCH "gcc version [^\t\n ]+" GFORTRAN_VER_STR "${GFORTRAN_VERBOSE_STR}") +# string(REGEX REPLACE "gcc version ([^\t\n ]+)" "\\1" GFORTRAN_VERSION_STRING "${GFORTRAN_VER_STR}") +# message(STATUS "Detected gfortran version ${GFORTRAN_VERSION_STRING}") +# unset(GFORTRAN_VER_STR) +# +# set(MATCH_REGEX "[^\t\n ]+[\t\n ]+") +# set(REPLACE_REGEX "([^\t\n ]+)") +# +# # Find architecture for compiler +# string(REGEX MATCH "Target: [^\t\n ]+" +# GFORTRAN_ARCH_STR "${GFORTRAN_VERBOSE_STR}") +# message(STATUS "Architecture string: ${GFORTRAN_ARCH_STR}") +# string(REGEX REPLACE "Target: ([^\t\n ]+)" "\\1" +# GFORTRAN_ARCH "${GFORTRAN_ARCH_STR}") +# message(STATUS "Detected gfortran architecture: ${GFORTRAN_ARCH}") +# unset(GFORTRAN_ARCH_STR) +# +# # Find install prefix, if it exists; if not, use default +# string(REGEX MATCH "--prefix=[^\t\n ]+[\t\n ]+" +# GFORTRAN_PREFIX_STR "${GFORTRAN_VERBOSE_STR}") +# if(NOT GFORTRAN_PREFIX_STR) +# message(STATUS "Detected default gfortran prefix") +# set(GFORTRAN_PREFIX_DIR "/usr/local") # default prefix for gcc install +# else() +# string(REGEX REPLACE "--prefix=([^\t\n ]+)" "\\1" +# GFORTRAN_PREFIX_DIR "${GFORTRAN_PREFIX_STR}") +# endif() +# message(STATUS "Detected gfortran prefix: ${GFORTRAN_PREFIX_DIR}") +# unset(GFORTRAN_PREFIX_STR) +# +# # Find install exec-prefix, if it exists; if not, use default +# string(REGEX MATCH "--exec-prefix=[^\t\n ]+[\t\n ]+" "\\1" +# GFORTRAN_EXEC_PREFIX_STR "${GFORTRAN_VERBOSE_STR}") +# if(NOT GFORTRAN_EXEC_PREFIX_STR) +# message(STATUS "Detected default gfortran exec-prefix") +# set(GFORTRAN_EXEC_PREFIX_DIR "${GFORTRAN_PREFIX_DIR}") +# else() +# string(REGEX REPLACE "--exec-prefix=([^\t\n ]+)" "\\1" +# GFORTRAN_EXEC_PREFIX_DIR "${GFORTRAN_EXEC_PREFIX_STR}") +# endif() +# message(STATUS "Detected gfortran exec-prefix: ${GFORTRAN_EXEC_PREFIX_DIR}") +# UNSET(GFORTRAN_EXEC_PREFIX_STR) +# +# # Find library directory and include directory, if library directory specified +# string(REGEX MATCH "--libdir=[^\t\n ]+" +# GFORTRAN_LIB_DIR_STR "${GFORTRAN_VERBOSE_STR}") +# if(NOT GFORTRAN_LIB_DIR_STR) +# message(STATUS "Found --libdir flag -- not found") +# message(STATUS "Using default gfortran library & include directory paths") +# set(GFORTRAN_LIBRARIES_DIR +# "${GFORTRAN_EXEC_PREFIX_DIR}/lib/gcc/${GFORTRAN_ARCH}/${GFORTRAN_VERSION_STRING}") +# string(CONCAT GFORTRAN_INCLUDE_DIR "${GFORTRAN_LIBRARIES_DIR}" "/include") +# else() +# message(STATUS "Found --libdir flag -- yes") +# string(REGEX REPLACE "--libdir=([^\t\n ]+)" "\\1" +# GFORTRAN_LIBRARIES_DIR "${GFORTRAN_LIB_DIR_STR}") +# string(CONCAT GFORTRAN_INCLUDE_DIR "${GFORTRAN_LIBRARIES_DIR}" "/gcc/" "${GFORTRAN_ARCH}" "/" "${GFORTRAN_VERSION_STRING}" "/include") +# endif() +# message(STATUS "gfortran libraries path: ${GFORTRAN_LIBRARIES_DIR}") +# message(STATUS "gfortran include path dir: ${GFORTRAN_INCLUDE_DIR}") +# unset(GFORTRAN_LIB_DIR_STR) +# +# # There are lots of other build options for gcc & gfortran. For now, the +# # options implemented above should cover a lot of common use cases. +# +# # Clean up be deleting the output string from "gfortran -v" +# unset(GFORTRAN_VERBOSE_STR) +# +# # Find paths for libgfortran, libquadmath, libgomp +# # libgomp needed for OpenMP support without Clang +# find_library(LIBGFORTRAN_LIBRARIES NAMES gfortran libgfortran +# HINTS ${GFORTRAN_LIBRARIES_DIR}) +# find_library(LIBQUADMATH_LIBRARIES NAMES quadmath libquadmath +# HINTS ${GFORTRAN_LIBRARIES_DIR}) +# find_library(LIBGOMP_LIBRARIES NAMES gomp libgomp +# HINTS ${GFORTRAN_LIBRARIES_DIR}) +# +# # Find OpenMP headers +# find_path(LIBGOMP_INCLUDE_DIR NAMES omp.h HINTS ${GFORTRAN_INCLUDE_DIR}) +# +# else() +# message(STATUS "CMAKE_Fortran_COMPILER_ID does not match 'GNU'!") +# endif() +# +# include(FindPackageHandleStandardArgs) +# +# # Required: libgfortran, libquadmath, path for gfortran libraries +# # Optional: libgomp, path for OpenMP headers, path for gcc/gfortran headers +# find_package_handle_standard_args(GFortranLibs +# REQUIRED_VARS LIBGFORTRAN_LIBRARIES LIBQUADMATH_LIBRARIES GFORTRAN_LIBRARIES_DIR +# VERSION_VAR GFORTRAN_VERSION_STRING) +# +# if(GFORTRANLIBS_FOUND) +# message(STATUS "Looking for gfortran libraries -- found") +# message(STATUS "gfortran version: ${GFORTRAN_VERSION_STRING}") +# else() +# message(STATUS "Looking for gfortran libraries -- not found") +# endif() +# +# mark_as_advanced(LIBGFORTRAN_LIBRARIES LIBQUADMATH_LIBRARIES +# LIBGOMP_LIBRARIES LIBGOMP_INCLUDE_DIR +# GFORTRAN_LIBRARIES_DIR GFORTRAN_INCLUDE_DIR) +# # FindGFortranLIBS.cmake ends here + + enable_language(Fortran) -if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU") - - # Basically, call "gfortran -v" to dump compiler info to the string - # GFORTRAN_VERBOSE_STR, which will be used to get necessary paths - message(STATUS "Extracting library and header information by calling 'gfortran -v'...") - execute_process(COMMAND "${CMAKE_Fortran_COMPILER}" "-v" ERROR_VARIABLE - GFORTRAN_VERBOSE_STR RESULT_VARIABLE FLAG) - - # For debugging - message(STATUS "'gfortran -v' returned:") - message(STATUS "${GFORTRAN_VERBOSE_STR}") - - # Detect gfortran version - string(REGEX MATCH "gcc version [^\t\n ]+" GFORTRAN_VER_STR "${GFORTRAN_VERBOSE_STR}") - string(REGEX REPLACE "gcc version ([^\t\n ]+)" "\\1" GFORTRAN_VERSION_STRING "${GFORTRAN_VER_STR}") - message(STATUS "Detected gfortran version ${GFORTRAN_VERSION_STRING}") - unset(GFORTRAN_VER_STR) - - set(MATCH_REGEX "[^\t\n ]+[\t\n ]+") - set(REPLACE_REGEX "([^\t\n ]+)") - - # Find architecture for compiler - string(REGEX MATCH "Target: [^\t\n ]+" - GFORTRAN_ARCH_STR "${GFORTRAN_VERBOSE_STR}") - message(STATUS "Architecture string: ${GFORTRAN_ARCH_STR}") - string(REGEX REPLACE "Target: ([^\t\n ]+)" "\\1" - GFORTRAN_ARCH "${GFORTRAN_ARCH_STR}") - message(STATUS "Detected gfortran architecture: ${GFORTRAN_ARCH}") - unset(GFORTRAN_ARCH_STR) - - # Find install prefix, if it exists; if not, use default - string(REGEX MATCH "--prefix=[^\t\n ]+[\t\n ]+" - GFORTRAN_PREFIX_STR "${GFORTRAN_VERBOSE_STR}") - if(NOT GFORTRAN_PREFIX_STR) - message(STATUS "Detected default gfortran prefix") - set(GFORTRAN_PREFIX_DIR "/usr/local") # default prefix for gcc install - else() - string(REGEX REPLACE "--prefix=([^\t\n ]+)" "\\1" - GFORTRAN_PREFIX_DIR "${GFORTRAN_PREFIX_STR}") - endif() - message(STATUS "Detected gfortran prefix: ${GFORTRAN_PREFIX_DIR}") - unset(GFORTRAN_PREFIX_STR) - - # Find install exec-prefix, if it exists; if not, use default - string(REGEX MATCH "--exec-prefix=[^\t\n ]+[\t\n ]+" "\\1" - GFORTRAN_EXEC_PREFIX_STR "${GFORTRAN_VERBOSE_STR}") - if(NOT GFORTRAN_EXEC_PREFIX_STR) - message(STATUS "Detected default gfortran exec-prefix") - set(GFORTRAN_EXEC_PREFIX_DIR "${GFORTRAN_PREFIX_DIR}") - else() - string(REGEX REPLACE "--exec-prefix=([^\t\n ]+)" "\\1" - GFORTRAN_EXEC_PREFIX_DIR "${GFORTRAN_EXEC_PREFIX_STR}") - endif() - message(STATUS "Detected gfortran exec-prefix: ${GFORTRAN_EXEC_PREFIX_DIR}") - UNSET(GFORTRAN_EXEC_PREFIX_STR) - - # Find library directory and include directory, if library directory specified - string(REGEX MATCH "--libdir=[^\t\n ]+" - GFORTRAN_LIB_DIR_STR "${GFORTRAN_VERBOSE_STR}") - if(NOT GFORTRAN_LIB_DIR_STR) - message(STATUS "Found --libdir flag -- not found") - message(STATUS "Using default gfortran library & include directory paths") - set(GFORTRAN_LIBRARIES_DIR - "${GFORTRAN_EXEC_PREFIX_DIR}/lib/gcc/${GFORTRAN_ARCH}/${GFORTRAN_VERSION_STRING}") - string(CONCAT GFORTRAN_INCLUDE_DIR "${GFORTRAN_LIBRARIES_DIR}" "/include") - else() - message(STATUS "Found --libdir flag -- yes") - string(REGEX REPLACE "--libdir=([^\t\n ]+)" "\\1" - GFORTRAN_LIBRARIES_DIR "${GFORTRAN_LIB_DIR_STR}") - string(CONCAT GFORTRAN_INCLUDE_DIR "${GFORTRAN_LIBRARIES_DIR}" "/gcc/" "${GFORTRAN_ARCH}" "/" "${GFORTRAN_VERSION_STRING}" "/include") - endif() - message(STATUS "gfortran libraries path: ${GFORTRAN_LIBRARIES_DIR}") - message(STATUS "gfortran include path dir: ${GFORTRAN_INCLUDE_DIR}") - unset(GFORTRAN_LIB_DIR_STR) - - # There are lots of other build options for gcc & gfortran. For now, the - # options implemented above should cover a lot of common use cases. - - # Clean up be deleting the output string from "gfortran -v" - unset(GFORTRAN_VERBOSE_STR) - - # Find paths for libgfortran, libquadmath, libgomp - # libgomp needed for OpenMP support without Clang - find_library(LIBGFORTRAN_LIBRARIES NAMES gfortran libgfortran - HINTS ${GFORTRAN_LIBRARIES_DIR}) - find_library(LIBQUADMATH_LIBRARIES NAMES quadmath libquadmath - HINTS ${GFORTRAN_LIBRARIES_DIR}) - find_library(LIBGOMP_LIBRARIES NAMES gomp libgomp - HINTS ${GFORTRAN_LIBRARIES_DIR}) - - # Find OpenMP headers - find_path(LIBGOMP_INCLUDE_DIR NAMES omp.h HINTS ${GFORTRAN_INCLUDE_DIR}) - -else() - message(STATUS "CMAKE_Fortran_COMPILER_ID does not match 'GNU'!") -endif() - -include(FindPackageHandleStandardArgs) - -# Required: libgfortran, libquadmath, path for gfortran libraries -# Optional: libgomp, path for OpenMP headers, path for gcc/gfortran headers -find_package_handle_standard_args(GFortranLibs - REQUIRED_VARS LIBGFORTRAN_LIBRARIES LIBQUADMATH_LIBRARIES GFORTRAN_LIBRARIES_DIR - VERSION_VAR GFORTRAN_VERSION_STRING) - -if(GFORTRANLIBS_FOUND) - message(STATUS "Looking for gfortran libraries -- found") - message(STATUS "gfortran version: ${GFORTRAN_VERSION_STRING}") -else() - message(STATUS "Looking for gfortran libraries -- not found") -endif() - -mark_as_advanced(LIBGFORTRAN_LIBRARIES LIBQUADMATH_LIBRARIES - LIBGOMP_LIBRARIES LIBGOMP_INCLUDE_DIR - GFORTRAN_LIBRARIES_DIR GFORTRAN_INCLUDE_DIR) -# FindGFortranLIBS.cmake ends here +# if (NOT "$ENV{FC}" STREQUAL "") +# set(FC "$ENV{FC}" CACHE INTERNAL "Got from environment variable") +# set(CMAKE_Fortran_COMPILER "$ENV{FC}" CACHE INTERNAL "Got from environment variable") +# set(GFORTRANLIBS_FOUND "1" CACHE INTERNAL "found environment variable") +# endif() diff --git a/CMakeModules/FindWcsLib.cmake b/CMakeModules/FindWcsLib.cmake index f024a1b..23d7e6f 100644 --- a/CMakeModules/FindWcsLib.cmake +++ b/CMakeModules/FindWcsLib.cmake @@ -32,20 +32,28 @@ # WCSLIB_LIBRARIES - the WCSLIB libraries # (identical to WCSLIB_LIBRARY) +# find paths if(NOT WCSLIB_FOUND) - find_path(WCSLIB_INCLUDE_DIR wcslib/wcs.h - HINTS ${WCSLIB_ROOT_DIR} PATH_SUFFIXES include) - find_library(WCSLIB_LIBRARY wcs - HINTS ${WCSLIB_ROOT_DIR} PATH_SUFFIXES lib) + if (NOT "$ENV{WCSLIB_ROOT_DIR}" STREQUAL "") + set(WCSLIB_ROOT "$ENV{WCSLIB_ROOT_DIR}" CACHE INTERNAL "Got from environment variable") + endif() + + find_path(WCSLIB_INCLUDE wcslib/wcs.h + HINTS ${WCSLIB_ROOT} PATH_SUFFIXES include) + find_library(WCSLIB_LIB wcs + HINTS ${WCSLIB_ROOT} PATH_SUFFIXES lib) find_library(M_LIBRARY m) - mark_as_advanced(WCSLIB_INCLUDE_DIR WCSLIB_LIBRARY M_LIBRARY) + mark_as_advanced(WCSLIB_INCLUDE WCSLIB_LIB M_LIBRARY) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(WCSLIB DEFAULT_MSG - WCSLIB_LIBRARY M_LIBRARY WCSLIB_INCLUDE_DIR) + WCSLIB_LIB M_LIBRARY WCSLIB_INCLUDE) - set(WCSLIB_INCLUDE_DIRS ${WCSLIB_INCLUDE_DIR}) - set(WCSLIB_LIBRARIES ${WCSLIB_LIBRARY} ${M_LIBRARY}) + set(WCSLIB_INCLUDE_DIRS ${WCSLIB_INCLUDE}) + set(WCSLIB_LIBRARIES ${WCSLIB_LIB} ${M_LIBRARY}) + + set(WCSLIB_INCLUDE ${WCSLIB_INCLUDE}) + set(WCSLIB_LIB ${WCSLIB_LIB} ${M_LIBRARY}) endif(NOT WCSLIB_FOUND) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..f9cb6a8 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,92 @@ +# Contributing + +When contributing to this repository, please first discuss the change you wish to make via issue, +email, or any other method with the owners of this repository before making a change. + +Please note we have a code of conduct, please follow it in all your interactions with the project. + +## Pull Request Process + +1. Ensure any install or build dependencies are removed before the end of the layer when doing a + build. +2. Update the README.md with details of changes to the interface, this includes new environment + variables, exposed ports, useful file locations and container parameters. +3. Increase the version numbers in any examples files and the README.md to the new version that this + Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/). +4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you + do not have permission to do that, you may request the second reviewer to merge it for you. + +## Code of Conduct + +### Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +### Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or +advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +### Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +### Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +### Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at [INSERT EMAIL ADDRESS]. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +### Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ \ No newline at end of file diff --git a/ChangeLog b/ChangeLog index 44b6654..bcba826 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,1973 @@ +commit 24c45b0102e4daf9417e3589b9e3411dd50f4704 +Merge: 8074db9 bd15937 +Author: Sarod Yatawatta <30378342+SarodYatawatta@users.noreply.github.com> +Date: Tue Aug 28 16:44:34 2018 +0200 + + Merge pull request #58 from nlesc-dirac/ci_test + + Continuous Integration + +commit bd15937385f286937dc8d6bf9f316d8a33f0a73b +Author: Faruk D +Date: Tue Aug 28 16:36:26 2018 +0200 + + disable SL test + +commit ed40c6f6c9163aeb55c60eaf1912c13bd144faab +Author: Faruk D +Date: Tue Aug 28 16:27:32 2018 +0200 + + add casacore paths for cmake build on SL + +commit 8074db95cd25be2bdbdd10ecf0eb1023b8741ae3 +Author: Faruk D +Date: Tue Aug 28 16:12:19 2018 +0200 + + add DOI + + closes #14 + +commit 4b2c475f9f2db94910143cb1456a81307d918426 +Author: Faruk D +Date: Tue Aug 28 15:45:47 2018 +0200 + + fix casacore build path + +commit 69ec55d8e2f121732774f1bf9dfaa20eb6f41d6c +Author: Faruk D +Date: Tue Aug 28 15:37:47 2018 +0200 + + cmake is called cmake3 on SL + +commit 8b8cd50f7a79bad3e89ce51ba59d5cb493d93f30 +Author: Faruk D +Date: Tue Aug 28 15:27:15 2018 +0200 + + change cmake version and update instructions + +commit 2c87ae539302d0cd88695aa3e0d68a4362082b18 +Author: Faruk D +Date: Tue Aug 28 15:15:13 2018 +0200 + + disable measurement data and fix path + +commit 67f1bc8385597762560b557d5acbf0d88bcca88d +Author: Faruk D +Date: Tue Aug 28 15:07:45 2018 +0200 + + dsable arch linux + +commit 267141d3848bf9e9ce707b57e178a3041e99253c +Author: Faruk D +Date: Tue Aug 28 15:06:40 2018 +0200 + + add wget to download measurement set + +commit 52adaee7f0710bd2318f4e0196587fd4eaf3180e +Author: Faruk D +Date: Tue Aug 28 14:54:33 2018 +0200 + + add sl compile instructions + +commit 20cbbd8f40d17a72176a67d6c7b409003a6d6160 +Author: Faruk D +Date: Tue Aug 28 14:33:53 2018 +0200 + + fix docker command + +commit 21b37a3aafefcf3f3e1dd5a59eebe786d08fc8f6 +Author: Sarod Yatawatta +Date: Tue Aug 28 11:49:25 2018 +0200 + + chmod +x + +commit af8937d2ecdcf19b05e1ce1f4fe376060894d926 +Author: Sarod Yatawatta +Date: Tue Aug 28 11:48:14 2018 +0200 + + added script to change freq of MS + +commit f5a6a766e6ad914c1cfb2303988681efbc2f425b +Author: Sarod Yatawatta +Date: Tue Aug 28 11:38:40 2018 +0200 + + rho values to match cluster file + +commit 74eb0df36830b967e4c7cedddb2997504e246523 +Author: Sarod Yatawatta +Date: Tue Aug 28 11:37:24 2018 +0200 + + example scripts for MPI version + +commit fa66c95c07db775bd173d06ed275ab916f741f12 +Author: Sarod Yatawatta +Date: Tue Aug 28 11:21:51 2018 +0200 + + fix default values of interpolation + +commit e7a4845f9226c7d94a021dea1ebe0bbd85f5c23b +Merge: ed56640 97a6e83 +Author: Sarod Yatawatta <30378342+SarodYatawatta@users.noreply.github.com> +Date: Tue Aug 28 10:38:05 2018 +0200 + + Merge branch 'master' into dev + +commit ed56640cc848683ad3fc83a1ae9fb0cae07d7b40 +Merge: 7688f98 5d96d86 +Author: Hanno Spreeuw +Date: Tue Aug 28 10:28:55 2018 +0200 + + Merge branch 'dev' of github.com:nlesc-dirac/sagecal into dev + +commit 7688f9804fe8c393fc99c120b454e130d5531aed +Author: Hanno Spreeuw +Date: Tue Aug 28 10:28:04 2018 +0200 + + Now almost the same CXX flags as Makefile and Makefile.gpu: CXXFLAGS=-O3 -Wall -g -std=c++11 + +commit 5d96d86c7c88409af256e48539fdb8164a0249e5 +Author: Sarod Yatawatta +Date: Tue Aug 28 10:14:10 2018 +0200 + + more install updates + +commit e2142b5e902ecf61a495c85330cbb7b095ab7ddc +Merge: 3a218f1 cff31fc +Author: Sarod Yatawatta +Date: Tue Aug 28 10:06:36 2018 +0200 + + Merge branch 'dev' of github.com:nlesc-dirac/sagecal into dev + +commit 3a218f11c48fbf064a9f2bb847aa1ccabf336789 +Author: Sarod Yatawatta +Date: Tue Aug 28 10:04:19 2018 +0200 + + more install updates + +commit cff31fc5778604ac18e1d49cb748e1e9e021a6df +Author: Hanno Spreeuw +Date: Tue Aug 28 09:59:41 2018 +0200 + + Need to comment this out, or it will keep searching for hdf5, without success + +commit 77d0cb4c8da9c6cda2a71132be2c1dcc3774a749 +Author: Sarod Yatawatta +Date: Tue Aug 28 09:48:34 2018 +0200 + + more install instructions + +commit 1a15fbe07e542ed2239a67403951ba3c008112d5 +Author: Sarod Yatawatta +Date: Tue Aug 28 09:43:14 2018 +0200 + + updating install instructions + +commit 2130398fea6977bccefb859f8f6adb5f7ee73b58 +Author: Sarod Yatawatta +Date: Mon Aug 27 23:46:10 2018 +0200 + + install files according to #55 + +commit 97a6e8387f6a5628f0707689055d6393b5f6a16d +Merge: b85b031 475b8b0 +Author: Sarod Yatawatta <30378342+SarodYatawatta@users.noreply.github.com> +Date: Mon Aug 27 23:20:56 2018 +0200 + + Merge pull request #55 from gijzelaerr/install + + add missing install and SO version + +commit 475b8b0f79ec23cd70e2f4f2d7089bc9fa313a7d +Author: Gijs Molenaar +Date: Mon Aug 27 19:32:13 2018 +0200 + + add missing isntall and SO version + +commit deab251c0097e38cdec035bad97635fe54c5f5d3 +Author: Sarod Yatawatta +Date: Mon Aug 27 17:46:06 2018 +0200 + + update version to checkout + +commit 522beb037a7ed55b74690bd9c1db16b82fb5f7ed +Author: Sarod Yatawatta +Date: Mon Aug 27 15:41:57 2018 +0200 + + correct name of input variables + +commit f812fa8b7c70341396b54782ecdbeb41818d594d +Author: Sarod Yatawatta +Date: Mon Aug 27 15:32:19 2018 +0200 + + reorder CXX flags + +commit 788bbdbeca12daf5eba273916c2a8cfc6fc21fb8 +Author: Sarod Yatawatta +Date: Mon Aug 27 15:24:44 2018 +0200 + + casacore has 2 include dirs + +commit 29b3e1f0547bdb3bf8b84e05d0ee9e5673656864 +Author: Sarod Yatawatta +Date: Mon Aug 27 14:56:47 2018 +0200 + + minimum use of CXX options + +commit 33ae6527c9055f630b69d2027f6a3a9e49adb51b +Author: Sarod Yatawatta +Date: Mon Aug 27 13:26:09 2018 +0200 + + add cmake support for buildsky/restore + +commit 03cf4b874fb340375c7d1b53a9562d4eaf96a142 +Author: Sarod Yatawatta +Date: Mon Aug 27 11:30:41 2018 +0200 + + added cmake support for MPI + +commit ac2c2f952db6c6e15bb35cce10e7c8ea4827db9c +Author: Faruk D +Date: Fri Aug 24 15:19:03 2018 +0200 + + fix scientific linux version + +commit 369623d587388776f6a02fa120ed8370b367c9eb +Author: Faruk D +Date: Fri Aug 24 13:32:29 2018 +0200 + + add scientific linux + +commit b85b031b9b522877020dc3759509bde65b17d29f +Merge: 8b09a58 0b072da +Author: Hanno Spreeuw +Date: Wed Aug 1 12:32:10 2018 +0200 + + Merge pull request #53 from nlesc-dirac/dev + + fix issue #52, update LBFGS interface + +commit 0b072da621f8217270c29e5a63048a3a95ac336c +Author: Sarod Yatawatta +Date: Tue Jul 31 11:49:23 2018 +0200 + + fixing issue #52 + +commit 39d3ed8ad3bbb18080d3c40b894415f171c76e3f +Author: Sarod Yatawatta +Date: Mon Jul 30 16:33:46 2018 +0200 + + fix typo + +commit d11e1653fde199b8b831a397feaa1ef4aa2950a2 +Author: Sarod Yatawatta +Date: Mon Jul 30 16:16:03 2018 +0200 + + make sure rho text file exactly matches no. clusters + +commit 84b813da3f0966d96d8cff3aec89f95037f5e575 +Merge: fa1448b 8b09a58 +Author: Sarod Yatawatta +Date: Mon Jul 30 15:30:05 2018 +0200 + + Merge branch 'dev' of github.com:nlesc-dirac/sagecal into dev + +commit fa1448be0197763c4f626f677f435c1e5c2cfd35 +Author: Sarod Yatawatta +Date: Mon Jul 30 15:25:08 2018 +0200 + + cleaning up LBFGS related code, removed duplicates + +commit 8b09a58e0b1f3d395eaf98e28a8d822e96e26024 +Merge: b72644b c366e18 +Author: Sarod Yatawatta <30378342+SarodYatawatta@users.noreply.github.com> +Date: Sat Jun 23 20:20:29 2018 +0200 + + Merge pull request #50 from nlesc-dirac/dev + + Dev + +commit c366e18977275271546baae6860a68df22093986 +Author: Sarod Yatawatta +Date: Tue Jun 19 15:01:10 2018 +0200 + + bug fix + +commit b66c291b8efa186d5804ebcfca3a6d11097a499a +Author: Sarod Yatawatta +Date: Tue Jun 19 14:59:00 2018 +0200 + + missing HAVE_CUDA added + +commit 157eaf84cd4f808cad80c331e836d17b69aa1a7b +Author: Sarod Yatawatta +Date: Tue Jun 19 14:42:03 2018 +0200 + + added function to predict using stored solutions, with GPU accel + +commit 41cf1b3b69981368579b2ccdb5d102184fffdf2b +Author: Sarod Yatawatta +Date: Tue Jun 19 13:19:09 2018 +0200 + + bug fix in reading solutions file + +commit b72644b9728c617eb9b2ec568e9ee2bcfdbc864b +Merge: b38add6 a415926 +Author: Hanno Spreeuw +Date: Wed Jun 13 10:10:13 2018 +0200 + + Merge pull request #49 from nlesc-dirac/dev + + streamlining LBFGS routines + +commit a415926866ae1a0f563a95e192d88115b9d19926 +Author: Sarod Yatawatta +Date: Tue Jun 12 12:47:06 2018 +0200 + + removal of redundant memory copies, stopping when grad norm too low + +commit 67f71e0ac5345d72faf99d8e736ced049b66fcd5 +Author: Sarod Yatawatta +Date: Tue Jun 12 11:31:11 2018 +0200 + + stop when gradient norm is too small + +commit e965dd01191a818d38f5bca88328306f7553ddb1 +Author: Sarod Yatawatta +Date: Tue Jun 12 11:10:43 2018 +0200 + + removal of redundant memory copies + +commit bd69e0044b4106a9dbc1ecb9f604da969ec4150b +Author: Sarod Yatawatta +Date: Tue Jun 12 10:44:10 2018 +0200 + + removed some redundant memory copies + +commit b38add6d20e5439473b587c73c62c5a35c7c0827 +Author: Sarod Yatawatta +Date: Mon May 7 20:35:42 2018 +0200 + + to enable adding antenna table by hand (not using keywords) + +commit be4065a3a215d13dd45074ca1d7ca240358f762e +Author: Hanno Spreeuw +Date: Wed May 2 21:13:07 2018 +0200 + + -pg not appropriate for general purpose + +commit d0a2e251a81c051c4bf93b961af90547d23d24cd +Author: Hanno Spreeuw +Date: Wed May 2 21:10:01 2018 +0200 + + -pg not appropriate, NVML_INC is redundant and link to the latest cuda, i.e. cuda 9.1 + +commit 45730106a1826eca34dc613552e41348f2834ec8 +Author: Hanno Spreeuw +Date: Mon Apr 30 14:58:30 2018 +0200 + + CUDAINC and NVML_INC are redundant + +commit 388aa34148e2195f071feb3023673ce7954e569f +Merge: bbc3863 6a28a02 +Author: Hanno Spreeuw +Date: Mon Apr 30 14:51:39 2018 +0200 + + Merge branch 'master' of github.com:nlesc-dirac/sagecal + +commit bbc3863a29d754e8790b700278acdfebbce337d3 +Author: Hanno Spreeuw +Date: Mon Apr 30 14:51:18 2018 +0200 + + '-std=c++11' is necessary to build Sagecal for casacore/2.4.1-gcc-6.3.0 + +commit 6a28a0211280b4bac88a7513516c926dcc24eac0 +Author: Sarod Yatawatta +Date: Sun Apr 29 17:15:19 2018 +0200 + + check for step size being too small + +commit 54bd95e977dd9b9679fad86812741c8adc9341da +Author: Hanno Spreeuw +Date: Thu Apr 26 17:24:51 2018 +0200 + + casacore/v2.4.1-gcc-6.3.0 gives errors like 'error: range-based ‘for’ loops are not allowed in C++98 mode' and 'error: ISO C++ forbids declaration of ‘c’ with no type [-fpermissive]' + +commit b9610447416721a7ed1c1e6e184a4c005c387f02 +Author: Hanno Spreeuw +Date: Thu Apr 26 17:21:19 2018 +0200 + + Typo: casacore/casacore should be casacore + +commit e3a47a28c3b0b07e5f4809f9a0274c3adc71ca08 +Author: Hanno Spreeuw +Date: Thu Apr 26 17:12:11 2018 +0200 + + Remove redundant whitespace + +commit fc6d275de5119b2c5744da860dbbc2984549a045 +Author: Hanno Spreeuw +Date: Thu Apr 26 17:09:13 2018 +0200 + + '/usr/include/nvidia/gdk/' does not exist, at least not on fs5 and NVML_INC is redundant + +commit 5feb1d2dfda28361f70aa7c319b56ed59f18bc65 +Author: Hanno Spreeuw +Date: Thu Apr 26 17:05:34 2018 +0200 + + '/usr/local/cuda/include' does not exist, at least not on fs5 and CUDAINC is redundant + +commit 02548a6b9f5ee16784b2d56dab85fc87fe17211c +Author: Hanno Spreeuw +Date: Thu Apr 26 17:00:07 2018 +0200 + + NVML_INC is redundant and /usr/include/nvidia/gdk/ does not exist, at least not on fs5. + +commit 28daeab055d505e4dce80ab8139138ccb45edd2a +Author: Hanno Spreeuw +Date: Thu Apr 26 16:52:24 2018 +0200 + + CUDAINC is redundant and '/usr/local/cuda/include' does not exist, at least not on fs5. 'module load cuda91' or some similar adjustment to PATH should suffice. + +commit 020a44ff8746e9680f9cd833f4ff697ba920f92d +Author: Hanno Spreeuw +Date: Thu Apr 26 16:36:43 2018 +0200 + + '-L/usr/lib64/nvidia/' in 'NVML_LIB=-lnvidia-ml -L/usr/lib64/nvidia/' since that directory does not exist, at least not on fs5 + +commit 58204faadb14c0c5cb7c11af741dbc9bb75c6cef +Author: Hanno Spreeuw +Date: Thu Apr 26 16:32:32 2018 +0200 + + remove redundant whitespace + +commit e4f01df6c7ae3336aaa6a5480b8a55ae8c560498 +Author: Hanno Spreeuw +Date: Thu Apr 26 16:21:57 2018 +0200 + + CUDAINC is redundant when cuda in PATH, e.g. after 'module load cuda91' + +commit 9a1cf91902ab5e08b962f34a03b0f121c5f573de +Author: Hanno Spreeuw +Date: Thu Apr 26 16:09:03 2018 +0200 + + Adjusted Makefile for latest casacore on fs5: casacore/v2.4.1-gcc-6.3.0 + +commit e3c5a9aff520cb26509f4a0b7547bf1aceee5e4b +Author: Hanno Spreeuw +Date: Thu Apr 26 16:06:07 2018 +0200 + + Adjusted Makefile.gpu for latest casacore on fs5: casacore/v2.4.1-gcc-6.3.0 + +commit 69a9034d9d52a0886e1dbeddc50c11d06eed524b +Author: Hanno Spreeuw +Date: Thu Apr 26 15:58:54 2018 +0200 + + This fixes 'cannot find -lnvidia-ml' together with the '-lcuda -lcudart' from the previous commit + +commit c8a1413a4f177c19504d882daadb728931302b45 +Author: Sarod Yatawatta +Date: Tue Apr 24 09:34:08 2018 +0200 + + added -lcuda -lcudart + +commit c3b1daaff26896db15fe310a50f2094bbd9ebbb0 +Author: Hanno Spreeuw +Date: Mon Apr 23 16:55:01 2018 +0200 + + make clean tries to delete non-existing files. + +commit a9d05232f351d056be3e404dc1ee25a03d1e43ec +Author: Hanno Spreeuw +Date: Wed Apr 18 10:10:33 2018 +0200 + + libsagecal.a should be libradio.a + +commit 19e0b8a7aa981cf95f7b40a08d4684dda1737f0f +Author: Faruk D +Date: Wed Apr 4 18:17:19 2018 +0200 + + create separate build folders for each test + +commit b771e7ef171fc91d577fbef3a7962efb176338a1 +Author: Faruk D +Date: Wed Apr 4 18:02:49 2018 +0200 + + add archlinux build test + +commit 71d281d517507cbe91df3b4efa0dc6bc096d50be +Author: Faruk D +Date: Wed Apr 4 17:49:54 2018 +0200 + + cleanup travis configuration + +commit 1991c7924b7ee2c2ad7fd99de51c6fa517dacb29 +Author: Faruk D +Date: Wed Apr 4 17:46:35 2018 +0200 + + organize build scripts + +commit f1c67fa93528a4ea9d4fd0a7b99848e271c738c6 +Author: Sarod Yatawatta +Date: Wed Apr 4 16:28:42 2018 +0200 + + info about using more than 1 GPU + +commit db185474699aca0bc752787f301925f0205ee08c +Author: Sarod Yatawatta +Date: Wed Apr 4 13:52:39 2018 +0200 + + update documentation + +commit 25b10100baec0dfcd1215feda9b793cb6cfd14fc +Author: Sarod Yatawatta +Date: Tue Apr 3 13:29:34 2018 +0200 + + fix isse #48 + +commit c22c981dc577fa87e5bc39df5fd71f783e1b8d18 +Author: Sarod Yatawatta +Date: Wed Mar 28 14:14:57 2018 +0200 + + orcid should be just the id + +commit 78bcfe114e1ae3901e8f8a7d8852ce09d13284d4 +Author: Sarod Yatawatta +Date: Wed Mar 28 14:07:35 2018 +0200 + + added citation, some fixes to makefile + +commit eee948f2c6dd62b279a5c58452e6b5b98fec3534 +Author: Hanno Spreeuw +Date: Thu Mar 22 16:54:26 2018 +0100 + + Now authors of articles that were based on Sagecal should know how to refer to it + +commit 1c1d60606fb81e8af70de5222a046db549e5234c +Merge: 3f25c79 0dbab64 +Author: SarodYatawatta <30378342+SarodYatawatta@users.noreply.github.com> +Date: Tue Mar 13 12:10:51 2018 +0100 + + Merge pull request #47 from tammojan/casacore2 + + Update namespace and include path for casacore >= 2.0 + +commit 0dbab64b3d170c6af97a3592967e2e1cfacf3ba6 +Author: Tammo Jan Dijkema +Date: Tue Mar 13 10:08:15 2018 +0100 + + Update namespace and include path for casacore >= 2.0 + +commit 3f25c7987bba3f3a097165a426c8b3b5f0a6ebfa +Merge: ec010be 4f0bf0d +Author: SarodYatawatta <30378342+SarodYatawatta@users.noreply.github.com> +Date: Mon Mar 12 22:07:34 2018 +0100 + + Merge pull request #45 from tammojan/openblas_root + + Make OpenBLAS_ROOT_DIR configurable + +commit 4f0bf0de1a22aacb4d0f30d3a5498f04b73ccb6c +Author: Tammo Jan Dijkema +Date: Mon Mar 12 09:28:45 2018 +0100 + + Make OpenBLAS_ROOT_DIR configurable + +commit ec010be541feb0eadf51f06a3972872eda57c671 +Author: Faruk D +Date: Thu Mar 1 20:19:31 2018 +0100 + + add dev branch build status + +commit 3b531e3b581eed76ac844c9e9405af1d3dba25cb +Author: Faruk D +Date: Thu Mar 1 18:21:34 2018 +0100 + + add travis badge + +commit 7af750c1f59eb5f1d6859be2e2f2f53ccf4742c8 +Merge: 7b78914 cb352fa +Author: Faruk D +Date: Thu Mar 1 18:12:08 2018 +0100 + + Merge pull request #44 from nlesc-dirac/ci_test + + Add Travis-CI + +commit 8ff8379a4661fb4e5c104df892f8dc0b0d4c340f +Author: Faruk D +Date: Thu Mar 1 18:07:59 2018 +0100 + + fix invisible character in test script + +commit cb352fad9aa0f73d80d93921316e43d92a5d3f86 +Author: Faruk D +Date: Thu Mar 1 17:59:49 2018 +0100 + + clean up environment variables + +commit eee31e82c060aaff378751f28cbeb401dcd7e178 +Author: Faruk D +Date: Thu Mar 1 17:53:41 2018 +0100 + + add container name + +commit bf1596025c13be38707013e8bcff423d23d8e9e8 +Author: Faruk D +Date: Thu Mar 1 17:50:01 2018 +0100 + + add script to test ubuntu builds + +commit f396810f31c971da4d70ea9aefce36768f498412 +Author: Faruk D +Date: Thu Mar 1 17:11:50 2018 +0100 + + fix permission problems while clonning + +commit 12f99dc62d395c4825a2e2e2312dfe61b9d0eb00 +Author: Faruk D +Date: Thu Mar 1 17:03:53 2018 +0100 + + fix environment argument + +commit 52afdf1cbd46ce8974d7880acf6414214882a496 +Author: Faruk D +Date: Thu Mar 1 16:58:01 2018 +0100 + + set environment variable with docker exec + +commit 91efc062aea6cee4347b70c3119740548af2288b +Author: Faruk D +Date: Thu Mar 1 16:50:38 2018 +0100 + + add smart branch detection and setup environment variable + +commit 5724879d56c2d17fc9794a02c539bd32572b636a +Author: Faruk D +Date: Thu Mar 1 16:43:31 2018 +0100 + + change the build branch and update cache before installing the packages + +commit 8024b9217fd4c75d1956128260179fc49cda47c2 +Author: Faruk D +Date: Thu Mar 1 16:38:28 2018 +0100 + + update the package repos before installing the kern packages + +commit f010fdaa6b618eba91f5cc74f5dac2871028b8da +Author: Faruk D +Date: Thu Mar 1 16:32:40 2018 +0100 + + add kern repository + +commit 9eb949070422303b1c110cca17d2d25892db0fe2 +Author: Faruk D +Date: Thu Mar 1 16:28:12 2018 +0100 + + fix the yaml file + +commit c538b281dab6296b3e8b9ac7a997bd8039e6bf18 +Author: Faruk D +Date: Thu Mar 1 16:19:45 2018 +0100 + + add travis configuration to use docker + +commit 7b789147fe58d0c27679b24d1dc29e47e48661fc +Author: Faruk D +Date: Thu Mar 1 15:06:55 2018 +0100 + + disable hdf5 module because it breaks the build + +commit b4f101e0d6a6a9cd71075202924f3340704bce83 +Merge: 22f89ae 1088583 +Author: Faruk D +Date: Wed Feb 28 15:49:20 2018 +0100 + + Merge pull request #41 from nlesc-dirac/sprint + + Sprint changes + +commit 22f89ae6d5446bb616623f30bf0244ecb811d3b7 +Merge: 1f139b2 f4ea65f +Author: Faruk D +Date: Wed Feb 28 15:46:59 2018 +0100 + + Merge pull request #40 from nlesc-dirac/sprint_cmake + + Cmake Support + +commit f4ea65ff815959d91b166414fbfdaae7fb4a5e3b +Author: Faruk D +Date: Wed Feb 28 15:43:32 2018 +0100 + + added -g option to build flags + +commit 6c9e7f4c20c903bc3f24e9891d5e7e79ce3c6978 +Author: Faruk D +Date: Wed Feb 28 14:51:29 2018 +0100 + + update build flags + +commit 1088583a21e6f91377fdfc6a4a5b382a70803d73 +Merge: 005e68d 4bf20e7 +Author: Hanno Spreeuw +Date: Wed Feb 28 14:38:46 2018 +0100 + + Merge pull request #27 from nlesc-dirac/sprint_clang + + Sprint clang + +commit 8df6355697ee34babf5d18ecd63c92d87db76967 +Author: Faruk D +Date: Wed Feb 28 14:16:36 2018 +0100 + + add hdf5 checks and libraries + +commit 06aa95abe0d2a677fdd690548a6b095383a7c666 +Author: Faruk D +Date: Wed Feb 28 12:05:39 2018 +0100 + + update the instructions as suggested by @SarodYatawatta + +commit 68475f9b910c488179888e06215d13c099f1fa64 +Author: Faruk D +Date: Wed Feb 28 11:39:30 2018 +0100 + + add instructions for other distros and temporarily comment out old installation instructions + +commit 2a4a93f953bf0047ed5564367e0089942a1b24f2 +Author: Faruk D +Date: Wed Feb 28 11:20:06 2018 +0100 + + update the package list for Ubuntu + +commit 505334573635f4c5986c11ee9f9c86dd7b5b03ba +Author: Faruk D +Date: Wed Feb 28 10:57:50 2018 +0100 + + add OpenBLAS status message and disable gfortran status + +commit 4bf20e77d14a61291f4dfa10c862b4986f5693ec +Author: Sarod Yatawatta +Date: Wed Feb 28 10:52:57 2018 +0100 + + added cookbook link + +commit cf6d21978f83befabfb545299c3e9fee1e6e4632 +Author: Faruk D +Date: Wed Feb 28 10:50:50 2018 +0100 + + fix Openblas library path + +commit e5cb15316ba8937f209e9fd46fd57ed6296f2b78 +Author: Faruk D +Date: Wed Feb 28 10:38:29 2018 +0100 + + upadate the instructions to give an example about optional casacore path + +commit 8153a944e36bf5054d0b46f19767e0d9275c727f +Author: Faruk D +Date: Wed Feb 28 10:32:46 2018 +0100 + + add make command to instructions + +commit 6209d8fb6d4eb0c62ed46a6ffaeb609127809d15 +Author: Faruk D +Date: Wed Feb 28 10:30:29 2018 +0100 + + add custom path for OpenBLAS + +commit 909c2024acf88a39378f0dfcc550c408ee999419 +Author: Faruk D +Date: Wed Feb 28 10:27:08 2018 +0100 + + added ubuntu version + +commit 218625303507b08c2294240a0c2c80607f379ca9 +Author: Faruk D +Date: Wed Feb 28 10:14:58 2018 +0100 + + add instructions for KERN repo + +commit ffd0adeb0489e2b34b5373fc7cfd743413082636 +Author: Faruk D +Date: Wed Feb 28 10:12:02 2018 +0100 + + upadate ubuntu instructions + +commit 578470f07d9f5b8af40674d47669c932ce6ff512 +Author: Sarod Yatawatta +Date: Wed Feb 28 10:02:27 2018 +0100 + + fixed wrong size of memory allocation + +commit 20298cbfcc891db9eefd0ed3285b1f557d1a3f7d +Author: Faruk D +Date: Wed Feb 28 10:00:24 2018 +0100 + + upadete the instructions for ubuntu + +commit c6636f15101cb6b63e276f40bc9b1316b47b4860 +Author: Faruk D +Date: Tue Feb 27 18:09:50 2018 +0100 + + fix issues for Ubuntu and add preliminary instructions to install + +commit 900f8bf9a16bcb0dfb096b3c96a79088881f850e +Author: Faruk D +Date: Tue Feb 27 17:04:58 2018 +0100 + + add cmake_binary_dir variable to fix folder issues during configuration + +commit d73bb464adc10967ff92b6716ec28136bc16b03c +Author: Faruk D +Date: Tue Feb 27 16:43:09 2018 +0100 + + solves dist folder issues for the build + +commit 64fc5e833435b5ef2eb0b37598e970607929da6a +Author: Faruk D +Date: Tue Feb 27 16:34:47 2018 +0100 + + add rtr_solve_robust to dirac library + +commit 068cf2322cd1ddc06026cb90a4cbbdcb8532776c +Author: Sarod Yatawatta +Date: Tue Feb 27 16:15:23 2018 +0100 + + check int range + +commit dd094c317d7a045bbab16e09da03e4cc00731320 +Author: Sarod Yatawatta +Date: Tue Feb 27 16:09:22 2018 +0100 + + fix invalid cases + +commit 7fb1a1b10adad10ce55807620ec7e2b21a12492e +Author: Faruk D +Date: Tue Feb 27 15:58:41 2018 +0100 + + define cxx flags before the status message + +commit e657c4769a5ce3a90169e53f74f32d102f02e37c +Author: Faruk D +Date: Tue Feb 27 15:56:54 2018 +0100 + + fixes casacore include path on das5 + +commit c660eb70e7548cb814a2fe4e3f438995eae7e893 +Author: Faruk D +Date: Tue Feb 27 15:51:48 2018 +0100 + + add casacore root dir status message + +commit a2bfb8468033600d25a97e9a04ed910bb3f6b5bd +Author: Faruk D +Date: Tue Feb 27 15:46:12 2018 +0100 + + add environment variable check to find casacore + +commit 7d7b844c655a7467829b2cb7775dc211b563f4ec +Author: Sarod Yatawatta +Date: Tue Feb 27 15:31:56 2018 +0100 + + clarify array access in fitsio + +commit d291d4402915eb04a49b522cfee1be739056cd09 +Author: Sarod Yatawatta +Date: Tue Feb 27 15:12:13 2018 +0100 + + fixed missing free (pinv) + +commit c42e08e4480541abe24025d361f3faeba52311a9 +Merge: 088f2d0 40252cd +Author: Sarod Yatawatta +Date: Tue Feb 27 14:40:47 2018 +0100 + + Merge branch 'sprint_clang' of github.com:nlesc-dirac/sagecal into sprint_clang + +commit 088f2d0fd0ba0da157df1ad810aa166c6f9e7ac6 +Author: Sarod Yatawatta +Date: Tue Feb 27 14:38:57 2018 +0100 + + fix (double) allocation instead of (int) + +commit 005e68d20ef6663ec17b45594981f17599e03add +Merge: 40252cd aeb97a3 +Author: Hanno Spreeuw +Date: Tue Feb 27 12:11:25 2018 +0100 + + Merge pull request #23 from nlesc-dirac/sprint_cppcheck + + Sprint cppcheck + +commit aeb97a3900ffe28f95058e60f701ade69a1359e8 +Merge: 9207c91 d779d2a +Author: Sarod Yatawatta +Date: Tue Feb 27 11:54:50 2018 +0100 + + Merge branch 'sprint_cppcheck' of github.com:nlesc-dirac/sagecal into sprint_cppcheck + +commit 9207c91d37e99e4a25b28735ea445aa22fab21e7 +Author: Sarod Yatawatta +Date: Tue Feb 27 11:54:16 2018 +0100 + + more fixes + +commit 40d9e8a6f171c81a0ba095fe8d083c83ca66a181 +Author: Faruk D +Date: Tue Feb 27 11:42:00 2018 +0100 + + remove found messages. they are managed by cmake modules + +commit 35fa294fb59f5283a905e6c34159b8691f460350 +Author: Faruk D +Date: Tue Feb 27 11:35:49 2018 +0100 + + remove openblas status message + +commit d779d2a208dd41237560ec4c6bc14c28e6bbe86b +Merge: 26436e0 05a007d +Author: Hanno Spreeuw +Date: Tue Feb 27 11:16:37 2018 +0100 + + Merge branch 'sprint_cppcheck' of github.com:nlesc-dirac/sagecal into sprint_cppcheck + I am confused, but it seems there is a duplication of the branch + sprint_cppcheck. I do not understand how this came about. + +commit 26436e09f39c82836c33a0cc7298ddf4155743c5 +Author: Hanno Spreeuw +Date: Tue Feb 27 11:10:45 2018 +0100 + + I erroneously branched sprint_cppcheck from master instead of sprint, trying to fix that now by committing this README from the sprint_readme to sprint_cppcheck + +commit 53036ff783df1dccaad9a1bf80e1d17f943466b8 +Author: Faruk D +Date: Tue Feb 27 11:07:12 2018 +0100 + + remove OpenBLAS option. It will be enabled by default. + +commit 3be39951783fd6abc6f73af16f8867c174f6b000 +Author: Faruk D +Date: Tue Feb 27 11:06:09 2018 +0100 + + upgrade the cmake version + +commit 872450ce3e20f50ff98c0aba6e42d87db25e9f5c +Author: Faruk D +Date: Tue Feb 27 11:04:04 2018 +0100 + + add wcslib info + +commit 05a007d619c304ee07b24a18cd42f1c009bb5f4d +Author: Sarod Yatawatta +Date: Tue Feb 27 07:13:00 2018 +0100 + + more cppcheck fixes + +commit 790827e10416d7ec94ba9debd651e9450679178f +Author: Sarod Yatawatta +Date: Tue Feb 27 06:57:15 2018 +0100 + + fix cppcheck warnings + +commit 6abb1de3dc9085c9ee1131cafa97bf4d37ad8a97 +Author: Sarod Yatawatta +Date: Tue Feb 27 06:48:36 2018 +0100 + + fix cppcheck warnings + +commit bfae096be4c6fdf39bf16ae6af91d7eb33629404 +Author: Sarod Yatawatta +Date: Tue Feb 27 06:40:34 2018 +0100 + + fix memory leak + +commit 70aecbf75a143d06d872554b826d4a0c769806d7 +Author: Sarod Yatawatta +Date: Tue Feb 27 06:38:47 2018 +0100 + + more cppcheck fix + +commit e891ccd77d0932b5e31d525fe9f8461fd74e0c38 +Author: Sarod Yatawatta +Date: Tue Feb 27 06:27:54 2018 +0100 + + fix cppcheck warning + +commit 9e6efce6fe997f8f02dfd1ad82578810683cb071 +Author: Faruk D +Date: Mon Feb 26 18:14:58 2018 +0100 + + add option for openblas + -disable gfortranlibs + - update status info + - add submodules + +commit aac063ff625dcde8804c33237aa1aa4792e3c639 +Author: Faruk D +Date: Mon Feb 26 18:13:24 2018 +0100 + + add cmake file to find openblas + +commit 156be9a87a292927afea2c0df2ddcc6fc7ee7d79 +Author: Faruk D +Date: Mon Feb 26 18:12:59 2018 +0100 + + add sub cmake files + +commit 40252cd8cfc7959065d9cc70b4f2d8af61612880 +Merge: 1f139b2 e30be0b +Author: Hanno Spreeuw +Date: Mon Feb 26 16:12:07 2018 +0100 + + Merge pull request #21 from nlesc-dirac/sprint_readme + + Sprint readme + +commit e30be0b3568cdaef23f0f58a7e7cfa12a3290666 +Author: Hanno Spreeuw +Date: Mon Feb 26 16:04:10 2018 +0100 + + Some extra spaces + +commit 0afd92f34a745887ae388071ee8cdcc4f4cc6b1c +Author: Faruk D +Date: Mon Feb 26 15:22:26 2018 +0100 + + added cmake master + +commit 37740d503ea42e8a5d7171ba95929d0af36324a2 +Author: Sarod Yatawatta +Date: Mon Feb 26 15:10:50 2018 +0100 + + change math to verbatim + +commit 4629ad55870ba45db3f366fa604f96c59f291283 +Author: Sarod Yatawatta +Date: Mon Feb 26 14:44:13 2018 +0100 + + better section headers + +commit de86243558cdc454ba511ae9d617a23edf0e4a73 +Author: Sarod Yatawatta +Date: Mon Feb 26 14:28:01 2018 +0100 + + more syntax + +commit 7317228fc575a57e760c90e7a9cacae5e2c3e22d +Author: Sarod Yatawatta +Date: Mon Feb 26 14:19:04 2018 +0100 + + feature list update + +commit 2761fae0b3a71e54a60eaf5a1424d1d7017b5074 +Author: Hanno Spreeuw +Date: Mon Feb 26 11:57:53 2018 +0100 + + Old layout is better + +commit d3a46d0906ba7bd051c216a0aa1cb7a7ea3fd16b +Author: Hanno Spreeuw +Date: Mon Feb 26 11:55:47 2018 +0100 + + Layout slightly better + +commit d5aeed715c7bb26ca5acd401383b13e67db224fe +Author: Hanno Spreeuw +Date: Mon Feb 26 11:51:56 2018 +0100 + + Added a list of Sagecal features + +commit 62bbf236a1aae84b8833e215fd89d66b47b41863 +Author: Faruk D +Date: Mon Feb 26 11:19:41 2018 +0100 + + add intellij to gitignore + +commit 1f139b2c77f0a10abfdcd64a739f2d427fbf0989 +Merge: d0c9adf 3d98cf2 +Author: Hanno Spreeuw +Date: Fri Feb 9 15:13:53 2018 +0100 + + Merge pull request #18 from nlesc-dirac/sarod + + Sarod + +commit 3d98cf2d8f1e673265502f126e60eaf5666c397c +Author: Sarod Yatawatta +Date: Thu Feb 8 11:00:11 2018 +0100 + + moved function protos used by both Radio/Dirac to Common.h + +commit 2a76d353d3565bcbfbb79cdc04f5956152fc8a6b +Author: Sarod Yatawatta +Date: Wed Feb 7 15:00:39 2018 +0100 + + update casacore + +commit a7fa23093210c1406290a1cf3b35ffed5aa2c440 +Author: Sarod Yatawatta +Date: Wed Feb 7 14:08:26 2018 +0100 + + more build fixes + +commit 281061e57a55a7c4169ea99350d73bd432b4dac8 +Author: Sarod Yatawatta +Date: Wed Feb 7 14:04:20 2018 +0100 + + added mdl.o to build + +commit 237a5f09a1b8b7ea5e070a2c38e9749b986a1178 +Author: Sarod Yatawatta +Date: Wed Feb 7 13:39:44 2018 +0100 + + disable obsolete diagnostic routine + +commit d6ee3966b943739d8831ee0ee2d3a7ada06b3a7f +Author: Sarod Yatawatta +Date: Wed Feb 7 13:34:18 2018 +0100 + + fixed compile issues for both CPU/GPU versions + +commit a7464acc2d1886e9fd76eab9c9a56abb80b4eba7 +Author: Sarod Yatawatta +Date: Wed Feb 7 12:29:57 2018 +0100 + + include both headers + +commit c283e024aabaececd7c2ca476c49daaa214c114e +Author: Sarod Yatawatta +Date: Wed Feb 7 12:28:55 2018 +0100 + + fixed headers so not to be included more than once + +commit 364e6174f16ecf8939c0c97b1070fd501aa362ea +Author: Sarod Yatawatta +Date: Wed Feb 7 12:00:48 2018 +0100 + + add header Dirac.h + +commit c2c9460869efdc565dfac86c9f52c13cea5b7d8b +Author: Sarod Yatawatta +Date: Wed Feb 7 12:00:25 2018 +0100 + + default compile options + +commit ba113410c9c584aa60669f405fb7b3f2c1f409f0 +Author: Sarod Yatawatta +Date: Wed Feb 7 11:35:14 2018 +0100 + + use absolute paths + +commit a8c04b5953bba8bba61979699236456866a36ba7 +Author: Sarod Yatawatta +Date: Wed Feb 7 11:33:24 2018 +0100 + + update sagecal-mpi code + +commit 295e6f9c4b1bed1b3211e78e28fb6670bab20239 +Author: Sarod Yatawatta +Date: Wed Feb 7 10:55:51 2018 +0100 + + update + +commit 3a95d1012bb556c36f523ae329dc5a18644b3e82 +Author: Sarod Yatawatta +Date: Wed Feb 7 10:41:03 2018 +0100 + + update + +commit c0c5424ccd8a8d772792185d1e43579518dfa363 +Author: Sarod Yatawatta +Date: Wed Feb 7 10:36:47 2018 +0100 + + update + +commit 610e7b731f06489f4f449ee8627753c3166eca5e +Author: Sarod Yatawatta +Date: Wed Feb 7 10:30:13 2018 +0100 + + blocks=2*(..)/threads changed to blocks=(..)/threads + +commit 59475a759103760b48e71b9f361152d8ff28c9b0 +Author: Sarod Yatawatta +Date: Tue Feb 6 21:27:25 2018 +0100 + + update manifold average without randomization + +commit a96d481b8b23d885075a41c4ad269b56b618d9ab +Author: Sarod Yatawatta +Date: Tue Feb 6 21:22:34 2018 +0100 + + original blocks=2*(..)/threads, reverting to blocks=(..)/threads + +commit 35749607912df1815e224b1749e099aefac2667d +Author: Sarod Yatawatta +Date: Tue Feb 6 21:19:24 2018 +0100 + + updates to include mdl.c + +commit ce34d7c8577fdb4ad0443100d31a70a494c62fac +Author: Sarod Yatawatta +Date: Tue Feb 6 21:10:37 2018 +0100 + + origial blocks=2*(..)/threads, reverting to blocks=(..)/threads + +commit 1c2cfa3f7bcc24d4d24270c06064d934974ff3d5 +Author: Sarod Yatawatta +Date: Tue Feb 6 21:08:03 2018 +0100 + + original blocks=2*(..)/threads reverting to blocks=(..)/threads + +commit 829b7ea072aecec1786ad68c33d93f45e26e05d2 +Author: Sarod Yatawatta +Date: Tue Feb 6 14:38:45 2018 +0100 + + more syntax + +commit d0c9adf8c01379daab510602a52ff0c5ab232a98 +Author: Sarod Yatawatta +Date: Tue Feb 6 13:52:54 2018 +0100 + + more formatting + +commit a7c4dfd519cf8d81af8cd7b1b83efaf4cab27c11 +Author: Sarod Yatawatta +Date: Tue Feb 6 13:41:55 2018 +0100 + + more updates + +commit 6d430cb1d16f0daf8001dbf2f48b3c054a391961 +Author: Sarod Yatawatta +Date: Tue Feb 6 13:41:00 2018 +0100 + + update + +commit 728b1470a4e266ca32caaee40b952a6b8f1651bb +Author: Sarod Yatawatta +Date: Tue Feb 6 13:38:42 2018 +0100 + + clear docu sections + +commit 2d8ff507a81cc75c77ca4af8727d6cbe32c6bdcb +Author: Sarod Yatawatta +Date: Tue Feb 6 13:31:53 2018 +0100 + + removed diagnostic routines that are not used anymore + +commit 6330095ca2988727431e13be13ccc38a3039fe3a +Author: Sarod Yatawatta +Date: Tue Feb 6 12:28:54 2018 +0100 + + more fixes + +commit 9110379d6a3b432f3e854b0e853ae1901975bdfc +Merge: 97f9b51 538abbe +Author: Sarod Yatawatta +Date: Tue Feb 6 10:59:45 2018 +0100 + + Merge branch 'master' into sourceforge + +commit 97f9b51ba3e52126278a737f7fddd81f7f0662c6 +Author: Hanno Spreeuw +Date: Wed Jan 31 16:00:40 2018 +0100 + + We do not need this symlink any longer + +commit e9be8d2090edf0e2155e9e902eb44e6f8fac78df +Author: Hanno Spreeuw +Date: Wed Jan 31 15:00:19 2018 +0100 + + Only removing object files seems more appropriate + +commit 538abbe6c1172c4205fd553ae7b9914dd0445f79 +Merge: ec9c174 33496b4 +Author: Hanno Spreeuw +Date: Wed Jan 31 14:19:28 2018 +0100 + + Merge branch 'master' of github.com:nlesc-dirac/sagecal + +commit ec9c174211f436398afdb0f3b1292199f21acb96 +Author: Hanno Spreeuw +Date: Wed Jan 31 14:18:55 2018 +0100 + + Cannot remember the motivation for this change + +commit e8f3fefec16799a27162de5d5ca44b8e5de5213c +Author: Hanno Spreeuw +Date: Mon Jan 22 17:12:01 2018 +0100 + + Make make clean not only remove the object files, but also the library. + +commit 3cc6bc600cba44bfb109753264f55c4f5184ed8f +Author: Hanno Spreeuw +Date: Mon Jan 22 17:07:58 2018 +0100 + + make clean seemed to look for some unnecessary files + +commit cb28b445aec81114a625e79c7299f54bb49178f4 +Author: Hanno Spreeuw +Date: Mon Jan 22 17:02:47 2018 +0100 + + Copied the Makefiles from the master branch + +commit 6145b8013047b80241316f10dbd0d9925dec36d9 +Author: Hanno Spreeuw +Date: Mon Jan 22 16:59:24 2018 +0100 + + sagecal.h no longer used + +commit cf1d0534d01bc04e687468a596888ff118d3f80a +Author: Hanno Spreeuw +Date: Mon Jan 22 16:35:25 2018 +0100 + + sagecal.h replaced by Radio.h, Dirac.h and Common.h + +commit 33496b49d9871d2c3e7a36e68a11e5d9914e3fd9 +Author: Hanno Spreeuw +Date: Wed Jan 17 15:41:19 2018 +0100 + + Updated Makefiles to accommodate for openblas module change on fs5, thanks to Tammo Jan Dijkema + +commit 31e7de39c50d418ffce99f7d82ea10bdbf322e43 +Author: Hanno Spreeuw +Date: Wed Jan 17 15:39:38 2018 +0100 + + Updated Makefiles to accommodate for openblas module change on fs5, thanks to Tammo Jan Dijkema + +commit 2cafbeff7e406aee5f9a6191a948ec8753279155 +Author: Hanno Spreeuw +Date: Wed Jan 17 15:36:44 2018 +0100 + + Updated Makefiles to accommodate for openblas module change on fs5, thanks to Tammo Jan Dijkema + +commit ac577e84f1825591653af1246e4dc4d156af3f05 +Author: Hanno Spreeuw +Date: Thu Jan 11 17:26:41 2018 +0100 + + Output of make will be libradio.a instead of libsagecal.a + +commit 3a0e9d023f1e46f3e1110a7e7a2f9eb9520f9386 +Author: Hanno Spreeuw +Date: Thu Jan 11 17:07:25 2018 +0100 + + Seems that the Makefile.gpu for Radio was erroneously used in Dirac + +commit c39892da33eacfded6b9fffe4bfb612fbf1de8fe +Author: Hanno Spreeuw +Date: Thu Jan 11 17:06:18 2018 +0100 + + Added make clean option + +commit 8b747591ae72f1d22c87c7fa8a0b8f3635ec6f84 +Author: Hanno Spreeuw +Date: Thu Jan 11 17:03:24 2018 +0100 + + Added option to make clean + +commit 077bc65763d1eae8598a99a1281fe2f500f69fe0 +Author: Hanno Spreeuw +Date: Thu Jan 11 17:02:14 2018 +0100 + + Adjusted Radio.h to accommodate changes in sagecal.h between March and December 2017 on sourceforge + +commit 8ecaa4bd472e4172fc92d66f8a735092e0cd220d +Author: Hanno Spreeuw +Date: Thu Jan 11 17:01:14 2018 +0100 + + Adjusted Dirac.h to accommodate changes in sagecal.h between March and December 2017 on sourceforge + +commit 24ddfc048144b49e8256277cb562a6348dd4db11 +Author: Hanno Spreeuw +Date: Thu Jan 11 16:59:54 2018 +0100 + + Adjusted Common.h to accommodate changes in sagecal.h between March and December 2017 on sourceforge + +commit 556a00e7c2141a56d244c2030e8b7c9714d13b70 +Author: Hanno Spreeuw +Date: Thu Jan 11 16:56:31 2018 +0100 + + Inserting sources for a sky model near the NCP instead of near 3C196, which is more appropriate for the particular MS we are loading for profiling purposes + +commit a652935351b5acf7a12c3bc2ce07a768086c8173 +Author: Hanno Spreeuw +Date: Thu Jan 11 16:51:10 2018 +0100 + + module load openblas no longer possible on fs5. Adjusted Makefile to try to fix this. Tammo Jan Dijkema may also have fixed albeit in a different manner, see his email from January 9th, 2018. + +commit de385db778c0a510737f004cd33e803f66eb5546 +Author: Hanno Spreeuw +Date: Thu Jan 11 16:45:48 2018 +0100 + + Switched to Python 3 + +commit 233b8d52ab5e7725ce7c75eb6df0d2f9d6224165 +Merge: c41055d b9f164b +Author: Hanno Spreeuw +Date: Thu Jan 11 11:56:38 2018 +0100 + + Merge pull request #16 from tammojan/fixtesttypes + + Fix types of spectral index, RM and extent in test + +commit b9f164b93c43340682adc3d1bdab02c9b7ab64e9 +Author: Tammo Jan Dijkema +Date: Wed Jan 10 13:28:35 2018 +0100 + + Fix types of spectral index, RM and extent in test + +commit 3e842bae739d417c3843722161dd57e5e90814dc +Author: Hanno Spreeuw +Date: Fri Dec 22 17:18:55 2017 +0100 + + Source files were distributed among Dirac and Radio. Makefiles, Radio.h, Common.h and dirac.h from were copied from cleancode branch. The sagecal.h string was replaced by either Radio.h or Dirac.h in the source files. #define SIMUL_ONLY 1, #define SIMUL_ADD 2 and #define SIMUL_SUB 3 were added to Common.h. The three header files should be also include other updates from sagecal.h. In the end, the top level lib directory should contain no files. + +commit 9185df3d4cf88b3cc61486f1d8d85abd51b60c24 +Author: Hanno Spreeuw +Date: Fri Dec 22 17:02:39 2017 +0100 + + We don't need CUDAINC, so I removed it + +commit 01c3dabc259e8fc88bc59d8a9f6ec87659c733fc +Author: Hanno Spreeuw +Date: Wed Dec 20 17:13:29 2017 +0100 + + Makefiles adjusted to enable builds on DAS5 + +commit c41055dc1d178884a020ff1e4377619fba4a41ae +Merge: ab2b1d6 b5dab6c +Author: Hanno Spreeuw +Date: Thu Dec 7 09:44:47 2017 +0100 + + Merge pull request #15 from nlesc-dirac/cleancode + + Cleancode + +commit b5dab6c1c9d2bcd78047185c1181a8b457eecb3b +Merge: ba4025a ab2b1d6 +Author: Hanno Spreeuw +Date: Thu Dec 7 09:42:55 2017 +0100 + + Merge branch 'master' into cleancode + +commit 4a9ec04c3a23e1a93fe25dba8614f060815a2f93 +Author: Sarod Yatawatta +Date: Tue Nov 28 08:57:23 2017 +0100 + + added info on -E option + +commit 545588bcc09ebad7e6f00fc176bc2960120ddc1e +Author: Sarod Yatawatta +Date: Mon Nov 27 20:30:39 2017 +0100 + + bug fix + +commit 15ec822ec435f8e8bb18d4d6113cbc48fee4bab8 +Author: Sarod Yatawatta +Date: Tue Nov 21 21:48:28 2017 +0100 + + bug fix + +commit b24279190c42636f4176314fdde165d7f327232d +Author: Sarod Yatawatta +Date: Tue Nov 21 16:19:50 2017 +0100 + + added correction of residual data using GPU + +commit 028ac53347d133e7b41af50701a0518ec448e719 +Author: Sarod Yatawatta +Date: Mon Nov 20 12:36:17 2017 +0100 + + added model prediction and residual calculation using GPU + +commit ab2b1d66f8514e5e618511a2ca3aef23e26a6263 +Author: Faruk D +Date: Thu Nov 16 16:13:07 2017 +0100 + + Update INSTALL.md + +commit 24abfc6b6c84c7541390d35b9a1a6cc3ff2ecf93 +Author: Faruk D +Date: Thu Nov 16 16:10:57 2017 +0100 + + Update and rename INSTALL to INSTALL.md + +commit a98d6893f73f34fc98aa9703ceb3593730336eec +Author: Faruk D +Date: Thu Nov 16 16:10:31 2017 +0100 + + Update README.md + +commit 79f3b46651cd8f8bba23fae75b2dbe7bb6ef1e83 +Author: Faruk D +Date: Thu Nov 16 16:10:10 2017 +0100 + + Update README.md + +commit affc6697b36f3d67f73f90dd6deab2b14ceaf395 +Author: Faruk D +Date: Thu Nov 16 16:09:19 2017 +0100 + + Update and rename README to README.md + +commit e07a26b63fec8bef19957d07b6e0a5371fd78a50 +Author: Sarod Yatawatta +Date: Mon Nov 13 10:44:55 2017 +0100 + + added option to use GPU for model prediction + +commit 7425698526373fb0fd72916d6d877293f21d556b +Author: Sarod Yatawatta +Date: Mon Nov 13 10:43:02 2017 +0100 + + added option to use GPU for simulations + +commit 05f47ee4cb3f8f47481f74342fd520a7dc671259 +Author: Sarod Yatawatta +Date: Mon Nov 13 10:41:23 2017 +0100 + + updated simulation options + +commit 759f92537d35a400d9aec826aa195ab06ec2c075 +Author: Sarod Yatawatta +Date: Mon Nov 13 10:40:53 2017 +0100 + + prediction with improved kernels + +commit 2150c4d12b5e38f2465e828727637555a4b6c436 +Author: Sarod Yatawatta +Date: Mon Nov 13 10:39:40 2017 +0100 + + Improved kernel (coherencies) from Hanno Spreeuw and Ben van Werkhoven as part of NLeSC DIRAC project, removed dynamic parallelism, added double precision + +commit ba4025a8472c642d24a537c90b5ae60476c48ad8 +Author: Hanno Spreeuw +Date: Fri Nov 3 16:57:53 2017 +0100 + + Minor adjustment + +commit 6faf72beb3d117489a0f2acac0a5811c583257ad +Author: Hanno Spreeuw +Date: Fri Nov 3 16:55:48 2017 +0100 + + Makefile updated to match casacore update + +commit 4fa8cffcddd280654b1a6e97cfe21917bc5f404f +Author: Sarod Yatawatta +Date: Fri Nov 3 15:20:41 2017 +0100 + + clarified various simulation options + +commit 0f20a965b0d7e0a9f84989455ae5479377562c12 +Author: Sarod Yatawatta +Date: Fri Nov 3 15:20:11 2017 +0100 + + make it work with/without beam + +commit 7c56e18b0056961d75ec5aeacf98d14620ccc133 +Author: Sarod Yatawatta +Date: Fri Nov 3 15:18:53 2017 +0100 + + Improved kernel (array_beam) from Hanno Spreeuw and Ben van Werkhoven as part of NLeSC DIRAC project, removed dynamic parallelism, 2D thread blocks + +commit 1e2c24b31ada7e46d65b9f8b6e98c48e4845c724 +Author: Hanno Spreeuw +Date: Fri Nov 3 14:27:07 2017 +0100 + + Header file and Solvers folder redundant as well + +commit d6b518116edadd9870ad9138047b7d1a92b47bde +Author: Hanno Spreeuw +Date: Fri Nov 3 14:24:06 2017 +0100 + + These source and Makefiles are redundant, since they are present in the Dirac and Radio subdirectories, albeit somewhat altered. + +commit 6244d393c67a78e1b4c70b3b0be68aa73cc19f94 +Author: Sarod Yatawatta +Date: Tue Oct 31 10:41:02 2017 +0100 + + clarify -T and -K options + +commit 402efc6f17d81628a12a4ccf2fcc0a7bd9ed0efd +Author: Hanno Spreeuw +Date: Fri Oct 20 15:45:48 2017 +0200 + + You can now insert sources at random positions within some angle from 3C196 + +commit fd32097a60f8b7993d29925114bd89ed109096b8 +Author: Hanno Spreeuw +Date: Wed Oct 18 17:09:37 2017 +0200 + + Now possible to position sources within a certain patch of the sky + +commit 221b4c3ddd017f855e4cc5db8a7adcd8b0478cb6 +Author: Hanno Spreeuw +Date: Mon Oct 16 16:50:16 2017 +0200 + + All input to kernel_array_beam and its output now correctly written to files + +commit f8cb7481722cf8c10e93873bc02e9cf0ffcab310 +Author: Sarod Yatawatta +Date: Tue Sep 26 13:21:21 2017 +0200 + + correct order of saving Z + +commit d1d4d78e4db89c8d02a31963bdf844ea879bd9a2 +Author: Sarod Yatawatta +Date: Tue Sep 12 13:59:23 2017 +0200 + + added parsing with missing bmaj/bmin/bpa/freq0 + +commit dd6284e1363206dc741423a496bc9560f3f5c0db +Author: Hanno Spreeuw +Date: Thu Sep 7 14:25:04 2017 +0200 + + Modifications in order to make a calltree for the CPU version of Sagecal + +commit 50e247ff19d0270d6ead109598747a6c1d443ddd +Author: Hanno Spreeuw +Date: Wed Sep 6 13:49:29 2017 +0200 + + Modified Makefiles to match casacore updates on fs5. The input to kernel_array_beam is written to files more completely and correctly. + +commit 5b42e561c2c53e05f3815956cdc9d10af3b9952b +Author: Sarod Yatawatta +Date: Mon Sep 4 16:57:08 2017 +0200 + + bug fix + +commit 1bdc7f835415ae2be0f2340f76f8903f769d3d14 +Author: Hanno Spreeuw +Date: Fri Aug 25 14:53:50 2017 +0200 + + Nelem now written to file correctly + +commit 426ea767be0633849bc706f141e1fa73ed82593f +Author: Hanno Spreeuw +Date: Thu Aug 24 14:20:31 2017 +0200 + + xxd, yyd and zzd should now be written to file correctly, albeit as doubles instead of floats, through t->xx[j], t->yy[j] and t->zz[j], respectively. + +commit 5179079343e6c73086531acce4501473b7b3bc77 +Author: Sarod Yatawatta +Date: Wed Aug 16 15:28:24 2017 +0200 + + and '/' + +commit 741dc78d57395866df2e3e47b1923cb5e4a8b1bf +Author: Sarod Yatawatta +Date: Wed Aug 16 13:17:01 2017 +0200 + + handle source names with a '-' in them + +commit 87d9f47f6e1be295b354dd83e37b50a633685981 +Author: Sarod Yatawatta +Date: Wed Aug 16 12:32:05 2017 +0200 + + update + +commit f24343416a0dade1b0f1445c0526da0c55b3a14b +Author: Hanno Spreeuw +Date: Fri Aug 11 17:29:51 2017 +0200 + + Corrections wrt writing input for kernel_array_beam to file + +commit c417e7fe27b2603ae48bade7d9263b95bffd16bd +Author: Hanno Spreeuw +Date: Mon Jul 31 11:01:11 2017 +0200 + + Input to and output from cudakernel_array_beam written to files + +commit eb9769d462d1edbcadae96ead8487e34f1ab0aa1 +Author: Sarod Yatawatta +Date: Mon Jul 10 11:52:15 2017 +0200 + + Major update: multiplexing ADMM, adaptive rho + +commit a7108dc0256df4e3f10de709c1f9678a4dab7a31 +Author: Hanno Spreeuw +Date: Wed Jun 21 16:19:52 2017 +0200 + + Major cleanup - in particular of files that should not be tracked, i.e. should not be included in the repo. + +commit 1e7d1883a3375694c0d75e4c813d1c2f706dc17b +Author: Hanno Spreeuw +Date: Thu Jun 1 13:24:59 2017 +0200 + + Now also extended sources are generated + +commit 653fa48e15e05325db258cab3a9e9e522478f297 +Merge: 8d25cfa 2792b81 +Author: Hanno Spreeuw +Date: Fri May 12 14:53:14 2017 +0200 + + Merge pull request #1 from nlesc-dirac/Sagecal-without-astronomy + + Sagecal without astronomy + +commit 2792b81fe47c374871744979acc6026e60b83443 +Author: Hanno Spreeuw +Date: Fri May 12 14:16:06 2017 +0200 + + Python (what else?) script to generate large sky models - and its cluster files - for adequate profiling + +commit d96359d476a410d6285f82322a4cf79ce7acf791 +Author: Hanno Spreeuw +Date: Fri May 12 13:42:05 2017 +0200 + + Replaced Solvers by Dirac, as requested by Sarod. This effectively reverses the previous commit. + +commit b906365a6abcd4008fdb53fa21c98a31e6222dc8 +Author: Hanno Spreeuw +Date: Mon May 1 14:11:26 2017 +0200 + + Replaced Dirac by Solvers, which is a more descriptive name + +commit 455492109f9ba34609b99682d655f8048948b360 +Author: Hanno Spreeuw +Date: Mon May 1 12:54:07 2017 +0200 + + Solvers is a more descriptive name for the contents of this directory than Dirac + +commit ba9d984fd6acedaaba2ad8068ed9647fe1dd8e93 +Author: Hanno Spreeuw +Date: Wed Apr 12 14:56:27 2017 +0200 + + All astronomy related function calls were removed, leaving only the optimalizations. + +commit b8656b068259e6ce33eaa5636819f3701832cbe5 +Author: Sarod Yatawatta +Date: Thu Mar 23 17:37:50 2017 +0100 + + remove obsolete ONE_GPU + +commit 8d25cfaa91a35d84c297a1f72db3d76299a6a0c4 +Author: Hanno Spreeuw +Date: Fri Mar 3 11:19:07 2017 +0100 + + Edited Makefiles such that sagecal will build on DAS5@ASTRON + +commit ef8240bfe96923c8a1c6bb233886a68163c3f6f3 +Author: Sarod Yatawatta +Date: Wed Mar 1 17:58:27 2017 +0100 + + added missing file + +commit c6da7f1549e28aa161f2f1410aaeb551edf94c01 +Author: Sarod Yatawatta +Date: Mon Feb 27 11:46:40 2017 +0100 + + added casacore lib to linker path + +commit b9d1a8610ee7456a78c57144e900d3c1a01a49fa +Author: Sarod Yatawatta +Date: Mon Jan 30 18:24:33 2017 +0100 + + comments + +commit 1ca7cc60bc4d05ed5f22551182f04dacba66dd64 +Author: Sarod Yatawatta +Date: Mon Jan 30 18:22:43 2017 +0100 + + added a small test dataset + +commit de0e30128aaf07e819d1749bb9850d9c29764f47 +Author: Sarod Yatawatta +Date: Sat Dec 3 00:12:35 2016 +0100 + + major update: 1) CUSOLVER/NVML support, 2) LOFAR Beam model + +commit dadfb7abf0299afccab0130056cd0ffd02254ff1 +Author: Sarod Yatawatta +Date: Tue Nov 29 16:42:52 2016 +0100 + + info on ATeam subtraction + +commit 79b4528f2f9384f4f4995ecdfe6fdd9e14d2c0b9 +Author: Sarod Yatawatta +Date: Fri Oct 21 12:16:09 2016 +0200 + + fix parse errors + +commit 9aeb1a4426ebb7814cad2376f37aad8a4d944211 +Author: Sarod Yatawatta +Date: Mon Oct 17 13:33:37 2016 +0200 + + added info on solution format + +commit ca26f7739c86b5c2013b0b7780e3382123d2af12 +Author: Sarod Yatawatta +Date: Tue Oct 4 23:39:21 2016 +0200 + + added script to create cluster file from sky model + +commit 6bf6221b68ffbb15fa8dd4c4a8bd517c1682c93a +Author: Sarod Yatawatta +Date: Fri Dec 18 11:07:25 2015 +0100 + + explanation about PA + +commit d142bd896751ef13946d8a8d5f7d6266a1ac8e24 +Author: Sarod Yatawatta +Date: Mon Dec 14 10:55:56 2015 +0100 + + PA explanation + +commit 601386ba607103ce84fabe05922f83dc166b488a +Author: Sarod Yatawatta +Date: Sat Dec 12 14:27:29 2015 +0100 + + update + +commit 17b58b2a5060b39f3c44478490dabd68fa095079 +Author: Sarod Yatawatta +Date: Sat Dec 12 14:22:47 2015 +0100 + + bug fix + +commit f951adfa786f80fe5a058b8268f100e1f066480a +Author: Sarod Yatawatta +Date: Wed Nov 4 21:15:35 2015 +0100 + + update casacore include path + +commit fac0e824b2f4b7c1d33906b94a137f1e3c17c2cc +Author: Sarod Yatawatta +Date: Tue Oct 13 11:41:40 2015 +0200 + + bug fix + +commit b86f57a0f28d54209157eb65b4c855a0559866ba +Author: Sarod Yatawatta +Date: Thu Aug 20 13:53:14 2015 +0200 + + src location + +commit fb1feb9ae4c343392a90afc7a34ec864e1e8d05a +Author: Sarod Yatawatta +Date: Thu Aug 20 13:51:34 2015 +0200 + + updated docu + +commit 5053fd199332c3292d24fb77836e25af5cc40a7f +Author: Sarod Yatawatta +Date: Wed Aug 19 19:22:20 2015 +0200 + + remove obsolete comment + +commit 4f971a5cdd549153ea126c836634f4b3b3509a6c +Author: Sarod Yatawatta +Date: Wed Aug 19 19:20:08 2015 +0200 + + update to 0.3.8 + +commit b167c818547c2fac9d86dc7efc41fef65616b8cd +Author: Sarod Yatawatta +Date: Wed Jun 17 15:47:50 2015 +0200 + + properly handle multichannel MS + +commit e1e3ed0c1b55906e8dd43b66e424959d810a0667 +Author: Sarod Yatawatta +Date: Wed Jun 17 15:40:01 2015 +0200 + + move constant out of loop + +commit 0248f39a517b6bcc83ed9ec2e3c9edb9f6a069b2 +Author: Sarod Yatawatta +Date: Wed May 13 10:52:44 2015 +0200 + + add more headers + +commit 6038c8116720db4d9cfbe8304700870b9ebc99a0 +Author: Sarod Yatawatta +Date: Wed May 13 10:51:24 2015 +0200 + + handle flags properly + +commit 46a2e4536d25a3970c5e5c5096963cbeae62e124 +Author: Sarod Yatawatta +Date: Tue Apr 28 15:43:54 2015 +0200 + + Better to link with static libs of openblas + +commit 9d28ec9b24a861967dcaeb475abdfc7bab3a755e +Author: Sarod Yatawatta +Date: Wed Apr 15 15:31:41 2015 +0200 + + modified initial TR heurisitic + +commit 49b21f62f9168f19dd4c3da31983ed45a913cac7 +Author: Sarod Yatawatta +Date: Tue Mar 31 17:53:05 2015 +0200 + + bug fix + +commit 741a38eae1b7899754193ae4f08db459a5a974bd +Author: Sarod Yatawatta +Date: Thu Mar 5 14:14:01 2015 +0100 + + handle -ve sources + +commit ce633cd4990400e22c4bdc4f886ae4910a3a2ec2 +Author: Sarod Yatawatta +Date: Wed Mar 4 10:53:26 2015 +0100 + + spectra correction + +commit 0ef03ca1a0c15408d93b079772e63770883498a9 +Author: Sarod Yatawatta +Date: Fri Feb 13 03:45:13 2015 +0100 + + include glib + +commit 01f43c75f2488b163cbb2b0c7adfac4554c21705 +Author: Sarod Yatawatta +Date: Thu Feb 5 22:29:44 2015 +0100 + + refine options + +commit 7ccec68eb66f00c38ab15b5187c3c81a8b2a56e8 +Author: Sarod Yatawatta +Date: Thu Feb 5 22:18:10 2015 +0100 + + more explanations + +commit cca3155c546b33081b66aa8d895e960bd1f4a3f5 +Author: Sarod Yatawatta +Date: Thu Feb 5 17:01:14 2015 +0100 + + sagecal-mpi info + +commit 85fe4a2891e06198065c68a94728039b9e4b3b3d +Author: Sarod Yatawatta +Date: Thu Feb 5 16:57:28 2015 +0100 + + Major update, added MPI support (distributed calib) + +commit b52c16a4fc6d0f43e0215135b7d557229c1b291d +Author: Sarod Yatawatta +Date: Wed Aug 6 11:05:04 2014 +0200 + + update spectral index info + +commit 885ba80113218ef1d315956c6b0ceae18040e0f3 +Author: Sarod Yatawatta +Date: Wed Jan 8 06:55:06 2014 +0100 + + fix errors + +commit 4812b51f8da3ab330a7be40b18a5c1329233dda9 +Author: Sarod Yatawatta +Date: Mon Jan 6 23:11:53 2014 +0100 + + update info + +commit 881de9946c694c164f8b7667bc3ee6e2ef6106f0 +Author: Sarod Yatawatta +Date: Mon Jan 6 23:07:07 2014 +0100 + + Initial commit Thu Feb 5 16:54:42 CET 2015 - Updated SAGECAL - Added distributed SAGECAL (using MPI) diff --git a/Docker/build_images.sh b/Docker/build_images.sh new file mode 100755 index 0000000..513ddfa --- /dev/null +++ b/Docker/build_images.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +version=$(date +"%d%m%Y") + +for folder in \ + sl7-test \ + ubuntu1604-test + +do + name=${folder%%/} + echo + echo "===========================================" + echo "Building: "$name + echo "===========================================" + + cmd="docker build -t fdiblen/$name:$version -t fdiblen/$name:latest ./$name" + echo + echo "Running:" + echo $cmd + echo + echo + eval $cmd + + if [ $? -eq 0 ] + then + echo + echo "Successfully built the $name image!" + else + echo + echo "Could not build the $name image" >&2 + exit $? + fi + + #docker push fdiblen/$name:$version + #docker push fdiblen/$name:latest +done diff --git a/Docker/sl7-test/Dockerfile b/Docker/sl7-test/Dockerfile new file mode 100644 index 0000000..11e4cfc --- /dev/null +++ b/Docker/sl7-test/Dockerfile @@ -0,0 +1,42 @@ +FROM scientificlinux/sl:7 +MAINTAINER f.diblen@esciencecenter.nl + +# add EPEL repository for openblas +RUN yum -y \ + install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm + +# install dependencies +RUN yum -y install \ + wget git pkgconfig make cmake3 cmake3-gui gcc-gfortran gcc-c++ flex bison \ + openblas openblas-devel glib2-devel lapack lapack-devel cfitsio cfitsio-devel \ + wcslib wcslib-devel ncurses ncurses-devel readline readline-devel \ + python-devel boost boost-devel fftw fftw-devel hdf5 hdf5-devel \ + numpy boost-python mpich mpich-devel fftw fftw-libs fftw-devel + +RUN mkdir /build && cd /build + +# compile casacore +RUN git clone --progress --verbose https://github.com/casacore/casacore.git casacore_src && \ + cd casacore_src && \ + mkdir build && cd build && \ + cmake3 .. -DUSE_FFTW3=ON \ + -DCMAKE_INSTALL_PREFIX=/opt/casacore \ + -DDATA_DIR=/opt/casacore/data -DUSE_OPENMP=ON \ + -DUSE_HDF5=ON \ + -DBUILD_PYTHON=ON \ + -DUSE_THREADS=ON && \ + make -j4 && \ + make install + + +## compile sagecal +#RUN cd /build && \ +# mkdir build-sl && cd build-sl && \ +# cmake3 .. -DCMAKE_INSTALL_PREFIX=/opt/sagecal \ +# -DCASACORE_ROOT_DIR=/opt/casacore \ +# -DCASACORE_INCLUDE=/opt/casacore/include/casacore +# make -j4 && \ +# make install && \ +# +#RUN ls -alsrt /opt/sagecal && \ +# /opt/sagecal/bin/sagecal diff --git a/Docker/ubuntu1604-test/Dockerfile b/Docker/ubuntu1604-test/Dockerfile new file mode 100644 index 0000000..1760ab1 --- /dev/null +++ b/Docker/ubuntu1604-test/Dockerfile @@ -0,0 +1,28 @@ +FROM ubuntu:xenial +MAINTAINER f.diblen@esciencecenter.nl + +RUN apt-get update -y && \ + apt-get install software-properties-common -y && \ + add-apt-repository -s ppa:kernsuite/kern-3 -y && \ + apt-add-repository multiverse && \ + apt-get update -y + +RUN apt-get install -y \ + git cmake g++ pkg-config \ + libcfitsio-bin libcfitsio-dev \ + libopenblas-base libopenblas-dev \ + wcslib-dev wcslib-tools \ + libglib2.0-dev \ + libcasa-casa2 casacore-dev casacore-data casacore-tools \ + mpich \ + fftw-dev libfftw3-mpi3 libfftw3-bin + + +## compile sagecal +#RUN mkdir /build && cd /build \ +# mkdir build-ubuntu && cd build-ubuntu && \ +# cmake .. -DCMAKE_INSTALL_PREFIX=/opt/sagecal && \ +# make -j4 && \ +# make install && \ +# ls -alsrt /opt/sagecal && \ +# /opt/sagecal/bin/sagecal diff --git a/INSTALL.md b/INSTALL.md index 1cf6c55..63ee2a1 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,6 +1,32 @@ di 28 aug 2018 9:37:58 CEST # SAGECal Installation + +## das5 + +Load the modules below before compiling SageCal. +``` +module load cmake/3.8.2 +module load mpich/ge/gcc/64/3.2 +module load gcc/4.9.3 +module load casacore/2.3.0-gcc-4.9.3 +module load wcslib/5.13-gcc-4.9.3 +module load wcslib/5.16-gcc-4.9.3 +module load cfitsio/3.410-gcc-4.9.3 +``` + +checkout the source code and compile it with the instructions below(in source folder): +``` +git clone https://github.com/nlesc-dirac/sagecal.git + +cd sagecal && mkdir build && cd build +cmake .. -DCMAKE_INSTALL_PREFIX=$INSTALL_PATH +make +make install +``` +$INSTALL_PATH is where you want to install SageCal. + + ## Cmake Build ### Requirements diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..d159169 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/README.md b/README.md index fa3ca5f..839b06d 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,11 @@ | ------------- | ------------- | | [![Build Status](https://travis-ci.org/nlesc-dirac/sagecal.svg?branch=master)](https://travis-ci.org/nlesc-dirac/sagecal) | [![Build Status](https://travis-ci.org/nlesc-dirac/sagecal.svg?branch=dev)](https://travis-ci.org/nlesc-dirac/sagecal) | +[![Documentation](https://codedocs.xyz/nlesc-dirac/sagecal.svg)](https://codedocs.xyz/nlesc-dirac/sagecal/) # SAGECAL + ## Features - Levenberg-Marquardt, LBFGS, Riemannian Trust Region, Nesterov's accelerated gradient descent algorithms @@ -23,6 +25,9 @@ Read INSTALL for installation. This file gives a brief guide to use SAGECal. Warning: this file may be obsolete. use sagecal -h to see up-to-date options. +## Code documentation +Code documentation can be found [here](https://codedocs.xyz/nlesc-dirac/sagecal). + ## Step by Step Introduction: @@ -182,3 +187,6 @@ So for this cluster, there will be more than 1 column in the solution file, the ### Additional Info See [LOFAR Cookbook Chapter](https://support.astron.nl/LOFARImagingCookbook/sagecal.html). + +Please cite this code using the DOI. +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1289316.svg)](https://doi.org/10.5281/zenodo.1289316) diff --git a/build-tests/compile_sagecal.sh b/build-tests/compile_sagecal.sh new file mode 100755 index 0000000..7b639a4 --- /dev/null +++ b/build-tests/compile_sagecal.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +echo 'script: ' $0 + +echo "Building SageCal" && \ +echo "Branch --> $BRANCH" && \ +echo "Image --> $IMAGE" + +BUILD_DIR=$IMAGE'-build' + +cd /travis/workdir && \ + mkdir $BUILD_DIR && cd $BUILD_DIR + +CMAKE_EXE='' +OPTS='' + +case $IMAGE in + ubuntu) + echo 'Building for Ubuntu' + CMAKE_EXE=$(which cmake) + OPTS='' + ;; + sl7) + echo 'Building for Scientific Linux' + CMAKE_EXE=$(which cmake3) + OPTS='-DCASACORE_ROOT_DIR=/opt/casacore' + ;; + arch) + OPTS='' + ;; + *) + echo 'Unknown image $IMAGE!' + exit 1 + ;; +esac + +echo 'CMAKE_EXE: ' $CMAKE_EXE +echo 'CMake options: ' $OPTS +echo 'pwd: ' $PWD + +echo 'ls -asl: ' +ls -asl + +echo 'ls -asl /travis/workdir: ' +ls -asl /travis/workdir + +echo 'ls -asl /travis/workdir/$BUILD_DIR: ' +ls -asl /travis/workdir/$BUILD_DIR + + +$CMAKE_EXE /travis/workdir -DCMAKE_INSTALL_PREFIX=/opt/sagecal $OPTS + +make -j4 && \ +make install && \ +ls -alsrt /opt/sagecal && \ +/opt/sagecal/bin/sagecal diff --git a/src/MPI/CMakeLists.txt b/src/MPI/CMakeLists.txt index 27b6fae..2b85a7b 100644 --- a/src/MPI/CMakeLists.txt +++ b/src/MPI/CMakeLists.txt @@ -18,7 +18,7 @@ add_executable(sagecal-mpi ${SRCFILES}) target_link_libraries(sagecal-mpi ${CASACORE_LIBRARIES} - ${CFITSIO_LIBRARIES} + ${CFITSIO_LIB} ${OpenBLAS_LIB} ${LAPACK_LIBRARIES} ${WCSLIB_LIBRARIES} @@ -29,7 +29,6 @@ target_link_libraries(sagecal-mpi -lopenblas -lgfortran -lpthread - -lcfitsio -lm -ldirac -lradio diff --git a/src/MPI/data.cpp b/src/MPI/data.cpp deleted file mode 120000 index 96bd930..0000000 --- a/src/MPI/data.cpp +++ /dev/null @@ -1 +0,0 @@ -../MS/data.cpp \ No newline at end of file diff --git a/src/MPI/data.cpp b/src/MPI/data.cpp new file mode 100644 index 0000000..c606217 --- /dev/null +++ b/src/MPI/data.cpp @@ -0,0 +1,1166 @@ +/* + * + Copyright (C) 2006-2008 Sarod Yatawatta + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + $Id$ + */ + +#include "data.h" +#include "Radio.h" +#include "Dirac.h" +#include +#include +#include +#include + +/* speed of light */ +#ifndef CONST_C +#define CONST_C 299792458.0 +#endif + +using namespace casacore; + +int Data::numChannels=1; +unsigned long int Data::numRows; + + +char *Data::TableName = NULL; +float Data::min_uvcut=0.0f; +float Data::max_uvcut=100e6; +float Data::max_uvtaper=0.0f; +String Data::DataField = "DATA"; +String Data::OutField = "CORRECTED_DATA"; +int Data::TileSize = 120; +int Data::Nt= 6; +char *Data::SkyModel=NULL; +char *Data::Clusters=NULL; +int Data::format=0; /* old LSM */ +double Data::nulow=2.0; +double Data::nuhigh=30.0; + +int Data::max_emiter=3; +int Data::max_iter=2; +int Data::max_lbfgs=10; +int Data::lbfgs_m=7; +int Data::gpu_threads=128; +int Data::linsolv=1; +int Data::randomize=1; +int Data::whiten=0; +int Data::DoSim=0; +int Data::DoDiag=0; +int Data::doChan=0; /* if 1, solve for each channel in multi channel data */ +int Data::doBeam=0; /* if >0, enable LOFAR beam model */ +int Data::phaseOnly=0; /* if >0, enable phase only correction */ +int Data::solver_mode=0; +int Data::ccid=-99999; +double Data::rho=1e-9; +char *Data::solfile=NULL; +char *Data::initsolfile=NULL; +char *Data::ignorefile=NULL; +char *Data::MSlist=NULL; +char *Data::MSpattern=NULL; + +/* distributed sagecal parameters */ +int Data::Nadmm=1; +int Data::Npoly=2; +int Data::PolyType=2; +double Data::admm_rho=5.0; +char *Data::admm_rho_file=NULL; +int Data::aadmm=0; + +/* no upper limit, solve for all timeslots */ +int Data::Nmaxtime=0; +/* skip starting time slots if given */ +int Data::Nskip=0; +int Data::verbose=0; /* no verbose output */ +int Data::mdl=0; /* no AIC/MDL calculation by default */ +int Data::GPUpredict=0; /* use CPU for model calculation, if GPU not specified */ +#ifdef HAVE_CUDA +int Data::heapsize=GPU_HEAP_SIZE; /* heap size in GPU (MB) to be used in malloc() */ +#endif + +int Data::servermode=-1; /* by default, no client-server mode */ +char *Data::servername=NULL; +char *Data::portnumber=NULL; + +using namespace Data; + +void +Data::readMSlist(char *fname, vector *msnames) { + cout<<"Reading "<0) { + cout<push_back(buffer); + } + } + } +} + +void +Data::readAuxData(const char *fname, Data::IOData *data) { + + Table _t=Table(fname); + Table _ant = Table(_t.keywordSet().asTable("ANTENNA")); + ROScalarColumn a1(_ant, "NAME"); + data->N=a1.nrow(); + data->Nbase=data->N*(data->N-1)/2; + cout <<"Stations: "<N<<" Baselines: "<Nbase< timeCol(_t, "INTERVAL"); + data->deltat=timeCol.get(0); + data->totalt=(timeCol.nrow()+data->Nbase+data->N-1)/(data->Nbase+data->N); + cout<<"Integration Time: "<deltat<<" s,"<<" Total timeslots: "<totalt< ref_dir(_field, "REFERENCE_DIR"); + Array dir = ref_dir(0); + double *c = dir.data(); + data->ra0=c[0]; + data->dec0=c[1]; + cout<<"Phase center ("<< c[0] << ", " << c[1] <<")"< chan_freq(_freq, "CHAN_FREQ"); + data->Nchan=chan_freq.shape(0)[0]; + data->Nms=1; + /* allocate memory */ + try { + data->u=new double[data->Nbase*data->tilesz]; + data->v=new double[data->Nbase*data->tilesz]; + data->w=new double[data->Nbase*data->tilesz]; + data->x=new double[8*data->Nbase*data->tilesz]; + data->xo=new double[8*data->Nbase*data->tilesz*data->Nchan]; + data->freqs=new double[data->Nchan]; + data->flag=new double[data->Nbase*data->tilesz]; + data->NchanMS=new int[data->Nms]; + } catch (const std::bad_alloc& e) { + cout<<"Allocating memory for data failed. Quitting."<< e.what() << endl; + exit(1); + } + data->NchanMS[0]=data->Nchan; + + /* copy freq */ + data->freq0=0.0; + for (int ci=0; ciNchan; ci++) { + data->freqs[ci]=chan_freq(0).data()[ci]; + data->freq0+=data->freqs[ci]; + } + data->freq0/=(double)data->Nchan; + /* need channel widths to calculate bandwidth */ + ROArrayColumn chan_width(_freq, "CHAN_WIDTH"); + data->deltaf=(double)data->Nchan*(chan_width(0).data()[0]); +} + +void +Data::readAuxData(const char *fname, Data::IOData *data, Data::LBeam *binfo) { + + Table _t=Table(fname); + Table _ant = Table(_t.keywordSet().asTable("ANTENNA")); + ROScalarColumn a1(_ant, "NAME"); + data->N=a1.nrow(); + data->Nbase=data->N*(data->N-1)/2; + cout <<"Stations: "<N<<" Baselines: "<Nbase< timeCol(_t, "INTERVAL"); + data->deltat=timeCol.get(0); + data->totalt=(timeCol.nrow()+data->Nbase+data->N-1)/(data->Nbase+data->N); + cout<<"Integration Time: "<deltat<<" s,"<<" Total timeslots: "<totalt< ref_dir(_field, "PHASE_DIR"); /* old REFERENCE_DIR */ + Array dir = ref_dir(0); + double *c = dir.data(); + data->ra0=c[0]; + data->dec0=c[1]; + cout<<"Phase center ("<< c[0] << ", " << c[1] <<")"< chan_freq(_freq, "CHAN_FREQ"); + data->Nchan=chan_freq.shape(0)[0]; + data->Nms=1; + /* allocate memory */ + try { + data->u=new double[data->Nbase*data->tilesz]; + data->v=new double[data->Nbase*data->tilesz]; + data->w=new double[data->Nbase*data->tilesz]; + data->x=new double[8*data->Nbase*data->tilesz]; + data->xo=new double[8*data->Nbase*data->tilesz*data->Nchan]; + data->freqs=new double[data->Nchan]; + data->flag=new double[data->Nbase*data->tilesz]; + data->NchanMS=new int[data->Nms]; + } catch (const std::bad_alloc& e) { + cout<<"Allocating memory for data failed. Quitting."<< e.what() << endl; + exit(1); + } + data->NchanMS[0]=data->Nchan; + + /* copy freq */ + data->freq0=0.0; + for (int ci=0; ciNchan; ci++) { + data->freqs[ci]=chan_freq(0).data()[ci]; + data->freq0+=data->freqs[ci]; + } + data->freq0/=(double)data->Nchan; + /* need channel widths to calculate bandwidth */ + ROArrayColumn chan_width(_freq, "CHAN_WIDTH"); + data->deltaf=(double)data->Nchan*(chan_width(0).data()[0]); + + /* UTC time */ + binfo->time_utc=new double[data->tilesz]; + /* no of elements in each station */ + binfo->Nelem=new int[data->N]; + /* positions of stations */ + binfo->sx=new double[data->N]; + binfo->sy=new double[data->N]; + binfo->sz=new double[data->N]; + /* coordinates of elements */ + binfo->xx=new double*[data->N]; + binfo->yy=new double*[data->N]; + binfo->zz=new double*[data->N]; + + Table antfield; + if(_t.keywordSet().fieldNumber("LOFAR_ANTENNA_FIELD") != -1) { + antfield = Table(_t.keywordSet().asTable("LOFAR_ANTENNA_FIELD")); + } else { + char buff[2048]={0}; + sprintf(buff, "%s/LOFAR_ANTENNA_FIELD", fname); + antfield=Table(buff); + } + ROArrayColumn position(antfield, "POSITION"); + ROArrayColumn offset(antfield, "ELEMENT_OFFSET"); + ROArrayColumn coord(antfield, "COORDINATE_AXES"); + ROArrayColumn eflag(antfield, "ELEMENT_FLAG"); + ROArrayColumn tileoffset(antfield, "TILE_ELEMENT_OFFSET"); + /* check if TILE_ELEMENT_OFFSET has any rows, of no rows present, + we know this is LBA */ + bool isHBA=tileoffset.hasContent(0); + + /* read positions, also setup memory for element coords */ + for (int ci=0; ciN; ci++) { + Array _pos=position(ci); + double *tx=_pos.data(); + binfo->sz[ci]=tx[2]; + + MPosition stnpos(MVPosition(tx[0],tx[1],tx[2]),MPosition::ITRF); + Array _radpos=stnpos.getAngle("rad").getValue(); + tx=_radpos.data(); + + binfo->sx[ci]=tx[0]; + binfo->sy[ci]=tx[1]; +//cout<<"position "<sx[ci]<<" "<sy[ci]<<" "<sz[ci]<Nelem[ci]=offset.shape(ci)[1]; + } + + + if (isHBA) { + double cones[16]; + for (int ci=0; ci<16; ci++) { + cones[ci]=1.0; + } + double tempT[3*16]; + /* now read in element offsets, also transform them to local coordinates */ + for (int ci=0; ciN; ci++) { + Array _off=offset(ci); + double *off=_off.data(); + Array _coord=coord(ci); + double *coordmat=_coord.data(); + Array _eflag=eflag(ci); + bool *ef=_eflag.data(); + Array _toff=tileoffset(ci); + double *toff=_toff.data(); + +/* +cout<<"A=["<Nelem[ci]; cj++) { +cout<Nelem[ci]]; + my_dgemm('T', 'N', binfo->Nelem[ci], 3, 3, 1.0, off, 3, coordmat, 3, 0.0, tempC, binfo->Nelem[ci]); + my_dgemm('T', 'N', 16, 3, 3, 1.0, toff, 3, coordmat, 3, 0.0, tempT, 16); + +/* +cout<<"C=["<Nelem[ci]; cj++) { +cout<Nelem[ci]]<<","<Nelem[ci]]<Nelem[ci]; cj++) { + if (ef[2*cj]==1 || ef[2*cj+1]==1) { + fcount++; + } + } + +//cout<<"%%Flagged "<xx[ci]=new double[16*(binfo->Nelem[ci]-fcount)]; + binfo->yy[ci]=new double[16*(binfo->Nelem[ci]-fcount)]; + binfo->zz[ci]=new double[16*(binfo->Nelem[ci]-fcount)]; + /* copy unflagged coords, 16 times for each dipole */ + fcount=0; + for (int cj=0; cjNelem[ci]; cj++) { + if (!(ef[2*cj]==1 || ef[2*cj+1]==1)) { + //binfo->xx[ci][fcount]=tempC[cj]; + //binfo->yy[ci][fcount]=tempC[cj+binfo->Nelem[ci]]; + //binfo->zz[ci][fcount]=tempC[cj+2*binfo->Nelem[ci]]; + my_dcopy(16,&tempT[0],1,&(binfo->xx[ci][fcount]),1); + my_daxpy(16,cones,tempC[cj],&(binfo->xx[ci][fcount])); + my_dcopy(16,&tempT[16],1,&(binfo->yy[ci][fcount]),1); + my_daxpy(16,cones,tempC[cj+binfo->Nelem[ci]],&(binfo->yy[ci][fcount])); + my_dcopy(16,&tempT[24],1,&(binfo->zz[ci][fcount]),1); + my_daxpy(16,cones,tempC[cj+2*binfo->Nelem[ci]],&(binfo->zz[ci][fcount])); + fcount+=16; + } + } + binfo->Nelem[ci]=fcount; +/* +cout<<"%%Copied "<Nelem[ci]; cj++) { +cout<xx[ci][cj]<<","<yy[ci][cj]<<","<zz[ci][cj]<N; ci++) { + Array _off=offset(ci); + double *off=_off.data(); + Array _coord=coord(ci); + double *coordmat=_coord.data(); + Array _eflag=eflag(ci); + bool *ef=_eflag.data(); + +/* +cout<<"A=["<Nelem[ci]; cj++) { +cout<Nelem[ci]]; + my_dgemm('T', 'N', binfo->Nelem[ci], 3, 3, 1.0, off, 3, coordmat, 3, 0.0, tempC, binfo->Nelem[ci]); + +/* +cout<<"C=["<Nelem[ci]; cj++) { +cout<Nelem[ci]]<<","<Nelem[ci]]<Nelem[ci]; cj++) { + if (ef[2*cj]==1 || ef[2*cj+1]==1) { + fcount++; + } + } + +//cout<<"%%Flagged "<xx[ci]=new double[(binfo->Nelem[ci]-fcount)]; + binfo->yy[ci]=new double[(binfo->Nelem[ci]-fcount)]; + binfo->zz[ci]=new double[(binfo->Nelem[ci]-fcount)]; + /* copy unflagged coords for each dipole */ + fcount=0; + for (int cj=0; cjNelem[ci]; cj++) { + if (!(ef[2*cj]==1 || ef[2*cj+1]==1)) { + binfo->xx[ci][fcount]=tempC[cj]; + binfo->yy[ci][fcount]=tempC[cj+binfo->Nelem[ci]]; + binfo->zz[ci][fcount]=tempC[cj+2*binfo->Nelem[ci]]; + fcount++; + } + } + binfo->Nelem[ci]=fcount; +/* +cout<<"%%Copied "<Nelem[ci]; cj++) { +cout<xx[ci][cj]<<","<yy[ci][cj]<<","<zz[ci][cj]< point_dir(_field, "LOFAR_TILE_BEAM_DIR"); + Array pdir = point_dir(0); + double *pc = pdir.data(); + binfo->p_ra0=pc[0]; + binfo->p_dec0=pc[1]; + + /* convert positions from xyz to longitude,latitude,height */ +/* double *longitude=new double[data->N]; + double *latitude=new double[data->N]; + double *height=new double[data->N]; + xyz2llh(binfo->sx,binfo->sy,binfo->sz,longitude,latitude,height,data->N); + delete [] binfo->sx; + delete [] binfo->sy; + delete [] binfo->sz; + binfo->sx=longitude; + binfo->sy=latitude; + binfo->sz=height; +*/ +} + + +void +Data::readAuxDataList(vector msnames, Data::IOData *data) { + /* read first filename */ + const char *fname=msnames[0].c_str(); + Table _t=Table(fname); + //char buff[2048] = {0}; + //sprintf(buff, "%s/ANTENNA", fname); + //Table _ant=Table(buff); + Table _ant = Table(_t.keywordSet().asTable("ANTENNA")); + ROScalarColumn a1(_ant, "NAME"); + data->N=a1.nrow(); + data->Nbase=data->N*(data->N-1)/2; + cout <<"Stations: "<N<<" Baselines: "<Nbase< timeCol(_t, "INTERVAL"); + data->deltat=timeCol.get(0); + data->totalt=(timeCol.nrow()+data->Nbase+data->N-1)/(data->Nbase+data->N); + cout<<"Integration Time: "<deltat<<" s,"<<" Total timeslots: "<totalt< ref_dir(_field, "REFERENCE_DIR"); + Array dir = ref_dir(0); + double *c = dir.data(); + data->ra0=c[0]; + data->dec0=c[1]; + cout<<"Phase center ("<< c[0] << ", " << c[1] <<")"<Nchan=0; + data->Nms=msnames.size(); + data->NchanMS=new int[data->Nms]; + for (int cm=0; cmNms; cm++) { + //obtain the chanel freq information + fname=msnames[cm].c_str(); + Table _t1=Table(fname); + //sprintf(buff, "%s/SPECTRAL_WINDOW", fname); + //Table _freq = Table(buff); + Table _freq = Table(_t1.keywordSet().asTable("SPECTRAL_WINDOW")); + ROArrayColumn chan_freq(_freq, "CHAN_FREQ"); + data->Nchan+=chan_freq.shape(0)[0]; + data->NchanMS[cm]=chan_freq.shape(0)[0]; + } + cout<<"Total channels="<Nchan<u=new double[data->Nbase*data->tilesz]; + data->v=new double[data->Nbase*data->tilesz]; + data->w=new double[data->Nbase*data->tilesz]; + data->x=new double[8*data->Nbase*data->tilesz]; + data->xo=new double[8*data->Nbase*data->tilesz*data->Nchan]; + data->freqs=new double[data->Nchan]; + data->flag=new double[data->Nbase*data->tilesz]; + + /* copy freq */ + data->freq0=0.0; + data->deltaf=0.0; + int ck=0; + for (int cm=0; cmNms; cm++) { + fname=msnames[cm].c_str(); + Table _t1=Table(fname); + //sprintf(buff, "%s/SPECTRAL_WINDOW", fname); + //Table _freq = Table(buff); + Table _freq = Table(_t1.keywordSet().asTable("SPECTRAL_WINDOW")); + ROArrayColumn chan_freq(_freq, "CHAN_FREQ"); + /* need channel widths to calculate bandwidth */ + ROArrayColumn chan_width(_freq, "CHAN_WIDTH"); + for (int ci=0; cifreqs[ck]=chan_freq(0).data()[ci]; + data->freq0+=data->freqs[ck++]; + data->deltaf+=(chan_width(0).data()[ci]); + } + } + data->freq0/=(double)data->Nchan; + cout<<"freq0="<freq0/1e6<freqs[ck]< iv1(3); + iv1[0] = "TIME"; + iv1[1] = "ANTENNA1"; + iv1[2] = "ANTENNA2"; + Table t=ti.sort(iv1,Sort::Ascending); + + ROScalarColumn a1(t, "ANTENNA1"), a2(t, "ANTENNA2"); + /* only read only access for input */ + ROArrayColumn dataCol(t, Data::DataField); + ROArrayColumn uvwCol(t, "UVW"); + ROArrayColumn flagCol(t, "FLAG"); + + /* check we get correct rows */ + int nrow=t.nrow(); + if(nrow0.0f) { + dotaper=true; + /* taper in m */ + invtaper=iodata.freq0/((double)max_uvtaper*CONST_C); + } + /* counters for finding flagged data ratio */ + int countgood=0; int countbad=0; + for(int row = 0; row < nrow && row0 data = dataCol(row); + Matrix uvw = uvwCol(row); + Array flag = flagCol(row); + + Complex cxx(0, 0); + Complex cxy(0, 0); + Complex cyx(0, 0); + Complex cyy(0, 0); + /* calculate sqrt(u^2+v^2) to select uv cuts */ + double *c = uvw.data(); + double uvd=sqrt(c[0]*c[0]+c[1]*c[1]); + bool flag_uvcut=0; + if (uvdmax_uvcut) { + flag_uvcut=true; + } + double uvtaper=1.0; + if (dotaper) { + uvtaper=uvd*invtaper; + if (uvtaper>1.0) { + uvtaper=1.0; + } + } + int nflag=0; + for(int k = 0; k < iodata.Nchan; k++) { + Complex *ptr = data[k].data(); + bool *flgptr=flag[k].data(); + if (!flgptr[0] && !flgptr[1] && !flgptr[2] && !flgptr[3]){ + cxx+=ptr[0]; + cxy+=ptr[1]; + cyx+=ptr[2]; + cyy+=ptr[3]; + nflag++; /* remeber unflagged datapoints */ + } + + iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8]=ptr[0].real(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+1]=ptr[0].imag(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+2]=ptr[1].real(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+3]=ptr[1].imag(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+4]=ptr[2].real(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+5]=ptr[2].imag(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+6]=ptr[3].real(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+7]=ptr[3].imag(); + } + if (nflag>iodata.Nchan/2) { /* at least half channels should have good data */ + double invnflag=1.0/(double)nflag; + cxx*=invnflag; + cxy*=invnflag; + cyx*=invnflag; + cyy*=invnflag; + if (dotaper) { + cxx*=uvtaper; + cxy*=uvtaper; + cyx*=uvtaper; + cyy*=uvtaper; + } + iodata.flag[row0]=0; + countgood++; + } else { + if (!nflag) { + /* all channels flagged, flag this row */ + iodata.flag[row0]=1; + countbad++; + } else { + iodata.flag[row0]=2; + } + } + iodata.u[row0]=c[0]; + iodata.v[row0]=c[1]; + iodata.w[row0]=c[2]; + if (flag_uvcut) { + iodata.flag[row0]=2; + } + iodata.x[row0*8]=cxx.real(); + iodata.x[row0*8+1]=cxx.imag(); + iodata.x[row0*8+2]=cxy.real(); + iodata.x[row0*8+3]=cxy.imag(); + iodata.x[row0*8+4]=cyx.real(); + iodata.x[row0*8+5]=cyx.imag(); + iodata.x[row0*8+6]=cyy.real(); + iodata.x[row0*8+7]=cyy.imag(); + + row0++; + } + } + /* now if there is a tail of empty data remaining, flag them */ + if (row00) { + *fratio=(double)countbad/(double)(countgood+countbad); + } else { + *fratio=1.0; + } +} + +/* each time this is called read in data from MS, and format them as + u,v,w: u,v,w coordinates (wavelengths) size Nbase*tilesz x 1 + u,v,w are ordered with baselines, timeslots + x: data to write size Nbase*8*tileze x 1 + ordered by XX(re,im),XY(re,im),YX(re,im), YY(re,im), baseline, timeslots + + time_utc: UTC time, 1 per each Nbase + fratio: flagged data as a ratio to all available data +*/ +void +Data::loadData(Table ti, Data::IOData iodata, LBeam binfo, double *fratio) { + + /* sort input table by ant1 and ant2 */ + Block iv1(3); + iv1[0] = "TIME"; + iv1[1] = "ANTENNA1"; + iv1[2] = "ANTENNA2"; + Table t=ti.sort(iv1,Sort::Ascending); + + ROScalarColumn a1(t, "ANTENNA1"), a2(t, "ANTENNA2"); + /* only read only access for input */ + ROArrayColumn dataCol(t, Data::DataField); + ROArrayColumn uvwCol(t, "UVW"); + ROArrayColumn flagCol(t, "FLAG"); + ROScalarColumn tut(t,"TIME"); + + /* check we get correct rows */ + int nrow=t.nrow(); + if(nrow0.0f) { + dotaper=true; + /* taper in m */ + invtaper=iodata.freq0/((double)max_uvtaper*CONST_C); + } + /* counters for finding flagged data ratio */ + int countgood=0; int countbad=0; + for(int row = 0; row < nrow && row0 data = dataCol(row); + Matrix uvw = uvwCol(row); + Array flag = flagCol(row); + + Complex cxx(0, 0); + Complex cxy(0, 0); + Complex cyx(0, 0); + Complex cyy(0, 0); + /* calculate sqrt(u^2+v^2) to select uv cuts */ + double *c = uvw.data(); + double uvd=sqrt(c[0]*c[0]+c[1]*c[1]); + bool flag_uvcut=0; + if (uvdmax_uvcut) { + flag_uvcut=true; + } + double uvtaper=1.0; + if (dotaper) { + uvtaper=uvd*invtaper; + if (uvtaper>1.0) { + uvtaper=1.0; + } + } + int nflag=0; + for(int k = 0; k < iodata.Nchan; k++) { + Complex *ptr = data[k].data(); + bool *flgptr=flag[k].data(); + if (!flgptr[0] && !flgptr[1] && !flgptr[2] && !flgptr[3]){ + cxx+=ptr[0]; + cxy+=ptr[1]; + cyx+=ptr[2]; + cyy+=ptr[3]; + nflag++; /* remeber unflagged datapoints */ + } + + iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8]=ptr[0].real(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+1]=ptr[0].imag(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+2]=ptr[1].real(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+3]=ptr[1].imag(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+4]=ptr[2].real(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+5]=ptr[2].imag(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+6]=ptr[3].real(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+7]=ptr[3].imag(); + } + if (nflag>iodata.Nchan/2) { /* at least half channels should have good data */ + double invnflag=1.0/(double)nflag; + cxx*=invnflag; + cxy*=invnflag; + cyx*=invnflag; + cyy*=invnflag; + if (dotaper) { + cxx*=uvtaper; + cxy*=uvtaper; + cyx*=uvtaper; + cyy*=uvtaper; + } + iodata.flag[row0]=0; + countgood++; + } else { + if (!nflag) { + /* all channels flagged, flag this row */ + iodata.flag[row0]=1; + countbad++; + } else { + iodata.flag[row0]=2; + } + } + iodata.u[row0]=c[0]; + iodata.v[row0]=c[1]; + iodata.w[row0]=c[2]; + if (flag_uvcut) { + iodata.flag[row0]=2; + } + iodata.x[row0*8]=cxx.real(); + iodata.x[row0*8+1]=cxx.imag(); + iodata.x[row0*8+2]=cxy.real(); + iodata.x[row0*8+3]=cxy.imag(); + iodata.x[row0*8+4]=cyx.real(); + iodata.x[row0*8+5]=cyx.imag(); + iodata.x[row0*8+6]=cyy.real(); + iodata.x[row0*8+7]=cyy.imag(); + + row0++; + } + } + /* now if there is a tail of empty data remaining, flag them */ + if (row00) { + *fratio=(double)countbad/(double)(countgood+countbad); + } else { + *fratio=1.0; + } +} + + +/* each time this is called read in data from MS, and format them as + u,v,w: u,v,w coordinates (wavelengths) size Nbase*tilesz x 1 + u,v,w are ordered with baselines, timeslots + x: data to write size Nbase*8*tileze x 1 + ordered by XX(re,im),XY(re,im),YX(re,im), YY(re,im), baseline, timeslots + fratio: flagged data as a ratio to all available data +*/ +void +Data::loadDataList(vector msitr, Data::IOData iodata, double *fratio) { + Table ti=msitr[0]->table(); + /* sort input table by ant1 and ant2 */ + Block iv1(3); + iv1[0] = "TIME"; + iv1[1] = "ANTENNA1"; + iv1[2] = "ANTENNA2"; + Table t=ti.sort(iv1,Sort::Ascending); + + ROScalarColumn a1(t, "ANTENNA1"), a2(t, "ANTENNA2"); + /* only read only access for input */ + ROArrayColumn uvwCol(t, "UVW"); + + /* check we get correct rows */ + int nrow=t.nrow(); + if(nrow-iodata.N*iodata.tilesz>iodata.tilesz*iodata.Nbase) { + cout<<"Error in rows"<* > dataCols(iodata.Nms); + vector* > flagCols(iodata.Nms); + for (int cm=0; cmtable()); + Table *tt=new Table(tti.sort(iv1,Sort::Ascending)); + dataCols[cm] = new ROArrayColumn(*tt,Data::DataField); + flagCols[cm] = new ROArrayColumn(*tt,"FLAG"); + } + /* tapering */ + bool dotaper=false; + double invtaper=1.0; + if (max_uvtaper>0.0f) { + dotaper=true; + /* taper in m */ + invtaper=iodata.freq0/((double)max_uvtaper*CONST_C); + } + + /* counters for finding flagged data ratio */ + int countgood=0; int countbad=0; + + int row0=0; + for(int row = 0; row < nrow; row++) { + uInt i = a1(row); //antenna1 + uInt j = a2(row); //antenna2 + /* only work with cross correlations */ + if (i!=j) { + Matrix uvw = uvwCol(row); + + Complex cxx(0, 0); + Complex cxy(0, 0); + Complex cyx(0, 0); + Complex cyy(0, 0); + /* calculate sqrt(u^2+v^2) to select uv cuts */ + double *c = uvw.data(); + double uvd=sqrt(c[0]*c[0]+c[1]*c[1]); + bool flag_uvcut=0; + if (uvdmax_uvcut) { + flag_uvcut=true; + } + int nflag=0; + double uvtaper=1.0; + if (dotaper) { + uvtaper=uvd*invtaper; + if (uvtaper>1.0) { + uvtaper=1.0; + } + } + + int chanoff=0; + for (int cm=0; cm data = (*(dataCols[cm]))(row); + Array flag = (*(flagCols[cm]))(row); + for(int k = 0; k < iodata.NchanMS[cm]; k++) { + Complex *ptr = data[k].data(); + bool *flgptr=flag[k].data(); + if (!flgptr[0] && !flgptr[1] && !flgptr[2] && !flgptr[3]){ + cxx+=ptr[0]; + cxy+=ptr[1]; + cyx+=ptr[2]; + cyy+=ptr[3]; + nflag++; /* remeber unflagged datapoints */ + } + + iodata.xo[iodata.Nbase*iodata.tilesz*8*chanoff+row0*8]=ptr[0].real(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*chanoff+row0*8+1]=ptr[0].imag(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*chanoff+row0*8+2]=ptr[1].real(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*chanoff+row0*8+3]=ptr[1].imag(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*chanoff+row0*8+4]=ptr[2].real(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*chanoff+row0*8+5]=ptr[2].imag(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*chanoff+row0*8+6]=ptr[3].real(); + iodata.xo[iodata.Nbase*iodata.tilesz*8*chanoff+row0*8+7]=ptr[3].imag(); + chanoff++; + } + } + + if (nflag>iodata.Nchan/2) {/* at least half channels should have good data */ + double invnflag=1.0/(double)nflag; + cxx*=invnflag; + cxy*=invnflag; + cyx*=invnflag; + cyy*=invnflag; + if (dotaper) { + cxx*=uvtaper; + cxy*=uvtaper; + cyx*=uvtaper; + cyy*=uvtaper; + } + iodata.flag[row0]=0; + countgood++; + } else { + if (!nflag) { + /* all channels flagged, flag this row */ + iodata.flag[row0]=1; + countbad++; + } else { + iodata.flag[row0]=2; + } + } + iodata.u[row0]=c[0]; + iodata.v[row0]=c[1]; + iodata.w[row0]=c[2]; + if (flag_uvcut) { + iodata.flag[row0]=2; + } + iodata.x[row0*8]=cxx.real(); + iodata.x[row0*8+1]=cxx.imag(); + iodata.x[row0*8+2]=cxy.real(); + iodata.x[row0*8+3]=cxy.imag(); + iodata.x[row0*8+4]=cyx.real(); + iodata.x[row0*8+5]=cyx.imag(); + iodata.x[row0*8+6]=cyy.real(); + iodata.x[row0*8+7]=cyy.imag(); + + row0++; + } + } + /* now if there is a tail of empty data remaining, flag them */ + if (row00) { + *fratio=(double)countbad/(double)(countgood+countbad); + } else { + *fratio=1.0; + } +} + + +void +Data::writeData(Table ti, Data::IOData iodata) { + + /* sort input table by ant1 and ant2 */ + Block iv1(3); + iv1[0] = "TIME"; + iv1[1] = "ANTENNA1"; + iv1[2] = "ANTENNA2"; + Table t=ti.sort(iv1,Sort::Ascending); + + ROScalarColumn a1(t, "ANTENNA1"), a2(t, "ANTENNA2"); + /* writable access for output */ + ArrayColumn dataCol(t, Data::OutField); + + /* check we get correct rows */ + int nrow=t.nrow(); + if(nrow-iodata.N*iodata.tilesz>iodata.tilesz*iodata.Nbase) { + cout<<"Warning: Missing rows, got "< data = dataCol(row); + for(int k = 0; k < iodata.Nchan; k++) { + pos(0)=0;pos(1)=k; + data(pos)=Complex(iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8],iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+1]); + pos(0)=1;pos(1)=k; + data(pos)=Complex(iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+2],iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+3]); + pos(0)=2;pos(1)=k; + data(pos)=Complex(iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+4],iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+5]); + pos(0)=3;pos(1)=k; + data(pos)=Complex(iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+6],iodata.xo[iodata.Nbase*iodata.tilesz*8*k+row0*8+7]); + } + + row0++; + dataCol.put(row,data); // copy to output + } + } +} + +void +Data::writeDataList(vector msitr, Data::IOData iodata) { + Table ti=msitr[0]->table(); + /* sort input table by ant1 and ant2 */ + Block iv1(3); + iv1[0] = "TIME"; + iv1[1] = "ANTENNA1"; + iv1[2] = "ANTENNA2"; + Table t=ti.sort(iv1,Sort::Ascending); + + ROScalarColumn a1(t, "ANTENNA1"), a2(t, "ANTENNA2"); + + /* check we get correct rows */ + int nrow=t.nrow(); + if(nrow-iodata.N*iodata.tilesz>iodata.tilesz*iodata.Nbase) { + cout<<"Error in rows"<* > dataCols(iodata.Nms); + for (int cm=0; cmtable()); + Table *tt=new Table(tti.sort(iv1,Sort::Ascending)); + dataCols[cm] = new ArrayColumn(*tt,Data::OutField); + } + + int row0=0; + for(int row = 0; row < nrow; row++) { + uInt i = a1(row); //antenna1 + uInt j = a2(row); //antenna2 + /* only work with cross correlations */ + if (i!=j) { + int chanoff=0; + for (int cm=0; cm data = (*(dataCols[cm]))(row); + IPosition pos(2,4,iodata.NchanMS[cm]); + //Array data = dataCol(row); + for(int k = 0; k < iodata.NchanMS[cm]; k++) { + pos(0)=0;pos(1)=k; + data(pos)=Complex(iodata.xo[iodata.Nbase*iodata.tilesz*8*chanoff+row0*8],iodata.xo[iodata.Nbase*iodata.tilesz*8*chanoff+row0*8+1]); + pos(0)=1;pos(1)=k; + data(pos)=Complex(iodata.xo[iodata.Nbase*iodata.tilesz*8*chanoff+row0*8+2],iodata.xo[iodata.Nbase*iodata.tilesz*8*chanoff+row0*8+3]); + pos(0)=2;pos(1)=k; + data(pos)=Complex(iodata.xo[iodata.Nbase*iodata.tilesz*8*chanoff+row0*8+4],iodata.xo[iodata.Nbase*iodata.tilesz*8*chanoff+row0*8+5]); + pos(0)=3;pos(1)=k; + data(pos)=Complex(iodata.xo[iodata.Nbase*iodata.tilesz*8*chanoff+row0*8+6],iodata.xo[iodata.Nbase*iodata.tilesz*8*chanoff+row0*8+7]); + chanoff++; + } + + (*(dataCols[cm])).put(row,data); + //dataCol.put(row,data); // copy to output + + } + row0++; + + } + + } + for (int cm=0; cm + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + $Id$ + */ + +#ifndef __DATA_H__ +#define __DATA_H__ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +using namespace casacore; + +namespace Data +{ + + struct IOData { + int N; /* no of stations */ + int Nbase; /* baselines, exclude autocorrelations */ + int tilesz; + int Nchan; /* total no of channels */ + int Nms; /* no. of MS */ + int *NchanMS; /* total channels per MS : Nms x 1 vector */ + double deltat; /* integration time (s) */ + int totalt; /* total no of time slots */ + double ra0; /* phase center */ + double dec0; /* phase center */ + double *u; /* uvw coords, size Nbase*tilesz x 1 */ + double *v; + double *w; + double *x; /* averaged data, size Nbase*8*tilez x 1 + ordered by XX(re,im),XY(re,im),YX(re,im),YY(re,im), baseline, timeslots */ + double *xo; /* unaveraged data, size Nbase*8*tilesz*Nchan x 1 + ordered by XX(re,im),XY(re,im),YX(re,im),YY(re,im), baseline, timeslots, channel */ + double *freqs; /* channel freqs, size Nchan x 1 */ + double freq0; /* averaged freq */ + double *flag; /* double for conforming with old routines size Nbase*tilesz x 1 */ + double deltaf; /* total bandwidth for freq. smearing */ + + double fratio; /* flagged data ratio = flagged/total, not counting data excluded from uv cut */ + /* if 1, all usable data are flagged */ + }; + + /* Station beam info */ + struct LBeam { + double *time_utc; /* time coord UTC (s), size tileszx1, + convert from MJD (s) to JD (days) */ + int *Nelem; /* no of elements in each station, size Nx1 */ + /* position (ITRF) of stations (m) + later changed to logitude,latitude,height (rad,rad,m) */ + double *sx; /* x: size Nx1 */ + double *sy; /* y: ... */ + double *sz; /* z: ... */ + /* x,y,z coords of elements, projected, converted to ITRF (m) */ + double **xx; /* x coord pointer, size Nx1, each *x: x coord of station, size Nelem[]x1 */ + double **yy; /* y ... */ + double **zz; /* z ... */ + /* pointing center of beams (only one) (could be different from phase center) */ + double p_ra0; + double p_dec0; + }; + + + /* read Auxilliary info and setup memory */ + void readAuxData(const char *fname, IOData *data); + void readAuxData(const char *fname, IOData *data, LBeam *binfo); + + void readAuxDataList(vector msnames, IOData *data); + + void readMSlist(char *fname, vector *msnames); + /* load data using MS Iterator */ + void loadData(Table t, IOData iodata, double *fratio); + void loadData(Table t, IOData iodata, LBeam binfo, double *fratio); + + void loadDataList(vector msitr, Data::IOData iodata, double *fratio); + /* write back data using MS Iterator */ + void writeData(Table t, IOData iodata); + void writeDataList(vector msitr, IOData iodata); + void freeData(IOData data); + void freeData(IOData data, LBeam binfo); + + extern int numChannels; + extern unsigned long int numRows; + + struct float2 { + float x,y; + }; + + + extern char *TableName; /* MS name */ + extern char *MSlist; /* text file with MS names */ + extern char *MSpattern; /* pattern to match all MS names used in calibration */ + extern float min_uvcut; + extern float max_uvcut; + extern float max_uvtaper; + extern casacore::String DataField; /* input column DATA/CORRECTED_DATA */ + extern casacore::String OutField; /* output column DATA/CORRECTED_DATA */ + extern int TileSize; //Tile size + extern int Nt; /* no of worker threads */ + extern char *SkyModel; /* sky model file */ + extern char *Clusters; /* cluster file */ + extern int format; /* sky model format 0: LSM, 1: LSM with 3 order spec idx*/ + + /* sagecal paramters */ + extern int max_emiter; + extern int max_iter; + extern int max_lbfgs; + extern int lbfgs_m; + extern int gpu_threads; + extern int linsolv; + extern int solver_mode; + extern int ccid; + extern double rho; + extern char *solfile; + extern char *initsolfile; + extern char *ignorefile; + extern double nulow,nuhigh; + extern int randomize; + extern int whiten; + extern int DoSim; /* if 1, simulation mode */ + extern int doChan; /* if 1, solve for each channel in multi channel data */ + extern int doBeam; /* if 1, predict (LOFAR) beam array factor */ + extern int DoDiag; /* if >0, enables diagnostics (Leverage) 1: write leverage as output (no residual), 2: only calculate fractions of leverage/noise */ + extern int phaseOnly; /* if >0, and if any correction is done, extract phase and do phase only correction */ + + /* distributed sagecal parameters */ + extern int Nadmm; /* ADMM iterations >=1 */ + extern int Npoly; /* polynomial order >=1 */ + extern int PolyType; /* what kind on polynomials to use 0,1,2,3 */ + extern double admm_rho; /* regularization */ + extern char *admm_rho_file; /* text file for regularization of each cluster */ + extern int aadmm; /* if >0, enable adaptive update of rho */ + /* for debugging, upper limit on time slots */ + extern int Nmaxtime; + /* skipping initial timeslots */ + extern int Nskip; + extern int verbose; /* if >0, enable verbose output */ + extern int mdl; /* if given, calculate AIC/MDL for different poly configs and find minimum */ + extern int GPUpredict; /* if given, use GPU for model calculation */ + extern int heapsize; /* heap size in GPU (MB), for using malloc() */ + /* for client server mode */ + extern int servermode; /* 0: client, 1: server, else default operation */ + extern char *servername; /* server host name or ip address */ + extern char *portnumber; /* which port number to use for communication */ +} +#endif //__DATA_H__ diff --git a/src/MS/CMakeLists.txt b/src/MS/CMakeLists.txt index e7e79d6..8b32689 100644 --- a/src/MS/CMakeLists.txt +++ b/src/MS/CMakeLists.txt @@ -23,7 +23,7 @@ add_executable(sagecal ${SRCFILES}) target_link_libraries(sagecal ${CASACORE_LIBRARIES} - ${CFITSIO_LIBRARIES} + ${CFITSIO_LIB} ${OpenBLAS_LIB} ${LAPACK_LIBRARIES} ${WCSLIB_LIBRARIES} @@ -32,7 +32,6 @@ target_link_libraries(sagecal -lopenblas -lgfortran -lpthread - -lcfitsio -lm -ldirac -lradio diff --git a/src/buildsky/CMakeLists.txt b/src/buildsky/CMakeLists.txt index 47ceb0f..130ff45 100644 --- a/src/buildsky/CMakeLists.txt +++ b/src/buildsky/CMakeLists.txt @@ -1,5 +1,6 @@ find_package(WcsLib REQUIRED) -include_directories(${WCSLIB_INCLUDE_DIR}/wcslib) +include_directories(${WCSLIB_INCLUDE_DIRS}/wcslib) +include_directories(${WCSLIB_INCLUDE_DIRS}) include_directories(./) link_directories(${LIBRARY_OUTPUT_PATH}) @@ -8,7 +9,7 @@ FILE(GLOB SRCFILES *.c) add_executable(buildsky ${SRCFILES}) target_link_libraries(buildsky - ${CFITSIO_LIBRARIES} + ${CFITSIO_LIB} ${OpenBLAS_LIB} ${LAPACK_LIBRARIES} ${WCSLIB_LIBRARIES} @@ -17,7 +18,6 @@ target_link_libraries(buildsky -lopenblas -lgfortran -lpthread - -lcfitsio -lm ) diff --git a/src/lib/Dirac/lbfgs.c b/src/lib/Dirac/lbfgs.c index e30dd57..4a0aeeb 100644 --- a/src/lib/Dirac/lbfgs.c +++ b/src/lib/Dirac/lbfgs.c @@ -423,7 +423,8 @@ cubic_interp( } } - return 0; + /* fallback value */ + return (a+b)*0.5; } diff --git a/src/lib/Dirac/lbfgs_nocuda.c b/src/lib/Dirac/lbfgs_nocuda.c index 6087f08..d39bb0c 100644 --- a/src/lib/Dirac/lbfgs_nocuda.c +++ b/src/lib/Dirac/lbfgs_nocuda.c @@ -187,8 +187,8 @@ cubic_interp( return b; } } - - return 0; + /* fallback value */ + return (a+b)*0.5; } diff --git a/src/restore/CMakeLists.txt b/src/restore/CMakeLists.txt index 85f5c95..b7f11ee 100644 --- a/src/restore/CMakeLists.txt +++ b/src/restore/CMakeLists.txt @@ -1,6 +1,7 @@ find_package(WcsLib REQUIRED) find_package(FFTW REQUIRED) -include_directories(${WCSLIB_INCLUDE_DIR}/wcslib) +include_directories(${WCSLIB_INCLUDE_DIRS}/wcslib) +include_directories(${WCSLIB_INCLUDE_DIRS}) include_directories(./) link_directories(${LIBRARY_OUTPUT_PATH}) @@ -9,7 +10,7 @@ FILE(GLOB SRCFILES *.c) add_executable(restore ${SRCFILES}) target_link_libraries(restore - ${CFITSIO_LIBRARIES} + ${CFITSIO_LIB} ${OpenBLAS_LIB} ${LAPACK_LIBRARIES} ${WCSLIB_LIBRARIES} @@ -20,7 +21,6 @@ target_link_libraries(restore -lopenblas -lgfortran -lpthread - -lcfitsio -lm ) diff --git a/test-builds/test-ubuntu.sh b/test-builds/test-ubuntu.sh deleted file mode 100755 index 7b76101..0000000 --- a/test-builds/test-ubuntu.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -echo "Building SageCal" && \ -echo "Branch --> $BRANCH" && \ -cd /travis/workdir && \ -mkdir build && cd build && \ -cmake .. -DENABLE_CUDA=OFF && \ -make -j4 && \ -ls -alsrt ./dist/bin && \ -./dist/bin/sagecal - diff --git a/test/Change_freq.py b/test/Change_freq.py new file mode 100755 index 0000000..b0c6e7e --- /dev/null +++ b/test/Change_freq.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python +from pyrap.tables import * + +# You can use this script to create different MS data files by copying a single MS +# into MS with different names and changing their frequencies to unique values + +# change freq +def read_corr(msname,freq): + import os + import math + tf=table(msname+'/SPECTRAL_WINDOW',readonly=False) + ch0=tf.getcol('CHAN_FREQ') + ch0[0,0]=freq + reffreq=tf.getcol('REF_FREQUENCY') + reffreq[0]=ch0[0,0] + tf.putcol('CHAN_FREQ',ch0) + tf.putcol('REF_FREQUENCY',reffreq) + tf.close() + + +if __name__ == '__main__': + # args MS + import sys + argc=len(sys.argv) + if argc==3: + read_corr(sys.argv[1],float(sys.argv[2])) + else: + print("thisscript MS frequency") + exit() diff --git a/test/dosage-mpi.sh b/test/dosage-mpi.sh new file mode 100755 index 0000000..4fc1ac2 --- /dev/null +++ b/test/dosage-mpi.sh @@ -0,0 +1,5 @@ +# Before running this, make sure you have at least 2 data files with names matching the pattern '*.ms' + +# This command assumes sagecal-mpi binary is at ../src/MPI/sagecal-mpi +# 'regularization_factors.txt' should exactly match the cluster info given by '3c196.sky.txt.cluster' +mpirun -np 3 ../src/MPI/sagecal-mpi -f '*.ms' -A 10 -P 2 -Q 2 -G regularization_factors.txt -s 3c196.sky.txt -c 3c196.sky.txt.cluster -p zsol -n 2 -t 10 -e 4 -g 2 -l 10 -m 7 -x 30 -F 1 -j 5 -B 1 -k 1 -K 3 -W 0 -V > sagecal-mpi.ms.output diff --git a/test/dosage.sh b/test/dosage.sh index 365aac5..5c5f180 100755 --- a/test/dosage.sh +++ b/test/dosage.sh @@ -1,2 +1,3 @@ # Before running this, untar sm.ms.tar and build sagecal +# this command assumes sagecal binary is at ../src/MS/sagecal ../src/MS/sagecal -d sm.ms -s extended_source_list.txt -c extended_source_list.txt.cluster -n 4 -t 10 -p sm.ms.solutions -e 4 -g 2 -l 10 -m 7 -x 30 -F 1 -j 2 -k -1 -B 1 -W 0 > sm.ms.output diff --git a/test/regularization_factors.txt b/test/regularization_factors.txt new file mode 100644 index 0000000..5479edc --- /dev/null +++ b/test/regularization_factors.txt @@ -0,0 +1,6 @@ +# format +# cluster_id hybrid admm_rho +-1 2 4 +2 1 2 + +# end