haker_fox 61 October 26, 2023 Posted October 26, 2023 · Report post Добрый день! Этот раздел посвящён другим форумам и сайтам по электронике. Но я использую плотно вышеназванное в теме как раз для расчётов по электронике. Но на удивление не могу найти хороших, вернее активных форумов по библиотеке pandas, где хочу задать вопрос. Возможно, кто-то из участников данного форума сможет помочь: есть csv-файл. В одном столбце находятся значения переходного процесса. Нужно средствами библиотеки pandas, которая читает этот файл, ну либо numpy, найти номер строки с которой начинается установившееся значение. При этом, желательно, чтобы метод принимал настройки поиска установившегося значения в виде отклонения. Цель: из множества набранных csv-файлов отсечь переходные процессы, и построить график установившихся значений, набранных из csv-файлов за большоей период времени. Также хочется иметь данные о временах переходных процессов, измеренных в разных условиях. Сам по документации на библиотеки pandas/numpy пока найти готового не моу. Написать самому цикл - не вопрос. Но это может пойти в разрез с философией данных библиотек, суть которых и состоит в том, чтобы использовать готовые методы, а не "программировать". Уверен, что нечто подобное тому, что мне требуется - есть. Т.к. поиск установившихся значений в переходных процессах возникает сплошь и рядом в различных отраслях. На скрине ниже - примерно то, что мне нужно. P.S. Просьба не предлагать это делать вручную, в Excel или другими способами. Я о них знаю. И использую, когда они уместны. В данной ситуации всё нужно сделать автоматически с помощью Python/Pandas/Numpy. Quote Share this post Link to post Share on other sites More sharing options...
_pv 78 October 26, 2023 Posted October 26, 2023 · Report post немного оффтопа, я питон немного недолюбливаю, но тут рядом его пихают везде где можно и нельзя, в том числе для управления всякими научными железяками, типа через jupiter удобно. регулярно наблюдаю как граждане заускают какие-нибудь измерения и потом каждый раз лезут в мануалы смотреть как сделать какое-нибудь примитивное действие типа фита параболой зашумлённых данных чтобы найти где там на самом деле максимум. потому что синтаксис малость упорот и запомнить не могут. в той же математике (синтаксис местами правда не менее упоротый) это решается парой строк, плюс умеет в символьные вычисления, и можно не просто сделать фильтр + компаратор, а фит и решение уравнения f(x)==y Quote Share this post Link to post Share on other sites More sharing options...
haker_fox 61 October 26, 2023 Posted October 26, 2023 · Report post 47 minutes ago, _pv said: но тут рядом его пихают везде где можно и нельзя Я выбрал питон по следующим причинам: 1. Сбор большого количества данных с измерительного оборудования. 2. Управление этим же оборудованием. 3. Анализ собранных данных в п. 1. 4. Многие расширения для софта, управляющего, например логическим анализатором, уже написаны на питоне. И если нужен нестандартный дешифратор протокола, то знание питона очень помогает. 5. Не могу сказать, что математика в питоне очень удобна по сравнению с тем же MathCad. Но их и не надо сравнивать. Главная особенность питона - скрипты. Которые могут работать почти на чём угодно, и тихо, молча выполнять свою работу, выкладывая данных в пригодном для просмотра виде, начиная от csv-формата, заканчивая pdf, excel, html, sql и т.д. и т.п. Да, питон не идеален. Я и не призываю его "пихать куда угодно".💗 Я могу поставленную задачу решить, как я уже кстати и написал, кучей способов. Но мне нужна автоматизация: сбор данных по GPIB/LXI/RS-232 с приборов и автоматическая обработка. "Математика" это может? Уверен, что нет... P.S. А так, всяк кулик своё болото хвалит))) Мне и в голову, например, не придёт, считать передаточные функции питоном вместо матлаба, или пытаться заменить симулинк тем же SciLab. Ибо видел в действии эти продукты. Но и ругать SciLab не буду. Наоборот, я рад, что есть множество инструментом, и есть возможность выбрать приглянувшийся. Жаль, что иногда инструменты в угоду коммерции, могут лишь что-то одно делать. В этом плане питон - наилучший выбор. Т.к. за счёт своих библиотек он может делать почти всё. В разумных пределах, естественно. 47 minutes ago, _pv said: типа через jupiter Отдельно добавлю, что Jupyter Notebook в первую очередь предназначен для документирования. И это также в первую очередь интерактивная среда для общения с питоном. Управлять в нём чем-то - ИМХО, нереально. Для управления пишется скрипт в любом редакторе или блокноте, запускается в командной строке, и вперёд) Quote Share this post Link to post Share on other sites More sharing options...
_pv 78 October 26, 2023 Posted October 26, 2023 · Report post 20 minutes ago, haker_fox said: "Математика" это может? Уверен, что нет... Питон как бы тоже не может, без сторонних обёрток. FFI чтобы позвать С функцию из какой-нибудь внешней gpib32.dll везде есть, в том числе и в математике. Готовых "батареек", то есть нормально обёрнутых функций для общения по gpib из математики, возможно и нет, не проверял, за ненадобностью. хотя обертки для вызова через какую-нибудь VISA думаю наверняка есть. https://reference.wolfram.com/language/ref/device/Serial.html Я вместо питона в Lua обернул всё доступное окружающее железо, нуждающееся в автоматизации. И если вдруг понадобится серьёзная обработка именно одновременно с полной "автоматизацией" когда надо и железки подёргать и кучу математики с результатами делать, прощё разделить и из математики дёргать управляющие железом скрипты как внешние программы. Но если предположить что надо обязательно выбрать что-то одно, притащить вызовы ibwr / ibrd из внешней .dll в математику проще чем тащить нормальную математику в питон. 35 minutes ago, haker_fox said: Jupyter Notebook в первую очередь предназначен для документирования есть куча полуавтоматических измерений когда надо запустить измерение в цикле меняя какой-нибудь параметр и сразу увидеть график того что получилось. Quote Share this post Link to post Share on other sites More sharing options...
dxp 64 October 27, 2023 Posted October 27, 2023 · Report post Проект jupyter позволяет написать приложение, в которое внедряется ядро (jupyter kernel), позволяющее иметь полный контроль (инспекцию) надо всеми потрохами приложения в реальном времени через jupyter console. Мы таким образом делали прогу, которая качала видеопоток с камеры, производила его анализ и обработку. Тяжелые в вычислительном плане функции были написаны на C/C++ и подключены через boost::python. Сама прога была реализована с помощью PyQt. Собственно, цель была в упрощении разработки алгоритмов обработки видеопотока в камере (тепловизор). Камера включалась в bypass режим, когда "сырой" поток значений пикселов с сенсора лился на РС, а тут это программа его обрабатывала в реальном времени, корректировала ключевые параметры видеотракта и управляла сигналами сенсора, подстраивая его. Поэтом отработанный, отлаженный алгоритм портировался на "железо" (ПЛИС+набортный процессор). Внешне это выглядело так. Запускается программа (PyQt), появляются её окна (картинки на разных этапах обработки видеотракта) и запускается консоль (jupyter console). В любой момент можно командой через консоль включить, выключить что-то, поменять значение того или иного параметра или вывести в цикле и наблюдать динамику изменения параметров видеотракта (да вообще любых объектов в программе). Можно, например, дать команду сграбить эн кадров (хоть тыщу), и потом спокойно их анализировать, обрабатывать через интерактивный режим Python в jupyter. К примеру, посмотреть шумы отдельных пикселов во времени (поиск аномально ведущих себя элементов приёмника -- для тепловизионных это обычное дело). Ну, и всякие гистограммы, профили строк или столбцов на разных уровнях экспозиции смотреть -- в общем, тут только фантазия и потребности ограничивают. Доступ ко всем объектам в реальном времени без останова программы. Очень эффективный и мощный метод разработки оказался: по сути программный видеотракт (software-defined) с полным доступом к потрохам (инспекция и контроль). Понятно, что это можно использовать с любыми приборами: получаешь работающую железку с полным доступом к внутренностям в реальном времени и мощным фремфорком для анализа и обработки. До этого варианта был ещё написанный на Qt (честный С++), но там работать было не очень удобно -- доступа такого не было, если что-то надо сделать, то это сначала написать, скомпилировать, запустить. В итоге интерфейс управления через консоль начинал обрастать и становится едва ли не сложнее самой программы. Это и натолкнуло на идею переписать на Python (PyQt), чтобы облегчить/ускорить процесс обновления программы. Ну, и попутно предпринимались попытка как-то скрестить это с мегаудобным IPython. Так набрели на эту тему с внедрением jupyter kernel. По производительности вариант на чистом Qt и этот на PyQt+jupyter kernel оказались почти эквивалентными (системный монитор загрузки CPU показывал одни и те же значения ±1%) -- это в основном благодаря тому, что все тяжёлые функции были вынесены на уровень C/C++ и numpy, а Python был в своей основной роли orchestration language. 1 Quote Share this post Link to post Share on other sites More sharing options...
haker_fox 61 October 27, 2023 Posted October 27, 2023 · Report post 39 minutes ago, dxp said: Проект jupyter Здравствуйте) С воодушевлением прочитал Ваш пост) Честно говоря, рассчитывал на Ваш ответ, уж простите за лёгкую мерканитильность Помню, что в своё время Вы писали про эти системы на базе питона. Тогда мне было многое непонятно, но сейчас они для меня - ведущие инструменты. И менять на что-либо не хочется... 39 minutes ago, dxp said: Проект jupyter позволяет написать приложение, в которое внедряется ядро (jupyter kernel), позволяющее иметь полный контроль (инспекцию) надо всеми потрохами приложения в реальном времени через jupyter console Гм. Я думал, что основное назначение Jupyter Notebook - всё же документирование и онлайн-транслятор. Или я Вас неправильно понял? 39 minutes ago, dxp said: Можно, например, дать команду сграбить эн кадров (хоть тыщу), и потом спокойно их анализировать, обрабатывать через интерактивный режим Python в jupyter. После чтения на третий раз я понял, зачем нужен Juptyer Notebook в Вашем проекте. Похоже, что я нахожусь только в самом начале пути освоения этих инструментов. 40 minutes ago, dxp said: тяжёлые функции были вынесены на уровень C/C++ и numpy Кстати, в плане быстродействия numpy, получается, весьма хорош? Если не ошибаюсь, внутренности у него на Си/Си++ написаны. Скажите, пожалуйста, а pandas/scipy/matplolib используете в своей практике? Quote Share this post Link to post Share on other sites More sharing options...
dxp 64 October 27, 2023 Posted October 27, 2023 · Report post Не, немного не так. Jupyter Notebook -- это вариант, относящийся к классу программ-ноутбуков: это такие программы, которые позволяют совмещать описательную и вычислительную часть. Например, Matlab тоже относится к этому классу. В случае Jupyter там технология состоит в том, что есть некое вычислительное ядро (в нашем случае на Python, но может быть вроде как на любом из языков, составляющих основу Jupyter -- Julia, Python, R, от них и его название, а в принципе там можно добавлять и другие языки -- типа расширяемая штука), и есть интерфейс. Там есть различные способы запуска. Например, если выполнить ipython, то запустится монолитный процесс, где ядро и интерфейс консоли совмещены. Но если выполнить jupyter console, то внешне это будет выглядеть точно так же (только запуск будет подольше и будет выхлоп в шелл про какие-то кернелы), но тут уже сама консоль запускается отдельно от ядра (в другом процессе) и цепляется к ядру. Можно запустить другую консоль, указав, что нужно прицепиться к уже запущенному ядру. Так можно работать, например, вдвоём (или более) интерактивно. jupyter qtconsole -- почти то же самое, что и в предыдущем случае, но запустится gui консоль, в которой, например, можно сделать режим, когда картинки (результат того же plot) будут внедрятся непосредственно в лог консоли (как в web-based jupyter notebook), что часто удобнее, нежели ловить графику в отдельных окошках. И вот в предыдущем посте я описывал вариант, когда собственное приложение собирается с jupyter kernel, к которому можно прицепить ipython console или qtconsole. А поскольку ядро внедрено в программу, то оно "видит" все потроха (как workspace в Matlab или IPython), что даёт полную инспекцию и контроль. Ну, тут зависит, на каком уровне оно внедрено -- полный контроль надо всем -- это когда на верхнем модуле, а если на каком-то из вложенных, то от этого модуля и вниз по иерархии. Ну, а Jupyter Notebook -- веб приложение, которое тоже запускает ядро. По идее можно к этому ядру прицепиться консолью (вроде пробовал, даже получалось, но смысла для себя не увидел). Идея примерно та же, что и с консолями -- можно назапускать ядер и цепляться к ним этими веб мордами. Ну, и возможности отображения и "деплоя" страниц ноутбука тут совсем другие -- даже github умеет из коробки отображать страницы Jupyter Notebook, ничего ставить не надо на пользовательской стороне. Прицепиться Jupyter Notebook к ядру, которое было внедрено в нашу программу, у меня не получилось. Но оно и не надо было -- там консоль нужна, а не документ ноутбука делать. 1 Quote Share this post Link to post Share on other sites More sharing options...
dxp 64 October 27, 2023 Posted October 27, 2023 · Report post 2 часа назад, haker_fox сказал: Кстати, в плане быстродействия numpy, получается, весьма хорош? Если не ошибаюсь, внутренности у него на Си/Си++ написаны. Скажите, пожалуйста, а pandas/scipy/matplolib используете в своей практике? numpy в целом неплох. Но там есть не всё, и кое-что не устроило по быстродействию. Конкретно построение гистрограмм яркостей пикселов -- в numpy функция построения гистограммы навороченная, универсальная, умеет много чего, что нам не нужно было. И скорость работы получалась так себе. В итоге простой цикл на С работал в разы быстрее. Этим и удовлетворился. Matplotlib -- конечно. scipy -- не помню, вроде что-то использовали, но мало (поэтому и не помню). pandas -- нет, не пришлось. Со сменой работы тематики изменились, давно этим не занимюсь. P.S. Сам проект этот лежит где-то на github. Могу поискать, если интересно. Но там поразбираться немного придётся, не всё так просто и на виду. 1 Quote Share this post Link to post Share on other sites More sharing options...
haker_fox 61 October 27, 2023 Posted October 27, 2023 · Report post 31 minutes ago, dxp said: Могу поискать, если интересно Не обязательно. Ради факультатива разве что) Quote Share this post Link to post Share on other sites More sharing options...
kirill70674 5 October 29, 2023 Posted October 29, 2023 · Report post Попробуйте на этом канале вопрос задать: https://t.me/fpgasystems_verification Верификаторы они такие... Порой удивительные вещи творят в тестовом окружении... 1 Quote Share this post Link to post Share on other sites More sharing options...