Categories
Data Science & Analytics Transfer

The Future of AI in O&G

On November 25th, Petro.ai Founder and CEO, Dr. Troy Ruths, was a guest on the Invest with James West podcast series hosted by James West, Senior Managing Director & Partner at Evercore ISI. During the 30-minute podcast, James and Troy discuss trends of artificial intelligence and machine learning in the oil and gas industry and how Petro.ai is changing the way E&P companies plan, develop, and operate their assets.

The Role or AI

The creation and application of artificial intelligence requires a lot of data. Oil and gas operators have always generated large quantities of data, but the massive increase in activity the industry has seen as a result of unconventionals created an ideal environment for AI. Each well, and even each stage, can be seen as a unique data point where operators are constantly changing and experimenting. The real power of AI is in unlocking all this data.

People think of AI at the top of the pyramid,” says Troy. “But the future is with AI at the bottom of the pyramid—the new backbone that serves information up to the enterprise, and humans are going to remain at the top of the pyramid.” This view represents a departure from how many individuals see AI but promises a much greater impact to operators. Engineers today think about their data in terms of spreadsheets or databases. The data layer of the future provides significantly more context while being much more intuitive. This is the role played by Petro.ai, intelligently storing, integrating, and activating more than 60 types of oil and gas specific data, as well as associated metadata. Many of these data types that are ingested by Petro.ai, like microseismic events, fiber, or electromagnetic imaging data don’t have a standard home today.

Challenges to AI Adoption and Change

 “I would negatively correlate ability to adopt new technology to oil price. The better the oil price is, the harder it is to get technology adoption,” remarked Troy. The current price environment is ideal for technology adoption, especially when it comes to AI. Operators are at a point now where they need digital tools to help them do more with less. The other impediment to AI adoption revolves around education. AI can mean a lot of different things to different people and there is a level of education that still needs to take place to inform the industry on how AI can best fit into their organizations.

Troy goes on to explain another challenge, “AI can only extrapolate from what it’s seen, and that can be a problem in a world where the solution may be outside of what we’ve actually tried in the past.” Petro.ai incorporates principles of geomechanics into our workflows, bridging the gap between what we know from physics with machine learning.

AI in Upstream O&G

When prompted by James on the differentiated approach upstream analytics, Troy noted that “A lot of the new software that has entered the space is focused on operational efficiency and labor.…but honesty, those aren’t going to be needle moving enough for the industry. We’re focused on the needle moving problem, which is how can we reengineer.  We need to reengineer how we approach these unconventional assets.” Good engineering done in the office is going to drive real improvements.

With recovery factors, well spacing, or frac hits, operators really need to focus on the productivity drivers for a resource unit. These questions cannot be investigated in isolation and some of the best practices we have seen come from bundling disparate workflows together. For example, a completions engineer may want to look at several different data types simultaneously. They may want to look at and ask questions about geology, drilling or surface constraints. This example goes back to humans being on top of the pyramid. The engineer needs to be fed with the relevant information, which is where AI can really help. Petro.ai not only serves up this data, but also uses a complex system model built using geomechanics and machine learning that takes engineers through an 8-step workflow to understand the key productivity drivers for a resource unit.

2020 Outlook

The industry has clearly learned that unconventionals are extremely difficult to develop profitably – even in the Permian. These are very complex systems with stacked pay that will require good engineering to be properly developed. This is good news for digital companies in 2020. In a broader sense, Troy sees operators evolving “towards surgical development, we’re going to go away from factory drilling and go more towards surgical.” However, some operators are clearing embracing digital more than others and so we expect a clear bifurcation in operator performance.

Listen to the podcast for the full discussion on AI and machine learning in oil and gas and the future for data in the energy sector.

Categories
Geology & Geoscience Transfer

Q&A with Mark Zoback: Merging Theory with Operations

Learn how Petro.ai merges theory with operational data to inform asset development strategies in this short video with geomechanics expert, Stanford professor, and Petro.ai Technical Advisor Dr. Mark Zoback.

