<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://lipidbank.jp/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AIndex</id>
	<title>Module:Index - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://lipidbank.jp/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AIndex"/>
	<link rel="alternate" type="text/html" href="https://lipidbank.jp/mediawiki/index.php?title=Module:Index&amp;action=history"/>
	<updated>2026-04-29T13:30:28Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://lipidbank.jp/mediawiki/index.php?title=Module:Index&amp;diff=117145&amp;oldid=prev</id>
		<title>Editor: Created page with &quot;local getArgs = require(&#039;Module:Arguments&#039;).getArgs; local defArgs = require(&#039;Module:Arguments&#039;).defaultArgs; local index = {};  function index.Author( frame )   local args = defArgs(getArgs(frame), 1, &quot;&quot;);   local arg = args[1];    local key = arg:match(&quot;%w+&quot;);   local H = {};   local I = {};   for line in arg:gmatch(&quot;(%S+)&quot;) do   for names, ja, yr in string.gmatch(line,&quot;([%a:_&#039;]+),([%w\._]+),([%d]+),&quot;) do     for name in string.gmatch(names,&quot;([%a_&#039;]+)&quot;) do       if (st...&quot;</title>
		<link rel="alternate" type="text/html" href="https://lipidbank.jp/mediawiki/index.php?title=Module:Index&amp;diff=117145&amp;oldid=prev"/>
		<updated>2023-02-03T05:41:18Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs; local defArgs = require(&amp;#039;Module:Arguments&amp;#039;).defaultArgs; local index = {};  function index.Author( frame )   local args = defArgs(getArgs(frame), 1, &amp;quot;&amp;quot;);   local arg = args[1];    local key = arg:match(&amp;quot;%w+&amp;quot;);   local H = {};   local I = {};   for line in arg:gmatch(&amp;quot;(%S+)&amp;quot;) do   for names, ja, yr in string.gmatch(line,&amp;quot;([%a:_&amp;#039;]+),([%w\._]+),([%d]+),&amp;quot;) do     for name in string.gmatch(names,&amp;quot;([%a_&amp;#039;]+)&amp;quot;) do       if (st...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs;&lt;br /&gt;
local defArgs = require(&amp;#039;Module:Arguments&amp;#039;).defaultArgs;&lt;br /&gt;
local index = {};&lt;br /&gt;
&lt;br /&gt;
function index.Author( frame )&lt;br /&gt;
  local args = defArgs(getArgs(frame), 1, &amp;quot;&amp;quot;);&lt;br /&gt;
  local arg = args[1];&lt;br /&gt;
&lt;br /&gt;
  local key = arg:match(&amp;quot;%w+&amp;quot;);&lt;br /&gt;
  local H = {};&lt;br /&gt;
  local I = {};&lt;br /&gt;
  for line in arg:gmatch(&amp;quot;(%S+)&amp;quot;) do&lt;br /&gt;
  for names, ja, yr in string.gmatch(line,&amp;quot;([%a:_&amp;#039;]+),([%w\._]+),([%d]+),&amp;quot;) do&lt;br /&gt;
    for name in string.gmatch(names,&amp;quot;([%a_&amp;#039;]+)&amp;quot;) do&lt;br /&gt;
      if (string.sub(name,0,1) == key) then&lt;br /&gt;
        if (H[name] == nil) then&lt;br /&gt;
          tmp = {};&lt;br /&gt;
          tmp[line] = tonumber(yr);&lt;br /&gt;
          H[name] = tmp;&lt;br /&gt;
          table.insert(I, name);&lt;br /&gt;
        else&lt;br /&gt;
          tmp = H[name];&lt;br /&gt;
          tmp[line] = tonumber(yr);&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  end&lt;br /&gt;
  table.sort(I);&lt;br /&gt;
  local ret = &amp;quot;&amp;quot;;&lt;br /&gt;
  for i=1,table.getn(I) do&lt;br /&gt;
    local author = I[i];&lt;br /&gt;
    local tmp = H[author];&lt;br /&gt;
    local count = 0;&lt;br /&gt;
    local peakDist = {};&lt;br /&gt;
    local coAu = {};&lt;br /&gt;
    local earliest = 3000;&lt;br /&gt;
    local latest = 0;&lt;br /&gt;
    for k,v in pairs(tmp) do&lt;br /&gt;
      --check earliest and latest publications&lt;br /&gt;
      if (earliest &amp;gt; v) then earliest = v; end&lt;br /&gt;
      if (latest &amp;lt; v) then latest = v; end&lt;br /&gt;
      count = count + 1;&lt;br /&gt;
      for i=v-2,v+2 do&lt;br /&gt;
        if (peakDist[i] == nil) &lt;br /&gt;
          then peakDist[i] = 3-math.abs(v-i);&lt;br /&gt;
          else peakDist[i] = peakDist[i] + 3-math.abs(v-i);&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
      --check major coauthors&lt;br /&gt;
      for names, ja, yr in string.gmatch(k,&amp;quot;([%a:_&amp;#039;]+),([%w\._]+),([%d]+),&amp;quot;) do&lt;br /&gt;
        for name in string.gmatch(names,&amp;quot;([%a_&amp;#039;]+)&amp;quot;) do&lt;br /&gt;
          if (name ~= author) then &lt;br /&gt;
            if (coAu[name] == nil) then&lt;br /&gt;
              coAu[name] = 1;&lt;br /&gt;
            else&lt;br /&gt;
              coAu[name] = coAu[name] + 1;&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end &lt;br /&gt;
    end&lt;br /&gt;
    local peak = 0;&lt;br /&gt;
    local peakY = 0;&lt;br /&gt;
    for k,v in pairs(peakDist) do&lt;br /&gt;
      if (v &amp;gt; peak) then peakY = k; peak = v; end&lt;br /&gt;
    end&lt;br /&gt;
    local auL = &amp;quot;&amp;quot;;&lt;br /&gt;
    if (count &amp;gt; 4) then&lt;br /&gt;
      for k,v in pairs(coAu) do&lt;br /&gt;
        if (v &amp;gt;= 3) then &lt;br /&gt;
          if (auL == &amp;quot;&amp;quot;) then&lt;br /&gt;
            auL = k; else auL = auL .. &amp;quot;:&amp;quot; .. k; end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
    ret = ret .. &amp;quot;&amp;amp;&amp;amp;&amp;quot; .. author .. &lt;br /&gt;
&amp;quot;&amp;amp;&amp;amp;&amp;quot; .. count .. &amp;quot;&amp;amp;&amp;amp;&amp;quot; .. earliest .. &amp;quot;&amp;amp;&amp;amp;&amp;quot; .. latest ..&lt;br /&gt;
&amp;quot;&amp;amp;&amp;amp;&amp;quot; .. peakY .. &amp;quot;&amp;amp;&amp;amp;&amp;quot; .. auL .. &amp;quot;\n&amp;quot;;&lt;br /&gt;
  end&lt;br /&gt;
  return ret;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function index.FormulaFunc1( frame )&lt;br /&gt;
  local args = defArgs(getArgs(frame), 4, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
  local arg = args[1];&lt;br /&gt;
  local arg1 = args[2];&lt;br /&gt;
  local arg2 = tonumber(args[3])-1;&lt;br /&gt;
  local arg4 = args[4];&lt;br /&gt;
&lt;br /&gt;
  local output = &amp;quot;&amp;quot;;&lt;br /&gt;
  for id in arg:gmatch(&amp;quot;&amp;amp;&amp;amp;(%w+)&amp;quot;) do&lt;br /&gt;
    output = output..&amp;quot;%formula%&amp;quot; .. arg1 .. &amp;quot;%&amp;quot; .. arg2 .. &amp;quot;%Index/formula%&amp;quot;..id..&amp;quot;%&amp;quot; .. arg4;&lt;br /&gt;
  end&lt;br /&gt;
  return output;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function index.FormulaFunc2( frame )&lt;br /&gt;
  local args = defArgs(getArgs(frame), 4, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
  local arg = args[1];&lt;br /&gt;
  local arg1 = args[2];&lt;br /&gt;
  local arg2 = tonumber(args[3])+1;&lt;br /&gt;
  local arg4 = args[4];&lt;br /&gt;
&lt;br /&gt;
  local id;&lt;br /&gt;
  local output = &amp;quot;&amp;quot;;&lt;br /&gt;
  for id in arg:gmatch(&amp;quot;&amp;amp;&amp;amp;(%w+)&amp;quot;) do&lt;br /&gt;
    output = output..&amp;quot;%formula%&amp;quot; .. arg1 .. &amp;quot;%&amp;quot; .. arg2 .. &amp;quot;%Index/formula%&amp;quot;..id..&amp;quot;%&amp;quot; .. arg4;&lt;br /&gt;
  end&lt;br /&gt;
  return output;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function index.FormulaIndexTable( frame )&lt;br /&gt;
  local args = defArgs(getArgs(frame), 3, &amp;quot;&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;20&amp;quot;);&lt;br /&gt;
  local arg = args[1];&lt;br /&gt;
  local arg1 = args[2];&lt;br /&gt;
  local arg2 = args[3];&lt;br /&gt;
&lt;br /&gt;
  local id, formula;&lt;br /&gt;
  local pat = arg1 .. arg2;&lt;br /&gt;
  local hash = {};&lt;br /&gt;
  local idx = {};&lt;br /&gt;
  for id, formula in arg:gmatch(&amp;quot;&amp;amp;&amp;amp;(%w+)&amp;amp;&amp;amp;([%a%d]+)&amp;quot;) do&lt;br /&gt;
    if (formula.match(formula, pat) ~= null) then&lt;br /&gt;
      if (hash[formula] == null)&lt;br /&gt;
        then hash[formula] = id;&lt;br /&gt;
          table.insert(idx, formula);&lt;br /&gt;
        else hash[formula] = hash[formula]..&amp;quot;&amp;amp;&amp;amp;&amp;quot;..id;&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  table.sort(idx);&lt;br /&gt;
  local output = &amp;quot;&amp;quot;;&lt;br /&gt;
  for id, val in pairs(idx) do&lt;br /&gt;
    output = output .. val ..&amp;quot;&amp;amp;&amp;amp;&amp;quot;.. hash[val] .. &amp;quot;\n&amp;quot;;&lt;br /&gt;
  end&lt;br /&gt;
  return output;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function index.MassIndexTable( frame )&lt;br /&gt;
  local args = defArgs(getArgs(frame), 3, &amp;quot;&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;2000&amp;quot;);&lt;br /&gt;
  local arg = args[1];&lt;br /&gt;
  local arg1 = args[2];&lt;br /&gt;
  local arg2 = args[3];&lt;br /&gt;
&lt;br /&gt;
  local id, ms, msd;&lt;br /&gt;
  local min = arg1;&lt;br /&gt;
  local max = arg2;&lt;br /&gt;
  local hash = {};&lt;br /&gt;
  local idx = {};&lt;br /&gt;
  for id, ms in arg:gmatch(&amp;quot;&amp;amp;&amp;amp;(%w+)&amp;amp;&amp;amp;([%d\.]+)&amp;quot;) do&lt;br /&gt;
    msd = tonumber(ms); ---質量の最小と最大の間に入る部分のみ考慮&lt;br /&gt;
    if ((msd &amp;gt;= min) and (msd &amp;lt;= max)) then&lt;br /&gt;
      if (hash[msd] == null)&lt;br /&gt;
        then hash[msd] = id;&lt;br /&gt;
          table.insert(idx, msd);&lt;br /&gt;
        else hash[msd] = hash[msd]..&amp;quot;&amp;amp;&amp;amp;&amp;quot;..id;&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  table.sort(idx);&lt;br /&gt;
  local output = &amp;quot;&amp;quot;;&lt;br /&gt;
  for id, val in pairs(idx) do&lt;br /&gt;
    output = output .. val ..&amp;quot;&amp;amp;&amp;amp;&amp;quot;.. hash[val] .. &amp;quot;\n&amp;quot;;&lt;br /&gt;
  end&lt;br /&gt;
  return output;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function index.Name( frame )&lt;br /&gt;
  local args = defArgs(getArgs(frame), 1, &amp;quot;&amp;quot;);&lt;br /&gt;
  local arg = args[1];&lt;br /&gt;
&lt;br /&gt;
  local key = arg:match(&amp;quot;%w+&amp;quot;);&lt;br /&gt;
  local H = {};&lt;br /&gt;
  local I = {};&lt;br /&gt;
  for id, name in arg:gmatch(&amp;quot;&amp;amp;&amp;amp;(%w+).Common Name=&amp;amp;&amp;amp;(%S+)&amp;quot;) do&lt;br /&gt;
    name = string.lower(name);&lt;br /&gt;
    for term in string.gmatch(name,&amp;quot;(%a+)&amp;quot;) do&lt;br /&gt;
      if ((string.len(term) &amp;gt; 3) and&lt;br /&gt;
          (string.sub(term,0,1) == key)) then&lt;br /&gt;
        if (H[term] == nil) then&lt;br /&gt;
          H[term] = id; table.insert(I, term);&lt;br /&gt;
        else&lt;br /&gt;
          H[term] = H[term] .. &amp;quot;;&amp;quot; .. id;&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  table.sort(I);&lt;br /&gt;
  local ret = &amp;quot;&amp;quot;;&lt;br /&gt;
  for i=1,table.getn(I) do&lt;br /&gt;
    local k = I[i];&lt;br /&gt;
    ret = ret .. &amp;quot;* &amp;#039;&amp;#039;&amp;#039;&amp;quot; .. k;&lt;br /&gt;
    for id in string.gmatch(H[k],&amp;quot;%w+&amp;quot;) do&lt;br /&gt;
      ret = ret .. &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;amp;nbsp;&amp;amp;nbsp; [[&amp;quot; .. id ..&amp;quot;]] &amp;amp;nbsp; &amp;quot;;&lt;br /&gt;
    end&lt;br /&gt;
    ret = ret .. &amp;quot;\n&amp;quot;;&lt;br /&gt;
  end&lt;br /&gt;
  return ret;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return index&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
</feed>