Создать матрицу из нескольких входных файлов в C ++ или Python - PullRequest
0 голосов
/ 03 марта 2012

У нас есть флуоресцентный спектрометр, который выводит данные флуоресценции неудобным / глупым способом для дальнейшей обработки.То есть, до начала фактических данных существует 55 строк комментариев и информации.Затем линия 55 начинается с длин волн излучения в столбце 1 и значения флуоресценции в столбце 2, разделенных ограничителем табуляции.Среди комментариев есть также длина волны возбуждения в строке 22. Файлы выглядят примерно так (номера строк не являются частью файла. Я просто добавил их для ясности):

Line 1   Stefan
Line 2   Date: 23.1.2012
Line 3   WS_40#01.SP
Line 4   ...
Line 22  240
Line 23  ...   
Line 55  300.000000 62.237799  
Line 56  300.500000 59.904189  
Line 57  301.000000 58.901731  
Line 58  ...
Line 656 600.5      23.900000  

Естьодин файл для каждой длины волны возбуждения, что в сумме составляет 44 файла для одного образца (возбуждение от 240 до 455 нм с шагом 5 нм).Общее имя файла для 44 спектров хранится в файле с именем «filename.txt».44 файла имеют числовые имена, например, FILENAME # 01.sp, FILENAME # 02.sp, ..., FILENAME # 44.sp

Цель: Я хочу создать одну матрицу из этих 44файлы, которые выглядят так (в идеале длина волны возбуждения берется из строки 22, но имена столбцов также можно создавать вручную, поскольку они всегда одинаковы):

         240   245   250  ...    455 
300.0  62.23  34.4   ...  ...   23.5
300.5  59.90  23.7   ...  ...   19.5
301.0  58.90  23.7   ...  ...   34.8
...      ...   ...   ...  ...
600.5  23.90   ...   ...  ...

Наконец, матрица должна быть сохраненав файле с именем filename.csv

Как это возможно с использованием C ++ или Python?

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

К сожалению, у меня нет хорошего Python илиКод C ++ для начала.

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

Любая прямая помощь или ссылки на другие веб-сайты / сообщения приветствуются.

Ответы [ 2 ]

1 голос
/ 03 марта 2012

В C ++ вы можете использовать стандартную библиотеку шаблонов для чтения и записи std::string s из текстовых файлов. Например:

ifstream filenames ("filename.txt", ifstream::in);

Это создает объект для чтения из файла «filename.txt». Вы можете получить каждую строку из файла, выполнив следующие действия:

while (!filenames.eof ())
{
    std::string nextFile;
    filenames.getline (nextFile); // Note, you may have to #include <string> here
    // Do something with nextFile here, like open it and read from it, or put it in an array.
}

и когда вы закончите читать файл:

filenames.close ();

Вы можете использовать ту же технику для чтения каждой строки из каждого из 44 файлов.

0 голосов
/ 03 марта 2012

Для повседневного анализа данных аналогично R вы можете использовать Pandas Библиотека Python.

Для преобразования скрипта Python в .exe-файл вы можете использовать py2exe.

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

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