Categories
Data Science & Analytics Geology & Geoscience Transfer

Synthetic Well Log: Reconstructing Bad Hole Well Log Results with Machine Learning

Loss of contact with the borehole.  Cave-ins.  Sub-optimal mud types.  Recording errors.  Unit conflicts.  Equipment failure.  A number of things can cause a Well Log to have bad hole readings.  Perhaps the Caliper log indicates a series of unreliable borehole sections, and an expert has flagged them.  Perhaps the expert has run an outlier detection algorithm to identify aberrant well log readings. 

What next?  What to do?  Re-logging the well is often cost prohibitive.

We’ve built a Synthetic Well Log tool in Spotfire that uses machine learning to help replace those bad hole values with more accurate ones.

Our tool uses the theory behind academic studies (e.g. An Artificially Intelligent Technique to Generate Synthetic Geomechanical Well Logs for the Bakken Formation, Synthetic well logs generation via Recurrent Neural Networks, Generating Synthetic Well Logs by Artificial Neural Networks (ANN) Using MISO-ARMAX Model in Cupiagua Field) and supports several machine learning algorithms (Random Forest, Gradient Boosting, and Support Vector Machines).  The algorithms ingest the curves which do not have data integrity issues in order to predict more accurate values of the missing or faulty curve.

Jumping into the machine learning arena might feel daunting, so we developed this tool to help Geo experts with the process.  Better yet, our tool doesn’t just reach into a black box and hand back a reconstructed well log.  The Synthetic Well Log tool:

  1. Works with the Geo expert to build an imputation model
  2. Lets that person examine modeling validation metrics
  3. Displays the predictions and reconstructed logs next to the original for a sanity check    
  4. Exports the chosen reconstructed model

Our tool puts reconstructed curves right next to the originals so they pass the expert’s eye test as well as the modeling diagnostics.

Categories
Reservoir Engineering Transfer

A Whole New Look to Production Forecasting

Petro.ai 4 is here and it’s a big one! Major updates have been added throughout, including an all new web application supporting decline curve analysis as well as machine learning. Users familiar with our previous decline curve tools will recognize some of the intuitive features but now you can batch decline wells and create type curves all in the web. Decline models can be easily moved between ARIES, Spotfire, Excel, and Petro.ai; allowing users to easily compliment existing workflows.

In your browser you can view your wells and filter by any number of parameters to quickly navigate to wells of interest.

Figure 1: Load in public and/or private data, view your wells on an interactive map and easily filter down to your wells of interest.

Type curves are easier than ever! You can dynamically select wells and update oil, gas, and water type curves. These type curves can be saved back to Petro.ai for the same sort of manual tweaking as a single well decline. They are also version controlled and can be recalled and overlaid on new models.

Figure 2: Dynamically generate probabilistic type curves directly from your selection.

Like our previous forecasting tools, you can configure your default decline parameters. Now you can save your defaults or have different set of default parameters for different basins or situations that can be quickly recalled. Flags can be configured to give a quick overview of the quality of fit to enable management by exception.

Figure 3: Configure your decline model and parameters; as well as setup flags for management by exception.

The intuitive user interface puts control at your fingertips – switch to a rate-cum view or toggle on/off individual fluid streams.

Figure 4: Easily switch how you view the declines.

This release of Petro.ai introduces a new social collaboration framework; a first for our industry. You can comment on any data point or model. These comments facilitate collaboration and capture key insights right next to the relevant data. You can also send notifications using @ or create searchable keywords with #.

Figure 5: Comment on any data point, use @notifications and #keywords.

It’s now easier than ever to see how changes to a single decline parameter effect a wells productivity.

Figure 6: Update the auto-forecast and instantly see how the changes effect remaining reserves and EUR.

The production forecasting app is great for asset teams, A&D teams, and even reserves teams. With full audit traceability and a built in approvals workflow, decline models are version controlled and can be rigorously managed.

