LINUX.ORG.RU

Сообщения omegatype

 

Интерактивное обновление графиков jupyter?

Форум — Desktop

Задача: наблюдать формирование графика в процессе его формирования. В jupyter.

Вариант решения: pyqtgraph

%gui qt

import numpy as np
import pyqtgraph as pg
from time import sleep

win = pg.GraphicsWindow()
qplt = win.addPlot()
curve = qplt.plot()

for i in range(8):
    sleep(.5)
    curve.setData(np.random.random(size=16))
    curve.update()

Проблема: график обновляется только после того, как отработала _вся_ ячейка.

Как отрисовывать график online? Какие, может быть, _иные_ подходы есть к этой задаче (свет клином на pyqtgraph не сошелся...)?

 , , ,

omegatype
()

Отступы у preview фотографий в Digikam?

Форум — Desktop

Доброго времени суток, народ!

Кто-нибудь замечал чрезвычайно огромные отступы у preview-шек фотографий в digikam по вертикали?

https://i.postimg.cc/JzzBc6ks/Screenshot-20181201-233149.png

Как бороться? Гугл что-то сходу не помог.

 , ,

omegatype
()

jupyter и matplotlib для «больших» векторов? Как не сливать Matlab-у?

Форум — Desktop

Цель: применить jupyter/python/matplotlib/<ещё что-то?> к задаче радиотехники.

Дано: 3276799 комплексных числа. Необходимо визуально оценить спектр.

Вот такой тестовый код вешает (!!!) kernel в jupyter-е (попробовал на двух машинах):

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt

fig, axis = plt.subplots(nrows=1, figsize=(16, 8))

n = 3276799

t = np.arange(n)
x_t = np.random.random(n) + 1j * np.random.random(n) + np.sin(2 * np.pi * .05 * t)
x_t -= x_t.mean()
x_f = np.fft.fft(x_t)

axis.plot(np.abs(x_f))

Для сравнения вот такой matlab-овский код:

n = 3276799;
t = 1 : n;
x_t = rand(n, 1) + 1j * rand(n, 1) + sin(2 * pi * .05 * t');
x_t = x_t - mean(x_t);
x_f = fft(x_t);
plot(abs(x_f));

отрабатывает и отрисовывает график за доли секунды.

Раунд спора с научруком на тему Matlab vs Jupyter/python/matplotlib был эпично проигран! :'-(

Вопрос: что не так в python-ом коде? Как решить такую задачу в jupyter?

P.S. Только, пожалуйста, не надо говорить, что визуально оценивать 3М точек, это не по фэншую. Если matplotlib для этого не предназначен, то порекомендуйте альтернативу. Решать такую задачу можно и нужно и Matlab её решает успешно.

 , , ,

omegatype
()

Актуальная версия статьи «Что каждый программист должен знать о памяти»?

Форум — Development

Доброго времени суток!

Народ, подскажите, есть статья What every programmer should know about memory, Part 1 и тред Что каждый программист должен знать о памяти, всё это от 2007-ого года. В предисловии статьи рекомендуют уделить большое внимание актуальности, т.к. технологии и подходы меняются. Вопрос: актуальная ли данная статья сейчас? И вопрос вдогонку: что можно почитать (обзорный + средний уровень) по вопросу о том, что программисты должны знать о памяти сейчас?

 

omegatype
()

Алгоритмы и структуры данных

Форум — Desktop

Уважаемые специалисты! Посоветуйте, пожалуйста, книгу/курс по алгоритмам и структурам данных!

Требования:

  • достаточно фундаментальное изложение материала;
  • актуальность;
  • если на английском - не проблема, может, даже лучше.

Во много хотелось бы повысить собственную квалификацию и систематизировать знания для интервью. Грубо говоря, если бы вы нанимали сотрудника и в требованиях писали «знание основных алгоритмов и структур данных» - в рамках какой литературы/курса вы бы это требование предъявляли?

 , ,

omegatype
()

Непрерывное чтение в pyrtlsrd?

Форум — Development

Уважаемые специалисты по всему!

Задача: организовать непрерывную запись отсчетов с RTL SRD устройства, обработку сигнала и отображение результата.

Хочу реализовать это при помощи pyrtlsrd, pyqt и pyqtgraph.

В pyrtlsrd есть пример стриминга на asyncio:

import asyncio
from rtlsdr import RtlSdr

async def streaming():
    sdr = RtlSdr()

    async for samples in sdr.stream():
        # do something with samples
        # ...

    # to stop streaming:
    await sdr.stop()

    # done
    sdr.close()

loop = asyncio.get_event_loop()
loop.run_until_complete(streaming())

Насколько я понимаю, он обеспечивает непрерывное чтение. Однако, если в итоге будет приложение на pyqt, то мне, по сути, не нужна очередь от asyncio, а хватит просто одного QThread, который будет сигналом отдавать в основной поток данные для отрисовки.

Вопрос 1: имеет ли смысл совмещать async/await синтаксис в Qt? Можно ли выполнение async def streaming подпихнуть в event loop от Qt?

Вопрос 2: Как организовать получение сигнала с srd непрерывно без async/await? Вот такой код гарантирует непрерывность?

def streaming():

    with closing(RtlSdr()) as sdr:  
        sdr.sample_rate = sample_rate = 240e3
        sdr.center_freq = fc = 101.5e6
        sdr.gain = 'auto'

        count = 0
        while True:
            # do something with samples
            # ...           
                
streaming()

Вопрос 3: вопрос вообще по-адресу? Разумеется, на ЛОРе есть всё, но, может, порекомендуете более целевой форум?

 , , ,

omegatype
()

Удаленно снять скриншот? Xlib: connection to refused by server

Форум — Desktop

Имеется рабочая станция, настроенная продавцом на работу в режиме: на самой станции ОС-гипервизор, в нем CentOS 5, видимо, с пробросом видеокарты. Со стороны система просто загружается и выводит приглашение на монитор, как обычно.

Пытаюсь настроить получение скриншота с системы (с клиентской - с CentOS 5-ого) по SSH по следующему алгоритму: непосредственно за компьютером логинюсь и смотрю переменные окружения:

$ printenv | grep DIS
$ DISPLAY=192.168.93.254:1

Далее на удаленной машине выполняю:

$ ssh name@vmhost 'xwd -root -display 192.168.93.254:1 | /usr/bin/convert - png:-' > /tmp/current.png

Xlib: connection to "192.168.93.254:1.0" refused by server
Xlib: No protocol specified
Пробую согласно Xlib: connection to ":0.0" refused by server Xlib: No protocol specified, но на шаге:
# xauth list 192.168.93.254:1
никакого вывода нет. Тупик. Подскажите, куда дальше копать?

 , , ,

omegatype
()

Помогите уменьшить отступы в между элементами в списке литературы (LaTeX, splitbib)

Форум — Desktop

Готовлю автореферат, борюсь за каждую страницу. Необходимо уменьшить отступы в списке литературы. MWE:

\documentclass{article}

\usepackage{splitbib}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
  @book{Knu86,
    author = {Knuth, Donald E.},
    year = {1986},
    title = {Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.},
  }
  @book{Knu86v2,
    author = {Knuthggg, Donald E.},
    year = {1986},
    title = {Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.},
  }
\end{filecontents}

\begin{document}

\cite{Knu86, Knu86v2}

\begin{category}[A]{First category}
\SBentries{Knu86,Knu86v2}
\end{category}

\bibliographystyle{utf8gost71u}
\bibliography{\jobname}
\end{document}

Пытался курить мануал: http://mirror.utexas.edu/ctan/macros/latex/contrib/splitbib/splitbib.pdf но пока без успеха.

 

omegatype
()

Софт для просмотра сигналов

Форум — Talks

Имеется аналоговый сигнал в cvs (несколько столбцов = несколько каналов измерения). Подскажите, какой программой (под онтопиком или даже оффтопиков) посмотреть этот сигнал во временной области с возможностью зуммирования и прокрутки?

 ,

omegatype
()

Возможно ли программно перезагрузить все from X import Y в Python?

Форум — Development

Здравствуйте!

Имеется следующий код:

import foo
from foo import bar

bar()  # выполняется функция версии 1

# вносим изменения в foo.py

reload(foo)

bar()  # выполняется по-прежнему функция версии 1

Вопрос: если предположить, что неизвестно, что именно импортировалось из foo при помощи конструкции «from foo import X», или же по какой-то причине не хочется следить за этим - можно ли программно обновить все импортированные так функции и классы?

 

omegatype
()

Подскажите как обновить tzdata на RHEL 3?

Форум — Admin

Народ, подскажите, пожалуйста, как на legacy-системе обновить tzdata? Вот тут https://www.rpmfind.net/linux/RPM/Distribs.html rhel 3 уже давно нет, какие ещё есть варианты?

 , ,

omegatype
()

digikam вешает систему (GUI?) намертво

Форум — Desktop

Народ, помогите, пожалуйста, разобраться в проблеме: запускаю digikam и через какое-то время система виснет — картинка замирает, курсор не двигается, если воспроизводилась музыка — начинают циклически воспроизводиться последние секунды полторы того, что играло.

Кажется, это происходит во время подготовки digikam-ом превью изображений. Перехожу в альбом, для которого нет превью, программа отрисовывает пустую сетку, и по ходу заполнения сетки превьюшками всё виснет. Но точно момент, когда проиходит зависание, установить не удаётся - для нескольких альбомов всё может быть нормально, а потом опять сбой.

Прямо сейчас работаю после перезагрузки reset-ом, в последний раз запустил digikam и свернул её окно, система всё-равно повисла.

Логи:
Xorg.0.log.old
journalctl —boot=-1

# uname -srvmpio
Linux 4.11.9-1-ARCH #1 SMP PREEMPT Wed Jul 5 18:23:08 CEST 2017 x86_64 unknown unknown GNU/Linux

 , , ,

omegatype
()

Привязать Cairo-dock launcher к конкретному окну терминала?

Форум — Desktop

Исходная задача: получить на cairo dock лаунчер для запуска jupyter notebook, который можно было бы с дока и закрыть.

Попробовал add custom launcher, где в поле command прописал 'jupyter notebook' и поставил галочку «run in a terminal». Но запускаемый таким образом терминал порождает свою собственную иконку на доке, а кастом лаунчер оказывается как бы не привязанным к окну. Соответственно повторный клик открывает еще одно окно терминала вместо того, что бы сворачивать существующее.

Есть ли способ привязать лаунчер к именно к тому окну терминала, который он запустил?

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

 ,

omegatype
()

Линейная алгебра на GPU в Python - текущее состояние дел?

Форум — Development

Преамбула: имеется вектор из 100e6 элементов, который необходимо нарезать на фрагменты размером N, применить к каждому фрагменту fft, а затем применить к ним ряд операций линейной алгебры (в тч. копирование, вырезание поддиапазона, так же в numpy как vstack, roll, conj, поэлементное произведение). Результирующий код на numpy выполняется порядка 5-10 минут на одном ядре core i5.

Есть мнение, что «matlab может в gpu из коробки, просто нажимаешь какую-то галочку и все выполняется на GPU, ну, по крайней мере, операции линейной алгебры над векторами легко»!

Вопрос к знатокам - действительно ли тулбокс параллельной обработки данных в матлабе настолько крут? Настолько, что можно сформировать параллельный алгоритм с минимальным редактированием кода?

Сейчас смотрю в сторону PyOpenCL, я правильно понимаю, что для этого необходимо изучить как бы другой язык? Язык написания kernel-ов?

Вот это читал - не очень ясно в контексте сабжа, где тут ниша именно вычислений? Theano?

UP 1: Видеокарта Radeon :)

