Rogii Solo.Well

Well

attribute project

The Project this Well belongs to.

attribute uuid

Unique identifier of the Well.

attribute name

Name of the Well.

attribute xsrf

Surface X coordinate of the Well.

attribute ysrf

Surface Y coordinate of the Well.

attribute xsrf_real

Real surface X coordinate of the Well.

attribute ysrf_real

Real surface Y coordinate of the Well.

attribute kb

Kelly Bushing (KB) elevation of the Well.

attribute api

API number of the Well.

attribute operator

Operator of the Well.

attribute azimuth

Azimuth angle of the Well in degrees.

attribute convergence

Grid convergence angle of the Well in degrees.

attribute tie_in_tvd

True Vertical Depth (TVD) at the tie-in point.

attribute tie_in_ns

North-South coordinate at the tie-in point.

attribute tie_in_ew

East-West coordinate at the tie-in point.

attribute starred

Whether this Well is starred.

property trajectory

Get the trajectory data for this Well.

property interpretations

Get the ObjectRepository of Interpretation

property starred_interpretation

Get the starred Interpretation for this Well.

property target_lines

Get the TargetLine associated with this Well.

property starred_target_line

Get the starred TargetLine for this Well.

property nested_wells

Get the NestedWell, representing well, plan associated with this Well.

property linked_typewells

Get the linked Typewell associated with this Well.

property starred_nested_well

Get the starred NestedWell for this Well.

property logs

Get the Log associated with this Well.

property topsets

Get the Topset associated with this Well.

property starred_topset

Get the starred Topset for this Well.

property mudlogs

Get the Mudlog associated with this Well.

property time_traces

Get the TimeTrace associated with this Well.

property calc_traces

Get the CalcTrace associated with this Well.

property comments

Get the Comment associated with this Well.

property attributes

Get the attributes associated with this Well.

method to_dict(get_converted)

Convert the Well instance to a dictionary.

method to_df(get_converted)

Convert the Well instance to a Pandas DataFrame.

method replace_trajectory(md_uom, incl_uom, azi_uom, trajectory_stations)

Replace the trajectory data for this Well.

method create_nested_well(name, operator, api, xsrf, ysrf, kb, tie_in_tvd, tie_in_ns, tie_in_ew)

Create a new NestedWell in this Well.

method create_topset(name)

Create a new Topset in this Well.

method create_log(name, points)

Create a new Log in this Well.

method create_target_line(name, origin_x, origin_y, origin_z, target_x, target_y, target_z)

Create a new TargetLine in this Well.

method update_meta(name, operator, api, xsrf, ysrf, kb, azimuth, convergence, tie_in_tvd, tie_in_ns, tie_in_ew)

Update metadata of this Well.

WellAttributes

attribute well

Reference to the Well instance these attributes belong to.

method to_dict(get_converted)

Convert the WellAttributes instance to a dictionary.

method to_df(get_converted)

Convert the WellAttributes instance to a Pandas DataFrame.

NestedWell

attribute well

The Well this NestedWell belongs to.

attribute project

The Project this NestedWell belongs to.

attribute uuid

Unique identifier of the NestedWell.

attribute name

Name of the NestedWell.

attribute xsrf

Surface X-coordinate of the NestedWell.

attribute ysrf

Surface Y-coordinate of the NestedWell.

attribute xsrf_real

Real surface X-coordinate of the NestedWell.

attribute ysrf_real

Real surface Y-coordinate of the NestedWell.

attribute kb

Kelly Bushing (KB) elevation of the NestedWell.

attribute api

API number of the NestedWell.

attribute operator

Operator of the NestedWell.

attribute azimuth

Azimuth angle of the NestedWell in degrees.

attribute convergence

Grid convergence angle of the NestedWell in degrees.

attribute tie_in_tvd

True Vertical Depth (TVD) at the tie-in point.

attribute tie_in_ns

North-South coordinate at the tie-in point.

attribute tie_in_ew

East-West coordinate at the tie-in point.

attribute starred

Whether this NestedWell is starred.

property trajectory

Get the trajectory data for this NestedWell.

property topsets

Get the topsets associated with this NestedWell.

property starred_topset

Get the starred topset for this NestedWell.

method to_dict(get_converted)

