Скрипты языка программирования Python для целей интерпретации

Последнее сообщение
Napatum 7 12
Апр 14

В связи с энергичным освоением Techlog, а в частности создания скриптов на Пайтон. Предлагаю открыть тему по обмену мнениями и возможностям реализации различных функций. Так как людей программирующих на Python  много то для него есть сайт и проф форумы, но к сожалению это не сайты по нефтяной отрасли. Для желающих могу выложить Python 2.7, но он есть и в свободном доступе. Предлагаю начать с начала. Есть инструкции и краткие презентации.

Napatum 7 12
Апр 14 #1

Желающим предлагаю выкладывать программы для обсуждения.

Желательно указать какую цель приследует скрипт. И в случае успешного завершения, описать работу и возникающие проблемы.

 

Celebrity 1578 17
Апр 14 #2

Почему именно 2.7?

Актуальна же версия 3!

Вопрос: разве по правилам форума выкладывать открытй код (даже для скриптов)????

Antalik 1222 18
Апр 14 #3

Без проблем, это же не пиратский софт.

AKazak 75 13
Апр 14 #4

Работаю с Techlog'ом несколько лет и у меня собралась библиотека скриптов Python.

Представляется уместным создать специальный раздел сайта, типа http://www.codesampler.com/python.htm для систематизации скриптов.

Antalik 1222 18
Апр 14 #5

давайте пока в этой теме что-нибудь начните выкладывать, если будет живой интерес я попробую что-то сделать. Файлы можно закачать в файловый брайзер (в профиле) и ссылку вставить в комментарий к этой теме.

 

Napatum 7 12
Апр 14 #6

В связи с тем что я только начал заниматься скриптами Python, прошу сразу извинить за неточности и возможную простоту решений. Первый скрипт который я создаю сделан для быстрой проверки расчетов пористости и насыщения. Проблема с которой столкунулся, следующая: надо вместо коэффициентов а, m,n в формуле Арчи подставить формулу из известной для данного региона (например Kv=pow(10,(2.3*pow(0.72,log10(Pn))-2.301))), причем хочеться что бы при запуске в AWI вводить именно формулу. Думаю как сделать. Плюс дальше на базе скрипта для осреднения значений для попластовки столкнулся с такой проблемой, при быстром создание зон использую кривую литологических индексов, в связи с чем появляються повторы названий и скрипт срабатывает только для первого значения, ищу выход. Пока удалось только реализовать идею с добавлением к названию отметки кровли (Zone: 2_2435...), думаю как сделать более красиво. Примеры скриптов:

1)

LOOP:

Djg =(gr-GRmin)/(GRmax- GRmin)

Djg = limitValue (Djg, 0,1)

#print Djg

#print "OK"

if gr == MissingValue:

Kgl = MissingValue

elif "Larionov sand":

Kgl =0.083*(2.0**(3.7*Djg)-1.0)

Kgl= limitValue (Kgl, 0,1)

#print Kgl

r=w*Kgl

Kpnnk = nnk-r

Kpggk =((ggk-densk)/(densk-denf))- Kgl*((densk-densh)/(densk-denf))

Kpdt =((dt-dtsk)/(dtf-dtsk))- Kgl *((dtsh-dtsk)/(dtf-dtsk))

#if Kpggk > 1:

#Kpggk = 1

#if Kpdt > 1:

#Kpdt = 1

Pp=a/Kpggk**m

rvp=Pp*rv

Pn=Rp/rvp

Kv=10**(2.3*(0.72**log10(Pn))-2.301)

#Kvind=pow(((rvp*rsh)/ Rp *((rsh+pow((rvp*rsh),0.5))*2.0*pow(rsh,(1.0-0.5*rsh))+rvp*pow(rsh,(2.0-rsh)))),0.5);

2) 

import TechlogStat as ts

 

values = {}

for V in VL:

values[V] = {}

 

LOOP:

if "zoneName" in locals():

for V, v in zip(VL, vl):

if zoneName not in values[V]:

values[V][zoneName] = []

values[V][zoneName].append(v)

if VL:

w = VL[0].wellName()

if "zonationDataset" in locals() and db.datasetExists(w, zonationDataset):

refS = db.datasetSize(w,zonationDataset)

 

zn = db.variableListByFamily(w, zonationDataset, "Zone Name")[0]

znL = db.variableLoad(w, zonationDataset, zn)

 

ovl = {}

for V in VL:

ovl[V] = db.variableLoad(w, zonationDataset, V.variableName())

if not ovl[V]:

ovl[V] = [MissingValue]*refS

 

for zoneName in values[V]:

if zoneName in znL:

i = znL.index(zoneName)

