%% %% This is file `pgfmolbio.domains.tex', %% generated with the docstrip utility. %% %% The original source files were: %% %% pgfmolbio.dtx (with options: `pmb-dom-tex') %% %% Copyright (C) 2024 by Wolfgang Esser-Skala %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c %% of this license or (at your option) any later version. %% The latest version of this license is in %% https://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. %% \ProvidesFile{pgfmolbio.domains.tex}[2024/06/17 v0.21a Protein domains] \ProvidesFile{pgfmolbio.domains.tex}[2012/10/01 v0.2 Protein Domains] \ifluatex \RequireLuaModule{pgfmolbio.domains} \directlua{pmbSpecialKeys = pgfmolbio.domains.SpecialKeys:new()} \fi \def\@pmb@dom@keydef#1#2{% \pgfkeyssetvalue{/pgfmolbio/domains/#1}{#2}% } \def\pmbdomvalueof#1{% \pgfkeysvalueof{/pgfmolbio/domains/#1}% } \@pmb@dom@keydef{name}{Protein} \newif\ifpmb@dom@showname \pgfmolbioset[domains]{% show name/.is if=pmb@dom@showname, show name } \@pmb@dom@keydef{description}{} \@pmb@dom@keydef{x unit}{.5mm} \@pmb@dom@keydef{y unit}{6mm} \@pmb@dom@keydef{residues per line}{200} \@pmb@dom@keydef{baseline skip}{3} \@pmb@dom@keydef{residue numbering}{auto} \@pmb@dom@keydef{residue range}{auto-auto} \@pmb@dom@keydef{enlarge left}{0cm} \@pmb@dom@keydef{enlarge right}{0cm} \@pmb@dom@keydef{enlarge top}{1cm} \@pmb@dom@keydef{enlarge bottom}{0cm} \pgfmolbioset[domains]{% style/.code=\pgfmolbioset[domains]{current style/.style={#1}} } \@pmb@dom@keydef{domain font}{\footnotesize} \@pmb@dom@keydef{level}{} \@pmb@dom@keydef{disulfide base distance}{1} \@pmb@dom@keydef{disulfide level distance}{.2} \@pmb@dom@keydef{range font}{\sffamily\scriptsize} \newif\ifpmb@dom@showruler \pgfmolbioset[domains]{% show ruler/.is if=pmb@dom@showruler, show ruler } \@pmb@dom@keydef{ruler range}{auto-auto} \@pmb@dom@keydef{default ruler step size}{50} \@pmb@dom@keydef{ruler distance}{-.5} \@pmb@dom@keydef{sequence}{} \@pmb@dom@keydef{magnified sequence font}{\ttfamily\footnotesize} \newif\ifpmb@dom@showsecstructure \pgfmolbioset[domains]{% show secondary structure/.is if=pmb@dom@showsecstructure, show secondary structure=false } \@pmb@dom@keydef{secondary structure distance}{1} \pgfmolbioset[domains]{% helix back border color/.code=\colorlet{helix back border color}{#1}, helix back main color/.code=\colorlet{helix back main color}{#1}, helix back middle color/.code=\colorlet{helix back middle color}{#1}, helix front border color/.code=\colorlet{helix front border color}{#1}, helix front main color/.code=\colorlet{helix front main color}{#1}, helix front middle color/.code=\colorlet{helix front middle color}{#1}, helix back border color=white!50!black, helix back main color=white!90!black, helix back middle color=white, helix front border color=red!50!black, helix front main color=red!90!black, helix front middle color=red!10!white } \@pmb@dom@keydef{sequence length}{} \@pmb@dom@keydef{@layer}{} \newcommand\setfeatureshape[2]{% \expandafter\def\csname @pmb@dom@feature@#1@shape\endcsname{#2}% } \newcommand\setfeatureshapealias[2]{% \expandafter\def\csname @pmb@dom@feature@#1@shape\endcsname{% \@nameuse{@pmb@dom@feature@#2@shape}% }% } \ifluatex \newcommand\setfeaturestylealias[2]{% \directlua{ if pmbProtein then pmbProtein.specialKeys:aliasFeatureStyle("#1", "#2") else pmbSpecialKeys:aliasFeatureStyle("#1", "#2") end }% } \newcommand\setfeaturealias[2]{% \setfeatureshapealias{#1}{#2}% \setfeaturestylealias{#1}{#2}% } \else \let\setfeaturealias\setfeatureshapealias% \fi \newcommand\pmbdomdrawfeature[1]{% \@ifundefined{@pmb@dom@feature@#1@shape}{% \PackageWarning{pgfmolbio}% {Feature shape `#1' unknown, using `default'.}% \@pmb@dom@feature@default@shape% }{% \@nameuse{@pmb@dom@feature@#1@shape}% }% } \setfeatureshape{default}{% \path [/pgfmolbio/domains/current style] (\xLeft, \yMid + .5 * \pmbdomvalueof{y unit}) rectangle (\xRight, \yMid - .5 * \pmbdomvalueof{y unit}); } \setfeatureshape{domain}{ \draw [/pgfmolbio/domains/current style, rounded corners=2pt] (\xLeft, \yMid + .5 * \pmbdomvalueof{y unit}) rectangle (\xRight, \yMid - .5 * \pmbdomvalueof{y unit}); \node at (\xMid, \yMid) {\pmbdomvalueof{domain font}{\pmbdomvalueof{description}}}; } \setfeaturealias{DOMAIN}{domain} \setfeatureshape{signal peptide}{% \path [/pgfmolbio/domains/current style] (\xLeft, \yMid + \pmbdomvalueof{y unit} / 5) rectangle (\xRight, \yMid - \pmbdomvalueof{y unit} / 5); } \setfeaturealias{SIGNAL}{signal peptide} \setfeatureshape{propeptide}{% \path [/pgfmolbio/domains/current style] (\xLeft, \yMid + .5 * \pmbdomvalueof{y unit}) rectangle (\xRight, \yMid - .5 * \pmbdomvalueof{y unit}); } \setfeaturealias{PROPEP}{propeptide} \setfeatureshape{carbohydrate}{% \draw [/pgfmolbio/domains/current style] (\xMid, \yMid) -- (\xMid, \yMid + .7 * \pmbdomvalueof{y unit}) node [above] {\tiny\strut\pmbdomvalueof{description}}; \fill [/pgfmolbio/domains/current style] (\xMid, \yMid + .7 * \pmbdomvalueof{y unit}) circle [radius=1pt]; } \setfeaturealias{CARBOHYD}{carbohydrate} \setfeatureshape{other/main chain}{% \ifpmb@dom@showsecstructure% \pgfmathsetmacro\yUpper{% \yMid + \pmbdomvalueof{secondary structure distance} * \pmbdomvalueof{y unit}% } \draw [thin] (\xLeft, \yUpper pt) -- (\xRight, \yUpper pt);% \fi% \path [/pgfmolbio/domains/current style] (\xLeft, \yMid) -- (\xRight, \yMid);% } \setfeatureshape{other/name}{% \ifpmb@dom@showname% \node [/pgfmolbio/domains/current style] at (\xMid, \pmbdomvalueof{baseline skip} * \pmbdomvalueof{y unit}) {\pmbdomvalueof{name} (\pmbdomvalueof{sequence length} residues)}; \fi% } \setfeatureshape{disulfide}{% \pgfmathsetmacro\yUpper{% \yMid + ( \pmbdomvalueof{disulfide base distance} + (\pmbdomvalueof{level} - 1) * \pmbdomvalueof{disulfide level distance} ) * \pmbdomvalueof{y unit} } \path [/pgfmolbio/domains/current style] (\xLeft, \yMid) -- (\xLeft, \yUpper pt) -- (\xRight, \yUpper pt) -- (\xRight, \yMid); } \setfeaturealias{DISULFID}{disulfide} \setfeatureshape{range}{% \pgfmathsetmacro\yUpper{% \yMid + ( \pmbdomvalueof{disulfide base distance} + (\pmbdomvalueof{level} - 1) * \pmbdomvalueof{disulfide level distance} ) * \pmbdomvalueof{y unit} } \path [/pgfmolbio/domains/current style] (\xLeft, \yUpper pt) -- (\xRight, \yUpper pt) node [pos=.5, above] {\pmbdomvalueof{range font}{\pmbdomvalueof{description}}}; } \setfeatureshape{other/ruler}{% \draw [/pgfmolbio/domains/current style] (\xMid, \yMid + \pmbdomvalueof{ruler distance} * \pmbdomvalueof{y unit}) -- (\xMid, \yMid + \pmbdomvalueof{ruler distance} * \pmbdomvalueof{y unit} - 1mm) node [below=-1mm] {\tiny\sffamily\strut\residueNumber}; } \setfeatureshape{other/sequence}{% \node [/pgfmolbio/domains/current style] at (\xMid, \yMid) {\strut\currentResidue}; } \newlength\pmb@magnifiedsequence@width \setfeatureshape{other/magnified sequence above}{% \settowidth\pmb@magnifiedsequence@width{% \begin{pgfinterruptpicture}% \pmbdomvalueof{magnified sequence font}% \featureSequence% \end{pgfinterruptpicture}% }% \pgfmathsetmacro\xUpperLeft{\xMid - \pmb@magnifiedsequence@width / 2} \pgfmathsetmacro\xUpperRight{\xMid + \pmb@magnifiedsequence@width / 2} \draw [/pgfmolbio/domains/current style] (\xLeft, \yMid) -- (\xLeft, \yMid + \pmbdomvalueof{y unit} / 6) -- (\xUpperLeft pt, \yMid + \pmbdomvalueof{y unit} * 4/6) -- (\xUpperLeft pt, \yMid + \pmbdomvalueof{y unit} * 5/6) (\xUpperRight pt, \yMid + \pmbdomvalueof{y unit} * 5/6) -- (\xUpperRight pt, \yMid + \pmbdomvalueof{y unit} * 4/6) -- (\xRight, \yMid + \pmbdomvalueof{y unit} / 6) -- (\xRight, \yMid); \node [anchor=mid] at (\xMid, \yMid + \pmbdomvalueof{y unit}) {\pmbdomvalueof{magnified sequence font}\featureSequence}; } \setfeatureshape{other/magnified sequence below}{% \settowidth\pmb@magnifiedsequence@width{% \begin{pgfinterruptpicture}% \pmbdomvalueof{magnified sequence font}% \featureSequence% \end{pgfinterruptpicture}% }% \pgfmathsetmacro\xLowerLeft{\xMid - \pmb@magnifiedsequence@width / 2} \pgfmathsetmacro\xLowerRight{\xMid + \pmb@magnifiedsequence@width / 2} \draw [/pgfmolbio/domains/current style] (\xLeft, \yMid) -- (\xLeft, \yMid - \pmbdomvalueof{y unit} / 6) -- (\xLowerLeft pt, \yMid - \pmbdomvalueof{y unit}) -- (\xLowerLeft pt, \yMid - \pmbdomvalueof{y unit} * 7/6) (\xLowerRight pt, \yMid - \pmbdomvalueof{y unit} * 7/6) -- (\xLowerRight pt, \yMid - \pmbdomvalueof{y unit}) -- (\xRight, \yMid - \pmbdomvalueof{y unit} / 6) -- (\xRight, \yMid); \node [anchor=mid] at (\xMid, \yMid - \pmbdomvalueof{y unit} * 8/6) {\pmbdomvalueof{magnified sequence font}\featureSequence}; } \newcommand\@pmb@dom@helixsegment[1]{% svg [scale=#1] "% c 0.30427 0 0.62523 0.59174 0.79543 0.96646 c 0.97673 2.15039 1.34005 4.49858 1.84538 6.6178 c 0.56155 2.35498 0.99602 4.514 1.82948 6.72355 c 0.11069 0.29346 0.23841 0.69219 0.56172 0.69219 l -5 0 c -0.27235 0.0237 -0.55793 -0.51373 -0.65225 -0.76773 c -0.98048 -2.64055 -1.40233 -5.46534 -2.06809 -8.00784 c -0.50047 -1.91127 -0.94696 -3.73368 -1.68631 -5.43929 c -0.14066 -0.3245 -0.34516 -0.78514 -0.69997 -0.78514 z" } \newcommand\@pmb@dom@helixhalfsegment[1]{% svg [scale=#1] "% c 0.50663 2.18926 0.96294 4.51494 1.78125 6.71875 c 0.09432 0.254 0.35265 0.80495 0.625 0.78125 l 5 0 c -0.32331 0 -0.45181 -0.42529 -0.5625 -0.71875 c -0.83346 -2.20955 -1.2822 -4.36377 -1.84375 -6.78125 l -5 0 z" } \pgfdeclareverticalshading[% helix back border color,% helix back main color,% helix back middle color% ]{helix half upper back}{100bp}{ color(0bp)=(helix back middle color); color(5bp)=(helix back middle color); color(45bp)=(helix back main color); color(75bp)=(helix back border color); color(100bp)=(helix back border color) } \pgfdeclareverticalshading[% helix back border color,% helix back main color,% helix back middle color% ]{helix half lower back}{100bp}{ color(0bp)=(helix back border color); color(25bp)=(helix back border color); color(35bp)=(helix back main color); color(55bp)=(helix back middle color); color(95bp)=(helix back main color); color(100bp)=(helix back main color) } \pgfdeclareverticalshading[% helix back border color,% helix back main color,% helix back middle color% ]{helix full back}{100bp}{ color(0bp)=(helix back border color); color(25bp)=(helix back border color); color(30bp)=(helix back main color); color(40bp)=(helix back middle color); color(60bp)=(helix back main color); color(75bp)=(helix back border color); color(100bp)=(helix back border color) } \pgfdeclareverticalshading[% helix front border color,% helix front main color,% helix front middle color% ]{helix half upper front}{100bp}{ color(0bp)=(helix front main color); color(5bp)=(helix front main color); color(45bp)=(helix front middle color); color(65bp)=(helix front main color); color(75bp)=(helix front border color); color(100bp)=(helix front border color) } \pgfdeclareverticalshading[% helix front border color,% helix front main color,% helix front middle color% ]{helix full front}{100bp}{ color(0bp)=(helix front border color); color(25bp)=(helix front border color); color(40bp)=(helix front main color); color(60bp)=(helix front middle color); color(70bp)=(helix front main color); color(75bp)=(helix front border color); color(100bp)=(helix front border color) } \setfeatureshape{helix/half upper back}{% \ifpmb@dom@showsecstructure% \pgfmathsetmacro\yShift{% \pmbdomvalueof{secondary structure distance} * \pmbdomvalueof{y unit}% } \draw [shading=helix half upper back] (\xLeft, \yMid + \yShift pt) \@pmb@dom@helixhalfsegment{\pmbdomvalueof{x unit} / 5}; \fi% } \setfeatureshape{helix/half lower back}{% \ifpmb@dom@showsecstructure% \pgfmathsetmacro\yShift{% \pmbdomvalueof{secondary structure distance} * \pmbdomvalueof{y unit}% } \draw [shading=helix half lower back] (\xRight, \yMid + \yShift pt) [rotate=180] \@pmb@dom@helixhalfsegment{\pmbdomvalueof{x unit} / 5}; \fi% } \setfeatureshape{helix/full back}{% \ifpmb@dom@showsecstructure% \pgfmathsetmacro\yShift{% \pmbdomvalueof{secondary structure distance} * \pmbdomvalueof{y unit}% } \draw [shading=helix full back] (\xMid, \yLower + \yShift pt) \@pmb@dom@helixsegment{\pmbdomvalueof{x unit} / 5}; \fi% } \setfeatureshape{helix/half upper front}{% \ifpmb@dom@showsecstructure% \pgfmathsetmacro\yShift{% \pmbdomvalueof{secondary structure distance} * \pmbdomvalueof{y unit}% } \draw [shading=helix half upper front] (\xRight, \yMid + \yShift pt) [xscale=-1] \@pmb@dom@helixhalfsegment{\pmbdomvalueof{x unit} / 5}; \fi% } \setfeatureshape{helix/full front}{% \ifpmb@dom@showsecstructure% \pgfmathsetmacro\yShift{% \pmbdomvalueof{secondary structure distance} * \pmbdomvalueof{y unit}% } \draw [shading=helix full front] (\xMid, \yLower + \yShift pt) [xscale=-1] \@pmb@dom@helixsegment{\pmbdomvalueof{x unit} / 5}; \fi% } \definecolor{strand left color}{RGB}{42,127,255} \definecolor{strand right color}{RGB}{128,179,255} \setfeatureshape{beta strand}{% \ifpmb@dom@showsecstructure% \pgfmathsetmacro\yShift{% \pmbdomvalueof{secondary structure distance} * \pmbdomvalueof{y unit}% } \draw [/pgfmolbio/domains/current style] (\xLeft, \yMid + \pmbdomvalueof{x unit} + \yShift pt) -- (\xRight - 1.5 * \pmbdomvalueof{x unit}, \yMid + \pmbdomvalueof{x unit} + \yShift pt) -- (\xRight - 1.5 * \pmbdomvalueof{x unit}, \yMid + 1.5 * \pmbdomvalueof{x unit} + \yShift pt) -- (\xRight, \yMid + \yShift pt) -- (\xRight - 1.5 * \pmbdomvalueof{x unit}, \yMid - 1.5 * \pmbdomvalueof{x unit} + \yShift pt) -- (\xRight - 1.5 * \pmbdomvalueof{x unit}, \yMid - \pmbdomvalueof{x unit} + \yShift pt) -- (\xLeft, \yMid - \pmbdomvalueof{x unit} + \yShift pt) -- cycle;% \fi% } \setfeaturealias{STRAND}{beta strand} \setfeatureshape{beta turn}{% \ifpmb@dom@showsecstructure% \pgfmathsetmacro\yShift{% \pmbdomvalueof{secondary structure distance} * \pmbdomvalueof{y unit}% } \pgfmathsetmacro\turnXradius{(\xRight - \xLeft) / 2}% \pgfmathsetmacro\turnYradius{\pmbdomvalueof{x unit} * 1.5}% \fill [white] (\xLeft, \yMid + 1mm + \yShift pt) rectangle (\xRight, \yMid - 1mm + \yShift pt);% \draw [/pgfmolbio/domains/current style] (\xLeft - .5pt, \yMid + \yShift pt) -- (\xLeft, \yMid + \yShift pt) arc [start angle=180, end angle=0, x radius=\turnXradius pt, y radius=\turnYradius pt] -- (\xRight + .5pt, \yMid + \yShift pt);% \fi% } \setfeaturealias{TURN}{beta turn} \setfeatureshape{beta bridge}{% \ifpmb@dom@showsecstructure% \pgfmathsetmacro\yShift{% \pmbdomvalueof{secondary structure distance} * \pmbdomvalueof{y unit}% } \draw [/pgfmolbio/domains/current style] (\xLeft, \yMid + .25 * \pmbdomvalueof{x unit} + \yShift pt) -- (\xRight - 1.5 * \pmbdomvalueof{x unit}, \yMid + .25 * \pmbdomvalueof{x unit} + \yShift pt) -- (\xRight - 1.5 * \pmbdomvalueof{x unit}, \yMid + 1.5 * \pmbdomvalueof{x unit} + \yShift pt) -- (\xRight, \yMid + \yShift pt) -- (\xRight - 1.5 * \pmbdomvalueof{x unit}, \yMid - 1.5 * \pmbdomvalueof{x unit} + \yShift pt) -- (\xRight - 1.5 * \pmbdomvalueof{x unit}, \yMid - .25 * \pmbdomvalueof{x unit} + \yShift pt) -- (\xLeft, \yMid - .25 * \pmbdomvalueof{x unit} + \yShift pt) -- cycle;% \fi% } \setfeatureshape{bend}{% \ifpmb@dom@showsecstructure% \pgfmathsetmacro\yShift{% \pmbdomvalueof{secondary structure distance} * \pmbdomvalueof{y unit}% } \fill [white] (\xLeft, \yMid + 1mm + \yShift pt) rectangle (\xRight, \yMid - 1mm + \yShift pt);% \draw [/pgfmolbio/domains/current style] (\xLeft - .5pt, \yMid + \yShift pt) -- (\xLeft, \yMid + \yShift pt) -- (\xMid, \yMid + .5 * \pmbdomvalueof{y unit} + \yShift pt) -- (\xRight, \yMid + \yShift pt) -- (\xRight + .5pt, \yMid + \yShift pt);% \fi% } \ifluatex\else\expandafter\endinput\fi \newcommand\pmb@dom@inputuniprot[1]{% \directlua{ pmbProtein:readUniprotFile("#1") pmbProtein:getParameters() pmbProtein:setParameters{ residueNumbering = "\pmbdomvalueof{residue numbering}" } }% } \newcommand\pmb@dom@inputgff[1]{% \directlua{ pmbProtein:readGffFile("#1") pmbProtein:setParameters{ residueNumbering = "\pmbdomvalueof{residue numbering}" } }% } \newcommand\pmb@dom@addfeature[4][]{% \begingroup% \pgfmolbioset[domains]{#1}% \@pmb@toksa{#1}% \directlua{ pmbProtein:addFeature{ key = "#2", start = "#3", stop = "#4", kvList = "\luaescapestring{\the\@pmb@toksa}", level = tonumber("\pmbdomvalueof{level}"), layer = tonumber("\pmbdomvalueof{@layer}") } }% \endgroup% } \newif\ifpmb@dom@tikzpicture \newenvironment{pmbdomains}[2][]{% \@ifundefined{useasboundingbox}% {\pmb@dom@tikzpicturefalse\begin{tikzpicture}}% {\pmb@dom@tikzpicturetrue}% \pgfmolbioset[domains]{sequence length=#2, #1}% \let\inputuniprot\pmb@dom@inputuniprot% \let\inputgff\pmb@dom@inputgff% \let\addfeature\pmb@dom@addfeature% \directlua{ pmbProtein = pgfmolbio.domains.Protein:new() pmbProtein.specialKeys = pgfmolbio.domains.SpecialKeys:new(pmbSpecialKeys) pmbProtein:setParameters{ sequenceLength = "\pmbdomvalueof{sequence length}" } pmbProtein:setParameters{ residueNumbering = "\pmbdomvalueof{residue numbering}" } }% }{% \pmb@dom@addfeature[@layer=1]{other/main chain}% {(1)}{(\pmbdomvalueof{sequence length})}% \@pmb@toksa=% \expandafter\expandafter\expandafter\expandafter% \expandafter\expandafter\expandafter{% \pgfkeysvalueof{/pgfmolbio/domains/name}% }% \directlua{ pmbProtein:setParameters{ residueRange = "\pmbdomvalueof{residue range}", defaultRulerStepSize = "\pmbdomvalueof{default ruler step size}" } pmbProtein:setParameters{ name = "\luaescapestring{\the\@pmb@toksa}", xUnit = "\pmbdomvalueof{x unit}", yUnit = "\pmbdomvalueof{y unit}", residuesPerLine = "\pmbdomvalueof{residues per line}", baselineSkip = "\pmbdomvalueof{baseline skip}", showRuler = "\ifpmb@dom@showruler true\else false\fi", rulerRange = "\pmbdomvalueof{ruler range}", sequence = "\pmbdomvalueof{sequence}" } pmbProtein:calculateDisulfideLevels() pgfmolbio.setCoordinateFormat( "\pgfkeysvalueof{/pgfmolbio/coordinate unit}", "\pgfkeysvalueof{/pgfmolbio/coordinate format string}" ) \ifpmb@loadmodule@convert local filename = "\pgfkeysvalueof{/pgfmolbio/convert/output file name}" if filename == "(auto)" then filename = "pmbconverted" .. pgfmolbio.outputFileId end filename = filename .. ".\pgfkeysvalueof{/pgfmolbio/convert/output file extension}" outputFile, ioError = io.open(filename, "w") if ioError then tex.error(ioError) end \ifpmb@con@outputtikzcode tex.sprint = function(a) outputFile:write(a) end pmbProtein:getParameters() tex.sprint("\string\n\string\\begin{tikzpicture}") pmbProtein:printTikzDomains() tex.sprint("\string\n\string\\end{tikzpicture}") \else \ifpmb@con@includedescription pmbProtein.includeDescription = true \fi outputFile:write(tostring(pmbProtein)) \fi outputFile:close() pgfmolbio.outputFileId = pgfmolbio.outputFileId + 1 \else pmbProtein:printTikzDomains() \fi pmbProtein = nil }% \ifpmb@dom@tikzpicture\else\end{tikzpicture}\fi% } \newcommand\setdisulfidefeatures[1]{% \directlua{ if pmbProtein then pmbProtein.specialKeys:clearKeys("disulfideKeys") pmbProtein.specialKeys:setKeys("disulfideKeys", "#1", true) else pmbSpecialKeys:clearKeys("disulfideKeys") pmbSpecialKeys:setKeys("disulfideKeys", "#1", true) end }% } \newcommand\adddisulfidefeatures[1]{% \directlua{ if pmbProtein then pmbProtein.specialKeys:setKeys("disulfideKeys", "#1", true) else pmbSpecialKeys:setKeys("disulfideKeys", "#1", true) end }% } \newcommand\removedisulfidefeatures[1]{% \directlua{ if pmbProtein then pmbProtein.specialKeys:setKeys("disulfideKeys", "#1", nil) else pmbSpecialKeys:setKeys("disulfideKeys", "#1", nil) end }% } \setdisulfidefeatures{DISULFID, disulfide, range} \newcommand\setfeatureprintfunction[2]{% \directlua{ if pmbProtein then pmbProtein.specialKeys:setKeys("printFunctions", "#1", #2) else pmbSpecialKeys:setKeys("printFunctions", "#1", #2) end }% } \newcommand\removefeatureprintfunction[1]{% \directlua{ if pmbProtein then pmbProtein.specialKeys:setKeys("printFunctions", "#1", nil) else pmbSpecialKeys:setKeys("printFunctions", "#1", nil) end }% } \setfeatureprintfunction{other/sequence}% {pgfmolbio.domains.printSequenceFeature} \setfeatureprintfunction{alpha helix, pi helix, 310 helix, HELIX}% {pgfmolbio.domains.printHelixFeature} \newcommand\setfeaturestyle[2]{% \@pmb@toksa{#2}% \directlua{ if pmbProtein then pmbProtein.specialKeys:setFeatureStyle( "#1", "\luaescapestring{\the\@pmb@toksa}" ) else pmbSpecialKeys:setFeatureStyle( "#1", "\luaescapestring{\the\@pmb@toksa}" ) end }% } \setfeaturestyle{default}{draw} \setfeaturestyle{domain}% {fill=Chartreuse,fill=LightSkyBlue,fill=LightPink,fill=Gold!50} \setfeaturestyle{signal peptide}{fill=black} \setfeaturestyle{propeptide}% {*1{fill=Gold, opacity=.5, rounded corners=4pt}} \setfeaturestyle{carbohydrate}{red} \setfeaturestyle{other/main chain}{*1{draw, line width=2pt, black!25}} \setfeaturestyle{other/name}{font=\sffamily} \setfeaturestyle{disulfide}{draw=olive} \setfeaturestyle{range}{*1{draw,decorate,decoration=brace}} \setfeaturestyle{other/ruler}{black, black!50} \setfeaturestyle{other/sequence}{*1{font=\ttfamily\tiny}}% \setfeaturestyle{other/magnified sequence above}% {*1{draw=black!50, densely dashed}} \setfeaturestylealias{other/magnified sequence below}% {other/magnified sequence above} \setfeaturestyle{alpha helix}{% *1{helix front border color=red!50!black,% helix front main color=red!90!black,% helix front middle color=red!10!white}% } \setfeaturestylealias{HELIX}{alpha helix} \setfeaturestyle{pi helix}{% *1{helix front border color=yellow!50!black,% helix front main color=yellow!70!red,% helix front middle color=yellow!10!white}% } \setfeaturestyle{310 helix}{% *1{helix front border color=magenta!50!black,% helix front main color=magenta!90!black,% helix front middle color=magenta!10!white}% } \setfeaturestyle{beta strand}{% *1{left color=strand left color, right color=strand right color}% } \setfeaturestyle{beta turn}{*1{draw=violet, thick}} \setfeaturestyle{beta bridge}{*1{fill=MediumBlue}} \setfeaturestyle{bend}{*1{draw=magenta, thick}} \endinput %% %% End of file `pgfmolbio.domains.tex'.