diff --git a/paper.md b/paper.md deleted file mode 100644 index 6c02a5e..0000000 --- a/paper.md +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: 'ThermoParser: Streamlined Analysis of Thermoelectric Properties' -tags: - - Python - - Matplotlib - - thermoelectrics - - electronic properties - - transport properties - - materials science - - chemistry - - physics - - science - - data analysis - - plotting -authors: - - name: Kieran B. Spooner - orchid: 0000-0002-4078-3148 - affiliation: "1, 2, 3" - - name: Maud Einhorn - orchid: 0000-0003-0371-0262 - affiliation: "2, 3" - - name: Daniel W. Davies - orchid: 0000-0003-4094-5992 - affiliation: "2, 3" - - name: David O. Scanlon - orchid: 0000-0001-9174-8601 - affiliation: "1, 2, 3" -affiliations: - - name: School of Chemistry, University of Birmingham, Birmingham B15 2TT, United Kingdom - index: 1 - - name: Department of Chemistry, University College London, 20 Gordon Street, London WC1H 0AJ, United Kingdom - index: 2 - - name: Thomas Young Centre, University College London, Gower Street, London WC1E 6BT, United Kingdom - index: 3 -date: 28 February 2024 -bibliography: ref.bib ---- - -# Summary - -Thermoelectric materials, which convert heat into electricity, could be an important renewable energy source to help slow the encroaching climate crisis, not only by displacing fossil fuels, but by recycling waste heat, which makes up around 50 % of generated energy [@Firth2019]. -With the growing computational capacity and development of several codes to calculate the key properties of thermoelectrics, they have become an increasingly popular area of computational materials research in recent years. -Thermal transport packages include Phonopy [@Togo2015a], Phono3py [@Togo2015], ShengBTE/ almaBTE [@Li2014], ALAMODE [@Tadano2014], TDEP [@Hellman2011] and HiPhive [@Eriksson2019]; and electronic transport packages include BoltzTraP [@Madsen2006], BoltzTraP2 [@Madsen2018], EPW [@Noffsinger2010], EPA [@Samsonidze2018], EPIC STAR [@Deng2020], AMSET [@Ganose2021], Perturbo [@Zhou2021], TOSSPB [@Poehls2022] and ElecTra [@Graziosi2023]. -While separate packages are required for such different calculations, this makes data analysis complex, needing to load in different file formats, account for different data arrangements (e.g. array shapes), and convert to consistent units, even before one begins analysing anything. -ThermoParser deals with these time-consuming and error-prone problems by loading data from multiple codes into a consistent data format with informative metadata, and facilitates the post-processing of thermoelectric properties by using this to accurately calculate and visualise them through an easy-to-use command-line interface (CLI) and a fully customisable Python package. -Some of its utility can be seen by its use in the literature (sometimes under its former name, ThermoPlotter) [@Kavanagh2021;@Spooner2021;@Brlec2022;@HerringRodriguez2023;@Willis2023;@Han2024]. - -# Statement of Need - -To the best of our knowledge no package exists for processing data from the vastly different sets of calculations needed to study thermoelectrics computationally. -While there are several codes to aid with individual aspects of thermoelectric calculations, such as the inbuilt analysis sections of Phonopy and AMSET or packages such as Phono3py-Power-Tools [@Skelton2020] and sumo [@Ganose2018], they are specialised to either the phononic or electronic side. -ThermoParser brings three key novelties to the existing software landscape: - -* The automatic parsing of outputs from multiple codes for both electronic and phononic calculations; -* A data system which is transparent in the origin, arrangement and units of the data, customisable, and accessible regardless of Python aptitude; -* Plotting tools for the creation of publication-ready figures through an intuitive Python API, accessible to Python novices while fully customisable for making complex, information-rich graphics, with the most common plots also availble via a CLI. - -To complement these capabilities, there is also a range of ancillary functions which streamline all parts of the process. - -# ThermoParser - -ThermoParser is a Python package for analysing and plotting thermoelectric properties. -The main dependencies are matplotlib [@Hunter2007] for plotting, pymatgen [@Ong2013] for symmetry analysis, numpy for calculations and click for the CLI. -The package interfaces with Phonopy, Phono3py, AMSET and BoltzTraP. - -The package is modular, with a separate function for loading from each code, plotting each graph-type and preparing each axis arrangement, as well as numerous helper functions for calculating properties, manipulating data, and fomatting outputs. -Therefore, in order to add support for a new code, calculated property or plot-type, one needs only create a single function able to read/write the common format, and perhaps some metadata, and the rest should just work. -Everything loaded into the common format has a `meta` directory, containing all the metadata needed to understand the data: the code it was loaded from, the shape of the array (e.g. if the first index is temperature) and the units, as well as any conditions imposed, such as if the data has been reduced to a particular temperature. -All dependent variables are also loaded by default. -A `tprc.yaml` config file is supplied, which enables the user to automatically convert units, and update the units as they appear in the metadata and on axis labels. -This data is used by CLI functions provided to retrieve data from files, which verbosely describes the conditions under which it was measured for maximum transparency. - -Plotting simple plots can be done easily via the CLI, but the Python interface is designed to be accessible to those unfamiliar with Python, with the simplest plots requiring just four lines of code. -More complex plots can be achieved by making full use of the Python API, but oftentimes still only require adding an extra `plot` line. -In general, raw data is converted to high-quality plots in four stages: - - 1. Axes: Choose pre-sized axes suitable for publication or presentation from `tp.axes`. - - 2. Load: Use the `data.load` module to parse outputs of other codes, standardising variable names, formatting and ensuring consistency across code versions. There is also a module which efficiently runs BoltzTraP and saves the output. - - 3. Add: Use the `plot` module to add plots to the axes. Options exist for scaling data, multiple plots per set of axes, and other customisation. - - 4. Save: Use `fig.savefig` or similar. - -The `tprc.yaml` file allows users to set a range of defaults, including axis labels, tick locators, style sheets and more. -While a [gallery](https://smtg-ucl.github.io/ThermoPlotter/gallery.html) is curated to demonstrate all plotting functionality, we highlight some key examples in Figures 1 and 2. - -\autoref{fig:phonon}a shows a phonon dispersion with an element-decomposed DoS sharing the y-axis. -Different environments for the same atom type can be specified, if desired, and it is possible to overlay multiple dispersions to assess calculation convergence. -\autoref{fig:phonon}b shows the same dispersion with lifetime projected on the colour axis. -Data from both Phono3py and Phonopy is parsed, and ThermoParser internally calculates mean free path and phonon lifetime. -Several other ways of projecting a range of properties onto a phonon dispersion are implemented, including the broadened bands plot (`tp.plot.frequency.add_wideband`), which is more commonly seen in the literature [@Togo2015]. -This also demonstrates the utility of ThermoParser's consistent data format: as well as Phono3py data, Gruneisen parameter data from Phonopy can be projected onto phonon dispersions in the same way, by changing only which data is loaded and setting `quantity='gruneisen'` rather than `'lifetime'`. - -![Phonon dispersions for ZnO with a) DoS and b) phonon lifetime projected on the colour axis. \label{fig:phonon}](joss_figures/phonons-subfigs.png) - -\autoref{fig:waterfall} is a waterfall plot of mean free path against frequency overlaying a DoS plot, clearly showing the relationship between elemental composition and scattering. -Scaling the linear-scaled DoS data to the log-scaled waterfall axes would be time-consuming on a case-by-case basis, whereas the `tp.plot.frequency.add_dos` function wil autodetect the data range and rescale appropriately if the `scale` argument is set to `True`. - -![Waterfall plot overlaid on a DoS for BaSnO$_3$. \label{fig:waterfall}](joss_figures/waterfall.png) - -In the future, ThermoParser could be expanded to include an increased number of analysis types and supported codes. -On top of this, support for uploading experimental data into the ThermoParser format, including the appropriate metadata, could allow easier comparison of theoretical and experimental results. - -# Author Contributions - -K.B.S.: Conceptualization, data curation, formal analysis, investigation, methodology, software, validation, visualization, writing - original draft, writing - review and editing. -M.E.: Formal analysis, software, visualization, writing - review and editing. -D.W.D.: Software, writing - original draft, writing - review and editing. -D.O.S.: Funding acquisition, project administration, resources, supervision. -The code is currently maintained by KBS. - -# Conflicts of Interest - -There are no conflicts to declare. - -# Acknowledgements - -KBS, DWD and DOS acknowledge support from the European Research Council (grant 758345). -This work made use of the ARCHER2 UK National Supercomputing Service via the Materials Chemistry Consortium, which is funded by EPSRC (EP/L000202), and resources made available via the UK Materials and Molecular Modelling Hub, which is partially funded by EPSRC (EP/P020194/1). -K.B.S and D.O.S acknowledge the University of Birmingham’s BlueBEAR HPC service (http://www.birmingham.ac.uk/bear); the Baskerville Tier 2 HPC service (https://www.baskerville.ac.uk/), which was funded by the EPSRC and UKRI through the World Class Labs scheme (EP/T022221/1) and the Digital Research Infrastructure programme (EP/W032244/1) and is operated by Advanced Research Computing at the University of Birmingham; and the Sulis Tier 2 HPC platform hosted by the Scientific Computing Research Technology Platform at the University of Warwick, which is funded by EPSRC Grant EP/T022108/1 and the HPC Midlands+ consortium. -We would like to acknowledge contributions of ideas and time from Katarina Brlec, Bonan Zhu, Seán R. Kavanagh, Warda Rahim, Joe Willis, Luisa Herring--Rodriguez and Sabrine Hachmioune. - -# References diff --git a/ref.bib b/ref.bib deleted file mode 100644 index 687479a..0000000 --- a/ref.bib +++ /dev/null @@ -1,355 +0,0 @@ -% Encoding: UTF-8 - -@Article{Hellman2011, - author = {Hellman, Olle and Abrikosov, I A and Simak, SI}, - journal = {Physical Review B}, - title = {Lattice Dynamics of Anharmonic Solids from First Principles}, - year = {2011}, - number = {18}, - pages = {180301}, - volume = {84}, - doi = {10.1103/PhysRevB.84.180301}, - publisher = {APS}, -} - -@Article{Hellman2013, - author = {Hellman, Olle and Abrikosov, Igor A}, - journal = {Physical Review B}, - title = {Temperature-Dependent Effective Third-Order Interatomic Force Constants From First Principles}, - year = {2013}, - number = {14}, - pages = {144301}, - volume = {88}, - doi = {10.1103/PhysRevB.88.144301}, - publisher = {APS}, -} - -@Article{Hellman2013a, - author = {Hellman, Olle and Steneteg, Peter and Abrikosov, Igor A and Simak, Sergei I}, - journal = {Physical Review B}, - title = {Temperature Dependent Effective Potential Method for Accurate Free Energy Calculations of Solids}, - year = {2013}, - number = {10}, - pages = {104111}, - volume = {87}, - doi = {10.1103/PhysRevB.87.104111}, - publisher = {APS}, -} - -@Article{Togo2015, - author = {Togo, Atsushi and Chaput, Laurent and Tanaka, Isao}, - journal = {Physical Review B}, - title = {Distributions of Phonon Lifetimes in Brillouin Zones}, - year = {2015}, - month = {Mar}, - number = {9}, - pages = {094306}, - volume = {91}, - doi = {10.1103/PhysRevB.91.094306}, - issue = {9}, - numpages = {31}, - publisher = {American Physical Society}, -} - -@Article{Togo2015a, - author = {Togo, Atsushi and Tanaka, Isao}, - journal = {Scripta Materialia}, - title = {First Principles Phonon Calculations in Materials Science}, - year = {2015}, - pages = {1}, - volume = {108}, - doi = {10.1016/j.scriptamat.2015.07.021}, - publisher = {Elsevier}, -} - -@Article{Li2014, - author = {Wu Li and Jes\'us Carrete and Nebil A. Katcho and Natalio Mingo}, - journal = {Computer Physics Communications}, - title = {{ShengBTE:} a Solver of the {B}oltzmann Transport Equation for Phonons}, - year = {2014}, - number = {6}, - pages = {1747}, - volume = {185}, - doi = {10.1016/j.cpc.2014.02.015}, -} - -@Article{Einhorn2020, - author = {Maud Einhorn and Benjamin A. D. Williamson and David O. Scanlon}, - journal = {Journal of Materials Chemistry A}, - title = {Computational Prediction of the Thermoelectric Performance of {LaZnOPn} ({Pn} = {P}, {As})}, - year = {2020}, - number = {16}, - pages = {7914}, - volume = {8}, - doi = {10.1039/d0ta00690d}, - publisher = {Royal Society of Chemistry ({RSC})}, -} - -@Article{Spooner2020, - author = {Kieran B. Spooner and Alex M. Ganose and David O. Scanlon}, - journal = {Journal of Materials Chemistry A}, - title = {Assessing the Limitations of Transparent Conducting Oxides as Thermoelectrics}, - year = {2020}, - number = {24}, - pages = {11948}, - volume = {8}, - doi = {10.1039/d0ta02247k}, - publisher = {Royal Society of Chemistry ({RSC})}, -} - -@Article{Hunter2007, - author = {John D. Hunter}, - journal = {Computing in Science and Engineering}, - title = {Matplotlib: A {2D} Graphics Environment}, - year = {2007}, - number = {3}, - pages = {90}, - volume = {9}, - doi = {10.1109/mcse.2007.55}, - publisher = {Institute of Electrical and Electronics Engineers ({IEEE})}, -} - -@Article{Ong2013, - author = {Shyue Ping Ong and William Davidson Richards and Anubhav Jain and Geoffroy Hautier and Michael Kocher and Shreyas Cholia and Dan Gunter and Vincent L. Chevrier and Kristin A. Persson and Gerbrand Ceder}, - journal = {Computational Materials Science}, - title = {Python Materials Genomics (pymatgen): A Robust, Open-Source Python Library for Materials Analysis}, - year = {2013}, - month = {feb}, - pages = {314}, - volume = {68}, - doi = {10.1016/j.commatsci.2012.10.028}, - publisher = {Elsevier {BV}}, -} - -@Article{Madsen2006, - author = {Madsen, Georg K H and Singh, David J}, - journal = {Computer Physics Communications}, - title = {{BoltzTraP}. A Code for Calculating Band-Structure Dependent Quantities}, - year = {2006}, - number = {1}, - pages = {67}, - volume = {175}, - doi = {10.1016/j.cpc.2006.03.007}, - publisher = {Elsevier}, -} - -@Misc{Skelton2020, - author = {J. M. Skelton}, - title = {Phono3py-Power-Tools}, - year = {2020}, - publisher = {GitHub}, - journal = {GitHub repository}, - url = {https://github.com/skelton-group/Phono3py-Power-Tools} -} - -@Article{Ganose2018, - author = {Ganose, Alex M and Jackson, Adam J and Scanlon, David O}, - journal = {Journal of Open Source Software}, - title = {sumo: Command-Line Tools for Plotting and Analysis of Periodic \textit{ab Initio} Calculations}, - year = {2018}, - number = {28}, - pages = {717}, - volume = {3}, - doi = {10.21105/joss.00717}, -} - -@Article{Tadano2014, - author = {Tadano, Terumasa and Gohda, Yoshihiro and Tsuneyuki, Shinji}, - journal = {Journal of Physics: Condensed Matter}, - title = {Anharmonic Force Constants Extracted from First-Principles Molecular Dynamics: Applications to Heat Transfer Simulations}, - year = {2014}, - number = {22}, - pages = {225402}, - volume = {26}, - doi = {10.1088/0953-8984/26/22/225402}, - publisher = {IOP Publishing}, -} - -@Article{HerringRodriguez2023, - author = {Herring Rodriguez, Luisa and Spooner, Kieran B and Einhorn, Maud and Scanlon, David O}, - journal = {Journal Materials Chemistry C}, - title = {{Sr}$_{2}${Sb}$_{2}${O}$_{7}$: a Novel Earth Abundant Oxide Thermoelectric}, - year = {2023}, - number = {27}, - pages = {9124}, - volume = {11}, - doi = {10.1039/D3TC01003A}, - publisher = {Royal Society of Chemistry}, -} - -@Article{Poehls2022, - author = {P{\"o}hls, Jan-Hendrik and Mozharivskyj, Yurij}, - journal = {Computational Materials Science}, - title = {TOSSPB: Thermoelectric Optimization Based on Scattering-Dependent Single-Parabolic Band Model}, - year = {2022}, - pages = {111152}, - volume = {206}, - doi = {10.1016/j.commatsci.2021.111152}, - publisher = {Elsevier}, -} - -@Article{Noffsinger2010, - author = {Noffsinger, Jesse and Giustino, Feliciano and Malone, Brad D and Park, Cheol-Hwan and Louie, Steven G and Cohen, Marvin L}, - journal = {Computer Physics Communications}, - title = {EPW: A Program for Calculating the Electron--Phonon Coupling Using Maximally Localized Wannier Functions}, - year = {2010}, - number = {12}, - pages = {2140}, - volume = {181}, - doi = {10.1016/j.cpc.2010.08.027}, - publisher = {Elsevier}, -} - -@Article{Samsonidze2018, - author = {Samsonidze, Georgy and Kozinsky, Boris}, - journal = {Advanced Energy Materials}, - title = {Accelerated Screening of Thermoelectric Materials by First-Principles Computations of Electron--Phonon Scattering}, - year = {2018}, - number = {20}, - pages = {1800246}, - volume = {8}, - doi = {10.1002/aenm.201800246}, - publisher = {Wiley Online Library}, -} - -@Article{Madsen2018, - author = {Madsen, Georg KH and Carrete, Jes{\'u}s and Verstraete, Matthieu J}, - journal = {Computer Physics Communications}, - title = {{BoltzTraP2}, a Program for Interpolating Band Structures and Calculating Semi-Classical Transport Coefficients}, - year = {2018}, - pages = {140}, - volume = {231}, - doi = {10.1016/j.cpc.2018.05.010}, - publisher = {Elsevier}, -} - -@Article{Zhou2021, - author = {Zhou, Jin-Jian and Park, Jinsoo and Lu, I-Te and Maliyov, Ivan and Tong, Xiao and Bernardi, Marco}, - journal = {Computer Physics Communications}, - title = {Perturbo: A Software Package for ab Initio Electron--Phonon Interactions, Charge Transport and Ultrafast Dynamics}, - year = {2021}, - pages = {107970}, - volume = {264}, - doi = {10.1016/j.cpc.2021.107970}, - publisher = {Elsevier}, -} - -@Article{Deng2020, - author = {Deng, Tianqi and Wu, Gang and Sullivan, Michael B and Wong, Zicong Marvin and Hippalgaonkar, Kedar and Wang, Jian-Sheng and Yang, Shuo-Wang}, - journal = {npj Computational Materials}, - title = {EPIC STAR: a Reliable and Efficient Approach for Phonon-and Impurity-Limited Charge Transport Calculations}, - year = {2020}, - number = {1}, - pages = {46}, - volume = {6}, - doi = {10.1038/s41524-020-0316-7}, - publisher = {Nature Publishing Group UK London}, -} - -@Article{Graziosi2023, - author = {Graziosi, Patrizio and Li, Zhen and Neophytou, Neophytos}, - journal = {Computer Physics Communications}, - title = {{ElecTra Code}: Full-Band Electronic Transport Properties of Materials}, - year = {2023}, - pages = {108670}, - volume = {287}, - doi = {10.1016/j.cpc.2023.108670}, - publisher = {Elsevier}, -} - -@Article{Ganose2021, - author = {Alex M. Ganose and Junsoo Park and Alireza Faghaninia and Rachel Woods-Robinson and Kristin A. Persson and Anubhav Jain}, - journal = {Nature Communications}, - title = {Efficient Calculation of Carrier Scattering Rates from First Principles}, - year = {2021}, - month = {apr}, - number = {1}, - pages = {2222}, - volume = {12}, - doi = {10.1038/s41467-021-22440-5}, - publisher = {Springer Science and Business Media {LLC}}, -} - -@Article{Eriksson2019, - author = {Eriksson, Fredrik and Fransson, Erik and Erhart, Paul}, - journal = {Advanced Theory and Simululations}, - title = {The Hiphive Package for the Extraction of High-Order Force Constants by Machine Learning}, - year = {2019}, - number = {5}, - pages = {1800184}, - volume = {2}, - doi = {10.1002/adts.201800184}, - publisher = {Wiley Online Library}, -} - -@Article{Brlec2022, - author = {Brlec, Katarina and Spooner, Kieran B and Skelton, Jonathan M and Scanlon, David O}, - journal = {Journal of Materials Chemistry A}, - title = {{Y}$_{2}${Ti}$_{2}${O}$_{5}${S}$_{2}$ --- a Promising n-Type Oxysulphide for Thermoelectric Applications}, - year = {2022}, - number = {32}, - pages = {16813}, - volume = {10}, - doi = {10.1039/D2TA04160J}, - publisher = {Royal Society of Chemistry}, -} - -@Article{Spooner2021, - author = {Spooner, Kieran B and Ganose, Alex M and Leung, WW Winnie and Buckeridge, John and Williamson, Benjamin AD and Palgrave, Robert G and Scanlon, David O}, - journal = {Chemistry of Materials}, - title = {{BaBi}$_{2}${O}$_{6}$: A Promising $n$-Type Thermoelectric Oxide with the {PbSb}$_{2}${O}$_{6}$ Crystal Structure}, - year = {2021}, - number = {18}, - pages = {7441}, - volume = {33}, - doi = {10.1021/acs.chemmater.1c02164}, - publisher = {ACS Publications}, -} - -@Article{Kavanagh2021, - author = {Kavanagh, Se{\'a}n R and Savory, Christopher N and Scanlon, David O and Walsh, Aron}, - journal = {Materials Horizons}, - title = {Hidden Spontaneous Polarisation in the Chalcohalide Photovoltaic Absorber {Sn}$_{2}${SbS}$_{2}${I}$_{3}$}, - year = {2021}, - number = {10}, - pages = {2709}, - volume = {8}, - doi = {10.1039/D1MH00764E}, - publisher = {Royal Society of Chemistry}, -} - -@article{Han2024, - title = {Discovery of Multi-Anion Antiperovskites {X}$_{6}${NFSn}$_{2}$ ({X}= {Ca}, {Sr}) as Promising Thermoelectric Materials by Computational Screening}, - author = {Han, Dan and Zhu, Bonan and Cai, Zenghua and Spooner, Kieran B and Rudel, Stefan S and Schnick, Wolfgang and Bein, Thomas and Scanlon, David O and Ebert, Hubert}, - journal = {Matter}, - volume = {7}, - number = {1}, - pages = {158}, - year = {2024}, - doi = {10.1016/j.matt.2023.10.022}, - publisher = {Elsevier}, -} - -@article{Willis2023, - title = {On the Possibility of p-Type Doping in Barium Stannate}, - author = {Willis, Joe and Spooner, Kieran B and Scanlon, David O}, - journal = {Applied Physics Letters}, - volume = {123}, - number = {16}, - pages = {162103}, - year = {2023}, - doi = {10.1063/5.0170552}, - publisher = {AIP Publishing}, -} -@Article{Firth2019, - author = {Firth, Anton and Zhang, Bo and Yang, Aidong}, - title = {Quantification of Global Waste Heat and its Environmental Effects}, - journal = {Appl. Energy}, - year = {2019}, - volume = {235}, - pages = {1314}, - doi = {10.1016/j.apenergy.2018.10.102}, - publisher = {Elsevier}, -} - -@Comment{jabref-meta: databaseType:bibtex;}