Template:Pathway/Metabolic
From Metabolomics.JP
< Template:Pathway(Difference between revisions)
| Line 2: | Line 2: | ||
{{#def:pathwayPosition|{{#if:{{{position|}}}|{{{position}}}|}}}} | {{#def:pathwayPosition|{{#if:{{{position|}}}|{{{position}}}|}}}} | ||
| − | + | <pre> | |
| + | <!---- | ||
{{#repeat:Pathway/MetabolicTable|4|<!---- | {{#repeat:Pathway/MetabolicTable|4|<!---- | ||
4行の出力内訳 | 4行の出力内訳 | ||
Revision as of 13:42, 16 March 2009
<!----
{{#repeat:Pathway/MetabolicTable|4|<!----
4行の出力内訳
1 ... mapping pagetitle
2 ... mapping direction
3 ... mapped position
4 ... target molecular ID
--->{{#lua:
local list = {};
local count = 0;
for line in stdin:gmatch("([^\n]+)") do
count = count+1;
if (count % 3 ~= 2) 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 = {};
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;
end
else
--- Create standard mapping
for k, v in string.gmatch(line, "(%d%d?) (%d%d?) %d?%d? ?;") do
map[k] = v;
end
end
--- Leave only positions that can be mapped
local list2 = {};
local str = "";
for k, v in pairs(list) do
if (map[k] ~= nil)
then list2[map[k]] = map[k];
str = str .. " " .. k .. "->" .. map[k];
end
end
print(str); -- output 3rd line
list = list2;
end
local str = "";
for k, v in pairs(list) do
str = str .. k .. " ";
end
print(str); -- output 4th line
end
end
|{{#repeat:Pathway/Mapping|1|{{#cdr:{{{list}}}|&&}}|&&}}
}}
}}
|}