def determine_instrument_type_from_blockette(parser, channel_id): """ Determines type of instrument used to record a channel with provided channel_id. :type parser: obspy.io.xseed.parser.Parser :param parser: Parser object parsed from Full SEED or dataless or StationXML. :type channel_id: str :param channel_id: Channel_id object generated by obspy.trace.Trace.id :rtype: str :return: Returns str determining the type of instrument """ return translate_unit_to_instrument_type(determine_unit_from_blockette(parser, channel_id)) def determine_unit_from_blockette(parser, channel_id): """ Determines the unit used to record a channel with provided channel_id. :type parser: obspy.io.xseed.parser.Parser :param parser: Parser object parsed from Full SEED or dataless or StationXML. :type channel_id: str :param channel_id: Channel_id object generated by obspy.trace.Trace.id :rtype: str :return: Returns str containing a real unit name that can be passed to translate_unit_to_instrument_type method to obtain a str compatible with response removal procedure """ for blkt in parser._select(channel_id): if not blkt.id == 52: continue for bl in parser.blockettes[34]: if bl.unit_lookup_code == blkt.units_of_signal_response: return bl.unit_name def determine_instrument_type_from_inventory(inv, channel_id, time): """ Determines type of instrument used to record a channel with provided channel_id at the provided time. :type inv: obspy.core.inventory.inventory.Inventory :param inv: ObsPy Inventory object parsed from a file :type channel_id: str :param channel_id: Channel_id object generated by obspy.trace.Trace.id :type time: obspy.core.utcdatetime.UTCDateTime :param time: time for which the unit should be determined in the inventory (e.g. start time of a trace) :rtype: str :return: Returns str determining the type of instrument """ return translate_unit_to_instrument_type(determine_unit_from_inventory(inv, channel_id, time)) def determine_unit_from_inventory(inv, channel_id, time): """ Determines unit used to record a channel with provided channel_id at the provided time. :type inv: obspy.core.inventory.inventory.Inventory :param inv: ObsPy Inventory object parsed from a file :type channel_id: str :param channel_id: Channel_id object generated by obspy.trace.Trace.id :type time: obspy.core.utcdatetime.UTCDateTime :param time: time for which the unit should be determined in the inventory (e.g. start time of a trace) :rtype: str :return: Returns str containing a real unit name that can be passed to translate_unit_to_instrument_type method to obtain a str compatible with response removal procedure """ resp = inv.get_response(channel_id, time) return resp.instrument_sensitivity.input_units def translate_unit_to_instrument_type(unit_name): if unit_name == "M": return "DISP" elif unit_name == "M/S": return "VEL" elif unit_name == "M/S**2": return "ACC" else: raise TypeError("Unknown unit code ", unit_name) def translate_instrument_type_to_unit(unit_type): if unit_type == "DISP": return "M" elif unit_type == "VEL": return "M/S" elif unit_type == "ACC": return "M/S**2" else: raise TypeError("Unknown unit code ", unit_type)