Оптимизация рисования графиков из модели: архитектура кода - PullRequest
0 голосов
/ 20 ноября 2018

ОК, у меня вопрос о том, как эффективно выложить код.

У меня есть модель, написанная на python, которая генерирует результаты, которые я использую для создания графиков в matplotlib.Как написано, модель содержится в одном файле, и у меня есть 15 других run-файлов, которые вызывают ее со сложными конфигурациями и создают графики.Требуется некоторое время, чтобы пройти и запустить каждый из этих файлов запуска, но, поскольку все они используют существенно разные настройки для модели, мне все равно нужны сложные установочные файлы, и все это работает.

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

Это означает, что у меня может быть 45 нечетных файлов для просмотра каждый раз, когда я хочу внести изменения в мою модель.Я также должен был бы вырезать и вставить много стандартного кода matplotlib с небольшими изменениями (каждый run-файл превратился бы в 3 разных файла - по одному для каждого графика).

Может кто-нибудь объяснить мне, как (и если)Я мог ускорить процесс?На данный момент, я думаю, это занимает у меня намного больше времени, чем нужно.

На мой взгляд, есть 3 основных варианта:

  1. Настройка 3 файлов запуска для каждой конкретной модели.запустить (так что дублируйте приличное количество и запустите модель намного больше, чем мне нужно), но затем я могу настроить все самостоятельно (но рискую упустить что-то важное).
  2. Добавить еще один слой - так что сохраните результаты как.CSV или эквивалент, а затем прочитать их в файлы для создания графиков.Это означает больше файлов, но мне нужно запускать модель только один раз на 3 графика (что может сэкономить некоторое время).
  3. Сохраняйте интегрированными файлы параметров графика и модели, но добавьте еще один файл, который устанавливает шаблоны графиков,поэтому каждый раз, когда я запускаю файл, он выплевывает 3 графика) Это может немного ускорить процесс и, конечно, уменьшит количество файлов, но они будут очень большими (и, вероятно, намного более сложными).
  4. Что-то еще ..

Может кто-нибудь указать мне на ресурс или дать мне совет о том, как лучше всего справиться с этим?

Спасибо!

1 Ответ

0 голосов
/ 21 ноября 2018

Я думаю, вы близки, чтобы найти то, что вы хотите.

Если вычисления занимают некоторое время, сохраняйте результаты в файлах для последующей обработки без пересчета.

Самое важное: отделить код от конфигурациивместо копирования вариантов вставки такой смеси.

Если модель принимает параметры, определите класс модели.Может быть, экземпляр модели только один раз, но модель знает, как load_config, read_input_data и run.Модель также делает write_results.Таким образом, вы можете зациклить последовательность load_config, read_data, write_results для каждой конфигурации и, возможно, для ввода данных.

Напишите файлы конфигурации вручную, например, в формате ini и используйте confiparserмодуль для их загрузки.

Сделайте что-то похожее для вашего Graph класса.Поместите определение шаблона в файлы конфигурации, включая формат вывода, размеры шрифтов и т. Д.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...