==================== Tutorial: ELS counts ==================== Problem 1 ========= I want to get VEX/ELS count data between 2007-10-05T01:30:00 to 2007-10-05T01:50:00. Answer 1 -------- A recommended way is to use a :ref:`data center <aspera_data_center>` as .. code-block:: python >>> import datetime >>> t0 = datetime.datetime(2007, 10, 5, 1, 30) >>> t1 = datetime.datetime(2007, 10, 5, 1, 50) >>> import irfpy.vels.rawdata >>> dc = irfpy.vels.rawdata.DataCenterEls() >>> tlist, elsmatrix = dc.get_array(t0, t1) Here ``tlist`` includes the list of the (start) time, and ``elsmatrix`` contains a list of numpy array. >>> print(tlist) [datetime.datetime(2007, 10, 5, 1, 30, 3, 690002) datetime.datetime(2007, 10, 5, 1, 30, 7, 690000) datetime.datetime(2007, 10, 5, 1, 30, 16, 129001) ... datetime.datetime(2007, 10, 5, 1, 49, 53, 538999) datetime.datetime(2007, 10, 5, 1, 49, 57, 538998)] >>> print(len(tlist)) 261 >>> print(len(elsmatrix)) 261 >>> elsmatrix = np.array(elsmatrix) # One can convert to the numpy array >>> print(elsmatrix.shape) # The array has a shape of (ndata=261, energy=128, dir=16) (261, 128, 16) Answer 1 (alternative, no more supported way) --------------------------------------------- The function :func:`irfpy.vels.scidata.get_counts` will provide the ELS data. .. code-block:: python >>> import irfpy.vels.scidata as velsdata >>> import datetime >>> t0 = datetime.datetime(2007, 10, 5, 1, 30) >>> t1 = datetime.datetime(2007, 10, 5, 1, 50) >>> tlist, elsmatrix = velsdata.get_counts(t0, t1) The returned is a tuple, with the list of the start time and the matrix. .. code-block:: python >>> print(tlist) [datetime.datetime(2007, 10, 5, 1, 30, 3, 690002) datetime.datetime(2007, 10, 5, 1, 30, 7, 690000) datetime.datetime(2007, 10, 5, 1, 30, 16, 129001) datetime.datetime(2007, 10, 5, 1, 30, 20, 128999) ... datetime.datetime(2007, 10, 5, 1, 49, 49, 539001) datetime.datetime(2007, 10, 5, 1, 49, 53, 538999) datetime.datetime(2007, 10, 5, 1, 49, 57, 538998)] >>> print(len(tlist)) 261 >>> print(elsmatrix) [[[ 0. 0. 0. ..., 0. 0. 0.] [ 0. 0. 0. ..., 0. 0. 0.] [ 0. 0. 0. ..., 0. 0. 0.] ..., [ 0. 0. 0. ..., 0. 0. 0.] [ 0. 0. 0. ..., 0. 0. 0.] [ 0. 0. 0. ..., 0. 0. 0.]] ... [[ 0. 0. 0. ..., 0. 0. 0.] [ 0. 0. 0. ..., 0. 0. 0.] [ 1. 0. 0. ..., 2. 1. 0.] ..., [ 0. 1. 0. ..., 21. 20. 16.] [ 0. 0. 0. ..., 17. 15. 16.] [ 0. 0. 0. ..., 2. 2. 5.]]] >>> print(elsmatrix.shape) (128, 16, 261) During the given 20 minutes, ELS produced 261 spectra (here one spectrum is corresponding to a matrix with (E=128, S=16) shape). Each matrix has (E=128, S=16) shape, so that the full matrix has a shape of (128, 16, 261). The time observed can be referred to by ``tlist``. .. warning:: Note the order of the matrix is different from the recommended way. Problem 2 ========= I want to get MEX/ELS count data between 2007-10-20T07:30:00 to 2007-10-20T07:45:00. Answer 2 (recommended) ---------------------- How do you do? Let's exercise referring to the Anwer 1 ;) Answer 2 (alternative, non-supported way) ----------------------------------------- Almost identical call to VEX/ELS, but one can use :func:`irfpy.mels.scidata.get_counts`. .. code-block:: python >>> import irfpy.mels.scidata as melsdata >>> import datetime >>> t0 = datetime.datetime(2007, 10, 20, 7, 30) >>> t1 = datetime.datetime(2007, 10, 20, 7, 45) >>> tlist, elsmatrix = melsdata.get_counts(t0, t1) Check by yourself that the ``tilst`` has 197 elements, and ``elsmatrix`` is an array with a shape of ``(128, 16, 197)``. Exercise ======== 1. What is the maximum count rate recorded by MEX/ELS for the time period between 2007-10-08T11:00:00 and 2007-10-08T14:00:00? 2. How many energy and sector bins are recorded by zero counts for the time period between 2007-10-25T00:00:00 and 2007-10-25T01:00:00?