banner banner banner
Макросы Datamine. Ресурсный геолог
Макросы Datamine. Ресурсный геолог
Оценить:
 Рейтинг: 0

Макросы Datamine. Ресурсный геолог

Макросы Datamine. Ресурсный геолог
Георгий Кирьяков

Андрей Вяльцев

Книга описывает базовые понятия программирования применительно к языку макросов Datamine. На основе реальных примеров объясняются разновидности алгоритмов, основы хорошего стиля и рассматриваются некоторые хитрости написания универсальных макросов. Книга ориентирована на геологов, работающих с Datamine и желающих увеличить свою продуктивность. Книга сопровождается большим количеством примеров и заданий, основанных на геологических задачах.

Макросы Datamine

Ресурсный геолог

Андрей Вяльцев

Георгий Кирьяков

Дизайнер обложки Татьяна Вяльцева

© Андрей Вяльцев, 2024

© Георгий Кирьяков, 2024

© Татьяна Вяльцева, дизайн обложки, 2024

ISBN 978-5-0064-1169-2

Создано в интеллектуальной издательской системе Ridero

Введение

Книга написана в помощь специалистам, работающим с Datamine (любой версии) и желающим сделать свой труд более эффективным. Макросы – очень неплохое подспорье в работе, позволяющее ее ускорить и/или упростить. По сути, написание макросов – это программирование. Несмотря на то, что у большинства геологов когда-то там в ВУЗе был курс информатики с элементами программирования, почти никто из студентов геологических специальностей не уделяли этому предмету большого внимания. В результате, когда пришло время применять «полученные знания», оказалось, что «методом научного тыка» получается освоить не более чем линейные алгоритмы. Как итог – большинство макросов, написанных большинством специалистов, работающих с Datamine, представляют собой огромные «простыни», которые трудно читать, еще труднее править и/или отлаживать. Кроме того, макросы, имеющие относительно длительную историю, часто похожи на классическое письмо из Простоквашино, когда начинал писать макрос один специалист, потом при изменении условий (количества каркасов, поля зонального контроля или еще чего-нибудь) уже другой специалист, не разобравшись в исходном макросе (а как в нем разобраться, если это документ объема «Войны и мира» на языке то ли майя, то ли шумеров?), начал подставлять «костыли», потом пришел третий (четвертый, пятый и далее по списку), каждый со своими костылями, и так далее. О модификации таких фундаментальных макросов речи не идет, и все ими пользуются по принципу «работает – и слава богу». Это неправильно. Макросы должны быть короткими, настолько, насколько это возможно для решения конкретной задачи, понятными, легко анализируемыми и относительно легко модифицируемыми. А еще – должна существовать возможность использования макросов в относительно широком диапазоне входных данных, а не только в данных конкретных.

Книга, которую вы приобрели и открыли, призвана помочь вам научиться писать такие компактные, понятные и гибкие макросы. В книге содержатся основы программирования в применении к языку макросов для решения геологических задач. Мы старались излагать материал максимально доступным и понятным языком, разбавляя повествование шутками и прибаутками, чтобы вас, не дай бог, посередине книги не потянуло в сон.

Для освоения материала не требуется никаких специальных познаний в области IT, программировании и т. д. (хотя вредными они не будут). Достаточно навыков работы с Datamine.

Книга рекомендована специалистам, работающим в Datamine, у которых часто «горят сроки». Книга также может быть полезна творческим личностям, которым лень выполнять механическую однообразную работу. В принципе нет никаких отличий в написании макросов для геологического моделирования и для задач, скажем, горняков или маркшейдеров. Но авторы книги – геологи, поэтому изложение материала дается применительно к задачам, возникающим перед геологами. Любой специалист, работающий в Datamine, может вынести из книги полезные знания и умения, но не-геологам сделать это в рамках данной книги будет немножко сложнее.

Книга разработана с использованием версии Datamine Studio RM 2.0.66.0. Однако можно с достаточно большой степенью уверенности утверждать, что навыки, полученные при его прохождении, могут быть с успехом применены и для более ранних версий и, видимо, для более поздних (с учетом процессов или параметров процессов, которые появляются с новыми версиями). Макросы, приведенные в книге, ориентированы именно на упомянутую версию Datamine, но, скорее всего, будут работать и в более ранних версиях, просто часть параметров (появившихся в свежих версиях) будет проигнорирована.

