Применение Линукса в геофизике

Роман в трех частях

Часть Первая. Неинтересная

Моя новая работа, в которую я ушел с головой связана с геофизикой — я разрабатываю Прибор Рудного Каротажа (ПРК).

В состав ПРК на данный момент входят три модуля:

  • * Модуль Электронного Каротажа (МЭК)
  • * Модуль Гамма-Каротажа (МГК)
  • * Модуль Магнитного Каротажа (ММК)


Модули МЭК и МГК уже разработаны, и сейчас ждут полевых испытаний. Модуль ММК — это совместная разработка с Институтом Геофизики Российской Академии Наук http://www.igeoph.net/Home.

Модули механически стыкуются друг с другом в единый снаряд — это такая труба диаметром миллиметров 50 и длиной 2-3 метра.

Электрически же модули подключены к одному кабелю, по которому получают питание и передают информацию.

Следует заметить, что МГК не имеет в своем составе передатчика. Передатчики имеют только модули МЭК и ММК. Модуль МГК передает данные по гамма-фону модулю МЭК, а МЭК включает эти данные в свой пакет наравне со своими электрическими данными.

Таким образом, в кабеле присутствуют информационные пакеты только от модулей МЭК и ММК. Модули МЭК и ММК работают синхронно и передают свои данные попеременно.

AZH-0168

Передача информации осуществляется в коде Manchester-II.

AZH-0177

Несущая частота — 10 кГц. Модуляцией управляет выход UART микроконтроллера. Если принятый сигнал декодировать и подуть на вход UART другого микроконтроллера или компьютера, то теоретически можно восстановить информацию.

SCRN0013

Сложность заключается в том, что частота 10 кГц не является стандартной частотой для обмена информации по последовательному каналу. Стандартные частоты — это 2400, 9600, 19200, 115200 кБод (и так далее), но не 10 кБод.

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

Часть вторая. Скучная

По кабелю, соединяющему снаряд и адаптер, информация передается в двоичном формате. Так приходится делать потому что скорость передачи ограничена возможностями кабеля, а трафик достаточно объемный. А вот передача информации от адаптера в комп идет уже чисто текстовая. Здесь скорости на порядок большие и прокачка трафика не затруднительна. В замен мы получаем универсальность при подключении оборудования и универсально при обработке.

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

Поэтому было принято решение — информация в комп будет поступать в текстовом виде.

Таким образом, пакет информации — это текстовая строка переменной длины, заканчивающаяся символом «новой строки». Информационные поля в такой строке отделяются друг от друга символом пробела.

Сначала в качестве разделителя мы взяли запятую. Это было сделано по соображениям удовлетворить требования формата CSV (этот формат файлов позволяет таким программам как Libre-Office Calc и MS Excel забирать данные сразу, с минимальными телодвижениями). Но потом мы увидели, что при любой обработке, так или иначе, мы всегда заменяли запятую на пробел. Поэтому решили передавать инфу в комп сразу разделенную пробелами.

Вот пример информационного потока, который принимается в компьютер:

