Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def pvdo_fromdeck(deck, ntpvt=None):
"""Extract PVDO from a deck
Args:
deck (str or opm.common Deck)
ntpvt (int): Number of PVT regions in deck. Will
be inferred if not present in deck.
"""
if "TABDIMS" not in deck:
deck = inferdims.inject_xxxdims_ntxxx("TABDIMS", "NTPVT", deck, ntpvt)
pvdg_df = common.ecl_keyworddata_to_df(
deck, "PVDO", renamer=RENAMERS["PVDO"], recordcountername="PVTNUM"
)
return pvdg_df
supply as a string if you don't know TABDIMS-NTSFUN.
keywords (list of str): Requested keywords for which to
to extract data.
ntsfun (int): Number of SATNUMs defined in the deck, only
needed if TABDIMS with NTSFUN is not found in the deck.
If not supplied (or None) and NTSFUN is not defined,
it will be attempted inferred.
Return:
pd.DataFrame, columns 'KEYWORD', 'SW', 'KRW', 'KROW', 'PC', ..
"""
if isinstance(deck, EclFiles):
# NB: If this is done on include files and not on DATA files
# we can loose data for SATNUM > 1
deck = deck.get_ecldeck()
deck = inferdims.inject_xxxdims_ntxxx("TABDIMS", "NTSFUN", deck, ntsfun)
assert "TABDIMS" in deck
ntsfun = deck["TABDIMS"][0][inferdims.DIMS_POS["NTSFUN"]].get_int(0)
keywords = common.handle_wanted_keywords(keywords, deck, SUPPORTED_KEYWORDS)
frames = []
for keyword in keywords:
# Construct the associated function names
function_name = keyword.lower() + "_fromdeck"
function = globals()[function_name]
dframe = function(deck, ntsfun=ntsfun)
frames.append(dframe.assign(KEYWORD=keyword))
nonempty_frames = [frame for frame in frames if not frame.empty]
if nonempty_frames:
dframe = pd.concat(nonempty_frames, axis=0, sort=False, ignore_index=True)
# We want to sort the keywords by the order they appear in
def sof2_fromdeck(deck, ntsfun=None):
"""Extract SOF2 data from a deck
Args:
deck (str or opm.common Deck)
ntsfun (int): Number of SATNUM regions in deck. Will
be inferred if not present in deck
"""
if "TABDIMS" not in deck:
deck = inferdims.inject_xxxdims_ntxxx("TABDIMS", "NTSFUN", deck, ntsfun)
return common.ecl_keyworddata_to_df(
deck, "SOF2", renamer=RENAMERS["SOF2"], recordcountername="SATNUM"
)
Arguments:
deck (opm.io deck or str): Eclipse deck or string with deck. If
not string, EQLDIMS must be present in the deck.
keywords (list of str): Requested keywords for which to extract
data.
ntequl (int): If not None, should state the NTEQUL in EQLDIMS. If
None and EQLDIMS is not present, it will be inferred.
Return:
pd.DataFrame, at least with columns KEYWORD and EQLNUM
"""
if isinstance(deck, EclFiles):
deck = deck.get_ecldeck()
deck = inferdims.inject_xxxdims_ntxxx("EQLDIMS", "NTEQUL", deck, ntequl)
ntequl = deck["EQLDIMS"][0][inferdims.DIMS_POS["NTEQUL"]].get_int(0)
keywords = common.handle_wanted_keywords(keywords, deck, SUPPORTED_KEYWORDS)
frames = []
for keyword in keywords:
# Construct the associated function names
function_name = keyword.lower() + "_fromdeck"
function = globals()[function_name]
dframe = function(deck, ntequl=ntequl)
frames.append(dframe.assign(KEYWORD=keyword))
nonempty_frames = [frame for frame in frames if not frame.empty]
if nonempty_frames:
return pd.concat(nonempty_frames, axis=0, sort=False, ignore_index=True)
return pd.DataFrame()
def pdvd_fromdeck(deck, ntequl=None):
"""Extract PDVD data from a deck
Args:
deck (str or opm.common Deck)
ntequl (int): Number of EQLNUM regions in deck. Will
be inferred if not present in deck
"""
if "EQLDIMS" not in deck:
deck = inferdims.inject_xxxdims_ntxxx("EQLDIMS", "NTEQUL", deck, ntequl)
return common.ecl_keyworddata_to_df(
deck, "PDVD", renamer=RENAMERS["PDVD"], recordcountername="EQLNUM"
)
deck (opm.io deck or str): Incoming data deck. Always
supply as a string if you don't know TABDIMS-NTSFUN.
keywords (list of str): List of keywords for which data is
wanted. All data will be merged into one dataframe.
pvtnumcount (int): Number of PVTNUMs defined in the deck, only
needed if TABDIMS with NTPVT is not found in the deck.
If not supplied (or None) and NTPVT is not defined,
it will be attempted inferred.
Return:
pd.DataFrame
"""
if isinstance(deck, EclFiles):
deck = deck.get_ecldeck()
deck = inferdims.inject_xxxdims_ntxxx("TABDIMS", "NTPVT", deck, ntpvt)
ntpvt = deck["TABDIMS"][0][inferdims.DIMS_POS["NTPVT"]].get_int(0)
keywords = common.handle_wanted_keywords(keywords, deck, SUPPORTED_KEYWORDS)
frames = []
for keyword in keywords:
# Construct the associated function names
function_name = keyword.lower() + "_fromdeck"
function = globals()[function_name]
dframe = function(deck, ntpvt=ntpvt)
frames.append(dframe.assign(KEYWORD=keyword))
nonempty_frames = [frame for frame in frames if not frame.empty]
if nonempty_frames:
return pd.concat(nonempty_frames, axis=0, sort=False, ignore_index=True)
return pd.DataFrame()
def sof3_fromdeck(deck, ntsfun=None):
"""Extract SOF3 data from a deck
Args:
deck (str or opm.common Deck)
ntsfun (int): Number of SATNUM regions in deck. Will
be inferred if not present in deck
"""
if "TABDIMS" not in deck:
deck = inferdims.inject_xxxdims_ntxxx("TABDIMS", "NTSFUN", deck, ntsfun)
return common.ecl_keyworddata_to_df(
deck, "SOF3", renamer=RENAMERS["SOF3"], recordcountername="SATNUM"
)