ovl[V][i] = ts.average(values[V][zoneName])

 

db.variableSave(w, zonationDataset, V.variableName(), V.familyName(), V.unitName(), ovl[V])

else:

print "Please select zones"

Napatum 7 12
Апр 14 #7

На базе этих скриптов планирую создать скрипт для комплексного теоретического расчета с выводом таблицы РИГИС с флагами (нефть, нефть+вода, вода, газ, коллектор, неколлектор, плотняк) по существующим пластам для проверки и исключения случайных ошибок при интерпретации и оформление отчета. Буду благодарен если у кого то есть наработки...

vktr 140 11
Апр 14 #8

Данный скрипты есть у Шлюмберже. В свое время я брал эти скрипты у них и вставлял в свой интепретационный. Все работало. Но сами скрипты у меня не сохранились.

beaves 419 16
Апр 14 #9

Хм, язык в принципе схож с тем, что используется в ГеоПоиске.

Судя по текстовке скрипта, пористости тоже можно было залимитировать от 0 до 1, как и в случае с dJgк (двойной разностный по GR).

Napatum 7 12
Апр 14 #10

Можно задавать лимиты, а также в случае выхода за эти пределы присваивать нужный. Но интересует именно возможность указания функции при запуске AWI как например в модуле "Итог" где вноситься зависимоть для расчета.Сейчас в отпуске , через неделю продолжу и выложу готовый скрипт.

kealon 138 16
Май 14 #11

Napatum пишет:

Можно задавать лимиты, а также в случае выхода за эти пределы присваивать нужный. Но интересует именно возможность указания функции при запуске AWI как например в модуле "Итог" где вноситься зависимоть для расчета.Сейчас в отпуске , через неделю продолжу и выложу готовый скрипт.

там функция eval используется - скорость снижается раз в 10 где то (по сравнению с тем, если бы это было в самом скрипте написано)

 

vktr 140 11
Май 14 #12

можно использовать диалоговое окно. 

vktr 140 11
Май 14 #13

beaves пишет:

Хм, язык в принципе схож с тем, что используется в ГеоПоиске.

Судя по текстовке скрипта, пористости тоже можно было залимитировать от 0 до 1, как и в случае с dJgк (двойной разностный по GR).

Я бы сказал недоязык использованный в Геопоиске имеет общие корни с нормальными языками, то бишь Python.  

Khmarin 241 10
Сен 14 #14

Поделитесь опытом, стоит ли начинать изучать Python, если за плечами только школьный курс Pascal, который благополучно забыт? 

Если нет, то с какого языка начать?

Если да, то посоветуйте литературу! 

Заранее спасибо!

AGA 740 12
Сен 14 #15

Khmarin пишет:

Позделитесь опытом, стоит ли начинать изучать Python, если за плечами только школьный курс Pascal, который благополучно забыт? 

Если нет, то с какого языка начать?

Если да, то посоветуйте литературу! 

Заранее спасибо!

~~Я начал изучение C# по совету местных товарисчей. Впринице норм - очень интересно. Только времени мало на него =) "C# для чайников", "Ватсон Б. С# 4.0 на примерах", "Петцольд Ч. - Windows Presentation Foundation (WPF) - базовый курс", "Шилдт Г. Полное руководство С#4.0"

Khmarin 241 10
Сен 14 #16

 

Спасибо, уже заглянул на твирпикс, начну постигать..

denfromufa 89 13
Сен 14 #17

Python стоит изучать для инженерных целей. Можно даже заменить VBA в Excel. Потом есть пакеты numpy, scipy, sympy, ipython, matplotlib, pandas которые вам почти полность заменять основные функции matlab & mathematica. Можно даже внедрить Python как скриптовую среду в свое ПО как это сделал шлюм.

C# один из ведущих языков программирования для windows, но для инженерных или вычислительных расчетов, для работы с многомерными данными не очень развит по-моему. даже если использовать LINQ.

Khmarin 241 10
Сен 14 #18

Понял, почти осознал! Спасибо!)

Гоша 1202 18
Сен 14 #19