Перемещено leave из desktop

 , , ,

omegatype
()

Портирование matlab-кода на python (частичное соответствие результатов)

Форум — Desktop

Есть несколько bin-файлов с сэмплами от осциллографа Agilent, файлы сохранены в формате осциллографа. По наследству достался код на MATLAB, который читает эти файлы так:

function FileReadTest
   file_name = '/path/to/file'
   m = memmapfile(file_name,'Format','single','Offset',164);
   disp(file_name)
   double(m.Data(1:10))
end

Что, кажется, соответствует оригинальным рекомендациям.

Мне необходимо читать эти же файлы в Python, «портировал» функцию следующим образом:

import numpy as np

file_name = '/path/to/file'

with open(file_name, 'r') as file:
    file.seek(164)
    print file_name
    print np.fromfile(file, np.float32, count=10)

А теперь начинаю вручную сравнивать результаты на разных bin-файлах и... где-то совпадает, а где-то нет! И это, как-то вгоняет в ступор, если бы результаты всегда расходились, было бы ясно. Кто подскажет?

 , , ,

omegatype
()

Первое приложение на PyQt

Галерея — Скриншоты

PyQt

Написал на праздниках, фактически, первое приложение на PyQt - spectranalysis, выложил исходники на GitHub. Сразу отмечу, что это pet project, цель которого в ознакомлении с инструментами.

