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
Data Science & Analytics Geology & Geoscience Transfer

Petro.ai and Environmental Stewardship

Oil and Gas companies are aware of their environmental responsibilities, the financial re-directing of governmental decarbonization initiatives, and the growing perception towards climate change. Responding to these concerns, supermajors are investing in battery innovation and renewable energy resources. The acceptance by the O&G community that climate change must be addressed has increased consumer trust as indicated by the steady climb in the 2018 Edelman Trust Barometer since 2014. (https://www.forbes.com/sites/uhenergy/2018/04/05/prices-are-up-but-challenges-remain-for-oil-and-gas-companies/#2e14481b213d)

But there’s more to the environmental question than adherence to regulations and alternative fuels. O&G companies realize that resource productivity—getting the most out of a well, isn’t just economically important; it’s a vital part of environmental stewardship.

Renewable resources still need time to mature. Under the Obama administration, Mark Zoback, professor of Geophysics at Stanford University and Technical Advisor to Petro.ai, served on a panel to address the environmental impact of shale gas production. In a Stanford Report article, he noted that “the global energy system is so huge that even if we move as quickly as possible to develop renewable energy sources such as wind, water and solar, we will need to continue using fossil fuels until mid-century.” (https://news.stanford.edu/news/2011/august/zoback-fracking-qanda-083011.html)

With that stretch of time looming ahead of us, O&G companies are faced with the difficult tasks of (1) figuring out how to effectively fracture the low permeability shale strata to release cleaner burning natural gas and (2) how to recover oil that’s being left in the ground.

As a bridge to our green energy future, natural gas provides a transition alternative that produces fewer pollutants than either coal or oil. Globally, the amount of shale gas is enormous, enough to provide a 100-year buffer at current consumption to the time when those alternative energy sources are ready. Particularly for the creation of electrical energy, natural gas is replacing coal and reducing the carbon footprint by more than 20% since 2006. (See also https://www.youtube.com/watch?v=ChNeFTNEO9c.)

Then there’s that tough to extract oil still lying untouched in fields across the world. According to experts, that residual represents two-thirds of the oil in known fields. (https://www.technologyreview.com/s/410160/oil-left-in-the-ground/)

There are many reasons for this large untouched percentage including the rate of extraction in a well, poor geology, well spacing, well construction, or poor hydraulic fracturing methodology.

Both natural gas extraction and left behind oil can be addressed. The data is there for understanding the oil and gas field, but the complexity of the factors to optimize shale extraction requires a multi-faceted, multi-layered approach.

To answer this need, Petro.ai collaborates with Dr. Mark Zoback to embed geomechanics in a platform that bundles data conditioning with machine learning and visualizations to enable analytics at the well, section, and asset level. Petro.ai enables O&G companies to determine the individual elements of a well plan that have the greatest impact on production, boosting the amount of oil extracted from each well and optimizing the correct approach for unconventional drilling.

By increasing the recovery from a well, O&G companies answer the call to environmental stewardship, giving us the buffer we need to move towards a world of alternative energy sources.

Categories
Database, Cloud, & IT Transfer

Petro.ai Joins OSDU

Petro.ai is proud to announce that it joins industry leaders Schlumberger, Chevron, Microsoft, Shell, and others in membership in the Open Subsurface Data Universe™ Forum.  The OSDU is developing a cloud-native data platform for the oil and gas industry, which will reduce silos and put data at the center of the subsurface community.

Membership in the OSDU Forum gives Petro.ai a seat at the table in developing the latest standards in petrotechnical data access and integration. Leveraging the OSDU data platform, Petro.ai accelerates the oil and gas digital transformation: empowering asset teams to organize, share, and interact with data like never before.

Learn more about the OSDU here.

Categories
Drilling & Completions Transfer

Rig Count and Operator Size: Recent Trends

Like many in our industry, the team here at Petro.ai keeps a close eye on oil prices, rig count, and analyst reports to stay in tune with what’s happening. Richard Gaut, our CFO, and I were discussing the recent trends in the rig count which led us to dive into the data. Essentially, we were curious as to how different types of E&P’s are adjusting their activity in the current market. There’s been a lot of news recently on how the super-majors are now finally up to speed in unconventionals and that smaller operators won’t be able to compete.

Figure 1: North American Rig Count (from BakerHughes)

The figure above shows the North American rig count from BakerHuges and we can see the steady recovery from mid-2016 through 2018, followed by another decline in 2019. But has this drop been evenly distributed among operators? TPH provides a more detailed breakdown of the rig count, segmenting the rigs by operator. I put the operators into one of three buckets:

  • Large-cap and integrated E&P’s
  • Mid-cap and small-cap publicly traded E&P’s
  • Privately held E&P’s

The figure below shows the breakdown between these three groups overlaid with the total rig count. You can see the mid and small caps in yellow are a shrinking segment. Figure 3 shows these groups as percentages and makes the divergence between the groups extremely visible.

Figure 2: Rig count segmented by operator type

Figure 3: Percentage breakdown of rigs by operator type

Since the recovery in 2016, privately held companies have taken on a larger share of the rigs and that trend continues through the recent downturn in 2019. This is likely because they are tasked by their financial backers to deploy capital and have no choice but to keep drilling. The large-caps and integrated oil companies have been staying constant or growing slightly since mid-2016 as has been reported. These operators have deep pockets and can offset losses in unconventionals with profits made elsewhere – at least until they become profitable. The story is very different for the small and mid-caps. These operators have experienced the sharpest drop in activity as they are forced by investors to live with in their cash flows.

The data used in this analysis were pulled at the end of September. We typically see a slowdown in activity in Q4 and recent news shows that this slowdown might be worse than normal. It’s likely the divergence we see will only continue through the end of the year.

Next, I split out the rig count by basin and found some interesting trends there which I’ll elaborate on in a second blog post.

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?