E 5 827 36 499 508 508 508 508 508 506 542 573 602 628 652 675 695 714 731 748 763 776 789 801 812 822 832 841 849 857 864 871 877 883 888 893 897 902 905 909 912 915 918 920 922 924 926 928 930 931 933 934 935 937 938 939 940 941 942 942 943 944 944 945 945 946 947 947 947 948 948 948 949 949 950 950 950 950 951 951 951 951 951 952 952 952 952 952 952 952 952 953 953 953 953 953 953 953 953 953 953 953 953 953 954 954 954 954 954 967 923 885 851 820 792 768 745 724 705 688 673 659 646 635 624 614 605 597 590 583 577 571 566 561 557 553 550 546 543 540 538 536 533 531 529 528 526 525 524 523 521 520 519 519 518 517 516 516 515 515 514 514 513 513 513 512 512 512 511 511 511 511 511 510 510 510 510 510 510 510 509 509 509 509 509 509 509 509 509 509 508 508 508 508 508 508 508 508 508 508 508 508 508 508 508 508 508 508 508 501 463 430 400 373 348 325 304 285 267 251 235 221 208 196 185 175 166 157 149 141 134 128 121 116 111 106 101 97 93 90 86 83 80 78 75 73 71 68 67 65 63 62 60 59 58 57 56 55 54 53 52 51 51 50 49 49 48 48 47 47 47 46 46 45 45 44 44 44 44 43 43 43 43 42 42 42 42 41 41 41 41 41 41 41 40 40 40 40 40 40 40 40 39 39 39 39 39 39 39 47 92 131 164 195 223 248 271 291 310 327 342 356 369 381 391 402 411 419 426 433 439 445 450 455 459 463 466 470 473 476 478 480 483 484 486 488 489 491 492 493 494 495 496 497 498 498 499 499 500 501 501 502 502 502 503 503 503 504 504 504 504 504 504 505 505 505 505 505 505 505 505 505 506 506 506 506 506 506 506 506 506 506 506 506 506 506 506 507 506 507 507 507 507 507 507 507 507 507 507	 	 
M 5 0 10528 12503 14423 16342 18246 20165 22087 24000 25927 27846	 	 
E 6 825 28 499 508 508 508 508 508 506 542 573 602 628 652 674 695 714 731 747 762 776 789 801 812 822 832 841 849 857 864 871 877 883 888 893 897 902 905 909 912 915 918 920 922 924 926 928 930 931 933 934 935 937 938 939 940 941 942 942 943 944 944 945 946 946 947 947 947 948 948 949 949 949 950 950 950 950 951 951 951 951 951 952 952 952 952 952 952 952 952 953 953 953 953 953 953 953 953 953 953 953 953 953 953 953 954 954 954 967 923 885 851 820 792 767 745 724 705 688 673 659 646 634 624 614 605 597 590 583 577 571 566 561 557 553 550 546 543 540 538 536 533 531 529 528 526 525 524 522 521 520 519 519 518 517 516 516 515 515 514 514 513 513 513 512 512 512 511 511 511 511 511 511 510 510 510 510 510 510 509 509 509 509 509 509 509 509 509 509 509 508 508 508 508 508 508 508 508 508 508 508 508 508 508 508 508 508 508 501 463 431 401 373 348 326 305 285 268 251 236 222 209 197 186 176 166 158 150 142 135 128 123 117 112 107 102 98 94 91 87 84 81 79 76 74 71 70 68 66 64 63 61 60 59 58 57 56 55 54 53 52 51 51 50 49 49 48 48 47 47 46 46 45 45 45 44 44 44 43 43 43 43 42 42 42 42 41 41 41 41 41 41 41 40 40 40 40 40 40 40 40 39 39 39 39 39 39 39 47 92 131 164 195 223 248 271 291 310 327 342 356 369 381 392 401 411 419 426 433 439 445 450 455 459 463 466 470 473 476 478 480 483 484 486 488 489 491 492 493 494 495 496 497 498 499 499 499 500 501 501 502 502 502 503 503 503 504 504 504 504 504 504 505 505 505 505 505 505 505 505 505 506 506 506 506 506 506 506 506 506 506 506 506 506 506 506 506 507 507 507 507 507 507 507 507 507 507 507	 	 
M 6 0 10531 12504 14425 16343 18249 20167 22090 24003 25929 27849	 	 
E 7 825 32 499 507 508 508 508 508 506 542 573 601 628 652 674 695 713 731 747 762 776 789 801 812 822 832 841 849 857 864 871 877 883 888 893 897 902 905 909 912 915 917 920 922 924 926 928 930 931 933 934 935 937 938 939 940 941 942 942 943 944 944 945 945 946 947 947 947 948 948 948 949 949 950 950 950 950 951 951 951 951 952 952 952 952 952 952 952 952 952 952 953 953 953 953 953 953 953 953 953 953 953 953 953 954 954 954 954 967 923 885 851 820 792 767 745 724 705 688 673 659 646 634 624 614 605 597 590 583 577 571 566 561 557 553 550 546 543 540 538 536 533 531 529 528 526 525 524 522 521 520 519 519 518 517 516 516 515 515 514 514 513 513 513 512 512 512 511 511 511 511 511 510 510 510 510 510 510 510 509 509 509 509 509 509 509 509 509 509 509 508 508 508 508 508 508 508 508 508 508 508 508 508 508 508 508 508 508 501 463 431 401 373 348 326 305 286 268 251 236 222 209 197 186 176 167 158 150 142 135 129 123 117 112 107 102 98 95 91 88 84 81 79 76 74 72 70 68 66 65 63 62 60 59 58 57 56 55 54 53 52 51 51 50 49 49 48 48 47 47 46 46 45 45 45 44 44 44 43 43 43 43 42 42 42 42 41 41 41 41 41 41 41 40 40 40 40 40 40 40 40 39 39 39 39 39 39 39 47 92 131 165 195 223 248 271 291 310 327 342 356 369 381 392 402 411 419 426 433 439 445 450 455 459 463 466 470 473 476 478 480 483 484 486 488 489 491 492 493 494 495 496 497 498 499 499 499 500 501 501 502 502 502 503 503 503 504 504 504 504 504 504 505 505 505 505 505 505 505 505 505 506 506 506 506 506 506 506 506 506 506 506 506 506 506 506 506 507 507 507 507 507 507 507 507 507 507 507	 	 
M 7 0 10531 12506 14426 16346 18251 20170 22092 24005 25932 27851