Convert the NestedWell instance to a dictionary.

method to_df(get_converted)

Convert the NestedWell instance to a Pandas DataFrame.

method replace_trajectory(md_uom, incl_uom, azi_uom, trajectory_stations)

Replace the trajectory data for this NestedWell.

method create_topset(name)

Create a new topset in this NestedWell.

method update_meta(name, operator, api, xsrf, ysrf, kb, tie_in_tvd, tie_in_ns, tie_in_ew)

Update metadata of this NestedWell.

Typewell

attribute project

The Project this Typewell belongs to.

attribute uuid

Unique identifier of the Typewell.

attribute name

Name of the Typewell.

attribute api

API number of the Typewell.

attribute kb

Kelly Bushing (KB) elevation of the Typewell.

attribute operator

Operator of the Typewell.

attribute xsrf

Surface X coordinate of the Typewell.

attribute ysrf

Surface Y coordinate of the Typewell.

attribute xsrf_real

Real surface X coordinate of the Typewell.

attribute ysrf_real

Real surface Y coordinate of the Typewell.

attribute convergence

Grid convergence angle of the Typewell in degrees.

attribute tie_in_tvd

True Vertical Depth (TVD) at the tie-in point.

attribute tie_in_ns

North-South coordinate at the tie-in point.

attribute tie_in_ew

East-West coordinate at the tie-in point.

attribute starred

Whether this Typewell is starred.

attribute shift

Shift value applied to this Typewell.

property trajectory

Get the trajectory data for this Typewell.

property logs

Get the list of Log instances associated with this Typewell.

property topsets

Get the list of Topset instances

property starred_topset

Get the starred Topset for this Typewell.

property mudlogs

Get the list of Mudlog instances

method to_dict(get_converted)

Convert the Typewell instance to a dictionary.

method to_df(get_converted)

Convert the Typewell instance to a Pandas DataFrame.

method update_meta(name, operator, api, xsrf, ysrf, kb, convergence, tie_in_tvd, tie_in_ns, tie_in_ew)

Update metadata of this Typewell.

method create_topset(name)

Create a new Topset in this Typewell.

method create_log(name, points)

Create a new Log in this Typewell.

Module Contents

class Well(papi_client: rogii_solo.papi.client.PapiClient, project: rogii_solo.project.Project, **kwargs)

Bases: rogii_solo.base.ComplexObject

Represent a Well in a Project. Contains all well-related data and operations including Trajectory, Log, Interpretation, CalcTrace, TimeTrace, Comment and so on.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')

# Get a Well by name
well = project.wells.find_by_name('Well1')

# Get the Project this Well belongs to
project = well.project
print(project.name)

# Get Well attributes
print(f"Well name: {well.name}")
print(f"Well API: {well.api}")
print(f"Well operator: {well.operator}")
print(f"Well KB: {well.kb}")
print(f"Well surface coordinates: ({well.xsrf}, {well.ysrf})")
print(f"Well real coordinates: ({well.xsrf_real}, {well.ysrf_real})")
print(f"Well azimuth: {well.azimuth}")
print(f"Well convergence: {well.convergence}")
print(f"Well tie-in TVD: {well.tie_in_tvd}")
print(f"Well tie-in NS: {well.tie_in_ns}")
print(f"Well tie-in EW: {well.tie_in_ew}")
print(f"Well starred: {well.starred}")
project

The Project this Well belongs to.

uuid: str | None = None

Unique identifier of the Well.

name: str | None = None

Name of the Well.

xsrf: float | None = None

Surface X coordinate of the Well.

ysrf: float | None = None

Surface Y coordinate of the Well.

xsrf_real: float | None = None

Real surface X coordinate of the Well.

ysrf_real: float | None = None

Real surface Y coordinate of the Well.

kb: float | None = None

Kelly Bushing (KB) elevation of the Well.

api: str | None = None

API number of the Well.

operator: str | None = None

Operator of the Well.

azimuth: float | None = None

Azimuth angle of the Well in degrees.

convergence: float | None = None

Grid convergence angle of the Well in degrees.

tie_in_tvd: float | None = None

True Vertical Depth (TVD) at the tie-in point.

tie_in_ns: float | None = None

North-South coordinate at the tie-in point.