Figure 7: Decline models are automatically version controlled and tracked for auditability. Petro.ai also supports approval workflows.

Categories
Database, Cloud, & IT Transfer

How to Rename DCA Wrangler Models in Petro.ai – Part 2

Last week, we discussed how to delete specific DCA Wrangler models. This week, we will look at how to rename them.

What if you accidentally hit save before naming the model correctly?  Or if your model evolves into something more than you first intended?

You can just follow these steps to update your model name.

Let’s get started!

You will need a couple of things:

1. Well Decline Curve or Type Curve models created with the DCA Wrangler

2. Robo 3T (free) or Studio 3T (easier use, not free).

3. Valid Petro.ai Database Connection.

Quick FYI – Petro.ai Collection (Tables)

prod.WellDeclineCurveModels – Decline Curve Models saved using Single-Well or Multi-Well mode

prod.TypeCurveModels – Type Curve Models saved using Type Curve mode

Robo 3T and Studio 3T

Code for Single-Well/Multi-Well (Robo 3T)

/*
This script will RENAME all well decline curve models listed below. 
Insert your current model name in currentName.
Insert your new model name in newName.
*/

var currentName = "Q1Modelss";
var newName = "Q1Model";

db.getCollection("prod.WellDeclineCurveModels").updateMany(
    { modelName: currentName },
    { $set: { modelName: newName } }
);

Code for Single-Well/Multi-Well (Studio 3T)

//Define Database Below
use petroai;
/*
This script will RENAME all well decline curve models listed below. 
Insert your current model name in currentName.
Insert your new model name in newName.
*/

var currentName = "Q1Modelss";
var newName = "Q1Model";

db.getCollection("prod.WellDeclineCurveModels").updateMany(
    { modelName: currentName },
    { $set: { modelName: newName } }
);

Examples:

Robo 3T

Studio 3T – IntelliShell

Code for Type Curves (Robo 3T) 

/*
This script will RENAME all type curve model listed below. 
Insert your current model name in currentName.
Insert your new model name in newName.
*/

var currentName = "Q1TypeCurvess";
var newName = "Q1TypeCurves";

db.getCollection("prod.TypeCurveModels").updateMany(
    { modelName: currentName },
    { $set: { modelName: newName } }
);

Code for Type Curves (Studio 3T)

//Define Database Below
use petroai;
/*
This script will RENAME all type curve model listed below. 
Insert your current model name in currentName.
Insert your new model name in newName.
*/

var currentName = "Q1TypeCurvess";
var newName = "Q1TypeCurves";

db.getCollection("prod.TypeCurveModels").updateMany(
    { modelName: currentName },
    { $set: { modelName: newName } }
);

Examples:

Robo 3T

Studio 3T – IntelliShell

DONE!

Categories
Database, Cloud, & IT Transfer

How to Delete DCA Wrangler Models in Petro.ai – Part 1

Have you ever wondered how you can remove DCA Wrangler models that are stored in the Petro.ai Database?

Dream no longer!

You will need a couple of things:

1. Well Decline Curve or Type Curve models created with the DCA Wrangler

2. Robo 3T (free) or Studio 3T (easier use, not free).

3. Valid Petro.ai Database Connection.

Quick FYI – Petro.ai Collections (Tables)

prod.WellDeclineCurveModels – Decline Curve Models saved using Single-Well or Multi-Well mode

prod.TypeCurveModels – Type Curve Models saved using Type Curve mode

Robo 3T and Studio 3T

Code for Single-Well/Multi-Well (Robo 3T)

/*
This script will DELETE all decline curve models listed below. 
Change "false" below to "true" in order to delete, otherwise it will just count (for safety)
*/