Здесь показан прием шести пакетов — трех пакетов от модуля МЭК и трех пакетов от модуля ММК.

Если присмотреться, то можно заметить, что пакеты начинаются на букву ‘M’ или букву ‘E’, которые, собственно, идентифицируют пакеты модуля ММК и пакеты модуля МЭК, соответственно.

Что еще можно заметить. Бросается в глаза большая разница в объеме пакетов от МЭК и ММК. Да, это так — пакет ММК содержит значительно меньше информации.

За буквой-идентификатором пакета следует его серийный номер. В данном примере были приняты пакеты с серийными номерами 5, 6 и 7 от модуля МЭК, и с такими же от модуля ММК.

После серийного номера в пакете идет число, которое соответствует значению питающего напряжения. Для модуля МЭК это числа 827, 825, 825. А вот в модуле ММК на момент испытания еще не был реализован этот механизм, поэтому ММК передавал нули.

Далее информация в каждом типе пакета будет индивидуальная. В пакете от ММК это будет 10 чисел — 10 измеренных модулем значений магнитных данных. Что это за данные — я не знаю. Это как раз прерогатива Института Геофизики.

В пакете от МЭК после значения напряжения питания следует значение гамма-квантов от гамма-детектора модуля МГК. Это цифры — 36, 28, 32.

Следующее число — это значение возбуждающего тока. Возбуждающий ток нужен для анализа электрической проводимости исследуемой среды.

Далее следуют 405 значений напряжения — это отклик среды на возбуждающие импульсы тока. Первый импульс положительный, потом пауза, далее следует отрицательный импульс и снова пауза. Собственно, это есть то, что и составляет науку.

Я не лезу в науку, поэтому я не могу расшифровать и объяснить глубинный смысл полученных данных. Моя задача — измерить, передать по кабелю, принять, обработать и отобразить на экране данные.

Теперь давайте попробуем оценить размер файла, который может получится в результате исследования.

Так вот, приведенные выше пакеты идут со скоростью один пакет в секунду от каждого модуля, то есть два пакета в секунду. Вообще время измерения параметров в скважине может составлять до 7 и более часов. Если предположить, что в среднем оба пакета (от МЭК и ММК) имеют объем 1,5 кБ, по по истечение рабочего дня мы будем иметь текстовый «файлик» размером

1.5 * 3600 * 7 = 540 МБ

Внушает.

Однако, давайте теперь я расскажу, как мы его окучиваем.

Часть третья. Полезно-познавательная

