Small Python library to manipulate BOR files
- Requirements:
- python >= 3.8
You can install, upgrade, uninstall borfile with these commands:
$ pip install borfile
To add support of exporting data to other formats (such as .zarr, .parquet or .xml):
$ pip install borfile[extra]
Using a virtualenv may help overcome issues between python and your distribution.
>>> import borfile
>>> bor = borfile.read('./tests/data/parameters/DRILL/50000240718143044D/50000240718143044D.bor')
>>> bor.domain
'DRILLING PARAMETERS'
>>> bor.description['borehole_ref']
'TEST HOLE 1'
>>> bor.description['drilling']['method']
'DRLMTD_RTR'
BOR data can be used and edited as a pandas DataFrame
>>> import pandas
>>> pandas.set_option('display.precision', 2)
>>>
>>> bor.data
DEPTH AS EVP EVR TP IP TQ HP
time
0.0 7.71 0.00 0 0 53.20 0.00 41.60 0.0
2.8 7.72 15.23 0 0 51.67 8.64 30.01 0.0
4.0 7.73 33.78 0 0 51.67 5.90 32.45 0.0
5.4 7.74 26.06 0 0 51.98 0.40 20.85 0.0
8.0 7.75 14.03 0 0 51.98 0.00 20.85 0.0
... ... ... ... ... ... ... ... ...
5211.2 19.95 16.58 0 0 55.34 8.03 33.06 0.1
5214.0 19.96 13.03 0 0 55.03 0.10 25.12 0.1
5219.4 19.97 6.76 0 0 55.34 0.00 33.97 0.1
5224.4 19.98 7.30 0 0 54.42 0.10 28.17 0.1
5233.8 20.00 7.30 0 0 55.34 0.00 35.19 0.0
[1203 rows x 8 columns]
>>> bor.data.describe()
DEPTH AS EVP EVR TP IP TQ HP
count 1203.00 1203.00 1203.0 1.20e+03 1203.00 1203.00 1203.00 1203.00
mean 13.86 14.53 0.0 5.82e-03 53.30 5.30 31.07 0.05
std 3.55 14.40 0.0 7.61e-02 1.53 7.83 7.54 0.09
min 7.71 0.00 0.0 0.00e+00 47.40 0.00 8.03 0.00
25% 10.78 9.12 0.0 0.00e+00 52.28 0.00 26.34 0.00
50% 13.89 11.40 0.0 0.00e+00 53.81 0.71 30.31 0.00
75% 16.94 15.20 0.0 0.00e+00 54.42 8.34 34.89 0.10
max 20.00 182.43 0.0 1.00e+00 55.95 37.02 77.31 2.23
>>> bor.data.loc[:1]
DEPTH AS EVP EVR TP IP TQ HP
time
0.0 7.71 0.0 0 0 53.2 0.0 41.6 0.0
>>> bor.data.loc[0, 'DEPTH'] = 7
>>> bor.data.loc[:1]
DEPTH AS EVP EVR TP IP TQ HP
time
0.0 7.0 0.0 0 0 53.2 0.0 41.6 0.0
>>> import matplotlib.pyplot as plt
>>> bor.data.set_index('DEPTH').plot.area(figsize=(16, 6), y=['AS', 'TP'], subplots=True)
You can export the data in any format supported by the pandas DataFrame class
>>> bor.to_csv('/tmp/data.csv')
>>> bor.to_json('/tmp/data.json')
>>> bor.to_zarr('/tmp/data.zarr', mode='w') # need pip install borfile[extra]
>>> bor.to_xml('/tmp/data.xml') # need pip install borfile[extra]
>>> bor.to_parquet('/tmp/data.parquet') # need pip install borfile[extra]
Changes can be made persistent with the save method..
>>> bor.save()
..or discarded with the reset method
>>> bor.reset()