diff --git a/docs/_toc.yml b/docs/_toc.yml index d6650436..9ea15336 100644 --- a/docs/_toc.yml +++ b/docs/_toc.yml @@ -1,23 +1,32 @@ -# Table of contents -# Learn more at https://jupyterbook.org/customize/toc.html - -format: jb-book -root: index -parts: -# - file: markdown -- caption: Documentation - chapters: - - file: classes-datastructures - - file: example_notebooks/workflow_minimal.ipynb - - file: input-files -- caption: Notebooks - chapters: - - file: example_notebooks/echopro_workflow.ipynb - - file: example_notebooks/reports_workflow.ipynb - - file: example_notebooks/semi_variogram_workflow.ipynb - - file: example_notebooks/kriging_mesh_walkthrough.ipynb - - file: example_notebooks/transect_selection_workflow.ipynb - - file: example_notebooks/bootstrapping_walkthrough.ipynb -- caption: Help & reference - chapters: - - file: api +# Table of contents +# Learn more at https://jupyterbook.org/customize/toc.html + +format: jb-book +root: index +parts: +# - file: markdown +- caption: Documentation + chapters: + - file: core_data_structure + - file: input-files + - file: workflow_minimal.ipynb + - file: glossary + title: theory + sections: + - file: theory/ts_length_conversion + - file: theory/acoustics_to_biomass_conversion + - file: theory/semivariograms + - file: theory/kriging + - file: theory/stratified_statistics + - file: theory/general_equations +- caption: Notebooks + chapters: + - file: example_notebooks/echopro_workflow.ipynb + - file: example_notebooks/reports_workflow.ipynb + - file: example_notebooks/semi_variogram_workflow.ipynb + - file: example_notebooks/kriging_mesh_walkthrough.ipynb + - file: example_notebooks/transect_selection_workflow.ipynb + - file: example_notebooks/bootstrapping_walkthrough.ipynb +- caption: Help & reference + chapters: + - file: api diff --git a/docs/classes-datastructures.md b/docs/core_data_structure.md similarity index 95% rename from docs/classes-datastructures.md rename to docs/core_data_structure.md index aef22d27..c1d0acb6 100644 --- a/docs/classes-datastructures.md +++ b/docs/core_data_structure.md @@ -1,38 +1,40 @@ -# Classes and data structures - -## Classes - -Python EchoPro is designed using an object-oriented approach where data are stored in core classes and computations are called as methods (functions) on those classes. - -- Core class - - survey.Survey - - All actions and computations are orchestrated from this class -- computation - - computation.transect_results.ComputeTransectVariables - - computation.semivariogram.SemiVariogram - - computation.kriging.Kriging - - computation.kriging_variables.ComputeKrigingVariables - - computation.bootstrapping.Bootstrapping -- data loaders - - data_loader.kriging_mesh.KrigingMesh - - data_loader.biological_data.LoadBioData - - data_loader.stratification_data.LoadStrataData -- report generation - - reports.Reports - -### Other notes - -- `bio_calc`: From `computation.transect_results.ComputeTransectVariables`; and also from Kriging? - - Categorize the long list of df's and gdf's available on `bio_calc`; eg, `kriging`, `kriging_bin`, `transect`, `weight_fraction`, etc. These can be categorized either by prefix or suffix - - Only the 6 "results" tables are gdf's: transect vs kriging, and sex (all[empty]/male/female). eg, `transect_results_male_gdf` - - `bin_ds` is an xarray dataset - - Most of the other objects are dataframes (`_df`), but there are a few others that don't have a clarifying suffix: `strata_sig_b`, `all_strata`, `missing_strata`, `percentage_transects_selected`, `sel_tran_strata_choice` (a dict), `stratum_choices` (a dict) - - -## Data structures - -- df's acessible from the `survey` - - innputs - - others -- `bin_ds` +# Classes and data structures + +![ text ](images/core_data_structure.jpg) + +## Classes + +Python EchoPro is designed using an object-oriented approach where data are stored in core classes and computations are called as methods (functions) on those classes. + +- Core class + - survey.Survey + - All actions and computations are orchestrated from this class +- computation + - computation.transect_results.ComputeTransectVariables + - computation.semivariogram.SemiVariogram + - computation.kriging.Kriging + - computation.kriging_variables.ComputeKrigingVariables + - computation.bootstrapping.Bootstrapping +- data loaders + - data_loader.kriging_mesh.KrigingMesh + - data_loader.biological_data.LoadBioData + - data_loader.stratification_data.LoadStrataData +- report generation + - reports.Reports + +### Other notes + +- `bio_calc`: From `computation.transect_results.ComputeTransectVariables`; and also from Kriging? + - Categorize the long list of df's and gdf's available on `bio_calc`; eg, `kriging`, `kriging_bin`, `transect`, `weight_fraction`, etc. These can be categorized either by prefix or suffix + - Only the 6 "results" tables are gdf's: transect vs kriging, and sex (all[empty]/male/female). eg, `transect_results_male_gdf` + - `bin_ds` is an xarray dataset + - Most of the other objects are dataframes (`_df`), but there are a few others that don't have a clarifying suffix: `strata_sig_b`, `all_strata`, `missing_strata`, `percentage_transects_selected`, `sel_tran_strata_choice` (a dict), `stratum_choices` (a dict) + + +## Data structures + +- df's acessible from the `survey` + - innputs + - others +- `bin_ds` - results gdf's \ No newline at end of file diff --git a/docs/glossary.md b/docs/glossary.md new file mode 100644 index 00000000..a063dac7 --- /dev/null +++ b/docs/glossary.md @@ -0,0 +1,3 @@ +Glossary of all symbols, indices, and notations used for mathematical equations and variables contained within the `Survey` class object. + +![ text ](images/symbols.jpeg) \ No newline at end of file diff --git a/docs/images/core_data_structure.jpg b/docs/images/core_data_structure.jpg new file mode 100644 index 00000000..81f0b485 Binary files /dev/null and b/docs/images/core_data_structure.jpg differ diff --git a/docs/images/example_indexing.jpg b/docs/images/example_indexing.jpg new file mode 100644 index 00000000..bb3e87d7 Binary files /dev/null and b/docs/images/example_indexing.jpg differ diff --git a/docs/images/symbols.jpeg b/docs/images/symbols.jpeg new file mode 100644 index 00000000..9b5a13d6 Binary files /dev/null and b/docs/images/symbols.jpeg differ diff --git a/docs/input-files.md b/docs/input-files.md index 8b46940f..e7011527 100644 --- a/docs/input-files.md +++ b/docs/input-files.md @@ -1,167 +1,167 @@ -# Input files - -Input files used in a Python EchoPro run, grouped by data type. The tables below describe the data columns required by Python EchoPro; other columns will be ignored. All input files are in Excel format. File paths, names, and Excel tab names are specified in the survey year configuration file (e.g., `survey_year_2019_config.yml`). - -Biological data are always separated into US vs Canada files. All other data files combine US and Canadian data. - -To minimize duplication in the data file description tables below, additional definitions and information for some variables found in multiple files is provided here, especiallly for column names: - -- `haul_num`: Haul number. Identifies the haul the collected data come from. A haul is usally described as a collection of trawls for a certain section of the survey. -- `transect_num`: Transect number. -- `species_id`: Species identification code (ID). Identifies what species is associated with the collected data. Pacific hake is 22500. -- `N/P`: Empty value Not Permitted. -- `nmi`: Nautical miles. -- `Old name`: Column name used previously with Matlab EchoPro - -```{contents} -:local: -:depth: 3 -``` - - -## Biological (trawl) data - -**Current base directory** used with the sample files: `Biological` - -Data files from the US and Canada are found in subdirectories `US` and `CAN`, respectively. - -### Length - -**Current sample file (US data)** relative to base directory: `US/2019_biodata_length.xls`, sheet `biodata_length` - -Column name | Old name | Data type | Units | Empty value | Description ---- | --- | --- | --- | --- | --- -haul_num | Haul | integer | | N/P | Haul number -species_id | Species_Code | integer | | N/P | Species identification code (ID) -sex | Sex | integer | | N/P | Sex of the animal. 1=Male, 2=Female, 3=Unknown/Not determined ("unsexed") -length | Length | float | cm | | Length of the animal -length_count | Frequency | float | | empty (blank) | Number of animals in the haul, of a particular species, and of a certain sex and length. For example, we have 5 Hake from haul 1 that are males with length 20cm - -### Specimen - -**Current sample file (US data)** relative to base directory: `US/2019_biodata_specimen_AGES.xls`, sheet `biodata_specimen` - -Column name | Old name | Data type | Units | Empty value | Description ---- | --- | --- | --- | --- | --- -haul_num | Haul | integer | | N/P | Haul number -species_id | Species_Code | integer | | N/P | Species identification code (ID) -sex | Sex | integer | | N/P | Sex of the animal. 1=Male, 2=Female, 3=Unknown/Not determined ("unsexed") -length | Length | float | cm | | Length of the animal -weight | Weight | float | kg | empty (blank) | Weight of the animal -age | Age | float | years | empty (blank) | Age of the animal - -### Catch - -**Current sample file (US data)** relative to base directory: `US/2019_biodata_catch.xls`, sheet `biodata_catch` - -Column name | Old name | Data type | Units | Empty value | Description ---- | --- | --- | --- | --- | --- -haul_num | Haul | integer | | N/P | Haul number -species_id | Species_Code | integer | | N/P | Species identification code (ID) -haul_weight | Weight_In_Haul | float | kg | N/P | Haul weight - -### Haul vs transect - -File containing the mapping between hauls and transects. This is a new file that replaces the sole information that was being used from the gear file. Note that rows with empty `transect_num` must be omitted. - -**Current sample file (US data)** relative to base directory: `US/haul_to_transect_mapping_2019.xls`, single sheet -Column name | Old name | Data type | Units | Empty value | Description ---- | --- | --- | --- | --- | --- -haul_num | Haul | integer | | N/P | Haul number -transect_num | Transect | integer | | N/P | Transect number - - -## Stratification - -**Current base directory** used with the sample files: `Stratification` - -Strata may be based on age-length (`KS`, Kolmogorov-Smirnov test) or regional (`INPFC`, International North Pacific Fisheries Commission) stratifications. Each file contains two tabs, one for each strata type. - -### Strata - -File that relates the stratification to the haul. - -**Current sample file (US data)** relative to base directory: `US_CAN strata 2019_final.xlsx`, sheets `Base KS` and `INPC` - -Column name | Old name | Data type | Units | Empty value | Description ---- | --- | --- | --- | --- | --- -stratum_num | Cluster name / INPFC | integer | | N/P | Stratum number for KS or INPC strata (`Base KS` or `INPC` tab, respectively). For `Base KS`, 0 = Low sample size. The Old names listed are for the `Base KS` and `INPFC` tabs, respectively -haul_num | Haul | integer | | N/P | Haul number -fraction_hake | wt | float | 0-1 | N/P | Fraction of the haul weight that is hake - -### Geo-strata - -File that defines the geographic definition of strata. - -**Current sample file (US data)** relative to base directory: `Stratification_geographic_Lat_2019_final.xlsx`, sheets `stratification1` and `INPC` - -Column name | Old name | Data type | Units | Empty value | Description ---- | --- | --- | --- | --- | --- -stratum_num | Strata index | integer | | N/P | Stratum number for KS or INPC strata (`stratification1` or `INPC` tab, respectively) -northlimit_latitude | Latitude (upper limit) | float | decimal degrees | N/P | Northern limit of stratum - - -## NASC - -**Current base directory** used with the sample files: `Exports` - -### No Age 1 - -NASC (Nautical Area Scattering Coefficient) values that do not include age1 values. Values are defined along transects at cells with an approximately 0.5 nmi spacing, - -**Current sample file (US data)** relative to base directory: `US_CAN_detailsa_2019_table2y+_ALL_final - updated.xlsx`, single sheet - -Column name | Old name | Data type | Units | Empty value | Description ---- | --- | --- | --- | --- | --- -transect_num | Transect | integer | | N/P | Transect number -vessel_log_start | VL start | float | nmi | N/P | Vessel log cumulative distance at start of transect cell -vessel_log_end | VL end | float | nmi | N/P | Vessel log cumulative distance at end of transect cell -latitude | Latitude | float | decimal degrees | N/P | Transect cell center latitude -longitude | Longitude | float | decimal degrees | N/P | Transect cell center longitude -stratum_num | Stratum | integer | | N/P | Base KS stratum number -transect_spacing | Spacing | float | nmi | N/P | Distance (spacing) between transects -NASC | NASC | float | m2 nmi-2 | N/P | Nautical Area Scattering Coefficient -haul_num | Assigned haul | integer | | N/P | Haul number. A value of 0 is used for transect cells where a haul was not present or used. - -The following columns are currently not used in core computations. They are used in reports and in some plots (plots not implemented yet). The column names are the original names and have not been "sanitized". - -Column name | Old name | Data type | Units | Empty value | Description ---- | --- | --- | --- | --- | --- -Region ID | Region ID | int | | | -Bottom depth | Bottom depth | float | meters? | | -Layer mean depth | Layer mean depth | float | meters? | | -Layer height | Layer height | float | meters? | | - -### All ages - -NASC values that include all ages. The file structure is the same as for the "No Age 1" file. - -**Current sample file (US data)** relative to base directory: `US_CAN_detailsa_2019_table1y+_ALL_final - updated.xlsx`, single sheet - - -## Kriging - -**Current base directory** used with the sample files: `Kriging_files` - -### Mesh - -The "Mesh" file containing the centroids of the Kriging grid cells. Grid size is 2.5 nmi by 2.5 nmi. - -**Current sample file (US data)** relative to base directory: `Kriging_grid_files/krig_grid2_5nm_cut_centroids_2013.xlsx`, sheet `krigedgrid2_5nm_forChu` - -Column name | Old name | Data type | Units | Empty value | Description ---- | --- | --- | --- | --- | --- -centroid_latitude | Latitude of centroid | float | decimal degrees | N/P | Cell centroid latitude -centroid_longitude | Longitude of centroid | float | decimal degrees | N/P | Cell centroid longitude -fraction_cell_in_polygon | Cell portion | float | 0-1 | N/P | Fraction of mesh cell that is within the interpolation polygon that delineates the mesh - -### Smoothed shelf-break contour - -Smoothed isobath contour used to transform the mesh points. A set of point locations delineating the 200 meter bathymetric contour that represents the shelf break. - -**Current sample file (US data)** relative to base directory: `Kriging_grid_files/transformation_isobath_coordinates.xlsx`, sheet `Smoothing_EasyKrig` - -Column name | Old name | Data type | Units | Empty value | Description ---- | --- | --- | --- | --- | --- -latitude | Latitude | float | decimal degrees | N/P | Point latitude -longitude | Longitude | float | decimal degrees | N/P | Point longitude +# Input files + +Input files used in a Python EchoPro run, grouped by data type. The tables below describe the data columns required by Python EchoPro; other columns will be ignored. All input files are in Excel format. File paths, names, and Excel tab names are specified in the survey year configuration file (e.g., `survey_year_2019_config.yml`). + +Biological data are always separated into US vs Canada files. All other data files combine US and Canadian data. + +To minimize duplication in the data file description tables below, additional definitions and information for some variables found in multiple files is provided here, especiallly for column names: + +- `haul_num`: Haul number. Identifies the haul the collected data come from. A haul is usally described as a collection of trawls for a certain section of the survey. +- `transect_num`: Transect number. +- `species_id`: Species identification code (ID). Identifies what species is associated with the collected data. Pacific hake is 22500. +- `N/P`: Empty value Not Permitted. +- `nmi`: Nautical miles. +- `Old name`: Column name used previously with Matlab EchoPro + +```{contents} +:local: +:depth: 3 +``` + + +## Biological (trawl) data + +**Current base directory** used with the sample files: `Biological` + +Data files from the US and Canada are found in subdirectories `US` and `CAN`, respectively. + +### Length + +**Current sample file (US data)** relative to base directory: `US/2019_biodata_length.xls`, sheet `biodata_length` + +Column name | Old name | Data type | Units | Empty value | Description +--- | --- | --- | --- | --- | --- +haul_num | Haul | integer | | N/P | Haul number +species_id | Species_Code | integer | | N/P | Species identification code (ID) +sex | Sex | integer | | N/P | Sex of the animal. 1=Male, 2=Female, 3=Unknown/Not determined ("unsexed") +length | Length | float | cm | | Length of the animal +length_count | Frequency | float | | empty (blank) | Number of animals in the haul, of a particular species, and of a certain sex and length. For example, we have 5 Hake from haul 1 that are males with length 20cm + +### Specimen + +**Current sample file (US data)** relative to base directory: `US/2019_biodata_specimen_AGES.xls`, sheet `biodata_specimen` + +Column name | Old name | Data type | Units | Empty value | Description +--- | --- | --- | --- | --- | --- +haul_num | Haul | integer | | N/P | Haul number +species_id | Species_Code | integer | | N/P | Species identification code (ID) +sex | Sex | integer | | N/P | Sex of the animal. 1=Male, 2=Female, 3=Unknown/Not determined ("unsexed") +length | Length | float | cm | | Length of the animal +weight | Weight | float | kg | empty (blank) | Weight of the animal +age | Age | float | years | empty (blank) | Age of the animal + +### Catch + +**Current sample file (US data)** relative to base directory: `US/2019_biodata_catch.xls`, sheet `biodata_catch` + +Column name | Old name | Data type | Units | Empty value | Description +--- | --- | --- | --- | --- | --- +haul_num | Haul | integer | | N/P | Haul number +species_id | Species_Code | integer | | N/P | Species identification code (ID) +haul_weight | Weight_In_Haul | float | kg | N/P | Haul weight + +### Haul vs transect + +File containing the mapping between hauls and transects. This is a new file that replaces the sole information that was being used from the gear file. Note that rows with empty `transect_num` must be omitted. + +**Current sample file (US data)** relative to base directory: `US/haul_to_transect_mapping_2019.xls`, single sheet +Column name | Old name | Data type | Units | Empty value | Description +--- | --- | --- | --- | --- | --- +haul_num | Haul | integer | | N/P | Haul number +transect_num | Transect | integer | | N/P | Transect number + + +## Stratification + +**Current base directory** used with the sample files: `Stratification` + +Strata may be based on age-length (`KS`, Kolmogorov-Smirnov test) or regional (`INPFC`, International North Pacific Fisheries Commission) stratifications. Each file contains two tabs, one for each strata type. + +### Strata + +File that relates the stratification to the haul. + +**Current sample file (US data)** relative to base directory: `US_CAN strata 2019_final.xlsx`, sheets `Base KS` and `INPC` + +Column name | Old name | Data type | Units | Empty value | Description +--- | --- | --- | --- | --- | --- +stratum_num | Cluster name / INPFC | integer | | N/P | Stratum number for KS or INPC strata (`Base KS` or `INPC` tab, respectively). For `Base KS`, 0 = Low sample size. The Old names listed are for the `Base KS` and `INPFC` tabs, respectively +haul_num | Haul | integer | | N/P | Haul number +fraction_hake | wt | float | 0-1 | N/P | Fraction of the haul weight that is hake + +### Geo-strata + +File that defines the geographic definition of strata. + +**Current sample file (US data)** relative to base directory: `Stratification_geographic_Lat_2019_final.xlsx`, sheets `stratification1` and `INPC` + +Column name | Old name | Data type | Units | Empty value | Description +--- | --- | --- | --- | --- | --- +stratum_num | Strata index | integer | | N/P | Stratum number for KS or INPC strata (`stratification1` or `INPC` tab, respectively) +northlimit_latitude | Latitude (upper limit) | float | decimal degrees | N/P | Northern limit of stratum + + +## NASC + +**Current base directory** used with the sample files: `Exports` + +### No Age 1 + +NASC (Nautical Area Scattering Coefficient) values that do not include age1 values. Values are defined along transects at cells with an approximately 0.5 nmi spacing, + +**Current sample file (US data)** relative to base directory: `US_CAN_detailsa_2019_table2y+_ALL_final - updated.xlsx`, single sheet + +Column name | Old name | Data type | Units | Empty value | Description +--- | --- | --- | --- | --- | --- +transect_num | Transect | integer | | N/P | Transect number +vessel_log_start | VL start | float | nmi | N/P | Vessel log cumulative distance at start of transect cell +vessel_log_end | VL end | float | nmi | N/P | Vessel log cumulative distance at end of transect cell +latitude | Latitude | float | decimal degrees | N/P | Transect cell center latitude +longitude | Longitude | float | decimal degrees | N/P | Transect cell center longitude +stratum_num | Stratum | integer | | N/P | Base KS stratum number +transect_spacing | Spacing | float | nmi | N/P | Distance (spacing) between transects +NASC | NASC | float | m2 nmi-2 | N/P | Nautical Area Scattering Coefficient +haul_num | Assigned haul | integer | | N/P | Haul number. A value of 0 is used for transect cells where a haul was not present or used. + +The following columns are currently not used in core computations. They are used in reports and in some plots (plots not implemented yet). The column names are the original names and have not been "sanitized". + +Column name | Old name | Data type | Units | Empty value | Description +--- | --- | --- | --- | --- | --- +Region ID | Region ID | int | | | +Bottom depth | Bottom depth | float | meters? | | +Layer mean depth | Layer mean depth | float | meters? | | +Layer height | Layer height | float | meters? | | + +### All ages + +NASC values that include all ages. The file structure is the same as for the "No Age 1" file. + +**Current sample file (US data)** relative to base directory: `US_CAN_detailsa_2019_table1y+_ALL_final - updated.xlsx`, single sheet + + +## Kriging + +**Current base directory** used with the sample files: `Kriging_files` + +### Mesh + +The "Mesh" file containing the centroids of the Kriging grid cells. Grid size is 2.5 nmi by 2.5 nmi. + +**Current sample file (US data)** relative to base directory: `Kriging_grid_files/krig_grid2_5nm_cut_centroids_2013.xlsx`, sheet `krigedgrid2_5nm_forChu` + +Column name | Old name | Data type | Units | Empty value | Description +--- | --- | --- | --- | --- | --- +centroid_latitude | Latitude of centroid | float | decimal degrees | N/P | Cell centroid latitude +centroid_longitude | Longitude of centroid | float | decimal degrees | N/P | Cell centroid longitude +fraction_cell_in_polygon | Cell portion | float | 0-1 | N/P | Fraction of mesh cell that is within the interpolation polygon that delineates the mesh + +### Smoothed shelf-break contour + +Smoothed isobath contour used to transform the mesh points. A set of point locations delineating the 200 meter bathymetric contour that represents the shelf break. + +**Current sample file (US data)** relative to base directory: `Kriging_grid_files/transformation_isobath_coordinates.xlsx`, sheet `Smoothing_EasyKrig` + +Column name | Old name | Data type | Units | Empty value | Description +--- | --- | --- | --- | --- | --- +latitude | Latitude | float | decimal degrees | N/P | Point latitude +longitude | Longitude | float | decimal degrees | N/P | Point longitude diff --git a/docs/theory/acoustics_to_biomass_conversion.md b/docs/theory/acoustics_to_biomass_conversion.md new file mode 100644 index 00000000..bba775fb --- /dev/null +++ b/docs/theory/acoustics_to_biomass_conversion.md @@ -0,0 +1,3 @@ +![ text ](../images/example_indexing.jpg) + +Acoustic backscatter to biomass conversion \ No newline at end of file diff --git a/docs/theory/general_equations.md b/docs/theory/general_equations.md new file mode 100644 index 00000000..31b80354 --- /dev/null +++ b/docs/theory/general_equations.md @@ -0,0 +1,3 @@ +![ text ](../images/example_indexing.jpg) + +Other summary statistics \ No newline at end of file diff --git a/docs/theory/kriging.md b/docs/theory/kriging.md new file mode 100644 index 00000000..c5afd1fd --- /dev/null +++ b/docs/theory/kriging.md @@ -0,0 +1,3 @@ +![ text ](../images/example_indexing.jpg) + +Kriging equations \ No newline at end of file diff --git a/docs/theory/semivariograms.md b/docs/theory/semivariograms.md new file mode 100644 index 00000000..a0fb5a13 --- /dev/null +++ b/docs/theory/semivariograms.md @@ -0,0 +1,3 @@ +![ text ](../images/example_indexing.jpg) + +Semivariogram equations \ No newline at end of file diff --git a/docs/theory/stratified_statistics.md b/docs/theory/stratified_statistics.md new file mode 100644 index 00000000..2372fc1c --- /dev/null +++ b/docs/theory/stratified_statistics.md @@ -0,0 +1,3 @@ +![ text ](../images/example_indexing.jpg) + +Jolly and Hampton (1990) stratified sampling \ No newline at end of file diff --git a/docs/theory/ts_length_conversion.md b/docs/theory/ts_length_conversion.md new file mode 100644 index 00000000..72df96a7 --- /dev/null +++ b/docs/theory/ts_length_conversion.md @@ -0,0 +1,3 @@ +![ text ](../images/example_indexing.jpg) + +Fundamental acoustic equations \ No newline at end of file