Книга создана на основе учебного курса, который можно найти на широко известном обучающем ресурсе Stepik. Если книга покажется интересной – милости просим и туда. Книга – штука неизменяемая, а в учебном курсе что-то может быть изложено по-другому – понятнее или глубже. Примеры файлов, используемые по ходу книги, расположены на GitHub.

Если в ходе изучения изложенного материала у вас возникнет недопонимание прочитанного и/или горячее желание что-то переспросить или возразить – добро пожаловать в telegram-канал «Ресурсные геологи». Мы, скорее всего, где-то там присутствуем.

А теперь кратко об авторах.

Кирьяков Георгий

Кандидат геолого-минералогических наук. Стаж работы в геологии 29 лет, из которых 23 года занимался построением моделей минерализации месторождений различной металлогенической специализации – от черных металлов (Fe, Cr…) до цветных и благородных, а также алмазов, бокситов, известняков. Сопровождал работы добывающих предприятий в Гвинее, Гайане, России (подсчет запасов, проектирование ГРР и т. д.). Выполнял все аспекты оценки минеральных ресурсов, включая анализ первичных данных, их обработку, геологическую интерпретацию и геологическое моделирование. Написал большое количество макросов и скриптов для ПО Datamine, которые в настоящий момент используются на множестве месторождений (проверка базы данных опробования, проверка контактов рудных каркасов, анализ длин подвесок, сближенные пакеты MSO, степень увязки проб в каркасы и др.). Разработал методики моделирования и написал макросы построения моделей минеральных ресурсов для следующих месторождений: Албазино, Капан, Викша, Маломыр и др. Проводит тренинги и обучение специалистов на добывающих и разведочных предприятиях в области геологического моделирования.

Вяльцев Андрей

Компетентная персона в области оценки минеральных ресурсов (IOM3 (QMR), AusIMM, AIG, MPONEN, ОЭРН). Стаж работы в геологии 12 лет, из которых 11 лет занимался ведением баз данных и построением моделей минерализации и моделей контроля содержаний. За время работы принимал участие в построении моделей МР нескольких десятков месторождений полезных ископаемых, которые располагаются в России, Казахстане, Армении, Африке. Выполнял все аспекты оценки минеральных ресурсов, включая анализ первичных данных, их обработку, геологическую интерпретацию и геологическое моделирование. За время работы посетил порядка 15 золотых, серебряных и медных рудников. Курировал процесс процедуры согласования. В настоящий момент по разработанным им методикам и написанным макросам строятся модели минеральных ресурсов следующих месторождений: Бакырчик, Варваринское, Комаровское, Майское, Лунное, Воронцовское и другие. Читал множество докладов на конференциях в Великобритании и России. Проводит тренинги и обучение специалистов на добывающих и разведочных предприятиях в области геологического моделирования.

Внимание! В тексте книги, в отличие от скриншотов, некоторые функции приводятся с пробелом перед открывающей скобкой. Это чисто техническая проблема: в выбранном нами редакторе присутствует неотключаемая опция автокоррекции, которая автоматически ставит пробел перед любой открывающей скобкой. Например, на странице 63 приводится функция возведения числа в степень, в которой присутствует лишний пробел между именем функции и открывающей скобкой с перечислением параметров. К сожалению, обнаружили мы эту неприятность в момент, который не предполагал смены редактора. Приносим свои извинения за эту неприятность и уведомляем, что при наличии разночтений между текстом и скриншотами правильный вариант написания функции – на скриншотах.

Макросы: что это, для чего нужны, что могут и что не могут

Для чего нужны макросы

Макросы являются прекрасным средством для того, чтобы:

– Быстро сделать много механической работы. Наверное, лучшее определение «быстро» звучит так: «быстро – это не торопясь, но без перерывов». Любое действие в Datamine будет выполняться с одинаковой скоростью вне зависимости от того, запущено оно руками или макросом (при прочих равных). Но если вам надо выполнить более одного действия, макрос будет работать быстрее вас просто потому, что он не делает перерывов между этими действиями. А человек – делает. Просто в силу своей природы: если вам надо выполнить связку TRIFIL+PROMOD на большом и сложном файле каркасов, вы вряд ли будете сидеть и любоваться тем, как выполняется TRIFIL. Скорее всего, вы отвлечетесь (поводов масса). А макрос – нет. Но даже если у вас железная сила воли и вы не отвлекаетесь от наблюдения за работой TRIFIL, на ввод параметров для PROMOD у вас уйдет времени больше, чем у макроса. Итог: макрос не делает перерывов, поэтому он быстрее ручной работы.

