mailr2928 - /1.3/sample_scripts/latex_mf_table.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by edward on December 08, 2006 - 07:51:
Author: bugman
Date: Fri Dec  8 07:50:44 2006
New Revision: 2928

URL: http://svn.gna.org/viewcvs/relax?rev=2928&view=rev
Log:
Added a sample script to create a LaTeX longtable of the model-free results.


Added:
    1.3/sample_scripts/latex_mf_table.py

Added: 1.3/sample_scripts/latex_mf_table.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/sample_scripts/latex_mf_table.py?rev=2928&view=auto
==============================================================================
--- 1.3/sample_scripts/latex_mf_table.py (added)
+++ 1.3/sample_scripts/latex_mf_table.py Fri Dec  8 07:50:44 2006
@@ -1,0 +1,193 @@
+# Script for converting the model-free results into a LaTeX table.
+#
+# The longtable LaTeX package is necessary to allow the table to span 
multiple pages.  The package
+# can be included using the LaTeX command:
+#
+# \usepackage{longtable}
+#
+# Assuming the file name 'results.tex', the resultant table can be placed 
into a LaTeX manuscript
+# with the command:
+#
+# \input{results}
+#
+
+
+class Latex:
+    def __init__(self, relax):
+        """Convert the final results into a LaTeX table."""
+
+        self.relax = relax
+
+        # Create the run.
+        self.run = 'final'
+        run.create(self.run, 'mf')
+
+        # Load the model-free results.
+        results.read(self.run, dir=None)
+
+        # Open the file.
+        self.file = open('results.tex', 'w')
+
+        # LaTeX header.
+        self.latex_header()
+
+        # Table headings.
+        self.headings()
+
+        # Table footer (longtable repeating footers come just after the 
headings).
+        self.footer()
+
+        # The table body.
+        self.table_body()
+
+        # LaTeX ending.
+        self.latex_ending()
+
+        # Close the file.
+        self.file.close()
+
+
+    def footer(self):
+        """Create the end of the table."""
+
+        # Bottomrule.
+        self.file.write("\\bottomrule\n")
+
+        # End the repeating footer.
+        self.file.write("\\endfoot\n\n")
+
+
+    def headings(self):
+        """Create the LaTeX table headings."""
+
+        # Spacing.
+        self.file.write("\\\\[-5pt]\n")
+
+        # Toprule.
+        self.file.write("\\toprule\n\n")
+
+        # Headings.
+        self.file.write("% Headings.\n")
+        self.file.write("Residue &%\n")
+        self.file.write("Model &%\n")
+        self.file.write("\multicolumn{2}{c}{$S^2$} &%\n")
+        self.file.write("\multicolumn{2}{c}{$S^2_f$} &%\n")
+        self.file.write("\multicolumn{2}{c}{$\\tau_e < 100$ or $\\tau_f$} 
&%\n")
+        self.file.write("\multicolumn{2}{c}{$\\tau_e > 100$ or $\\tau_s$} 
&%\n")
+        self.file.write("\multicolumn{2}{c}{$R_{ex}$ (" + 
`self.relax.data.frq[self.run][0] / 1e6` + " MHz)} \\\\\n")
+        self.file.write("\n")
+
+        # Units.
+        self.file.write("% Units.\n")
+        self.file.write("&%\n")
+        self.file.write("&%\n")
+        self.file.write("\multicolumn{2}{c}{} &%\n")
+        self.file.write("\multicolumn{2}{c}{} &%\n")
+        self.file.write("\multicolumn{2}{c}{($ps$)} &%\n")
+        self.file.write("\multicolumn{2}{c}{($ps$)} &%\n")
+        self.file.write("\multicolumn{2}{c}{($s^{-1}$)} \\\\\n")
+        self.file.write("\n")
+
+        # Midrule.
+        self.file.write("\\midrule\n")
+
+        # End the repeating heading.
+        self.file.write("\\endhead\n\n")
+
+
+    def latex_ending(self):
+        """Create the end of the table."""
+
+        # End the longtable environment.
+        self.file.write("\\end{longtable}\n")
+
+        # End the font size.
+        self.file.write("\\end{small}\n")
+
+
+    def latex_header(self):
+        """Create the LaTeX header.
+
+        This function will need to be heavily modified to suit your needs.
+        """
+
+        # Font size.
+        self.file.write("% Small font.\n")
+        self.file.write("\\begin{small}\n\n")
+
+        # The longtable environment.
+        self.file.write("% The longtable environment.\n")
+        self.file.write("\\begin{longtable}{l l r @{$\\pm$} l r @{$\\pm$} l 
r @{$\\pm$} l r @{$\\pm$} l r @{$\\pm$} l}\n\n")
+
+        # The caption.
+        self.file.write("% Caption.\n")
+        self.file.write("\\caption[Sample list of figures caption]{Sample 
full caption}\n\n")
+
+        # The LaTeX label.
+        self.file.write("% Label.\n")
+        self.file.write("\\label{table: model-free results}\n\n")
+
+
+    def table_body(self):
+        """Create the table body.
+
+        This function need not be modified.
+        """
+
+        # Comment.
+        self.file.write("% The table body.\n")
+
+        # Loop over the spin systems.
+        for i in xrange(len(self.relax.data.res[self.run])):
+            # Alias the spin system data container.
+            data = self.relax.data.res[self.run][i]
+
+            # The residue tag.
+            self.file.write("%-7s & " % (data.name + `data.num`))
+
+            # The residue is not selected.
+            if not data.select:
+                self.file.write(res + "\\\n")
+
+            # The model-free model.
+            self.file.write("$%s$ & " % data.model)
+
+            # S2.
+            if data.s2 == None:
+                self.file.write("%21s & " % "\\multicolumn{2}{c}{}")
+            else:
+                self.file.write("%9.3f & %9.3f & " % (data.s2, data.s2_err))
+
+            # S2f.
+            if data.s2f == None:
+                self.file.write("%21s & " % "\\multicolumn{2}{c}{}")
+            else:
+                self.file.write("%9.3f & %9.3f & " % (data.s2f, 
data.s2f_err))
+
+            # Fast motion (te < 100 ps or tf).
+            if data.te != None and data.te <= 100 * 1e-12:
+                self.file.write("%9.2f & %9.2f & " % (data.te * 1e12, 
data.te_err * 1e12))
+            elif data.tf != None:
+                self.file.write("%9.2f & %9.2f & " % (data.tf * 1e12, 
data.tf_err * 1e12))
+            else:
+                self.file.write("%21s & " % "\\multicolumn{2}{c}{}")
+
+            # Slow motion (te > 100 ps or ts).
+            if data.te != None and data.te > 100 * 1e-12:
+                self.file.write("%9.2f & %9.2f & " % (data.te * 1e12, 
data.te_err * 1e12))
+            elif data.ts != None:
+                self.file.write("%9.2f & %9.2f & " % (data.ts * 1e12, 
data.ts_err * 1e12))
+            else:
+                self.file.write("%21s & " % "\\multicolumn{2}{c}{}")
+
+            # Rex.
+            if data.rex == None:
+                self.file.write("%21s \\\\\n" % "\\multicolumn{2}{c}{}")
+            else:
+                self.file.write("%9.3f & %9.3f \\\\\n" % (data.rex * (2.0 * 
pi * self.relax.data.frq[self.run][0])**2, data.rex_err * (2.0 * pi * 
self.relax.data.frq[self.run][0])**2))
+
+        # Start a new line.
+        self.file.write("\n")
+
+
+Latex(self.relax)




Related Messages


Powered by MHonArc, Updated Sat Dec 09 02:20:05 2006