0001 function basemap = BaseMapReader(Netstat)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 if Netstat
0022 Dat = 'http://rest.kegg.jp/get/rn01100/kgml';
0023 Dat = urlread(Dat);
0024 else
0025 load(which('map01100.mat'))
0026 end
0027
0028 rxnDat = regexp(Dat,'(?<=entry) id="(\d+)" name="rn:[^"]*.*?(?=</entry>)','match');
0029 RawRNs = regexp(rxnDat,'(?<=reaction="rn:)[^"]*','match');
0030 Lineseg = regexp(rxnDat, '(?<=type="line" coords=")[^"]*', 'match');
0031 rxns = ({}); ctr = 1; rxnx = ({}); rxny = ({}); rxn_id = (0); rxn_col = ({});
0032 for i1 = 1:numel(RawRNs)
0033 temp_rxn = regexp(RawRNs{i1}{1}, 'R\d{5}', 'match');
0034 rxn_idTemp = str2double(regexp(rxnDat{i1},'(?<=id=")(\d+)[^"]*','match'));
0035 rxn_colTemp = unique(regexp(rxnDat{i1},'(?<=fgcolor="#)[^"]*','match'));
0036 temp_coord =regexp(Lineseg{i1}, '\d+', 'match');
0037 line_coord1 = cellfun(@str2double, temp_coord, 'UniformOutput', false);
0038 line_x = ({}); line_y = ({});
0039 for i3 = 1:numel(line_coord1)
0040 temp_coord1 = line_coord1{i3};
0041 x_temp = temp_coord1(1:2:end);
0042 y_temp = temp_coord1(2:2:end);
0043 line_x{i3} = x_temp;
0044 line_y{i3} = y_temp;
0045 clear x_temp y_temp
0046 end
0047 for i2 = 1:numel(temp_rxn)
0048 rxns{ctr} = temp_rxn{i2};
0049 rxn_id(ctr) = rxn_idTemp;
0050 rxn_col(ctr) = rxn_colTemp;
0051 rxnx{ctr} = line_x;
0052 rxny{ctr} = line_y;
0053 ctr = ctr + 1;
0054 end
0055 end
0056 clear rxnDat RawRNs Lineseg
0057
0058
0059 cpdDat = regexp(Dat,'(?<=entry) id="(\d+)" name="cpd:[^"]*.*?(?=</entry>)','match');
0060 glDat = regexp(Dat,'(?<=entry) id="(\d+)" name="gl:[^"]*.*?(?=</entry>)','match');
0061 cpd_coord = (0); cpd_id = (0); cpds = ({});
0062 for i1=1:numel(cpdDat)
0063 cpds(i1) = regexp(cpdDat{i1},'(?<=name="cpd:)[^"]*','match');
0064 cpd_id(i1) = str2double(regexp(cpdDat{i1},'(?<=id=")(\d+)[^"]*','match'));
0065 cpd_coords = regexp(cpdDat{i1},'type="circle" x="(\d+)" y="(\d+)" width="(\d+)" height="(\d+)"','tokens');
0066 cpd_coord(i1,1) = str2double(cpd_coords{1}{1});
0067 cpd_coord(i1,2) = str2double(cpd_coords{1}{2});
0068 cpd_coord(i1,3) = str2double(cpd_coords{1}{3});
0069 cpd_coord(i1,4) = str2double(cpd_coords{1}{4});
0070 end
0071 gl_coord = (0); gl_id = (0); gls = ({});
0072 for i1 = 1:numel(glDat)
0073 gls(i1) = regexp(glDat{i1},'(?<=name="gl:)[^"]*','match');
0074 gl_id(i1) = str2double(regexp(glDat{i1},'(?<=id=")(\d+)[^"]*','match'));
0075 gl_coords = regexp(glDat{i1},'type="circle" x="(\d+)" y="(\d+)" width="(\d+)" height="(\d+)"','tokens');
0076 gl_coord(i1,1) = str2double(gl_coords{1}{1});
0077 gl_coord(i1,2) = str2double(gl_coords{1}{2});
0078 gl_coord(i1,3) = str2double(gl_coords{1}{3});
0079 gl_coord(i1,4) = str2double(gl_coords{1}{4});
0080 end
0081
0082
0083
0084
0085 rxn4cmp = regexp(Dat,'(?<=<reaction)\s+id="(\d+)" (.+?/>)*?\s*(?=</reaction>)','tokens');
0086 rxn4cmp_id = (0); rxn4cmp_subid= ({}); rxn4cmp_subname= ({});
0087 rxn4cmp_prodid= ({}); rxn4cmp_prodname= ({}); rxn4cmp_name = ({});
0088 for i1 = 1:numel(rxn4cmp)
0089 rxn4cmp_det = regexp(rxn4cmp{i1}{2},'(?<="rn:)[^"]*','match');
0090 temp_rxn1 = regexp(rxn4cmp_det{1}, 'R\d{5}', 'match');
0091 for r1 = 1:numel(temp_rxn1)
0092 rxn4cmp_name{i1}{r1} = temp_rxn1{r1};
0093 end
0094 rxndet_sub = regexp(rxn4cmp{i1}{2},'(?<=<substrate)\s+id="(\d+)"\s+name="cpd:C(\d+)"[^/]*','tokens');
0095 rxndet_sub1 = regexp(rxn4cmp{i1}{2},'(?<=<substrate)\s+id="(\d+)"\s+name="gl:G(\d+)"[^/]*','tokens');
0096 rxndet_prod = regexp(rxn4cmp{i1}{2},'(?<=<product)\s+id="(\d+)"\s+name="cpd:C(\d+)"[^/]*','tokens');
0097 rxndet_prod1 = regexp(rxn4cmp{i1}{2},'(?<=<product)\s+id="(\d+)"\s+name="gl:G(\d+)"[^/]*','tokens');
0098 for i2 = 1:numel(rxndet_sub)
0099 rxn4cmp_subid{i1}(i2) = str2double(rxndet_sub{i2}(1));
0100 rxn4cmp_subname{i1}{i2} = strcat('C',rxndet_sub{i2}{2});
0101 end
0102 for i2 = numel(rxndet_sub)+1:numel(rxndet_sub1)+numel(rxndet_sub)
0103 rxn4cmp_subid{i1}(i2) = str2double(rxndet_sub1{i2-numel(rxndet_sub)}(1));
0104 rxn4cmp_subname{i1}{i2} = strcat('G',rxndet_sub1{i2-numel(rxndet_sub)}{2});
0105 end
0106 for i3 = 1:numel(rxndet_prod)
0107 rxn4cmp_prodid{i1}(i3) = str2double(rxndet_prod{i3}(1));
0108 rxn4cmp_prodname{i1}{i3} = strcat('C',rxndet_prod{i3}{2});
0109 end
0110 for i3 = 1+numel(rxndet_prod):numel(rxndet_prod1)+numel(rxndet_prod)
0111 rxn4cmp_prodid{i1}(i3) = str2double(rxndet_prod1{i3-numel(rxndet_prod)}(1));
0112 rxn4cmp_prodname{i1}{i3} = strcat('G',rxndet_prod1{i3-numel(rxndet_prod)}{2});
0113 end
0114 rxn4cmp_id(i1) = str2double(rxn4cmp{i1}{1});
0115 end
0116 basemap.r.rxn = rxns;
0117 basemap.r.rxnid = rxn_id;
0118 basemap.r.col = rxn_col;
0119 basemap.r.rxnx = rxnx;
0120 basemap.r.rxny = rxny;
0121 basemap.c.cpd = cpds;
0122 basemap.c.cpdid = cpd_id;
0123 basemap.c.cpdxy = cpd_coord;
0124 basemap.c.gl = gls;
0125 basemap.c.glid = gl_id;
0126 basemap.c.glxy = gl_coord;
0127 basemap.rc.rxn = rxn4cmp_name;
0128 basemap.rc.rxnid = rxn4cmp_id;
0129 basemap.rc.sub = rxn4cmp_subname;
0130 basemap.rc.subid = rxn4cmp_subid;
0131 basemap.rc.prod = rxn4cmp_prodname;
0132 basemap.rc.prodid = rxn4cmp_prodid;
0133
0134
0135
0136 basemap.rc.sub{basemap.rc.rxnid==18} = 'C00019';
0137 basemap.rc.subid{basemap.rc.rxnid==18} = 4254;
0138
0139 basemap.rc.prod{basemap.rc.rxnid==718} = 'C15975';
0140 basemap.rc.prodid{basemap.rc.rxnid==718} = 2997;