|
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
本帖最后由 nxhylyh 于 2010-2-17 11:04 编辑
: s5 N1 K" c& h" y7 u' f
5 B: Y9 {: \1 C7 u2 S; ]1 q先说点废话~老师在寒假给小弟一个课题,就是在MATLAB中运用正则表达式来处理txt文档,小弟matlab新手~正则表达式中文资料太少了~英文又太差劲,所以对英文资料只好自动过滤了~摸索了半个多月,删删改改,论坛也去了好多个·~~自~希望大家看看~先介绍下附件1的格式:
* k+ l# T. Z* r. G' i b8 P4 q>AB016625$ O# k! J8 {: ~. Z9 {4 M( ~
GCGGCCCAGGCCCGGAACCTTCCCTGGTCGTGCG
0 R7 I$ t- H" E/ k" |0 b9 M>AF008216
+ a' b& O% h% r% J7 w% eAAGCTTTCCT
; j' p: k# d! l题目1:将'>'符号后跟的的字符串(母字符串)提取出来并建立以字符串命名的文件夹(如文件夹ABO16625,文件夹AF008216)
$ t3 x+ u5 O; Z1 t/ m题目2:在相应的文件下建立base.txt, T2 l4 B% _6 N1 A% h9 B" e9 ]3 j
题目3:将母字符串下面的字符串(子字符串)提取出来储存在相应的base.txt里面& e; E+ C6 y, j+ c6 L: c0 y
这3个题目,小弟摸爬滚打算是做出来了,共享如下:-
- x3 M0 _: l( A2 }0 v- ], p - clc;clear;, k* E( Z# ^: w
- file=fopen('fasta.txt','r');
d% {( g, q! e) L! Y# ` - fname={};fname1={};
) W6 z/ T; s2 V/ Q - fbase={};
7 M' y( u3 N& P% y4 U, P - while feof(file)==0
' o1 y p. D' ~" }) B, X# F7 T" e - str=fgetl(file);5 n# T# C/ y7 A6 J
- fname1=regexpi(str,'(?<=>)[A-Z0-9]+$','match');/ ?5 l8 N4 ?* k
- fbase=regexpi(str,'^[a-z]+$','match');
0 V( r# z- o# y - if ~isempty(fname1)
9 ]4 Y3 ?; h2 b& [9 D3 C- |( Z* U - mkdir(fname1{1});; q3 O2 g* x# L/ L4 w
- k1=strcat('D:\mat\work\',fname1{1},'\base.txt');9 k" h' j1 q5 x `9 ~* `
- fname=[fname; fname1];0 b/ u6 I- L B) @- j4 d
- fname1={};
& g4 A9 Y- D* X0 M4 ? - end
* ]* d" q" \% E2 [- Q: O8 u - if ~isempty(fbase)
: i# w2 Q8 N4 o - fid1=fopen(k1,'a');) u+ D% ]4 f3 e0 d. |- @1 r) \& C
- fwrite(fid1,fbase{1});
+ o. x& B# c7 S- P/ U- i: a - fclose(fid1);
9 s5 t5 U4 f2 ]2 v" O" ]. X$ n( A - fbase1={};( z+ S! L5 S2 a" t/ _
- end
" j L5 s2 D {( r - end3 [1 \0 N2 Y7 p0 g8 z/ S
- fclose('all');' C8 a% J: y- t3 a O
复制代码 但是接下来的题目小弟实在困惑不已,望各位指教
! A3 J F3 O9 y( e先介绍hmrcds格式:- @( t, m" L) Z5 E6 |5 m
2 X, n8 r& y1 c. s6 BAB016625 12 24 35 67/ ~3 @+ s' o& s- M* \* x1 l
AF008216 12 15
5 d; t o* R( B- g' m! eU25134 11 15 ) H3 k# D [( l: T& @
题目4:在相应母字符串命名的文件夹下建立cds.txt文档: V# m0 [5 }1 s8 v
题目5:将hmrcds中母字符串后的纯数字字符串提取出来存在各自的cds.txt中
3 W7 |& n6 e5 I4 I题目6:在相应的文件夹中,由cds.txt中储存的偶数个数字为根据,提取出base.txt中的字符串,并储存在由此在相应文件夹下建立的ex1.txt,ex2.txt……中~,例如在AB016625命名的文件夹下,在base.txt中取出12-24的字符串存在ex1.txt,取出35-67的字符串存在ex2.txt中~0 O' S5 M x; P# t
是不是看的头大~~~/ `! r4 D) K0 Q' t; p" P
# L4 S1 \2 ?& |$ M' d2 N: \. V% `题目4小弟可以做出来,题目5,小弟用正则表达式实在做不出来,题目6还没做到) ?, r$ ?" K4 W* `3 F% W% j: @
另外,小弟今天知道用$ |; K3 |# Q; f+ J% b2 P- }
f = fopen('fasta.txt','rt'); % t 属性根据需要可省略
5 Q. t. n# D* _! X4 h& X9 Xx = fread(f,'*char');+ B3 i3 u" x! V/ r. s- U5 p1 `
fclose(f);! M' ?0 r. f5 |. q" Z$ B
x=x'( L' P5 |: b( f# w( c
可以将文档以字符串形式读入(textread读取后是一个cell格式),于是就用* T( E$ T1 e' f0 q1 c
fname1=regexpi(x,'(?<=>)\w+','match')' d" Q% L; [+ U" t, D" C( k
来完成题目题目1中的提取母字符串,结果在matlab运行后,不出现结果,同时cpu使用达到50%,不知道怎么回事~大家指点小弟下吧~~~& U: q& E/ H; ^
崩溃。。附件上传了但是黏贴不了。不知道怎么回事有需要的加我Q Q : 1036300382 |
|