Code Monkey home page Code Monkey logo

glowing-waffle's Introduction

Glowing Waffle

Introduction

This project is an undertaking for the 2021 SPE Calgary Data Science Mentorship Program. The following people were involved in this project:

  • Chris Hewson - Resfrac
  • Harrison Wood - Pason
  • Pierce Anderson - ARC Resources
  • Brendan Danyluik - CalFrac Well Services

The goal of this project was to create model that accurately predicts production values from Montney Basin wells, given a certain fracture design.

Install

This project requires Python 3 and the following Python Libraries:

All of these can be installed from the requirements.txt file in the repository using the following command:

pip install -r requirements.txt

To install the package, run the setup.py file, python 3.5 and above is required

python setup.py install

Usage

glowing-waffle can be used as a python package or as a standalone executable. The executable requires certain inputs in order to run that have default values.

Once installed, glowing-waffle can be used as a stand alone executable, the following command will display the usage of the standalone:

glowingwaffle -h

Additionally, it should be noted that the input file required to predict IP90/IP180 for a particular well should follow the same format as the template within this repository. Please note that a lot of text based inputs require numbers to map to the enums, this template should be made more user friendly in the future.

Model

Using a random forest model implemented in the CatBoost library, we will gather the necessary features and targets from public petroleum data sources for the Montney (using SQL/REST calls).

Uncertainty can be applied by using separate sets to train the model(s). By acquiring different models using slightly different data sets, we will be able to more quantifiably capture uncertainty and the bounds of the outputs obtained from the model(s).

Once the model is trained, we will test the accuracy and predictability of the model using both a subset of the data that we have set aside and in comparison to a reservoir and fracture simulator. This will give us a good idea of the dependability of the model that has been created.

Data

Publicly available production and well data was used for the Montney Basin in order to accurately train the model. This choice was made in order for the model to have wide applicability throughout the oil and gas industry.

Features

This is a working list of features and will be modified as the project evolves:

Frac Design

  1. Proppant per metre (or per stage)
  2. Total Fluid
  3. Fluid per metre (or per stage)
  4. Total Proppant
  5. Proppant concentration (max, or average?)
  6. Average injection rate
  7. Average treating pressure
  8. Average frac gradient
  9. Energizer (N2, CO2)
  10. Frac type
  11. Tonnage per meter
  12. Frac fluid - type and composition (if available)

NB: Averages can skew the data significantly, make sure that you're using the right average

Well Design

  1. Length of well
  2. Stage spacing
    1. Cluster spacing and shots per cluster
  3. Latitude, longitude and depth/TVD
  4. Parent-Child effects - ie. distance from parent well

Geology

  1. Initial flow back
  2. Rate of Flow Back
  3. Leak off rate
  4. Rock properties (perm, poro, stresses)
  5. Reservoir Pressure
  6. Saturations

Targets

This is a working list of features and will be modified as the project evolves:

  1. Initial Production in the first 90 days (IP90)
  2. Initial Production in the first 180 days (IP180)

License

Glowing Waffle is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

glowing-waffle's People

Contributors

bdanyluik avatar chews0n avatar chews0n-test avatar hpwood avatar pierceand avatar tomwmoore avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

glowing-waffle's Issues

Visualize the Resutls

Create a way to plot your features and essentially give an end report of your findings from the model. It would be best to have multiple graphs and all of the information (including the input) in one file in order to make it easy for either replicating runs or varying your runs with something like retraining of the model.

You guys had lots of great visualisations and outputs from the initial assignment (saved in the docs --> practice-problem --> ) folders, try to recycle and repurposed some of that to make your live's easier.

Train the model

Determine a good training method to train the model based on the model type, inputs and outputs expected.

It would be really beneficial to consider multiple models (perhaps 3 or 4) in order to give a probabilistic estimate of your outputs as there is rarely going to be one good answer, so consider that when partitioning data and training the model

Scaling Data

We will need a function to scale the data in order to feed it into our model.

Outlier Detection and handling

function in the data class to detect and remove the outliers in the data, think reasonable values (eg. pressures that are at least 0 probably more though) for the data and how to handle that (ie. capping vs. dropping)

Create an enum class in order to type the different features

This will be the master list, things can be added or removed to this class when we start including/excluding things from the feature list, but good to keep it organized.

Text is usually a poor way to do this because of how refactoring works in IDEs.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.