//List all model names, in quotes and separated by commas:
var modelNames = [
    'MyModel1',
    'MyModel2',
]
//////////////////////////////////////////////////////
var I_WOULD_LIKE_TO_DELETE_ALL_MODELS = false;
//////////////////////////////////////////////////////
modelNames.forEach((modelName) => {
    if (I_WOULD_LIKE_TO_DELETE_ALL_MODELS) {
        printjson({
            _id: modelName,
            modelCount: db.getCollection("prod.WellDeclineCurveModels").deleteMany({'modelName': modelName}),
        });
    }
    else {
        printjson({
            _id: modelName,
            modelCount: db.getCollection("prod.WellDeclineCurveModels").count({'modelName': modelName}),
        });
    }
});

Code for Single-Well/Multi-Well (Studio 3T)

//Define Database Below
use petroai;
/*
This script will DELETE all decline curve models listed below. 
Change "false" below to "true" in order to delete, otherwise it will just count (for safety)
*/
//List all model names, in quotes and separated by commas:
var modelNames = [
    'MyModel1',
    'MyModel2',
]
//////////////////////////////////////////////////////
var I_WOULD_LIKE_TO_DELETE_ALL_MODELS = false;
//////////////////////////////////////////////////////
modelNames.forEach((modelName) => {
    if (I_WOULD_LIKE_TO_DELETE_ALL_MODELS) {
        printjson({
            _id: modelName,
            modelCount: db.getCollection("prod.WellDeclineCurveModels").deleteMany({'modelName': modelName}),
        });
    }
    else {
        printjson({
            _id: modelName,
            modelCount: db.getCollection("prod.WellDeclineCurveModels").count({'modelName': modelName}),
        });
    }
});

Examples:

Robo 3T

Studio 3T – IntelliShell

Code for Type Curves (Robo 3T) 

/*
This script will DELETE all type curve models listed below. 
Change "false" below to "true" in order to delete, otherwise it will just count (for safety)
*/
//List all model names, in quotes and separated by commas:
var modelNames = [
    'MyModel1',
    'MyModel2',
]
//////////////////////////////////////////////////////
var I_WOULD_LIKE_TO_DELETE_ALL_MODELS = false;
//////////////////////////////////////////////////////
modelNames.forEach((modelName) => {
    if (I_WOULD_LIKE_TO_DELETE_ALL_MODELS) {
        printjson({
            _id: modelName,
            modelCount: db.getCollection("prod.TypeCurveModels").deleteMany({'modelName': modelName}),
        });
    }
    else {
        printjson({
            _id: modelName,
            modelCount: db.getCollection("prod.TypeCurveModels").count({'modelName': modelName}),
        });
    }
});

Code for Type Curves (Studio 3T)

//Define DB Below
use petroai;
/*
This script will DELETE all type curve models listed below. 
Change "false" below to "true" in order to delete, otherwise it will just count (for safety)
*/
//List all model names, in quotes and separated by commas:
var modelNames = [
    'MyModel1',
    'MyModel2',
]
//////////////////////////////////////////////////////
var I_WOULD_LIKE_TO_DELETE_ALL_MODELS = false;
//////////////////////////////////////////////////////
modelNames.forEach((modelName) => {
    if (I_WOULD_LIKE_TO_DELETE_ALL_MODELS) {
        printjson({
            _id: modelName,
            modelCount: db.getCollection("prod.TypeCurveModels").deleteMany({'modelName': modelName}),
        });
    }
    else {
        printjson({
            _id: modelName,
            modelCount: db.getCollection("prod.TypeCurveModels").count({'modelName': modelName}),
        });
    }
});

Examples:

Robo 3T

 

Studio 3T – IntelliShell

Enjoy!

Stay tuned for the next blog where I will talk about how to rename your model.

Categories
Business Intelligence Tools Geology & Geoscience Reservoir Engineering Transfer

View Well Logs in Spotfire with Petro.ai

https://www.youtube.com/watch?v=NLbAUo38szs

