Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

// request.cf · coarse context

A page that knows where it met you.

Only coarse request metadata is shown. This demo does not display or persist visitor IP addresses.

Country
US
Cloudflare location
CMH
Connection
HTTP/2
Language
Not provided

Ray ID: a40724609c7d3334

Jump to content

Module:Infobox gene/orthologs

Permanently protected module
From Wikipedia, the free encyclopedia

local p = {}

function p.render(frame, root, config, entrez_gene, entrez_gene_mm, ensembl, ensembl_mm, uniprot, uniprot_mm, refseq_mRNA, refseq_mRNA_mm, refseq_prot, refseq_prot_mm, db, chr, gstart, gend, db_mm, chr_mm, gstart_mm, gend_mm, collapse_orthologs)
	local localSeparatorStr = config.localSeparatorStr
	local localNotApplicableStr = config.localNotApplicableStr
	local rowBGcolor = config.rowBGcolor
	local titleBGcolor = config.titleBGcolor
	local sideTitleBGcolor = config.sideTitleBGcolor
	local locToMb = config.locToMb
	local title = "[[Orthologs]]" --**lclz**
	local ortholog_class = collapse_orthologs ~= '' and 'collapsible collapsed' or 'collapsible'		
	--to do make the list creation a function
	--create list for entrez ids

	local category_chromosome = '[[Category:Genes on human chromosome '..chr..']]'-- *lclz*: Category name
	if chr == "MT" then
		category_chromosome = '[[Category:Human mitochondrial genes]]'-- *lclz*: Category name for mtDNA genes
	end
	if chr == "" then
		category_chromosome = '[[Category:Human genes]]' -- Per [[Wikipedia:Categories for discussion/Log/2023 August 15]]
	end
	if mw.title.getCurrentTitle().namespace ~= 0 then
		category_chromosome = ""
	end
	local entrezTitle = "[[Entrez]]"
	entrez_gene = string.gsub(entrez_gene, "%s", "")
	local entrez_link = localNotApplicableStr
	local entrez_collapse
	local entrez_default = ""
	local split_entrez = mw.text.split(entrez_gene, localSeparatorStr)
	local entrez_link_list = {}
	local ncbi_ortholog_links = {}
	for k,v in ipairs(split_entrez) do
		v = mw.text.trim(v)
		if string.match(v, '^%d+$') then
			ncbi_ortholog_links[#ncbi_ortholog_links + 1] = "[https://www.ncbi.nlm.nih.gov/datasets/gene/"..v.."/#orthologs entry]"
		end
		if string.match(v, '%w+') and v ~= localNotApplicableStr then
			entrez_link_list[#entrez_link_list+1] = "[https://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=retrieve&dopt=default&list_uids="..entrez_gene.."&rn=1 "..entrez_gene.."]"
		end
	end
	--if less than 5 don't create collapsible list
	if table.getn(entrez_link_list) < 5 then
		entrez_collapse = "none"
		if entrez_default == nil and table.getn(entrez_link_list) == 0 then entrez_link = localNotApplicableStr end
	else
		entrez_collapse = "collapsible collapsed"
		entrez_default = table.remove(entrez_link_list, 1) .. '<br>' .. table.remove(entrez_link_list, 1) .. '<br>' ..table.remove(entrez_link_list, 1) .. '<br>' .. table.remove(entrez_link_list, 1) .. '<br>' .. table.remove(entrez_link_list, 1) .. '<br>'--get first 5 elements in table and use for display
	end
	if entrez_link_list[#entrez_link_list] then
		entrez_link = table.concat(entrez_link_list, "<br>")
	end

	--create list for mouse Entrez id
	entrez_gene_mm = string.gsub(entrez_gene_mm, "%s", "")
	local entrez_mm_link = localNotApplicableStr
	local entrez_mm_collapse
	local entrez_mm_default = ""
	local split_entrez_mm = mw.text.split(entrez_gene_mm, localSeparatorStr)
	local entrez_mm_link_list = {}
	for k,v in ipairs(split_entrez_mm) do
		if string.match(v, '%w+') and v ~= localNotApplicableStr then
			entrez_mm_link_list[#entrez_mm_link_list+1] = "[https://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&amp;cmd=retrieve&amp;dopt=default&amp;list_uids="..v.."&amp;rn=1 "..v.."]"
		end
	end
	--if less than 5 don't create collapsible list
	if table.getn(entrez_mm_link_list) < 5 then
		entrez_mm_collapse = "none"
		if entrez_mm_default == nil and table.getn(entrez_mm_link_list) == 0 then entrez_mm_link = localNotApplicableStr end
	else
		entrez_mm_collapse = "collapsible collapsed"
		entrez_mm_default = table.remove(entrez_mm_link_list, 1) .. '<br>' .. table.remove(entrez_mm_link_list, 1) .. '<br>' ..table.remove(entrez_mm_link_list, 1) .. '<br>' .. table.remove(entrez_mm_link_list, 1) .. '<br>' .. table.remove(entrez_mm_link_list, 1) .. '<br>'--get first 5 elements in table and use for display
	end
	if entrez_mm_link_list[#entrez_mm_link_list] then
		entrez_mm_link = table.concat(entrez_mm_link_list, "<br>")
	end

	--create list of ensembl id
	local ensemblTitle = "[[Ensembl]]"
	ensembl = string.gsub(ensembl, "%s", "")
	local ensembl_link = localNotApplicableStr
	local ensembl_collapse
	local ensembl_default = ""
	local split_ensembl = mw.text.split(ensembl, localSeparatorStr)
	local ensembl_link_list = {}
	local oma_ensembl = ""
	for k,v in ipairs(split_ensembl) do
		if string.match(v, '%w+') and v ~= localNotApplicableStr then
			if oma_ensembl == "" then
				oma_ensembl = v
			end
			ensembl_link_list[#ensembl_link_list+1] = "[http://www.ensembl.org/Homo_sapiens/geneview?gene="..v..";db=core".." "..v.."]"
		end
	end
	--if less than 5 don't create collapsible list
	if table.getn(ensembl_link_list) < 5 then
		ensembl_collapse = "none"
		if ensembl_default == nil and table.getn(ensembl_link_list) == 0 then ensembl_link = localNotApplicableStr end
	else
		ensembl_collapse = "collapsible collapsed"
		ensembl_default = table.remove(ensembl_link_list, 1) .. '<br>' .. table.remove(ensembl_link_list, 1) .. '<br>' ..table.remove(ensembl_link_list, 1) .. '<br>' .. table.remove(ensembl_link_list, 1) .. '<br>' .. table.remove(ensembl_link_list, 1) .. '<br>'--get first 5 elements in table and use for display
	end
	if ensembl_link_list[#ensembl_link_list] then
		ensembl_link = table.concat(ensembl_link_list, "<br>")
	end

	--create list of mouse ensembl id
	ensembl_mm = string.gsub(ensembl_mm, "%s", "")
	local ensembl_mm_link = localNotApplicableStr
	local ensembl_mm_collapse
	local ensembl_mm_default = ""
	local split_ensembl_mm = mw.text.split(ensembl_mm, localSeparatorStr)
	local ensembl_mm_link_list = {}
	for k,v in ipairs(split_ensembl_mm) do
		if string.match(v, '%w+') and v ~= localNotApplicableStr then
			ensembl_mm_link_list[#ensembl_mm_link_list+1] = "[http://www.ensembl.org/Mus_musculus/geneview?gene="..v..";db=core".." "..v.."]"
		end
	end
	--if less than 5 don't create collapsible list
	if table.getn(ensembl_mm_link_list) < 5 then
		ensembl_mm_collapse = "none"
		if ensembl_mm_default == nil and table.getn(ensembl_mm_link_list) == 0 then ensembl_mm_link = localNotApplicableStr end
	else
		ensembl_mm_collapse = "collapsible collapsed"
		ensembl_mm_default = table.remove(ensembl_mm_link_list, 1) .. '<br>' .. table.remove(ensembl_mm_link_list, 1) .. '<br>' ..table.remove(ensembl_mm_link_list, 1) .. '<br>' .. table.remove(ensembl_mm_link_list, 1) .. '<br>' .. table.remove(ensembl_mm_link_list, 1) .. '<br>'--get first 5 elements in table and use for display
	end
	if ensembl_mm_link_list[#ensembl_mm_link_list] then
		ensembl_mm_link = table.concat(ensembl_mm_link_list, "<br>")
	end

	--create lists of uniprot ID
	local uniprotTitle = "[[UniProt]]"
	local uniprot_url = "https://www.uniprot.org/uniprot/"

	local uniprot_link = localNotApplicableStr
	local uniprot_collapse
	local uniprot_default = ""
	--split string and loop through concatenate by <br>
	local split_uniprot = mw.text.split(uniprot, '%p') -- the separator may be different sometimes, see note on zhwiki. This is unlikely to have punctuation, prayer.
	local uniprot_link_list = {}
	local uniprot_first = {} --preferred values only display [O,P,Q] prefixed entries if they exist
	local uniprot_alternate = {} --[A-N,R-Z] entries
	local hash = {} --storage to look for duplicated values
	for k,v in ipairs(split_uniprot) do
		if not hash[v] then --only add if not found previously..some encodes uniprotID dup in different encodes
			local label = mw.text.trim(v)
			local concat_uniprot_link = uniprot_url .. label
			if string.match(v, '%w+') and v ~= localNotApplicableStr then
				if string.match(v, '^O') or string.match(v,'^P') or string.match(v, '^Q') then
					uniprot_first[#uniprot_first+1] = "[" .. concat_uniprot_link .. " " ..label .. "]"
				else
					uniprot_alternate[#uniprot_alternate+1] = "[" .. concat_uniprot_link .. " " ..label .. "]"
				end
			end
			hash[v] = true
		end
	end
	if table.getn(uniprot_first)>0 then --if there is something in the preferred values display else display anything else
		uniprot_link_list = uniprot_first
	else
		uniprot_link_list = uniprot_alternate
	end

	--if less than 5 don't create collapsible list
	if table.getn(uniprot_link_list) < 5 then
		uniprot_collapse = "none"
		if uniprot_default == nil and table.getn(uniprot_link_list) == 0 then uniprot_link = localNotApplicableStr end
	else
		uniprot_collapse = "collapsible collapsed"
		uniprot_default = table.remove(uniprot_link_list, 1) .. '<br>' .. table.remove(uniprot_link_list, 1) .. '<br>' ..table.remove(uniprot_link_list, 1) .. '<br>' .. table.remove(uniprot_link_list, 1) .. '<br>' .. table.remove(uniprot_link_list, 1) .. '<br>'--get first 5 elements in table and use for display
	end

	if uniprot_link_list[#uniprot_link_list] then
		uniprot_link = table.concat(uniprot_link_list, "<br>")
	end

	--mouse uniprot lists
	local uniprot_mm_link = localNotApplicableStr
	local uniprot_mm_collapse
	local uniprot_mm_default = ""
	--split string and loop through concatenate by <br>
	local split_uniprot_mm = mw.text.split(uniprot_mm, localSeparatorStr)
	local uniprot_mm_link_list = {}
	local uniprot_mm_first = {} --preferred values only display [O,P,Q] prefixed entries if they exist
	local uniprot_mm_alternate = {} --[A-N,R-Z] entries
	local hash = {} --storage to look for duplicated values
	for k,v in ipairs(split_uniprot_mm) do
		if not hash[v] then --only add if not found previously..some encodes uniprotID dup in different encodes
			local label = mw.text.trim(v)
			local concat_uniprot_link = uniprot_url .. label
			if string.match(v, '%w+') and v ~= localNotApplicableStr then
				if string.match(v, '^O') or string.match(v,'^P') or string.match(v, '^Q') then
					uniprot_mm_first[#uniprot_mm_first+1] = "[" .. concat_uniprot_link .. " " ..label .. "]"
				else
					uniprot_mm_alternate[#uniprot_mm_alternate+1] = "[" .. concat_uniprot_link .. " " ..label .. "]"
				end
			end
			hash[v] = true
		end
	end
	if table.getn(uniprot_mm_first)>0 then --if there is something in the preferred values display else display anything else
		uniprot_mm_link_list = uniprot_mm_first
	else
		uniprot_mm_link_list = uniprot_mm_alternate
	end

	--if less than 5 don't create collapsible list
	if table.getn(uniprot_mm_link_list) < 5 then
		uniprot_mm_collapse = "none"
		if uniprot_mm_default == nil and table.getn(uniprot_mm_link_list) == 0 then uniprot_mm_link = localNotApplicableStr end
	else
		uniprot_mm_collapse = "collapsible collapsed"
		uniprot_mm_default = table.remove(uniprot_mm_link_list, 1) .. '<br>' .. table.remove(uniprot_mm_link_list, 1) .. '<br>' ..table.remove(uniprot_mm_link_list, 1) .. '<br>' .. table.remove(uniprot_mm_link_list, 1) .. '<br>' .. table.remove(uniprot_mm_link_list, 1) .. '<br>'--get first 5 elements in table and use for display
	end

	if uniprot_mm_link_list[#uniprot_mm_link_list] then
		uniprot_mm_link = table.concat(uniprot_mm_link_list, "<br>")
	end

	local ncbi_link = "https://www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?val="
	local refseq_mRNATitle = "RefSeq (mRNA)" -- *lclz*: sometimes

	--create list of links for refSeq mRNA
	local refseq_mRNA_link = localNotApplicableStr
	local refseq_mRNA_collapse
	local refseq_mRNA_default = ""
	--split string and loop through concatenate by <br>
	local split_refseq_mRNA = mw.text.split(refseq_mRNA, localSeparatorStr)
	local link_list_first = {} --hold those the have NM or NP values
	local link_list_alternate = {} --hold those that are XM or XP values
	local link_list = {} --if NM,NP display if not display XM, XP values
	for k,v in ipairs(split_refseq_mRNA) do
		local label = mw.text.trim(v)
		local concat_ncbi_link = ncbi_link .. label
		if string.match(v, '%w+') and v ~= localNotApplicableStr then
			if string.match(v, 'NM') or string.match(v, 'NP') then
				link_list_first[#link_list_first+1] = "[" .. concat_ncbi_link .. " " ..label .. "]"
			elseif string.match(v, 'XM') or string.match(v, 'XP') then
				link_list_alternate[#link_list_alternate+1] = "[" .. concat_ncbi_link .. " " ..label .. "]"
			end
		end
	end
	if table.getn(link_list_first)>0 then
		link_list = link_list_first
	else
		link_list = link_list_alternate
	end

	--if less than 5 don't create collapsible list
	if table.getn(link_list) < 6 then
		refseq_mRNA_collapse = "none"
		if refseq_mRNA_default == nil and table.getn(link_list) == 0 then refseq_mRNA_link = localNotApplicableStr end
	else
		refseq_mRNA_collapse = "collapsible collapsed"
		refseq_mRNA_default = table.remove(link_list, 1) .. '<br>' .. table.remove(link_list, 1) .. '<br>' ..table.remove(link_list, 1) .. '<br>' .. table.remove(link_list, 1) .. '<br>' .. table.remove(link_list, 1) .. '<br>'--get first 5 elements in table and use for display
	end

	if link_list[#link_list] then
		refseq_mRNA_link = table.concat(link_list, "<br>")
	end

	--create list of links for refSeq mRNA for mouse
	local refseq_mRNA_mm_link = localNotApplicableStr
	local refseq_mRNA_mm_collapse
	local refseq_mRNA_mm_default = ""
	local split_refseq_mRNA_mm = mw.text.split(refseq_mRNA_mm, localSeparatorStr)
	local link_list_mm = {} --if NM,NP display if not display XM, XP values
	local link_list_first = {} --hold those the have NM or NP values
	local link_list_alternate = {} --hold those that are XM or XP values

	for k,v in ipairs(split_refseq_mRNA_mm) do
		local label = mw.text.trim(v)
		local concat_ncbi_link = ncbi_link .. label
		if string.match(v, '%w+') and v ~= localNotApplicableStr then
			if string.match(v, 'NM') or string.match(v, 'NP') then
				link_list_first[#link_list_first+1] = "[" .. concat_ncbi_link .. " " ..label .. "]"
			elseif string.match(v, 'XM') or string.match(v, 'XP') then
				link_list_alternate[#link_list_alternate+1] = "[" .. concat_ncbi_link .. " " ..label .. "]"
			end
		end
	end
	if table.getn(link_list_first)>0 then
		link_list_mm = link_list_first
	else
		link_list_mm = link_list_alternate
	end
	--if less than 5 don't create collapsible list
	if table.getn(link_list_mm) < 6 then
		refseq_mRNA_mm_collapse = "none"
		if refseq_mRNA_mm_default == nil and table.getn(link_list_mm) == 0 then refseq_mRNA_mm_link = localNotApplicableStr end
	else
		refseq_mRNA_mm_collapse = "collapsible collapsed"
		refseq_mRNA_mm_default = table.remove(link_list_mm, 1) .. '<br>' .. table.remove(link_list_mm, 1) .. '<br>' ..table.remove(link_list_mm, 1) .. '<br>' .. table.remove(link_list_mm, 1) .. '<br>' .. table.remove(link_list_mm, 1) .. '<br>'--get first 5 elements in table and use for display
	end

	if link_list_mm[#link_list_mm] then
		refseq_mRNA_mm_link = table.concat(link_list_mm, "<br>")
	end

	-- *lclz*: sometimes
	local refseq_protTitle = "RefSeq (protein)"
	--create list of links for human refseq protein
	local refseq_prot_link = localNotApplicableStr
	local refseq_prot_collapse
	local refseq_prot_default = ""
	local split_refseq_prot = mw.text.split(refseq_prot, localSeparatorStr)
	local link_list_prot = {}
	local link_list_first = {} --hold those the have NM or NP values
	local link_list_alternate = {} --hold those that are XM or XP values
	for k,v in ipairs(split_refseq_prot) do
		local label = mw.text.trim(v)
		local concat_ncbi_link = ncbi_link .. label
		if string.match(v, '%w+') and v ~= localNotApplicableStr then
			if string.match(v, 'NM') or string.match(v, 'NP') then
				link_list_first[#link_list_first+1] = "[" .. concat_ncbi_link .. " " ..label .. "]"
			elseif string.match(v, 'XM') or string.match(v, 'XP') then
				link_list_alternate[#link_list_alternate+1] = "[" .. concat_ncbi_link .. " " ..label .. "]"
			end
		end
	end
	if table.getn(link_list_first)>0 then
		link_list_prot = link_list_first
	else
		link_list_prot = link_list_alternate
	end
	--if less than 5 don't create collapsible list
	if table.getn(link_list_prot) < 6 then
		refseq_prot_collapse = "none"
		if refseq_prot_default == nil and table.getn(link_list_prot) == 0 then refseq_prot_link = localNotApplicableStr end
	else
		refseq_prot_collapse = "collapsible collapsed"
		refseq_prot_default = table.remove(link_list_prot, 1) .. '<br>' .. table.remove(link_list_prot, 1) .. '<br>' ..table.remove(link_list_prot, 1) .. '<br>' .. table.remove(link_list_prot, 1) .. '<br>' .. table.remove(link_list_prot, 1) .. '<br>'--get first 5 elements in table and use for display
	end

	if link_list_prot[#link_list_prot] then
		refseq_prot_link = table.concat(link_list_prot, "<br>")
	end

	--create list of links for mouse refseq protein
	local refseq_prot_mm_link = localNotApplicableStr
	local refseq_prot_mm_collapse
	local refseq_prot_mm_default = ""
	local split_refseq_prot_mm = mw.text.split(refseq_prot_mm, localSeparatorStr)
	local link_list_prot_mm = {}
	local link_list_first = {} --hold those the have NM or NP values
	local link_list_alternate = {} --hold those that are XM or XP values

	for k,v in ipairs(split_refseq_prot_mm) do
		local label = mw.text.trim(v)
		local concat_ncbi_link = ncbi_link .. label
		if string.match(v, '%w+') and v ~= localNotApplicableStr then
			if string.match(v, 'NM') or string.match(v, 'NP') then
				link_list_first[#link_list_first+1] = "[" .. concat_ncbi_link .. " " ..label .. "]"
			elseif string.match(v, 'XM') or string.match(v, 'XP') then
				link_list_alternate[#link_list_alternate+1] = "[" .. concat_ncbi_link .. " " ..label .. "]"
			end
		end
	end
	if table.getn(link_list_first)>0 then
		link_list_prot_mm = link_list_first
	else
		link_list_prot_mm = link_list_alternate
	end
	--if less than 5 don't create collapsible list
	if table.getn(link_list_prot_mm) < 6 then
		refseq_prot_mm_collapse = "none"
		if refseq_prot_mm_default == nil and table.getn(link_list_prot_mm) == 0 then refseq_prot_mm_link = localNotApplicableStr end
	else
		refseq_prot_mm_collapse = "collapsible collapsed"
		refseq_prot_mm_default = table.remove(link_list_prot_mm, 1) .. '<br>' .. table.remove(link_list_prot_mm, 1) .. '<br>' ..table.remove(link_list_prot_mm, 1) .. '<br>' .. table.remove(link_list_prot_mm, 1) .. '<br>' .. table.remove(link_list_prot_mm, 1) .. '<br>'--get first 5 elements in table and use for display
	end
	if link_list_prot_mm[#link_list_prot_mm] then
		refseq_prot_mm_link = table.concat(link_list_prot_mm, "<br>")
	end

	local locTitle = "Location (UCSC)" -- *lclz*
	local gstart_mb = locToMb(gstart, 2)
	local gend_mb = locToMb(gend, 2)
	local chr_loc_link = ""
	if (string.match(db, '%w+') and string.match(chr, '%w+') and string.match(gstart, '%w+') and string.match(gend, '%w+') )then
		local chr_ucsc
		if chr == "MT" then
			chr_ucsc = "M" --UCSC uses "M" (not "MT") in URL for mitochondrial DNA
		else
			chr_ucsc = chr
		end
		chr_loc_link = "[https://genome.ucsc.edu/cgi-bin/hgTracks?org=Human&db="..db.."&position=chr"..chr_ucsc..":"..gstart.."-"..gend.." ".."Chr "..chr_ucsc..": "..gstart_mb.." – "..gend_mb.." Mb]"
	else
		chr_loc_link = localNotApplicableStr
	end
	local gstart_mm_mb = locToMb(gstart_mm, 2)
	local gend_mm_mb = locToMb(gend_mm, 2)
	local chr_loc_mm_link = ""
	if (string.match(db_mm, '%w+') and string.match(chr_mm, '%w+') and string.match(gstart_mm, '%w+') and string.match(gend_mm, '%w+') )then
		local chr_mm_ucsc
		if chr_mm == "MT" then
			chr_mm_ucsc = "M" --UCSC uses "M" (not "MT") in URL for mitochondrial DNA
		else
			chr_mm_ucsc = chr_mm
		end
		chr_loc_mm_link = "[https://genome.ucsc.edu/cgi-bin/hgTracks?org=Mouse&db="..db_mm.."&position=chr"..chr_mm_ucsc..":"..gstart_mm.."-"..gend_mm.." ".."Chr "..chr_mm_ucsc..": "..gstart_mm_mb.." – "..gend_mm_mb.." Mb]"
	else
		chr_loc_mm_link = localNotApplicableStr
	end

	local pubmedTitle = "[[PubMed]] search" -- *lclz*
	local pubmed_link = entrez_gene
	if string.match(entrez_gene, '%w+') and entrez_gene ~= localNotApplicableStr then
		pubmed_link = frame:extensionTag("ref",frame:expandTemplate{ title = 'cite_web', args = { title ="Human PubMed Reference:" , url = "https://www.ncbi.nlm.nih.gov/sites/entrez?db=gene&cmd=Link&LinkName=gene_pubmed&from_uid="..entrez_gene, website = "National Center for Biotechnology Information, U.S. National Library of Medicine" } } )--expandTemplate creates cite web template {{cite web|title=value|url=ref_link..ect}}
	end
	local pubmed_mm_link = entrez_gene_mm
	if string.match(entrez_gene_mm, '%w+') and entrez_gene_mm ~= localNotApplicableStr then
		pubmed_mm_link = frame:extensionTag("ref",frame:expandTemplate{ title = 'cite_web', args = { title ="Mouse PubMed Reference:" , url ="https://www.ncbi.nlm.nih.gov/sites/entrez?db=gene&cmd=Link&LinkName=gene_pubmed&from_uid="..entrez_gene_mm, website = "National Center for Biotechnology Information, U.S. National Library of Medicine" } } )--expandTemplate creates cite web template {{cite web|title=value|url=ref_link..ect}}
	end
	local ortholog_databases_list = {}
	if #ncbi_ortholog_links > 0 then
		ortholog_databases_list[#ortholog_databases_list + 1] = "[[National Center for Biotechnology Information#Gene|NCBI]]: "..table.concat(ncbi_ortholog_links, ", ")
	end
	if oma_ensembl ~= "" then
		ortholog_databases_list[#ortholog_databases_list + 1] = "[[Orthologous_MAtrix|OMA]]: [https://omabrowser.org/oma/vps/"..oma_ensembl.." entry]"
	end
	local ortholog_databases = localNotApplicableStr
	if #ortholog_databases_list > 0 then
		ortholog_databases = table.concat(ortholog_databases_list, "; ")
	end

	root
		:tag('tr')
			:tag('td')
				:attr('colspan', 4)
				:css('text-align', 'center')
				:css('background-color', rowBGcolor)
			    :css('color', 'inherit')
				:tag('table')
					:attr('class', ortholog_class)
					:css('padding', '0')
					:css('border', 'none')
					:css('margin', '0')
					:css('width', '100%')
					:css('text-align', 'left')
					:tag('tr')
						:tag('th')
							:attr('colspan', '4')
							:css('text-align', 'center')
							:css('background-color', titleBGcolor)
			                :css('color', 'inherit')
							:wikitext(title)
							:done() --end th
						:done() --end tr
					:tag('tr')
						:tag('th')
							:attr('scope', 'row')
							:css('background-color', sideTitleBGcolor)
							:css('color', 'inherit')
							:wikitext("Databases") --**lclz**
							:done() --end th
						:tag('td')
							:attr('colspan', '2')
							:tag('span')
								:attr('class', 'plainlinks')
								:wikitext(ortholog_databases)
								:done() --end span
							:done() --end td
						:done() --end tr
					:tag('tr')
						:tag('th')
							:attr('scope', 'row')
							:css('background-color', sideTitleBGcolor)
			                :css('color', 'inherit')
							:wikitext("Species") --**lclz**
							:done() --end th
						:tag('td')
							:wikitext("'''Human'''") --**lclz**
							:done() --end td
						:tag('td')
							:wikitext("'''Mouse'''") --**lclz**
							:done() --end td
						:done() --end tr
					:tag('tr')
						:tag('th')
							:attr('scope', 'row')
							:css('background-color', sideTitleBGcolor)
			                :css('color', 'inherit')
							:wikitext(entrezTitle)
							:done() --end th
						:tag('td')
							:tag('table')
								:attr('class', entrez_collapse)
								:css('padding', '0')
								:css('border', 'none')
								:css('margin', '0')
								:css('width', '100%')
								:css('text-align', 'right')
								:tag('tr')
									:tag('th')
										:attr('colspan', '1')
										:tag('span')
											:attr('class', 'plainlinks')
											:wikitext(entrez_default)
											:done() --end span
										:done() --end th
									:done() --end tr
								:tag('tr')
									:tag('td')
										:attr('colspan', '1')
										:tag('p')
											:attr('class', 'plainlinks')
											:wikitext(entrez_link)
											:done() --end p
										:done() --end td
									:done() --end tr
								:done() --end table
							:done() --end td
						:tag('td')
							:tag('table')
								:attr('class', entrez_mm_collapse)
								:css('padding', '0')
								:css('border', 'none')
								:css('margin', '0')
								:css('width', '100%')
								:css('text-align', 'right')
								:tag('tr')
									:tag('th')
										:attr('colspan', '1')
										:tag('span')
											:attr('class', 'plainlinks')
											:wikitext(entrez_mm_default)
											:done() --end span
										:done() --end th
									:done() --end tr
								:tag('tr')
									:tag('td')
										:attr('colspan', '1')
										:tag('p')
											:attr('class', 'plainlinks')
											:wikitext(entrez_mm_link)
											:done() --end p
										:done() --end td
									:done() --end tr
								:done() --end table
							:done() --end td
						:done() --end tr
					:tag('tr')
						:tag('th')
							:attr('scope', 'row')
							:css('background-color', sideTitleBGcolor)
			                :css('color', 'inherit')
							:wikitext(ensemblTitle)
							:done() --end th
						:tag('td')
							:tag('table')
								:attr('class', ensembl_collapse)
								:css('padding', '0')
								:css('border', 'none')
								:css('margin', '0')
								:css('width', '100%')
								:css('text-align', 'right')
								:tag('tr')
									:tag('th')
										:attr('colspan', '1')
										:tag('span')
											:attr('class', 'plainlinks')
											:wikitext(ensembl_default)
											:done() --end span
										:done() --end th
									:done() --end tr
								:tag('tr')
									:tag('td')
										:attr('colspan', '1')
										:tag('p')
											:attr('class', 'plainlinks')
											:wikitext(ensembl_link)
											:done() --end p
										:done() --end td
									:done() --end tr
								:done() --end table
							:done() --end td
						:tag('td')
							:tag('table')
								:attr('class', ensembl_mm_collapse)
								:css('padding', '0')
								:css('border', 'none')
								:css('margin', '0')
								:css('width', '100%')
								:css('text-align', 'right')
								:tag('tr')
									:tag('th')
										:attr('colspan', '1')
										:tag('span')
											:attr('class', 'plainlinks')
											:wikitext(ensembl_mm_default)
											:done() --end span
										:done() --end th
									:done() --end tr
								:tag('tr')
									:tag('td')
										:attr('colspan', '1')
										:tag('p')
											:attr('class', 'plainlinks')
											:wikitext(ensembl_mm_link)
											:done() --end p
										:done() --end td
									:done() --end tr
								:done() --end table
							:done() --end td
						:done() --end tr
					:tag('tr')
						:tag('th')
							:attr('scope', 'row')
							:css('background-color', sideTitleBGcolor)
			                :css('color', 'inherit')
							:wikitext(uniprotTitle)
							:done() --end th
						:tag('td')
							:tag('table')
								:attr('class', uniprot_collapse)
								:css('padding', '0')
								:css('border', 'none')
								:css('margin', '0')
								:css('width', '100%')
								:css('text-align', 'right')
								:tag('tr')
									:tag('th')
										:attr('colspan', '1')
										:tag('span')
											:attr('class', 'plainlinks')
											:wikitext(uniprot_default)
											:done() --end span
										:done() --end th
									:done() --end tr
								:tag('tr')
									:tag('td')
										:attr('colspan', '1')
										:tag('p')
											:attr('class', 'plainlinks')
											:wikitext(uniprot_link)
											:done() --end p
										:done() --end td
									:done() --end tr
								:done() --end table
							:done() --end td
						:tag('td')
							:tag('table')
								:attr('class', uniprot_mm_collapse)
								:css('padding', '0')
								:css('border', 'none')
								:css('margin', '0')
								:css('width', '100%')
								:css('text-align', 'right')
								:tag('tr')
									:tag('th')
										:attr('colspan', '1')
										:tag('span')
											:attr('class', 'plainlinks')
											:wikitext(uniprot_mm_default)
											:done() --end span
										:done() --end th
									:done() --end th
								:tag('tr')
									:tag('td')
										:attr('colspan', '1')
										:tag('p')
											:attr('class', 'plainlinks')
											:wikitext(uniprot_mm_link)
											:done() --end p
										:done() --end td
									:done() --end tr
								:done() --end table
							:done() --end td
						:done() --end tr
					:tag('tr')
						:tag('th')
							:attr('scope', 'row')
							:css('background-color', sideTitleBGcolor)
			                :css('color', 'inherit')
							:wikitext(refseq_mRNATitle)
							:done() --end th
						:tag('td') --RNASeq mRNA collapsible table
							:tag('table')
								:attr('class', refseq_mRNA_collapse)
								:css('padding', '0')
								:css('border', 'none')
								:css('margin', '0')
								:css('width', '100%')
								:css('text-align', 'right')
								:tag('tr')
									:tag('th')
										:attr('colspan', '1')
										:attr('class', 'plainlinks')
										:wikitext(refseq_mRNA_default)
										:done() --end th
									:done() --end tr
								:tag('tr')
									:tag('td')
										:attr('colspan', '1')
										:tag('p')
											:tag('span')
												:attr('class', 'plainlinks')
												:wikitext(refseq_mRNA_link)
												:done() --end span
											:done() --end p
										:done() --end td
									:done() --end tr
								:done() --end table
							:done() --end td
						:tag('td') --RNASeq mRNA collapsible table for mouse
							:tag('table')
								:attr('class', refseq_mRNA_mm_collapse)
								:css('padding', '0')
								:css('border', 'none')
								:css('margin', '0')
								:css('width', '100%')
								:css('text-align', 'right')
								:tag('tr')
									:tag('th')
										:attr('colspan', '1')
										:attr('class', 'plainlinks')
										:wikitext(refseq_mRNA_mm_default)
										:done() --end th
									:done() --end tr
								:tag('tr')
									:tag('td')
										:attr('colspan', '1')
										:tag('p')
											:tag('span')
												:attr('class', 'plainlinks')
												:wikitext(refseq_mRNA_mm_link)
												:done() --end span
											:done() --end p
										:done() --end td
									:done() --end tr
								:done() --end table
							:done() --end td
						:done() --end tr
					:tag('tr')
						:tag('th')
							:attr('scope', 'row')
							:css('background-color', sideTitleBGcolor)
			                :css('color', 'inherit')
							:wikitext(refseq_protTitle)
							:done() --end th
						:tag('td') --RNASeq protein collapsible table
							:tag('table')
								:attr('class', refseq_prot_collapse)
								:css('padding', '0')
								:css('border', 'none')
								:css('margin', '0')
								:css('width', '100%')
								:css('text-align', 'right')
								:tag('tr')
									:tag('th')
										:attr('colspan', '1')
										:attr('class', 'plainlinks')
										:wikitext(refseq_prot_default)
										:done() --end th
									:done() --end tr
								:tag('tr')
									:tag('td')
										:attr('colspan', '1')
										:tag('p')
											:tag('span')
												:attr('class', 'plainlinks')
												:wikitext(refseq_prot_link)
												:done() --end span
											:done() --end p
										:done() --end td
									:done() --end tr
								:done() --end table
							:done() --end td
						:tag('td') --RNASeq protein collapsible table for mouse
							:tag('table')
								:attr('class', refseq_prot_mm_collapse)
								:css('padding', '0')
								:css('border', 'none')
								:css('margin', '0')
								:css('width', '100%')
								:css('text-align', 'right')
								:tag('tr')
									:tag('th')
										:attr('colspan', '1')
										:attr('class', 'plainlinks')
										:wikitext(refseq_prot_mm_default)
										:done() --end th
									:done() --end tr
								:tag('tr')
									:tag('td')
										:attr('colspan', '1')
										:tag('p')
											:tag('span')
												:attr('class', 'plainlinks')
												:wikitext(refseq_prot_mm_link)
												:done() --end span
											:done() --end p
										:done() --end td
									:done() --end tr
								:done() --end table
							:done() --end td
						:done() --end tr
					:tag('tr')
						:tag('th')
							:attr('scope', 'row')
							:css('background-color', sideTitleBGcolor)
			                :css('color', 'inherit')
							:wikitext(locTitle)
							:done() --end th
						:tag('td')
							:tag('span')
								:attr('class', 'plainlinks')
								:wikitext(chr_loc_link)
								:done() --end span
							:done() --end td
						:tag('td')
							:tag('span')
								:attr('class', 'plainlinks')
								:wikitext(chr_loc_mm_link)
								:done() --end span
							:done() --end td
						:done() --end tr
					:tag('tr')
						:tag('th')
							:attr('scope', 'row')
							:css('background-color', sideTitleBGcolor)
			                :css('color', 'inherit')
							:wikitext(pubmedTitle)
							:done() --end th
						:tag('td')
							:tag('span')
								:attr('class', 'plainlinks')
								:wikitext(pubmed_link)
								:done() --end span
							:done() --end td
						:tag('td')
							:tag('span')
								:attr('class', 'plainlinks')
								:wikitext(pubmed_mm_link)
								:done() --end span
							:wikitext(category_chromosome)
							:done() --end td
						:done() --end tr
					:done() --end table
				:done() --end td
			:done() --end tr
end

return p