geoips.plugins.classes.sector_metadata_generators package#
Submodules#
geoips.plugins.classes.sector_metadata_generators.bdeck_parser module#
TC trackfile parser for B-Deck formatted TC deck files.
Each B-Deck file contains the full history of storm BEST tracks, on storm per location per line (split between 3 lines each in comments for readability):
AL, 20, 2020091318, , BEST, 0, 126N, 374W, 30, 1006, TD, 0, , 0,
0, 0, 0, 1011, 240, 100, 40, 0, L, 0, , 0, 0,
TWENTY, M, 12, NEQ, 60, 0, 0, 60, genesis-num, 039,
AL, 20, 2020091400, , BEST, 0, 130N, 386W, 30, 1006, TD, 0, , 0,
0, 0, 0, 1011, 240, 100, 40, 0, L, 0, , 0, 0,
TWENTY, M, 12, NEQ, 60, 60, 0, 0, genesis-num, 039,
AL, 20, 2020091406, , BEST, 0, 130N, 404W, 35, 1004, TS, 34, NEQ, 0,
0, 40, 40, 1011, 240, 40, 0, 0, L, 0, , 0, 0,
TEDDY, M, 0, , 0, 0, 0, 0, genesis-num, 039,
AL, 20, 2020091412, , BEST, 0, 128N, 422W, 35, 1004, TS, 34, NEQ, 50,
30, 0, 50, 1011, 240, 40, 45, 0, L, 0, , 0, 0,
TEDDY, M, 0, , 0, 0, 0, 0, genesis-num, 039,
AL, 20, 2020091418, , BEST, 0, 129N, 434W, 40, 1003, TS, 34, NEQ, 80,
40, 0, 70, 1012, 210, 50, 55, 0, L, 0, , 0, 0,
TEDDY, M, 12, NEQ, 90, 30, 0, 30, genesis-num, 039,
AL, 20, 2020091500, , BEST, 0, 130N, 445W, 45, 1002, TS, 34, NEQ, 100,
50, 0, 80, 1012, 210, 40, 55, 0, L, 0, , 0, 0,
TEDDY, M, 12, NEQ, 90, 30, 0, 30, genesis-num, 039,
AL, 20, 2020091506, , BEST, 0, 134N, 455W, 50, 1001, TS, 34, NEQ, 100,
50, 20, 80, 1012, 210, 20, 60, 0, L, 0, , 0, 0,
TEDDY, M, 12, NEQ, 300, 210, 30, 0, genesis-num, 039,
AL, 20, 2020091506, , BEST, 0, 134N, 455W, 50, 1001, TS, 50, NEQ, 20,
0, 0, 0, 1012, 210, 20, 60, 0, L, 0, , 0, 0,
TEDDY, M, 12, NEQ, 300, 210, 30, 0, genesis-num, 039,
AL, 20, 2020091512, , BEST, 0, 138N, 466W, 55, 999, TS, 34, NEQ, 140,
60, 40, 160, 1011, 250, 20, 65, 0, L, 0, , 0, 0,
TEDDY, D, 12, NEQ, 300, 210, 30, 30, genesis-num, 039,
AL, 20, 2020091512, , BEST, 0, 138N, 466W, 55, 999, TS, 50, NEQ, 30,
0, 0, 30, 1011, 250, 20, 65, 0, L, 0, , 0, 0,
TEDDY, D, 12, NEQ, 300, 210, 30, 30, genesis-num, 039,
AL, 20, 2020091518, , BEST, 0, 142N, 475W, 55, 997, TS, 34, NEQ, 140,
80, 40, 160, 1011, 250, 20, 65, 0, L, 0, , 0, 0,
TEDDY, D, 12, NEQ, 300, 240, 60, 60, genesis-num, 039,
AL, 20, 2020091518, , BEST, 0, 142N, 475W, 55, 997, TS, 50, NEQ, 30,
0, 0, 30, 1011, 250, 20, 65, 0, L, 0, , 0, 0,
TEDDY, D, 12, NEQ, 300, 240, 60, 60, genesis-num, 039,
AL, 20, 2020091600, , BEST, 0, 147N, 480W, 65, 987, HU, 34, NEQ, 140,
80, 40, 150, 1010, 180, 20, 75, 0, L, 0, , 0, 0,
TEDDY, D, 0, , 0, 0, 0, 0, genesis-num, 039,
AL, 20, 2020091600, , BEST, 0, 147N, 480W, 65, 987, HU, 50, NEQ, 40,
30, 0, 30, 1010, 180, 20, 75, 0, L, 0, , 0, 0,
TEDDY, D, 0, , 0, 0, 0, 0, genesis-num, 039,
AL, 20, 2020091600, , BEST, 0, 147N, 480W, 65, 987, HU, 64, NEQ, 20,
0, 0, 0, 1010, 180, 20, 75, 0, L, 0, , 0, 0,
TEDDY, D, 0, , 0, 0, 0, 0, genesis-num, 039,
AL, 20, 2020091606, , BEST, 0, 154N, 486W, 80, 978, HU, 34, NEQ, 140,
80, 40, 150, 1010, 180, 20, 100, 0, L, 0, , 0, 0,
TEDDY, D, 12, NEQ, 300, 240, 120, 150, genesis-num, 039,
AL, 20, 2020091606, , BEST, 0, 154N, 486W, 80, 978, HU, 50, NEQ, 40,
30, 20, 30, 1010, 180, 20, 100, 0, L, 0, , 0, 0,
TEDDY, D, 12, NEQ, 300, 240, 120, 150, genesis-num, 039,
AL, 20, 2020091606, , BEST, 0, 154N, 486W, 80, 978, HU, 64, NEQ, 20,
10, 10, 20, 1010, 180, 20, 100, 0, L, 0, , 0, 0,
TEDDY, D, 12, NEQ, 300, 240, 120, 150, genesis-num, 039,
AL, 20, 2020091612, , BEST, 0, 161N, 493W, 85, 973, HU, 34, NEQ, 170,
170, 40, 150, 1010, 180, 20, 100, 0, L, 0, , 0, 0,
TEDDY, D, 12, NEQ, 270, 270, 240, 270, genesis-num, 039,
AL, 20, 2020091612, , BEST, 0, 161N, 493W, 85, 973, HU, 50, NEQ, 50,
50, 20, 30, 1010, 180, 20, 100, 0, L, 0, , 0, 0,
TEDDY, D, 12, NEQ, 270, 270, 240, 270, genesis-num, 039,
AL, 20, 2020091612, , BEST, 0, 161N, 493W, 85, 973, HU, 64, NEQ, 25,
25, 10, 20, 1010, 180, 20, 100, 0, L, 0, , 0, 0,
TEDDY, D, 12, NEQ, 270, 270, 240, 270, genesis-num, 039,
AL, 20, 2020091618, , BEST, 0, 168N, 502W, 85, 973, HU, 34, NEQ, 190,
100, 70, 170, 1010, 180, 20, 105, 0, L, 0, , 0, 0,
TEDDY, D, 12, NEQ, 300, 300, 240, 300, genesis-num, 039,
AL, 20, 2020091618, , BEST, 0, 168N, 502W, 85, 973, HU, 50, NEQ, 80,
50, 30, 90, 1010, 180, 20, 105, 0, L, 0, , 0, 0,
TEDDY, D, 12, NEQ, 300, 300, 240, 300, genesis-num, 039,
AL, 20, 2020091618, , BEST, 0, 168N, 502W, 85, 973, HU, 64, NEQ, 30,
25, 0, 30, 1010, 180, 20, 105, 0, L, 0, , 0, 0,
TEDDY, D, 12, NEQ, 300, 300, 240, 300, genesis-num, 039,
AL, 20, 2020091700, , BEST, 0, 174N, 511W, 85, 973, HU, 34, NEQ, 220,
100, 80, 170, 1009, 210, 20, 100, 0, L, 0, , 0, 0,
TEDDY, D, 12, NEQ, 330, 300, 270, 300, genesis-num, 039,
AL, 20, 2020091700, , BEST, 0, 174N, 511W, 85, 973, HU, 50, NEQ, 60,
50, 50, 70, 1009, 210, 20, 100, 0, L, 0, , 0, 0,
TEDDY, D, 12, NEQ, 330, 300, 270, 300, genesis-num, 039,
AL, 20, 2020091700, , BEST, 0, 174N, 511W, 85, 973, HU, 64, NEQ, 30,
25, 20, 30, 1009, 210, 20, 100, 0, L, 0, , 0, 0,
TEDDY, D, 12, NEQ, 330, 300, 270, 300, genesis-num, 039,
AL, 20, 2020091706, , BEST, 0, 180N, 520W, 85, 973, HU, 34, NEQ, 220,
100, 80, 170, 1009, 210, 20, 105, 0, L, 0, , 0, 0,
TEDDY, D, 12, NEQ, 330, 360, 300, 300, genesis-num, 039,
AL, 20, 2020091706, , BEST, 0, 180N, 520W, 85, 973, HU, 50, NEQ, 60,
50, 50, 70, 1009, 210, 20, 105, 0, L, 0, , 0, 0,
TEDDY, D, 12, NEQ, 330, 360, 300, 300, genesis-num, 039,
AL, 20, 2020091706, , BEST, 0, 180N, 520W, 85, 973, HU, 64, NEQ, 30,
25, 20, 30, 1009, 210, 20, 105, 0, L, 0, , 0, 0,
TEDDY, D, 12, NEQ, 330, 360, 300, 300, genesis-num, 039,
- class geoips.plugins.classes.sector_metadata_generators.bdeck_parser.BdeckParserSectorMetadataGeneratorPlugin(module=None)[source]#
Bases:
DeckSectorMetaGeneratorPluginBdeck Parser Sector Metadata generator plugin class.
- call(trackfile_name, allowed_aid_types=None)[source]#
TC deckfile parser for B-Deck files.
Each B-Deck file contains the full history of storm BEST tracks, one storm location per line. Example b-deck files are available in the GeoIPS repo.
- Parameters:
trackfile_name (str) – Path to bdeck file, with full 6 hourly storm track history, formatted as follows:
allowed_aid_type (list) – List of allowed aid types. Defaults to [“BEST”] if None
- Returns:
List of Dictionaries of storm metadata fields from each storm location
- Return type:
list
See also
- API
Valid fields can be found in geoips.sector_utils.utils.SECTOR_INFO_ATTRS
- family = 'tc'#
- get_final_storm_name_bdeck(deck_lines, tcyear, trackfile_name=None, is_archived=False)[source]#
Get final storm name from full bdeck file.
- get_storm_start_datetime_from_bdeck_entry(deck_lines)[source]#
Get storm start datetime from full bdeck file.
Assumes deck_lines are ordered from oldest to newest, so first line is the storm start time within the current deck file.
Note this can change from one deck file to the next during the life of a storm (e.g., storm locations can be added or removed during the life of a storm), so this value may NOT be consistent throughout the life of a storm as additional bdeck file are obtained.
Since we want to always have a storm start datetime defined, whether we have additional metadata available containing the absolute storm start datetime or not, we always return the storm start datetime from the first entry in the current deck file here.
- get_storm_start_datetime_from_bdeck_filename(bdeck_filename)[source]#
Return the storm start time found in the actual filename, if it exists.
The absolute storm start datetime is the first time a position was ever identified for a given storm. Note the current deck file may have a different initial entry than when the invest was first identified, but we would like to maintain the original storm start datetime to ensure a consistent storm ID throughout the life of a storm when possible.
Standard ATCF bdeck file names do NOT include the storm start datetime.
Standard bdeck filenames
bsh912026.dat
bsh122026.dat
Some processing systems will set the original storm start datetime when the very first position is received, then maintain that same value in the deck filenames throughout the life of the storm (invest and numbered).
Enhanced filenames, including storm start datetime
bsh912026.2026010212.dat
bsh122026.2026010212.dat
If the storm start datetime is included in the filename, retrieve the filename storm start datetime field here. We know if this value exists, it is the absolute original storm start datetime, and we can be sure it will remain consistent throughout the life of the storm.
Example deck file sequences for an invest that becomes a numbered storm:
bsh912026.2026010212.dat
20260102T1623Z first invest file created
2026010212 First line in first invest deck file
20260102T1646Z second invest file created (23 min after first)
2026010118 First line in all subsequent invest deck files
20260104T1833Z final invest file created
2026010418 Final storm position time in final invest deck file
bsh122026.2026010212.dat
2026010118 First line in all numbered storm deck files
20260104T1854Z First numbered storm file created (21 min after final invest)
- 2026010418 Final storm position time in first numbered storm deck file
(same as final invest)
20260106T1857Z final file created
2026010618 Final line in final numbered storm deck file
- get_stormyear_from_bdeck_filename(bdeck_filename)[source]#
Get the storm year from the B-deck filename.
- Parameters:
bdeck_filename (str) –
Path to deck file to search for storm year
Must be of format: xxxxxYYYY.*.dat - pulls YYYY from filename based on location
- Returns:
Storm year
- Return type:
int
- interface = 'sector_metadata_generators'#
- name = 'bdeck_parser'#
- parse_bdeck_line(line, source_filename=None, storm_year=None, final_storm_name=None, invest_number=None, storm_start_datetime_from_filename_of_current_deck_file=None, storm_start_datetime_from_first_line_of_current_deck_file=None, parser_name='bdeck_parser')[source]#
Retrieve the storm information from the current line from the deck file.
- Parameters:
line (str) –
Current line from the deck file including all storm information
` * AL, 20, 2020091618, , BEST, 0, 168N, 502W, 85, 973, HU, 64, NEQ, 30, 25, 0, 30, 1010, 180, 20, 105, 0, L, 0, , 0, 0, TEDDY, D, 12, NEQ, 300, 300, 240, 300, genesis-num, 039, * AL, 20, 2020091700, , BEST, 0, 174N, 511W, 85, 973, HU, 34, NEQ, 220, 100, 80, 170, 1009, 210, 20, 100, 0, L, 0, , 0, 0, TEDDY, D, 12, NEQ, 330, 300, 270, 300, genesis-num, 039, * AL, 20, 2020091700, , BEST, 0, 174N, 511W, 85, 973, HU, 50, NEQ, 60, 50, 50, 70, 1009, 210, 20, 100, 0, L, 0, , 0, 0, TEDDY, D, 12, NEQ, 330, 300, 270, 300, genesis-num, 039, `- Returns:
Dictionary of the fields from the current storm location from the deck file
- Return type:
dict
See also
- API
Valid fields can be found in geoips.sector_utils.utils.SECTOR_INFO_ATTRS
- geoips.plugins.classes.sector_metadata_generators.bdeck_parser.PLUGIN_CLASS#
geoips.plugins.classes.sector_metadata_generators.fdeck_parser module#
TC trackfile parser for F-Deck formatted TC deck files.
Each F-Deck file contains the current, official forecast for a storm. One storm location per line (split between 2 lines in comments below for readability):: Format is very similar to B-Deck file but line length is smaller
- AL, 99, 2023082312, 03, OFCL, 0, 187N, 651W, 25, 0, TD, 34, NEQ,
0, 0, 0, 0, 0, 0, 0, 35, 0, , 0, ASL, 300, 13,
- AL, 99, 2023082312, 03, OFCL, 3, 188N, 658W, 25, 1009, TD, 34, NEQ,
0, 0, 0, 0, 0, 0, 0, 35, 0, , 0, ASL, 285, 13,
- AL, 99, 2023082312, 03, OFCL, 12, 190N, 678W, 25, 0, LO, 34, NEQ,
0, 0, 0, 0, 0, 0, 0, 35, 0, , 0, ASL, 275, 13,
- AL, 99, 2023082312, 03, OFCL, 24, 191N, 692W, 25, 0, LO, 34, NEQ,
0, 0, 0, 0, 0, 0, 0, 35, 0, , 0, ASL, 270, 16,
- AL, 99, 2023082312, 03, OFCL, 36, 193N, 714W, 25, 0, LO, 34, NEQ,
0, 0, 0, 0, 0, 0, 0, 35, 0, , 0, ASL, 270, 16,
or
- WP, 17, 2023111306, 03, JTWC, 0, 81N, 1390E, 25, 0, TD, 34, NEQ,
0, 0, 0, 0,
- WP, 17, 2023111306, 03, JTWC, 12, 78N, 1386E, 25, 0, TD, 34, NEQ,
0, 0, 0, 0,
- WP, 17, 2023111306, 03, JTWC, 24, 79N, 1380E, 25, 0, TD, 34, NEQ,
0, 0, 0, 0,
- WP, 17, 2023111306, 03, JTWC, 36, 80N, 1371E, 30, 0, TD, 34, NEQ,
0, 0, 0, 0,
- WP, 17, 2023111306, 03, JTWC, 48, 82N, 1356E, 30, 0, TD, 34, NEQ,
0, 0, 0, 0,
- WP, 17, 2023111306, 03, JTWC, 72, 89N, 1326E, 35, 0, TS, 34, NEQ,
60, 30, 50, 70,
- WP, 17, 2023111306, 03, JTWC, 96, 101N, 1289E, 40, 0, TS, 34, NEQ,
70, 70, 50, 80, 0, 0, 0, 50, 0,
- WP, 17, 2023111306, 03, JTWC, 120, 113N, 1257E, 45, 0, TS, 34, NEQ,
100, 120, 90, 120, 0, 0, 0, 55, 0,
- class geoips.plugins.classes.sector_metadata_generators.fdeck_parser.FdeckParserSectorMetadataGeneratorPlugin(module=None)[source]#
Bases:
DeckSectorMetaGeneratorPluginFdeck Parser Sector Metadata generator plugin class.
- call(trackfile_name, allowed_aid_types=None)[source]#
TC deckfile parser for F-Deck files.
Each F-Deck file contains the full history of storm BEST tracks, one storm location per line. Example b-deck files are available in the GeoIPS repo.
- Parameters:
trackfile_name (str) – Path to fdeck file, with full 6 hourly storm track history, formatted as follows:
allowed_aid_type (list) – List of allowed aid types. Defaults to [“ANAL”, “JTWC”, “OFCL”] if None
- Returns:
List of Dictionaries of storm metadata fields from each storm location
- Return type:
list
See also
- API
Valid fields can be found in geoips.sector_utils.utils.SECTOR_INFO_ATTRS
- family = 'tc'#
- get_storm_start_datetime_from_fdeck_entry(deck_lines)[source]#
Get storm start datetime from full fdeck file.
- get_storm_start_datetime_from_fdeck_filename(fdeck_filename)[source]#
Get storm start datetime from fdeck file name.
- get_stormyear_from_fdeck_filename(fdeck_filename)[source]#
Get the storm year from the F-deck filename.
- Parameters:
fdeck_filename (str) –
Path to deck file to search for storm year
Must be of format: xxxxxYYYY.dat - pulls YYYY from filename based on location
- Returns:
Storm year
- Return type:
int
- interface = 'sector_metadata_generators'#
- name = 'fdeck_parser'#
- parse_fdeck_line(line, source_filename=None, storm_year=None, final_storm_name=None, invest_number=None, storm_start_datetime=None, original_storm_start_datetime=None, parser_name='fdeck_parser')[source]#
Retrieve the storm information from the current line from the deck file.
- Parameters:
line (str) – Current line from the deck file including all storm information AL, 99, 2023082312, 03, OFCL, 0, 187N, 651W, 25, 0, TD, 34, NEQ, 0, 0, 0, 0, 0, 0, 0, 35, 0, , 0, ASL, 300, 13, AL, 99, 2023082312, 03, OFCL, 3, 188N, 658W, 25, 1009, TD, 34, NEQ, 0, 0, 0, 0, 0, 0, 0, 35, 0, , 0, ASL, 285, 13, AL, 99, 2023082312, 03, OFCL, 12, 190N, 678W, 25, 0, LO, 34, NEQ, 0, 0, 0, 0, 0, 0, 0, 35, 0, , 0, ASL, 275, 13, AL, 99, 2023082312, 03, OFCL, 24, 191N, 692W, 25, 0, LO, 34, NEQ, 0, 0, 0, 0, 0, 0, 0, 35, 0, , 0, ASL, 270, 16, AL, 99, 2023082312, 03, OFCL, 36, 193N, 714W, 25, 0, LO, 34, NEQ, 0, 0, 0, 0, 0, 0, 0, 35, 0, , 0, ASL, 270, 16,
- Returns:
Dictionary of the fields from the current storm location from the deck file
- Return type:
dict
See also
- API
Valid fields can be found in geoips.sector_utils.utils.SECTOR_INFO_ATTRS
- geoips.plugins.classes.sector_metadata_generators.fdeck_parser.PLUGIN_CLASS#
geoips.plugins.classes.sector_metadata_generators.tc_sector_file_parser module#
TC trackfile parser for flat text sectorfiles containing current active storms.
These files contain no storm history, only the currently active storm locations. Potentially useful for real-time processing.
10S JOSHUA 210120 1200 21.8S 78.1E SHEM 20 1007 12S ELOISE 210120 1800 15.6S 44.9E SHEM 35 1001 92S INVEST 210120 1800 14.9S 120.8E SHEM 30 1002 93S INVEST 210120 1800 12.6S 98.5E SHEM 30 1003
- geoips.plugins.classes.sector_metadata_generators.tc_sector_file_parser.PLUGIN_CLASS#
- class geoips.plugins.classes.sector_metadata_generators.tc_sector_file_parser.TcSectorFileParserSectorMetadataGeneratorPlugin(module=None)[source]#
Bases:
BaseSectorMetadataGeneratorPluginTC Sector File Parser Sector Metadata generator plugin class.
- NSEW_to_float(lat_lon_val)[source]#
Convert lat/lon values with NSEW identifiers to positive or negative floats.
- Parameters:
lat_lon_val (str) – Latitude or longitude value as a string, with hemisphere specified by NSEW identifiers
- Returns:
Latitude or Longitude value as a float.
- Return type:
float
- call(trackfile_name)[source]#
TC trackfile parser for flat text sectorfiles containing current active storms. # NOQA
These files contain no storm history, only the currently active storm locations. Potentially useful for real-time processing.
- Parameters:
trackfile_name (str) – Flat text sector file name containing all currently active storm locations, formatted as follows: * 10S JOSHUA 210120 1200 21.8S 78.1E SHEM 20 1007 * 12S ELOISE 210120 1800 15.6S 44.9E SHEM 35 1001 * 92S INVEST 210120 1800 14.9S 120.8E SHEM 30 1002 * 93S INVEST 210120 1800 12.6S 98.5E SHEM 30 1003
- Returns:
List of Dictionaries of storm metadata fields from each storm location in the flat text sector file
- Return type:
list
See also
- API
Valid fields can be found in geoips.sector_utils.utils.SECTOR_INFO_ATTRS
- family = 'tc'#
- get_storm_year(storm_basin, current_month, current_year)[source]#
Ensure correct storm_year is applied.
For Southern Hemisphere storms that initiate late in the year, the storm year identifier is for the following year.
- Parameters:
storm_basin (str) – basin of current storm, one of SH, AL, EP, CP, WP, IO
current_month (int) – Current month of storm location
current_year (int) – Current year of storm location
- Returns:
Storm year identifier. current year, unless SH storm later than June, then current year + 1
- Return type:
int
- interface = 'sector_metadata_generators'#
- name = 'tc_sector_file_parser'#
- parse_flat_sectorfile_line(line, source_filename, parser_name='flat_sectorfile_parser')[source]#
Retrieve the storm information from the current line from the deck file.
- Parameters:
line (str) – Current line from the deck file including all storm information * 10S JOSHUA 210120 1200 21.8S 78.1E SHEM 20 1007
- Returns:
Dictionary of the fields from the current storm location from the deck file
- Return type:
dict
See also
- API
Valid fields can be found in geoips.sector_utils.utils.SECTOR_INFO_ATTRS
geoips.plugins.classes.sector_metadata_generators.volc_parser module#
Parser for dyanmic volcanoes csv files.
- geoips.plugins.classes.sector_metadata_generators.volc_parser.PLUGIN_CLASS#
- class geoips.plugins.classes.sector_metadata_generators.volc_parser.VolcParserSectorMetadataGeneratorPlugin(module=None)[source]#
Bases:
BaseSectorMetadataGeneratorPluginVolc Parser Sector Metadata generator plugin class.
- call(trackfile_name)[source]#
Parse a sample volcano csv file.
- Parameters:
trackfile_name (str, or path) –
Path to trackfile csv file with the format:
columns: lat lon time
lat/lon format: decimal
time format: YYYYMMDDTHHMM
- family = 'volc'#
- interface = 'sector_metadata_generators'#
- name = 'volc_parser'#
Module contents#
GeoIPS trackfile parsers init file.