Source code for pynpoint.readwrite.attr_writing

"""
Modules for writing data as text file.
"""

import os

from typing import Optional

import numpy as np

from typeguard import typechecked

from pynpoint.core.processing import WritingModule


[docs] class AttributeWritingModule(WritingModule): """ Module for writing a 1D or 2D array of non-static attributes to a text file. """ __author__ = "Tomas Stolker" @typechecked def __init__( self, name_in: str, data_tag: str, attribute: str, file_name: str = "attributes.dat", output_dir: Optional[str] = None, header: Optional[str] = None, ) -> None: """ Parameters ---------- name_in : str Unique name of the module instance. data_tag : str Tag of the database entry from which the ``PARANG`` attribute is read. attribute : str Name of the non-static attribute as given in the central database (e.g., 'INDEX' or 'STAR_POSITION'). file_name : str Name of the output file. output_dir : str, None Output directory where the text file will be stored. If no path is specified then the Pypeline default output location is used. header : str, None Header that is written at the top of the text file. Returns ------- NoneType None """ super().__init__(name_in, output_dir=output_dir) self.m_data_port = self.add_input_port(data_tag) self.m_file_name = file_name self.m_attribute = attribute self.m_header = header
[docs] @typechecked def run(self) -> None: """ Run method of the module. Writes the non-static attributes (1D or 2D) to a a text file. Returns ------- NoneType None """ if self.m_header is None: self.m_header = "" print("Writing attribute data...", end="") out_name = os.path.join(self.m_output_location, self.m_file_name) if self.m_attribute not in self.m_data_port.get_all_non_static_attributes(): raise ValueError( f"The '{self.m_attribute}' attribute is not present in " f"'{self.m_data_port.tag}'." ) values = self.m_data_port.get_attribute(self.m_attribute) np.savetxt(out_name, values, header=self.m_header, comments="# ") print(" [DONE]") self.m_data_port.close_port()
[docs] class ParangWritingModule(WritingModule): """ Module for writing a list of parallactic angles to a text file. """ __author__ = "Tomas Stolker" @typechecked def __init__( self, name_in: str, data_tag: str, file_name: str = "parang.dat", output_dir: Optional[str] = None, header: Optional[str] = None, ) -> None: """ Parameters ---------- name_in : str Unique name of the module instance. data_tag : str Tag of the database entry from which the ``PARANG`` attribute is read. file_name : str Name of the output file. output_dir : str, None Output directory where the text file will be stored. If no path is specified then the Pypeline default output location is used. header : str, None Header that is written at the top of the text file. Returns ------- NoneType None """ super().__init__(name_in, output_dir=output_dir) self.m_data_port = self.add_input_port(data_tag) self.m_file_name = file_name self.m_header = header
[docs] @typechecked def run(self) -> None: """ Run method of the module. Writes the parallactic angles from the ``PARANG`` attribute of the specified database tag to a a text file. Returns ------- NoneType None """ print("Writing parallactic angles...", end="") if self.m_header is None: self.m_header = "" out_name = os.path.join(self.m_output_location, self.m_file_name) if "PARANG" not in self.m_data_port.get_all_non_static_attributes(): raise ValueError( f"The PARANG attribute is not present in '{self.m_data_port.tag}'." ) parang = self.m_data_port.get_attribute("PARANG") np.savetxt(out_name, parang, header=self.m_header, comments="# ") print(" [DONE]") self.m_data_port.close_port()