Python и R вам в руки (http://www.kdnuggets.com/2014/08/four-main-languages-analytics-data-mining-data-science.html). Там действительно очень многие вычислительные задачи решены и описаны как надо. Только бери и пользуй!

denfromufa 89 13
Сен 14 #20

если использовать R, то вы не сможете внедрить его в свой коммерческий проект не открыв ваши исходники из-за лицензии GPL. Python использует лицензии MIT, BSD итп - поэтому используется обширно в коммерческой среде.

ShadowRaven 613 15
Сен 14 #21

Ежели кто работал с двумя ГГК-п развернутыми на 90 град. В тектонически напряженных интервалах с эллиптическим стволом помогает:

In RHOB1, RHOB2, DRHO1 & DRHO2

Out RHOB, DRHO & BADHOLE

Params: "c" =0.11 g/cc Cut-off & "w" - window 0.6 feet

 

 

 

import TechlogStat as ts

 

def median_filter(values, window, sr):

window_points = window/sr + 1

half_window = int(window_points - 1)

new_values = []

for ind in xrange(len(values)):

if values[ind] != MissingValue:

if ind < half_window or (len(values) - ind <= half_window):

new_values.append(MissingValue)

continue

temp_list = values[ind-half_window:ind + half_window + 1]

new_values.append(ts.median(temp_list))

else:

new_values.append(MissingValue)

return new_values

 

LOOP:

drho1abs=abs(drho1)

drho2abs=abs(drho2)

 

if drho1abs<drho2abs:

drho=drho1

rhob=rhob1

else:

drho=drho2

rhob=rhob2

 

if drho==MissingValue:

badhole=1

if drho>c:

badhole=1

if drho<(-1*c):

badhole=1

if badhole==MissingValue:

badhole==0

RHOB.setValues(median_filter(RHOB.values(), w, RHOB.samplingRate()))

RHOB.save()

 

DRHO.setValues(median_filter(DRHO.values(), w, RHOB.samplingRate()))

DRHO.save()

 

 

udachniy paren 9 11
Дек 14 #22

Добрый день! Уважаемые коллеги прошу помочь, только начинаю питоном играться))) Если что где спрашиваю простые веши, прошу понять правильно.

Вопрос: "MissingValue"  для чего используется?

if gamm ==MissingValue:

vsh_py == MissingValue

else: vsh_py = (gamm-30) / (100-30)

vaque 390 16
Дек 14 #23

ShadowRaven пишет:

Ежели кто работал с двумя ГГК-п развернутыми на 90 град. В тектонически напряженных интервалах с эллиптическим стволом помогает:

а что это дает?

есть 18 развернутых по всему стволу..

Евген 160 12
Дек 14 #24

udachniy paren пишет:

Добрый день! Уважаемые коллеги прошу помочь, только начинаю питоном играться))) Если что где спрашиваю простые веши, прошу понять правильно.

Вопрос: "MissingValue"  для чего используется?

if gamm ==MissingValue:

vsh_py == MissingValue

else: vsh_py = (gamm-30) / (100-30)

MissingValue - отсутствие значений. Обычно используется связка для проверки отсутствия значений, чтобы все корректно считалось:

if GR != MissingValue:

      VSH= .......

vaque 390 16
Окт 15 #25

Интерес к теме пропал?

Moveton 100 14
Окт 15 #26

Не совсем для целей интерпретации, но написал небольшой конвертер из .dat в .zmap. Полезен, например, при необходимости загрузить в тот же Petrel горизонты, оцифрованные в Golden Software Didger. Конвертирует, собсна, сам файл, название которого при вводе необходимо вписывать в кавычках.

import sys

count = 0

filename = input()

with open(filename, "r") as f:

sys.stdout = open('%s (converted).txt' % f.name, 'a')

for line in f:

changed_line = line.split()[0:3]

if not changed_line:

count += 1

else:

changed_line.insert(2, str(count))

print('\t'.join(changed_line))

 

altair 78 8
Фев 19 #27

Можете поделиться?

AKazak пишет:

Работаю с Techlog'ом несколько лет и у меня собралась библиотека скриптов Python.

Представляется уместным создать специальный раздел сайта, типа http://www.codesampler.com/python.htm для систематизации скриптов.

const_art 31 5
Май 24 #28

Доброго времени суток!
Подскажите, имеется ли у кого конвертер бинарников (темпеста\еклипса) в какой то упращённый вид, для обработки результатов в экселе? Где-то видел тему что делали такое. Может подскажите в каком направлении начать. Хочу сделать через пайтон или VBA.

p.s. интересуют только графики

RomanK. 2145 16
Май 24 #29

Таких проектов много на гитхабе

Например 

https://github.com/permeAbiliTy/unsmry_reader

IOI 128 5
Май 24 #30

Khmarin пишет:

Поделитесь опытом, стоит ли начинать изучать Python, если за плечами только школьный курс Pascal, который благополучно забыт? 

Все зависит от того, какую цель вы преследуете. Если хотите стать программистом, то можно и Питон изучать, и Яву. Если же просто скрипты писать и применять ИИ, то стоит изучать библиотеки питона на эту тему. 

Если нет, то с какого языка начать?

Если да, то посоветуйте литературу! 

Заранее спасибо!

Go to top