Source code for meafs_code.scripts.unify_plots

#!/usr/bin/env python3
"""
| MEAFS Unify generated plots in a single PDF file for each type
| Matheus J. Castro

| This script aims to create a single result file for each analyze type created with the abundance_fit.py and
  abundance_analysis.py scripts.
| It uses pdflatex to generate it. You can install it following the steps for your OS distribution here:
  https://www.latex-project.org/get/

| For this code work, it must be in the same folder as the *abundance_fit.py* file
"""

import os
import sys

# Import the main script
try:
    import abundance_fit as ab_fit
except ModuleNotFoundError:
    from . import abundance_fit as ab_fit


[docs] def write(fl_name, data): """ Write the data in a file. :param fl_name: file name. :param data: data to be written. """ # Write the latex file with open(fl_name, 'w') as file: file.write(data)
[docs] def run_pdflatex(fl_name, folder): """ Run the ``pdflatex`` command to generate the unified PDF. :param fl_name: file name. :param folder: directory where the file should be created. """ # Run pdflatex command os.system("cd {}Unique_Plot && pdflatex -interaction=nonstopmode {}".format(folder, fl_name))
[docs] def main(args): """ Main function that read the plot files. :param args: command line arguments. """ # Arguments Menu Call config_name = ab_fit.args_menu(args) # Read Configuration File list_name, refer_name, type_synth, config_fl, conv_name, folder, observed_name = ab_fit.read_config(config_name) # Create necessary folder if not os.path.exists(folder+"Unique_Plot"): os.mkdir(folder+"Unique_Plot") dirs = ["On_time_Plots/", "Abundance_Analysis/Abundance_Hist/", "Abundance_Analysis/Difference_Hist/", "Abundance_Analysis/Lines_Plot/"] # Create latex structure pre = r"\documentclass[hidelinks,oneside]{abntex2}" + "\n" +\ r"\usepackage{graphicx}" + "\n" +\ r"\usepackage{caption}" + "\n" +\ r"\usepackage{float}" + "\n" + "\n" +\ r"\begin{document}" + "\n" pos = "\n" + r"\end{document}" # Create the plots for each analyze type for diru in dirs: fls = os.listdir(folder+diru) figs = "" for fl in fls: img_path = "../" + diru + fl pre_img = "\t" + r"\begin{figure}[H]" + "\n" + "\t" + "\t" + r"\center" + "\n" pos_img = "\t" + r"\end{figure}" + "\n" + "\n" img = "\t" + "\t" + r"\includegraphics[width=1\linewidth]{" + img_path + r"}" + "\n" cap = "\t" + "\t" + r"\caption*{" + fl.replace("_", r"\_") + r"}" + "\n" figs += pre_img + img + cap + pos_img final = pre + figs + pos fl_name = "{}.tex".format(diru.split("/")[1]) if fl_name == ".tex": fl_name = "{}.tex".format(diru.split("/")[0]) write(folder+"Unique_Plot/{}".format(fl_name), final) run_pdflatex(fl_name, folder) # Remove temporary files os.remove(folder+"Unique_Plot/{}".format(fl_name)) os.remove(folder+"Unique_Plot/{}.aux".format(fl_name[:-4])) os.remove(folder+"Unique_Plot/{}.log".format(fl_name[:-4])) os.system("cp {}Abundance_Analysis/Abundance_box.pdf {}Unique_Plot/".format(folder, folder))
if __name__ == '__main__': arg = sys.argv[1:] main(arg)