2017-01-28 42 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和******作爲塊?所以,我可以正則表達式GENE_x來存儲和計數。

請幫忙。

感謝,

AP

+1

你對'textscan'使用了什麼輸入,但沒有奏效?由於它是一種相對複雜的格式,因此您需要有相當數量的代碼來處理它。你不能期望'textscan'能夠魔法般地理解所有這些。 – Suever

+0

正在簡化文本文件的一個選項?這似乎非常複雜。無論如何,我建議使用'textscan()'以方便的格式(例如在結構中)和**然後**處理提取的信息來獲取信息。 –

回答

0

你最好嘗試改變原有的文本文件,所以,這將是合法的MATLAB .m文件的代碼,那麼就使用「EVAL」功能來運行它。 大部分工作將是找到在哪裏插入'='和'['']'和'%'作爲忽略部分。 如果所有文件的格式相同,將比較容易。

+0

使用'eval()'是一個嚴重的設計缺陷,因爲它暴露程序可能是惡意代碼。 –

+0

一般情況下使用計算機會讓您看到您也可能寫入的惡意代碼。 –

+0

請參閱這些鏈接:[鏈接1](http://stackoverflow.com/questions/10272522/use-and-implications-of-evalexpression-in-matlab-code)和[link2](http://stackoverflow.com/ question/1832940/is-using-eval-in-python-a-bad-practice) –