initial project code commit
This commit is contained in:
30
arttools/tests/test_artdatatable.py
Normal file
30
arttools/tests/test_artdatatable.py
Normal file
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf8 -*-
|
||||
# -----------------------------------------------------------------------------
|
||||
# Copyright (c) 2020 Space Research Institute (http://iki.rssi.ru/)
|
||||
#
|
||||
# This file is part of ARTXC software project.
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
import os, sys
|
||||
import unittest
|
||||
import unittest.mock as mock
|
||||
|
||||
import numpy as np
|
||||
|
||||
sys.path.append('../src')
|
||||
|
||||
from pyartxc.gti import Gti
|
||||
|
||||
|
||||
class Test_(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
pass
|
||||
|
||||
def test_create_empty(self):
|
||||
pass
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
208
arttools/tests/test_arttools_gti.py
Executable file
208
arttools/tests/test_arttools_gti.py
Executable file
@@ -0,0 +1,208 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf8 -*-
|
||||
# -----------------------------------------------------------------------------
|
||||
# Copyright (c) 2020-2025 IKI RAS (http://iki.rssi.ru/)
|
||||
# Space Research Institute of the Russian Academy of Science
|
||||
#
|
||||
# This file is part of the M. Pavlinsky SRG/ART-XC software project.
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
import os, sys
|
||||
import unittest
|
||||
import unittest.mock as mock
|
||||
|
||||
import numpy as np
|
||||
|
||||
sys.path.append(os.path.join(os.getcwd(), '../src/'))
|
||||
|
||||
|
||||
import arttools
|
||||
from arttools.gti import Gti
|
||||
|
||||
|
||||
class TestGti(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.gti_0 = Gti()
|
||||
self.gti_1 = Gti([[100., 200.],])
|
||||
self.gti_2 = Gti([[100., 200.], [300, 305]])
|
||||
self.gti_3 = Gti([100., 200., 300., 400.])
|
||||
|
||||
def test_create_empty(self):
|
||||
self.assertTrue (self.gti_0.empty)
|
||||
self.assertEqual(self.gti_0.size, 0)
|
||||
|
||||
def test_create_from_intervals_1(self):
|
||||
self.assertFalse(self.gti_1.empty)
|
||||
self.assertEqual(self.gti_1.size, 1)
|
||||
self.assertEqual(self.gti_1.exposure(), 100.)
|
||||
|
||||
def test_create_from_intervals_2(self):
|
||||
self.assertFalse(self.gti_2.empty)
|
||||
self.assertEqual(self.gti_2.size, 2)
|
||||
self.assertEqual(self.gti_2.exposure(), 105.)
|
||||
|
||||
def test_create_from_intervals_3(self):
|
||||
with self.assertRaises(ValueError):
|
||||
Gti([100., 200., 300.])
|
||||
|
||||
def test_startstop(self):
|
||||
self.assertEqual(self.gti_0.start, None)
|
||||
self.assertEqual(self.gti_0.stop , None)
|
||||
self.assertEqual(self.gti_2.start, 100.)
|
||||
self.assertEqual(self.gti_2.stop , 305.)
|
||||
|
||||
def test_create_from_timemask(self):
|
||||
times = np.array([100, 200, 300, 400, 500, 600])
|
||||
param = np.array([-99, -98, -10, 0, -98, -99])
|
||||
|
||||
gti = Gti.from_timemask(times, param < -95)
|
||||
|
||||
self.assertFalse(gti.empty)
|
||||
self.assertEqual(gti.size , 2)
|
||||
self.assertEqual(gti.exposure(), 200)
|
||||
self.assertEqual(gti.start , 100)
|
||||
self.assertEqual(gti.stop , 600)
|
||||
|
||||
def test_clone(self):
|
||||
gti_clone = self.gti_2.clone()
|
||||
|
||||
self.assertFalse(gti_clone.empty)
|
||||
self.assertEqual(gti_clone.size, 2)
|
||||
self.assertEqual(gti_clone.exposure(), 105.)
|
||||
|
||||
def test_equal(self):
|
||||
gti = Gti([100., 200.])
|
||||
|
||||
self.assertTrue (gti == gti )
|
||||
self.assertTrue (gti == self.gti_1)
|
||||
self.assertFalse(gti == self.gti_2)
|
||||
self.assertFalse(gti == None )
|
||||
|
||||
def test_union_1(self):
|
||||
gti_1 = Gti([100., 200.])
|
||||
gti_2 = Gti()
|
||||
|
||||
res_gti_1 = gti_1 + None
|
||||
res_gti_2 = gti_1 + gti_1
|
||||
res_gti_3 = gti_1 + gti_2
|
||||
res_gti_4 = gti_2 + gti_1
|
||||
|
||||
self.assertTrue(res_gti_1 == gti_1 )
|
||||
self.assertTrue(res_gti_2 == gti_1 )
|
||||
self.assertTrue(res_gti_3 == gti_1 )
|
||||
self.assertTrue(res_gti_4 == gti_1 )
|
||||
self.assertTrue(res_gti_3 == res_gti_4)
|
||||
|
||||
def test_union_2(self):
|
||||
gti_1 = Gti([100., 200.])
|
||||
gti_2 = Gti([150., 250.])
|
||||
|
||||
res_gti_1 = gti_1 + gti_2
|
||||
res_gti_2 = gti_2 + gti_1
|
||||
|
||||
self.assertEqual(res_gti_1.size , 1)
|
||||
self.assertEqual(res_gti_1.exposure(), 150)
|
||||
self.assertEqual(res_gti_1.start , 100)
|
||||
self.assertEqual(res_gti_1.stop , 250)
|
||||
self.assertTrue (res_gti_1 == res_gti_2)
|
||||
|
||||
def test_union_3(self):
|
||||
gti_1 = Gti([100., 200., 300., 400.])
|
||||
gti_2 = Gti([150., 250., 350., 450., 370., 470.])
|
||||
gti_3 = Gti([170., 270.])
|
||||
|
||||
res_gti = gti_1 + gti_2 + gti_3
|
||||
|
||||
self.assertEqual(res_gti.size , 2)
|
||||
self.assertEqual(res_gti.exposure(), 340)
|
||||
self.assertEqual(res_gti.start , 100)
|
||||
self.assertEqual(res_gti.stop , 470)
|
||||
|
||||
def test_subtraction_1(self):
|
||||
gti_1 = Gti([100., 200.])
|
||||
gti_2 = Gti()
|
||||
|
||||
res_gti_1 = gti_1 - None
|
||||
res_gti_2 = gti_1 - gti_1
|
||||
res_gti_3 = gti_1 - gti_2
|
||||
res_gti_4 = gti_2 - gti_1
|
||||
|
||||
self.assertTrue(res_gti_1 == gti_1 )
|
||||
self.assertTrue(res_gti_2 == self.gti_0)
|
||||
self.assertTrue(res_gti_3 == gti_1 )
|
||||
self.assertTrue(res_gti_4 == self.gti_0)
|
||||
|
||||
def test_subtraction_2(self):
|
||||
gti_1 = Gti([100., 200.])
|
||||
gti_2 = Gti([150., 250.])
|
||||
|
||||
res_gti = gti_1 - gti_2
|
||||
|
||||
self.assertEqual(res_gti.size , 1)
|
||||
self.assertEqual(res_gti.start , 100)
|
||||
self.assertEqual(res_gti.stop , 200)
|
||||
self.assertEqual(res_gti.exposure(), 50)
|
||||
self.assertTrue(
|
||||
np.array_equal(res_gti.array, np.array([[150., 200.]])))
|
||||
|
||||
|
||||
def test_subtraction_3(self):
|
||||
gti_2 = Gti([50., 120., 170., 250.])
|
||||
gti_1 = Gti([100., 200.])
|
||||
|
||||
res_gti = gti_2 - gti_1
|
||||
|
||||
self.assertEqual(res_gti.size , 2)
|
||||
self.assertEqual(res_gti.start , 50)
|
||||
self.assertEqual(res_gti.stop , 250)
|
||||
self.assertEqual(res_gti.exposure(), 50)
|
||||
self.assertTrue(
|
||||
np.array_equal(res_gti.array, np.array([[100., 120.], [170., 200.]])))
|
||||
|
||||
def test_intersection_1(self):
|
||||
gti_1 = Gti([100., 200.])
|
||||
gti_2 = Gti()
|
||||
|
||||
res_gti_1 = gti_1 * None
|
||||
res_gti_2 = gti_1 * gti_1
|
||||
res_gti_3 = gti_1 * gti_2
|
||||
res_gti_4 = gti_2 * gti_1
|
||||
|
||||
self.assertTrue(res_gti_1 == self.gti_0)
|
||||
self.assertTrue(res_gti_2 == gti_1 )
|
||||
self.assertTrue(res_gti_3 == self.gti_0)
|
||||
self.assertTrue(res_gti_4 == self.gti_0)
|
||||
|
||||
def test_intersection_2(self):
|
||||
gti_1 = Gti([100., 200.])
|
||||
gti_2 = Gti([50., 120., 170., 250.])
|
||||
|
||||
res_gti = gti_2 * gti_1
|
||||
|
||||
self.assertEqual(res_gti.size , 2)
|
||||
self.assertEqual(res_gti.start , 50)
|
||||
self.assertEqual(res_gti.stop , 250)
|
||||
self.assertEqual(res_gti.exposure(), 50)
|
||||
self.assertTrue(
|
||||
np.array_equal(res_gti.array, np.array([[100., 120.], [170., 200.]])))
|
||||
|
||||
def test_intersection_3(self):
|
||||
gti_1 = Gti([100., 200.])
|
||||
gti_2 = Gti([50., 120., 170., 250.])
|
||||
|
||||
res_gti = gti_1 * gti_2
|
||||
|
||||
self.assertEqual(res_gti.size , 2)
|
||||
self.assertEqual(res_gti.start , 50)
|
||||
self.assertEqual(res_gti.stop , 250)
|
||||
self.assertEqual(res_gti.exposure(), 50)
|
||||
self.assertTrue(
|
||||
np.array_equal(res_gti.array, np.array([[100., 120.], [170., 200.]])))
|
||||
|
||||
# def test_inversion(self):
|
||||
# pass
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user