%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Molecular Coding Format manual by Akira Yamaji 2024.11.17 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ** mcf2graph.mf must be version 5.14 % ** use main_lib.mcf % ** typeset by LuaLaTeX(luamplib) %---------------------------------------------------------------------------- \documentclass[a4paper]{article} \usepackage{textcomp,verbatim}% \usepackage[luatex]{graphicx} \usepackage[luatex]{hyperref} \usepackage{makeidx} \usepackage{luamplib} \mplibnumbersystem{double} \makeindex \hypersetup{colorlinks=true,linkcolor=blue} %---------------------------------------------------------------------------- \mplibcodeinherit{enable}% \mplibverbatim{enable}% \mpliblegacybehavior{disabled}% \begin{mplibcode} input mcf2graph; \end{mplibcode} %---------------------------------------------------------------------------- \makeatletter% \edef\fext{mps}% \topmargin=-18mm \textheight=254mm \textwidth=168mm \oddsidemargin=0mm %%%%\oddsidemargin=7mm %%%%\evensidemargin=-7mm \unitlength=1mm% %---------------------------------------------------------------------------- \begin{document} \title{\Huge\sf Molecular Coding Format manual} \author{Akira Yamaji} \date{\today} \maketitle \begin{center} mcf2graph version 5.14 \end{center} \begin{center} Located at http://www.ctan.org/pkg/mcf2graph \end{center} \begin{center} Suggestion or request mail to: mcf2graph@gmail.com \end{center} %----------------------------------------------------------------------------- \thispagestyle{empty} \vspace{5mm}% \quad \begin{mplibcode} sw_output:=Fig+Calc; max_blength:=10mm; ratio_thickness_bond:=0.015; ratio_atom_bond:=0.36; fmargin:=(2mm,1mm); fsize:=(40mm,24mm); blength:=5mm; sw_frame:=0; % Glycine beginfigm \(<30,NH2,!2,COOH) endfigm % L-Alanine beginfigm \(<30,NH2,!~wb,/_,!,COOH) endfigm % L-Valine beginfigm \(<30,NH2,!~wb,/?!,!,COOH) endfigm % L-Leucine beginfigm \(<30,NH2,!~wb,/''(!,?!),!,COOH) endfigm \end{mplibcode} \\ \begin{mplibcode} % L-Isoleucine beginfigm \(<30,NH2,!~wb,/''(/*_,!2),!,COOH) endfigm % L-Serine beginfigm \(<30,NH2,!~wb,/!OH,!,COOH) endfigm % L-Threonine beginfigm \(<30,NH2,!~wb,/''(/_,!~wf,OH),!,COOH) endfigm % L-Cysteine beginfigm \(<30,NH2,!~wb,/!SH,!,COOH) endfigm \end{mplibcode} \\ \begin{mplibcode} % L-Methionine beginfigm \(<30,NH2,!~wb,/!2'S!,!,COOH) endfigm % L-Phenylalanine beginfigm \(<30,NH2,!~wb,/!Ph,!,COOH) endfigm % L-Tyrosine beginfigm \(<30,NH2,!~wb,/!Ph'(-3:/OH),!,COOH) endfigm % L-Triptophan beginfigm \(<30,NH2,!~wb,!,COOH,@2,\,!,<24,|,?5,-4=Ph,2=dr,5=dl,4:NH) endfigm \end{mplibcode} \\ \begin{mplibcode} % L-Prorine beginfigm \(<18,?5,3:NH,4:*/COOH) endfigm % L-Glutamine beginfigm \(<30,NH2,!~wb,!,COOH,@2,\`1,!`1,!,//O,!,NH2) endfigm % L-Asparagine beginfigm \(<30,NH2,!~wb,/!'?O'!NH2,!,COOH) endfigm % L-Aspartic acid beginfigm \(<30,NH2,!~wb,/!COOH,!,COOH) endfigm \end{mplibcode} \\ \begin{mplibcode} % L-Glutamic acid beginfigm \(<30,NH2,!~wb,/!2'COOH,!,COOH) endfigm % L-Lysine beginfigm \(<30,NH2,!~wb,/!4'NH2,!,COOH) endfigm % L-Arginine beginfigm \(<30,NH2,!~wb,!,COOH,@2,\`1,!`1,!2,NH,!,//NH,!,NH2) endfigm % L-Hystidine beginfigm \(<30,NH2,!~wb,!,COOH,@2,\,!,|,?5,1'3=dl,3:N,5:NH) endfigm \end{mplibcode} \\ \begin{mplibcode} % L-DOPA beginfigm \(<30,NH2,!~wb,!,COOH,@2,\,!,Ph,-3'-4:/OH) endfigm % Ornithine beginfigm \(<30,NH2,!~wb,/''(!3,NH2),!,COOH) endfigm % Citrulline beginfigm \(<30,NH2,!~wb,/''(!3,NH,!,//O,!,NH2),!,COOH) endfigm % GABA beginfigm \(<30,NH2,!4,COOH) endfigm \end{mplibcode} \\ \begin{mplibcode} % amino Levulinic acid beginfigm \(<30,NH2,!2,//O,!3,COOH) endfigm % 4-amino benzoic acid beginfigm \(<30,Ph,1:/NH2,4:/COOH) endfigm % L-Carboxyl glutamic acid beginfigm \(<30,NH2,!~wb,/''(!,/COOH,!,COOH),!,COOH) endfigm % L-Hydroxy Prorine beginfigm \(<18,?5,1:/OH,3:NH,4:*/COOH) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \twocolumn \thispagestyle{empty} \tableofcontents \linethickness{0.08mm}% %---------------------------------------------------------------------------- \newpage \twocolumn \section{Introduction} Molecular Coding Format(MCF) is new linear notation represent chemical structure diagrams. This Coding is named from programing technique such as operator, array, scope, macro, adressing, etc. mcf2graph convert from MCF to PNG, SVG, EPS, MOL file. It is also able to calculate molecular weight, exact mass, molecular formula. %----------------------------------------------------------------------------- \section{MCF syntax} \subsection{Make bond} \subsubsection{Chain} \begin{verbatim} real number plus (+): counterclockwize real number minus(-): clockwize $n (0<=n<360): absolute angle <10,-30,45,-45,60,$300,$0 \end{verbatim} %----------------------------------------- \begin{mplibcode} sw_frame:=Outside; blength:=0; beginfigm #(60mm,17mm); sw_numbering:=Bond; numbering_end:=6; ratio_chain_ring:=1; %---------------------------------------------------------------------- \(<15,-30,45,-45,60,$300,$0, {1^$15'2^$345'3^$30'4^$345}:/_~dt,5'6=vf ) ++( defaultscale:=0.5; labeloffset:=2bp; drawarrow B7/*.7{B7right}..{B1right}B1/*.7; label.ulft("-30",B7/*.7); drawarrow B8/*.7{B8left}..{B2left}B2/*.7; label.llft("45",B8/*.7); drawarrow B9/*.7{B9right}..{B3right}B3/*.7; label.ulft("-45",B9/*.7); drawarrow B10/*.7{B10left}..{B4left}B4/*.7; label.llft("60",B10/*.7); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Chain with !,!n} \index{"!}% \begin{verbatim} ! : take value 60 or -60 depend on current angle and environment !6 : !,!,!,!,!,! <-30,!6 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,17mm); sw_numbering:=Bond; numbering_end:=6; ratio_chain_ring:=1; %---------------------------------------------------------------------- \(<-30,!6, {1^-120'2^60'3^-60'4^60'5^-60'6^60}:/_~dt ) ++( defaultscale:=0.5; labeloffset:=2bp; drawarrow B7/*.7{B7right}..{B1right}B1/*.7; label.ulft("-60",B7/*.7); drawarrow B8/*.7{B8left}..{B2left}B2/*.7; label.llft("60",B8/*.7); drawarrow B9/*.7{B7right}..{B3right}B3/*.7; label.ulft("-60",B9/*.7); drawarrow B10/*.7{B10left}..{B4left}B4/*.7; label.llft("60",B10/*.7); drawarrow B11/*.7{B11right}..{B5right}B5/*.7; label.ulft("-60",B11/*.7); drawarrow B12/*.7{B12left}..{B6left}B6/*.7; label.llft("60",B12/*.7); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Jump to atom} \index{"@}% \begin{verbatim} @n : Jump to An ** An: atom number(-999<=n<=4095) <-30,!6,@3,0,!,@5,-30 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,16mm) #@(2mm,2mm) sw_trimming:=1; sw_numbering:=Atom; ratio_chain_ring:=1; \(<-30,!6,@3,0,!,@5,-30) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Branch bond} \index{\textbackslash}% \begin{verbatim} \ : 0 <-30,!6,@3,\,! \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,16mm) #@(2mm,2mm) sw_numbering:=Atom; sw_trimming:=1; ratio_chain_ring:=1; \(<-30,!6,@3,\,!) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Branch modified bond} \index{*\textbackslash}% \index{\textbackslash*}% \index{\textbackslash\textbackslash}% \index{*\textbackslash*}% \begin{verbatim} \ : 0 *\ : 0~wf \* : 0~zf \\ : 0~dm *\* : 0~wv <30,!8, @2,\,!,@4,*\,!,@6,\*,!,@8,\\,!,@10,*\*,! \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,16mm) #@(2mm,2mm) sw_numbering:=Atom; sw_trimming:=1; numbering_end:=10; ratio_chain_ring:=1; \(<30,!10,@2,\,!,@4,*\,!,@6,\*,!,@8,\\,!,@10,*\*,!) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \index{\textasciicircum}% ^ \index{\textasciitilde}% ~ \index{`}% \begin{verbatim} <30,!6, \~dr,!, : 0~dr,! \`1.5,-90 : 0`1.5,-90 \^15,-60 : 0^15,-60 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,20mm) #@(2mm,2mm) sw_trimming:=1; sw_numbering:=Atom; numbering_end:=7; ratio_chain_ring:=1; %------------------------- \(<30,!6,@2,\~dr,!,@4,\`1.5,-90,@6,15,-60) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Connect atom} \index{\&}% \begin{verbatim} &n : Connect to An <-30,!6,@3,\,!3,&6~bd,@9,&4~bz \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,20mm) #@(2mm,2mm) sw_trimming:=1; sw_numbering:=Atom; ratio_chain_ring:=1; %---------------------------------- \(<-30,!6,@3,\,!3,&6~bd,@9,&4~bz) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Ring} \index{?}% \begin{verbatim} ?n : n membered ring(3<=n<=20) ?6 : <-120,60,60,60,60,60,&1 ?6 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,20mm) #@(2mm,3mm) sw_trimming:=1; sw_numbering:=Bond; %--------------------------- \(?6) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Rotate current angle} \index{\textgreater}% \begin{verbatim} : change environment <-30,``1,!, /_`2^30,!2,/!2>lr,!2,/!2>rl,!) \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,16mm); sw_trimming:=1; \(<-30,#1,!2,/_`2^30,!2,/!2>lr,!2,/!2>rl,!) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Add group} \begin{verbatim} <30,!17,2:/_,3:/!,4:/!2,7:/iPr, 8:/tBu,10:/''(Ph`0.6)^-15, 11'12'*13:*/_,15'16'*17:/*_ \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(75mm,25mm) #@(2mm,2mm) sw_numbering:=Atom; numbering_end:=17; \(<30,!17,2:/_,3:/!,4:/!2,7:/iPr,8:/tBu,10:/''(Ph`0.6)^-15, 11'12'*13:*/_,15'16'*17:/*_) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Add modified group} \begin{verbatim} ~,^,` : change type,angle,length <30,!6,{2~wf'4~zf'6^-30'8^$120}:/_ \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,18mm) #@(2mm,2mm) sw_trimming:=1; sw_numbering:=Atom; numbering_end:=9; \(<30,!8`1,{2~wf'4~zf'6^-30'8^$120}:/_) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \begin{verbatim} ^,`,> : change angle,length,environment <-30,!7`1,3:/_`2^30,5:/!2>lr,7:/!2>rl \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,16mm); sw_trimming:=1; sw_numbering:=Atom; numbering_end:=8; \(<-30,!7`1,3:/_`2^30,5:/!2>lr,7:/!2>rl) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \newpage %----------------------------------------------------------------------------- \subsection{Chain environment} \subsubsection{Horizontal,vertical} \index{hz}% \index{vt}% \index{"'}% \begin{verbatim} >hz : horizontal environment (default) >vt : vertical environment ?4, {3^-90'3^-30'3^90}:/!3>hz, {1^-60'1'1^60}:/!3>vt \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(50mm,25mm); sw_trimming:=1; ratio_chain_ring:=1; \(?4,{3^-90'3^-30'3^90}:/!3>hz, {1^-60'1'1^60}:/!3>vt ) ++(defaultscale:=0.5; labeloffset:=2bp; label.rt(">hz",A8); label.top(">hz",A12); label.top(">hz",A16); label.rt(">vt",A20); label.top(">vt",A24); label.rt(">vt",A28); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Left-right,right-left} \index{lr}% \index{rl}% \begin{verbatim} >lr : left-right environment >rl : right-left environment <-30,!6, {3^-30'3'3^30}:/!3>lr, {5^-30'5'5^30}:/!3>rl \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm %%%%% EN:Left-right_right-left #(40mm,18mm); sw_trimming:=0; \(<-30,!6, {3^-30'3'3^30}:/!3>lr, {5^-30'5'5^30}:/!3>rl) ++(defaultscale:=0.5; labeloffset:=2bp; label.lft(">lr",A11); label.lft(">lr",A15); label.lft(">lr",A19); label.rt(">rl",A23); label.rt(">rl",A27); label.rt(">rl",A31); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Rotate fixed angle} \index{\textgreater}% \begin{verbatim} >n : rotate n <30,!4, 2:/!6>30, % 2:\,30,30,30,30,30,30 4:/!4>-45 % 4:\,-45,-45,-45,-45 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(40mm,20mm); sw_trimming:=1; \(<30,!4,2:/!6>30,4:/!4>-45) ++(defaultscale:=0.5; labeloffset:=2bp; label.bot(">30",A12); label.bot(">45",A17); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Rotate multiple angle} \begin{verbatim} >{90,-90,...} : rotate 90,-90,... <30,!6,6>{90'-90'90'-90'90}:/!5 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,20mm); \(<30,!6,6>{90'-90'90'-90'90}:/!5) ++(defaultscale:=0.5; labeloffset:=2bp; label.lft(">{90'-90'90'-90'90}",A13); label.rt(">90",A12); label.lft(">-90",A11); label.rt(">90",A10); label.lft(">-90",A9); label.rt(">90",A8); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \newpage \subsection{Miscellaneous} %----------------------------------------------------------------------------- \subsubsection{Abbreviated parts} \index{NH}% \index{N"!}% \index{N"!2}% \index{S?O}% \index{S?O?O}% \begin{verbatim} NH : N,/H~nl N? : N,/_ N?2 : N,/! S?O : S,//O S?O?O : S,//O^35,//^-35 <-30,!2,NH,!2,N?,!2,N?2,S?O,!2,S?O?O,! \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,10mm); sw_trimming:=1; \(<-30,!2`1.2,NH,!2`1.2,N?,!2`1.2,N?2,!2`1.2,S?O,!2`1.2,S?O?O,!`1.2) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \index{?"!}% \index{??}% \index{??"!}% \index{N?"!}% \begin{verbatim} ?? : /_^35,/_-35 /?! : isopropyl /??! : tert-butyl /N?! : dimethylamino <30,!11`1,2:??,4:/!,6:/?!,8:/??!,10:/N?! \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,10mm); sw_trimming:=1; \(<30,!11`1.2,2:??,4:/!,6:/?!,8:/??!,10:/N?!) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Define group,parts} \index{'}% \index{`}% \index{``}% \begin{verbatim} `(..) : define group ``(..)(..) : define group with atoms ''(..) : define parts CF3:=`("{CF3}"); % ** group weight =0 CF3:=``("{CF3}")(C,F,F,F); ** group weight =12(C)+19(F)*3=69 iBuOH:=''(!?!,OH); \(<30,?6,4'6:/iBuOH,3:/CF3) \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,10mm); sw_trimming:=1; iBuOH:=''(!?!,OH); CF3:=``("{CF3}")(C,F,F,F); \(<30,?6,4'6:/iBuOH,3:/CF3) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Concatenate group,parts} \index{'}% \begin{verbatim} a'b : {a,b} or ''(a,b) /!?!'OH : /''(!?!,OH) <30,!8,2'6:/!?!'OH \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm) #@(2mm,1mm) sw_trimming:=1; \(<30,!8,2'6:/!?!'OH) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Move position [ @{ }]} \index{@}% \begin{verbatim} @(x,y) : Move l*(x,y) from current position @$(x,y): Move l*(x,y) from origin(@1) ** l=bond length of ring <30,?6,@3,!4,//O,!,O,n_^60,@$(6,1),H,p_^15 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(70mm,13mm) #@(2mm,1mm) sw_trimming:=1; \(<30,?6,@3,\,!3,//O,!,O,n_^60,@$(6,1),H,p_^15) ++(drawdot A1 withpen pencircle scaled 3bp; drawdot A12 withpen pencircle scaled 3bp; pickup pencircle scaled 0.1bp; for i=0 upto 6: draw (A1+(l*i,l-4bp))--(l*i,l+4bp); endfor draw A1--(A1+(0,1l))--A1+(6l,1l); draw (A1+(-4bp,1l))--(A1+(4bp,1l)); draw (A1+(-4bp,0))--(A1+(4bp,0)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Serial number} \index{\-\-}% \begin{verbatim} 6:10 : 6,7,8,9,10 <30,!14,{2,6:10,14}:/_~bd_r`0.5 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(75mm,12mm) |<(8mm) sw_numbering:=Atom; numbering_end:=15; \(<30,!14,{2'6:10'14}:/_~bd_r`0.5) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Change color} \index{red}% \index{blue}% \index{green}% \begin{verbatim} beginfigm \(<30,Ph,2'5:N,3:/NH2,4:/COOH, 2:red, 5:blue, 3=green) endfigm \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(50mm,18mm) |<(8mm) \(<30,Ph,2'5:N,3:/NH2,4:/COOH, 2:red,5:blue,3=green) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Change font} \index{atomfont}% \begin{verbatim} beginfigm %---------------- atomfont:="cmr8"; %---------------- \(<30,Ph,2'5:N,3:/NH2,4:/COOH) endfigm \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(50mm,18mm) |<(8mm) atomfont:="cmr8"; \(<30,Ph,2'5:N,3:/NH2,4:/COOH) endfigm \end{mplibcode} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Option parameter} %------------------------------------------------------------------------------ \subsection{Angle parameter} \index{mangle}% \begin{verbatim} mangle=0 ** default @(0.2,0.5)\(Ph) mangle:=30; @(0.8,0.5)\(Ph) \end{verbatim} %----------------------------------------- %% mangle \begin{mplibcode} beginfigm #(50mm,15mm) |=(6mm) mangle:=0; @(0.2,0.5)\(Ph) ++(drawarrow((A1 shifted (aw,0)) rotated A1ang..A1);) mangle:=30; @(0.8,0.5)\(Ph) ++(drawarrow((A1 shifted (aw,0)) rotated A1ang..A1);) endfigm \end{mplibcode} %------------------------------------------------------------------------------ \subsection{Size/Ratio parameter} %----------------------------------------------------------------------------- \subsubsection{Bond length [ \textbar={ }]} \index{blength}% \index{\textbar=()}% \begin{verbatim} |=(n) : abbreviated form of blength:=n; (fit to figure size) blength=0 ** default \end{verbatim} %----------------------------------------- \begin{mplibcode} %%% blength=0 beginfigm sw_frame:=Bothside; #(40mm,15mm); \(<30,Ph) **(pickup pencircle scaled 0.2pt; for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor ) endfigm \end{mplibcode} %----------------------------------------- \begin{verbatim} (ratio bond/figure width) blength=0.1 ** (01) ignore msize(w,h) \end{verbatim} %--------------------------------------------- \begin{mplibcode} %%%% blength>1 beginfigm sw_frame:=Bothside; #(40mm,15mm) |=(8mm) \(<30,Ph) **(pickup pencircle scaled 0.2pt; for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor ) endfigm \end{mplibcode} %------------------------------------------------------------------------------ \subsubsection{Molecular size} \index{msize}% \index{\#\#}% \begin{verbatim} ##(1,1) : msize=(1,1) ** default ## p : abbreviated form of msize:=p; \end{verbatim} %--------------------------------------------- %% msize=(1) \begin{mplibcode} beginfigm sw_frame:=Bothside+Mol; #(40mm,15mm) ##(1,1) \(<30,Ph) **(pickup pencircle scaled 0.2pt; for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor ) endfigm \end{mplibcode} %----------------------------------------------------------- \begin{verbatim} ##(0.25,1) : msize=(0.25,1) ** msize=(40mm-4mm)*0.25=9mm \end{verbatim} %--------------------------------------------- %% msize=(0.25,1) \begin{mplibcode} beginfigm sw_frame:=Bothside+Mol; #(40mm,15mm) ##(0.25,1) \(<30,Ph) **(pickup pencircle scaled 0.2pt; for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor ) endfigm \end{mplibcode} %----------------------------------------------------------- \begin{verbatim} ##(11mm,11mm) : msize=(11mm,11mm) \end{verbatim} %--------------------------------------------- %% msize=(11mm,11mm) \begin{mplibcode} beginfigm sw_frame:=Bothside+Mol; #(40mm,15mm) ##(11mm,11mm) \(<30,Ph) **(pickup pencircle scaled 0.2pt; for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor ) endfigm \end{mplibcode} %------------------------------------------------------------------------------ \subsubsection{Molecular position} \index{mposition}% \begin{verbatim} @(0.5,0.5) : mposition=(0.5,0.5) **default \end{verbatim} %--------------------------------------------- %% mposition \begin{mplibcode} beginfigm sw_frame:=Bothside+Mol; #(40mm,15mm) ##(1,0.8) @(0.5,0.5); \(<30,Ph) endfigm \end{mplibcode} %-------------------------------------------------------------- \begin{verbatim} @(1,0) : mposition=(1,0) \end{verbatim} %--------------------------------------------- %% mposition \begin{mplibcode} beginfigm sw_frame:=Bothside+Mol; #(40mm,15mm) ##(1,0.8) @(1,0); \(<30,Ph) endfigm \end{mplibcode} %-------------------------------------------------------------- \begin{verbatim} @(10mm,4mm) : mposition=(10mm,4mm) \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm sw_frame:=sw_frame+Mol; #(40mm,15mm) ##(1,0.8) @(10mm,4mm) \(<30,Ph) **(drawdot p1 withpen pencircle scaled 3pt; pickup pencircle scaled 0.2pt; for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor ) endfigm \end{mplibcode} %------------------------------------------------------------------------------ \subsection{Size parameter} %----------------------------------------------------------------------------- \subsubsection{Figure size [ \#{ }]} \index{fsize}% \index{\#()}% \begin{verbatim} fsize=(figure width,figure height) ** default: (30mm,20mm) # p : abbreviated form of fsize:=p; #(40mm,15mm) : fsize=(40mm,15mm) \end{verbatim} %--------------------------------------------- %% Figure size \begin{mplibcode} beginfigm sw_frame:=Outside; #(40mm,12mm); \(<30,Ph) **(pickup pencircle scaled 0.2pt; for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Figure margin [ \#@{ }]} \index{fmargin}% \index{\#"@()}% \begin{verbatim} fmargin=(margin left rigth,top bottom) ** default: (0.4mm,0.4mm) #@ p : abbreviated form of fmargin:=p; #@(10mm,2mm) : fmargin=(10mm,2mm) \end{verbatim} %--------------------------------------------- %% fmargin \begin{mplibcode} beginfigm sw_frame:=Bothside+Mol; #(40mm,12mm) #@(10mm,2mm) \(<30,Ph) **(pickup pencircle scaled 0.2pt; for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor drawdot p0 withpen pencircle scaled 3pt; ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Offset thickness of bond} \index{offset\_thickness}% \begin{verbatim} default: offset_thickness=0.2pt \end{verbatim} %--------------------------------------------- %%offset_thickness \begin{mplibcode} beginfigm #(60mm,12mm); offset_thickness:=0.0pt; @(0.1,0.5)\(<30,Ph) offset_thickness:=0.2pt; @(0.55,0.5)\(<30,Ph) offset_thickness:=0.5pt; @(1,0.5)\(<30,Ph) **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.0pt",(0,1bp)); label.urt("0.2pt",(0.36w,1bp)); label.urt("0.5pt",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Offset of double bond gap} \index{offset\_bond\_gap}% \begin{verbatim} default: offset_bond_gap=0.3pt \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm); offset_bond_gap:=0.0pt; @(0.1, 0.5)\(<30,Ph) offset_bond_gap:=0.3pt; @(0.55,0.5)\(<30,Ph) %<<== default offset_bond_gap:=1.0pt; @(1, 0.5)\(<30,Ph) **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.0pt",(0,1bp)); label.urt("0.3pt",(0.36w,1bp)); label.urt("1.0pt",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Offset of atom width} \index{offset\_atom}% \begin{verbatim} default: offset_atom=0.8pt \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm); offset_atom:=0.0pt; @(0.1, .5)\(<30,?6,3:O) offset_atom:=0.8pt; @(.55, .5)\(<30,?6,3:O) %<<== default offset_atom:=2.0pt; @(1, .5)\(<30,?6,3:O) **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.0pt",(0,1bp)); label.urt("0.8pt",(0.36w,1bp)); label.urt("2.0pt",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Offset of wedge width} \index{offset\_wedge}% \begin{verbatim} default: offset_wedge=0.4pt \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm); offset_wedge:=0.0pt; @(0.1,0.5)\(<30,?6,5:*/_) offset_wedge:=0.4pt; @(0.55,0.5)\(<30,?6,5:*/_) %<<== default offset_wedge:=1.0pt; @(1, 0.5)\(<30,?6,5:*/_) **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.0pt",(0,1bp)); label.urt("0.4pt",(0.36w,1bp)); label.urt("1.0pt",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Max bond length [ \textbar\textless{ }]} \index{max\_blength}% \index{\textbar\textless()}% \begin{verbatim} |<(n): abbreviated form of max_blength:=n; default: max_blength=10mm \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm) sw_frame:=sw_frame+Mol; |<(5mm) @(0, .5)\(<45,?4) |<(8mm) @(.4,.5)\(<45,?4) |<(10mm) @(1, .5)\(<45,?4) %<<== default **(defaultscale:=0.6; labeloffset:=1bp; label("5mm", (0.075w,0.5h)); label("8mm", (0.42w,0.5h)); label("10mm",(0.88w,0.5h)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{Ratio parameter} %----------------------------------------------------------------------------- \subsubsection{Thickness/bond length} \index{ratio\_thickness\_bond}% \begin{verbatim} default: ratio_thickness_bond=0.015 \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm); ratio_thickness_bond:=0.005; @(0.1,0.5)\(<30,Ph) ratio_thickness_bond:=0.015; @(.55,0.5)\(<30,Ph) %<<== default ratio_thickness_bond:=0.03; @(1, 0.5)\(<30,Ph) **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.005",(0,1bp)); label.urt("0.015",(0.36w,1bp)); label.urt("0.030",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Char/bond thickness} \index{ratio\_char\_bond}% \begin{verbatim} default: ratio_char_bond=1.5 \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm) ratio_char_bond:=1.0; @(0, 0.5)\(<30,?6,6:O,3:NH) ratio_char_bond:=1.5; @(.5,0.5)\(<30,?6,6:O,3:NH) %<<== default ratio_char_bond:=2.0; @( 1,0.5)\(<30,?6,6:O,3:NH) **(defaultscale:=0.6; labeloffset:=1bp; label.urt("1.0",(0,1bp)); label.urt("1.5",(0.36w,1bp)); label.urt("2.0",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Bond gap/bond length} \index{ratio\_bondgap\_bond}% \begin{verbatim} default: ratio_bondgap_bond= 0.15 \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm); ratio_bondgap_bond:=0.10; @(0.1,0.5)\(<30,Ph) ratio_bondgap_bond:=0.15; @(.55,0.5)\(<30,Ph) %<<== default ratio_bondgap_bond:=0.20; @(1 ,0.5)\(<30,Ph) **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.10",(0,1bp)); label.urt("0.15",(0.36w,1bp)); label.urt("0.20",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Atom/bond length} \index{ratio\_atom\_bond}% \begin{verbatim} default: ratio_atom_bond= 0.36 \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm); ratio_atom_bond:=0.25; @(0.1,0.5)\(<30,?6,3:O) ratio_atom_bond:=0.33; @(.55,0.5)\(<30,?6,3:O) %<<== default ratio_atom_bond:=0.45; @(1, 0.5)\(<30,?6,3:O) **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.25",(0,1bp)); label.urt("0.33",(0.36w,1bp)); label.urt("0.45",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Wedge/bond length} \index{ratio\_wedge\_bond}% \begin{verbatim} default: ratio_wedge_bond=0.12 \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(70mm,12mm); ratio_wedge_bond:=0.1; @(0.05,.5)\(?6,4:*/_) ratio_wedge_bond:=0.12; @(.55, .5)\(?6,4:*/_) %<<== default ratio_wedge_bond:=0.2; @(1 , .5)\(?6,4:*/_) **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.10",(0,1bp)); label.urt("0.12",(0.36w,1bp)); label.urt("0.20",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Figure atom gap/atom length} \index{ratio\_atomgap\_atom}% \index{readm}% \begin{verbatim} default: ratio_atomgap_atom= 0.050 \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm '`("<30,!2`0.5,2:O") #(70mm,12mm) sw_frame:=sw_frame+Atom; ratio_atomgap_atom:=0.00; @(0, .5)\(scantokens(mc)) ratio_atomgap_atom:=0.050; @(.5,.5)\(scantokens(mc)) %<<== default ratio_atomgap_atom:=0.12; @(1, .5)\(scantokens(mc)) **(defaultscale:=0.75; labeloffset:=1bp; label.urt("0.00",(0.05w,1bp)); label.urt("0.05",(0.45w,1bp)); label.urt("0.12",(0.85w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Chain/ring length} \index{ratio\_chain\_ring}% \begin{verbatim} default: ratio_chain_ring= 0.66 \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(70mm,12mm); ratio_chain_ring:= 0.4; @(0.05,.5)\(<30,?6,4:/!) ratio_chain_ring:= 0.66; @(.45, .5)\(<30,?6,4:/!) %<<== default ratio_chain_ring:= 1; @(1, .5)\(<30,?6,4:/!) **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.40",(0,1bp)); label.urt("0.66",(0.3w,1bp)); label.urt("1.0" ,(0.62w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Hash gap/bond length} \index{ratio\_hashgap\_bond}% \begin{verbatim} default: ratio_hashgap_bond=0.12 \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm '`("<30,!2,2:/*_`1.5") #(70mm,15mm) ratio_hashgap_bond:=0.06; @(0.08,.5)\(scantokens(mc)) ratio_hashgap_bond:=0.12; @( .55,.5)\(scantokens(mc)) %<<== default ratio_hashgap_bond:=0.20; @(1, .5)\(scantokens(mc)) **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.06",(0,1bp)); label.urt("0.12",(0.4w,1bp)); label.urt("0.20",(0.77w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- %%%%\newpage %----------------------------------------------------------------------------- \subsection{Drawing mode} %----------------------------------------------------------------------------- \subsubsection{Numbering atom} \index{sw\_numbering}% \index{Atom}% \index{numbering\_start}% \index{numbering\_end}% \begin{verbatim} sw_numbering=Atom numbering_start:=3; numbering_end:=8; default: sw_numbering=0 sw_numbering:=Atom; \(<-30,!9) \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(60mm,10mm); ratio_chain_ring:=1; numbering_start:=3; numbering_end:=8; sw_numbering:=Atom; \(<-30,!9) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Numbering bond} \index{numbering\_start}% \index{numbering\_end}% \index{Bond}% \begin{verbatim} sw_numbering=Bond numbering_start:=3; numbering_end:=8; default: sw_numbering=0 sw_numbering:=Bond; \(<-30,!9) \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(60mm,10mm); ratio_chain_ring:=1; numbering_start:=3; numbering_end:=8; sw_numbering:=Bond; \(<-30,!9) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Trimming mode} \index{sw\_trimming}% \begin{verbatim} sw_trimming:=0; ** default ##(1,0.7) @(0.2,0.3)\(Ph) @(0.8,0.7)\(Ph) \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(60mm,20mm) ##(1,.7) sw_frame:=Bothside+Mol; @(.2,.3)\(Ph) @(.8,.7)\(Ph) endfigm \end{mplibcode} %------------------------------------------------------ \begin{verbatim} sw_trimming:=1; @(0.2,0.3)\(Ph) @(0.8,0.7)\(Ph) \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(60mm,20mm) ##(1,.7) sw_frame:=Bothside+Mol; sw_trimming:=1; @(.2,.3)\(Ph) @(.8,.7)\(Ph) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Expand mode} \index{sw\_expand}% \begin{verbatim} ** put before input mcf2graph sw_expand:=1; input mcf2graph.mp; (sw_expand=0) ** default @(0, .5)\(<30,Ph,4:/COOH,3:/NH2) (sw_expand=1) @(1, .5)\(<30,Ph,4:/COOH,3:/NH2) \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(60mm,15mm) @(0, .5)\(<30,Ph,1:/COOH,3:/NH2) sw_expand:=1; @(1, .5)\(<30,Ph,1:/''(//O^-60,/OH^60),3:/''(N,/H^60,/H^-60)) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Abbreviate group} \index{Group}% \index{sw\_abbreviate}% \begin{verbatim} ** default: sw_abbreviate=Group \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm '`("<30,Ph,4:/Cl,3:/F") #(60mm,12mm) @(.15, .5)\(scantokens(mc)) sw_abbreviate:=Group; @(.85, .5)\(scantokens(mc)) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Abbreviate bond type} \index{Bond}% \index{sw\_abbreviate}% \begin{verbatim} ** default: sw_abbreviate=Bond \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm '`("<30,Ph,4:/Cl,3:/F") #(60mm,12mm) @(.15, .5)\(scantokens(mc)) sw_abbreviate:=Bond; @(.85, .5)\(scantokens(mc)) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{Frame} %----------------------------------------------------------------------------- \subsubsection{Figure frame} \index{sw\_frame}% \index{Bothside}% \index{Inside}% \index{Outside}% \begin{verbatim} ** default:sw_frame=0 (Draw figure frame) fmargin:=(5mm,2mm); sw_frame=Outside \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(30mm,10mm) #@(5mm,1.5mm) sw_frame:=Outside; \(<30,Ph) endfigm \end{mplibcode} %------------------------------------------------------ \begin{verbatim} (Frame inside margin) sw_frame=Inside \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(30mm,10mm) #@(5mm,1.5mm) sw_frame:=Inside; \(<30,Ph) endfigm \end{mplibcode} %------------------------------------------------------ \begin{verbatim} (Draw both frame) sw_frame=Bothside=Inside+Outside \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(30mm,10mm) #@(5mm,1.5mm) sw_frame:=Bothside; \(<30,Ph) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Molecular frame} \index{Mol}% \begin{verbatim} sw_frame=Mol ** default:sw_frame=0 \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm sw_frame:=Outside; #(40mm,11mm) ##(1,1) sw_frame:=sw_frame+Mol; \(<30,Ph) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Atom frame} \index{Atom}% \begin{verbatim} sw_frame=Atom ** default: sw_frame=0 \(<30,COOH,!,COOH) \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,10mm); sw_frame:=sw_frame+Atom; \(<30,COOH,!,COOH) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{Parameter setting} \subsubsection{Local parameter setting} \index{beginfigm}% \index{endfigm}% \begin{verbatim} beginfigm \(Ph) endfigm beginfigm %-------------------------- ratio_thickness_bond:=0.05; %-------------------------- \(Ph) endfigm beginfigm \(Ph) endfigm \end{verbatim} %------------------------------------------------------ \quad \begin{mplibcode} fsize:=(15mm,12mm); beginfigm \(Ph) endfigm beginfigm ratio_thickness_bond:=0.05; \(Ph) endfigm beginfigm \(Ph) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Global parameter setting} \begin{verbatim} beginfigm \(Ph) endfigm %-------------------------- ratio_thickness_bond:=0.05; %-------------------------- beginfigm \(Ph) endfigm beginfigm \(Ph) endfigm \end{verbatim} %---------------------------------------------------- \quad \begin{mplibcode} save_ratio:=ratio_thickness_bond; fsize:=(15mm,12mm); beginfigm \(Ph) endfigm ratio_thickness_bond:=0.05; beginfigm \(Ph) endfigm beginfigm \(Ph) endfigm ratio_thickness_bond:=save_ratio; \end{mplibcode} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Command} %----------------------------------------------------------------------------- \subsection{drawm [ \textbackslash{ }]} \index{drawm}% \index{\textbackslash}% \begin{verbatim} (Draw molecule) msize=(a,b) **default (1,1) mposition=(c,d) **default (0.5,0.5) a: ratio molecular width/figure width b: ratio molecular hight/figure hight c: x axis position d: y axis position \(): abbreviated form of drawm() drawm(<30,Ph,3:/F,4:/Cl) \(<30,Ph,3:/F,4:/Cl) \end{verbatim} %------------------------------------------------ \begin{mplibcode} beginfigm #(40mm,15mm) #@(0.5mm,0.5mm) sw_frame:=Outside+Mol; \(<30,Ph,4:/Cl,3:/F) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{readm [ ' ` ]} \index{readm()}% \index{'`}% \begin{verbatim} readm(string1,string2, ...); ** string = mcf code '`(): abbreviated form of readm() (example) '`("<30,Ph,1'2'6:/O!,-4'-5=?7, ", " -1'-4'-6=dl,-2://O,-3:/O!, ", " @9,\,NH,!,//O,! ") \end{verbatim} %----------------------------------------------------------------------------- \subsection{checkm [ \textbackslash*{ }]} \index{checkm()}% \index{\textbackslash*()}% \begin{verbatim} \*(): abbreviated form of checkm() (immediately compile) beginfigm \(<30,Ph,2:N) endfigm (check mcf and compile) beginfigm '`("<30,Ph,2:") % ** '2:' missing arg if \*(mc)=0: \(scantokens(mc)) fi endfigm ** \*(mc) : error count \end{verbatim} %----------------------------------------------------- \quad \begin{mplibcode} beginfigm '`("<30,Ph,2:N") sw_trimming:=0; #(12mm,12mm); if \*(mc)=0: \(scantokens(mc)) fi endfigm beginfigm '`("<30,Ph,2:") sw_trimming:=0; #(12mm,12mm); if \*(mc)=0: \(scantokens(mc)) fi endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{getm [ \$ ]} \index{getm}% \index{ucount}% \index{\$}% \begin{verbatim} getm(number) ** number = numeric ** ucount = molecular data unit count $() : abbreviated form of getm() for i=1 upto ucount: beginfigm $(i) % get data unit no=i \\ % put figure endfigm endfor getm("name"): "name"=string beginfigm $("Adenine") % get data EN="Adenine" \\ % put figure endfigm \end{verbatim} %------------------------------------------------------------------------------- \subsection{putm [ \textbackslash\textbackslash{ }]} \index{putm}% \index{\textbackslash\textbackslash}% \begin{verbatim} putm: put figure \\ : abbreviated form of putm if op_row>=1: scantokens(op) fi if mc_row>=1: if checkm(mc)=0: drawm(scantokens(mc)) fi fi if ad_row>=1: add(scantokens(ad)) fi if ex_row>=1: ext(scantokens(ex)) fi \end{verbatim} %=============================================================================== \newpage \subsection{add [ ++ ]} \index{add}% \index{++}% \index{plus}% \index{minus}% \index{lonepair}% \index{lonepairdiam}% \index{lonepairspace}% \index{circlediam}% \index{circlepen}% \index{w}% \index{h}% \index{aw}% \index{em}% \index{p0}% \index{l}% \index{/*}% \index{**}% \index{\textgreater\textgreater}% \index{An}% \index{A[]}% \index{A[]ang}% \index{A[]up}% \index{A[]left}% \index{A[]right}% \index{A[]down}% \index{Bn}% \index{B[]}% \index{B[]s}% \index{B[]m}% \index{B[]e}% \index{B[]ang}% \index{B[]up}% \index{B[]left}% \index{B[]right}% \index{B[]down}% \index{defaultscale}% \index{labeloffset}% \begin{verbatim} (Add label to molecule) ++(): add() w: molecular width h: molecular height aw: atom font size em: label font size p0: origin of molecular structure l: bond length An: atom number A[m]: atom position A[m]ang: branch angle of A[m] A[m]up: dir A[m]ang A[m]left: dir A[m]ang+90 A[m]right: dir A[m]ang-90 A[m]down: dir A[m]ang+180 Bn: bond number B[m]: bond(path) B[m]s: bond start position B[m]m: bond middle position B[m]e: bond end position B[m]ang: bond angle B[m]up: dir B[m]ang B[m]left: dir B[m]ang+90 B[m]right: dir B[m]ang-90 B[m]down: dir B[m]ang+180 plus : '+' circled minus : '-' circled circlediam = 0.6aw (default) circlepen = 0.2bp (default) lonepair r: ':' rotated r lonepairdiam = 0.3aw (default) lonepairspace = 0.7aw (default) # : scaled << : rotated a /* b : point b of a beginfigm #(70mm,40mm) ##(.91,.9) |<(10mm) sw_frame:=sw_frame+Atom+Mol; @(.5,.85)\(<30,?6,{2,5}:O) ++( defaultscale:=.8; labeloffset:=.3aw; dotlabel.lft("p0",p0); dotlabel.rt( "p0+(w,h)",p0+(w,h)); dotlabel.ulft("A1",A1); drawarrow A1..A1+__*l<*"); beginfigm #(50mm,15mm) \(<30,Ph,3=?5,@8,\,?5,9'16=dl,9'14:N,7'11:S,1:/OH,-2:*/COOH) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{readm example} %----------------------------------------------------------------------------- \paragraph{(Colchicine)} \begin{verbatim} beginfigm '`( "<30,Ph,1'2'6:/O!,-4'-5=?7, ", " -1'-4'-6=dl,-2://O,-3:/O!, ", " 9:/NH!'?O! ") #(40mm,20mm) \\ endfigm \end{verbatim} %--------------------------------------- % Colchicine MW:385.41 \begin{mplibcode} beginfigm '`( "<30,Ph,1'2'6:/O!,-4'-5=?7, ", " -1'-4'-6=dl,-2://O,-3:/O!, ", " 9:/NH!'?O! ") #(40mm,20mm) \\ endfigm \end{mplibcode} %----------------------------------------------------------------------------- \paragraph{(Maltose)} \index{arc\_lb} \index{arc\_br} \begin{verbatim} (bond type for glycan) arc_lb : arc left > bottom arc_br : arc bottom right beginfigm %"EN:Maltose","MW:342.3", '`( %---------------------------------------------------- "#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##, ", "#.5,{1^$-90'2^$90'3^$-90}:/OH,6^$90:/!OH, ", "@4,$-50~arc_lb`1,O,$50~arc_br`1,<$0, ", "|,#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##, ", "#.5,{2^$90'3^$-90'4^$-90}:/OH,6^$90:/!OH ") %---------------------------------------------------- #(50mm,20mm) \\ endfigm \end{verbatim} %------------------------------------------------- \begin{mplibcode} beginfigm %"EN:Maltose","MW:342.3", '`( %------------------------------------------------------- "#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##, ", "#.5,{1^$-90'2^$90'3^$-90}:/OH,6^$90:/!OH, ", "@4,$-50~arc_lb`1,O,$50~arc_br`1,<$0, ", "|,#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##, ", "#.5,{2^$90'3^$-90'4^$-90}:/OH,6^$90:/!OH ") %------------------------------------------------------- #(50mm,20mm) \\ endfigm \end{mplibcode} %----------------------------------------------------------------------------- \newpage \paragraph{(Erythromycin)} \begin{verbatim} beginfigm _"Erythromycin" MW:="733.93"; #(60mm,30mm) @(1,0.5) '`( %----------------------------------------------------------------------- "<30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1, ", " 14:O,13:/*Et,1'9://O, ", " {*2'4'6^-35'8'*10'12^35}:/*_, ", " {6^35'11'12^-35}:*/OH, ", " @$3,\*,O,30~zb,|,?6`.7,6:O,#.5,{5~wf'3^35}:/_,4:/*OH,3^-35:/*O!,##, ", " @$5,\*^30`1.7,O,!~zb,|,?6`.7,6:O,#.5,5:/*_,2:*/OH,3:/*N?! ") %----------------------------------------------------------------------- \\ **(defaultscale:=0.8; label.lrt("EN: "&EN,(0,h)); label.lrt("fm: "&fm,(0,h-5mm)); label.lrt("mw: "&mw,(0,h-9mm)); label.lrt("MW: "&MW,(0,h-13mm)); ) endfigm; \end{verbatim} %---------------------------------------------------------------------------- %%%% EN:Erythromycin MW:733.93 \begin{mplibcode} beginfigm _"Erythromycin" MW:="733.93"; #(60mm,30mm) @(1,0.5) '`( %----------------------------------------------------------------------- "<30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1, ", " 14:O,13:/*Et,1'9://O, ", " {*2'4'6^-35'8'*10'12^35}:/*_, ", " {6^35'11'12^-35}:*/OH, ", " @$3,\*,O,30~zb,|,?6`.7,6:O,#.5,{5~wf'3^35}:/_,4:/*OH,3^-35:/*O!,##, ", " @$5,\*^30`1.7,O,!~zb,|,?6`.7,6:O,#.5,5:/*_,2:*/OH,3:/*N?! ") %----------------------------------------------------------------------- \\ **(defaultscale:=0.8; label.lrt("EN: "&EN,(0,h)); label.lrt("fm: "&fm,(0,h-5mm)); label.lrt("mw: "&mw,(0,h-9mm)); label.lrt("MW: "&MW,(0,h-13mm));) endfigm; \end{mplibcode} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \paragraph{(Paclitaxel)} \noindent% \begin{verbatim} beginfigm % "EN:Paclitaxel","MW:853.918", '`( %------------------------------------------------------------------ "?6,5=dl,@3,#1,36,45,45,45,45,##,&5,-4=?6,-4=?4,-1=wb,-3=wf,-1:O, ", " 4:??,6:/_,{3^-60'15}:*/OH,8:/*H^-60,9:*/_^60,10://O, ", " @1,\,O,!,//O,!,*/OH,!,/Ph,60~wf,NH,-60,//O,60,Ph, ", " @7,\*,O,-45,//O,60,Ph,{11>rl'*12^-15>lr}:*/O!'?O! ") %------------------------------------------------------------------ #(140mm,30mm) if \*(mc)=0: @(0,0.5)\(scantokens(mc)) sw_numbering:=Atom; @(0.6,0.5)\(scantokens(mc)) sw_numbering:=Bond; @(1,0.5)\(scantokens(mc)) fi endfigm \end{verbatim} %---------------------------------------------------------------------------- \begin{mplibcode} beginfigm % "EN:Paclitaxel","MW:853.918", '`( %------------------------------------------------------------------- "?6,5=dl,@3,#1,36,45,45,45,45,##,&5,-4=?6,-4=?4,-1=wb,-3=wf,-1:O, ", " 4:??,6:/_,{3^-60'15}:*/OH,8:/*H^-60,9:*/_^60,10://O, ", " @1,\,O,!,//O,!,*/OH,!,/Ph,60~wf,NH,-60,//O,60,Ph, ", " @7,\*,O,-45,//O,60,Ph,{11>rl'*12^-15>lr}:*/O!'?O! ") %------------------------------------------------------------------- #(160mm,40mm) if \*(mc)=0: @(0, 0.5)\(scantokens(mc)) sw_numbering:=Atom; @(0.5,0.5)\(scantokens(mc)) sw_numbering:=Bond; @(1, 0.5)\(scantokens(mc)) fi endfigm \end{mplibcode} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \noindent% \newpage \subsection{loadm example} \index{sw\_comment}% \index{loadm()}% \paragraph{(Example)} \begin{verbatim} loadm("CAT=biological","MW>=285","MW<=288","a:EN"); \end{verbatim} %--------------------------------------------------------------- \paragraph{(output)} \begin{verbatim} * jobname=mcf_exa_soc * numbersystem=double * output report file * file name=mcf_exa_soc-report.txt) * mcf_template 2023.05.07 * Input : main_lib.mcf [525] * Output : ucount [4] * Filter(1): CAT =biological * Filter(2): MW >= 285 * Filter(3): MW <= 288 * Sort key : EN (ascending) [1]:Luteolin [2]:Lycorine [3]:Morphine [4]:Piperine ) row[1][1]="CAT:biological;EN:Luteolin;MW:286.24;EXA:-" row[1][2]=":" row[1][3]="<30,Ph,3=?6,9=dl,10:O,7://O,@9,\,Ph,2'6'14'15:/OH" row[1][4]=";" row[2][1]="CAT:biological;EN:Lycorine;MW:287.315;EXA:1" row[2][2]=":" row[2][3]="<30,Ph,-4'-2=?6,6'(9--12)=?5,13=dl,8:N,15'17:O," row[2][4]="{*9^180'10^60}:*/H,13'*14:*/OH" row[2][5]=";" row[3][1]="CAT:biological;EN:Morphine;MW:285.343;EXA:1" row[3][2]=":" row[3][3]="<30,Ph,2'-4=?6,1---12=?5,-1:O,-1=zb," row[3][4]="@7,60~wf`0.75,70~si_`1.3,45,N!,&9~wb,15=dl,6:/OH,8^180:*/H,12:/*OH" row[3][5]=";" row[4][1]="CAT:biological;EN:Piperine;MW:285.343;EXA:1" row[4][2]=":" row[4][3]="<30,Ph,-1=?5,-1'-3:O,@4,\,!d,!,!d,!,//O,!,?6,-6:N" row[4][4]=";" \end{verbatim} %------------------------------------------------------------------------------ \paragraph{(sw\_comment)} \begin{verbatim} sw_comment=1: row[1][1]="%------------------------------------------------------------------" row[1][2]="CAT:biological;EN:Luteolin;MW:286.24;EXA:-" row[1][3]=":" row[1][4]="<30,Ph,3=?6,9=dl,10:O,7://O,@9,\,Ph,2'6'14'15:/OH" row[1][5]=";" ** default sw_comment=0 \end{verbatim} \paragraph{(Tag)} \begin{verbatim} J : jobname CAT : category EN : english name JN : japanese name FM : formula from data MW : molecular weight from data MI : monoisotopic mass from data USE : the use \end{verbatim} \newpage \noindent% %---------------------------------------------------------------------------- \newpage \subsection{getm example} \paragraph{(Chlorophyll a)} \noindent% \begin{verbatim} beginfigm $("Chlorophyll a") sw_output:=Fig+Calc+Mcode; #(80mm,30mm) \(scantokens(mc)) VerbatimTeX("\gdef\EN{"&EN&"}\gdef\MW{"&MW&"}"); VerbatimTeX("\gdef\mw{"&mw&"}\gdef\fm{"&fm&"}"); endfigm \end{mplibcode} \verbatiminput{temp-mc.aux} %%%% input temp-mc.aux %%%% {\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}% \end{verbatim} %------------------------------------------------------------------------------------ \begin{mplibcode} beginfigm $("Chlorophyll a") sw_output:=Fig+Calc+Mcode; #(80mm,30mm) \(scantokens(mc)) VerbatimTeX("\gdef\EN{"&EN&"}\gdef\MW{"&MW&"}"); VerbatimTeX("\gdef\mw{"&mw&"}\gdef\fm{"&fm&"}"); endfigm \end{mplibcode} \verbatiminput{temp-mc.aux} %%%% input temp-mc.aux %%%% {\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \paragraph{(Dinophysistoxin-1)} \noindent% \begin{verbatim} beginfigm $("Okadaic acid") '`(",38:*/_,65=red") %%%% add methyl group (color red) %%%% sw_output:=Fig+Calc+Mcode; %%%% output temp-mc.aux %%%% _"Dinophysistoxin-1" #(90mm,20mm) MW:="819"; if \*(mc)=0: \(scantokens(mc)) VerbatimTeX("\gdef\EN{"&EN&"}\gdef\MW{"&MW&"}"); VerbatimTeX("\gdef\mw{"&mw&"}\gdef\fm{"&fm&"}"); fi endfigm; \end{mplibcode} \verbatiminput{temp-mc.aux} %%%% input temp-mc.aux %%%% {\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}% \end{verbatim} %---------------------------------------------------------------------------- \begin{mplibcode} beginfigm $("Okadaic acid") '`(",38:*/_,65=red") %%%% add methyl group (color red) %%%% sw_output:=Fig+Calc+Mcode; %%%% output temp-mc.aux %%%% MW:="819"; _"Dinophysistoxin-1" #(90mm,20mm); if \*(mc)=0: \(scantokens(mc)) VerbatimTeX("\gdef\EN{"&EN&"}\gdef\MW{"&MW&"}"); VerbatimTeX("\gdef\mw{"&mw&"}\gdef\fm{"&fm&"}"); fi endfigm; \end{mplibcode} \verbatiminput{temp-mc.aux} %%%% input temp-mc.aux %%%% {\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newpage %---------------------------------------------------------------------------- \paragraph{(Maitotoxin)} \noindent% %-------------------------------------------------------------------------------- \begin{verbatim} %-------------------------------------------------------------------------------- \begin{mplibcode} beginfigm $("Maitotoxin") #(150mm,80mm) #@(3mm,3mm) sw_output:=Fig+Calc+Mcode; %%%% output temp-mc.aux %%%% sw_frame:=Outside; if \*(mc)=0: \(scantokens(mc)) VerbatimTeX("\gdef\EN{"&EN&"}\gdef\MW{"&MW&"}"); VerbatimTeX("\gdef\mw{"&mw&"}\gdef\fm{"&fm&"}"); fi endfigm \end{mplibcode} \verbatiminput{temp-mc.aux} %%%% input temp-mc.aux %%%% {\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}% %-------------------------------------------------------------------------------- \end{verbatim} %-------------------------------------------------------------------------------- \begin{mplibcode} beginfigm $("Maitotoxin") #(150mm,80mm) #@(3mm,3mm) sw_output:=Fig+Calc+Mcode; sw_frame:=Outside; %% mc_length:=40; if \*(mc)=0: \(scantokens(mc)) VerbatimTeX("\gdef\EN{"&EN&"}\gdef\MW{"&MW&"}"); VerbatimTeX("\gdef\mw{"&mw&"}\gdef\fm{"&fm&"}"); fi endfigm \end{mplibcode} \verbatiminput{temp-mc.aux} {\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}% %-------------------------------------------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newpage \subsection{User define parts example} \noindent% \begin{mplibcode} beginfigm #(160mm,75mm) |<(5mm) %-------------------------------------------------------------------------------- COOH:=''(//O,!,OH); HOCO:=''(OH,!,//O,); S_CoA:=`("{S-CoA}"); @(0.33, 1)\(<30,HOCO,!,//O,!2,COOH) % Oxaloacetate @(0.66, 1)\(<30,HOCO,!4,COOH,@-4`1,\,COOH,4:/OH^-165) % Citrate @(1, 1)\(<30,HOCO,!2,!~dr,!,COOH,@-4`1,\,COOH) % cis-Aconitate @(1, 0.58)\(<30,HOCO,!4,COOH,@-4,\`1,COOH,5:/OH) % Isocitrate @(1, 0.05)\(<30,HOCO,!3,//O,!,COOH,@-4,\`1,COOH) % Oxalosuccinate @(0.66,0.05)\(<30,HOCO,!3,//O,!,COOH) % alfa-Ketoglutarate @(0.33,0.05)\(<30,HOCO,!3,//O,!,S_CoA) % Succinyl-CoA @(0, 0.05)\(<30,HOCO,!3,COOH) % Succinate @(0, 0.55)\(<30,HOCO,!,!~dr,!,COOH) % Fumarate @(0, 1)\(<30,HOCO,!3,COOH,3:/OH) % L-Malate %-------------------------------------------------------------------------------- ext( defaultfont:="uhvr8r"; defaultscale:=0.75; ext_setup; def sel_dir(expr rot)= save tx; nA:=rot; if nA>=360: nA:=nA-360; fi if (nA<30)or(nA>330): def tx=top enddef; elseif (nA>=30)and(nA<=150): def tx=lft enddef; elseif (nA>150)and(nA<210): def tx=bot enddef; elseif (nA>=210)and(nA<=330): def tx=rt enddef; fi enddef; def reaction_arrow(expr a)(expr r)(expr p)(expr sa,la)(expr sb,lb)(expr sc,lc)(expr sd,ld)= drawarrow ((0,0)..(a,0)) rotated r shifted p; if sa<>"": draw ((0.5a,0){dir 180}..{dir 90}(0,.5a*la)) rotated r shifted p; sel_dir(r); label.tx(sa,p+((0,0.5a*la) rotated r)); fi if sb<>"": draw ((0.5a,0){dir 0}..{dir 90}(a,.5a*lb)) rotated r shifted p; sel_dir(r); label.tx(sb,p+((a,0.5a*lb) rotated r)); fi if sc<>"": draw ((0.5a,0){dir 180}..{dir -90}(0,-.5a*lc)) rotated r shifted p; sel_dir(r+180); label.tx(sc,p+((0,-0.5a*lc) rotated r)); fi if sd<>"": draw ((0.5a,0){dir 0}..{dir -90}(a,-.5a*ld)) rotated r shifted p; sel_dir(r+180); label.tx(sd,p+((a,-0.5a*ld) rotated r)); fi enddef; def r_arrow(expr a)(expr r)(expr p)(expr sc,lc)(expr sd,ld)= reaction_arrow(a)(r)(p)("",0)("",0)(sc,lc)(sd,ld) enddef; %------------------------------------------------------------------------ save dx; pair dx; dx:=(12mm,0); label.bot("Oxaloacetate",p1+dx); label.bot("Citrate",p2+dx); label.bot("cis-Aconitate",p3+dx); label.bot("Isocitrate",p4+dx); label.bot("Oxalosuccinate",p5+dx); label.bot("alfa-Ketoglutarate",p6+dx); label.bot("Succinyl-CoA",p7+dx); label.bot("Succinate",p8+dx); label.bot("Fumarate",p9+dx); label.bot("L-Malate",p10+dx); sw_label_emu:=1; ext_setup; r_arrow(10mm)( 0)(p1+ ( 1.1w1, 0.3h1))("Acetyl-CoA",1.5)(" CoA-SH",1); r_arrow(10mm)( 0)(p2+ ( 1.1w2, 0.4h2))("",0)("H2O",1); r_arrow( 8mm)(270)(p3+ ( 0.5w3,-0.4h3))("H2O",1)("",0); r_arrow( 8mm)(270)(p4+ ( 0.5w4,-0.4h4))("NAD+",1)("NADH2+",1); r_arrow(10mm)(180)(p5+ (-0.1w5, 0.4h5))("",0)("CO2",1); r_arrow(10mm)(180)(p6+ (-0.1w6, 0.5h6))("NAD+,CoA-SH",1.7)("NADH2+,CO2",1); r_arrow(10mm)(180)(p7+ (-0.1w7, 0.5h7))("GDP,Pi",1.7)("GTP,CoA-SH",1); r_arrow( 8mm)( 90)(p8+ ( 0.4w8, 1.2h8))("FAD",1)("FADH2",1); r_arrow( 8mm)( 90)(p9+ ( 0.4w9, 1.2h9))("H2O",1)("",0); r_arrow(10mm)( 0)(p10+( 1.1w10,0.3h10))("NAD+",1)("NADH2+",1.5); defaultscale:=1.5; label("TCA-cycle",(0.5w,0.5h)); ) endfigm \end{mplibcode} %------------------------------------------------------------------------ \begin{verbatim} beginfigm #(160mm,75mm) |<(5mm) COOH:=''(//O,!,OH); % define COOH HOCO:=''(OH,!,//O,); % define HOCO S_CoA:=`("{S-CoA}"); % define S_CoA @(0.33, 1)\(<30,HOCO,!,//O,!2,COOH) % Oxaloacetate @(0.66, 1)\(<30,HOCO,!4,COOH,@-4`1,\,COOH,4:/OH^-165) % Citrate @(1, 1)\(<30,HOCO,!2,!~dr,!,COOH,@-4`1,\,COOH) % cis-Aconitate @(1, 0.58)\(<30,HOCO,!4,COOH,@-4,\`1,COOH,5:/OH) % Isocitrate @(1, 0.05)\(<30,HOCO,!3,//O,!,COOH,@-4,\`1,COOH) % Oxalosuccinate @(0.66,0.05)\(<30,HOCO,!3,//O,!,COOH) % alfa-Ketoglutarate @(0.33,0.05)\(<30,HOCO,!3,//O,!,S_CoA) % Succinyl-CoA @(0, 0.05)\(<30,HOCO,!3,COOH) % Succinate @(0, 0.55)\(<30,HOCO,!,!~dr,!,COOH) % Fumarate @(0, 1)\(<30,HOCO,!3,COOH,3:/OH) % L-Malate ext( defaultfont:="uhvr8r"; defaultscale:=0.75; ext_setup; save dx; pair dx; dx:=(12mm,0); label.bot("Oxaloacetate",p1+dx); label.bot("Citrate",p2+dx); label.bot("cis-Aconitate",p3+dx); label.bot("Isocitrate",p4+dx); label.bot("Oxalosuccinate",p5+dx); label.bot("alfa-Ketoglutarate",p6+dx); label.bot("Succinyl-CoA",p7+dx); label.bot("Succinate",p8+dx); label.bot("Fumarate",p9+dx); label.bot("L-Malate",p10+dx); sw_label_emu:=1; ext_setup; r_arrow(10mm)( 0)(p1+ ( 1.1w1, 0.3h1))("Acetyl-CoA",1.5)(" CoA-SH",1); r_arrow(10mm)( 0)(p2+ ( 1.1w2, 0.4h2))("",0)("H2O",1); r_arrow( 8mm)(270)(p3+ ( 0.5w3,-0.4h3))("H2O",1)("",0); r_arrow( 8mm)(270)(p4+ ( 0.5w4,-0.4h4))("NAD+",1)("NADH2+",1); r_arrow(10mm)(180)(p5+ (-0.1w5, 0.4h5))("",0)("CO_2_",1); r_arrow(10mm)(180)(p6+ (-0.1w6, 0.5h6))("NAD+,CoA-SH",1.7)("NADH2+,CO2",1); r_arrow(10mm)(180)(p7+ (-0.1w7, 0.5h7))("GDP,Pi",1.7)("GTP,CoA-SH",1); r_arrow( 8mm)( 90)(p8+ ( 0.4w8, 1.2h8))("FAD",1)("FADH2",1); r_arrow( 8mm)( 90)(p9+ ( 0.4w9, 1.2h9))("H2O",1)("",0); r_arrow(10mm)( 0)(p10+( 1.1w10,0.3h10))("NAD+",1)("NADH2+",1.5); defaultscale:=1.5; label("TCA-cycle",(0.5w,0.5h)); ) endfigm \end{verbatim} %------------------------------------------------------------------------------ \section{Example to use mcf2graph} \subsection{MetaPost souce file} \index{mcf2graph.mp}% \index{sw\_output}% \index{\textbackslash()}% \index{plus}% \index{getm()}% \index{putm}% \index{ucount}% \begin{verbatim} %------------------------------------------------------------------------------ input mcf2graph; > input main macro %------------------------------------------------------------------------------ sw_output:=Info; % aux(information) file output on > global setting %%%% sw_output:=Report; > report output %%%% sw_output:=MOL2000; > MOL file output #(60mm,40mm); % (figure width,figure height) > outputformat:="png"; hppp:=vppp:=0.1; > PNG output outputtemplate:="c%3c-%{EN_}.png"; > %------------------------------------------------------------------------------ beginfigm % EN:Ampicillin MW:349.405 \(<45,?4,-3=?5,2:N,7:S, > immediately compile 3^45:/*H,1://O^15,5:/*COOH^-18,6:??, > @4,*\^15,NH,!,//O,!,/*NH2,!,Ph) > endfigm > %------------------------------------------------------------------------------ beginfigm % EN:Cholesterol MW:386.65 '`( > read Mcode "<30,?6,-4'-2=?6,-4=?5,7=dl, ", > mc1 "10:/*H^180,11:/*H^-60,17:/*H^-54, ", > mc2 "4'12:*/_^60, ", > mc3 "@-1,18,/*_,-60,!3,?! ") > mc4 \\ > put figure endfigm > %------------------------------------------------------------------------------ loadm("EN<>*); > load all unit beginfigm $("Adenine") > get EN=Adenine \\ > ** put figure endfigm > %------------------------------------------------------------------------------ beginfigm $(4) > select No.4 \\ > put figure endfigm > %------------------------------------------------------------------------------ for i=1 upto ucount: > figure count beginfigm $(i) > select No.i \\ > put figure endfigm endfor %------------------------------------------------------------------------------ bye \end{verbatim} %------------------------------------------------------------------------ \noindent% \newpage \subsection{Molecular library file} \begin{verbatim} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % molecular library file main_lib.mcf by Akira Yamaji 2022.10.10 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % tag1:var1;tag2:var2;tag3:var3 ..... % first character of line "%" comment out % first character of line ":" start MCF % first character of line ";" stop MCF % first character of line "=" start parameter setting % first character of line "*" start ext(...) % first character of line "+" start add(...) % CAT = Category,EN = Name,MW = Molecular weight %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CAT:-;EN:-;MW:0;EXA:- = sw_frame:=Atom; : <30,?6,3=?5,1'3'5'9=dl,2'6'9:N,5:/NH2,7:NH * defaultscale:=.5; label.bot(decimal(fig_num)&":"&EN,(.5w,0)); + defaultscale:=.3; label.bot("A2",A2) withcolor red; label.top("A6",A6) withcolor red; label.top("A9",A9) withcolor red; ; %============================================================================== CAT:biological;EN:Adenine;MW:135.13;EXA:1 : <30,?6,3=?5,1'3'5'9=dl,2'6'9:N,5:/NH2,7:NH ; %------------------------------------------------------------------------------ CAT:biological;EN:Guanine;MW:151.13;EXA:1 : <30,?6,3=?5,1'3'9=dl,2'9:N,6'7:NH,5://O,1:/NH2 ; %------------------------------------------------------------------------------ CAT:biological;EN:Cytosine;MW:111.10;EXA:1 : <30,?6,4'6=dl,4:N,3://O,2:NH,5:/NH2 ; %------------------------------------------------------------------------------ CAT:biological;EN:Thymine;MW:126.11;EXA:1 : <30,?6,3=dl,2'6:NH,1'5://O,4:/_ ; %------------------------------------------------------------------------------ CAT:biological;EN:Uracil;MW:112.09;EXA:1 : <30,?6,6=dl,3'5://O,2'4:NH ; %== Amino acid ================================================================ CAT:biological;EN:Glycine;MW:75.07;EXA:- : <30,NH2,!2,COOH ; %------------------------------------------------------------------------------ \end{verbatim} %------------------------------------------------------------------------ \noindent% \newpage \subsection{MCF aux file output} \paragraph{(Option parameter setting)} \index{Mcode}% \begin{verbatim} sw_output:=Mcode; %% output 'temp-mc.aux' \end{verbatim} \paragraph{(Command line)} \begin{verbatim} >mpost -s ahlength=3 FILENAME (sw_output=Info+Mcode) \end{verbatim} \paragraph{(Output mcf file)} \begin{verbatim} sw_output=Mcode %% file name = 'temp-mc.aux' (result) <30,?6,3=?5,1'3'5'9=dl,2'6'9:N,5:/NH2,7:NH \end{verbatim} \paragraph{(Output library file)} \begin{verbatim} sw_output=Info+Mcode %% file name = 'jobname-lib.aux' (result) CAT:biological;EN:Adenine;MW:135.13;EXA:1 : <30,?6,3=?5,1'3'5'9=dl,2'6'9:N,5:/NH2,7:NH ; \end{verbatim} %------------------------------------------------------------------------ \paragraph{(LuaLaTeX example)} %----------------------------------------------------------------------- \begin{verbatim} %----------------------------------------------------------------------- %% "EN:Vancomycin \begin{mplibcode} beginfigm sw_output:=Mcode; %%%% output temp-mc.aux %%%% endfigm; \end{mplibcode} %----------------------------------------------------------------------- \verbatiminput{temp-mc.aux} %----------------------------------------------------------------------- \end{verbatim} %----------------------------------------------------------------------- \begin{verbatim} (result) file name = 'temp-mc.aux' <30,?6,@4,?6,@-4,\,!3,<-12,?5,@-3,<-12,?6,-3=?6,@-3,*\,!3, ?6,@-4,?6,@6,\,!,/*Me^-40,*/OH^20,!,//O,!1,OH, 3=wb,11=dl,15=dr,17=wf,19=wf,38=wb,5'7'16'24'25'33'42:O, 32:*/H^60,10:/Me,12'31:*/_,27://_,37:/*_,28:/OH,3'29:/*OH \end{verbatim} %------------------------------------------------------------------------ \newpage \noindent% \subsection{Report output} \paragraph{(Option parameter setting)} \index{sw\_output}% \index{Report}% \begin{verbatim} sw_output:=Report; %% file name = 'jobname-report.aux' \end{verbatim} \paragraph{(Command line)} \begin{verbatim} >mpost -s ahlength=7 FILENAME \end{verbatim} \paragraph{(Output)} \begin{verbatim} =========================================================================== No[5],Name,Category,File --------------------------------------------------------------------------- <30,?6,4'6=db,4:N,3://O,2:NH,5:/NH2 --------------------------------------------------------------------------- Row[1],Length[37],Block[7],Code pair[59],Warning[0] --------------------------------------------------------------------------- =[1] :[4] ?[1] <[1] --------------------------------------------------------------------------- Width[30.92419],Height[42.36527], Shift x[-1.77635],Shift y[-12.9921] Bond length[11.33855],Atom size[4.881881] --------------------------------------------------------------------------- Atom[9],Bond[9],Ring[1],Hide H[2] < NO. >( x axis , y axis ) A1 C ( 0 , 0 ) 3 1 A2 N ( 1 , -1 ) 3 A3 C ( 2 , 0 ) 4 A4 N ( 2 , 1 ) 3 A5 C ( 1 , 1 ) 4 A6 C ( 0 , 1 ) 3 1 A7 O ( 3 , 0 ) 2 A8 H ( 1 , -1 ) 1 A9 NH2 ( 1 , 2 ) 1 --------------------------------------------------------------------------- < NO. >< bond (sdt)> B1 1 -> 2 ( 1) 330 ( -30) 1 ( 11) B2 2 -> 3 ( 1) 30 ( 30) 1 ( 11) B3 3 -> 4 ( 1) 90 ( 90) 1 ( 11) B4 4 -> 5 ( 2) 150 ( 150) 1 ( 11) B5 5 -> 6 ( 1) 210 ( -150) 1 ( 11) B6 6 -> 1 ( 2) 270 ( -90) 1 ( 11) B7 3 -> 7 ( 2) 330 ( -30)0.660000 ( 7) B8 2 -> 8 ( 1) 270 ( -90)0.359999 ( 4) B9 5 -> 9 ( 1) 90 ( 90)0.660000 ( 7) --------------------------------------------------------------------------- ( atom wt )[ mi wt ] < cnt > < sum wt >[ sum mi wt ] C ( 12.0107)[ 12] * 4 48.0428[ 48] H (1.0079400)[1.0078250] * 5 5.03969[5.0391251611] N ( 14.0067)[14.003074] * 3 42.0200[42.009222013] O ( 15.9994)[15.994914] * 1 15.9994[15.994914619] Molecular Weight [Mono Isotopic] = 111.1019[ 111.043261] --------------------------------------------------------------------------- Weight Calc: 111.1019 - Input: 111.10 = 0.0019999 Fomula Calc: C4H5N3O =========================================================================== \end{verbatim} \newpage %------------------------------------------------------------------------ \noindent% \subsection{MOL file output} \paragraph{(Option parameter setting)} \index{sw\_output}% \index{MOL2000}% \index{MOL3000}% \begin{verbatim} sw_output:=MOL2000; % MOL(V2000) sw_output:=MOL3000; % MOL(V3000) \end{verbatim} \paragraph{(Command line)} \begin{verbatim} >mpost -s ahlength=5 FILENAME % MOL(V2000) >mpost -s ahlength=6 FILENAME % MOL(V3000) \end{verbatim} \paragraph{(Output)} \begin{verbatim} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -MCFtoMOL- EN:Caffeine 14 15 0 0 0 0 0 0 0 0999 V2000 0 0 0 C 0 0 0 0 0.86603 -0.5 0 N 0 0 0 0 1.73206 0 0 C 0 0 0 0 1.73206 1 0 C 0 0 0 0 0.86603 1.5 0 C 0 0 0 0 0 1 0 N 0 0 0 0 2.6831 -0.30902 0 N 0 0 0 0 3.27089 0.5 0 C 0 0 0 0 2.6831 1.30902 0 N 0 0 0 0 0.86603 -1.36383 0 C 0 0 0 0 -0.76894 1.44394 0 C 0 0 0 0 -0.76894 -0.44394 0 O 0 0 0 0 0.86603 2.36383 0 O 0 0 0 0 2.95299 2.1396 0 C 0 0 0 0 1 2 1 0 0 0 2 3 1 0 0 0 3 4 2 0 0 0 4 5 1 0 0 0 5 6 1 0 0 0 6 1 1 0 0 0 3 7 1 0 0 0 7 8 2 0 0 0 8 9 1 0 0 0 9 4 1 0 0 0 2 10 1 0 0 0 6 11 1 0 0 0 1 12 2 0 0 0 5 13 2 0 0 0 9 14 1 0 0 0 M END %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \end{verbatim} %---------------------------------------------------------------------------- \newpage \subsection{LuaTeX file example} \index{Fig}% %############################################################################ \begin{verbatim} \documentclass{article} \usepackage{luamplib}% \usepackage[T1]{fontenc}% \usepackage{textcomp}% \mplibcodeinherit{enable}% \mplibverbatim{enable}% \mplibnumbersystem{double}% \begin{mplibcode} \end{mplibcode} \begin{document} \noindent% %-------------------------------------------------------------------- \begin{mplibcode} input mcf2graph; sw_output:=Fig; max_blength:=4.5mm; defaultfont:="uhvr8r"; defaultsize:=8bp; defaultscale:=1; %-------------------------------------------------------- EN:="Limonin"; MW="470.51"; beginfigm #(50mm,50mm) '`( %--------------------------------------- "<30,?6,-3'-4=?6, ", " -5=?3,-2=wf,-1=wb,6=?5,-4=?6,-5=wf, ", " 13'15'17'20:O,3'12'21://O, ", " {4~wf^60'8~zf^60'18^35'18^-35}:/_, ", " {1^60'5^180'16^60}:/*H, ", " @14,\*,|,?5,1'4=dl,3:O ") %--------------------------------------- \\ endfigm \end{mplibcode}\\ %-------------------------------------------------------------------- \begin{mplibcode} EN:="beta-carotene"; MW:="536.87"; beginfigm #(80mm,50mm) '`( %----------------------------------------- "<30,?6,3=dl,{3'5^35'5^-35}:/_, ", " @4,\,|,!18,1'3'5'7'9'11'13'15'17=dr, ", " 3'7'12'16:/_, ", " |,?6,6=dl,{6,2^35,2^-35}:/_ ") %----------------------------------------- \\ endfigm \end{mplibcode}\\ %-------------------------------------------------------------------- \end{document} \end{verbatim} %############################################################################ %------------------------------------------------------------------------ \texttt{\printindex} %------------------------------------------------------------------------ \end{document} }