diff options
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/pgfmolbio/pgfmolbio.domains.tex')
-rw-r--r-- | Master/texmf-dist/tex/lualatex/pgfmolbio/pgfmolbio.domains.tex | 799 |
1 files changed, 799 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/lualatex/pgfmolbio/pgfmolbio.domains.tex b/Master/texmf-dist/tex/lualatex/pgfmolbio/pgfmolbio.domains.tex new file mode 100644 index 00000000000..104d92763dc --- /dev/null +++ b/Master/texmf-dist/tex/lualatex/pgfmolbio/pgfmolbio.domains.tex @@ -0,0 +1,799 @@ +%% +%% 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) 2012 by Wolfgang Skala +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +\ProvidesFile{pgfmolbio.domains.tex}[2012/10/01 v0.2 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'. |