tie_in_ew: float | None = None

East-West coordinate at the tie-in point.

starred: bool | None = None

Whether this Well is starred.

property trajectory: rogii_solo.trajectory.TrajectoryPointRepository[rogii_solo.trajectory.TrajectoryPoint]

Get the trajectory data for this Well.

Returns:

A TrajectoryPointRepository containing the Well’s trajectory points.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Get the Well's trajectory
trajectory = well.trajectory
print(trajectory.to_dict())
property interpretations: rogii_solo.base.ObjectRepository[rogii_solo.interpretation.Interpretation]

Get the ObjectRepository of Interpretation instances associated with this Well.

Returns:

An ObjectRepository

containing Interpretation instances.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Get all interpretations
interpretations = well.interpretations
print(interpretations.to_dict())

# Find a specific interpretation
interpretation = interpretations.find_by_name('Interpretation1')
print(interpretation.to_dict())
property starred_interpretation: rogii_solo.interpretation.Interpretation | None

Get the starred Interpretation for this Well.

Returns:

The starred Interpretation instance, or None if none is starred.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Get the starred interpretation
starred = well.starred_interpretation

if starred:
    print(starred.to_dict())
property target_lines: rogii_solo.base.ObjectRepository[rogii_solo.target_line.TargetLine]

Get the TargetLine associated with this Well.

Returns:

An ObjectRepository containing TargetLine instances.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Get all target lines
target_lines = well.target_lines
print(target_lines.to_dict())

# Find a specific target line
target_line = target_lines.find_by_name('TargetLine1')
print(target_line.to_dict())
property starred_target_line: rogii_solo.target_line.TargetLine | None

Get the starred TargetLine for this Well.

Returns:

The starred TargetLine instance, or None if none is starred.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Get the starred target line
starred = well.starred_target_line
if starred:
    print(starred.to_dict())
property nested_wells: rogii_solo.base.ObjectRepository[NestedWell]

Get the NestedWell, representing well, plan associated with this Well.

Returns:

An ObjectRepository containing NestedWell instances.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Get all well plans
well_plans = well.nested_wells
print(well_plans.to_dict())

# Find a specific well plan
well_plan = well_plans.find_by_name('WellPlan1')
print(well_plan.to_dict())
property linked_typewells: rogii_solo.base.ObjectRepository[Typewell]

Get the linked Typewell associated with this Well.

Returns:

An ObjectRepository containing Typewell instances.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Get all linked type wells
type_wells = well.linked_typewells
print(type_wells.to_dict())

# Find a specific type well
type_well = type_wells.find_by_name('TypeWell1')
print(type_well.to_dict())
property starred_nested_well: NestedWell | None

Get the starred NestedWell for this Well.

Returns:

The starred NestedWell instance, or None if none is starred.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Get the starred well plan
starred_well_plan = well.starred_nested_well

if starred_well_plan:
    print(starred_well_plan.to_dict())
property logs: rogii_solo.base.ObjectRepository[rogii_solo.log.Log]

Get the Log associated with this Well.

Returns:

An ObjectRepository containing Log instances.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Get all logs
logs = well.logs
print(logs.to_dict())

# Find a specific log
log = logs.find_by_name('Log1')
print(log.to_dict())
property topsets: rogii_solo.base.ObjectRepository[rogii_solo.topset.Topset]

Get the Topset associated with this Well.

Returns:

An ObjectRepository containing Topset instances.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Get all topsets
topsets = well.topsets
print(topsets.to_dict())

# Find a specific topset
topset = topsets.find_by_name('Topset1')
print(topset.to_dict())
property starred_topset: rogii_solo.topset.Topset | None

Get the starred Topset for this Well.

Returns:

The starred Topset instance, or None if none is starred.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Get the starred topset
starred = well.starred_topset

if starred:
    print(starred.to_dict())
property mudlogs: rogii_solo.base.ObjectRepository[rogii_solo.mudlog.Mudlog]

Get the Mudlog associated with this Well.

Returns:

An ObjectRepository containing Mudlog instances.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Get all mudlogs
mudlogs = well.mudlogs
print(mudlogs.to_dict())