Понятно, что ни о какой Шиндовс тут речи не идет. Кому хочется попробовать в Виндовсе поиграться с этой информацией, напишите мне, и я вам отправлю пример такого файла.

Так вот, во первых, было бы не плохо разделить МЭК-пакеты и ММК-пакеты.

В Линуксе есть такая классная команда как grep, она-та нам и поможет это сделать. Допустим, наш исходный файл называется незатейливо — test.prk. Тогда, для отделения мух и котлет мы делает так:

$ grep M test.prk > test.mek.prk
$ grep E test.prk > test.mmk.prk

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

Следующая команда позволит нам определить сколько вообще было получено пакетов:

$ wc -l test.mek.prk
$ wc -l test.mmk.prk

Поскольку кадый пакет — это одна строка, то нам нужно было посчитать только количество строк в каждом файле.

Все до безобразия просто! Главное — знать что тебе надо и знать свой инструментарий.

Вот, что более всего прикалывает меня в этом — так это скорость исполнения команд. Я уведу свой рассказ немного в сторону на пару слов.

У меня как-то, когда я работал в Спектроне, был уникально-показательный случай обработки подобных данных в Винде. Ситуация была банальная. Я снял показания своих ультрафиолетовых датчиков и записал их в файл. Файл был длинный — несколько десятков мегабайт. И в какой-то момент времени у руководства компании возникла острая необходимость посмотреть на графики этих данных, а я был чрезвычайно занят. Поэтому я просто передал этот файл своему коллеге, который работал под Виндовсом (Линукс он не знал. Да, там вообще никто не знает Линукс, гы-гы!). В общем я передал файл, на пальцах рассказал его структуру — там реально было все просто — четыре колонки цифр с плавающей точкой. Ну это ж надо быть каким гением, что бы на основе этих четырех столбцов не суметь построить четыре графика. Но дело не в этом! Коллега, не дурак, не конченный идиот. Проблема была совсем в другом — в Шиндовс. Во первых, Excel отказался загружать этот файл по той причине, что ему в числах с плавающей точкой нужна «плавающая запятая», а не точка. Логично, да… Джи-бах номер один!!!

Ну, делов-то! Заменить сначала символ-разделитель колонок — запятую на символ-точка-с-запятой, а потом точку в числах заменить на запятую.

Это в Линуксе сделать эту операцию как два пальца — хоть посредством команды tr, хоть потоковым редактором sed, хоть awk, или еще как. В Видовсе все решается классическим Виндосовским способом — открыть текстовый редактор, загрузить файл и произвести замену.

Вы когда-нибудь пробовали загрузить текстовый файл размером в несколько мегабайт в Блокнот? Джи-бах номер два — Венда вывалилась в синий экран…

Фигня! Мы же знаем, что Блокнот не предназначен для редактирования больших файлов (больших 64кБ). А чем можно отредактировать большой файл? Правильно — MS Word-ом! Word на деле оказался таким же дурдомом. Ворд не упал в синий экран и сумел-таки загрузить файл. Но он очень до-о-олго выполнял задачу по замене. На столько долго, что к концу рабочего дня задача так и не была решена. И это было на 8-ядерном проце с не хилыми тактовыми частотами. Да. На своем стареньком одно-ядерном компике операцию замены я выполнил в течение секунды или около того.

Ладно. Попинали дохлую собаку и пошли дальше.

Таким образом, у нас имеются два файла — один с данными от модуля МЭК, другой с данными от модуля ММК. В общем-то эти файлы — это есть ни что иное как таблицы. Каждая строка в таблицах заканчивается символом «новая строка». Количество колонок в таблице ММК — 13, а в таблице МЭК — 410.

Теперь мы можем строить такие графики как, например, количество гамма-импульсов от времени. Для этого загружаем gnuplot

$ gnuplot

и выполняем в нем команду построения этого графика:

gnuplot> plot "test.mek.prk" u 4 w l

Вот так выглядит график гамма-импульсов:

gamma-за-6-часов

Мы можем также построить график изменения возбуждающего тока от времени:

gnuplot> plot "test.mek.prk" u 5 w l

… а так же  график напряжения питания:

gnuplot> plot "test.mek.prk" u 3 w l

… и так далее.

Если речь идет о файле модуля ММК, то можем построить изменение первого параметра (я не знаю, что он показывает!) от времени:

gnuplot> plot "test.mmk.prk" u 4 w l

второго

gnuplot> plot "test.mmk.prk" u 5 w l

и так далее.

Можем одновременно на график вывести данные и по напряжению питания, и по гамма-импульсам:

gnuplot> plot "test.mek.prk" u 4 w l, "" u 3 w l

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

Но при необходимости мы можем построить два графика из разных файлов:

gnuplot> plot "test.mek.prk" u 4 w l, "test.mmk.prk" u 4 w l

Программа gnuplot — это профессиональный инструмент. Поэтому, я в своей работе опираюсь только на него. gnuplot можно творить чудеса. На официальном сайте gnuplot имеется очень много примеров его применения — http://gnuplot.sourceforge.net/screenshots/index.html#demos

И, пожалуй, про gnuplot давайте на этом и закончим.

Теперь я хотел бы продемонстрировать «чудеса» Линукса для обработки текстовых файлов в от в каком плане. (Ну, под словом «чудеса» — скрываются возможности Линукса для непосвященных людей. Тот, кто юзает Линукс давно и серьезно, обычно так не считают.)

У нас остались еще не «нарисованными» графики импульсов измеренного напряжения, которые находятся в каждом пакете МЭК. В этих пакетах имеется 405 точек:

  • * 5 измерений до подачи первого импульса,
  • * 100 измерений во время действия первого (положительного) возбуждающего импульса,
  • * 100 измерений — пауза между импульсами,
  • * 100 измерений во время действия второго (отрицательного) возбуждающего импульса,
  • * и 100 измерений после второго импульса.

Вот осциллограмма сигнала:

AZH-0172

Нечто похожее мы должны получить и на графике.

В общем, график нужно построить не по данным из столбца, а по данным из строки.

Допустим, мы хотим увидеть данные из 300-го пакета. То есть посмотреть измерения на 300-ой секунде.

Наверняка в gnuplot имеется команда построения графика по строке. Допустим, мы ее не знаем. Стало быть, мы поступим следующим образом.

Мы «вырежем» из файла 300-ю строку. Затем в этой строке мы вырежем первые 5 колонок (полей), которые не являются значениями напряжения. Потом нам нужно повернуть строку,  превратив ее в столбец. Это мы выполним с помощью замены пробелов на символы «новая строка». И наконец, полученные таким образом данные, мы выведем в виде графика.

Итак, из файла извлекаем 300-ю строку и напрявляем ее в файл 300.prk

$ head -300 test.mek.prk | tail -1 > test.mek.300.prk

Далее, удаляем первые пять полей:

$ cut -d' ' -f6- < test.mek.300.prk > test.mek.300.405.prk

Ключ -d’ ‘ сообщает команде cut, что разделителем между полями является пробел. Ключ -f6- сообщает, что нужно взять поля, начиная с 6-го и до конца строки, остальные выкинуть.

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

Лень и тупость — неисчерпаемый ресурс! Главное — не давать им в руки знания, тщательно отвлекать их с помощью различных несущественных изменений и вождения их по кругу, типа «установить на десктоп кнопку Пуск. Выдать это за революционное решение» — «Убрать с десктопа кнопку Пуск. Озвучить это решение как революционное». Итак по кругу — установить, убрать, установить, убрать, снова установить, снова убрать , …

Поворачиваем на 90 градусов:

$ tr ' ' '\n' < test.mek.300.405.prk > test.mek.300.405.t.prk

И наконец строим график:

gnuplot> plot "test.mek.300.405.t.prk" u 1 w l

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

$ head -300 test.mek.prk | tail -1 | cut -d' ' -f6- | tr ' ' '\n' > test.mek.300.405.t.prk

Но можем и сразу это получить из исходного файла:

$ grep M test.prk | head -300 | tail -1 | cut -d' ' -f6- | tr ' ' '\n' > test.mek.300.405.t.prk

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

И вот результат наших усилий:

mec-1

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

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

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

Можно, конечно, возразить еще то, что текстовый формат занимает в разы больший объем на дисках. Да, это так. Но на сегодняшний день это какая-то надуманная проблема. Сегодня размеры жестких дисков такие, что можно считать их бесконечно большими. А когда в самом деле станет напряжно с дисковым пространством, ну, господа, — есть же компрессоры! Тексты сжимаются очень хорошо и быстро.

На самом деле, я уже много времени занимаюсь с этими  гигантскими текстовыми данными, и я еще ни разу не почувствовал каких-то ограничений в этом плане. Поэтому — текст и только текст! В свое время мне достаточно было проблемы в Виндовсе, когда MS решила заменить текстовые ini-файлы на единый реестр. Реестр в Виндовс — это какое-то мега-зло, какое только вообще можно было придумать по отношению к пользователям.

Ну ладно, хорошо. А что делать тем пользователям, которые являются потребителями нашей системы сбора данных (то есть геофизикам) и которые не знают команд Линукса? Они могут только мышкой тыкать и только туда, где чего-нибудь нарисовано.

По нынешним временам в Линуксе это не составляет особой проблемы нарисовать графическую форму для программы-скрипта. Как известно, в Линуксе командами рулит оболочка (шелл, shell). Вообще оболочек много. Я обычно юзаю bash. Эта оболочка позволяет использовать скрипты, которые позволяют отображать графические окна. То есть пользователь запускает скрипт и видит те же самые менюшечки и кнопочки, как в обычной исполняемой программе. Таким образом пользователь ну никак не будет обременен знаниями консольных команд.

Собственно, это всё, что я сегодня хотел сказать.

Advertisements

5 responses to “Применение Линукса в геофизике

  1. Тоже использую gnuplot для построения графиков на основании данных от приборов, подключенных к COM-порту. У меня графики строятся в формате TikZ, а для написания отчётов я использую LaTeX. Поэтому графики автоматически подставляются в отчёт. Если поменялись данные от приборов — графики в отчёте автоматически перестраиваются. Ни Word, ни OpenOffice такого в принципе не умеют.

    К сожалению, LaTeX мало распространён в технических науках. На кафедре у меня всё равно попросили отчёт «в формате Ворд». Здесь помог конвертер latex2rtf.

    Ещё можно поменять столбцы и строки в csv-файле при помощи однострочника на Python:

    python -c ‘import csv,sys; csv.writer(sys.stdout).writerows(map(None,*list(csv.reader(sys.stdin))))’ файл.csv

    Решение взято с какого-то зарубежного форума.

    • «На кафедре у меня всё равно попросили отчёт “в формате Ворд”. »
      Странно, а почему pdf их не устроил? Они что, собрались подправлять текст что ли?
      Когда у меня спрашивают об аналогичных вещах, я обычно отдаю pdf-версию. Вопросов по шрифтам и форматированию обычно не возникает, и оригинал остается неизменнённым (== случайно не испорченным).

      Хотя, случаи — они ведь разные бывают (с)

  2. Неправильно вставился однострочник в предыдущий комментарий;
    python -c ‘import csv,sys; csv.writer(sys.stdout).writerows(map(None,*list(csv.reader(sys.stdin))))’файл.csv

  3. Pdf не устраивает обычно из-за того, что такие отчёты потом вставляют в общие отчёты, а люди которые знают только Word.

    Ещё можно добавить, что gnuplot поддерживает вычисления в графиках, что важно. Например, если хотим построить зависимость третьей колонки, умноженной на 10 от первой, то в консоли gnuplot пишем:
    gnuplot>plot «data.dat» using 1:(10*$3) with lines
    Можно использовать и более сложные фцнкции. Материалы по gnuplot на русском языке есть на mydebianblog.blogspot.com

    • Ага.

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

Добавить комментарий

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

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s