| 
			   | 
			
| (28 intermediate revisions by one user not shown) | 
| Line 1: | 
Line 1: | 
| − | {{#def:pathwaySource|{{{source|}}}}}  | + | {{Volatile:Pathway/Metabolic|{{{source|}}}|{{#replace:{{#trimex:{{{list|}}}}}|&&|__}}|0|{{PAGENAME}}}}  | 
| − | {{#def:pathwayPosition|{{#if:{{{position|}}}|{{{position}}}|}}}}  | + |  | 
| − |    | + |  | 
| − | {{#lua:
  | + |  | 
| − |   local list = {};
  | + |  | 
| − |   local count = 0;
  | + |  | 
| − |   for line in stdin:gmatch("([^\n]+)") do
  | + |  | 
| − |     count = count+1;
  | + |  | 
| − |     if ((count % 3 == 1) or (count % 3 == 0)) then
  | + |  | 
| − |       --- do nothing for AtomMaps and metabolite IDs ---
  | + |  | 
| − |       print(line);
  | + |  | 
| − |     else 
  | + |  | 
| − |       if (count==2) then
  | + |  | 
| − |       --- First mapping line ---
  | + |  | 
| − |         for k, v in string.gmatch(line, "(%d%d?) (%d%d?) %d?%d? ?;") do
  | + |  | 
| − |           list[k] = v;
  | + |  | 
| − |         end
  | + |  | 
| − |       else
  | + |  | 
| − |       --- Second and later lines ---
  | + |  | 
| − |         local map = {};
  | + |  | 
| − |       print(" next " .. line .. "\n");
  | + |  | 
| − |         if (string.sub(line,1,1) == 'R') then
  | + |  | 
| − |           line = string.sub(line,2);
  | + |  | 
| − |           --- Create reverse mapping
  | + |  | 
| − |           for k, v in string.gmatch(line, "(%d%d?) (%d%d?) %d?%d? ?;") do
  | + |  | 
| − |             map[v] = k;
  | + |  | 
| − |             --print(v .. "-" .. k .. " ");
  | + |  | 
| − |           end
  | + |  | 
| − |         else
  | + |  | 
| − |           --- Create standard mapping
  | + |  | 
| − |           for k, v in string.gmatch(line, "(%d%d?) (%d%d?) %d?%d? ?;") do
  | + |  | 
| − |             map[k] = v;
  | + |  | 
| − |             --print(k .. "-" .. v .. " ");
  | + |  | 
| − |           end
  | + |  | 
| − |         end
  | + |  | 
| − |         --- Leave only positions that can be mapped
  | + |  | 
| − |         local list2 = {};
  | + |  | 
| − |         for k, v in pairs(list) do
  | + |  | 
| − |           if (map[k] ~= nil) then list2[map[k]] = map[k]; end
  | + |  | 
| − |         end
  | + |  | 
| − |         list = list2;
  | + |  | 
| − |       end
  | + |  | 
| − |       local str = "";
  | + |  | 
| − |       for k, v in pairs(list) do
  | + |  | 
| − |         str = str .. k .. " ";
  | + |  | 
| − |       end
  | + |  | 
| − |       print(str);
  | + |  | 
| − |     end
  | + |  | 
| − |   end
  | + |  | 
| − |   --table.sort(list);
  | + |  | 
| − |   --for i,v in ipairs(list)
  | + |  | 
| − |    -- do print(v) end
  | + |  | 
| − | |{{#repeat:Pathway/Mapping|1|{{#cdr:{{{list}}}|&&}}|&&}}  | + |  | 
| − | }}  | + |  |