# Find a specific mudlog
mudlog = mudlogs.find_by_name('Mudlog1')
print(mudlog.to_dict())
property time_traces: rogii_solo.base.ObjectRepository[rogii_solo.trace.TimeTrace]

Get the TimeTrace associated with this Well.

Returns:

An ObjectRepository containing TimeTrace instances.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Get all time traces
time_traces = well.time_traces
print(time_traces.to_dict())

# Find a specific time trace
time_trace = time_traces.find_by_name('TimeTrace1')
print(time_trace.to_dict())
property calc_traces: rogii_solo.base.ObjectRepository[rogii_solo.trace.CalcTrace]

Get the CalcTrace associated with this Well.

Returns:

An ObjectRepository containing CalcTrace instances.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Get all calculated traces
calc_traces = well.calc_traces
print(calc_traces.to_dict())

# Find a specific calculated trace
calc_trace = calc_traces.find_by_name('CalcTrace1')
print(calc_trace.to_dict())
property comments: rogii_solo.base.ObjectRepository[rogii_solo.comment.Comment]

Get the Comment associated with this Well.

Returns:

An ObjectRepository containing Comment instances.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Get all comments
comments = well.comments
print(comments.to_dict())

# Find a specific comment
comment = comments.find_by_name('Comment1')
print(comment.to_dict())
property attributes: WellAttributes

Get the attributes associated with this Well.

Returns:

A WellAttributes instance containing the well’s attributes.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Get well attributes
attributes = well.attributes
print(attributes.to_dict())
to_dict(get_converted: bool = True) Dict[str, Any]

Convert the Well instance to a dictionary.

Parameters:

get_converted – Whether to convert values to project units

Returns:

Dictionary representation of the Well

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Convert the Well to a dictionary with unit conversion
well_dict = well.to_dict()
print(well_dict)

# Convert the Well to a dictionary without unit conversion
raw_dict = well.to_dict(get_converted=False)
print(raw_dict)
to_df(get_converted: bool = True) pandas.DataFrame

Convert the Well instance to a Pandas DataFrame.

Parameters:

get_converted – Whether to convert values to project units

Returns:

DataFrame representation of the Well

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Convert the Well to a DataFrame
well_df = well.to_df()
print(well_df)
replace_trajectory(md_uom: str, incl_uom: str, azi_uom: str, trajectory_stations: rogii_solo.types.DataList)

Replace the trajectory data for this Well.

Parameters:
  • md_uom – Unit of measurement for measured depth values

  • incl_uom – Unit of measurement for inclination values

  • azi_uom – Unit of measurement for azimuth values

  • trajectory_stations – List of trajectory points data

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Replace the Well's trajectory
trajectory_data = [
    {'md': 0, 'incl': 0, 'azim': 0},
    {'md': 1000, 'incl': 45, 'azim': 180},
]
well.replace_trajectory(
    md_uom='ft',
    incl_uom='deg',
    azi_uom='deg',
    trajectory_stations=trajectory_data
)
create_nested_well(name: str, operator: str, api: str, xsrf: float, ysrf: float, kb: float, tie_in_tvd: float, tie_in_ns: float, tie_in_ew: float)

Create a new NestedWell in this Well.

Parameters:
  • name – Name of the NestedWell

  • operator – Operator of the NestedWell

  • api – API number of the NestedWell

  • xsrf – Surface X coordinate of the NestedWell

  • ysrf – Surface Y coordinate of the NestedWell

  • kb – Kelly Bushing (KB) elevation of the NestedWell

  • tie_in_tvd – True Vertical Depth (TVD) at the tie-in point

  • tie_in_ns – North-South coordinate at the tie-in point

  • tie_in_ew – East-West coordinate at the tie-in point

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Create a new well plan
well.create_nested_well(
    name='WellPlan1',
    operator='Operator1',
    api='API123',
    xsrf=1000.0,
    ysrf=2000.0,
    kb=100.0,
    tie_in_tvd=500.0,
    tie_in_ns=300.0,
    tie_in_ew=400.0
)
create_topset(name: str)

Create a new Topset in this Well.

Parameters:

name – Name of the Topset

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Create a new topset
well.create_topset('Topset1')
create_log(name: str, points: rogii_solo.types.DataList)

Create a new Log in this Well.

