def get_fill_sample_size_variable(archetype, file_only): attrs = OrderedDict() attrs['standard_name'] = constants.DEFAULT_SAMPLE_SIZE_STANDARD_NAME attrs['long_name'] = constants.DEFAULT_SAMPLE_SIZE_LONG_NAME fill_sample_size = Variable(name='n_{}'.format(archetype.name), dimensions=archetype.dimensions, attrs=attrs, dtype=np.int32) if not file_only: fill_sample_size.allocate_value() return fill_sample_size
def get_fill_variable(self, archetype, name, dimensions, file_only=False, dtype=None, add_repeat_record=True, add_repeat_record_archetype_name=True, variable_value=None): """ Initialize a return variable for a calculation. :param archetype: An archetypical variable to use for the creation of the output variable. :type archetype: :class:`ocgis.Variable` :param str name: Name of the output variable. :param dimensions: Dimension tuple for the variable creation. The dimensions from `archetype` or not used because output dimensions are often different. Temporal grouping is an example of this. :type dimensions: tuple(:class:`ocgis.Dimension`, ...) :param bool file_only: If `True`, this is a file-only operation and no value should be allocated. :param type dtype: The data type for the output variable. :param bool add_repeat_record: If `True`, add a repeat record to the variable containing the calculation key. :param add_repeat_record_archetype_name: If `True`, add the `archetype` name repeat record. :param variable_value: If not `None`, use this as the variable value during initialization. :return: :class:`ocgis.Variable` """ # If a default data type was provided at initialization, use this value otherwise use the data type from the # input value. if dtype is None: if self.dtype is None: dtype = archetype.dtype else: dtype = self.get_default_dtype() if self.fill_value is None: fill_value = archetype.fill_value else: fill_value = self.fill_value # Provide a default fill value for file only operations. This will guarantee variable value arrays are # initialized with a default fill value. if file_only and fill_value is None: fill_value = get_default_fill_value_from_dtype(dtype) attrs = OrderedDict() attrs['standard_name'] = self.standard_name attrs['long_name'] = self.long_name units = self.get_output_units(archetype) if add_repeat_record: repeat_record = [(HeaderName.CALCULATION_KEY, self.key)] if add_repeat_record_archetype_name: repeat_record.append((HeaderName.CALCULATION_SOURCE_VARIABLE, archetype.name)) else: repeat_record = None fill = Variable(name=name, dimensions=dimensions, dtype=dtype, fill_value=fill_value, attrs=attrs, units=units, repeat_record=repeat_record, value=variable_value) if not file_only and variable_value is None: fill.allocate_value() return fill