Scientific software development plays a central role in my research. Along with my research, I have developed various scientific computing software to carry out the actual task. The software are coded in various programming languages, such as C/C++, Julia, Python, Matlab, and Fortran. Most software listed here are open source software.

View source codes at
PolyOrder cheb++ gyroid pydiagram scftpy chebpy
MakiePublication.jl mpltex ngpy


PolyOrder is a C++ library which aims to ease the development of polymer self-consistent field theory (SCFT) programs.


  • Flexibility. All components can be replaced.
  • Extensibility. The OO design enables one add new features smoothly.
  • Non-orthogonal unit cell calculations are supported.
  • Weakly charged polymers are supported natively.

Getting Started


cheb++ is a C++ library which implements a set of functions dealing with Chebyshev polynomials.


  • Compute chebyshev differential matrix
  • Compute derivatives of Chebyshev expanded functions
  • Compute Clenshaw-Curtis quadrature
  • Compute 1D interpolation based on Chebyshev-Gauss-Lobatto grid
  • Work with PolyOrder seamlessly


scftpy is a python package for performing polymer self-consistent field theory calculations.


  • New features are experimented here before implemented in PolyOrder
  • SCFT simulations of confined polymers.
  • SCFT simulations of polymer brushes.


chebpy is a python package for spetral methods of PDEs based on Chebyshev series.


  • New features are experimented here before implemented in cheb++
  • Chebyshev series construction
  • Fast Chebyshev transform
  • Chebyshev differentiation
  • Chebyshev interpolation
  • Chebyshev quadrature
  • Chebyshev applications in solution of PDEs


PyDiagram is a python package for generating phase diagrams from results output by polymer field-theoretic simulations. PyDiagram also provides functions for analysis of simulation results.


  • Processor: support Polyorder and PolyFTS output files, and a general dgm file containing all simulation results.
  • Plotter: provide plots of raw, invalid, phase boundary, and standard phase diagrams.
  • Analyzer: the trend of the free energy, stretch-free cell size, and accuracy.
  • A project configuration file provides full control of the processor, plotter, and analyzer.


gyroid is a python package that generates symmetry adapted basis functions based on the space group of a unit cell.


  • Support 1D, 2D and 3D symmetry groups.
  • Has a structure renderer.
  • Prepare input data for polyorder.
  • Install with pip/easy_install
  • Well documented.


NGPy is a web application that enable online performing and analyzing Monte-Carlo simulation on nucleation and growth phenomena. It can be also used as a web framework to develop your own web applications.


  • Run multiple simulation instances.
  • Analyze simulation data online.
  • Retrieve result data online.
  • Install with pip/easy_install


mpltex is a python package for creating publication-quality plots using matplotlib. Inspired by Olga Botvinnik’s python package prettyplotlib. mpltex now has 75 stars and has been forked 18 times at!


  • Create plots for American Chemical Society.
  • Create plots for presentation slides.
  • Create plots for webpages.
  • The color cycle is replaced by Tableau classic 10 color scheme which looks less saturated and more pleasing to eyes.
  • enable cycle line styles and a selected set of line markers including hollow type markers.

Getting Started


MakiePublication.jl is a Julia package for producing publication quality figures based on Makie.jl. It aims to provide equivalent functionalities as the Python package mpltex.

Read the full documentation here.


  • Provide a collection of custom themes for journal publishers: ACS, APS, RSC.
  • Custom theme for making figures suitable for web pages.
  • 15 color palettes based on well-known quality color schemes with special tweaked ordering for scientific publishing. (since v0.3.0)
  • Support hollow markers. (since v0.3.1)