Parameters:
  • name – Name of the Log

  • points – List of Log points data

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Create a new log with some points
points = [
    {'md': 0, 'value': 100},
    {'md': 100, 'value': 200},
    {'md': 200, 'value': 300}
]
well.create_log(name='Log1', points=points)
create_target_line(name: str, origin_x: float, origin_y: float, origin_z: float, target_x: float, target_y: float, target_z: float)

Create a new TargetLine in this Well.

Parameters:
  • name – Name of the TargetLine

  • origin_x – X coordinate of the origin point

  • origin_y – Y coordinate of the origin point

  • origin_z – Z coordinate (TVDSS) of the origin point

  • target_x – X coordinate of the target point

  • target_y – Y coordinate of the target point

  • target_z – Z coordinate (TVDSS) of the target point

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Create a new target line
well.create_target_line(
    name='TargetLine1',
    origin_x=1000.0,
    origin_y=2000.0,
    origin_z=100.0,
    target_x=1500.0,
    target_y=2500.0,
    target_z=200.0
)
update_meta(name: str | None = keep_value, operator: str | None = keep_value, api: str | None = keep_value, xsrf: float | None = keep_value, ysrf: float | None = keep_value, kb: float | None = keep_value, azimuth: float | None = keep_value, convergence: float | None = keep_value, tie_in_tvd: float | None = keep_value, tie_in_ns: float | None = keep_value, tie_in_ew: float | None = keep_value)

Update metadata of this Well.

Parameters:
  • name – New name for the Well

  • operator – New operator for the Well

  • api – New API number for the Well

  • xsrf – New surface X coordinate for the Well

  • ysrf – New surface Y coordinate for the Well

  • kb – New Kelly Bushing (KB) elevation for the Well

  • azimuth – New azimuth angle for the Well

  • convergence – New grid convergence angle for the Well

  • tie_in_tvd – New True Vertical Depth (TVD) at the tie-in point

  • tie_in_ns – New North-South coordinate at the tie-in point

  • tie_in_ew – New East-West coordinate at the tie-in point

Returns:

Updated Well instance

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Update well metadata
well.update_meta(
    name='NewWellName',
    operator='NewOperator',
    kb=150.0,
    azimuth=15.0
)
class WellAttributes(well: Well, **kwargs)

Bases: rogii_solo.base.BaseObject

Represent attributes of a Well, providing access to various well properties and their values.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Get well attributes
attributes = well.attributes

# Convert attributes to dictionary
attrs_dict = attributes.to_dict()
print(attrs_dict)

# Convert attributes to DataFrame
attrs_df = attributes.to_df()
print(attrs_df)
well

Reference to the Well instance these attributes belong to.

to_dict(get_converted: bool = True) Dict

Convert the WellAttributes instance to a dictionary.

Parameters:

get_converted – Whether to convert values to project units

Returns:

Dictionary representation of the WellAttributes

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
attributes = well.attributes

# Get attributes to dictionary with unit conversion
attrs_dict = attributes.to_dict()
print(attrs_dict)

# Get raw attribute to dictionary without conversion
attrs_dict = attributes.to_dict(get_converted=False)
print(attrs_dict)
to_df(get_converted: bool = True) pandas.DataFrame

Convert the WellAttributes instance to a Pandas DataFrame.

Parameters:

get_converted – Whether to convert values to project units

Returns:

DataFrame representation of the WellAttributes

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
attributes = well.attributes

# Get attributes to DataFrame with unit conversion
attrs_dict = attributes.to_dict()
print(attrs_dict)

# Get raw attribute to DataFrame without conversion
attrs_dict = attributes.to_dict(get_converted=False)
print(attrs_dict)
class NestedWell(papi_client: rogii_solo.papi.client.PapiClient, well: Well, **kwargs)

Bases: rogii_solo.base.ComplexObject

Represent a well plan within a parent Well. Contains all well plans’ data and operations including trajectory, topsets, and more.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Get well plans
well_plans = well.nested_wells

# Get a specific well plan
well_plan = well_planss.find_by_name('WellPlan1')

# Get well plan attributes
print(f'Well plan name: {well_plan.name}')
print(f'Well plan API: {well_plan.api}')
print(f'Well plan operator: {well_plan.operator}')
print(f'Well plan KB: {well_plan.kb}')
print(f'Well plan surface coordinates: ({well_plan.xsrf}, {well_plan.ysrf})')
well

