Интерактивный большой график с примерно 20 миллионами точек выборки и гигабайтами данных.Python

Программы на Python
Ответить
Anonymous
 Интерактивный большой график с примерно 20 миллионами точек выборки и гигабайтами данных.

Сообщение Anonymous »

У меня проблема (с оперативной памятью): она не может хранить данные, которые я хочу построить. У меня достаточно места HD. Есть ли какое-нибудь решение, позволяющее избежать «затенения» моего набора данных?

Конкретно я занимаюсь цифровой обработкой сигналов, и мне приходится использовать высокую частоту дискретизации. Моя структура (GNU Radio) сохраняет значения (чтобы не использовать слишком много дискового пространства) в двоичном виде. Я распаковываю его. После этого мне нужно построить сюжет. Мне нужен масштабируемый и интерактивный сюжет. И это проблема.

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

Код: Выделить всё

import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
import struct

"""
plots a cfile

cfile - IEEE single-precision (4-byte) floats, IQ pairs, binary
txt - index,in-phase,quadrature in plaintext

note: directly plotting with numpy results into shadowed functions
"""

# unpacking the cfile dataset
def unpack_set(input_filename, output_filename):
index = 0   # index of the samples
output_filename = open(output_filename, 'wb')

with open(input_filename, "rb") as f:

byte = f.read(4)    # read 1. column of the vector

while byte != "":
# stored Bit Values
floati = struct.unpack('f', byte)   # write value of 1. column to a variable
byte = f.read(4)            # read 2. column of the vector
floatq = struct.unpack('f', byte)   # write value of 2. column to a variable
byte = f.read(4)            # next row of the vector and read 1. column
# delimeter format for matplotlib
lines = ["%d," % index, format(floati), ",",  format(floatq), "\n"]
output_filename.writelines(lines)
index = index + 1
output_filename.close
return output_filename.name

# reformats output (precision configuration here)
def format(value):
return "%.8f" % value

# start
def main():

# specify path
unpacked_file = unpack_set("test01.cfile", "test01.txt")
# pass file reference to matplotlib
fname = str(unpacked_file)
plt.plotfile(fname, cols=(0,1)) # index vs. in-phase

# optional
# plt.axes([0, 0.5, 0, 100000]) # for 100k samples
plt.grid(True)
plt.title("Signal-Diagram")
plt.xlabel("Sample")
plt.ylabel("In-Phase")

plt.show();

if __name__ == "__main__":
main()
Что-то вроде plt.swap_on_disk() может кэшировать данные на моем SSD;)

Подробнее здесь: https://stackoverflow.com/questions/585 ... es-of-data
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»