Прошу покритиковать код.

Предыстория: несколько лет пишу софт для предприятия на C# и WinForms + PostgreSQL, так же экспериментальный софт на Django. Пользователей - примерно 15-20 человек, но коллег-программистов нет, так что воюю в поле один, и код мой никого не интересует. Это сильно огорчает.

Параллельно программирование требуется для моделирования в аспирантуре. На кафедре преимущественно matlab + word, но я как ренегат, практически все выполняю на python (в связке с numpy, scipy, matplotlib, Sage Math) + latex.

Хотелось бы в будущем, при наличии свободного времени, присоединиться к разработке какого-либо открытого проекта, попробовать себя в командной разработке. Пока времени мало, уделил пару дней этому тестовому проекту.

О программе: на вход (Ctrl+O) должен поступать wav-файл с отсчетами квадратурных компонент какого-нибудь радиосигнала. Пример можно скачать из открытого источника (например, wav-файл для сигнала такого-то или wav-файл для другого сигнала). Получив файл, программа строит график спектральной плотности мощности, и спектрограмму.

По ходу разработки, меня расстроило отсутствие в PyQt искаропки виджета для редактирования свойств объекта (в .net это называется PropertyGrid). Вот тут рекомендуют для этих целей использовать pyqtgraph, да, но мне казалось, что такой популярный инструмент должен быть в стандартной поставке.

P.S. Для запуска main.py в системе требуется: python3, pyqt5, numpy, scipy и matplotlib.

Окружение

Arch, KDE, Cairo Dock, KDE Connect. Последний очень удобен:

  • Быстро залить на телефон музыку/слить фотки - приятно, что, Connect, во-первых не лагает как MTP, во-вторых не требует подключения шнуром.
  • Отображает уведомления из мессенджеров и sms - очень удобно.
  • Ставит воспроизведение фильма на паузу при входящем звонке, по завершению звонка продолжает воспроизведение - чрезвычайно удобно!

Еще скриншоты: krusader, amarok, и традиционный скриншот. Эти же скриншоты на другом хостинге.

 , ,

omegatype
()

Специалистам по matplotlib: tight_layout не работает с plot_surface?

Форум — Desktop

Решил построить поверхность при помощи matplotlib вот так:

import numpy as np

import matplotlib as mpl
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

x = np.linspace(0, 10, 256)
y = np.linspace(0, 4, 128)

XX, YY = np.meshgrid(x, y)
ZZ = XX * YY

figure = plt.figure()

ax = Axes3D(figure)
surf = ax.plot_surface(XX, YY, ZZ, cmap='jet')
plt.colorbar(surf)
ax.set_xlabel('Very very very long X LABEL')
ax.set_ylabel('Very very very long Y LABEL')
plt.savefig('test.png')
plt.close()

В результате самый нижний край получается чуть-чуть обрезан, именно эта проблема показана на первом же рисунке в гайду по tight_layout, однако использование tight_layout в приведенном выше коде приводит к исключению:

import numpy as np

import matplotlib as mpl
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

x = np.linspace(0, 10, 256)
y = np.linspace(0, 4, 128)

XX, YY = np.meshgrid(x, y)
ZZ = XX * YY

figure = plt.figure()

ax = Axes3D(figure)
surf = ax.plot_surface(XX, YY, ZZ, cmap='jet')
plt.colorbar(surf)
ax.set_xlabel('Very very very long X LABEL')
ax.set_ylabel('Very very very long Y LABEL')
plt.tight_layout()
plt.savefig('test.png')
plt.close()
$ python2 test.py 
/usr/lib/python2.7/site-packages/matplotlib/figure.py:1742: UserWarning: This figure includes Axes that are not compatible with tight_layout, so its results might be incorrect.
  warnings.warn("This figure includes Axes that are not "
Traceback (most recent call last):
  File "test.py", line 20, in <module>
    plt.tight_layout()
  File "/usr/lib/python2.7/site-packages/matplotlib/pyplot.py", line 1387, in tight_layout
    fig.tight_layout(pad=pad, h_pad=h_pad, w_pad=w_pad, rect=rect)
  File "/usr/lib/python2.7/site-packages/matplotlib/figure.py", line 1752, in tight_layout
    rect=rect)
  File "/usr/lib/python2.7/site-packages/matplotlib/tight_layout.py", line 322, in get_tight_layout_figure
    max_nrows = max(nrows_list)