The Well this NestedWell belongs to.

project

The Project this NestedWell belongs to.

uuid: str | None = None

Unique identifier of the NestedWell.

name: str | None = None

Name of the NestedWell.

xsrf: float | None = None

Surface X-coordinate of the NestedWell.

ysrf: float | None = None

Surface Y-coordinate of the NestedWell.

xsrf_real: float | None = None

Real surface X-coordinate of the NestedWell.

ysrf_real: float | None = None

Real surface Y-coordinate of the NestedWell.

kb: float | None = None

Kelly Bushing (KB) elevation of the NestedWell.

api: str | None = None

API number of the NestedWell.

operator: str | None = None

Operator of the NestedWell.

azimuth: float | None = None

Azimuth angle of the NestedWell in degrees.

convergence: float | None = None

Grid convergence angle of the NestedWell in degrees.

tie_in_tvd: float | None = None

True Vertical Depth (TVD) at the tie-in point.

tie_in_ns: float | None = None

North-South coordinate at the tie-in point.

tie_in_ew: float | None = None

East-West coordinate at the tie-in point.

starred: bool | None = None

Whether this NestedWell is starred.

property trajectory: rogii_solo.trajectory.TrajectoryPointRepository[rogii_solo.trajectory.TrajectoryPoint]

Get the trajectory data for this NestedWell.

Returns:

A TrajectoryPointRepository containing the well plan’s trajectory points.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
well_plan = well.nested_wells.find_by_name('WellPlan1')

# Get the well plan's trajectory
trajectory = well_plan.trajectory
print(trajectory.to_dict())
property topsets: rogii_solo.base.ObjectRepository[rogii_solo.topset.Topset]

Get the topsets associated with this NestedWell.

Returns:

An ObjectRepository containing Topset instances.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
well_plan = well.nested_wells.find_by_name('WellPlan1')

# Get all topsets
topsets = well_plan.topsets
print(topsets.to_dict())

# Find a specific topset
topset = topsets.find_by_name('Topset1')
print(topset.to_dict())
property starred_topset: rogii_solo.topset.Topset | None

Get the starred topset for this NestedWell.

Returns:

The starred Topset instance, or None if none is starred.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
well_plan = well.nested_wells.find_by_name('WellPlan1')

# Get the starred topset
starred = well_plan.starred_topset

if starred:
    print(starred.to_dict())
to_dict(get_converted: bool = True) Dict[str, Any]

Convert the NestedWell instance to a dictionary.

Parameters:

get_converted – Whether to convert values to project units

Returns:

Dictionary representation of the NestedWell

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
well_plan = well.nested_wells.find_by_name('WellPlan1')

# Convert the well plan to a dictionary with unit conversion
well_plan_dict = well_plan.to_dict()
print(well_planl_dict)

# Convert the well plan to a dictionary without unit conversion
raw_dict = well_plan.to_dict(get_converted=False)
print(raw_dict)
to_df(get_converted: bool = True) pandas.DataFrame

Convert the NestedWell instance to a Pandas DataFrame.

Parameters:

get_converted – Whether to convert values to project units

Returns:

DataFrame representation of the NestedWell

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
well_plan = well.nested_wells.find_by_name('WellPlan1')

# Convert the well plan to a DataFrame
well_plan_df = well_plan.to_df()
print(well_plan_df)
replace_trajectory(md_uom: str, incl_uom: str, azi_uom: str, trajectory_stations: rogii_solo.types.DataList)

Replace the trajectory data for this NestedWell.

Parameters:
  • md_uom – Unit of measurement for measured depth values

  • incl_uom – Unit of measurement for inclination values

  • azi_uom – Unit of measurement for azimuth values

  • trajectory_stations – List of trajectory points data

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
well_plan = well.nested_wells.find_by_name('WellPlan1')

# Replace the well plan's trajectory
trajectory_data = [
    {'md': 0, 'incl': 0, 'azim': 0},
    {'md': 1000, 'incl': 45, 'azim': 180},
]
well_plan.replace_trajectory(
    md_uom='ft',
    incl_uom='deg',
    azi_uom='deg',
    trajectory_stations=trajectory_data
)
create_topset(name: str)

Create a new topset in this NestedWell.

Parameters:

name – Name of the topset

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
well_plan = well.nested_wells.find_by_name('WellPlan1')

# Create a new topset
well_plan.create_topset('Topset1')
update_meta(name: str | None = None, operator: str | None = None, api: str | None = None, xsrf: float | None = None, ysrf: float | None = None, kb: float | None = None, tie_in_tvd: float | None = None, tie_in_ns: float | None = None, tie_in_ew: float | None = None) NestedWell

Update metadata of this NestedWell.

Parameters:
  • name – New name for the NestedWell

  • operator – New operator for the NestedWell

  • api – New API number for the NestedWell

  • xsrf – New surface X-coordinate for the NestedWell

  • ysrf – New surface Y-coordinate for the NestedWell

  • kb – New Kelly Bushing (KB) elevation for the NestedWell

  • tie_in_tvd – New True Vertical Depth (TVD) at the tie-in point

  • tie_in_ns – New North-South coordinate at the tie-in point

  • tie_in_ew – New East-West coordinate at the tie-in point

Returns:

Updated NestedWell instance

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
well_plan = well.nested_wells.find_by_name('WellPlan1')

# Update well plan metadata
well_plan.update_meta(
    name='WellPlan2',
    operator='NewOperator',
    kb=150.0
)
class Typewell(papi_client: rogii_solo.papi.client.PapiClient, project: rogii_solo.project.Project, **kwargs)

Bases: rogii_solo.base.ComplexObject

Represent a Typewell in a Project. Contains all type well-related data and operations including trajectory, logs, topsets, mudlogs and more.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')

# Get linked type wells
type_wells = well.linked_typewells

# Get a specific type well
type_well = type_wells.find_by_name('TypeWell1')

# Get type well attributes
print(f"Type well name: {type_well.name}")
print(f"Type well API: {type_well.api}")
print(f"Type well operator: {type_well.operator}")
print(f"Type well KB: {type_well.kb}")
print(f"Type well surface coordinates: ({type_well.xsrf}, {type_well.ysrf})")
project

The Project this Typewell belongs to.

uuid: str | None = None

Unique identifier of the Typewell.

name: str | None = None

Name of the Typewell.

api: str | None = None

API number of the Typewell.

kb: float | None = None

Kelly Bushing (KB) elevation of the Typewell.

operator: str | None = None

Operator of the Typewell.

xsrf: float | None = None

Surface X coordinate of the Typewell.

ysrf: float | None = None

Surface Y coordinate of the Typewell.

xsrf_real: float | None = None

Real surface X coordinate of the Typewell.

ysrf_real: float | None = None

Real surface Y coordinate of the Typewell.

convergence: float | None = None

Grid convergence angle of the Typewell in degrees.

tie_in_tvd: float | None = None

True Vertical Depth (TVD) at the tie-in point.

tie_in_ns: float | None = None

North-South coordinate at the tie-in point.

tie_in_ew: float | None = None

East-West coordinate at the tie-in point.

starred: bool | None = None

Whether this Typewell is starred.

shift: float | None = None

Shift value applied to this Typewell.

property trajectory: rogii_solo.trajectory.TrajectoryPointRepository[rogii_solo.trajectory.TrajectoryPoint]

Get the trajectory data for this Typewell.

Returns:

A TrajectoryPointRepository containing the Typewell

trajectory points.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
type_well = well.linked_typewells.find_by_name('TypeWell1')

# Get the type well's trajectory
trajectory = type_well.trajectory
print(trajectory.to_dict())
property logs: rogii_solo.base.ObjectRepository[rogii_solo.log.Log]

Get the list of Log instances associated with this Typewell.

Returns:

An ObjectRepository containing Log instances.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
type_well = well.linked_typewells.find_by_name('TypeWell1')

# Get all logs
logs = type_well.logs
print(logs.to_dict())

# Find a specific log
log = logs.find_by_name('Log1')
print(log.to_dict())
property topsets: rogii_solo.base.ObjectRepository[rogii_solo.topset.Topset]

Get the list of Topset instances associated with this Typewell.

Returns:

An ObjectRepository containing Topset instances.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
type_well = well.linked_typewells.find_by_name('TypeWell1')

# Get all topsets
topsets = type_well.topsets
print(topsets.to_dict())

# Find a specific topset
topset = topsets.find_by_name('Topset1')
print(topset.to_dict())
property starred_topset: rogii_solo.topset.Topset | None

Get the starred Topset for this Typewell.

Returns:

The starred Topset instance, or None if none is starred.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
type_well = well.linked_typewells.find_by_name('TypeWell1')

# Get the starred topset
starred = type_well.starred_topset

if starred:
    print(starred.to_dict())
property mudlogs: rogii_solo.base.ObjectRepository[rogii_solo.mudlog.Mudlog]

Get the list of Mudlog instances associated with this Typewell.

Returns:

An ObjectRepository containing Mudlog instances.

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
type_well = well.linked_typewells.find_by_name('TypeWell1')

# Get all mudlogs
mudlogs = type_well.mudlogs
print(mudlogs.to_dict())

# Find a specific mudlog
mudlog = mudlogs.find_by_name('Mudlog1')
print(mudlog.to_dict())
to_dict(get_converted: bool = True) Dict[str, Any]

Convert the Typewell instance to a dictionary.

Parameters:

get_converted – Whether to convert values to project units

Returns:

Dictionary representation of the Typewell

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
type_well = well.linked_typewells.find_by_name('TypeWell1')

# Convert the type well to a dictionary with unit conversion
type_well_dict = type_well.to_dict()
print(type_well_dict)

# Convert the type well to a dictionary without unit conversion
raw_dict = type_well.to_dict(get_converted=False)
print(raw_dict)
to_df(get_converted: bool = True) pandas.DataFrame

Convert the Typewell instance to a Pandas DataFrame.

Parameters:

get_converted – Whether to convert values to project units

Returns:

DataFrame representation of the Typewell

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
type_well = well.linked_typewells.find_by_name('TypeWell1')

# Convert the type well to a DataFrame
type_well_df = type_well.to_df()
print(type_well_df)
update_meta(name: str | None = None, operator: str | None = None, api: str | None = None, xsrf: float | None = None, ysrf: float | None = None, kb: float | None = None, convergence: float | None = None, tie_in_tvd: float | None = None, tie_in_ns: float | None = None, tie_in_ew: float | None = None) Typewell

Update metadata of this Typewell.

Parameters:
  • name – New name for the Typewell

  • operator – New operator for the Typewell

  • api – New API number for the Typewell

  • xsrf – New surface X-coordinate for the Typewell

  • ysrf – New surface Y-coordinate for the Typewell

  • kb – New Kelly Bushing (KB) elevation for the Typewell

  • convergence – New grid convergence angle for the Typewell

  • tie_in_tvd – New True Vertical Depth (TVD) at the tie-in point

  • tie_in_ns – New North-South coordinate at the tie-in point

  • tie_in_ew – New East-West coordinate at the tie-in point

Returns:

Updated Typewell instance

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
type_well = well.linked_typewells.find_by_name('TypeWell1')

# Update type well metadata
type_well.update_meta(
    name='NewTypeWellName',
    operator='NewOperator',
    kb=150.0,
    convergence=0.2
)
create_topset(name: str)

Create a new Topset in this Typewell.

Parameters:

name – Name of the Topset

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
type_well = well.linked_typewells.find_by_name('TypeWell1')

# Create a new topset
type_well.create_topset('Topset1')
create_log(name: str, points: rogii_solo.types.DataList)

Create a new Log in this Typewell.

Parameters:
  • name – Name of the Log

  • points – List of Log points data

Example:

from rogii_solo import SoloClient

client_id = ... # Input your client ID
client_secret = ... # Input your client secret

solo_client = SoloClient(client_id=client_id, client_secret=client_secret)
project = solo_client.set_project_by_name('Project1')
well = project.wells.find_by_name('Well1')
type_well = well.linked_typewells.find_by_name('TypeWell1')

# Create a new log with some points
points = [
    {'md': 0, 'value': 100},
    {'md': 100, 'value': 200},
    {'md': 200, 'value': 300}
]
type_well.create_log(name='Log1', points=points)