Module:JAS
Documentation for this module may be created at Module:JAS/doc
local getArgs = require('Module:Arguments').getArgs;
local defArgs = require('Module:Arguments').defaultArgs;
local jas = {};
function jas.NumberOfMutations( frame )
local args = defArgs(getArgs(frame), 1, "");
local arg = args[1];
function SortAndPrint(prefix, T)
local idx = {}
local res = ""
for k,v in pairs(T) do
table.insert(idx, k)
end
table.sort(idx)
for i=1, #idx do
res = res .. prefix .. idx[i] .. "<br/>" .. T[idx[i]] .."\n{{#bar:}}"
end
return res;
end
local text = "";
local exn = {}
local inn = {}
local etc = {}
local total =0
for gene in arg:gmatch("&&([-%w]+)\n") do
total = total+1
local n = tonumber(string.match(gene,"(%d+)"))
if (string.match(gene,"exon")) then
if (exn[n] == nil) then exn[n] = 1 else exn[n] = exn[n]+1 end
elseif (string.match(gene,"intron")) then
if (inn[n] == nil) then inn[n] = 1 else inn[n] = inn[n]+1 end
else
if (etc[gene] == nil) then etc[gene] = 1 else etc[gene] = etc[gene]+1 end
end
end
text = text .. SortAndPrint("E", exn)
text = text .. SortAndPrint("I", inn)
text = text .. SortAndPrint("", etc)
text = text .. "<b>Total</b><br/>" .. total
return frame:preprocess(text);
end
function jas.TypeOfMutations( frame )
local args = defArgs(getArgs(frame), 2, "", "LDLR");
local arg = args[1];
local arg1 = args[2];
local text = "";
local M=0 D=0 I=0 DI=0 O=0 U=0
local total =0
for type in arg:gmatch("&&" .. arg1 .. "/(%w+)/%S+\n") do
total = total+1
if (string.match(type,"Mut")) then M = M+1
elseif (string.match(type,"DelIns")) then DI = DI+1
elseif (string.match(type,"Ins")) then I = I+1
elseif (string.match(type,"Del")) then D = D+1
elseif (string.match(type,"Dup")) then U = U+1
else O = O+1
end
end
text = text .. "Single-nucleotide<br/>mutation<br/>" .. M .. "\n{{#bar:}}Deletion<br/>" .. D .. "\n{{#bar:}}Insertion<br/>" .. I .. "\n{{#bar:}}Del&Ins<br/>" .. DI .. "\n{{#bar:}}Duplication<br/>" .. U .. "\n{{#bar:}}Others<br/>" .. O
text = text .. "\n{{#bar:}}<b>Total</b><br/>" .. total
return frame:preprocess(text);
end
function jas.ReportedMutations( frame )
local args = defArgs(getArgs(frame), 1, "");
local arg = args[1];
local text = "";
for aus, au, ja, yr, mut, eff, pos in arg:gmatch("&&((%w+)%S*:,([%w_%(%)]+),(%d+),[^&]+)&&([^&]+)&&([^&\n]+)&&([^&\n]+)") do
text = text .. "{{#bar:}}" .. mut .. " \n{{#bar:}} " .. eff .. " \n{{#bar:}} " .. pos .. " \n{{#bar:}} [[JASReference:" .. aus .. "{{#bar:}}" .. au .." (".. yr ..") ".. ja .. "]]\n{{#bar:}}-\n"
end
return frame:preprocess(text);
end
return jas;