– Выполнить то, что сделать вручную технически сложно и долго – например, длительный циклический перебор тех или иных параметров с целью получения некоего оптимального результата. Один из макросов, разработанных авторами книги, занимается тем, что подбирает оптимальные параметры дробления при заполнении каркасов ячейками. То есть схема такая: выбрали размеры подъячеек, заполнили, проверили качество. То, что заполнено хорошо – отложили в сторону. То, что заполнено плохо, заполняется повторно с меньшими подъячейками. И так до достижения удовлетворительного результата. Для выполнения этой задачи надо многократно запускать несколько процессов (TRIFIL+PROMOD+TRIVAL+EXTRA). Да, физически вы можете запустить любой процесс несколько десятков раз (нажать на кнопку – процедура не так чтобы особо утомительная), но есть большие сомнения, что ваша психика выдержит эту монотонную «работу». У макроса психики нет. Ему сказали – он делает.

– Обеспечить прозрачность моделирования. Вместо длинных словесных описаний того, как выполнялось моделирование, можно приложить к отчетным материалам макрос – и 99% вопросов о методике моделирования будут сняты.

– Пофилонить на рабочем месте без ущерба для рабочего процесса. Ну или же заняться в это время более творческой работой – зависит от личных предпочтений. Логично переложить техническую работу на бездушную железяку, а самому в это же самое время с абсолютно чистой совестью поразмышлять о возвышенном.

Ну и, наконец, это интересно и увлекательно (хотя на этот счет есть разные мнения).

Язык макросов – неплохо развитый внутренний для Datamine язык программирования, поэтому, по сути, написание макросов – это программирование. Но поскольку вы, вероятнее всего, все-таки не программист, лучше не заявлять лишний раз о том, что вы программируете, а на вопрос «что делаешь?» отвечать нейтральное «макрос пишу».

Что такое макрос

Макрос – текстовый файл, имеющий расширение *mac и кодировку Win-1251 (да, это не совсем так, если вы находитесь в стране, где актуальность кириллицы близка к 0, но данная книга ориентирована в первую очередь на «пользователей с кириллицей»). Макросы, написанные в кодировке семейства UTF, выполняться будут, но при работе со строками результат может не вполне соответствовать ожиданиям, плюс при выводе комментариев вы, скорее всего, увидите кракозябры вместо знакомых с детства символов кириллицы.

Макрос, содержащий строку на кириллице в кодировке UTF (слева), и вывод этой же строки в окно Command Datamine (справа)

Еще одна неприятность при работе с кодировками не-Win-1251 – это все те же кракозябры при редактировании файлов в кодировке «не той системы»: если вы настроили ваш любимый редактор на чтение именно кодировки Win-1251, то открытие файла в другой кодировке приведет к неожиданному эффекту, показанному на следующей странице.

В общем, давайте в рамках данной книги считать, что макросы пишутся в кодировке Win-1251 – и все тут.

Макрос содержит последовательность команд, которые необходимо выполнить для решения какой-либо задачи. Все команды в макросах начинаются с восклицательного знака. Макрос всегда начинается с команды START, после которой идет имя макроса. Макрос всегда заканчивается командой END. «Минимальный» макрос выглядит следующим образом (да, мы нарушим традиции и не будем писать программу «Hello, world!»):

!START NOACTION

!END

Макрос с кириллицей, созданный в кодировке Win-1251, открытый в кодировке UTF (сверху) и в кодировке Win-1251 (снизу)

Этот макрос содержит все атрибуты, необходимые для того, чтобы Datamine воспринимал файл с этим текстом как макрос: у него есть начало, имя (NOACTION) и конец. Макрос не делает ничего, но пока этого и не требуется. Пока что достаточно выглядеть как макрос. Дальше этого будет мало, но на текущем этапе можно и так.

Как запускать макрос

Существующий макрос можно запустить тремя способами (может, есть еще, но нам, кроме этих трех, ничего в голову не приходит):

– с помощью кнопки в ленте команд; кнопка расположена непосредственно на вкладке Home;

– прямо под кнопкой запуска макроса находится кнопка вызова меню работы с макросами, одним из пунктов которого также является запуск макроса; из остальных предложенных вариантов наиболее полезным является вариант Start Recording – его разберем чуть позже;