ValueError: max() arg is an empty sequence

Может, кто сталкивался с подобным? Сходу не удается нагуглить.

P.S. Судя по тому, что в matplotlib все не очень гладко log scale с 3d параллельно где бы еще под онтопиком просто построить поверхность по имеющемуся массиву numpy.

 ,

omegatype
()

Условный оператор в LaTeX - подскажите правильную организацию?

Форум — Desktop

В документе часто возникает необходимость вставлять рисунки кодом вида:

\begin{figure}[ht]
  \centering
  \includegraphics{...}
  \caption{...}
  \label{...}
\end{figure}

и пары рисунков разной высоты (при помощи вспомогательной таблица, как сказано тут), дабы упростить код и автоматизировать это дело, решил написать соответствующие команды, затруднение возникло при попытке добавить опциональный аргумент.

Для части рисунков необходимо задавать ширину, для других - нет. Имеющийся код:

% SinglePanelFigure:
%    width (optional)
%    path
%    caption
%    label
\newcommand{\SinglePanelFigure}[4][0]{
\begin{figure}[ht]
  \centering  
  \ifthenelse{0=#1}
      {\includegraphics{#2}}
      {\includegraphics[width=#1]{#2}}
  \caption{#3}
  \label{#4}
\end{figure}
}

Но при повытке использования:

\SinglePanelFigure   
    {1\linewidth}
    {...}
    {...}
    {...}

падает с кучей ошибок, начинающихся с "! Illegal unit of measure (pt inserted). <to be read again>".

Пока не готовил минимальный пример, иллюстрирующий ошибку, может тут что-то настолько очевидное, что знающим и так понятно?

P.S. Для вставки пар рисунков получился вот такой код:

\newcommand{\TwoPanelFigure}[4]{
\begin{figure}[ht]  
  \begin{minipage}[ht]{0.49\linewidth}
    \centering
    \includegraphics[width=\linewidth]{#1}
  \end{minipage}
  \hfill
  \begin{minipage}[ht]{0.49\linewidth}
    \centering
    \includegraphics[width=\linewidth]{#2}
  \end{minipage}
  \begin{minipage}[h]{1\linewidth}
    \begin{tabular}{p{0.49\linewidth}p{0.49\linewidth}}
    \centering а) & \centering б) \\
    \end{tabular}
  \end{minipage}
  \vspace*{-1cm}
  \caption{#3}
  \label{#4}
\end{figure}
}

 , ,

omegatype
()

Куда бежать с XMind?

Форум — Desktop

После длительного перерыва продолжил работу с XMind и обнаружил, что она более неюзабельна:

  • Интерфейс дико тормозит
  • Операции (пролистывание, перемещение элементов, масштабирование) карты дико тормозят
  • Интерфейс стал менее удобным (гигантские кнопки сверху, какая-то синяя цветовая палитра, «пляшущие» и не эстетичные элементы меню)
  • Печать карты и экспорт карты в изображение не работают (виснет на «Generating preview»)

Для примера прилагаю скриншот http://postimg.org/image/833tsms8h/ На нём как раз завис экспорт в png простейшей карты. Пиктограмма экспорта карты явно выглядит как «не пришей рукав», фон элементов меню несогласован.

Куда вы сбежали с XMind-а? Какая из альтернатив более напоминает сабж ранних версий?

P.S. Листок с цветными маркерами не предлагать.

Перемещено leave из talks

 ,

omegatype
()

Как поменять цветовую схему windows decoration breeze (kde5)?

Форум — Desktop

Можно ли в KDE5 поменять цвет окна заголовка для window decoration темы breeze?
Не нравится - тёмный цвет заголовка активного окна (вот на этом скриншоте видно, что активное окно имеет тёмный заголовок, сейчас в теме breeze так же)
Что хотелось бы - задать это цвет, например как этом скриншоте
P.S. Про возможность ставить другие темы и про oxygen - в курсе, хотя годные ссылки приветствуются.

 , , ,

omegatype
()

RSS подписка на новые темы