%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Molecular Coding Format manual by Akira Yamaji 2025.06.15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ** mcf2graph.mf must be version 5.22 % ** 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.22 \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} 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 drawm("<30,NH2,!2,COOH") endfigm % L-Alanine beginfigm drawm("<30,NH2,!~wb,?,!,COOH") endfigm % L-Valine beginfigm drawm("<30,NH2,!~wb,/?!,!,COOH") endfigm % L-Leucine beginfigm drawm("<30,NH2,!~wb,/!'?!,!,COOH") endfigm \end{mplibcode} \\ \begin{mplibcode} % L-Isoleucine beginfigm drawm("<30,NH2,!~wb,/?z'!2,!,COOH") endfigm % L-Serine beginfigm drawm("<30,NH2,!~wb,/!OH,!,COOH") endfigm % L-Threonine beginfigm drawm("<30,NH2,!~wb,/?'!w'OH,!,COOH") endfigm % L-Cysteine beginfigm drawm("<30,NH2,!~wb,/!SH,!,COOH") endfigm \end{mplibcode} \\ \begin{mplibcode} % L-Methionine beginfigm drawm("<30,NH2,!~wb,/!2'S!,!,COOH") endfigm % L-Phenylalanine beginfigm drawm("<30,NH2,!~wb,/!Ph,!,COOH") endfigm % L-Tyrosine beginfigm drawm("<30,NH2,!~wb,/!Ph'(-3:/OH),!,COOH") endfigm % L-Triptophan beginfigm drawm("<30,NH2,!~wb,!,COOH,@2,!2,<24,|,?5,-4=Ph,2=dr,5=dl,4:NH") endfigm \end{mplibcode} \\ \begin{mplibcode} % L-Prorine beginfigm drawm("<18,?5,3:NH,4:*/COOH") endfigm % L-Glutamine beginfigm drawm("<30,NH2,!~wb,!,COOH,@2,!`1,!2,?O,!,NH2") endfigm % L-Asparagine beginfigm drawm("<30,NH2,!~wb,/!'?O'!NH2,!,COOH") endfigm % L-Aspartic acid beginfigm drawm("<30,NH2,!~wb,/!COOH,!,COOH") endfigm \end{mplibcode} \\ \begin{mplibcode} % L-Glutamic acid beginfigm drawm("<30,NH2,!~wb,/!2'COOH,!,COOH") endfigm % L-Lysine beginfigm drawm("<30,NH2,!~wb,/!4'NH2,!,COOH") endfigm % L-Arginine beginfigm drawm("<30,NH2,!~wb,!,COOH,@2,!2`1,!2,NH,!,//NH,!,NH2") endfigm % L-Hystidine beginfigm drawm("<30,NH2,!~wb,!,COOH,@2,!2,|,?5,1'3=dl,3:N,5:NH") endfigm \end{mplibcode} \\ \begin{mplibcode} % L-DOPA beginfigm drawm("<30,NH2,!~wb,!,COOH,@2,!2,Ph,-3'-4:/OH") endfigm % Ornithine beginfigm drawm("<30,NH2,!~wb,/!3'NH2,!,COOH") endfigm % Citrulline beginfigm drawm("<30,NH2,!~wb,/!3'NH!'?O'!NH2,!,COOH") endfigm % GABA beginfigm drawm("<30,NH2,!4,COOH") endfigm \end{mplibcode} \\ \begin{mplibcode} % amino Levulinic acid beginfigm drawm("<30,NH2,!2,?O,!3,COOH") endfigm % 4-amino benzoic acid beginfigm drawm("<30,Ph,1:/NH2,4:/COOH") endfigm % L-Carboxyl glutamic acid beginfigm drawm("<30,NH2,!~wb,/!'?COOH'!COOH,!,COOH") endfigm % L-Hydroxy Prorine beginfigm drawm("<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,18mm); sw_numbering:=Bond; ratio_chain_ring:=1; %---------------------------------------------------------------------- drawm("<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 !6 : !,!,!,!,!,! <-30,!6 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,20mm); sw_numbering:=Bond; ratio_chain_ring:=1; %---------------------------------------------------------------------- drawm("<-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} %----------------------------------------------------------------------------- \begin{verbatim} take value 0 just after jump to atom @n,! : !=0 <-30,!5,@3,! \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,16mm) #@(2mm,2mm) sw_trimming:=1; sw_numbering:=Atom; ratio_chain_ring:=1; drawm("<-30,!6,@3,!") 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; drawm("<-30,!6,@3,0,@5,-30") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Branch bond} \index{\textasciicircum}% ^ \index{\textasciitilde}% ~ \index{`}% \index{"!w}% \index{"!z}% \index{"!d}% \begin{verbatim} @n,! : @n,! @n,!w : @n,!~wf @n,!z : @n,!~zf @n,!d : @n,!~db @n,!dr : @n,!~dr <30,!10, @2,!,!,@4,!w,!,@6,!z,!,@8,!d,!,@10,!dr,! \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(80mm,20mm) #@(2mm,2mm) sw_numbering:=Atom; ratio_chain_ring:=1; drawm("<30,!10,@2,!,!,@4,!w,!,@6,!z,!,@8,!d,!,@10,!dr,!") 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; drawm("<-30,#1,!2,?`2^30,!2,/!2>lr,!2,/!2>rl,!") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Add group} \index{?w}% \index{?z}% \index{?d}% \begin{verbatim} ?w : ?~wf ?z : ?~zf ?d : ?~dm <30,!17,2:?,3:/!,4:/!2,7:/?!, 8:/??!,10^-15:/#.6'Ph, 11'12':?w,13'14:?z,15'16:?d \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(75mm,25mm) #@(2mm,2mm) sw_numbering:=Atom; drawm("<30,!17,2:?,3:/!,4:/!2,7:/?!,8:/??!,10^-15:/#.6'Ph,"& "11'12:?w,13'14:?z,15'16:?d") 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; drawm("<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; drawm("<-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 #(60mm,35mm); sw_trimming:=1; ratio_chain_ring:=1; drawm("?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, \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm %%%%% EN:Left-right_right-left #(50mm,24mm); % sw_trimming:=1; drawm("<-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 #(45mm,24mm); sw_trimming:=1; drawm("<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 #(62mm,24mm); drawm("<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; drawm("<-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?"!}% \index{dimethylamino}% \begin{verbatim} ?? : ?^35,?-35 /?! : isopropyl /??! : tert-butyl /N?! : dimethylamino <30,!11`1,2:??,4:/!,6:/?!,8:/??!,10:/N?! \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm); sw_trimming:=1; drawm("<30,!11`1.2,2:??,4:/!,6:/?!,8:/??!,10:/N?!") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Define group,parts} \index{define group}% \index{define group with atoms}% \index{define parts}% \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); drawm("<30,?6,4'6:/iBuOH,3:/CF3") \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,14mm); sw_trimming:=1; iBuOH:=''(!?!,OH); CF3:=``("{CF3}")(C,F,F,F); drawm("<30,?6,4'6:/iBuOH,3:/CF3") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Concatenate group,parts} \index{'}% \begin{verbatim} a'b : ''(a,b) <30,!8,2'6:/!?!'OH \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,14mm) #@(2mm,1mm) sw_trimming:=1; drawm("<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,15mm) #@(2mm,1mm) sw_trimming:=1; drawm("<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; drawm("<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 drawm("<30,Ph,2'5:N,3:/NH2,4:/COOH,"& "2:red,5:blue,3=green") endfigm \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(50mm,18mm) |<(8mm) drawm("<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:="phvro8g"; %---------------- drawm("<30,Ph,2'5:N,3:/NH2,4:/COOH") endfigm \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(50mm,18mm) |<(8mm) atomfont:="phvro8g"; drawm("<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) drawm("Ph") mangle:=30; @(0.8,0.5) drawm("Ph") \end{verbatim} %----------------------------------------- %% mangle \begin{mplibcode} beginfigm #(50mm,15mm) |=(6mm) mangle:=0; @(0.2,0.5) drawm("Ph") ++(drawarrow((A1 shifted (aw,0)) rotated A1ang..A1);) mangle:=30; @(0.8,0.5) drawm("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); drawm("<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) drawm("<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) drawm("<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) drawm("<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) drawm("<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); drawm("<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); drawm("<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) drawm("<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); drawm("<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) drawm("<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.25pt \end{verbatim} %--------------------------------------------- %%offset_thickness \begin{mplibcode} beginfigm #(60mm,12mm); offset_thickness:=0.0pt; @(0.1,0.5) drawm("<30,Ph") offset_thickness:=0.25pt; @(0.55,0.5) drawm("<30,Ph") offset_thickness:=0.5pt; @(1,0.5) drawm("<30,Ph") **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.0pt",(0,1bp)); label.urt("0.25pt",(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) drawm("<30,Ph") offset_bond_gap:=0.3pt; @(0.55,0.5) drawm("<30,Ph") %<<== default offset_bond_gap:=1.0pt; @(1, 0.5) drawm("<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) drawm("<30,?6,3:O") offset_atom:=0.8pt; @(.55, .5) drawm("<30,?6,3:O") %<<== default offset_atom:=2.0pt; @(1, .5) drawm("<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.2pt \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm); offset_wedge:=0.0pt; @(0.1,0.5) drawm("<30,?6,5:?w") offset_wedge:=0.2pt; @(0.55,0.5) drawm("<30,?6,5:?w") %<<== default offset_wedge:=0.5pt; @(1, 0.5) drawm("<30,?6,5:?w") **(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{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) drawm("<45,?4") |<(8mm) @(.4,.5) drawm("<45,?4") |<(10mm) @(1, .5) drawm("<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.012 \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm); ratio_thickness_bond:=0.005; @(0.1,0.5) drawm("<30,Ph") ratio_thickness_bond:=0.012; @(.55,0.5) drawm("<30,Ph") %<<== default ratio_thickness_bond:=0.03; @(1, 0.5) drawm("<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{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) drawm("<30,?6,3:O") ratio_atom_bond:=0.33; @(.55,0.5) drawm("<30,?6,3:O") %<<== default ratio_atom_bond:=0.45; @(1, 0.5) drawm("<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{Char thickness/Atom width} \index{ratio\_char\_atom}% \begin{verbatim} default: ratio_char_atom=0.12 \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm) ratio_char_atom:=0.1; @(0, 0.5) drawm("<30,?6,6:O,3:NH") ratio_char_atom:=0.12; @(.5,0.5) drawm("<30,?6,6:O,3:NH") %<<== default ratio_char_atom:=0.15; @( 1,0.5) drawm("<30,?6,6:O,3:NH") **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.1", (0,1bp)); label.urt("0.12",(0.36w,1bp)); label.urt("0.15",(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) drawm("<30,Ph") ratio_bondgap_bond:=0.15; @(.55,0.5) drawm("<30,Ph") %<<== default ratio_bondgap_bond:=0.20; @(1 ,0.5) drawm("<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{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) drawm("?6,4:?w") ratio_wedge_bond:=0.12; @(.55, .5) drawm("?6,4:?w") %<<== default ratio_wedge_bond:=0.2; @(1 , .5) drawm("?6,4:?w") **(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 readm("<30,!2`0.5,2:O") #(70mm,12mm) sw_frame:=Atom; ratio_atomgap_atom:=0.00; @(0, .5) drawm(mc) ratio_atomgap_atom:=0.050; @(.5,.5) drawm(mc) %<<== default ratio_atomgap_atom:=0.12; @(1, .5) drawm(mc) **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.00",(0.05w,3bp)); label.urt("0.05",(0.45w,3bp)); label.urt("0.12",(0.85w,3bp)); ) 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) drawm("<30,?6,4:/!") ratio_chain_ring:= 0.66; @(.45, .5) drawm("<30,?6,4:/!") %<<== default ratio_chain_ring:= 1; @(1, .5) drawm("<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 readm("<30,!2,2:?z`1.5") #(70mm,15mm) ratio_hashgap_bond:=0.06; @(0.08,.5) drawm(mc) ratio_hashgap_bond:=0.12; @( .55,.5) drawm(mc) %<<== default ratio_hashgap_bond:=0.20; @(1, .5) drawm(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,bond} \index{sw\_numbering}% \index{Atom}% \begin{verbatim} sw_numbering:=Atom; \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(60mm,7mm); ratio_chain_ring:=1; sw_numbering:=Atom; drawm("<-30,!9") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \index{Bond}% \begin{verbatim} sw_numbering:=Bond; \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(60mm,7mm); ratio_chain_ring:=1; sw_numbering:=Bond; drawm("<-30,!9") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \begin{verbatim} sw_numbering:=Atom+Bond; \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(60mm,7mm); ratio_chain_ring:=1; sw_numbering:=Atom+Bond; drawm("<-30,!9") endfigm \end{mplibcode} %------------------------------------------------------ \begin{verbatim} sw_numbering:=Atom+Bond; \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(60mm,12mm); ratio_chain_ring:=1; sw_numbering:=Atom+Bond; drawm("<-30,!9,3'5'7'9:?w`.66") endfigm \end{mplibcode} %------------------------------------------------------ \begin{verbatim} sw_numbering:=Atom+Bond+All; \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(60mm,12mm); ratio_chain_ring:=1; sw_numbering:=Atom+Bond+All; drawm("<-30,!9,3'5'7'9:?w`.66") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Trimming mode} \index{sw\_trimming}% \begin{verbatim} sw_trimming:=0; ** default ##(1,0.7) @(0.2,0.3) drawm("Ph") @(0.8,0.7) drawm("Ph") \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(60mm,15mm) ##(1,.7) sw_frame:=Bothside+Mol; @(.2,.3) drawm("Ph") @(.8,.7) drawm("Ph") endfigm \end{mplibcode} %------------------------------------------------------ \begin{verbatim} sw_trimming:=1; @(0.2,0.3) drawm("Ph") @(0.8,0.7) drawm("Ph") \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(60mm,15mm) ##(1,.7) sw_frame:=Bothside+Mol; sw_trimming:=1; @(.2,.3) drawm("Ph") @(.8,.7) drawm("Ph") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Omit group} \index{Group}% \begin{verbatim} ** default: sw_omit=Group \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm readm("<30,Ph,4:/Cl,3:/F") #(60mm,12mm) @(.15, .5) putm sw_omit:=Group; @(.85, .5) putm endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Omit bond type} \index{Bond}% \begin{verbatim} ** default: sw_omit=Bond \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm readm("<30,Ph,4:/Cl,3:/F") #(60mm,12mm) @(.15, .5) putm sw_omit:=Bond; @(.85, .5) putm 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; drawm("<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; drawm("<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; drawm("<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; drawm("<30,Ph") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Atom frame} \index{Atom}% \begin{verbatim} sw_frame=Atom ** default: sw_frame=0 drawm("<30,COOH,!,COOH") \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,10mm); sw_frame:=Atom; drawm("<30,COOH,!,COOH") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{Parameter setting} \subsubsection{Local parameter setting} \index{beginfigm}% \index{endfigm}% \begin{verbatim} beginfigm drawm("Ph") endfigm beginfigm %-------------------------- ratio_thickness_bond:=0.05; %-------------------------- drawm("Ph") endfigm beginfigm drawm("Ph") endfigm \end{verbatim} %------------------------------------------------------ \quad \begin{mplibcode} fsize:=(15mm,12mm); beginfigm drawm("Ph") endfigm beginfigm ratio_thickness_bond:=0.05; drawm("Ph") endfigm beginfigm drawm("Ph") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \newpage \subsubsection{Global parameter setting} \begin{verbatim} beginfigm drawm("Ph") endfigm %-------------------------- ratio_thickness_bond:=0.05; %-------------------------- beginfigm drawm("Ph") endfigm beginfigm drawm("Ph") endfigm beginfigm drawm("Ph") endfigm \end{verbatim} %---------------------------------------------------- \quad \begin{mplibcode} save_ratio:=ratio_thickness_bond; fsize:=(15mm,12mm); beginfigm drawm("Ph") endfigm ratio_thickness_bond:=0.05; beginfigm drawm("Ph") endfigm beginfigm drawm("Ph") endfigm beginfigm drawm("Ph") endfigm ratio_thickness_bond:=save_ratio; \end{mplibcode} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Command of mcf2graph} %----------------------------------------------------------------------------- \subsection{drawm} \index{drawm}% \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 drawm("<30,Ph,3:/F,4:/Cl") \end{verbatim} %------------------------------------------------ \begin{mplibcode} beginfigm #(40mm,15mm) #@(0.5mm,0.5mm) sw_frame:=Outside+Mol; drawm("<30,Ph,4:/Cl,3:/F") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{readm} \index{readm()}% \begin{verbatim} readm(string1,string2, ...); ** string = mcf code (example) readm("<30,Ph,1'2'6:/O!,-4'-5=?7,", " -1'-4'-6=dl,-2:?O,-3:/O!, ", " @9,!,NH,!,?O,! ") putm \end{verbatim} \begin{mplibcode} beginfigm #(40mm,20mm); readm("<30,Ph,1'2'6:/O!,-4'-5=?7,", " -1'-4'-6=dl,-2:?O,-3:/O!, ", " @9,!,NH,!,?O,! ") putm endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{checkm} \index{checkm()}% \begin{verbatim} (immediately compile) beginfigm drawm("<30,Ph,2:N") endfigm (check mcf and compile) beginfigm readm("<30,Ph,2:") % ** '2:' missing arg if checkm(mc)=0: drawm(mc) fi endfigm ** checkm(mc) : error count \end{verbatim} %----------------------------------------------------- \quad \begin{mplibcode} beginfigm readm("<30,Ph,2:N") sw_trimming:=0; #(12mm,12mm); if checkm(mc)=0: drawm(mc) fi endfigm beginfigm readm("<30,Ph,2:") sw_trimming:=0; #(12mm,12mm); if checkm(mc)=0: drawm(mc) fi endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{getm} \index{getm}% \index{ucount}% \begin{verbatim} getm(number) ** number = numeric ** ucount = molecular data unit count for i=1 upto ucount: beginfigm getm(i) % get data unit no=i putm % put figure endfigm endfor getm("name"): "name"=string (example) beginfigm getm("Adenine") putm endfigm \end{verbatim} %----------------------------------------------------------------------------- \subsection{putm} \index{putm}% \begin{verbatim} putm : put figure if op_row>=1: scantokens(op) fi if mc_row>=1: if checkm(mc)=0: drawm(mc) fi fi if ad_row>=1: add(scantokens(ad)) fi if ex_row>=1: ext(scantokens(ex)) fi \end{verbatim} %------------------------------------------------------------------------------- \subsection{allm} \index{allm}% \begin{verbatim} allm : put all loaded molecule for i=1 upto ucount: beginfigm getm(i); putm; endfigm endfor \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) drawm("<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) drawm("<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 readm( "<30,Ph,1'2'6:/O!,-4'-5=?7, ", " -1'-4'-6=dl,-2:?O,-3:/O!, ", " 9:/NH!'?O! ") #(40mm,20mm) putm endfigm \end{verbatim} %--------------------------------------- % Colchicine MW:385.41 \begin{mplibcode} beginfigm readm( "<30,Ph,1'2'6:/O!,-4'-5=?7, ", " -1'-4'-6=dl,-2:?O,-3:/O!, ", " 9:/NH!'?O! ") #(40mm,20mm) putm 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", readm( %-------------------------------------------------------- "hexose_hp,#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH,##,", "@4,$310~arc_lb`1,O,$50~arc_br`1,<$0, ", "|,hexose_hp,#.5,{2^$90'3^$270'4^$270}:/OH,6^$90:/!OH ") %-------------------------------------------------------- #(50mm,20mm) putm endfigm \end{verbatim} %------------------------------------------------- \begin{mplibcode} beginfigm %"EN:Maltose","MW:342.3", readm( %-------------------------------------------------------- "hexose_hp,#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH,##,", "@4,$310~arc_lb`1,O,$50~arc_br`1,<$0, ", "|,hexose_hp,#.5,{2^$90'3^$270'4^$270}:/OH,6^$90:/!OH ") %-------------------------------------------------------- #(50mm,20mm) putm endfigm \end{mplibcode} %----------------------------------------------------------------------------- \newpage \paragraph{(Erythromycin)} \begin{verbatim} beginfigm EN:=Erythromycin"; MW:="733.93"; #(60mm,30mm) @(1,0.5) readm( %----------------------------------------------------------------------- "<30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1, ", " 14:O,13:/*!,1'9:?O, ", " {*2'4'6^-35'8'*10'12^35}:?z, ", " {6^35'11'12^-35}:*/OH, ", " @$3,!z,O,30~zb,|,?6`.7,6:O,#.5,{5~wf'3^35}:?,4:/*OH,3^-35:/*O!,##,", " @$5,!z^30`1.7,O,!~zb,|,?6`.7,6:O,#.5,5:?z,2:*/OH,3:/*N?! ") %----------------------------------------------------------------------- putm **(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} %---------------------------------------------------------------------------- \begin{mplibcode} beginfigm EN:="Erythromycin"; MW:="733.93"; #(60mm,30mm) @(1,0.5) readm( %----------------------------------------------------------------------- "<30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1, ", " 14:O,13:/*!,1'9:?O, ", " {*2'4'6^-35'8'*10'12^35}:?z, ", " {6^35'11'12^-35}:*/OH, ", " @$3,!z,O,30~zb,|,?6`.7,6:O,#.5,{5~wf'3^35}:?,4:/*OH,3^-35:/*O!,##,", " @$5,30~zf`1.7,O,!~zb,|,?6`.7,6:O,#.5,5:?z,2:*/OH,3:/*N?! ") %----------------------------------------------------------------------- putm **(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", readm( %------------------------------------------------------------------ "?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:?w^60,10:?O, ", " @1,!,O,!,?O,!,*/OH,!,/Ph,60~wf,NH,-60,?O,60,Ph, ", " @7,!z,O,-45,?O,60,Ph,{11>rl'*12^-15>lr}:*/O!'?O! ") %------------------------------------------------------------------ #(140mm,30mm) if checkm(mc)=0: @(0,0.5) putm sw_numbering:=Atom+All; @(0.6,0.5) putm sw_numbering:=Bond+All; @(1,0.5) putm fi endfigm \end{verbatim} %---------------------------------------------------------------------------- \begin{mplibcode} beginfigm % "EN:Paclitaxel","MW:853.918", readm( %------------------------------------------------------------------- "?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:?w^60,10:?O, ", " @1,!,O,!,?O,!,*/OH,!,/Ph,60~wf,NH,-60,?O,60,Ph, ", " @7,!z,O,-45,?O,60,Ph,{11>rl'*12^-15>lr}:*/O!'?O! ") %------------------------------------------------------------------- #(160mm,40mm) if checkm(mc)=0: @(0, 0.5) putm sw_numbering:=Atom+All; @(0.5,0.5) putm sw_numbering:=Bond+All; @(1, 0.5) putm 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{(Tag)} \begin{verbatim} CAT : category USE : the use EN : english name JN : japanese name FM : formula from data MW : molecular weight from data MI : monoisotopic mass from data CAS : CAS number \end{verbatim} \newpage \noindent% %---------------------------------------------------------------------------- \newpage \subsection{getm example} \paragraph{(Chlorophyll a)} \noindent% \begin{verbatim} beginfigm getm("Chlorophyll a") sw_output:=Fig+Mcode; #(80mm,30mm) putm 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 getm("Chlorophyll a") sw_output:=Fig+Mcode; #(80mm,30mm) putm 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 getm("Okadaic acid") readm(",38:?w,65=red") %%%% add methyl group (color red) %%%% sw_output:=Fig+Mcode; %%%% output temp-mc.aux %%%% EN:="Dinophysistoxin-1"; #(90mm,20mm) MW:="819"; if checkm(mc)=0: putm 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 getm("Okadaic acid") readm(",38:?w,65=red") %%%% add methyl group (color red) %%%% sw_output:=Fig+Mcode; %%%% output temp-mc.aux %%%% MW:="819"; EN:="Dinophysistoxin-1"; #(90mm,20mm); if checkm(mc)=0: putm 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 getm("Maitotoxin") #(150mm,80mm) #@(3mm,3mm) sw_output:=Fig+Mcode; %%%% output temp-mc.aux %%%% sw_frame:=Outside; if checkm(mc)=0: putm 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 getm("Maitotoxin") #(150mm,80mm) #@(3mm,3mm) sw_output:=Fig+Mcode; sw_frame:=Outside; %% mc_length:=40; if checkm(mc)=0: putm 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) |<(4mm) %-------------------------------------------------------------------------------- COOH:=''(?O,!,OH); HOCO:=''(OH,!,?O,); S_CoA:=`("{S-CoA}"); @(0.33, 1) drawm("<30,HOCO,!,?O,!2,COOH") % Oxaloacetate @(0.66, 1) drawm("<30,HOCO,!4,COOH,@-4`1,!,COOH,4:/OH^-165") % Citrate @(1, 1) drawm("<30,HOCO,!2,!~dr,!,COOH,@-4`1,!,COOH") % cis-Aconitate @(1, 0.58) drawm("<30,HOCO,!4,COOH,@-4,!`1,COOH,5:/OH") % Isocitrate @(1, 0.05) drawm("<30,HOCO,!3,?O,!,COOH,@-4,!`1,COOH") % Oxalosuccinate @(0.66,0.05) drawm("<30,HOCO,!3,?O,!,COOH") % alfa-Ketoglutarate @(0.33,0.05) drawm("<30,HOCO,!3,?O,!,S_CoA") % Succinyl-CoA @(0, 0.05) drawm("<30,HOCO,!3,COOH") % Succinate @(0, 0.55) drawm("<30,HOCO,!,!~dr,!,COOH") % Fumarate @(0, 1) drawm("<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.6h3))("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) |<(4mm) COOH:=''(?O,!,OH); % define COOH HOCO:=''(OH,!,?O,); % define HOCO S_CoA:=`("{S-CoA}"); % define S_CoA @(0.33, 1) drawm("<30,HOCO,!,?O,!2,COOH") % Oxaloacetate @(0.66, 1) drawm("<30,HOCO,!4,COOH,@-4`1,!,COOH,4:/OH^-165") % Citrate @(1, 1) drawm("<30,HOCO,!2,!~dr,!,COOH,@-4`1,!,COOH") % cis-Aconitate @(1, 0.58) drawm("<30,HOCO,!4,COOH,@-4,!`1,COOH,5:/OH") % Isocitrate @(1, 0.05) drawm("<30,HOCO,!3,?O,!,COOH,@-4,!`1,COOH") % Oxalosuccinate @(0.66,0.05) drawm("<30,HOCO,!3,?O,!,COOH") % alfa-Ketoglutarate @(0.33,0.05) drawm("<30,HOCO,!3,?O,!,S_CoA") % Succinyl-CoA @(0, 0.05) drawm("<30,HOCO,!3,COOH") % Succinate @(0, 0.55) drawm("<30,HOCO,!,!~dr,!,COOH") % Fumarate @(0, 1) drawm("<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.6h3))("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:=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 drawm("<45,?4,-3=?5,2:N,7:S,"& > immediately compile "3^45:/*H,1:?O^15,5:/*COOH^-18,6:??,"& > "@4,!w^15,NH,!,?O,!,/*NH2,!,Ph") > endfigm > %------------------------------------------------------------------------------ beginfigm % EN:Cholesterol MW:386.65 readm( > read Mcode "<30,?6,-4'-2=?6,-4=?5,7=dl, ", > mc1 "10:/*H^180,11:/*H^-60,17:/*H^-54, ", > mc2 "4'12:?w^60, ", > mc3 "@-1,18,?z,-60,!3,?! ") > mc4 putm > put figure endfigm > %------------------------------------------------------------------------------ loadm("EN<>*); > load all unit beginfigm getm("Adenine") > get EN=Adenine putm > ** put figure endfigm > %------------------------------------------------------------------------------ beginfigm getm(4) > select No.4 putm > put figure endfigm > %------------------------------------------------------------------------------ for i=1 upto ucount: > figure count beginfigm getm(i) > select No.i putm > 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=Fig Expand mode) \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{(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,!w,!3, ?6,@-4,?6,@6,!,!,?z^-40,*/OH^20,!,?O,!1,OH, 3=wb,11=dl,15=dr,17'19=wf,38=wb,5'7'16'24'25'33'42:O, 32:*/H^60,10:?,12'31:?w,27:?d,37:?z,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[148],Name,Category,File --------------------------------------------------------------------------- Row[1],Length[12],Block[3],BackboneA[6],BackboneB[6],Group[1] --------------------------------------------------------------------------- <30,Ph,3:/OH --------------------------------------------------------------------------- [1 ] <30 [2 ] Ph [3 ] 3:/OH --------------------------------------------------------------------------- --------------------------------------------------------------------------- Width[35.80607],Height[24.55503], Shift x[-1.77635],Shift y[-7.54719] Bond length[11.33855],Atom size[4.881881] --------------------------------------------------------------------------- Atom[7],Bond[7],Ring[1],Hide H[5] < NO. >( x axis , y axis ) A1 C ( 0 , 0 ) 3 1 A2 C ( 1 , -1 ) 3 1 A3 C ( 2 , 0 ) 4 A4 C ( 2 , 1 ) 3 1 A5 C ( 1 , 1 ) 3 1 A6 C ( 0 , 1 ) 3 1 A7 OH ( 3 , 0 ) 1 --------------------------------------------------------------------------- < NO. >< bond (sdt)> B1 1 -> 2 ( 2) 330 ( -30) 1 ( 11) B2 2 -> 3 ( 1) 30 ( 30) 1 ( 11) B3 3 -> 4 ( 2) 90 ( 90) 1 ( 11) B4 4 -> 5 ( 1) 150 ( 150) 1 ( 11) B5 5 -> 6 ( 2) 210 ( -150) 1 ( 11) B6 6 -> 1 ( 1) 270 ( -90) 1 ( 11) B7 3 -> 7 ( 1) 330 ( -30)0.660000 ( 7) --------------------------------------------------------------------------- ( atom wt )[ mi wt ] < cnt > < sum wt >[ sum mi wt ] C ( 12.0107)[ 12] * 6 72.0642[ 72] H (1.0079400)[1.0078250] * 6 6.04764[6.0469501933] O ( 15.9994)[15.994914] * 1 15.9994[15.994914619] Molecular Weight [Mono Isotopic] = 94.11123[ 94.0418648] --------------------------------------------------------------------------- Weight Calc: 94.11123 - Input: 94.11 = 0.0012399 Fomula Calc: C6H6O =========================================================================== \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) readm( %--------------------------------------- "<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,!z,|,?5,1'4=dl,3:O ") %--------------------------------------- putm endfigm \end{mplibcode}\\ %-------------------------------------------------------------------- \begin{mplibcode} EN:="beta-carotene"; MW:="536.87"; beginfigm #(80mm,50mm) readm( %----------------------------------------- "<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}:? ") %----------------------------------------- putm endfigm \end{mplibcode}\\ %-------------------------------------------------------------------- \end{document} \end{verbatim} %############################################################################ %------------------------------------------------------------------------ \texttt{\printindex} %------------------------------------------------------------------------ \end{document}