Skip to content
Snippets Groups Projects
Commit 3f153d8c authored by Mattia Mancini's avatar Mattia Mancini
Browse files

SSB-43: adding matrix inversion

parent bfcceec8
No related branches found
No related tags found
1 merge request!44Merge back holography to master
......@@ -40,6 +40,7 @@ CAL/CalibrationProcessing/lib/__init__.py -text
CAL/CalibrationProcessing/lib/process_holography_dataset.py -text
CAL/CalibrationProcessing/lib/processing/__init__.py -text
CAL/CalibrationProcessing/lib/processing/averaging.py -text
CAL/CalibrationProcessing/lib/processing/matrices.py -text
CAL/CalibrationProcessing/test/CMakeLists.txt -text
CAL/CalibrationProcessing/test/profiling_processing.py -text
CAL/CalibrationProcessing/test/t_processing.py -text
......
......@@ -48,6 +48,7 @@ class TestHolographyDatasetClass(unittest.TestCase):
read_dict = HolographyDataset._read_grouped_data(h5file, '/test')
self.assertDictEqual(test_dict, read_dict)
if __name__ == '__main__':
logging.basicConfig(format='%(name)s : %(message)s')
unittest.main()
......@@ -20,6 +20,7 @@
python_install(
__init__.py
processing/averaging.py
processing/matrices.py
processing/__init__.py
DESTINATION lofar/calibration)
......
from .averaging import *
\ No newline at end of file
from .averaging import *
from .matrices import *
\ No newline at end of file
import logging
import numpy
logger = logging.getLogger(__name__)
def extract_crosscorrelation_matrices_from_HDS_datatable(datatable):
new_shape = (2, 2, datatable.shape[0])
new_array = numpy.zeros(shape=new_shape, dtype=numpy.complex)
new_array[0, 0, :] = datatable['XX']
new_array[0, 1, :] = datatable['XY']
new_array[1, 0, :] = datatable['YX']
new_array[1, 1, :] = datatable['YY']
return new_array
def invert_crosscorrelation_matrices(cross_correlation_matrices):
"""
Invert the matrices along the last axis
:param cross_correlation_matrices: matrices to invert
:type cross_correlation_matrices: numpy.ndarray
:return:
"""
assert cross_correlation_matrices.ndim >= 3
return numpy.linalg.inv(cross_correlation_matrices)
import logging
import unittest
from lofar.calibration.common.datacontainers import HolographyDataset
from lofar.calibration.processing import average_dataset_by_sample, average_values_by_sample
from glob import glob
from lofar.calibration.common.datacontainers.holography_dataset_definitions import HDS_data_sample_type
from lofar.calibration.processing.matrices import extract_crosscorrelation_matrices_from_HDS_datatable
logger = logging.getLogger('t_processing')
import numpy
......@@ -13,7 +13,6 @@ import numpy
SAMPLE_DATASET = '/data/test/HolographyObservation/CS001HBA0.hdf5'
class TestProcessing(unittest.TestCase):
def setUp(self):
pass
......@@ -54,7 +53,8 @@ class TestProcessing(unittest.TestCase):
def test_average_datatable_by_sample(self):
holography_dataset = HolographyDataset.load_from_file(SAMPLE_DATASET)
averaged_data = average_dataset_by_sample(SAMPLE_DATASET, 2)
averaged_data = average_dataset_by_sample(SAMPLE_DATASET, 2).derived_data[
'PRE_NORMALIZATION_AVERAGE_TIME']
self.assert_recursive_dict_have_the_same_keys(holography_dataset.data, averaged_data)
def assert_recursive_dict_have_the_same_keys(self, expected, actual):
......@@ -77,7 +77,21 @@ class TestProcessing(unittest.TestCase):
else:
self.assertTrue(False, 'Expected key {} is missing in the actual dict'.format(key))
def test_matrix_inversion(self):
test_data = numpy.zeros(3, dtype=HDS_data_sample_type)
numpy.random.seed(3)
test_data['XX'] = numpy.random.randn(3) + 1.j*numpy.random.randn(3)
test_data['XY'] = numpy.random.randn(3) + 1.j * numpy.random.randn(3)
test_data['YX'] = numpy.random.randn(3) + 1.j * numpy.random.randn(3)
test_data['YY'] = numpy.random.randn(3) + 1.j * numpy.random.randn(3)
matrices_from_data = extract_crosscorrelation_matrices_from_HDS_datatable(test_data)
numpy.testing.assert_almost_equal(test_data['XX'], matrices_from_data[0, 0, :])
numpy.testing.assert_almost_equal(test_data['XY'], matrices_from_data[0, 1, :])
numpy.testing.assert_almost_equal(test_data['YX'], matrices_from_data[1, 0, :])
numpy.testing.assert_almost_equal(test_data['YY'], matrices_from_data[1, 1, :])
if __name__ == '__main__':
logging.basicConfig(format='%(name)s : %(message)s')
unittest.main()
\ No newline at end of file
unittest.main()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment