This data pipeline, known as “handler” in Marisco terminology, contains a data pipeline (handler) that converts the master MARIS database dump into NetCDF format. It enables batch encoding of all legacy datasets into NetCDF.

Key functions of this handler:

The result is a set of NetCDF files, one for each unique reference ID in the input data.

Tip

For new MARIS users, please refer to Understanding MARIS Data Formats (NetCDF and Open Refine) for detailed information.

The present notebook pretends to be an instance of Literate Programming in the sense that it is a narrative that includes code snippets that are interspersed with explanations. When a function or a class needs to be exported in a dedicated python module (in our case marisco/handlers/helcom.py) the code snippet is added to the module using #| exports as provided by the wonderful nbdev library.

Configuration & file paths

  • fname_in: path to the folder containing the MARIS dump data in CSV format.

  • dir_dest: path to the folder where the NetCDF output will be saved.

Exported source
fname_in = Path().home() / 'pro/data/maris/2024-11-20 MARIS_QA_shapetype_id=1.txt'
dir_dest = '../../_data/output/dump'

Utils

Below a utility class to load a specific MARIS dump dataset optionally filtered through its ref_id.


source

DataLoader

 DataLoader (fname:str, exclude_ref_id:Optional[List[int]]=[9999])

Load specific MARIS dataset through its ref_id.

Type Default Details
fname str Path to the MARIS global dump file
exclude_ref_id Optional [9999] Whether to filter the dataframe by ref_id
Exported source
class DataLoader:
    "Load specific MARIS dataset through its ref_id."
    LUT = {
        'Biota': 'BIOTA', 
        'Seawater': 'SEAWATER', 
        'Sediment': 'SEDIMENT', 
        'Suspended matter': 'SUSPENDED_MATTER'
    }

    def __init__(self, 
                 fname: str, # Path to the MARIS global dump file
                 exclude_ref_id: Optional[List[int]]=[9999] # Whether to filter the dataframe by ref_id
                 ):
        fc.store_attr()
        self.df = self._load_data()

    def _load_data(self):
        df = pd.read_csv(self.fname, sep='\t', encoding='utf-8', low_memory=False)
        return df[~df.ref_id.isin(self.exclude_ref_id)] if self.exclude_ref_id else df

    def __call__(self, 
                 ref_id: int # Reference ID of interest
                 ) -> dict: # Dictionary of dataframes
        df = self.df[self.df.ref_id == ref_id].copy() if ref_id else self.df.copy()
        return {self.LUT[name]: grp for name, grp in df.groupby('samptype') if name in self.LUT}

source

get_zotero_key

 get_zotero_key (dfs)

Retrieve Zotero key from MARIS dump.

Exported source
def get_zotero_key(dfs):
    "Retrieve Zotero key from MARIS dump."
    return dfs[next(iter(dfs))][['zoterourl']].iloc[0].values[0].split('/')[-1]

source

get_fname

 get_fname (dfs)

Retrieve filename from MARIS dump.

Exported source
def get_fname(dfs):
    "Retrieve filename from MARIS dump."
    idx, name = dfs[next(iter(dfs))][['ref_id', 'displaytext']].iloc[0]
    name = name.replace(',', '').replace('.', '').replace('-', ' ').split(' ')
    return '-'.join(([str(idx)] + name)) + '.nc'

Load data

Here below a quick overview of the MARIS dump data structure.

dataloader = DataLoader(fname_in)
ref_id = 100 # Some other ref_id examples: OSPAR: 191, HELCOM: 100, 717 (only seawater)

dfs = dataloader(ref_id=ref_id)
print(f'keys: {dfs.keys()}')
dfs['SEDIMENT'].head()
keys: dict_keys(['BIOTA', 'SEAWATER', 'SEDIMENT'])
sample_id area_id areaname samptype_id samptype ref_id displaytext zoterourl ref_note datbase ... profile_id sampnote ref_fulltext ref_yearpub ref_sampleTypes LongLat shiftedcoordinates shiftedlong shiftedlat id
574705 397306 2374 Kattegat 3 Sediment 100 HELCOM MORS, 2018 https://www.zotero.org/groups/2432820/maris/it... Assumed Cs137, originally reported as 138Cs. HELCOM MORS 2018 Environmental database ... NaN GERMANY HELCOM MORS, 2018. Environmental database - He... 2018 1,2,3 9.75,54.833 0xE6100000010CDFE00B93A96A4B400000000000802340 9.75 54.833333 576001
574706 397306 2374 Kattegat 3 Sediment 100 HELCOM MORS, 2018 https://www.zotero.org/groups/2432820/maris/it... Assumed Cs137, originally reported as 138Cs. HELCOM MORS 2018 Environmental database ... NaN GERMANY HELCOM MORS, 2018. Environmental database - He... 2018 1,2,3 9.75,54.833 0xE6100000010CDFE00B93A96A4B400000000000802340 9.75 54.833333 576002
574707 397306 2374 Kattegat 3 Sediment 100 HELCOM MORS, 2018 https://www.zotero.org/groups/2432820/maris/it... Assumed Cs137, originally reported as 138Cs. HELCOM MORS 2018 Environmental database ... NaN GERMANY HELCOM MORS, 2018. Environmental database - He... 2018 1,2,3 9.75,54.833 0xE6100000010CDFE00B93A96A4B400000000000802340 9.75 54.833333 576003
574708 397306 2374 Kattegat 3 Sediment 100 HELCOM MORS, 2018 https://www.zotero.org/groups/2432820/maris/it... Assumed Cs137, originally reported as 138Cs. HELCOM MORS 2018 Environmental database ... NaN GERMANY HELCOM MORS, 2018. Environmental database - He... 2018 1,2,3 9.75,54.833 0xE6100000010CDFE00B93A96A4B400000000000802340 9.75 54.833333 576004
574709 397307 2374 Kattegat 3 Sediment 100 HELCOM MORS, 2018 https://www.zotero.org/groups/2432820/maris/it... Assumed Cs137, originally reported as 138Cs. HELCOM MORS 2018 Environmental database ... NaN GERMANY HELCOM MORS, 2018. Environmental database - He... 2018 1,2,3 9.75,54.833 0xE6100000010CDFE00B93A96A4B400000000000802340 9.75 54.833333 576005

5 rows × 80 columns

Transform data

Select columns

Exported source
cois_renaming_rules = {
    'sample_id': 'SMP_ID',
    'latitude': 'LAT',
    'longitude': 'LON',
    'begperiod': 'TIME',
    'sampdepth': 'SMP_DEPTH',
    'totdepth': 'TOT_DEPTH',
    'uncertaint': 'UNC',
    'unit_id': 'UNIT',
    'detection': 'DL',
    'area_id': 'AREA',
    'species_id': 'SPECIES',
    'biogroup_id': 'BIO_GROUP',
    'bodypar_id': 'BODY_PART',
    'sedtype_id': 'SED_TYPE',
    'volume': 'VOL',
    'salinity': 'SAL',
    'temperatur': 'TEMP',
    'sampmet_id': 'SAMP_MET',
    'prepmet_id': 'PREP_MET',
    'counmet_id': 'COUNT_MET',
    'activity': 'VALUE',
    'nuclide_id': 'NUCLIDE',
    'sliceup': 'TOP',
    'slicedown': 'BOTTOM'
}
dfs = dataloader(ref_id=ref_id)
tfm = Transformer(dfs, cbs=[
    SelectColumnsCB(cois_renaming_rules)
    ])

print('Keys:', tfm().keys())
print('Columns:', tfm()['BIOTA'].columns)
Keys: dict_keys(['BIOTA', 'SEAWATER', 'SEDIMENT'])
Columns: Index(['sample_id', 'latitude', 'longitude', 'begperiod', 'sampdepth',
       'totdepth', 'uncertaint', 'unit_id', 'detection', 'area_id',
       'species_id', 'biogroup_id', 'bodypar_id', 'sedtype_id', 'volume',
       'salinity', 'temperatur', 'sampmet_id', 'prepmet_id', 'counmet_id',
       'activity', 'nuclide_id', 'sliceup', 'slicedown'],
      dtype='object')

Rename columns

dfs = dataloader(ref_id=ref_id)
tfm = Transformer(dfs, cbs=[
    SelectColumnsCB(cois_renaming_rules),
    RenameColumnsCB(cois_renaming_rules)
    ])

dfs_tfm = tfm()
print('Keys:', dfs_tfm.keys())
print('Columns:', dfs_tfm['BIOTA'].columns)
Keys: dict_keys(['BIOTA', 'SEAWATER', 'SEDIMENT'])
Columns: Index(['SMP_ID', 'LAT', 'LON', 'TIME', 'SMP_DEPTH', 'TOT_DEPTH', 'UNC', 'UNIT',
       'DL', 'AREA', 'SPECIES', 'BIO_GROUP', 'BODY_PART', 'SED_TYPE', 'VOL',
       'SAL', 'TEMP', 'SAMP_MET', 'PREP_MET', 'COUNT_MET', 'VALUE', 'NUCLIDE',
       'TOP', 'BOTTOM'],
      dtype='object')

Drop NaN only columns

We then remove columns containing only NaN values or ‘Not available’ (id=0 in MARIS lookup tables).


source

DropNAColumnsCB

 DropNAColumnsCB (na_value=0)

Drop variable containing only NaN or ‘Not available’ (id=0 in MARIS lookup tables).

Exported source
class DropNAColumnsCB(Callback):
    "Drop variable containing only NaN or 'Not available' (id=0 in MARIS lookup tables)."
    def __init__(self, na_value=0): fc.store_attr()
    def isMarisNA(self, col): 
        return len(col.unique()) == 1 and col.iloc[0] == self.na_value
    
    def dropMarisNA(self, df):
        na_cols = [col for col in df.columns if self.isMarisNA(df[col])]
        return df.drop(labels=na_cols, axis=1)
        
    def __call__(self, tfm):
        for k in tfm.dfs.keys():
            tfm.dfs[k] = tfm.dfs[k].dropna(axis=1, how='all')
            tfm.dfs[k] = self.dropMarisNA(tfm.dfs[k])
dfs = dataloader(ref_id=ref_id)
tfm = Transformer(dfs, cbs=[
    SelectColumnsCB(cois_renaming_rules),
    RenameColumnsCB(cois_renaming_rules),
    DropNAColumnsCB()
    ])

dfs_tfm = tfm()
print('Keys:', dfs_tfm.keys())
print('Columns:', dfs_tfm['BIOTA'].columns)
Keys: dict_keys(['BIOTA', 'SEAWATER', 'SEDIMENT'])
Columns: Index(['SMP_ID', 'LAT', 'LON', 'TIME', 'SMP_DEPTH', 'UNC', 'UNIT', 'DL',
       'AREA', 'SPECIES', 'BIO_GROUP', 'BODY_PART', 'PREP_MET', 'COUNT_MET',
       'VALUE', 'NUCLIDE'],
      dtype='object')

Remap detection limit values

Category-based NetCDF variables are encoded as integer values based on the MARIS lookup table dbo_detectlimit.xlsx. We recall that these lookup tables are included in the NetCDF file as custom enumeration types.

lut_path()
Path('/Users/franckalbinet/.marisco/lut')
Exported source
dl_name_to_id = lambda: get_lut(lut_path(), 
                                'dbo_detectlimit.xlsx', 
                                key='name', 
                                value='id')
dl_name_to_id()
{'Not applicable': -1, 'Not Available': 0, '=': 1, '<': 2, 'ND': 3, 'DE': 4}

source

SanitizeDetectionLimitCB

 SanitizeDetectionLimitCB (fn_lut=<function <lambda>>, dl_name='DL')

Assign Detection Limit name to its id based on MARIS nomenclature.

Exported source
class SanitizeDetectionLimitCB(Callback):
    "Assign Detection Limit name to its id based on MARIS nomenclature."
    def __init__(self,
                 fn_lut=dl_name_to_id,
                 dl_name='DL'):
        fc.store_attr()

    def __call__(self, tfm):
        lut = self.fn_lut()
        for k in tfm.dfs.keys():
            tfm.dfs[k][self.dl_name] = tfm.dfs[k][self.dl_name].replace(lut)
dfs = dataloader(ref_id=ref_id)
tfm = Transformer(dfs, cbs=[
    SelectColumnsCB(cois_renaming_rules),
    RenameColumnsCB(cois_renaming_rules),
    DropNAColumnsCB(),
    SanitizeDetectionLimitCB()
    ])

dfs_tfm = tfm()
print('Keys:', dfs_tfm.keys())
print('Columns:', dfs_tfm['BIOTA'].columns)
print(f'{dfs_tfm["BIOTA"]["DL"].unique()}')
print(f'{dfs_tfm["BIOTA"].head()}')
Keys: dict_keys(['BIOTA', 'SEAWATER', 'SEDIMENT'])
Columns: Index(['SMP_ID', 'LAT', 'LON', 'TIME', 'SMP_DEPTH', 'UNC', 'UNIT', 'DL',
       'AREA', 'SPECIES', 'BIO_GROUP', 'BODY_PART', 'PREP_MET', 'COUNT_MET',
       'VALUE', 'NUCLIDE'],
      dtype='object')
[1 2]
        SMP_ID        LAT        LON                     TIME  SMP_DEPTH  \
575432  638278  57.335278  12.074167  2008-11-03 00:00:00.000        0.0   
575433  638278  57.335278  12.074167  2008-11-03 00:00:00.000        0.0   
575434  638278  57.335278  12.074167  2008-11-03 00:00:00.000        0.0   
575435  638278  57.335278  12.074167  2008-11-03 00:00:00.000        0.0   
575436  638279  57.335278  12.074167  2009-09-17 00:00:00.000        0.0   

           UNC  UNIT  DL  AREA  SPECIES  BIO_GROUP  BODY_PART  PREP_MET  \
575432  0.0684     5   1  2374       96         11         40         6   
575433  0.7040     5   1  2374       96         11         40         6   
575434  0.0747     5   1  2374       96         11         40         6   
575435  0.0000     5   1  2374       96         11         40         6   
575436  0.3510     5   1  2374       96         11         40         6   

        COUNT_MET    VALUE  NUCLIDE  
575432         20     0.36        6  
575433         20    17.60        2  
575434         20     2.49       33  
575435         20  1040.00        4  
575436         20    11.70       55  

Parse and encode time

We remind that in netCDF format time need to be encoded as integer representing the number of seconds since a time of reference. In our case we chose 1970-01-01 00:00:00.0 as defined in configs.ipynb.


source

ParseTimeCB

 ParseTimeCB (time_name='TIME')

Parse time column from MARIS dump.

Exported source
class ParseTimeCB(Callback):
    "Parse time column from MARIS dump."
    def __init__(self,
                 time_name='TIME'):
        fc.store_attr()
        
    def __call__(self, tfm):
        for k in tfm.dfs.keys():
            tfm.dfs[k][self.time_name] = pd.to_datetime(tfm.dfs[k][self.time_name], format='ISO8601')
dfs = dataloader(ref_id=ref_id)
tfm = Transformer(dfs, cbs=[
    SelectColumnsCB(cois_renaming_rules),
    RenameColumnsCB(cois_renaming_rules),
    DropNAColumnsCB(),
    SanitizeDetectionLimitCB(),
    ParseTimeCB(),
    EncodeTimeCB()
    ])

print(tfm()['BIOTA'])
        SMP_ID        LAT        LON        TIME  SMP_DEPTH      UNC  UNIT  \
575432  638278  57.335278  12.074167  1225670400        0.0  0.06840     5   
575433  638278  57.335278  12.074167  1225670400        0.0  0.70400     5   
575434  638278  57.335278  12.074167  1225670400        0.0  0.07470     5   
575435  638278  57.335278  12.074167  1225670400        0.0  0.00000     5   
575436  638279  57.335278  12.074167  1253145600        0.0  0.35100     5   
...        ...        ...        ...         ...        ...      ...   ...   
932837  639100  63.050000  21.616667   518572800        0.0  0.01440     5   
932838  639100  63.050000  21.616667   518572800        0.0      NaN     5   
932839  639137  63.066667  21.400000  1114732800        0.0  1.46500     5   
932840  639137  63.066667  21.400000  1114732800        0.0  0.00204     5   
932841  639137  63.066667  21.400000  1114732800        0.0  5.00000     5   

        DL  AREA  SPECIES  BIO_GROUP  BODY_PART  PREP_MET  COUNT_MET  \
575432   1  2374       96         11         40         6         20   
575433   1  2374       96         11         40         6         20   
575434   1  2374       96         11         40         6         20   
575435   1  2374       96         11         40         6         20   
575436   1  2374       96         11         40         6         20   
...     ..   ...      ...        ...        ...       ...        ...   
932837   1  9999      269          4         52        12          9   
932838   1  9999      269          4         52        12          9   
932839   1  9999      269          4         52         0         20   
932840   1  9999      269          4         52         0          8   
932841   1  9999      269          4         52         0         20   

           VALUE  NUCLIDE  
575432     0.360        6  
575433    17.600        2  
575434     2.490       33  
575435  1040.000        4  
575436    11.700       55  
...          ...      ...  
932837     0.072       12  
932838     0.015       11  
932839    29.300       33  
932840     0.017       12  
932841   113.000        4  

[14872 rows x 16 columns]

Sanitize coordinates

We ensure that coordinates are within the valid range.

dfs = dataloader(ref_id=ref_id)
tfm = Transformer(dfs, cbs=[
    SelectColumnsCB(cois_renaming_rules),
    RenameColumnsCB(cois_renaming_rules),
    DropNAColumnsCB(),
    SanitizeDetectionLimitCB(),
    ParseTimeCB(),
    EncodeTimeCB(),
    SanitizeLonLatCB()
    ])

dfs_test = tfm()
dfs_test['BIOTA']
SMP_ID LAT LON TIME SMP_DEPTH UNC UNIT DL AREA SPECIES BIO_GROUP BODY_PART PREP_MET COUNT_MET VALUE NUCLIDE
575432 638278 57.335278 12.074167 1225670400 0.0 0.06840 5 1 2374 96 11 40 6 20 0.360 6
575433 638278 57.335278 12.074167 1225670400 0.0 0.70400 5 1 2374 96 11 40 6 20 17.600 2
575434 638278 57.335278 12.074167 1225670400 0.0 0.07470 5 1 2374 96 11 40 6 20 2.490 33
575435 638278 57.335278 12.074167 1225670400 0.0 0.00000 5 1 2374 96 11 40 6 20 1040.000 4
575436 638279 57.335278 12.074167 1253145600 0.0 0.35100 5 1 2374 96 11 40 6 20 11.700 55
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
932837 639100 63.050000 21.616667 518572800 0.0 0.01440 5 1 9999 269 4 52 12 9 0.072 12
932838 639100 63.050000 21.616667 518572800 0.0 NaN 5 1 9999 269 4 52 12 9 0.015 11
932839 639137 63.066667 21.400000 1114732800 0.0 1.46500 5 1 9999 269 4 52 0 20 29.300 33
932840 639137 63.066667 21.400000 1114732800 0.0 0.00204 5 1 9999 269 4 52 0 8 0.017 12
932841 639137 63.066667 21.400000 1114732800 0.0 5.00000 5 1 9999 269 4 52 0 20 113.000 4

14872 rows × 16 columns

Set unique index

dfs = dataloader(ref_id=ref_id)
tfm = Transformer(dfs, cbs=[
    SelectColumnsCB(cois_renaming_rules),
    RenameColumnsCB(cois_renaming_rules),
    DropNAColumnsCB(),
    SanitizeDetectionLimitCB(),
    ParseTimeCB(),
    EncodeTimeCB(),
    SanitizeLonLatCB(),
    UniqueIndexCB()
    ])

dfs_test = tfm()    
dfs_test['BIOTA']
ID SMP_ID LAT LON TIME SMP_DEPTH UNC UNIT DL AREA SPECIES BIO_GROUP BODY_PART PREP_MET COUNT_MET VALUE NUCLIDE
0 0 638278 57.335278 12.074167 1225670400 0.0 0.06840 5 1 2374 96 11 40 6 20 0.360 6
1 1 638278 57.335278 12.074167 1225670400 0.0 0.70400 5 1 2374 96 11 40 6 20 17.600 2
2 2 638278 57.335278 12.074167 1225670400 0.0 0.07470 5 1 2374 96 11 40 6 20 2.490 33
3 3 638278 57.335278 12.074167 1225670400 0.0 0.00000 5 1 2374 96 11 40 6 20 1040.000 4
4 4 638279 57.335278 12.074167 1253145600 0.0 0.35100 5 1 2374 96 11 40 6 20 11.700 55
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
14867 14867 639100 63.050000 21.616667 518572800 0.0 0.01440 5 1 9999 269 4 52 12 9 0.072 12
14868 14868 639100 63.050000 21.616667 518572800 0.0 NaN 5 1 9999 269 4 52 12 9 0.015 11
14869 14869 639137 63.066667 21.400000 1114732800 0.0 1.46500 5 1 9999 269 4 52 0 20 29.300 33
14870 14870 639137 63.066667 21.400000 1114732800 0.0 0.00204 5 1 9999 269 4 52 0 8 0.017 12
14871 14871 639137 63.066667 21.400000 1114732800 0.0 5.00000 5 1 9999 269 4 52 0 20 113.000 4

14872 rows × 17 columns

Encode to NetCDF

dfs = dataloader(ref_id=ref_id)
tfm = Transformer(dfs, cbs=[
    SelectColumnsCB(cois_renaming_rules),
    RenameColumnsCB(cois_renaming_rules),
    DropNAColumnsCB(),
    SanitizeDetectionLimitCB(),
    ParseTimeCB(),
    EncodeTimeCB(),
    SanitizeLonLatCB(),
    UniqueIndexCB()
    ])

dfs_tfm = tfm()
tfm.logs
['Select columns of interest.',
 'Renaming variables to MARIS standard names.',
 "Drop variable containing only NaN or 'Not available' (id=0 in MARIS lookup tables).",
 'Assign Detection Limit name to its id based on MARIS nomenclature.',
 'Parse time column from MARIS dump.',
 'Encode time as seconds since epoch.',
 'Drop rows with invalid longitude & latitude values. Convert `,` separator to `.` separator.',
 'Set unique index for each group.']

source

get_attrs

 get_attrs (tfm, zotero_key, kw=['oceanography', 'Earth Science > Oceans >
            Ocean Chemistry> Radionuclides', 'Earth Science > Human
            Dimensions > Environmental Impacts > Nuclear Radiation
            Exposure', 'Earth Science > Oceans > Ocean Chemistry > Ocean
            Tracers, Earth Science > Oceans > Marine Sediments', 'Earth
            Science > Oceans > Ocean Chemistry, Earth Science > Oceans >
            Sea Ice > Isotopes', 'Earth Science > Oceans > Water Quality >
            Ocean Contaminants', 'Earth Science > Biological
            Classification > Animals/Vertebrates > Fish', 'Earth Science >
            Biosphere > Ecosystems > Marine Ecosystems', 'Earth Science >
            Biological Classification > Animals/Invertebrates > Mollusks',
            'Earth Science > Biological Classification >
            Animals/Invertebrates > Arthropods > Crustaceans', 'Earth
            Science > Biological Classification > Plants > Macroalgae
            (Seaweeds)'])

Retrieve global attributes from MARIS dump.

Exported source
kw = ['oceanography', 'Earth Science > Oceans > Ocean Chemistry> Radionuclides',
      'Earth Science > Human Dimensions > Environmental Impacts > Nuclear Radiation Exposure',
      'Earth Science > Oceans > Ocean Chemistry > Ocean Tracers, Earth Science > Oceans > Marine Sediments',
      'Earth Science > Oceans > Ocean Chemistry, Earth Science > Oceans > Sea Ice > Isotopes',
      'Earth Science > Oceans > Water Quality > Ocean Contaminants',
      'Earth Science > Biological Classification > Animals/Vertebrates > Fish',
      'Earth Science > Biosphere > Ecosystems > Marine Ecosystems',
      'Earth Science > Biological Classification > Animals/Invertebrates > Mollusks',
      'Earth Science > Biological Classification > Animals/Invertebrates > Arthropods > Crustaceans',
      'Earth Science > Biological Classification > Plants > Macroalgae (Seaweeds)']
Exported source
def get_attrs(tfm, zotero_key, kw=kw):
    "Retrieve global attributes from MARIS dump."
    return GlobAttrsFeeder(tfm.dfs, cbs=[
        BboxCB(),
        DepthRangeCB(),
        TimeRangeCB(),
        ZoteroCB(zotero_key, cfg=cfg()),
        KeyValuePairCB('keywords', ', '.join(kw)),
        KeyValuePairCB('publisher_postprocess_logs', ', '.join(tfm.logs))
        ])()
get_attrs(tfm, zotero_key='3W354SQG', kw=kw)
{'geospatial_lat_min': '30.4358333333333',
 'geospatial_lat_max': '65.75',
 'geospatial_lon_min': '9.63333333333333',
 'geospatial_lon_max': '53.5',
 'geospatial_bounds': 'POLYGON ((9.63333333333333 53.5, 30.4358333333333 53.5, 30.4358333333333 65.75, 9.63333333333333 65.75, 9.63333333333333 53.5))',
 'geospatial_vertical_max': '437.0',
 'geospatial_vertical_min': '-1.0',
 'time_coverage_start': '1984-01-10T00:00:00',
 'time_coverage_end': '2018-12-14T00:00:00',
 'title': 'Radioactivity Monitoring of the Irish Marine Environment 1991 and 1992',
 'summary': '',
 'creator_name': '[{"creatorType": "author", "firstName": "A.", "lastName": "McGarry"}, {"creatorType": "author", "firstName": "S.", "lastName": "Lyons"}, {"creatorType": "author", "firstName": "C.", "lastName": "McEnri"}, {"creatorType": "author", "firstName": "T.", "lastName": "Ryan"}, {"creatorType": "author", "firstName": "M.", "lastName": "O\'Colmain"}, {"creatorType": "author", "firstName": "J.D.", "lastName": "Cunningham"}]',
 'keywords': 'oceanography, Earth Science > Oceans > Ocean Chemistry> Radionuclides, Earth Science > Human Dimensions > Environmental Impacts > Nuclear Radiation Exposure, Earth Science > Oceans > Ocean Chemistry > Ocean Tracers, Earth Science > Oceans > Marine Sediments, Earth Science > Oceans > Ocean Chemistry, Earth Science > Oceans > Sea Ice > Isotopes, Earth Science > Oceans > Water Quality > Ocean Contaminants, Earth Science > Biological Classification > Animals/Vertebrates > Fish, Earth Science > Biosphere > Ecosystems > Marine Ecosystems, Earth Science > Biological Classification > Animals/Invertebrates > Mollusks, Earth Science > Biological Classification > Animals/Invertebrates > Arthropods > Crustaceans, Earth Science > Biological Classification > Plants > Macroalgae (Seaweeds)',
 'publisher_postprocess_logs': "Select columns of interest., Renaming variables to MARIS standard names., Drop variable containing only NaN or 'Not available' (id=0 in MARIS lookup tables)., Assign Detection Limit name to its id based on MARIS nomenclature., Parse time column from MARIS dump., Encode time as seconds since epoch., Drop rows with invalid longitude & latitude values. Convert `,` separator to `.` separator., Set unique index for each group."}

source

encode

 encode (fname_in:str, dir_dest:str, **kwargs)

Encode MARIS dump to NetCDF.

Type Details
fname_in str Path to the MARIS dump data in CSV format
dir_dest str Path to the folder where the NetCDF output will be saved
kwargs
Exported source
def encode(
    fname_in: str, # Path to the MARIS dump data in CSV format
    dir_dest: str, # Path to the folder where the NetCDF output will be saved
    **kwargs # Additional keyword arguments
    ):
    "Encode MARIS dump to NetCDF."
    dataloader = DataLoader(fname_in)
    ref_ids = kwargs.get('ref_ids', dataloader.df.ref_id.unique())
    print('Encoding ...')
    for ref_id in tqdm(ref_ids, leave=False):
        dfs = dataloader(ref_id=ref_id)
        print(get_fname(dfs))
        tfm = Transformer(dfs, cbs=[
            SelectColumnsCB(cois_renaming_rules),
            RenameColumnsCB(cois_renaming_rules),
            DropNAColumnsCB(),
            SanitizeDetectionLimitCB(),
            ParseTimeCB(),
            EncodeTimeCB(),
            SanitizeLonLatCB(),
            UniqueIndexCB()
            ])
        
        tfm()
        encoder = NetCDFEncoder(tfm.dfs, 
                                dest_fname=Path(dir_dest) / get_fname(dfs), 
                                global_attrs=get_attrs(tfm, zotero_key=get_zotero_key(dfs), kw=kw),
                                verbose=kwargs.get('verbose', False)
                                )
        encoder.encode()

Single dataset

ref_id = 100
encode(
    fname_in,
    dir_dest,
    verbose=False, 
    ref_ids=[ref_id])
Encoding ...
  0%|          | 0/1 [00:00<?, ?it/s]
100-HELCOM-MORS-2018.nc
                                             

All datasets

encode(
    fname_in, 
    dir_dest, 
    verbose=False)
Encoding ...
  0%|          | 0/470 [00:00<?, ?it/s]
401-Olsen-et-al-2016.nc
  0%|          | 1/470 [00:01<08:40,  1.11s/it]
402-CCHDO-2018.nc
  0%|          | 2/470 [00:03<12:35,  1.61s/it]
226-Sdraulig-2018.nc
  1%|          | 3/470 [00:03<09:51,  1.27s/it]
374-Ostlund-et-al-1987.nc
  1%|          | 4/470 [00:05<10:06,  1.30s/it]
508-Lee-et-al-2018.nc
  1%|          | 5/470 [00:07<12:11,  1.57s/it]
443-Heyraud-et-al-1994.nc
  1%|▏         | 6/470 [00:08<10:31,  1.36s/it]
182-Urban-et-al-2015.nc
  1%|▏         | 7/470 [00:09<09:16,  1.20s/it]
183-Bokor-et-al-2016.nc
  2%|▏         | 8/470 [00:10<08:24,  1.09s/it]
99-Aoyama-and-Hirose-2004.nc
  2%|▏         | 9/470 [00:12<10:37,  1.38s/it]
106-Yamada-et-al-2006.nc
  2%|▏         | 10/470 [00:12<09:25,  1.23s/it]
509-Johansen-et-al-2015.nc
  2%|▏         | 11/470 [00:13<08:27,  1.11s/it]
358-Kall-et-al-2014.nc
  3%|▎         | 12/470 [00:14<07:43,  1.01s/it]
16-Cherry-and-Heyraud-1981.nc
  3%|▎         | 13/470 [00:15<07:20,  1.04it/s]
30-Östlund-and-Grall-1991.nc
  3%|▎         | 14/470 [00:16<07:53,  1.04s/it]
323-Johansen-et-al-2019.nc
  3%|▎         | 15/470 [00:18<09:32,  1.26s/it]
395-Bailly-du-Bois-et-al-2020.nc
  3%|▎         | 16/470 [00:21<13:41,  1.81s/it]
400-Boyer-et-al-2013.nc
  4%|▎         | 17/470 [00:22<11:25,  1.51s/it]
97-ASPAMARD-2004.nc
  4%|▍         | 18/470 [00:23<09:47,  1.30s/it]
568-Johansen-2020.nc
  4%|▍         | 19/470 [00:23<08:50,  1.18s/it]
18-Cherry-and-Heyraud-1982.nc
  4%|▍         | 20/470 [00:25<09:53,  1.32s/it]
376-IRSN---Institut-de-Radioprotection-et-de-Sûreté-Nucléaire-2019.nc
  4%|▍         | 21/470 [00:28<12:34,  1.68s/it]
122-Casacuberta-et-al-2018.nc
  5%|▍         | 22/470 [00:28<10:35,  1.42s/it]
190-Schlitzer-et-al-2018.nc
  5%|▍         | 23/470 [00:30<10:56,  1.47s/it]
222-Huang-et-al-2019.nc
  5%|▌         | 24/470 [00:31<09:51,  1.33s/it]
380-Smith-et-al-2020.nc
  5%|▌         | 25/470 [00:32<08:46,  1.18s/it]
685-Chamizo-et-al-2021.nc
  6%|▌         | 26/470 [00:33<07:51,  1.06s/it]
718-Smith-2024.nc
  6%|▌         | 27/470 [00:33<07:13,  1.02it/s]
477-Valette-Silver-et-al-1999.nc
  6%|▌         | 28/470 [00:35<08:40,  1.18s/it]
200-Zaborska-et-al-2010.nc
  6%|▌         | 29/470 [00:36<08:58,  1.22s/it]
103-RADNOR-2010.nc
  6%|▋         | 30/470 [00:37<08:10,  1.11s/it]
432-Efurd-et-al-1997.nc
  7%|▋         | 31/470 [00:38<07:32,  1.03s/it]
381-Smith-2020.nc
  7%|▋         | 32/470 [00:39<06:59,  1.04it/s]
720-Payne-et-al-2024.nc
  7%|▋         | 33/470 [00:40<06:52,  1.06it/s]
191-OSPAR-Comission’s-Radioactive-Substances-Committee-(RSC)-2018.nc
  7%|▋         | 34/470 [00:42<09:49,  1.35s/it]
199-Skjerdal-et-al-2020.nc
  7%|▋         | 35/470 [00:45<12:02,  1.66s/it]
571-Szufa-2018.nc
  8%|▊         | 36/470 [00:45<10:30,  1.45s/it]
712-Fávaro-et-al-2012.nc
  8%|▊         | 37/470 [00:46<09:20,  1.30s/it]
570-Szufa-2020.nc
  8%|▊         | 38/470 [00:47<08:25,  1.17s/it]
409-Cherry-et-al-1987.nc
  8%|▊         | 39/470 [00:48<07:47,  1.08s/it]
201-Mietelski-et-al-2008.nc
  9%|▊         | 40/470 [00:51<10:39,  1.49s/it]
109-Gulin-and-Stokozov-2005.nc
  9%|▊         | 41/470 [00:51<09:08,  1.28s/it]
130-Wada-et-al-2016.nc
  9%|▉         | 42/470 [00:57<19:21,  2.71s/it]
121-TEPCO---Tokyo-Electric-Power-Company-2011.nc
  9%|▉         | 43/470 [01:02<24:09,  3.39s/it]
687-TEPCO---Tokyo-Electric-Power-Company-2021.nc
  9%|▉         | 44/470 [01:03<18:48,  2.65s/it]
204-MERI-2017.nc
 10%|▉         | 45/470 [01:04<15:23,  2.17s/it]
679-TEPCO---Tokyo-Electric-Power-Company-2021.nc
 10%|▉         | 46/470 [01:06<14:38,  2.07s/it]
680-TEPCO---Tokyo-Electric-Power-Company-2021.nc
 10%|█         | 47/470 [01:08<13:56,  1.98s/it]
141-TEPCO---Tokyo-Electric-Power-Company-2011.nc
 10%|█         | 48/470 [01:09<11:59,  1.71s/it]
131-Ibaraki-Prefecture-2011.nc
 10%|█         | 49/470 [01:11<13:02,  1.86s/it]
117-Oikawa-et-al-2013.nc
 11%|█         | 50/470 [01:12<10:58,  1.57s/it]
118-Kaeriyama-et-al-2013.nc
 11%|█         | 51/470 [01:13<09:23,  1.35s/it]
119-MEXT---Ministry-of-Education-Culture-Sports-Science-and-Technology-2011.nc
 11%|█         | 52/470 [01:14<08:54,  1.28s/it]
129-Wada-et-al-2016.nc
 11%|█▏        | 53/470 [01:16<09:12,  1.32s/it]
132-Fukushima-Prefectural-Federation-of-Fisheries-Co-operative-Associations-2012.nc
 11%|█▏        | 54/470 [01:19<14:32,  2.10s/it]
126-Fukushima-Prefecture-2011.nc
 12%|█▏        | 55/470 [01:21<12:47,  1.85s/it]
205-MERI-2018.nc
 12%|█▏        | 56/470 [01:22<11:04,  1.60s/it]
202-MERI-2015.nc
 12%|█▏        | 57/470 [01:23<09:59,  1.45s/it]
115-Casacuberta-et-al-2013.nc
 12%|█▏        | 58/470 [01:24<08:33,  1.25s/it]
120-NRA---Nuclear-Regulation-Authority-2013.nc
 13%|█▎        | 59/470 [01:25<07:55,  1.16s/it]
114-Charette-et-al-2013.nc
 13%|█▎        | 60/470 [01:25<07:07,  1.04s/it]
113-Kitamura-et-al-2013.nc
 13%|█▎        | 61/470 [01:26<06:54,  1.01s/it]
116-Suzuki-et-al-2013.nc
 13%|█▎        | 62/470 [01:27<06:22,  1.07it/s]
125-MOE---Ministry-of-the-Environment-2012.nc
 13%|█▎        | 63/470 [01:28<06:04,  1.12it/s]
123-Fukushima-Prefecture-2013.nc
 14%|█▎        | 64/470 [01:29<06:02,  1.12it/s]
124-MOE---Ministry-of-the-Environment-2011.nc
 14%|█▍        | 65/470 [01:31<07:51,  1.17s/it]
203-MERI-2016.nc
 14%|█▍        | 66/470 [01:32<07:41,  1.14s/it]
127-Fukushima-Prefecture-2013.nc
 14%|█▍        | 67/470 [01:32<07:06,  1.06s/it]
143-Fukushima-Prefecture-2011.nc
 14%|█▍        | 68/470 [01:33<06:56,  1.04s/it]
144-Fukushima-Prefecture-2013.nc
 15%|█▍        | 69/470 [01:34<06:27,  1.04it/s]
145-MOE---Ministry-of-the-Environment-2011.nc
 15%|█▍        | 70/470 [01:35<06:03,  1.10it/s]
146-MEXT---Ministry-of-Education-Culture-Sports-Science-and-Technology-2011.nc
 15%|█▌        | 71/470 [01:36<06:49,  1.03s/it]
147-MOE---Ministry-of-the-Environment-2012.nc
 15%|█▌        | 72/470 [01:37<06:55,  1.04s/it]
22-Fowler-et-al-1983.nc
 16%|█▌        | 73/470 [01:38<06:20,  1.04it/s]
56-Kaeriyama-et-al-2014.nc
 16%|█▌        | 74/470 [01:39<06:02,  1.09it/s]
724-Environmental-Radioactivity-and-Radiation-in-Japan---Environmental-Radiation-Database-2024.nc
 16%|█▌        | 75/470 [01:44<13:44,  2.09s/it]
225-Takata-et-al-2016.nc
 16%|█▌        | 76/470 [01:46<13:11,  2.01s/it]
237-Takata-et-al-2018.nc
 16%|█▋        | 77/470 [01:47<11:05,  1.69s/it]
224-Takata-et-al-2019.nc
 17%|█▋        | 78/470 [01:48<09:35,  1.47s/it]
142-NRA---Nuclear-Regulation-Authority-2013.nc
 17%|█▋        | 79/470 [01:48<08:15,  1.27s/it]
404-Azouz-and-Dulai-2017.nc
 17%|█▋        | 80/470 [01:49<07:29,  1.15s/it]
427-Yamamoto-et-al-1994.nc
 17%|█▋        | 81/470 [01:50<06:52,  1.06s/it]
428-Yu-et-al-2015.nc
 17%|█▋        | 82/470 [01:51<06:21,  1.02it/s]
445-Hoffman-et-al-1974.nc
 18%|█▊        | 83/470 [01:52<06:04,  1.06it/s]
513-Madigan-2012.nc
 18%|█▊        | 84/470 [01:53<07:16,  1.13s/it]
518-Morita-et-al-2010.nc
 18%|█▊        | 85/470 [01:55<08:07,  1.27s/it]
520-Baumann-et-al-2013.nc
 18%|█▊        | 86/470 [01:56<07:15,  1.13s/it]
436-Nakamura-et-al-2015.nc
 19%|█▊        | 87/470 [01:58<08:53,  1.39s/it]
440-Yamada-and-Nagaya-2000.nc
 19%|█▊        | 88/470 [02:00<10:03,  1.58s/it]
478-Yamada-et-al-1999.nc
 19%|█▉        | 89/470 [02:01<08:37,  1.36s/it]
479-Morita-2010.nc
 19%|█▉        | 90/470 [02:01<07:42,  1.22s/it]
516-Madigan-and-Fisher-2013.nc
 19%|█▉        | 91/470 [02:02<07:07,  1.13s/it]
550-Sohtome-2014.nc
 20%|█▉        | 92/470 [02:04<08:42,  1.38s/it]
572-Aono-et-al-2000.nc
 20%|█▉        | 93/470 [02:05<07:45,  1.23s/it]
128-NRA---Nuclear-Regulation-Authority-2013.nc
 20%|██        | 94/470 [02:07<08:40,  1.39s/it]
233-Aoyama-et-al-2013.nc
 20%|██        | 95/470 [02:08<07:50,  1.25s/it]
234-Aoyama-et-al-2013.nc
 20%|██        | 96/470 [02:09<07:01,  1.13s/it]
158-Buesseler-2018.nc
 21%|██        | 97/470 [02:10<06:38,  1.07s/it]
159-Buesseler-2018.nc
 21%|██        | 98/470 [02:11<06:54,  1.11s/it]
193-Kusakabe-and-Takata-2020.nc
 21%|██        | 99/470 [02:12<06:56,  1.12s/it]
196-Tateda-and-Koyanagi-1996.nc
 21%|██▏       | 100/470 [02:13<06:54,  1.12s/it]
232-Honda-et-al-2012.nc
 21%|██▏       | 101/470 [02:14<06:40,  1.09s/it]
207-MERI-2020.nc
 22%|██▏       | 102/470 [02:15<06:38,  1.08s/it]
223-Buesseler-et-al-2018.nc
 22%|██▏       | 103/470 [02:16<06:06,  1.00it/s]
133-Fisheries-Agency---Ministry-of-Agriculture-Forestry-and-Fisheries-2011.nc
 22%|██▏       | 104/470 [02:17<05:48,  1.05it/s]
134-MOE---Ministry-of-the-Environment-2012.nc
 22%|██▏       | 105/470 [02:18<05:42,  1.07it/s]
135-Japan-Fisheries-Research-and-Education-Agency-2015.nc
 23%|██▎       | 106/470 [02:20<07:18,  1.20s/it]
140-MEXT---Ministry-of-Education-Culture-Sports-Science-and-Technology-2011.nc
 23%|██▎       | 107/470 [02:21<07:53,  1.30s/it]
137-JCG---Japan-Coast-Guard-2011.nc
 23%|██▎       | 108/470 [02:22<06:51,  1.14s/it]
139-MEXT---Ministry-of-Education-Culture-Sports-Science-and-Technology-2011.nc
 23%|██▎       | 109/470 [02:23<06:09,  1.02s/it]
155-Buesseler-et-al-2012.nc
 23%|██▎       | 110/470 [02:24<07:19,  1.22s/it]
157-Buesseler-2018.nc
 24%|██▎       | 111/470 [02:25<06:27,  1.08s/it]
149-JAEA---Japan-Atomic-Energy-Agency-2013.nc
 24%|██▍       | 112/470 [02:26<06:11,  1.04s/it]
153-Yu-et-al-2018.nc
 24%|██▍       | 113/470 [02:27<05:49,  1.02it/s]
206-MERI-2019.nc
 24%|██▍       | 114/470 [02:28<05:52,  1.01it/s]
682-NRA---Nuclear-Regulation-Authority-2021.nc
 24%|██▍       | 115/470 [02:29<05:37,  1.05it/s]
683-NRA---Nuclear-Regulation-Authority-2021.nc
 25%|██▍       | 116/470 [02:30<06:28,  1.10s/it]
684-NRA---Nuclear-Regulation-Authority-2021.nc
 25%|██▍       | 117/470 [02:31<05:47,  1.02it/s]
549-Shigeoka-et-al-2019.nc
 25%|██▌       | 118/470 [02:32<06:00,  1.02s/it]
688-NRA---Nuclear-Regulation-Authority-2021.nc
 25%|██▌       | 119/470 [02:33<05:42,  1.02it/s]
689-NRA---Nuclear-Regulation-Authority-2021.nc
 26%|██▌       | 120/470 [02:34<05:17,  1.10it/s]
717-Smith-et-al-2017.nc
 26%|██▌       | 121/470 [02:35<05:12,  1.12it/s]
723-Robison-et-al-1981.nc
 26%|██▌       | 122/470 [02:35<05:11,  1.12it/s]
474-Madigan-et-al-2017.nc
 26%|██▌       | 123/470 [02:37<05:41,  1.02it/s]
476-Ruelas-Inzunza-et-al-2012.nc
 26%|██▋       | 124/470 [02:38<05:42,  1.01it/s]
514-Miki-et-al-2016.nc
 27%|██▋       | 125/470 [02:39<05:38,  1.02it/s]
681-NRA---Nuclear-Regulation-Authority-2021.nc
 27%|██▋       | 126/470 [02:40<05:54,  1.03s/it]
446-Valette-Silver-and-Lauenstein-1995.nc
 27%|██▋       | 127/470 [02:41<05:33,  1.03it/s]
542-Ruelas-Inzunza-et-al-2012.nc
 27%|██▋       | 128/470 [02:41<05:19,  1.07it/s]
546-Takagi-et-al-2015.nc
 27%|██▋       | 129/470 [02:42<05:07,  1.11it/s]
547-Ruelas-Inzunza-2014.nc
 28%|██▊       | 130/470 [02:43<05:19,  1.06it/s]
548-Suchanek-et-al-1996.nc
 28%|██▊       | 131/470 [02:44<05:13,  1.08it/s]
148-JAEA---Japan-Atomic-Energy-Agency-2013.nc
 28%|██▊       | 132/470 [02:45<04:55,  1.14it/s]
156-Yoshida-et-al-2015.nc
 28%|██▊       | 133/470 [02:46<04:56,  1.14it/s]
178-Pham-et-al-2016.nc
 29%|██▊       | 134/470 [02:47<04:46,  1.17it/s]
511-Zeng-2017.nc
 29%|██▊       | 135/470 [02:48<05:22,  1.04it/s]
512-Takahashi-et-al-2015.nc
 29%|██▉       | 136/470 [02:49<05:06,  1.09it/s]
517-Morita-et-al-2007.nc
 29%|██▉       | 137/470 [02:51<07:19,  1.32s/it]
430-Baumann-et-al-2015.nc
 29%|██▉       | 138/470 [02:54<09:45,  1.76s/it]
433-Smith-and-Towler-1993.nc
 30%|██▉       | 139/470 [02:55<08:19,  1.51s/it]
194-Tateda-and-Misonou-1990.nc
 30%|██▉       | 140/470 [02:56<07:35,  1.38s/it]
195-Tateda-and-Koyanagi-1994.nc
 30%|███       | 141/470 [02:57<06:40,  1.22s/it]
321-Département-de-Suivi-des-Centres-d’Expérimentations-Nucléaires-(DSCEN)-2011.nc
 30%|███       | 142/470 [02:57<06:01,  1.10s/it]
322-Département-de-Suivi-des-Centres-d’Expérimentations-Nucléaires-(DSCEN)-2018.nc
 30%|███       | 143/470 [02:58<05:37,  1.03s/it]
467-Poletiko-et-al-1994.nc
 31%|███       | 144/470 [02:59<05:17,  1.03it/s]
569-Bellamy-and-Hunter-1997.nc
 31%|███       | 145/470 [03:01<06:15,  1.16s/it]
169-Villa-Alfageme-et-al-2019.nc
 31%|███       | 146/470 [03:01<05:37,  1.04s/it]
411-Guy-et-al-2020.nc
 31%|███▏      | 147/470 [03:03<06:18,  1.17s/it]
466-Jeffree-et-al-1997.nc
 31%|███▏      | 148/470 [03:04<05:46,  1.08s/it]
279-Pearson-et-al-2016.nc
 32%|███▏      | 149/470 [03:05<06:01,  1.13s/it]
282-Pearson-et-al-2016.nc
 32%|███▏      | 150/470 [03:06<05:35,  1.05s/it]
84-MAFF-(now-Cefas)-2004.nc
 32%|███▏      | 151/470 [03:09<08:17,  1.56s/it]
177-Laissaoui-et-al-2013.nc
 32%|███▏      | 152/470 [03:09<07:01,  1.32s/it]
179-Villa-Alfageme-et-al-2018.nc
 33%|███▎      | 153/470 [03:10<06:10,  1.17s/it]
303-Carvalho-et-al-2011.nc
 33%|███▎      | 154/470 [03:11<05:41,  1.08s/it]
357-Arnedo-et-al-2013.nc
 33%|███▎      | 155/470 [03:13<07:21,  1.40s/it]
408-Carvalho-2011.nc
 33%|███▎      | 156/470 [03:14<06:46,  1.29s/it]
465-Tejera-et-al-2019.nc
 33%|███▎      | 157/470 [03:16<07:38,  1.47s/it]
419-Kanisch-and-Aust-2013.nc
 34%|███▎      | 158/470 [03:17<06:49,  1.31s/it]
431-Malta-and-Carvalho-2011.nc
 34%|███▍      | 159/470 [03:18<06:02,  1.17s/it]
448-HEYRAUD-et-al-1988.nc
 34%|███▍      | 160/470 [03:19<05:29,  1.06s/it]
339-Benkdad-et-al-2011.nc
 34%|███▍      | 161/470 [03:20<05:37,  1.09s/it]
341-CNESTEN-2019.nc
 34%|███▍      | 162/470 [03:21<05:13,  1.02s/it]
352-Hamid-et-al-2010.nc
 35%|███▍      | 163/470 [03:22<05:55,  1.16s/it]
371-CNESTEN-2020.nc
 35%|███▍      | 164/470 [03:23<06:05,  1.20s/it]
396-Ostlund-1984.nc
 35%|███▌      | 165/470 [03:24<05:37,  1.11s/it]
308-Jalili-et-al-2009.nc
 35%|███▌      | 166/470 [03:26<07:06,  1.40s/it]
248-Štrok-and-Smodiš-2011.nc
 36%|███▌      | 167/470 [03:28<07:41,  1.52s/it]
296-Carvalho-et-al-2011.nc
 36%|███▌      | 168/470 [03:31<09:41,  1.92s/it]
397-Ostlund-and-Grall-1987.nc
 36%|███▌      | 169/470 [03:32<08:03,  1.61s/it]
41-Aarkrog-et-al-1994.nc
 36%|███▌      | 170/470 [03:33<07:35,  1.52s/it]
161-Gómez-Guzmán-et-al-2013.nc
 36%|███▋      | 171/470 [03:34<06:28,  1.30s/it]
168-Vivo-Vilches-et-al-2018.nc
 37%|███▋      | 172/470 [03:35<05:44,  1.16s/it]
186-Corcho-Alvarado-et-al-2014.nc
 37%|███▋      | 173/470 [03:36<06:17,  1.27s/it]
188-Thünen-Institute-2018.nc
 37%|███▋      | 174/470 [03:38<07:20,  1.49s/it]
25-Nies-1989.nc
 37%|███▋      | 175/470 [03:39<06:13,  1.27s/it]
175-Santos-et-al-2007.nc
 37%|███▋      | 176/470 [03:40<05:26,  1.11s/it]
31-Aarkrog-et-al-1992.nc
 38%|███▊      | 177/470 [03:41<04:50,  1.01it/s]
174-Hurtado-Bermúdez-et-al-2018.nc
 38%|███▊      | 178/470 [03:42<04:45,  1.02it/s]
399-Andrié-et-al-1988.nc
 38%|███▊      | 179/470 [03:42<04:27,  1.09it/s]
540-Deiaa-2020.nc
 38%|███▊      | 180/470 [03:43<04:18,  1.12it/s]
559-Fiev-et-al-2013.nc
 39%|███▊      | 181/470 [03:44<04:47,  1.00it/s]
562-Joensen-2011.nc
 39%|███▊      | 182/470 [03:45<04:33,  1.05it/s]
691-Cunningham-and-O’Grady-1986.nc
 39%|███▉      | 183/470 [03:46<04:26,  1.08it/s]
692-Cunningham-et-al-1988.nc
 39%|███▉      | 184/470 [03:47<04:21,  1.09it/s]
693-O’Grady-and-Currivan-1990.nc
 39%|███▉      | 185/470 [03:49<06:13,  1.31s/it]
694-O’Grady-et-al-1991.nc
 40%|███▉      | 186/470 [03:51<06:12,  1.31s/it]
405-Berrow-et-al-1998.nc
 40%|███▉      | 187/470 [03:51<05:27,  1.16s/it]
719-Environment-Agency-et-al-2023.nc
 40%|████      | 188/470 [03:52<05:19,  1.13s/it]
372-CNESTEN-2020.nc
 40%|████      | 189/470 [03:53<04:46,  1.02s/it]
301-Fonollosa-et-al-2015.nc
 40%|████      | 190/470 [03:54<04:35,  1.01it/s]
316-Pollard-et-al-1998.nc
 41%|████      | 191/470 [03:55<04:24,  1.05it/s]
326-Benmansour-et-al-2006.nc
 41%|████      | 192/470 [03:57<05:29,  1.19s/it]
311-Ryan-et-al-1999.nc
 41%|████      | 193/470 [03:58<05:07,  1.11s/it]
484-Saito-et-al-2003.nc
 41%|████▏     | 194/470 [03:59<05:10,  1.12s/it]
236-Teixeira-and-Mazzilli-2017.nc
 41%|████▏     | 195/470 [04:00<04:38,  1.01s/it]
441-Godoy-et-al-2003.nc
 42%|████▏     | 196/470 [04:00<04:25,  1.03it/s]
711-Ramos-2010.nc
 42%|████▏     | 197/470 [04:02<05:14,  1.15s/it]
269-Mársico-et-al-2014.nc
 42%|████▏     | 198/470 [04:03<04:48,  1.06s/it]
173-Hurtado-Bermudez-et-al-2017.nc
 42%|████▏     | 199/470 [04:04<04:25,  1.02it/s]
108-Figueira-et-al-2006.nc
 43%|████▎     | 200/470 [04:05<04:13,  1.06it/s]
305-Pereira-2009.nc
 43%|████▎     | 201/470 [04:06<04:17,  1.04it/s]
362-Onjefu-et-al-2016.nc
 43%|████▎     | 202/470 [04:06<04:17,  1.04it/s]
366-Onjefu-et-al-2017.nc
 43%|████▎     | 203/470 [04:09<06:06,  1.37s/it]
438-Cherry-et-al-1994.nc
 43%|████▎     | 204/470 [04:10<05:24,  1.22s/it]
442-Moura-et-al-2015.nc
 44%|████▎     | 205/470 [04:11<06:08,  1.39s/it]
444-Gouvea-et-al-1992.nc
 44%|████▍     | 206/470 [04:12<05:26,  1.24s/it]
483-Cunha-et-al-1993.nc
 44%|████▍     | 207/470 [04:13<04:57,  1.13s/it]
235-Jesus-and-Mazzilli-2017.nc
 44%|████▍     | 208/470 [04:14<04:32,  1.04s/it]
555-Gouvea-et-al-2008.nc
 44%|████▍     | 209/470 [04:15<04:14,  1.02it/s]
485-Pereira-and-Kelecom-2010.nc
 45%|████▍     | 210/470 [04:16<04:03,  1.07it/s]
528-Godoy-et-al-2008.nc
 45%|████▍     | 211/470 [04:17<03:54,  1.10it/s]
451-Swift-et-al-1994.nc
 45%|████▌     | 212/470 [04:18<04:07,  1.04it/s]
538-Brown-1999.nc
 45%|████▌     | 213/470 [04:18<03:57,  1.08it/s]
690-CEFAS-2020.nc
 46%|████▌     | 214/470 [04:19<03:54,  1.09it/s]
198-Skjerdal-et-al-2017.nc
 46%|████▌     | 215/470 [04:20<03:56,  1.08it/s]
102-RWS-2010.nc
 46%|████▌     | 216/470 [04:21<03:43,  1.14it/s]
170-Mas-et-al-2004.nc
 46%|████▌     | 217/470 [04:22<03:39,  1.15it/s]
450-Ghose-and-Heaton-2005.nc
 46%|████▋     | 218/470 [04:23<03:34,  1.18it/s]
697-Long-et-al-1998.nc
 47%|████▋     | 219/470 [04:24<03:34,  1.17it/s]
197-Skjerdal-et-al-2015.nc
 47%|████▋     | 220/470 [04:24<03:33,  1.17it/s]
44-Aarkrog-et-al-1989.nc
 47%|████▋     | 221/470 [04:25<03:26,  1.21it/s]
6-Kautsky-and-Eicke-1982.nc
 47%|████▋     | 222/470 [04:27<04:26,  1.08s/it]
482-Heldal-2019.nc
 47%|████▋     | 223/470 [04:28<04:12,  1.02s/it]
500-Ababneh-et-al-2018.nc
 48%|████▊     | 224/470 [04:29<04:00,  1.02it/s]
531-Leppänen-2013.nc
 48%|████▊     | 225/470 [04:30<03:53,  1.05it/s]
230-Rui-et-al-2019.nc
 48%|████▊     | 226/470 [04:30<03:39,  1.11it/s]
415-Heldal-et-al-2003.nc
 48%|████▊     | 227/470 [04:31<03:33,  1.14it/s]
481-Andersen-et-al-2006.nc
 49%|████▊     | 228/470 [04:33<04:40,  1.16s/it]
566-Stepnowski-and-Skwarzec-2000.nc
 49%|████▊     | 229/470 [04:34<04:15,  1.06s/it]
695-McGarry-et-al-1994.nc
 49%|████▉     | 230/470 [04:35<03:59,  1.00it/s]
698-Ryan-et-al-2000.nc
 49%|████▉     | 231/470 [04:36<03:55,  1.02it/s]
701-Ryan-et-al-2007.nc
 49%|████▉     | 232/470 [04:38<05:17,  1.34s/it]
696-Pollard-et-al-1996.nc
 50%|████▉     | 233/470 [04:39<04:43,  1.20s/it]
700-McMahon-et-al-2005.nc
 50%|████▉     | 234/470 [04:40<04:20,  1.10s/it]
534-McCartney-et-al-2000.nc
 50%|█████     | 235/470 [04:40<04:02,  1.03s/it]
699-Ryan-et-al-2003.nc
 50%|█████     | 236/470 [04:41<04:05,  1.05s/it]
702-Smith-et-al-2007.nc
 50%|█████     | 237/470 [04:42<03:50,  1.01it/s]
703-Fegan-et-al-2008.nc
 51%|█████     | 238/470 [04:43<03:46,  1.02it/s]
704-Fegan-et-al-2010.nc
 51%|█████     | 239/470 [04:44<03:36,  1.06it/s]
705-McGinnity-et-al-2010.nc
 51%|█████     | 240/470 [04:45<03:30,  1.09it/s]
709-EPA-Ireland-2020.nc
 51%|█████▏    | 241/470 [04:46<03:22,  1.13it/s]
271-Renaud-et-al-2015.nc
 51%|█████▏    | 242/470 [04:47<03:28,  1.09it/s]
292-Bustamante-et-al-2002.nc
 52%|█████▏    | 243/470 [04:48<03:24,  1.11it/s]
317-Connan-et-al-2007.nc
 52%|█████▏    | 244/470 [04:49<03:22,  1.11it/s]
716-Renaud-et-al-2015.nc
 52%|█████▏    | 245/470 [04:49<03:23,  1.10it/s]
100-HELCOM-MORS-2018.nc
 52%|█████▏    | 246/470 [04:55<08:02,  2.15s/it]
162-Gómez-Guzmán-et-al-2014.nc
 53%|█████▎    | 247/470 [04:56<07:14,  1.95s/it]
172-Pham-et-al-2014.nc
 53%|█████▎    | 248/470 [04:58<07:40,  2.07s/it]
553-Zakaria-et-al-2008.nc
 53%|█████▎    | 249/470 [05:01<07:57,  2.16s/it]
565-Dahlgaard-1996.nc
 53%|█████▎    | 250/470 [05:02<06:35,  1.80s/it]
558-Fiévet-2020.nc
 53%|█████▎    | 251/470 [05:03<05:43,  1.57s/it]
567-Germain-1995.nc
 54%|█████▎    | 252/470 [05:04<05:00,  1.38s/it]
17-Guary-et-al-1982.nc
 54%|█████▍    | 253/470 [05:05<04:24,  1.22s/it]
62-McDonald-et-al-1986.nc
 54%|█████▍    | 254/470 [05:05<04:08,  1.15s/it]
552-Zalewska-2016.nc
 54%|█████▍    | 255/470 [05:06<03:53,  1.08s/it]
563-Ciesielski-2015.nc
 54%|█████▍    | 256/470 [05:07<03:40,  1.03s/it]
564-Saremi-et-al-2018.nc
 55%|█████▍    | 257/470 [05:10<05:14,  1.48s/it]
274-Pietrzak-Flis-et-al-2001.nc
 55%|█████▍    | 258/470 [05:11<04:52,  1.38s/it]
551-Zalewska-and-Saniewski-2011.nc
 55%|█████▌    | 259/470 [05:13<05:51,  1.67s/it]
171-Gómez-Guzmán-et-al-2013.nc
 55%|█████▌    | 260/470 [05:14<05:08,  1.47s/it]
150-Petrinec-et-al-2013.nc
 56%|█████▌    | 261/470 [05:15<04:20,  1.25s/it]
151-Petrinec-et-al-2012.nc
 56%|█████▌    | 262/470 [05:17<04:53,  1.41s/it]
472-Antovic-and-Antovic-2011.nc
 56%|█████▌    | 263/470 [05:19<05:37,  1.63s/it]
510-Men-et-al-2020.nc
 56%|█████▌    | 264/470 [05:20<05:08,  1.50s/it]
281-Desideri-et-al-2010.nc
 56%|█████▋    | 265/470 [05:21<04:23,  1.29s/it]
283-Rogić-et-al-2013.nc
 57%|█████▋    | 266/470 [05:22<03:55,  1.16s/it]
721-Andjelic-et-al-2003.nc
 57%|█████▋    | 267/470 [05:23<03:38,  1.08s/it]
410-Jia-et-al-2020.nc
 57%|█████▋    | 268/470 [05:24<03:34,  1.06s/it]
268-Antovic-and-Antovic-2011.nc
 57%|█████▋    | 269/470 [05:25<03:20,  1.00it/s]
10-Fukai-et-al-1980.nc
 57%|█████▋    | 270/470 [05:26<04:03,  1.22s/it]
250-Rožmarić-et-al-2012.nc
 58%|█████▊    | 271/470 [05:28<03:59,  1.20s/it]
255-Roselli-et-al-2017.nc
 58%|█████▊    | 272/470 [05:28<03:41,  1.12s/it]
299-Kristan-et-al-2015.nc
 58%|█████▊    | 273/470 [05:29<03:24,  1.04s/it]
561-Kül-2020.nc
 58%|█████▊    | 274/470 [05:31<04:11,  1.29s/it]
219-Polikarpov-et-al-1991.nc
 59%|█████▊    | 275/470 [05:32<03:42,  1.14s/it]
280-Mat-Çatal-et-al-2012.nc
 59%|█████▊    | 276/470 [05:33<03:23,  1.05s/it]
284-Aközcan-and-Uğur-2013.nc
 59%|█████▉    | 277/470 [05:34<03:09,  1.02it/s]
302-Kılıç-et-al-2014.nc
 59%|█████▉    | 278/470 [05:35<03:05,  1.04it/s]
412-Ugur-et-al-2002.nc
 59%|█████▉    | 279/470 [05:35<02:54,  1.09it/s]
530-Aközcan-2013.nc
 60%|█████▉    | 280/470 [05:36<02:54,  1.09it/s]
554-Yilmaz-2020.nc
 60%|█████▉    | 281/470 [05:37<02:47,  1.13it/s]
449-Kılıç-et-al-2018.nc
 60%|██████    | 282/470 [05:38<02:55,  1.07it/s]
537-Nonova-2014.nc
 60%|██████    | 283/470 [05:39<02:47,  1.11it/s]
536-Nonova-2016.nc
 60%|██████    | 284/470 [05:40<02:42,  1.15it/s]
220-Bologa-and-Patrascu-1994.nc
 61%|██████    | 285/470 [05:41<02:40,  1.15it/s]
2-Crusius-and-Anderson-1991.nc
 61%|██████    | 286/470 [05:41<02:36,  1.18it/s]
3-Top-and-Clarke-1983.nc
 61%|██████    | 287/470 [05:42<02:29,  1.23it/s]
221-Varinlioglu-et-al-1995.nc
 61%|██████▏   | 288/470 [05:43<02:24,  1.26it/s]
310-Güngör-et-al-2006.nc
 61%|██████▏   | 289/470 [05:44<02:44,  1.10it/s]
229-Cartes-et-al-2017.nc
 62%|██████▏   | 290/470 [05:45<02:35,  1.16it/s]
242-Fonollosa-et-al-2017.nc
 62%|██████▏   | 291/470 [05:46<02:47,  1.07it/s]
373-Castrillejo-et-al-2017.nc
 62%|██████▏   | 292/470 [05:47<02:38,  1.12it/s]
398-Andrié-and-Merlivat-1988.nc
 62%|██████▏   | 293/470 [05:48<02:36,  1.13it/s]
247-Nadal-et-al-2011.nc
 63%|██████▎   | 294/470 [05:49<02:39,  1.11it/s]
260-Diaz-Frances-et-al-2017.nc
 63%|██████▎   | 295/470 [05:49<02:32,  1.15it/s]
334-Laissaoui-et-al-2008.nc
 63%|██████▎   | 296/470 [05:50<02:26,  1.19it/s]
338-Thébault-et-al-2008.nc
 63%|██████▎   | 297/470 [05:51<02:25,  1.19it/s]
318-Camacho-and-Tenorio-2011.nc
 63%|██████▎   | 298/470 [05:52<02:24,  1.19it/s]
333-Noureddine-et-al-2008.nc
 64%|██████▎   | 299/470 [05:53<02:22,  1.20it/s]
356-González-Fernández-et-al-2012.nc
 64%|██████▍   | 300/470 [05:54<02:31,  1.12it/s]
14-Ballestra-et-al-1980.nc
 64%|██████▍   | 301/470 [05:54<02:28,  1.14it/s]
218-Delbono-et-al-2016.nc
 64%|██████▍   | 302/470 [05:55<02:23,  1.17it/s]
9-Fukai-et-al-1980.nc
 64%|██████▍   | 303/470 [05:56<02:18,  1.21it/s]
11-Holm-et-al-1980.nc
 65%|██████▍   | 304/470 [05:57<02:44,  1.01it/s]
560-Kılıç-2014.nc
 65%|██████▍   | 305/470 [05:58<02:36,  1.06it/s]
413-Hafızoğlu-et-al-2020.nc
 65%|██████▌   | 306/470 [05:59<02:26,  1.12it/s]
539-Karabayir-2020.nc
 65%|██████▌   | 307/470 [06:01<03:42,  1.37s/it]
227-Barsanti-et-al-2011.nc
 66%|██████▌   | 308/470 [06:03<03:24,  1.26s/it]
231-Tamburrino-et-al-2019.nc
 66%|██████▌   | 309/470 [06:03<03:02,  1.13s/it]
215-ENEA-Casaccia-Research-Centre-Radiation-Protection-Institute-2015.nc
 66%|██████▌   | 310/470 [06:04<02:40,  1.00s/it]
216-ENEA-Casaccia-Research-Centre-Radiation-Protection-Institute-2016.nc
 66%|██████▌   | 311/470 [06:05<02:28,  1.07it/s]
217-ENEA-Casaccia-Research-Centre-Radiation-Protection-Institute-2017.nc
 66%|██████▋   | 312/470 [06:06<02:17,  1.15it/s]
211-ENEA-Casaccia-Research-Centre-Radiation-Protection-Institute-2011.nc
 67%|██████▋   | 313/470 [06:07<02:32,  1.03it/s]
212-ENEA-Casaccia-Research-Centre-Radiation-Protection-Institute-2012.nc
 67%|██████▋   | 314/470 [06:08<02:30,  1.03it/s]
213-ENEA-Casaccia-Research-Centre-Radiation-Protection-Institute-2013.nc
 67%|██████▋   | 315/470 [06:08<02:18,  1.12it/s]
214-ENEA-Casaccia-Research-Centre-Radiation-Protection-Institute-2014.nc
 67%|██████▋   | 316/470 [06:10<02:55,  1.14s/it]
57-Hamilton-et-al-1994.nc
 67%|██████▋   | 317/470 [06:11<02:43,  1.07s/it]
77-Strand-and-Nikitin-1993.nc
 68%|██████▊   | 318/470 [06:12<02:29,  1.02it/s]
378-Chen-et-al-2017.nc
 68%|██████▊   | 319/470 [06:13<02:27,  1.03it/s]
473-Cooper-et-al-2000.nc
 68%|██████▊   | 320/470 [06:14<02:19,  1.08it/s]
332-Diab-et-al-2019.nc
 68%|██████▊   | 321/470 [06:15<02:23,  1.04it/s]
348-El-Mamoney-and-Khater-2004.nc
 69%|██████▊   | 322/470 [06:15<02:15,  1.10it/s]
364-Zakaly-et-al-2016.nc
 69%|██████▊   | 323/470 [06:16<02:06,  1.16it/s]
331-Ramadan-et-al-2018.nc
 69%|██████▉   | 324/470 [06:17<02:10,  1.12it/s]
429-Al-Trabulsy-et-al-2013.nc
 69%|██████▉   | 325/470 [06:18<02:04,  1.16it/s]
337-Arafat-et-al-2017.nc
 69%|██████▉   | 326/470 [06:19<02:00,  1.19it/s]
349-El-Arabi-2005.nc
 70%|██████▉   | 327/470 [06:19<01:55,  1.24it/s]
351-Uosif-et-al-2008.nc
 70%|██████▉   | 328/470 [06:20<01:56,  1.22it/s]
363-Uosif-et-al-2016.nc
 70%|███████   | 329/470 [06:21<01:57,  1.20it/s]
256-Hassona-et-al-2008.nc
 70%|███████   | 330/470 [06:22<01:56,  1.20it/s]
556-Sirelkhatim-et-al-2008.nc
 70%|███████   | 331/470 [06:24<02:41,  1.16s/it]
344-Sam-et-al-2000.nc
 71%|███████   | 332/470 [06:25<02:24,  1.05s/it]
346-Sam-2003.nc
 71%|███████   | 333/470 [06:26<02:17,  1.00s/it]
342-Sirelkhatim-et-al-2008.nc
 71%|███████   | 334/470 [06:26<02:11,  1.03it/s]
298-Uddin-et-al-2017.nc
 71%|███████▏  | 335/470 [06:27<02:05,  1.08it/s]
544-Uddin-2019.nc
 71%|███████▏  | 336/470 [06:29<02:51,  1.28s/it]
241-Al-Ghadban-et-al-2012.nc
 72%|███████▏  | 337/470 [06:30<02:33,  1.15s/it]
403-Al-Qaradawi-et-al-2015.nc
 72%|███████▏  | 338/470 [06:31<02:21,  1.07s/it]
288-Uddin-et-al-2012.nc
 72%|███████▏  | 339/470 [06:32<02:11,  1.00s/it]
290-Uddin-and-Bebhehani-2014.nc
 72%|███████▏  | 340/470 [06:33<02:07,  1.02it/s]
422-Sartandel-et-al-2016.nc
 73%|███████▎  | 341/470 [06:34<01:57,  1.09it/s]
469-Sartandel-2020.nc
 73%|███████▎  | 342/470 [06:34<01:51,  1.15it/s]
470-Sartandel-2015.nc
 73%|███████▎  | 343/470 [06:35<01:44,  1.21it/s]
499-Khot-2018.nc
 73%|███████▎  | 344/470 [06:36<01:45,  1.19it/s]
295-Mishra-et-al-2009.nc
 73%|███████▎  | 345/470 [06:37<01:44,  1.19it/s]
254-Hemalatha-et-al-2015.nc
 74%|███████▎  | 346/470 [06:38<01:43,  1.20it/s]
263-Raj-et-al-2016.nc
 74%|███████▍  | 347/470 [06:39<01:46,  1.16it/s]
275-Avadhani-et-al-2001.nc
 74%|███████▍  | 348/470 [06:39<01:44,  1.17it/s]
304-Khan-and-Wesley-2011.nc
 74%|███████▍  | 349/470 [06:40<01:42,  1.18it/s]
494-Wesley-and-Khan-2011.nc
 74%|███████▍  | 350/470 [06:41<01:41,  1.19it/s]
496-Khan-et-al-2011.nc
 75%|███████▍  | 351/470 [06:42<01:40,  1.19it/s]
291-Khan-et-al-2011.nc
 75%|███████▍  | 352/470 [06:43<01:38,  1.20it/s]
497-Khan-2012.nc
 75%|███████▌  | 353/470 [06:45<02:32,  1.31s/it]
498-Pole-2017.nc
 75%|███████▌  | 354/470 [06:46<02:15,  1.17s/it]
543-Nadhiya-et-al-2019.nc
 76%|███████▌  | 355/470 [06:47<02:06,  1.10s/it]
252-Khan-and-Wesley-2012.nc
 76%|███████▌  | 356/470 [06:49<02:25,  1.27s/it]
253-Sivakumar-2014.nc
 76%|███████▌  | 357/470 [06:49<02:08,  1.14s/it]
258-Arunachalam-et-al-2014.nc
 76%|███████▌  | 358/470 [06:50<01:56,  1.04s/it]
300-Khan-et-al-2014.nc
 76%|███████▋  | 359/470 [06:51<01:49,  1.01it/s]
265-Sathyapriya-et-al-2017.nc
 77%|███████▋  | 360/470 [06:52<01:43,  1.07it/s]
286-Khan-and-Wesley-2011.nc
 77%|███████▋  | 361/470 [06:53<01:37,  1.12it/s]
297-Sunith-Shine-et-al-2013.nc
 77%|███████▋  | 362/470 [06:54<01:35,  1.13it/s]
289-Khan-and-Wesley-2011.nc
 77%|███████▋  | 363/470 [06:55<01:35,  1.12it/s]
420-Khan-and-Wesley-2016.nc
 77%|███████▋  | 364/470 [06:55<01:35,  1.11it/s]
529-Alam-et-al-1995.nc
 78%|███████▊  | 365/470 [06:57<01:46,  1.02s/it]
307-Ghose-et-al-2000.nc
 78%|███████▊  | 366/470 [06:58<01:40,  1.04it/s]
486-Alam-et-al-1999.nc
 78%|███████▊  | 367/470 [06:58<01:35,  1.08it/s]
495-Suriyanarayanan-2010.nc
 78%|███████▊  | 368/470 [06:59<01:32,  1.10it/s]
245-Musthafa-and-Krishnamoorthy-2012.nc
 79%|███████▊  | 369/470 [07:00<01:29,  1.13it/s]
312-Hasan-et-al-2006.nc
 79%|███████▊  | 370/470 [07:01<01:30,  1.11it/s]
277-Kannan-et-al-2001.nc
 79%|███████▉  | 371/470 [07:03<01:53,  1.15s/it]
105-Theng-and-Mohamed-2005.nc
 79%|███████▉  | 372/470 [07:04<01:41,  1.04s/it]
240-Khandaker-et-al-2015.nc
 79%|███████▉  | 373/470 [07:04<01:35,  1.01it/s]
315-Zakri-and-Mohamed-2016.nc
 80%|███████▉  | 374/470 [07:05<01:29,  1.07it/s]
502-Abdullah-et-al-2015.nc
 80%|███████▉  | 375/470 [07:06<01:31,  1.03it/s]
314-Khandaker-et-al-2015.nc
 80%|████████  | 376/470 [07:07<01:27,  1.08it/s]
259-Alam-and-Mohamed-2011.nc
 80%|████████  | 377/470 [07:08<01:22,  1.13it/s]
243-Khandaker-et-al-2013.nc
 80%|████████  | 378/470 [07:09<01:25,  1.07it/s]
503-Alam-2016.nc
 81%|████████  | 379/470 [07:10<01:21,  1.11it/s]
505-Khandaker-2019.nc
 81%|████████  | 380/470 [07:11<01:19,  1.14it/s]
345-Noureddine-et-al-2003.nc
 81%|████████  | 381/470 [07:11<01:17,  1.14it/s]
370-Hassen-et-al-2019.nc
 81%|████████▏ | 382/470 [07:12<01:14,  1.18it/s]
13-Guary-et-al-1981.nc
 81%|████████▏ | 383/470 [07:13<01:20,  1.08it/s]
15-Fukai-et-al-1981.nc
 82%|████████▏ | 384/470 [07:14<01:21,  1.05it/s]
28-Ballestra-et-al-1984.nc
 82%|████████▏ | 385/470 [07:15<01:16,  1.11it/s]
27-Krishnaswami-et-al-1985.nc
 82%|████████▏ | 386/470 [07:16<01:17,  1.09it/s]
160-Pham-et-al-2010.nc
 82%|████████▏ | 387/470 [07:17<01:11,  1.16it/s]
165-Chamizo-et-al-2016.nc
 83%|████████▎ | 388/470 [07:18<01:23,  1.02s/it]
166-Bressac-et-al-2017.nc
 83%|████████▎ | 389/470 [07:19<01:17,  1.05it/s]
325-Lee-et-al-2006.nc
 83%|████████▎ | 390/470 [07:21<01:29,  1.12s/it]
417-Holm-et-al-1994.nc
 83%|████████▎ | 391/470 [07:21<01:22,  1.04s/it]
251-Strady-et-al-2015.nc
 83%|████████▎ | 392/470 [07:22<01:15,  1.03it/s]
414-Harmelin-Vivien-2012.nc
 84%|████████▎ | 393/470 [07:24<01:24,  1.10s/it]
327-Benkrid-and-Noureddine-2007.nc
 84%|████████▍ | 394/470 [07:24<01:15,  1.01it/s]
328-Noureddine-et-al-2007.nc
 84%|████████▍ | 395/470 [07:25<01:09,  1.07it/s]
545-Guendouzi-2020.nc
 84%|████████▍ | 396/470 [07:27<01:21,  1.10s/it]
24-Heyraud-and-Cherry-1983.nc
 84%|████████▍ | 397/470 [07:27<01:14,  1.02s/it]
20-Fukai-et-al-1982.nc
 85%|████████▍ | 398/470 [07:28<01:11,  1.01it/s]
12-Higgo-et-al-1980.nc
 85%|████████▍ | 399/470 [07:29<01:06,  1.07it/s]
176-Chamizo-et-al-2010.nc
 85%|████████▌ | 400/470 [07:30<01:00,  1.15it/s]
324-Noureddine-et-al-2006.nc
 85%|████████▌ | 401/470 [07:31<00:59,  1.16it/s]
266-Al-Masri-et-al-2000.nc
 86%|████████▌ | 402/470 [07:33<01:26,  1.28s/it]
267-Aoun-et-al-2015.nc
 86%|████████▌ | 403/470 [07:34<01:16,  1.14s/it]
278-El-Samad-et-al-2017.nc
 86%|████████▌ | 404/470 [07:37<01:53,  1.72s/it]
335-El-Saharty-2013.nc
 86%|████████▌ | 405/470 [07:38<01:32,  1.43s/it]
336-Atta-and-Zakaria-2014.nc
 86%|████████▋ | 406/470 [07:38<01:19,  1.24s/it]
359-El-Gamal-2014.nc
 87%|████████▋ | 407/470 [07:39<01:08,  1.09s/it]
468-Samad-2014.nc
 87%|████████▋ | 408/470 [07:40<01:05,  1.06s/it]
367-Klubi-et-al-2017.nc
 87%|████████▋ | 409/470 [07:41<00:58,  1.04it/s]
368-Botwe-et-al-2017.nc
 87%|████████▋ | 410/470 [07:43<01:17,  1.29s/it]
340-Babatunde-et-al-2015.nc
 87%|████████▋ | 411/470 [07:44<01:08,  1.16s/it]
343-Ademola-and-Ehiedu-2010.nc
 88%|████████▊ | 412/470 [07:45<01:02,  1.07s/it]
369-Botwe-et-al-2017.nc
 88%|████████▊ | 413/470 [07:46<00:56,  1.01it/s]
228-Botwe-et-al-2017.nc
 88%|████████▊ | 414/470 [07:46<00:52,  1.08it/s]
361-Isola-and-Ajadi-2015.nc
 88%|████████▊ | 415/470 [07:47<00:48,  1.13it/s]
353-Amekudzie-et-al-2011.nc
 89%|████████▊ | 416/470 [07:48<00:46,  1.15it/s]
360-Iwetan-et-al-2015.nc
 89%|████████▊ | 417/470 [07:49<00:55,  1.05s/it]
184-Díaz-Asencio-et-al-2016.nc
 89%|████████▉ | 418/470 [07:50<00:50,  1.02it/s]
185-Alonso-Hernández-et-al-2017.nc
 89%|████████▉ | 419/470 [07:51<00:46,  1.10it/s]
187-Carnero-Bravo-et-al-2018.nc
 89%|████████▉ | 420/470 [07:52<00:43,  1.14it/s]
313-Alonso-Hernandez-et-al-2002.nc
 90%|████████▉ | 421/470 [07:54<00:59,  1.20s/it]
306-Meinhold-and-Holtzman-1998.nc
 90%|████████▉ | 422/470 [07:54<00:52,  1.08s/it]
439-Continental-Shelf-Associates-Inc-1999.nc
 90%|█████████ | 423/470 [07:56<00:55,  1.19s/it]
435-Meinhold-et-al-1996.nc
 90%|█████████ | 424/470 [07:57<00:52,  1.15s/it]
8-Smith-and-Walton-1980.nc
 90%|█████████ | 425/470 [07:58<00:46,  1.04s/it]
152-Zhou-et-al-2018.nc
 91%|█████████ | 426/470 [07:59<00:42,  1.04it/s]
249-Tuo-et-al-2016.nc
 91%|█████████ | 427/470 [07:59<00:39,  1.08it/s]
261-Kim-et-al-2017.nc
 91%|█████████ | 428/470 [08:00<00:39,  1.06it/s]
519-Kong-et-al-2021.nc
 91%|█████████▏| 429/470 [08:01<00:37,  1.09it/s]
154-Dong-et-al-2018.nc
 91%|█████████▏| 430/470 [08:03<00:51,  1.28s/it]
257-Lee-et-al-2009.nc
 92%|█████████▏| 431/470 [08:05<00:57,  1.47s/it]
287-Yang-et-al-2015.nc
 92%|█████████▏| 432/470 [08:07<00:59,  1.58s/it]
421-Cho-et-al-2016.nc
 92%|█████████▏| 433/470 [08:08<00:49,  1.34s/it]
722-Ni-et-al-2024.nc
 92%|█████████▏| 434/470 [08:10<00:54,  1.51s/it]
244-Choi-et-al-2008.nc
 93%|█████████▎| 435/470 [08:11<00:45,  1.31s/it]
136-Otosaka-et-al-2010.nc
 93%|█████████▎| 436/470 [08:12<00:41,  1.22s/it]
475-Inoue-et-al-2005.nc
 93%|█████████▎| 437/470 [08:13<00:40,  1.22s/it]
527-Inoue-2019.nc
 93%|█████████▎| 438/470 [08:14<00:35,  1.09s/it]
101-Ito-et-al-2007.nc
 93%|█████████▎| 439/470 [08:15<00:31,  1.03s/it]
507-Momoshima-et-al-2012.nc
 94%|█████████▎| 440/470 [08:15<00:29,  1.02it/s]
426-Waska-et-al-2008.nc
 94%|█████████▍| 441/470 [08:16<00:28,  1.03it/s]
52-Amano-et-al-1996.nc
 94%|█████████▍| 442/470 [08:17<00:25,  1.08it/s]
515-Kim-2020.nc
 94%|█████████▍| 443/470 [08:18<00:24,  1.11it/s]
406-Burger-et-al-2007.nc
 94%|█████████▍| 444/470 [08:19<00:24,  1.07it/s]
425-USDOE-Office-of-Legacy-Management-2013.nc
 95%|█████████▍| 445/470 [08:20<00:27,  1.09s/it]
273-Hong-et-al-2011.nc
 95%|█████████▍| 446/470 [08:23<00:35,  1.49s/it]
407-Burger-et-al-2007.nc
 95%|█████████▌| 447/470 [08:24<00:30,  1.32s/it]
447-Burger-et-al-2006.nc
 95%|█████████▌| 448/470 [08:25<00:28,  1.28s/it]
416-Hamilton-et-al-2008.nc
 96%|█████████▌| 449/470 [08:28<00:37,  1.78s/it]
418-Bu-et-al-2013.nc
 96%|█████████▌| 450/470 [08:29<00:30,  1.50s/it]
379-Chen-et-al-2015.nc
 96%|█████████▌| 451/470 [08:30<00:24,  1.30s/it]
471-Chester-et-al-2013.nc
 96%|█████████▌| 452/470 [08:31<00:21,  1.20s/it]
377-Chen-et-al-2019.nc
 96%|█████████▋| 453/470 [08:31<00:18,  1.10s/it]
107-Yamada-et-al-2006.nc
 97%|█████████▋| 454/470 [08:34<00:22,  1.38s/it]
501-Yii-and-Mahmood-2011.nc
 97%|█████████▋| 455/470 [08:34<00:18,  1.23s/it]
506-Mahmood-2018.nc
 97%|█████████▋| 456/470 [08:35<00:15,  1.08s/it]
557-Van-2020.nc
 97%|█████████▋| 457/470 [08:37<00:16,  1.28s/it]
424-Wan-Mahmood-and-Yii-2012.nc
 97%|█████████▋| 458/470 [08:38<00:14,  1.21s/it]
437-Abd-Rahim-Mohamed-and-Feong-Kuan-2005.nc
 98%|█████████▊| 459/470 [08:39<00:13,  1.22s/it]
285-Lee-and-Wang-2013.nc
 98%|█████████▊| 460/470 [08:41<00:13,  1.36s/it]
434-Kulsawat-and-Porntepkasemsan-2016.nc
 98%|█████████▊| 461/470 [08:42<00:10,  1.19s/it]
423-Lim-and-Mohamed-2019.nc
 98%|█████████▊| 462/470 [08:43<00:08,  1.11s/it]
309-Syarbaini-et-al-2014.nc
 99%|█████████▊| 463/470 [08:44<00:09,  1.32s/it]
533-Pham-et-al-2010.nc
 99%|█████████▊| 464/470 [08:45<00:07,  1.17s/it]
350-Zourarah-et-al-2007.nc
 99%|█████████▉| 465/470 [08:46<00:05,  1.05s/it]
354-Nyarko-et-al-2011.nc
 99%|█████████▉| 466/470 [08:47<00:03,  1.05it/s]
270-Garcia-Orellana-et-al-2016.nc
 99%|█████████▉| 467/470 [08:48<00:02,  1.09it/s]
294-Bode-et-al-2015.nc
100%|█████████▉| 468/470 [08:48<00:01,  1.12it/s]
707-EPA-Ireland-2015.nc
100%|█████████▉| 469/470 [08:49<00:00,  1.17it/s]
708-EPA-Ireland-2017.nc