2017-01-28 3 views
0

У меня есть текстовый вывод из программы с заданным форматом. Мне нужно разобрать ~ 200 из них, чтобы извлечь информацию. Я пробовал в MATLAB с «textscan», но не работал. Ниже вход:Обработка текстового файла в Matlab

MOTIFS SUMMARY: 

1) TTATAGCCGC (GCGGCTATAA) 1.986 
2) AAACCGCCTC (GAGGCGGTTT) 1.865 

DETAILED RESULTS: 

1) TTATAGCCGC (GCGGCTATAA) 1.986 

Matrix: MAT1 TTATAGCCGC 
A 0.1249 0.177 0.7364 0.1189 0.7072 0.1149 0.09858 0.1096 
C 0.0899 0.07379 0.1136 0.1298 0.08662 0.1293 0.7528 0.721 
G 0.06828 0.1284 0.07195 0.1031 0.1352 0.6708 0.05556 0.0713 
T 0.7169 0.6209 0.07802 0.6482 0.07096 0.08492 0.09305 0.09804 

OCCURRENCES: 
>GENE_1 1 TTATAGCCGC 1 561 + 
>GENE_2 24 TAATAGCCGC 0.928699 762 - 
>GENE_3 10 ATATAGCCGC 0.904905 185 - 
>GENE_1 7 TTATAGCAGC 0.901785 726 + 
********** 

2) AAACCGCCTC (GAGGCGGTTT) 1.865 

Matrix: MAT2 AAACCGCCTC 
A 0.653 0.7401 0.7763 0.1323 0.09619 0.09134 0.07033 0.1383 
C 0.1163 0.07075 0.09441 0.749 0.6347 0.1132 0.6559 0.6982 
G 0.09136 0.09402 0.07385 0.04209 0.1799 0.7332 0.1241 0.07568 
T 0.1393 0.09518 0.05541 0.07659 0.08921 0.06234 0.1497 0.08786 

OCCURRENCES: 
>GENE_1 21 AAACCGCCTC 1 963 + 
>GENE_2 14 AAACGGCCTC 0.928198 212 + 
>GENE_2 8 AAACCGTCTC 0.92009 170 + 
>GENE_4 3 TAACCGCCTC 0.918883 370 + 
********** 

Я пытаюсь считать уникальным() возникновение под каждым рисунком и добавить его к MOTIF РЕЗЮМЕ и окончательный средний из них. Мой ожидается выход:

MOTIFS SUMMARY: 

    1) TTATAGCCGC (GCGGCTATAA) 1.986 3 
    2) AAACCGCCTC (GAGGCGGTTT) 1.865 3 
AVERAGE OCCURRENCE: 3 

Для мотива 1, уникальный случай является 3 (GENE_1, GENE_2, GENE_3). Аналогично для мотива 2 снова 3 (GENE_1, GENE_2, GENE_4)

Как использовать OCCURRENCES и ****** в качестве блоков? так что я могу regexp GENE_x хранить его и считать.

Просьба помочь.

Спасибо,

AP

+1

Какие входные данные вы использовали для 'textscan', который не работал? Так как это относительно сложный формат, вам нужно иметь достойный код для его обработки. Вы не можете ожидать, что «textscan» просто волшебным образом сможет понять все это. – Suever

+0

Упрощает ли текстовые файлы параметр? Это кажется ужасно сложным. Во всяком случае, я предлагаю использовать 'textscan()' для получения информации в удобном формате (например, в структуре) и ** затем ** обработки извлеченной информации. –

ответ

0

Лучше попытаться изменить исходный текстовый файл, так что он будет законно MATLAB м файл кода, а затем просто использовать функцию «Eval», чтобы запустить его. Большая часть работы будет заключаться в том, чтобы найти, где вставлять '=' и '[' ']' и '%' для игнорирования частей. Если все файлы идентичны в формате, то это будет легко.

+0

Использование 'eval()' является серьезным недостатком дизайна, поскольку он предоставляет программе возможный вредоносный код. –

+0

Использование компьютера в целом предоставляет вам вредоносный код, который вы также можете написать. –

+0

См. Следующие ссылки: [link1] (http://stackoverflow.com/questions/10272522/use-and-implications-of-evalexpression-in-matlab-code) и [link2] (http://stackoverflow.com/ вопросы/1832940/is-using-eval-in-python-a-bad-practice) –

Смежные вопросы