diff --git a/docs/source/apidocs/halodrops/halodrops.helper.md b/docs/source/apidocs/halodrops/halodrops.helper.md index d6051a6..e59671a 100644 --- a/docs/source/apidocs/halodrops/halodrops.helper.md +++ b/docs/source/apidocs/halodrops/halodrops.helper.md @@ -16,3 +16,209 @@ halodrops.helper.rawreader halodrops.helper.paths ``` + +## Package Contents + +### Functions + +````{list-table} +:class: autosummary longtable +:align: left + +* - {py:obj}`get_bool ` + - ```{autodoc2-docstring} halodrops.helper.get_bool + :summary: + ``` +* - {py:obj}`convert_rh_to_si ` + - ```{autodoc2-docstring} halodrops.helper.convert_rh_to_si + :summary: + ``` +* - {py:obj}`convert_pres_to_si ` + - ```{autodoc2-docstring} halodrops.helper.convert_pres_to_si + :summary: + ``` +* - {py:obj}`convert_tdry_to_si ` + - ```{autodoc2-docstring} halodrops.helper.convert_tdry_to_si + :summary: + ``` +* - {py:obj}`get_si_converter_function_based_on_var ` + - ```{autodoc2-docstring} halodrops.helper.get_si_converter_function_based_on_var + :summary: + ``` +* - {py:obj}`calc_saturation_pressure ` + - ```{autodoc2-docstring} halodrops.helper.calc_saturation_pressure + :summary: + ``` +* - {py:obj}`calc_q_from_rh ` + - ```{autodoc2-docstring} halodrops.helper.calc_q_from_rh + :summary: + ``` +* - {py:obj}`calc_theta_from_T ` + - ```{autodoc2-docstring} halodrops.helper.calc_theta_from_T + :summary: + ``` +```` + +### Data + +````{list-table} +:class: autosummary longtable +:align: left + +* - {py:obj}`l2_variables ` + - ```{autodoc2-docstring} halodrops.helper.l2_variables + :summary: + ``` +* - {py:obj}`encoding_variables ` + - ```{autodoc2-docstring} halodrops.helper.encoding_variables + :summary: + ``` +* - {py:obj}`variable_compression_properties ` + - ```{autodoc2-docstring} halodrops.helper.variable_compression_properties + :summary: + ``` +* - {py:obj}`path_to_flight_ids ` + - ```{autodoc2-docstring} halodrops.helper.path_to_flight_ids + :summary: + ``` +* - {py:obj}`path_to_l0_files ` + - ```{autodoc2-docstring} halodrops.helper.path_to_l0_files + :summary: + ``` +* - {py:obj}`l2_flight_attributes_map ` + - ```{autodoc2-docstring} halodrops.helper.l2_flight_attributes_map + :summary: + ``` +* - {py:obj}`l2_filename_template ` + - ```{autodoc2-docstring} halodrops.helper.l2_filename_template + :summary: + ``` +```` + +### API + +````{py:data} l2_variables +:canonical: halodrops.helper.l2_variables +:value: > + None + +```{autodoc2-docstring} halodrops.helper.l2_variables +``` + +```` + +````{py:data} encoding_variables +:canonical: halodrops.helper.encoding_variables +:value: > + None + +```{autodoc2-docstring} halodrops.helper.encoding_variables +``` + +```` + +````{py:data} variable_compression_properties +:canonical: halodrops.helper.variable_compression_properties +:value: > + 'dict(...)' + +```{autodoc2-docstring} halodrops.helper.variable_compression_properties +``` + +```` + +````{py:data} path_to_flight_ids +:canonical: halodrops.helper.path_to_flight_ids +:value: > + '{platform}/Level_0' + +```{autodoc2-docstring} halodrops.helper.path_to_flight_ids +``` + +```` + +````{py:data} path_to_l0_files +:canonical: halodrops.helper.path_to_l0_files +:value: > + '{platform}/Level_0/{flight_id}' + +```{autodoc2-docstring} halodrops.helper.path_to_l0_files +``` + +```` + +````{py:data} l2_flight_attributes_map +:canonical: halodrops.helper.l2_flight_attributes_map +:value: > + None + +```{autodoc2-docstring} halodrops.helper.l2_flight_attributes_map +``` + +```` + +````{py:data} l2_filename_template +:canonical: halodrops.helper.l2_filename_template +:value: > + '{platform}_{launch_time}_{flight_id}_{serial_id}_Level_2.nc' + +```{autodoc2-docstring} halodrops.helper.l2_filename_template +``` + +```` + +````{py:function} get_bool(s) +:canonical: halodrops.helper.get_bool + +```{autodoc2-docstring} halodrops.helper.get_bool +``` +```` + +````{py:function} convert_rh_to_si(value) +:canonical: halodrops.helper.convert_rh_to_si + +```{autodoc2-docstring} halodrops.helper.convert_rh_to_si +``` +```` + +````{py:function} convert_pres_to_si(value) +:canonical: halodrops.helper.convert_pres_to_si + +```{autodoc2-docstring} halodrops.helper.convert_pres_to_si +``` +```` + +````{py:function} convert_tdry_to_si(value) +:canonical: halodrops.helper.convert_tdry_to_si + +```{autodoc2-docstring} halodrops.helper.convert_tdry_to_si +``` +```` + +````{py:function} get_si_converter_function_based_on_var(var_name) +:canonical: halodrops.helper.get_si_converter_function_based_on_var + +```{autodoc2-docstring} halodrops.helper.get_si_converter_function_based_on_var +``` +```` + +````{py:function} calc_saturation_pressure(temperature_K, method='hardy1998') +:canonical: halodrops.helper.calc_saturation_pressure + +```{autodoc2-docstring} halodrops.helper.calc_saturation_pressure +``` +```` + +````{py:function} calc_q_from_rh(ds) +:canonical: halodrops.helper.calc_q_from_rh + +```{autodoc2-docstring} halodrops.helper.calc_q_from_rh +``` +```` + +````{py:function} calc_theta_from_T(dataset) +:canonical: halodrops.helper.calc_theta_from_T + +```{autodoc2-docstring} halodrops.helper.calc_theta_from_T +``` +```` diff --git a/docs/source/apidocs/halodrops/halodrops.helper.paths.md b/docs/source/apidocs/halodrops/halodrops.helper.paths.md index 5cd399e..fa43dca 100644 --- a/docs/source/apidocs/halodrops/halodrops.helper.paths.md +++ b/docs/source/apidocs/halodrops/halodrops.helper.paths.md @@ -15,8 +15,12 @@ :class: autosummary longtable :align: left -* - {py:obj}`Paths ` - - ```{autodoc2-docstring} halodrops.helper.paths.Paths +* - {py:obj}`Platform ` + - ```{autodoc2-docstring} halodrops.helper.paths.Platform + :summary: + ``` +* - {py:obj}`Flight ` + - ```{autodoc2-docstring} halodrops.helper.paths.Flight :summary: ``` ```` @@ -38,45 +42,67 @@ ````{py:data} module_logger :canonical: halodrops.helper.paths.module_logger :value: > - None + 'getLogger(...)' ```{autodoc2-docstring} halodrops.helper.paths.module_logger ``` ```` -`````{py:class} Paths(directory, flightdir) -:canonical: halodrops.helper.paths.Paths +`````{py:class} Platform(data_directory, platform_id, platform_directory_name=None, path_structure=path_to_flight_ids) +:canonical: halodrops.helper.paths.Platform + +```{autodoc2-docstring} halodrops.helper.paths.Platform +``` + +```{rubric} Initialization +``` + +```{autodoc2-docstring} halodrops.helper.paths.Platform.__init__ +``` + +````{py:method} get_flight_ids() +:canonical: halodrops.helper.paths.Platform.get_flight_ids + +```{autodoc2-docstring} halodrops.helper.paths.Platform.get_flight_ids +``` + +```` + +````` + +`````{py:class} Flight(data_directory, flight_id, platform_id, path_structure=path_to_l0_files) +:canonical: halodrops.helper.paths.Flight -```{autodoc2-docstring} halodrops.helper.paths.Paths +```{autodoc2-docstring} halodrops.helper.paths.Flight ``` ```{rubric} Initialization ``` -```{autodoc2-docstring} halodrops.helper.paths.Paths.__init__ +```{autodoc2-docstring} halodrops.helper.paths.Flight.__init__ ``` ````{py:method} get_all_afiles() -:canonical: halodrops.helper.paths.Paths.get_all_afiles +:canonical: halodrops.helper.paths.Flight.get_all_afiles -```{autodoc2-docstring} halodrops.helper.paths.Paths.get_all_afiles +```{autodoc2-docstring} halodrops.helper.paths.Flight.get_all_afiles ``` ```` ````{py:method} quicklooks_path() -:canonical: halodrops.helper.paths.Paths.quicklooks_path +:canonical: halodrops.helper.paths.Flight.quicklooks_path -```{autodoc2-docstring} halodrops.helper.paths.Paths.quicklooks_path +```{autodoc2-docstring} halodrops.helper.paths.Flight.quicklooks_path ``` ```` ````{py:method} populate_sonde_instances() -> typing.Dict -:canonical: halodrops.helper.paths.Paths.populate_sonde_instances +:canonical: halodrops.helper.paths.Flight.populate_sonde_instances -```{autodoc2-docstring} halodrops.helper.paths.Paths.populate_sonde_instances +```{autodoc2-docstring} halodrops.helper.paths.Flight.populate_sonde_instances ``` ```` diff --git a/docs/source/apidocs/halodrops/halodrops.helper.rawreader.md b/docs/source/apidocs/halodrops/halodrops.helper.rawreader.md index dc833e4..b143034 100644 --- a/docs/source/apidocs/halodrops/halodrops.helper.rawreader.md +++ b/docs/source/apidocs/halodrops/halodrops.helper.rawreader.md @@ -50,7 +50,7 @@ ````{py:data} module_logger :canonical: halodrops.helper.rawreader.module_logger :value: > - None + 'getLogger(...)' ```{autodoc2-docstring} halodrops.helper.rawreader.module_logger ``` diff --git a/docs/source/apidocs/halodrops/halodrops.md b/docs/source/apidocs/halodrops/halodrops.md index cf7806b..e2d6605 100644 --- a/docs/source/apidocs/halodrops/halodrops.md +++ b/docs/source/apidocs/halodrops/halodrops.md @@ -22,11 +22,24 @@ halodrops.helper :titlesonly: :maxdepth: 1 -halodrops.sonde +halodrops.processor +halodrops.pipeline ``` ## Package Contents +### Functions + +````{list-table} +:class: autosummary longtable +:align: left + +* - {py:obj}`main ` + - ```{autodoc2-docstring} halodrops.main + :summary: + ``` +```` + ### Data ````{list-table} @@ -64,7 +77,7 @@ halodrops.sonde ````{py:data} logger :canonical: halodrops.logger :value: > - None + 'getLogger(...)' ```{autodoc2-docstring} halodrops.logger ``` @@ -74,7 +87,7 @@ halodrops.sonde ````{py:data} fh_info :canonical: halodrops.fh_info :value: > - None + 'FileHandler(...)' ```{autodoc2-docstring} halodrops.fh_info ``` @@ -84,7 +97,7 @@ halodrops.sonde ````{py:data} fh_debug :canonical: halodrops.fh_debug :value: > - None + 'FileHandler(...)' ```{autodoc2-docstring} halodrops.fh_debug ``` @@ -94,7 +107,7 @@ halodrops.sonde ````{py:data} ch :canonical: halodrops.ch :value: > - None + 'StreamHandler(...)' ```{autodoc2-docstring} halodrops.ch ``` @@ -113,9 +126,16 @@ halodrops.sonde ````{py:data} formatter :canonical: halodrops.formatter :value: > - None + 'Formatter(...)' ```{autodoc2-docstring} halodrops.formatter ``` ```` + +````{py:function} main() +:canonical: halodrops.main + +```{autodoc2-docstring} halodrops.main +``` +```` diff --git a/docs/source/apidocs/halodrops/halodrops.pipeline.md b/docs/source/apidocs/halodrops/halodrops.pipeline.md new file mode 100644 index 0000000..f82388d --- /dev/null +++ b/docs/source/apidocs/halodrops/halodrops.pipeline.md @@ -0,0 +1,174 @@ +# {py:mod}`halodrops.pipeline` + +```{py:module} halodrops.pipeline +``` + +```{autodoc2-docstring} halodrops.pipeline +:allowtitles: +``` + +## Module Contents + +### Functions + +````{list-table} +:class: autosummary longtable +:align: left + +* - {py:obj}`get_mandatory_args ` + - ```{autodoc2-docstring} halodrops.pipeline.get_mandatory_args + :summary: + ``` +* - {py:obj}`get_mandatory_values_from_config ` + - ```{autodoc2-docstring} halodrops.pipeline.get_mandatory_values_from_config + :summary: + ``` +* - {py:obj}`get_nondefaults_from_config ` + - ```{autodoc2-docstring} halodrops.pipeline.get_nondefaults_from_config + :summary: + ``` +* - {py:obj}`get_args_for_function ` + - ```{autodoc2-docstring} halodrops.pipeline.get_args_for_function + :summary: + ``` +* - {py:obj}`get_platforms ` + - ```{autodoc2-docstring} halodrops.pipeline.get_platforms + :summary: + ``` +* - {py:obj}`create_and_populate_flight_object ` + - ```{autodoc2-docstring} halodrops.pipeline.create_and_populate_flight_object + :summary: + ``` +* - {py:obj}`iterate_Sonde_method_over_dict_of_Sondes_objects ` + - ```{autodoc2-docstring} halodrops.pipeline.iterate_Sonde_method_over_dict_of_Sondes_objects + :summary: + ``` +* - {py:obj}`sondes_to_gridded ` + - ```{autodoc2-docstring} halodrops.pipeline.sondes_to_gridded + :summary: + ``` +* - {py:obj}`iterate_method_over_dataset ` + - ```{autodoc2-docstring} halodrops.pipeline.iterate_method_over_dataset + :summary: + ``` +* - {py:obj}`gridded_to_pattern ` + - ```{autodoc2-docstring} halodrops.pipeline.gridded_to_pattern + :summary: + ``` +* - {py:obj}`run_substep ` + - ```{autodoc2-docstring} halodrops.pipeline.run_substep + :summary: + ``` +* - {py:obj}`run_pipeline ` + - ```{autodoc2-docstring} halodrops.pipeline.run_pipeline + :summary: + ``` +```` + +### Data + +````{list-table} +:class: autosummary longtable +:align: left + +* - {py:obj}`pipeline ` + - ```{autodoc2-docstring} halodrops.pipeline.pipeline + :summary: + ``` +```` + +### API + +````{py:function} get_mandatory_args(function) +:canonical: halodrops.pipeline.get_mandatory_args + +```{autodoc2-docstring} halodrops.pipeline.get_mandatory_args +``` +```` + +````{py:function} get_mandatory_values_from_config(config, mandatory_args) +:canonical: halodrops.pipeline.get_mandatory_values_from_config + +```{autodoc2-docstring} halodrops.pipeline.get_mandatory_values_from_config +``` +```` + +````{py:function} get_nondefaults_from_config(config: configparser.ConfigParser, obj: callable) -> dict +:canonical: halodrops.pipeline.get_nondefaults_from_config + +```{autodoc2-docstring} halodrops.pipeline.get_nondefaults_from_config +``` +```` + +````{py:function} get_args_for_function(config, function) +:canonical: halodrops.pipeline.get_args_for_function + +```{autodoc2-docstring} halodrops.pipeline.get_args_for_function +``` +```` + +````{py:function} get_platforms(config) +:canonical: halodrops.pipeline.get_platforms + +```{autodoc2-docstring} halodrops.pipeline.get_platforms +``` +```` + +````{py:function} create_and_populate_flight_object(config: configparser.ConfigParser) -> (dict[halodrops.helper.paths.Platform], dict[halodrops.processor.Sonde]) +:canonical: halodrops.pipeline.create_and_populate_flight_object + +```{autodoc2-docstring} halodrops.pipeline.create_and_populate_flight_object +``` +```` + +````{py:function} iterate_Sonde_method_over_dict_of_Sondes_objects(obj: dict, functions: list, config: configparser.ConfigParser) -> dict +:canonical: halodrops.pipeline.iterate_Sonde_method_over_dict_of_Sondes_objects + +```{autodoc2-docstring} halodrops.pipeline.iterate_Sonde_method_over_dict_of_Sondes_objects +``` +```` + +````{py:function} sondes_to_gridded(sondes: dict) -> xarray.Dataset +:canonical: halodrops.pipeline.sondes_to_gridded + +```{autodoc2-docstring} halodrops.pipeline.sondes_to_gridded +``` +```` + +````{py:function} iterate_method_over_dataset(dataset: xarray.Dataset, functions: list) -> xarray.Dataset +:canonical: halodrops.pipeline.iterate_method_over_dataset + +```{autodoc2-docstring} halodrops.pipeline.iterate_method_over_dataset +``` +```` + +````{py:function} gridded_to_pattern(gridded: xarray.Dataset, config: configparser.ConfigParser) -> xarray.Dataset +:canonical: halodrops.pipeline.gridded_to_pattern + +```{autodoc2-docstring} halodrops.pipeline.gridded_to_pattern +``` +```` + +````{py:function} run_substep(previous_substep_output, substep: dict, config: configparser.ConfigParser) +:canonical: halodrops.pipeline.run_substep + +```{autodoc2-docstring} halodrops.pipeline.run_substep +``` +```` + +````{py:function} run_pipeline(pipeline: dict, config: configparser.ConfigParser) +:canonical: halodrops.pipeline.run_pipeline + +```{autodoc2-docstring} halodrops.pipeline.run_pipeline +``` +```` + +````{py:data} pipeline +:canonical: halodrops.pipeline.pipeline +:value: > + None + +```{autodoc2-docstring} halodrops.pipeline.pipeline +``` + +```` diff --git a/docs/source/apidocs/halodrops/halodrops.processor.md b/docs/source/apidocs/halodrops/halodrops.processor.md new file mode 100644 index 0000000..00fcf0a --- /dev/null +++ b/docs/source/apidocs/halodrops/halodrops.processor.md @@ -0,0 +1,314 @@ +# {py:mod}`halodrops.processor` + +```{py:module} halodrops.processor +``` + +```{autodoc2-docstring} halodrops.processor +:allowtitles: +``` + +## Module Contents + +### Classes + +````{list-table} +:class: autosummary longtable +:align: left + +* - {py:obj}`Sonde ` + - ```{autodoc2-docstring} halodrops.processor.Sonde + :summary: + ``` +```` + +### Data + +````{list-table} +:class: autosummary longtable +:align: left + +* - {py:obj}`_no_default ` + - ```{autodoc2-docstring} halodrops.processor._no_default + :summary: + ``` +```` + +### API + +````{py:data} _no_default +:canonical: halodrops.processor._no_default +:value: > + 'object(...)' + +```{autodoc2-docstring} halodrops.processor._no_default +``` + +```` + +`````{py:class} Sonde +:canonical: halodrops.processor.Sonde + +```{autodoc2-docstring} halodrops.processor.Sonde +``` + +````{py:attribute} sort_index +:canonical: halodrops.processor.Sonde.sort_index +:type: numpy.datetime64 +:value: > + 'field(...)' + +```{autodoc2-docstring} halodrops.processor.Sonde.sort_index +``` + +```` + +````{py:attribute} serial_id +:canonical: halodrops.processor.Sonde.serial_id +:type: str +:value: > + None + +```{autodoc2-docstring} halodrops.processor.Sonde.serial_id +``` + +```` + +````{py:attribute} _ +:canonical: halodrops.processor.Sonde._ +:type: dataclasses.KW_ONLY +:value: > + None + +```{autodoc2-docstring} halodrops.processor.Sonde._ +``` + +```` + +````{py:attribute} launch_time +:canonical: halodrops.processor.Sonde.launch_time +:type: typing.Optional[typing.Any] +:value: > + None + +```{autodoc2-docstring} halodrops.processor.Sonde.launch_time +``` + +```` + +````{py:method} __post_init__() +:canonical: halodrops.processor.Sonde.__post_init__ + +```{autodoc2-docstring} halodrops.processor.Sonde.__post_init__ +``` + +```` + +````{py:method} add_flight_id(flight_id: str) -> None +:canonical: halodrops.processor.Sonde.add_flight_id + +```{autodoc2-docstring} halodrops.processor.Sonde.add_flight_id +``` + +```` + +````{py:method} add_platform_id(platform_id: str) -> None +:canonical: halodrops.processor.Sonde.add_platform_id + +```{autodoc2-docstring} halodrops.processor.Sonde.add_platform_id +``` + +```` + +````{py:method} add_spatial_coordinates_at_launch(launch_coordinates: typing.List) -> None +:canonical: halodrops.processor.Sonde.add_spatial_coordinates_at_launch + +```{autodoc2-docstring} halodrops.processor.Sonde.add_spatial_coordinates_at_launch +``` + +```` + +````{py:method} add_launch_detect(launch_detect_bool: bool) -> None +:canonical: halodrops.processor.Sonde.add_launch_detect + +```{autodoc2-docstring} halodrops.processor.Sonde.add_launch_detect +``` + +```` + +````{py:method} add_afile(path_to_afile: str) -> None +:canonical: halodrops.processor.Sonde.add_afile + +```{autodoc2-docstring} halodrops.processor.Sonde.add_afile +``` + +```` + +````{py:method} add_level_dir() +:canonical: halodrops.processor.Sonde.add_level_dir + +```{autodoc2-docstring} halodrops.processor.Sonde.add_level_dir +``` + +```` + +````{py:method} run_aspen(path_to_postaspenfile: str = None) -> None +:canonical: halodrops.processor.Sonde.run_aspen + +```{autodoc2-docstring} halodrops.processor.Sonde.run_aspen +``` + +```` + +````{py:method} add_aspen_ds() -> None +:canonical: halodrops.processor.Sonde.add_aspen_ds + +```{autodoc2-docstring} halodrops.processor.Sonde.add_aspen_ds +``` + +```` + +````{py:method} filter_no_launch_detect() -> None +:canonical: halodrops.processor.Sonde.filter_no_launch_detect + +```{autodoc2-docstring} halodrops.processor.Sonde.filter_no_launch_detect +``` + +```` + +````{py:method} detect_floater(gpsalt_threshold: float = 25, consecutive_time_steps: int = 3, skip: bool = False) +:canonical: halodrops.processor.Sonde.detect_floater + +```{autodoc2-docstring} halodrops.processor.Sonde.detect_floater +``` + +```` + +````{py:method} crop_aspen_ds_to_landing_time() +:canonical: halodrops.processor.Sonde.crop_aspen_ds_to_landing_time + +```{autodoc2-docstring} halodrops.processor.Sonde.crop_aspen_ds_to_landing_time +``` + +```` + +````{py:method} profile_fullness(variable_dict={'u_wind': 4, 'v_wind': 4, 'rh': 2, 'tdry': 2, 'pres': 2}, time_dimension='time', timestamp_frequency=4, fullness_threshold=0.75, add_fullness_fraction_attribute=True, skip=False) +:canonical: halodrops.processor.Sonde.profile_fullness + +```{autodoc2-docstring} halodrops.processor.Sonde.profile_fullness +``` + +```` + +````{py:method} near_surface_coverage(variables=['u_wind', 'v_wind', 'rh', 'tdry', 'pres'], alt_bounds=[0, 1000], alt_dimension_name='alt', count_threshold=50, add_near_surface_count_attribute=True, skip=False) +:canonical: halodrops.processor.Sonde.near_surface_coverage + +```{autodoc2-docstring} halodrops.processor.Sonde.near_surface_coverage +``` + +```` + +````{py:method} filter_qc_fail(filter_flags=None) +:canonical: halodrops.processor.Sonde.filter_qc_fail + +```{autodoc2-docstring} halodrops.processor.Sonde.filter_qc_fail +``` + +```` + +````{py:method} create_interim_l2_ds() +:canonical: halodrops.processor.Sonde.create_interim_l2_ds + +```{autodoc2-docstring} halodrops.processor.Sonde.create_interim_l2_ds +``` + +```` + +````{py:method} convert_to_si(variables=['rh', 'pres', 'tdry'], skip=False) +:canonical: halodrops.processor.Sonde.convert_to_si + +```{autodoc2-docstring} halodrops.processor.Sonde.convert_to_si +``` + +```` + +````{py:method} get_l2_variables(l2_variables: dict = hh.l2_variables) +:canonical: halodrops.processor.Sonde.get_l2_variables + +```{autodoc2-docstring} halodrops.processor.Sonde.get_l2_variables +``` + +```` + +````{py:method} add_sonde_id_variable(variable_name='sonde_id') +:canonical: halodrops.processor.Sonde.add_sonde_id_variable + +```{autodoc2-docstring} halodrops.processor.Sonde.add_sonde_id_variable +``` + +```` + +````{py:method} get_flight_attributes(l2_flight_attributes_map: dict = hh.l2_flight_attributes_map) -> None +:canonical: halodrops.processor.Sonde.get_flight_attributes + +```{autodoc2-docstring} halodrops.processor.Sonde.get_flight_attributes +``` + +```` + +````{py:method} get_other_global_attributes() +:canonical: halodrops.processor.Sonde.get_other_global_attributes + +```{autodoc2-docstring} halodrops.processor.Sonde.get_other_global_attributes +``` + +```` + +````{py:method} add_global_attributes_to_interim_l2_ds() +:canonical: halodrops.processor.Sonde.add_global_attributes_to_interim_l2_ds + +```{autodoc2-docstring} halodrops.processor.Sonde.add_global_attributes_to_interim_l2_ds +``` + +```` + +````{py:method} add_compression_and_encoding_properties(encoding_variables: dict = hh.encoding_variables, default_variable_compression_properties: dict = hh.variable_compression_properties) +:canonical: halodrops.processor.Sonde.add_compression_and_encoding_properties + +```{autodoc2-docstring} halodrops.processor.Sonde.add_compression_and_encoding_properties +``` + +```` + +````{py:method} get_l2_filename(l2_filename: str = None, l2_filename_template: str = None) +:canonical: halodrops.processor.Sonde.get_l2_filename + +```{autodoc2-docstring} halodrops.processor.Sonde.get_l2_filename +``` + +```` + +````{py:method} write_l2(l2_dir: str = None) +:canonical: halodrops.processor.Sonde.write_l2 + +```{autodoc2-docstring} halodrops.processor.Sonde.write_l2 +``` + +```` + +````{py:method} add_l2_ds(l2_dir: str = None) +:canonical: halodrops.processor.Sonde.add_l2_ds + +```{autodoc2-docstring} halodrops.processor.Sonde.add_l2_ds +``` + +```` + +````{py:method} add_q_and_theta_to_l2_ds() +:canonical: halodrops.processor.Sonde.add_q_and_theta_to_l2_ds + +```{autodoc2-docstring} halodrops.processor.Sonde.add_q_and_theta_to_l2_ds +``` + +```` + +````` diff --git a/docs/source/apidocs/halodrops/halodrops.qc.md b/docs/source/apidocs/halodrops/halodrops.qc.md deleted file mode 100644 index d479fc4..0000000 --- a/docs/source/apidocs/halodrops/halodrops.qc.md +++ /dev/null @@ -1,17 +0,0 @@ -# {py:mod}`halodrops.qc` - -```{py:module} halodrops.qc -``` - -```{autodoc2-docstring} halodrops.qc -:allowtitles: -``` - -## Submodules - -```{toctree} -:titlesonly: -:maxdepth: 1 - -halodrops.qc.profile -``` diff --git a/docs/source/apidocs/halodrops/halodrops.qc.profile.md b/docs/source/apidocs/halodrops/halodrops.qc.profile.md deleted file mode 100644 index dd7f068..0000000 --- a/docs/source/apidocs/halodrops/halodrops.qc.profile.md +++ /dev/null @@ -1,75 +0,0 @@ -# {py:mod}`halodrops.qc.profile` - -```{py:module} halodrops.qc.profile -``` - -```{autodoc2-docstring} halodrops.qc.profile -:allowtitles: -``` - -## Module Contents - -### Functions - -````{list-table} -:class: autosummary longtable -:align: left - -* - {py:obj}`fullness ` - - ```{autodoc2-docstring} halodrops.qc.profile.fullness - :summary: - ``` -* - {py:obj}`weighted_fullness ` - - ```{autodoc2-docstring} halodrops.qc.profile.weighted_fullness - :summary: - ``` -* - {py:obj}`weighted_fullness_for_config_vars ` - - ```{autodoc2-docstring} halodrops.qc.profile.weighted_fullness_for_config_vars - :summary: - ``` -```` - -### Data - -````{list-table} -:class: autosummary longtable -:align: left - -* - {py:obj}`module_logger ` - - ```{autodoc2-docstring} halodrops.qc.profile.module_logger - :summary: - ``` -```` - -### API - -````{py:data} module_logger -:canonical: halodrops.qc.profile.module_logger -:value: > - None - -```{autodoc2-docstring} halodrops.qc.profile.module_logger -``` - -```` - -````{py:function} fullness(dataset, variable, time_dimension='time') -:canonical: halodrops.qc.profile.fullness - -```{autodoc2-docstring} halodrops.qc.profile.fullness -``` -```` - -````{py:function} weighted_fullness(dataset, variable, sampling_frequency, time_dimension='time') -:canonical: halodrops.qc.profile.weighted_fullness - -```{autodoc2-docstring} halodrops.qc.profile.weighted_fullness -``` -```` - -````{py:function} weighted_fullness_for_config_vars(dataset, config_file_path, add_to_dataset=True) -:canonical: halodrops.qc.profile.weighted_fullness_for_config_vars - -```{autodoc2-docstring} halodrops.qc.profile.weighted_fullness_for_config_vars -``` -```` diff --git a/docs/source/apidocs/halodrops/halodrops.sonde.md b/docs/source/apidocs/halodrops/halodrops.sonde.md deleted file mode 100644 index c8e8336..0000000 --- a/docs/source/apidocs/halodrops/halodrops.sonde.md +++ /dev/null @@ -1,176 +0,0 @@ -# {py:mod}`halodrops.sonde` - -```{py:module} halodrops.sonde -``` - -```{autodoc2-docstring} halodrops.sonde -:allowtitles: -``` - -## Module Contents - -### Classes - -````{list-table} -:class: autosummary longtable -:align: left - -* - {py:obj}`Sonde ` - - ```{autodoc2-docstring} halodrops.sonde.Sonde - :summary: - ``` -* - {py:obj}`SondeData ` - - ```{autodoc2-docstring} halodrops.sonde.SondeData - :summary: - ``` -```` - -### Data - -````{list-table} -:class: autosummary longtable -:align: left - -* - {py:obj}`_no_default ` - - ```{autodoc2-docstring} halodrops.sonde._no_default - :summary: - ``` -```` - -### API - -````{py:data} _no_default -:canonical: halodrops.sonde._no_default -:value: > - None - -```{autodoc2-docstring} halodrops.sonde._no_default -``` - -```` - -`````{py:class} Sonde -:canonical: halodrops.sonde.Sonde - -```{autodoc2-docstring} halodrops.sonde.Sonde -``` - -````{py:attribute} sort_index -:canonical: halodrops.sonde.Sonde.sort_index -:type: numpy.datetime64 -:value: > - None - -```{autodoc2-docstring} halodrops.sonde.Sonde.sort_index -``` - -```` - -````{py:attribute} serial_id -:canonical: halodrops.sonde.Sonde.serial_id -:type: str -:value: > - None - -```{autodoc2-docstring} halodrops.sonde.Sonde.serial_id -``` - -```` - -````{py:attribute} _ -:canonical: halodrops.sonde.Sonde._ -:type: dataclasses.KW_ONLY -:value: > - None - -```{autodoc2-docstring} halodrops.sonde.Sonde._ -``` - -```` - -````{py:attribute} launch_time -:canonical: halodrops.sonde.Sonde.launch_time -:type: typing.Optional[typing.Any] -:value: > - None - -```{autodoc2-docstring} halodrops.sonde.Sonde.launch_time -``` - -```` - -````{py:method} __post_init__() -:canonical: halodrops.sonde.Sonde.__post_init__ - -```{autodoc2-docstring} halodrops.sonde.Sonde.__post_init__ -``` - -```` - -````{py:method} add_spatial_coordinates_at_launch(launch_coordinates: typing.List) -> None -:canonical: halodrops.sonde.Sonde.add_spatial_coordinates_at_launch - -```{autodoc2-docstring} halodrops.sonde.Sonde.add_spatial_coordinates_at_launch -``` - -```` - -````{py:method} add_launch_detect(launch_detect_bool: bool) -> None -:canonical: halodrops.sonde.Sonde.add_launch_detect - -```{autodoc2-docstring} halodrops.sonde.Sonde.add_launch_detect -``` - -```` - -````{py:method} add_afile(path_to_afile: str) -> None -:canonical: halodrops.sonde.Sonde.add_afile - -```{autodoc2-docstring} halodrops.sonde.Sonde.add_afile -``` - -```` - -````{py:method} add_postaspenfile(path_to_postaspenfile: str = None) -> None -:canonical: halodrops.sonde.Sonde.add_postaspenfile - -```{autodoc2-docstring} halodrops.sonde.Sonde.add_postaspenfile -``` - -```` - -````{py:method} add_aspen_ds() -> None -:canonical: halodrops.sonde.Sonde.add_aspen_ds - -```{autodoc2-docstring} halodrops.sonde.Sonde.add_aspen_ds -``` - -```` - -````` - -`````{py:class} SondeData -:canonical: halodrops.sonde.SondeData - -Bases: {py:obj}`halodrops.sonde.Sonde` - -```{autodoc2-docstring} halodrops.sonde.SondeData -``` - -````{py:attribute} data -:canonical: halodrops.sonde.SondeData.data -:type: typing.Any -:value: > - None - -```{autodoc2-docstring} halodrops.sonde.SondeData.data -``` - -```` - -````{py:method} __post_init__() -:canonical: halodrops.sonde.SondeData.__post_init__ - -```` - -````` diff --git a/docs/source/conf.py b/docs/source/conf.py index bf76b51..0f570a5 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -36,6 +36,7 @@ }, ] autodoc2_render_plugin = "myst" +autosectionlabel_prefix_document = True exclude_patterns = [] source_suffix = { @@ -48,7 +49,7 @@ # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output html_theme = "sphinx_book_theme" -html_static_path = ["_static"] +# html_static_path = ["_static"] html_context = {"default_mode": "light"} html_theme_options = { "repository_url": "https://github.com/Geet-George/halodrops", diff --git a/docs/source/data/index.md b/docs/source/data/index.md new file mode 100644 index 0000000..01b78f8 --- /dev/null +++ b/docs/source/data/index.md @@ -0,0 +1,18 @@ +# Data + +This data section of the handbook outlines procedures for how to go about doing the quality control, the processing and the generation of data products. + +## Data Directory Structure + +Usually dropsonde data has a `platform` from which it was meassured and a `flight_id` from the exact flight it was taken from. After the processing each flight will have data on different levels of processing. `halodrops` uses the following levels. + +| Level | Description | +| --------- | ---------------------------------------------------------------------------------------------- | +| `Level_0` | raw files from the AVAPS software (A-files, D-files, ...). Some files contain auxiliary data for a measurement sequence (usually a flight) and others are per sonde. | +| `Level_1` | ASPEN-processed netCDF files per sonde. First QC applied. | +| `Level_2` | Sondes that passed additional QC tests. Still one file per sonde. All soundings with no usable data are excluded | +| `Level_3` | One dataset (file) containing all Level_2 soundings gridded on a uniform, vertical grid, with some derived variables | +| `Level_4` | Circle products from all circles flown during flight or measurement campaign | + + +You can define your exact folder structure as shown in {doc}`example configs <../tutorial/configs>` diff --git a/docs/source/explanation/for_developers.md b/docs/source/explanation/for_developers.md index 38072f2..ee2a21a 100644 --- a/docs/source/explanation/for_developers.md +++ b/docs/source/explanation/for_developers.md @@ -29,24 +29,3 @@ Next, it retrieves the default values for all functions within the halodrops pac The script then defines a list of functions to execute. For each function, it retrieves the non-default arguments from the previously retrieved non-default values. If the function has mandatory arguments, it retrieves their values from the configuration file using the `get_mandatory_values_from_config` function. Finally, the script executes each function with the retrieved arguments. - -### Usage -To use this script, you need to provide a configuration file that contains the non-default and mandatory values for the functions you want to execute. The configuration file should should have a `MANDATORY` section and a separate for each function where non-default values are to be provided, where the section name is the fully qualified name of the function (e.g.`api.qc.run`). Each section should contain options for the function arguments, where the option names are the argument names and the option values are the argument values. - -An example config file would look like - -```ini -[MANDATORY] -data_directory = /path/to/data -flight_id = 20220401 - -[api.qc.run] -arg1 = nondefault1 -arg2 = nondefault2 -``` - -You can run the script from the command line simply by running `halodrops` or optionally with the `-c` or `--config_file_path` option followed by the path to your configuration file. For example: - -```bash -halodrops -c /path/to/config/file -``` diff --git a/docs/source/explanation/performance_of_sondes.md b/docs/source/explanation/performance_of_sondes.md index a7d61a6..87cdf60 100644 --- a/docs/source/explanation/performance_of_sondes.md +++ b/docs/source/explanation/performance_of_sondes.md @@ -1,6 +1,5 @@ -# Performance of sondes ----- +# Performance of sondes The performance of sondes is determined by how well the sonde performs with data provision. Taking into account the "fullness" of data provided by the sonde and the data's "quality", the sondes can be categorized as either `GOOD`, `BAD` or `UGLY`. A more detailed explanation of these terms will show up here soon, as the package develops, but for now, the basis of such a classification of sondes is explained in the publication for the [JOANNE dataset](https://doi.org/10.5194/essd-13-5253-2021). The classification takes into account potential failures that a sonde might have and therefore, it is a good idea to learn about these failures. diff --git a/docs/source/handbook/data/data_directory_structure.md b/docs/source/handbook/data/data_directory_structure.md deleted file mode 100644 index 2675694..0000000 --- a/docs/source/handbook/data/data_directory_structure.md +++ /dev/null @@ -1,37 +0,0 @@ -# Data Directory Structure - -`halodrops` strongly recommends that the data be stored in the following structure: - -```bash -├── Data_Directory -│ ├── 20200202 -│ │ ├── Level_0 -│ │ ├── Level_1 -│ │ ├── Level_2 -│ │ ├── Level_3 -│ │ ├── Level_4 -│ │ ├── Quicklooks -│ ├── 20220303 -│ │ ├── Level_0 -│ │ ├── Level_1 -│ │ ├── Level_2 -│ │ ├── Level_3 -│ │ ├── Level_4 -│ │ ├── Quicklooks -``` - -## Descriptions and nomenclature - -The `Data_Directory` is a directory that includes all data from a single campaign. Therein, data from individual flights are stored in their respective folders with their name in the format of `YYYYMMDD`, indicating the flight-date. In case of flying through midnight, consider the date of take-off. In case, there are multiple flights in a day, consider adding alphabetical suffixes to distinguish chronologically between flights, e.g. `20200202-A` and `20200202-B` would be two flights on the same day in the same order that they were flown. - -The directories within flight-data directories with `Level_` prefixes include the different processed levels of data as described below. - -| Level | Description | -| --------- | ---------------------------------------------------------------------------------------------- | -| `Level_0` | Contains all raw files from a flight | -| `Level_1` | Files generated from the ASPEN-processing of the D-files in Level-0 | -| `Level_2` | Sounding files that passed additional QC tests, and exclude all soundings with no usable data | -| `Level_3` | All sounding files in Level-2 gridded on a uniform, vertical grid, with some derived variables | -| `Level_4` | Circle products from all circles flown during flight | - -Maintaining this structure is also important for the package to automatically navigate through data directories, e.g. see the {py:obj}`Paths ` class. diff --git a/docs/source/handbook/data/index.md b/docs/source/handbook/data/index.md deleted file mode 100644 index 531a0e1..0000000 --- a/docs/source/handbook/data/index.md +++ /dev/null @@ -1,10 +0,0 @@ -# Data - -This data section of the handbook outlines procedures for how to go about doing the quality control, the processing and the generation of data products. - -```{toctree} -:caption: 'Contents:' -:maxdepth: 1 - -data_directory_structure -``` diff --git a/docs/source/handbook/index.md b/docs/source/handbook/index.md deleted file mode 100644 index 1f65b64..0000000 --- a/docs/source/handbook/index.md +++ /dev/null @@ -1,11 +0,0 @@ -# Handbook - -This handbook documents the procedures to be followed for {doc}`operations ` of dropsondes on the HALO aircraft, as well as for {doc}`data-handling `. It serves as a sequence of steps (in some cases, a checklist) that have to be followed for the aforementioned purposes. The handbook is minimal in terms of explaining the rationale behind the procedures. You will likely find these in the {doc}`Explanations ` section. - -```{toctree} -:caption: 'Contents:' -:maxdepth: 1 - -operations/index -data/index -``` diff --git a/docs/source/howto/list_failed_sondes.ipynb b/docs/source/howto/list_failed_sondes.ipynb index bd6900c..9847ddd 100644 --- a/docs/source/howto/list_failed_sondes.ipynb +++ b/docs/source/howto/list_failed_sondes.ipynb @@ -8,6 +8,15 @@ "# Get sondes that failed to detect a launch" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " This is probably outdated \n", + "
\n" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -21,7 +30,7 @@ "metadata": {}, "outputs": [], "source": [ - "from halodrops.sonde import Sonde\n", + "from halodrops.processor import Sonde\n", "from halodrops.helper import paths, rawreader as rr" ] }, @@ -48,10 +57,10 @@ "outputs": [], "source": [ "# Main directory for campaign data\n", - "data_directory = '/Users/geet/Documents/Repositories/Owned/halodrops/sample/'\n", + "data_directory = '../../../example_data'\n", "\n", "# Flight ID in YYYYMMDD format\n", - "flight_id = '20220401'" + "flight_id = '20200119'" ] }, { @@ -69,7 +78,7 @@ "outputs": [], "source": [ "# Instantiate paths object\n", - "flight_instance = paths.Paths(data_directory,flight_id)\n", + "flight_instance = paths.Paths(data_directory, flight_id)\n", "\n", "# Get paths to all A-files for a flight\n", "afiles = flight_instance.get_all_afiles()" @@ -114,7 +123,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In fact, what we did above constitutes a core part of the workflow for batch-processing sondes. The function [populate_sonde_instances](../apidocs/halodrops/halodrops.helper.paths.md#halodrops.helper.paths.Paths.populate_sonde_instances) essentially does the same as above and populates more attributes to the instances." + "In fact, what we did above constitutes a core part of the workflow for batch-processing sondes. The function \n", + "[populate_sonde_instance](../apidocs/halodrops/halodrops.helper.paths.md#API) essentially does the same as above and populates more attributes to the instances." ] }, { diff --git a/docs/source/howto/qc.ipynb b/docs/source/howto/qc.ipynb index 520b53e..555c7ce 100644 --- a/docs/source/howto/qc.ipynb +++ b/docs/source/howto/qc.ipynb @@ -7,6 +7,18 @@ "# Quality control of dropsonde data" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "
\n", + " This is outdated \n", + "
\n", + "\n" + ] + }, { "attachments": {}, "cell_type": "markdown", @@ -154,9 +166,18 @@ "\n", "But, there's a catch. The temperature sensor in the RD-41 sonde has a sampling frequency of 2 Hz, whereas the GPS sensor (from where the horizontal winds are derived) has a sampling frequency of 4 Hz. The time-coordinates are the same for both variables and are spaced every 0.25 seconds, which aligns exactly with the GPS sensor frequency. Therefore, it is a bit unfair to compare the fraction of temperature values against all time coordinates, given that it is not supposed to be measuring so frequently. A better way would be to compare the profile-coverage weighted for the sampling frequency. \n", "\n", - "So, if the temperature sensor has to measure at every other time-coordinate, then it's profile-coverage should be taken only for half the time-coordinates, or simply multiplied by two. This is exactly what the [weighted_fullness](../apidocs/halodrops/halodrops.qc.profile.md#halodrops.qc.profile.weighted_fullness) function does." + "So, if the temperature sensor has to measure at every other time-coordinate, then it's profile-coverage should be taken only for half the time-coordinates, or simply multiplied by two. This is exactly what the weighted_fullness ../apidocs/halodrops/halodrops.qc.profile.md#halodrops.qc.profile.weighted_fullness function does.\n", + " \n", + "
\n", + " I think this function does not exist anymore\n", + "
\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, { "cell_type": "code", "execution_count": 6, diff --git a/docs/source/index.md b/docs/source/index.md index 5363228..f074984 100644 --- a/docs/source/index.md +++ b/docs/source/index.md @@ -19,7 +19,7 @@ This package documents and enables a uniform workflow for the [HALO aircraft](ht Keeping these objectives in mind, HALO-DROPS has two elements at its core: -1. {doc}`Handbook ` +1. {doc}`Operations ` The handbook serves as a document outlining the steps for dropsondes' routine operations, known issues and troubleshooting as well as for handling data such as the recommended data structure. @@ -46,8 +46,9 @@ For a quick start to using `halodrops`, go to {doc}`Getting Started (photo courtesy: Geet George)* | 1. Switch on the ventilating fans in the top rack by bringing the switch `SW1` (`Top rack`) to the `up` position. Photo below shows switch in the `on` position. - | ![Top rack](../../graphics/top_rack.jpg) | + | ![Top rack](../graphics/top_rack.jpg) | | :-----------------------------------------------------: | | *Top rack (photo courtesy: Geet George)* | 2. Power on HRDS components in the `Switch rack` with switches `SW1`, `SW2`, `SW3`, `SW4` and `SW5` (in that order). Photo below shows all switches in the `on` position. The breakers (marked as `CB`) in both racks are not to be touched - they should be kept in their original positione, i.e. pressed in. - | ![Switch rack](../../graphics/switch_rack.jpg) | + | ![Switch rack](../graphics/switch_rack.jpg) | | :---------------------------------------------------------------------------------------------------------------------------------------------: | | *Switch rack. Labels above the switches indicate the respective components which are powered on. (photo courtesy: Geet George)* | 3. Screen should look like the picture below after booting has completed. - | ![Start screen](../../graphics/start_screen.png) | + | ![Start screen](../graphics/start_screen.png) | | :----------------------------------------------: | | *Start screen* | 4. Start the `AVAPS II` software. You should find the shortcut icon on the Desktop. The software opens to look like this. - | ![AVAPS start screen](../../graphics/start_avaps.png) | + | ![AVAPS start screen](../graphics/start_avaps.png) | | :---------------------------------------------------: | | *AVAPS start screen* | diff --git a/docs/source/tutorial/configs.md b/docs/source/tutorial/configs.md new file mode 100644 index 0000000..5e351bc --- /dev/null +++ b/docs/source/tutorial/configs.md @@ -0,0 +1,22 @@ +# Config files + +Each config file has a mandatory section that contains the data directory of the dropsonde data like +```ini +[MANDATORY] +data_directory = ./example_data +``` +Technically, this is everything a valid config file needs. However, you can specify the place of your flight folders and of the actual dropsonde data in an optional section. For the example data this would be +```ini +[OPTIONAL] +path_to_flight_ids = {platform}/Level_0 +path_to_l0_files = {platform}/Level_0/{flight_id} +``` + +Other optional function parameters can be specified with their function as a section. To specify the L2 and L3 filenames this could be +```ini +[processor.Sonde.get_l2_filename] +l2_filename_template = PERCUSION_{platform}_{launch_time}_{flight_id}_{serial_id}_Level_2.nc +[processor.Gridded.get_l3_filename] +l3_filename_template = PERCUSION_{platform}_{flight_id}_Level_3.nc + +``` diff --git a/docs/source/tutorial/index.md b/docs/source/tutorial/index.md index 55c6651..0471da9 100644 --- a/docs/source/tutorial/index.md +++ b/docs/source/tutorial/index.md @@ -1,18 +1,22 @@ # Getting Started + + + +This page explains how to install and run the `halodrops` python package. The package includes functions to process the dropsonde data from raw files to datasets on uniform grids and including several derived meteorological variables. + +To run `halodrops` on a set of dropsonde data, you first need to create a respective configuration file. An example and further infos are provided below. To run the `halodrops` pipeline, you need to provide the path to the config file: + +```bash + halodrops -c +``` + +The processing from Level_0 to Level_1 (using [aspen](https://www.eol.ucar.edu/content/aspen)) is included in `halodrops`. It makes use of a docker image containing the ASPEN software. Before actually calling halodrops, you therefore need to install [docker](https://www.docker.com/) and start a docker daemon (dockerd) locally to be able to use the ASPEN docker image. The simplest way would be to install Docker Desktop (on MacOS also possible via `brew install --cask docker`) and open the application before executing halodrops. Further information can be found in the respective [aspenqc](https://github.com/atmdrops/aspenqc) repository. + ```{toctree} :caption: 'Contents:' -:maxdepth: 1 -installation -``` ------ -Ideally, for a campaign, the package would run in a way that all you have to do for data processing is: -```console -halodrops data +installation +configs ``` -(t_extensions)= -## Extensions - -The data processing can be specified to handle data only for particular files, flights or other sets. diff --git a/docs/source/tutorial/installation.md b/docs/source/tutorial/installation.md index 5b30308..7ec8a77 100644 --- a/docs/source/tutorial/installation.md +++ b/docs/source/tutorial/installation.md @@ -1,19 +1,21 @@ # Installation -Ideally, it would be: +For now, halodrops is not a `pip` or `conda` package. +You can either clone the repository by -```console -pip install halodrops +``` +git clone git@github.com:Geet-George/halodrops.git ``` -or +and create a respective python environment with `conda` from the base folder directory: -```console -conda install halodrops ``` +conda env create -f environment.yml +``` +This will install halodrops in development mode. -It is highly recommended to use [`mamba`](https://mamba.readthedocs.io/en/latest/) as +Alternatively, you can directly install the package from github using pip -```console -mamba install halodrops +``` +pip install git+https://github.com/Geet-George/halodrops.git#egg=halodrops ``` diff --git a/src/halodrops/helper/paths.py b/src/halodrops/helper/paths.py index cf0a7c4..5ba6608 100644 --- a/src/halodrops/helper/paths.py +++ b/src/halodrops/helper/paths.py @@ -16,8 +16,8 @@ class Platform: """ Deriving flight paths from the provided platform directory - The input should align in terms of hierarchy and nomenclature - with the {doc}`Directory Structure ` that `halodrops` expects. + The structure of the input should be defined in the config file as described in the + {doc}`example config `. """ def __init__( @@ -53,10 +53,10 @@ def get_flight_ids(self): class Flight: """ - Deriving paths from the provided directory + Deriving sonde paths from the provided directory - The input should align in terms of hierarchy and nomenclature - with the {doc}`Directory Structure ` that `halodrops` expects. + The structure of the input should be defined in the config file as described in the + {doc}`example config `. """ def __init__(