Source code for pyrfu.mms.read_feeps_sector_masks_csv
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import csv
# Built-in imports
import os
# 3rd party imports
import numpy as np
# Local imports
from ..pyrf.datetime642unix import datetime642unix
from ..pyrf.iso86012datetime64 import iso86012datetime64
from ..pyrf.unix2datetime64 import unix2datetime64
__author__ = "Louis Richard"
__email__ = "louisr@irfu.se"
__copyright__ = "Copyright 2020-2023"
__license__ = "MIT"
__version__ = "2.4.2"
__status__ = "Prototype"
[docs]def read_feeps_sector_masks_csv(tint):
r"""Reads the FEEPS sectors to mask due to sunlight contamination from
csv files.x
Parameters
----------
tint : list of str
time range of interest [starttime, endtime] with the format
"YYYY-MM-DD", "YYYY-MM-DD" or to specify more or less than a day [
'YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss']
Returns
-------
mask : dict
Hash table containing the sectors to mask for each spacecraft and
sensor ID
"""
masks = {}
dates = [
1447200000.0000000, # 11/11/2015
1468022400.0000000, # 7/9/2016
1477612800.0000000, # 10/28/2016
1496188800.0000000, # 5/31/2017
1506988800.0000000, # 10/3/2017
1538697600.0000000,
] # 10/5/2018
# find the file closest to the start time
date = datetime642unix(iso86012datetime64(np.array(tint)[0]))
nearest_date = dates[np.argmin((np.abs(np.array(dates) - date)))]
nearest_date = unix2datetime64(np.array(nearest_date))
str_date = str(nearest_date.astype("<M8[D]"))
str_date = str_date.replace("-", "")
for mms_sc in np.arange(1, 5):
file_name = f"MMS{mms_sc:d}_FEEPS_ContaminatedSectors_{str_date}.csv"
csv_file = os.sep.join(
[os.path.dirname(os.path.abspath(__file__)), "sun", file_name],
)
with open(csv_file, "r", encoding="utf-8") as csv_file:
csv_data = [[float(x) for x in line] for line in csv.reader(csv_file)]
csv_data = np.array(csv_data)
for i in range(0, 12):
mask_vals = []
for val_idx in range(len(csv_data[:, i])):
if csv_data[val_idx, i] == 1:
mask_vals.append(val_idx)
masks[f"mms{mms_sc:d}_imask_top-{i + 1:d}"] = mask_vals
for i in range(0, 12):
mask_vals = []
for val_idx in range(len(csv_data[:, i + 12])):
if csv_data[val_idx, i + 12] == 1:
mask_vals.append(val_idx)
masks[f"mms{mms_sc:d}_imask_bottom-{i + 1:d}"] = mask_vals
return masks