主题:请教如何用matlab去读取内容不规则的文本文件中的字符串并存为一个数据文件
一个分子生物学数据,文件的某个段落如下:
Log-odds matrix for Motif 0 rTCAyt....Acg (1)
# 0 1 2 3 4 5 6 7 8 9 10 11 12
#A 0.879 -2.452 -3.924 1.476 -4.408 -1.690 0.363 -0.701 0.411 -0.294 1.423 -1.749 -1.420
#C -1.385 -2.463 2.292 -5.346 1.566 -0.573 -0.227 -0.106 -0.513 0.172 -2.012 2.003 -1.552
#T -1.371 1.503 -3.196 -6.218 0.418 1.181 0.156 0.758 -0.317 0.261 -1.995 -1.730 -1.436
#G 0.320 -2.653 -3.639 -0.559 -4.457 -1.373 -1.023 -0.806 0.114 -0.234 -2.106 -1.856 1.891
Probability matrix for Motif 0 rTCAyt....Acg (1)
# 0 1 2 3 4 5 6 7 8 9 10 11 12
#A 0.570 0.057 0.020 0.863 0.015 0.096 0.399 0.191 0.412 0.253 0.832 0.092 0.116
#C 0.073 0.034 0.930 0.005 0.562 0.128 0.162 0.176 0.133 0.214 0.047 0.761 0.065
#T 0.120 0.879 0.034 0.004 0.414 0.703 0.346 0.525 0.249 0.372 0.078 0.093 0.115
#G 0.237 0.030 0.015 0.129 0.009 0.073 0.093 0.109 0.205 0.161 0.044 0.052 0.704
Sequence Logo
# -------------
# -- 2.30 bits
# C
# C
# C C
# TCA ACG
# TCAC ACG
# TCACT ACG
# ATCACT T ACG -- 0.29 bits
# -------------
# rTCAyt....Acg
Source: ABF1 ABF1_YPD 0 62-ABF1
Motif 0 rTCAyt....Acg (1) (Bits: 8.80 MAP: 0.00 D: 0.143 -1) E: 137.742 ch: 41.85 f: 0.87 Es: 134.68 Ra: 0.9001 Cf: 0.8616 b: 178
AACACAAAAAAAA 0 0.104
ACCACCAAAAACC 0 4.83
AGCACCAAAAACC 0 4.64
ATCACCACAAACG 0 12.834
ATCACCACACACG 0 13.3
ATCACGACACACG 0 12.5
ATCACGACACACG 0 12.5
ATCACTCCCCACG 0 13.54
ATCACTCGCCACG 0 12.84
ATCACTCGCCACG 0 12.84
CTCACTCGGGACG 0 10.797
CTCACTGTGGACG 0 11.565
GTCACTGTGGACG 0 13.27
GTCACTGTGGACG 0 13.27
GTCATTTTGTACG 0 13.796
GTCATTTTGTACG 0 13.796
GTCGTTTTTTCCG 0 7.895
GTCGTTTTTTCCG 0 7.895
TTCGTTTTTTGGG 0 2.251
TTCGTTTTTTTTT 0 -0.839
*************
MAP Score: 0.000000
这样的数据有几百个,上面列出了第一个,需要的是字符矩阵部分,如第一个为:
AACACAAAAAAAA
ACCACCAAAAACC
AGCACCAAAAACC
。。。
TTCGTTTTTTGGG
TTCGTTTTTTTTT
这个数据包含了20个行矢量数据,以下的数据也是20个行矢量数据但行矢量的长度不一定相等。
请教用matlab编程如何读取这些字符串并存为一个数据文件,用什么数据结构好?如果能直接将四种字符转为数字就更好,比如 A 转为1; G转为2; C转为3; T转为4。
原始文件如果用记事本直接打开会比较乱,用UltraEdit打开才是这个样子(UltraEdit打开后,字符串所在行为27-46、75-94、123-142、171-190、219-238、。。。)。
因本人初学matlab水平较差,如果可以,麻烦请将代码写下来,若只说用什么语句我暂时还不能自己解决问题。谢谢!
Log-odds matrix for Motif 0 rTCAyt....Acg (1)
# 0 1 2 3 4 5 6 7 8 9 10 11 12
#A 0.879 -2.452 -3.924 1.476 -4.408 -1.690 0.363 -0.701 0.411 -0.294 1.423 -1.749 -1.420
#C -1.385 -2.463 2.292 -5.346 1.566 -0.573 -0.227 -0.106 -0.513 0.172 -2.012 2.003 -1.552
#T -1.371 1.503 -3.196 -6.218 0.418 1.181 0.156 0.758 -0.317 0.261 -1.995 -1.730 -1.436
#G 0.320 -2.653 -3.639 -0.559 -4.457 -1.373 -1.023 -0.806 0.114 -0.234 -2.106 -1.856 1.891
Probability matrix for Motif 0 rTCAyt....Acg (1)
# 0 1 2 3 4 5 6 7 8 9 10 11 12
#A 0.570 0.057 0.020 0.863 0.015 0.096 0.399 0.191 0.412 0.253 0.832 0.092 0.116
#C 0.073 0.034 0.930 0.005 0.562 0.128 0.162 0.176 0.133 0.214 0.047 0.761 0.065
#T 0.120 0.879 0.034 0.004 0.414 0.703 0.346 0.525 0.249 0.372 0.078 0.093 0.115
#G 0.237 0.030 0.015 0.129 0.009 0.073 0.093 0.109 0.205 0.161 0.044 0.052 0.704
Sequence Logo
# -------------
# -- 2.30 bits
# C
# C
# C C
# TCA ACG
# TCAC ACG
# TCACT ACG
# ATCACT T ACG -- 0.29 bits
# -------------
# rTCAyt....Acg
Source: ABF1 ABF1_YPD 0 62-ABF1
Motif 0 rTCAyt....Acg (1) (Bits: 8.80 MAP: 0.00 D: 0.143 -1) E: 137.742 ch: 41.85 f: 0.87 Es: 134.68 Ra: 0.9001 Cf: 0.8616 b: 178
AACACAAAAAAAA 0 0.104
ACCACCAAAAACC 0 4.83
AGCACCAAAAACC 0 4.64
ATCACCACAAACG 0 12.834
ATCACCACACACG 0 13.3
ATCACGACACACG 0 12.5
ATCACGACACACG 0 12.5
ATCACTCCCCACG 0 13.54
ATCACTCGCCACG 0 12.84
ATCACTCGCCACG 0 12.84
CTCACTCGGGACG 0 10.797
CTCACTGTGGACG 0 11.565
GTCACTGTGGACG 0 13.27
GTCACTGTGGACG 0 13.27
GTCATTTTGTACG 0 13.796
GTCATTTTGTACG 0 13.796
GTCGTTTTTTCCG 0 7.895
GTCGTTTTTTCCG 0 7.895
TTCGTTTTTTGGG 0 2.251
TTCGTTTTTTTTT 0 -0.839
*************
MAP Score: 0.000000
这样的数据有几百个,上面列出了第一个,需要的是字符矩阵部分,如第一个为:
AACACAAAAAAAA
ACCACCAAAAACC
AGCACCAAAAACC
。。。
TTCGTTTTTTGGG
TTCGTTTTTTTTT
这个数据包含了20个行矢量数据,以下的数据也是20个行矢量数据但行矢量的长度不一定相等。
请教用matlab编程如何读取这些字符串并存为一个数据文件,用什么数据结构好?如果能直接将四种字符转为数字就更好,比如 A 转为1; G转为2; C转为3; T转为4。
原始文件如果用记事本直接打开会比较乱,用UltraEdit打开才是这个样子(UltraEdit打开后,字符串所在行为27-46、75-94、123-142、171-190、219-238、。。。)。
因本人初学matlab水平较差,如果可以,麻烦请将代码写下来,若只说用什么语句我暂时还不能自己解决问题。谢谢!