Well logs are a critical input into many engineering and geoscience workflows. However, integrating well logs can be a challenge as many workflows move to tools like TIBCO Spotfire which cannot natively load LAS files or view logs on a vertical plot. This is especially true in unconventionals where engineers typically use a combination of Spotfire and/or Excel rather than more specialized tools like Petrel to design wells.

Petro.ai lets you:

  • Organize LAS files in once place
  • Dynamically load well logs into Spotfire
  • Use Spotfire to view and interact with well logs
  • Access well logs through a REST API
Categories
Drilling & Completions Transfer

Gun Barrel Diagram: Calculate and Visualize Well Spacing Part 2

Part two of this blog series builds on my last post and provides step by step procedures for dynamically calculating well spacing and building gun barrel diagrams with Petro.ai. The short video above from Kyle LaMotta highlights the key steps but keep reading for a detailed procedure of how this is done.

Required Data

The gun barrel calculation requires two sets of data; wellbore directional surveys and formation structure grids. It is also possible to run the gun barrel calculation without structure grids, but an additional data function is required.

The surveys must have X, Y, Z, MD, and a well identifier, and the X & Y should be shifted to the correct geo positions, not the X & Y offset values provided by the survey company. Check out this template if you need to convert a drilling survey with azimuth, inclination, measured depth to XYZ. The formation grids must have an X, Y, Z, and formation name. It’s also important to note that the two data sources must be projected in the same coordinate reference system with Z values referencing the same datum (e.g. TVDSS). Another useful template can be found here to convert a CRS in Spotfire.  With this information the Gun Barrel function will calculate the 3D distance between the midpoints of horizontal wellbores.

After loading these data sources into Spotfire (either via Petro.ai or by directly adding the tables), click Tools > Subsurface > Classify subsurface intervals. Clicking this will bring up your “Classify Subsurface Intervals” window. Here you be prompted to fill in the dropdown menus with the relevant information.


Figure 4: Classify Subsurface Intervals (and Gun Barrel) Menu

XYZ Input: Map to wellbore surveys

The top left section, shown below, is used to map columns to your wellbore surveys table. Select your wellbore surveys data table, then fill in the X, Y, and Z dropdowns. Be sure to select “use active filtering”. This will allow the user to filter and mark select groupings of wells and determine the Gun Barrel distances for that select grouping.


Figure 5: Classify Subsurface Intervals (and Gun Barrel) Menu: XYZ input box Horizons

Horizons: Map to surface grids

The top middle section, shown below, is used to map columns to your wellbore surface grids. Select your horizons data table. This will be a table that has your horizon grid data points. This table should contain X, Y and Z data points for each individual horizon. See below for reference. Be sure to select “use active filtering”. This will allow the user to filter the surface grids around the wells of interest, which will significantly improve computation time.


Figure 6: Classify Subsurface Intervals (and Gun Barrel) Menu: Horizons Input Box


Figure 7: Formation Grids data table requirement (example)

Output: Table names and columns

The top right section, shown below, is used to configure the output table and column names. Transfer Columns are simply the additional columns that will be displayed in the output data table, check the column name boxes to include any metadata columns that will help you identify your wells.


Figure 8: Classify Subsurface Intervals (and Gun Barrel) Menu: Output options

Gun Barrel Settings

The bottom half of the window shown below enables the Gun Barrel calculations to run and allows the user to configure settings for the gun barrel.

To enable the gun barrel, check the “Enable Gun Barrel” checkbox. In the Wellbores section, select the Well identifier and MD from your Wellbore Survey data table. Next, use the input boxes to define buffer dimensions around the lateral. This allows the user to update the dimensions around the laterals, creating a rectangular prism for the calculations. In general, the preset values are sufficient.

The right side, Gun Barrel – Output, is used to name the spacing result table generated by the calculation. Use the input box to update the table name. At this point, you are ready to run the calculations: click the OK button.


Figure 9: Classify Subsurface Intervals (and Gun Barrel) Menu: Gun Barrel Input Box

Gun Barrel Spotfire Template

With all the proper data imported and mapped, it is now possible use the Gun Barrel workflow. It’s possible to run the interval classifier and gun barrel calculator in any Spotfire DXP using Ruths.ai software, but we recommend starting with the Gun Barrel Spotfire template, as it’s preconfigured to automate this workflow. This template will be published soon, stay tuned for updates!

Select the Gun Barrel, mark a group of wells on the Map Chart, then click the “Update Gun Barrel” button on the left side menu. And that’s it! You have kicked off the calculation for the 3D distance between the horizontal midpoints of each selected wellbore. Just monitor the Spotfire notifications area to see when the function execution completes.

Figure 10: Map Chart: select wells

The map chart above is displaying the horizontal midpoint X Y points. Depending on your preference, you can change these to the heel or toe if you have those points available to you in your data set.

After running the gun barrel calculation, the results are displayed in four different visualizations to help the user interpret these findings. Each will be explained below.

Figure 11: Gun Barrel Spotfire Template: (Side menu Update Gun Barrel Button)

The “Spacing Report” cross table shows a tabular view of the data. This takes each combination of wells and displays the 3D distance between each of the combination pairs (e.g. A to B, A to C, and B to C. This view also provides the distances dx, dy and dz of each of the midpoints between the well pairs, and a flag indicating whether the combination crosses a horizon interval.

Figure 12: Spacing Report: Tabular View

A table is great for looking up specific values; now let’s look at the visual representation of the same data. The Gun Barrel diagram helps to do this. The Gun Barrel diagram displays the data in a 2D vertical cross-sectional view through, and perpendicular to, all wellbore lateral section midpoints, allowing the user to view the horizontal midpoint wellbore paths head on, (as if staring down the barrel of a gun).

Figure 13: Gun Barrel Visualization

Important note: This is a 2D vertical cross section showing the midpoint along the lateral of the selected wells, regardless of whether they are in a direct line or are spatially staggered from a bird’s-eye view.

Figure 14: Using the spacing report and Gun Barrel together to interpret the data.

With these two views it is possible to quickly interpret the gun barrel calculations and visualize the spacing results.

Lastly, viewing this data in map view and a 3D subsurface view help to further orient the user to the well’s spatial position in the field (shown below).

Figure 15: 3D Subsurface view and Map Chart view.

Note that the Map chart shows the horizontal portion of each selected well, with the heel and toe points colored by their respective formation intervals. In the above example, the black dots represent the lateral section midpoints of each well.

Let me know if you have any issues with the above procedure. Good luck making your gun barrel plots and spacing reports!

Categories
Data Science & Analytics Transfer

What Do Cancer Models Have to do with Oil and Gas?

Dr. Luay Nakhleh, J. S. Abercrombie Professor of Computer Science at Rice University, spoke at the second Petro Community event on the importance of accounting for uncertainty when modeling complex systems like cancer growth or well performance.

Insights gained from one domain, like computational biology, can often be leveraged in other domains, like petroleum analytics, because they uncover better ways of modeling complex data to discover patterns and make more informed observations.

“Computer scientists get training in modeling and formulating problems,” states Dr. Nakhleh. “A model is an abstract representation of a system to explain some of its features, and how detailed a model is depends on the questions being asked.”

Watch more of Dr. Nakhleh’s talk to discover how he deals with modeling uncertainty in his research. Do you think this resonates with your work in oil and gas? Why or why not?

Categories
Drilling & Completions Reservoir Engineering Transfer

Gun Barrel Diagram: Calculate and Visualize Well Spacing Part 1

Introduction

The Petro.ai Gun Barrel workflow allows the user to quickly find the 3D distances between the midpoints of the lateral section of selected nearby horizontal wells. This critically important information was once only possible to calculate using specialized geoscience software or through painstaking and time-consuming manual work. With the Petro.ai integrations, we can now calculate this information directly from Spotfire:


Figure 1: Petro.ai Gun Barrel View