From 44924c6dc875cb678fbef014e5d71b5a6cde03db Mon Sep 17 00:00:00 2001 From: Junfeng Qiao Date: Wed, 19 Jul 2023 11:36:08 +0200 Subject: [PATCH] Use DocStringExtensions.jl for writing docstrings (#11) * Use DocStringExtensions to write docstrings * Add codecov --- .github/workflows/CI.yml | 6 ++++++ Project.toml | 2 +- README.md | 5 +++++ docs/make.jl | 1 + docs/make_serve.sh | 5 ++++- docs/src/api/index.md | 5 +++++ docs/src/api/util.md | 9 ++++++++- docs/src/api/w90.md | 33 +++++++++++++++------------------ src/WannierIO.jl | 16 ++++++++++++++++ src/common/const.jl | 7 +++++-- src/common/type.jl | 8 ++++++-- src/qe/band.jl | 10 +++++----- src/qe/xml.jl | 2 +- src/util/fortran.jl | 11 +++++------ src/util/header.jl | 1 - src/util/lattice.jl | 4 ++-- src/util/toml.jl | 2 ++ src/volume/bxsf.jl | 15 +++------------ src/volume/cube.jl | 9 +++------ src/volume/xsf.jl | 9 +++------ src/w90/amn.jl | 3 --- src/w90/band.jl | 21 +++++++++++---------- src/w90/chk.jl | 16 ++++++++-------- src/w90/eig.jl | 12 +++++++++--- src/w90/hh_r.jl | 10 ++-------- src/w90/mmn.jl | 5 +++-- src/w90/nnkp.jl | 3 --- src/w90/spn.jl | 3 +++ src/w90/unk.jl | 2 -- src/w90/win.jl | 6 ++++-- src/w90/wout.jl | 4 +--- 31 files changed, 137 insertions(+), 108 deletions(-) create mode 100644 docs/src/api/index.md diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 433aa63..d22c709 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -43,3 +43,9 @@ jobs: - uses: julia-actions/julia-runtest@v1 with: annotate: true + - uses: julia-actions/julia-processcoverage@v1 + - uses: codecov/codecov-action@v3 + with: + files: lcov.info + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/Project.toml b/Project.toml index 02e7ab6..c984c41 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "WannierIO" uuid = "cb1bc77f-5443-4951-af9f-05b616a3e422" authors = ["Junfeng Qiao "] -version = "0.1.0" +version = "0.2.0" [deps] Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" diff --git a/README.md b/README.md index a840547..d688bb0 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,10 @@ # WannierIO.jl +[![Stable](https://img.shields.io/badge/docs-stable-blue.svg)](https://io.wannierjl.org/stable) +[![Dev](https://img.shields.io/badge/docs-dev-blue.svg)](https://io.wannierjl.org/dev) +[![CI](https://github.com/qiaojunfeng/WannierIO.jl/workflows/CI/badge.svg)](https://github.com/qiaojunfeng/WannierIO.jl/actions?query=workflow%3ACI) +[![codecov](https://codecov.io/gh/qiaojunfeng/WannierIO.jl/branch/main/graph/badge.svg?token=F7Tl05iVW9)](https://codecov.io/gh/qiaojunfeng/WannierIO.jl) + A Julia package for reading/writing [Wannier90](https://github.com/wannier-developers/wannier90) file formats. diff --git a/docs/make.jl b/docs/make.jl index 4514c63..b1317b1 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -15,6 +15,7 @@ makedocs(; "Wannier90" => "api/w90.md", "Volumetric data" => "api/volumetric.md", "Quantum ESPRESSO" => "api/qe.md", + "Index" => "api/index.md", ], ], ) diff --git a/docs/make_serve.sh b/docs/make_serve.sh index a1527e5..101b2a9 100755 --- a/docs/make_serve.sh +++ b/docs/make_serve.sh @@ -17,7 +17,10 @@ if [[ $USE_PYTHON == false ]]; then # 1. Use [`LiveServer.jl`](https://docs.juliahub.com/LiveServer) to track # changes and rebuild docs automatically cd "$SCRIPT_DIR/.." - julia --project=docs -e 'using WannierIO, Documenter, LiveServer; servedocs()' + # use `0.0.0.0` to listen on all interfaces, so that port forward works + julia_code="using WannierIO, Documenter, LiveServer; \ + servedocs(host=\"0.0.0.0\")" + julia --project=docs -e "$julia_code" else # 2. use python's http.server to set up a local server cd "$SCRIPT_DIR" diff --git a/docs/src/api/index.md b/docs/src/api/index.md new file mode 100644 index 0000000..c0746e6 --- /dev/null +++ b/docs/src/api/index.md @@ -0,0 +1,5 @@ +# Index of all functions and types + +```@index +Modules = [WannierIO] +``` diff --git a/docs/src/api/util.md b/docs/src/api/util.md index e2b9efd..438f43b 100644 --- a/docs/src/api/util.md +++ b/docs/src/api/util.md @@ -27,9 +27,16 @@ Modules = [WannierIO] Pages = ["common/type.jl"] ``` +## Constants + +```@autodocs +Modules = [WannierIO] +Pages = ["common/const.jl"] +``` + ## Misc ```@autodocs Modules = [WannierIO] -Pages = ["util/header.jl", "util/toml.jl", "util/parser.jl"] +Pages = ["util/header.jl", "util/toml.jl", "util/parser.jl", "WannierIO.jl"] ``` diff --git a/docs/src/api/w90.md b/docs/src/api/w90.md index 565b6ca..26b6f5d 100644 --- a/docs/src/api/w90.md +++ b/docs/src/api/w90.md @@ -14,25 +14,22 @@ CurrentModule = WannierIO Currently, the functions are tested on the following platforms: - Linux + gfortran 11.2 -## Read/write +## Public API ```@autodocs Modules = [WannierIO] -Pages = [ - "w90/win.jl", - "w90/wout.jl", - "w90/amn.jl", - "w90/mmn.jl", - "w90/eig.jl", - "w90/spn.jl", - "w90/unk.jl", - "w90/nnkp.jl", - "w90/chk.jl", - "w90/tb.jl", - "w90/wsvec.jl", - "w90/hr.jl", - "w90/r.jl", - "w90/hh_r.jl", - "w90/band.jl", -] +Private = false +Pages = map(file -> joinpath("w90", file), readdir("../src/w90")) +``` + +## Private API + +These are some lower-level types/functions that are (probably) less used, thus not exported. +Of course, you can still use them by prefixing `WannierIO.`, e.g., +`WannierIO.read_w90_band_dat(filename)`. + +```@autodocs +Modules = [WannierIO] +Public = false +Pages = map(file -> joinpath("w90", file), readdir("../src/w90")) ``` diff --git a/src/WannierIO.jl b/src/WannierIO.jl index 648579e..667e6fc 100644 --- a/src/WannierIO.jl +++ b/src/WannierIO.jl @@ -1,4 +1,20 @@ +""" +`WannierIO.jl`: a package for reading and writing Wannier90 file formats. + +--- + +$(README) + +--- + +Exported functions: + +$(EXPORTS) + +""" module WannierIO + +using Printf: @printf, @sprintf using DocStringExtensions include("common/const.jl") diff --git a/src/common/const.jl b/src/common/const.jl index 52c1646..00367ed 100644 --- a/src/common/const.jl +++ b/src/common/const.jl @@ -1,3 +1,6 @@ -# Bohr radius in Angstrom unit -# This is the default CODATA2006 value in W90 src/constants.F90 +""" +Bohr radius in Angstrom unit. + +This is the default CODATA2006 value in W90 `src/constants.F90`. +""" const Bohr::Float64 = 0.52917721092 diff --git a/src/common/type.jl b/src/common/type.jl index 7257e8c..758e887 100644 --- a/src/common/type.jl +++ b/src/common/type.jl @@ -14,10 +14,14 @@ For atom posistions, kpoints, etc. """ const Vec3{T} = SVector{3,T} where {T} -# Vector{Vector} -> Mat3 +""" +`Vector{Vector}` -> `Mat3` +""" Mat3(A::AbstractVector) = Mat3(reduce(hcat, A)) -# Mat3 -> Vec3{Vec3} +""" +`Mat3` -> `Vec3{Vec3}` +""" Vec3(A::Mat3) = Vec3(eachcol(A)) """ diff --git a/src/qe/band.jl b/src/qe/band.jl index e430dcd..ed9a867 100644 --- a/src/qe/band.jl +++ b/src/qe/band.jl @@ -1,9 +1,9 @@ using LinearAlgebra """ - read_qe_band(filename) + $(SIGNATURES) -read Quantum ESPRESSO `bands.x` output data file. +Read Quantum ESPRESSO `bands.x` output data file. The data file has format ``` @@ -59,7 +59,7 @@ function read_qe_band(filename::AbstractString) end """ - guess_kpath(kpoints) + $(SIGNATURES) Guess high symmetry points from kpoint coordinates. @@ -67,7 +67,7 @@ If there is angle between two consecutive kpoints, then it is labeled as a high-symmetry point. # Arguments -- `kpoints`: Vector of `Vec3`, in Cartesian coordinates +- `kpoints`: Vector of `Vector` or `Vec3`, in Cartesian coordinates # Keyword Arguments - `atol`: Absolute tolerance for checking cross product of two vectors @@ -77,7 +77,7 @@ it is labeled as a high-symmetry point. - `symm_point_labels`: Vector of labels of high-symmetry points, for the moment it is empty """ -function guess_kpath(kpoints::AbstractVector{Vec3}; atol=2e-6) +function guess_kpath(kpoints::AbstractVector{<:AbstractVector}; atol=2e-6) # of course index starts from 1 symm_point_indices = Vector{Int}() symm_point_labels = Vector{String}() diff --git a/src/qe/xml.jl b/src/qe/xml.jl index 5a36fc5..f4f1a6a 100644 --- a/src/qe/xml.jl +++ b/src/qe/xml.jl @@ -1,7 +1,7 @@ using EzXML """ - read_qe_xml(filename) + $(SIGNATURES) Read atomic structure and band structure from QE's XML output. diff --git a/src/util/fortran.jl b/src/util/fortran.jl index d975005..6aef597 100644 --- a/src/util/fortran.jl +++ b/src/util/fortran.jl @@ -1,6 +1,6 @@ """ - isbinary(chars::Vector{UInt8}) + $(SIGNATURES) Check if a sequence of chars is binary. """ @@ -16,12 +16,11 @@ function isbinary(chars::AbstractVector{UInt8})::Bool filter!(x -> x ∉ text_chars, chars) # display([Char(_) for _ in chars]) - return length(chars) > 0 end """ - isbinary(filename::AbstractString) + $(SIGNATURES) Check if the file is in binary format. """ @@ -36,7 +35,7 @@ function isbinary(filename::AbstractString) end """ - parse_float(s::AbstractString) + $(SIGNATURES) Parse a string as `Float64`. @@ -45,7 +44,7 @@ The is capable of parsing Fortran outputs, e.g. `1.0D-10`, to the ordinary `1e-1 parse_float(s::AbstractString) = parse(Float64, replace(lowercase(strip(s)), "d" => "e")) """ - parse_bool(s::AbstractString) + $(SIGNATURES) Parse a string as `bool`. @@ -57,7 +56,7 @@ function parse_bool(s::AbstractString) end """ - parse_bool(i::Integer) + $(SIGNATURES) Parse an integer as `bool`. diff --git a/src/util/header.jl b/src/util/header.jl index 0f2bd0c..fde4aa0 100644 --- a/src/util/header.jl +++ b/src/util/header.jl @@ -1,4 +1,3 @@ -using Printf: @sprintf using Dates: now """ diff --git a/src/util/lattice.jl b/src/util/lattice.jl index 86f9a48..5bd53fc 100644 --- a/src/util/lattice.jl +++ b/src/util/lattice.jl @@ -1,12 +1,12 @@ """ - get_recip_lattice(lattice) + $(SIGNATURES) Compute reciprocal lattice from lattice. """ get_recip_lattice(lattice::Mat3) = 2π * inv(lattice)' """ - get_lattice(recip_lattice) + $(SIGNATURES) Compute lattice from reciprocal lattice. """ diff --git a/src/util/toml.jl b/src/util/toml.jl index f777be8..46b4430 100644 --- a/src/util/toml.jl +++ b/src/util/toml.jl @@ -1,4 +1,6 @@ """ + $(SIGNATURES) + Write `kwargs` into `io` as a TOML file. Do some type conversion before writing. diff --git a/src/volume/bxsf.jl b/src/volume/bxsf.jl index 1004812..8e4673b 100644 --- a/src/volume/bxsf.jl +++ b/src/volume/bxsf.jl @@ -1,13 +1,10 @@ -using Printf: @printf -using Dates: now - # BXSF format # Specification from http://www.xcrysden.org/doc/XSF.html#__toc__14 export read_bxsf, write_bxsf """ - read_bxsf(filename::AbstractString) + $(SIGNATURES) Read `bxsf` file. @@ -95,13 +92,7 @@ function read_bxsf(filename::AbstractString) end """ - write_bxsf( - filename::AbstractString, - fermi_energy::T, - origin::AbstractVector{T}, - span_vectors::AbstractMatrix{T}, - E::AbstractArray{T,4}, - ) where {T<:Real} + $(SIGNATURES) Write `bxsf` file. @@ -126,7 +117,7 @@ function write_bxsf( # header @printf(io, "BEGIN_INFO\n") - @printf(io, " # Created by WannierIO.jl %s\n", string(now())) + @printf(io, " %s\n", default_header()) @printf(io, " Fermi Energy: %21.16f\n", fermi_energy) @printf(io, "END_INFO\n\n") diff --git a/src/volume/cube.jl b/src/volume/cube.jl index 3b67042..09ad73f 100644 --- a/src/volume/cube.jl +++ b/src/volume/cube.jl @@ -1,13 +1,10 @@ -using Printf: @printf -using Dates: now - # Cube format # Specification from http://paulbourke.net/dataformats/cube/ export read_cube, write_cube """ - read_cube(filename::AbstractString) + $(SIGNATURES) Read `cube` file. @@ -91,7 +88,7 @@ function read_cube(filename::AbstractString) end """ - write_cube(filename, filename, atom_positions, atom_numbers, origin, span_vectors, W) + $(SIGNATURES) Write `cube` file. @@ -119,7 +116,7 @@ function write_cube( io = open(filename, "w") # header - @printf(io, "Created by WannierIO.jl %s\n", string(now())) + @printf(io, "%s\n", default_header()) @printf(io, "outer loop: x, middle loop: y, inner loop: z\n") # to Bohr diff --git a/src/volume/xsf.jl b/src/volume/xsf.jl index 00831d0..76016b9 100644 --- a/src/volume/xsf.jl +++ b/src/volume/xsf.jl @@ -1,13 +1,10 @@ -using Printf: @printf -using Dates: now - # XSF format # Specification from http://www.xcrysden.org/doc/XSF.html export read_xsf, write_xsf """ - read_xsf(filename::AbstractString) + $(SIGNATURES) Read `xsf` file. @@ -112,7 +109,7 @@ function read_xsf(filename::AbstractString) end """ - write_xsf(filename, lattice, atom_positions, atom_numbers, origin, span_vectors, W) + $(SIGNATURES) Write `xsf` file. @@ -142,7 +139,7 @@ function write_xsf( io = open(filename, "w") # header - @printf(io, "# Created by WannierIO.jl %s\n", string(now())) + @printf(io, "%s\n", default_header()) @printf(io, "CRYSTAL\n") @printf(io, "PRIMVEC\n") diff --git a/src/w90/amn.jl b/src/w90/amn.jl index 8bc750d..2caad86 100644 --- a/src/w90/amn.jl +++ b/src/w90/amn.jl @@ -1,6 +1,3 @@ -using Printf: @printf, @sprintf -using Dates: now - export read_amn, write_amn """ diff --git a/src/w90/band.jl b/src/w90/band.jl index 715cbb1..5639db7 100644 --- a/src/w90/band.jl +++ b/src/w90/band.jl @@ -1,10 +1,9 @@ -using Printf: @printf, @sprintf using DelimitedFiles: readdlm export read_w90_band, write_w90_band """ - read_w90_band_kpt(filename) + $(SIGNATURES) Read a `prefix_band.kpt` file. @@ -24,7 +23,7 @@ function read_w90_band_kpt(filename::AbstractString) end """ - read_w90_band_dat(filename) + $(SIGNATURES) Read `prefix_band.dat` file. @@ -55,7 +54,7 @@ function read_w90_band_dat(filename::AbstractString) end """ - read_w90_band_labelinfo(filename) + $(SIGNATURES) Read `prefix_band.labelinfo` file. @@ -81,7 +80,7 @@ function read_w90_band_labelinfo(filename::AbstractString) end """ - read_w90_band(prefix) + $(SIGNATURES) Read `prefix_band.dat`, `prefix_band.kpt`, `prefix_band.labelinfo.dat`. @@ -113,12 +112,14 @@ function read_w90_band(prefix::AbstractString) end """ + $(SIGNATURES) + Wannier90 default kweights in `prefix_band.kpt` is all 1.0. """ default_band_kpt_kweights(kpoints::AbstractVector) = ones(length(kpoints)) """ - write_w90_band_kpt(filename; kpoints, kweights=default_band_kpt_kweights(kpoints)) + $(SIGNATURES) Write `prefix_band.kpt` file. @@ -127,7 +128,7 @@ Write `prefix_band.kpt` file. # Keyword Arguments - `kpoints`: length-`n_kpts` vector, fractional coordinates -- `kweights`: `n_kpts`, optional, weights of kpoints +- `kweights`: `n_kpts`, optional, weights of kpoints, default to 1.0. """ function write_w90_band_kpt( filename::AbstractString; @@ -147,7 +148,7 @@ function write_w90_band_kpt( end """ - write_w90_band_dat(filename; x, eigenvalues) + $(SIGNATURES) Write `prefix_band.dat` file. @@ -179,7 +180,7 @@ function write_w90_band_dat( end """ - write_w90_band_labelinfo(filename; x, kpoints, symm_point_indices, symm_point_labels) + $(SIGNATURES) Write `prefix_band.labelinfo` file. @@ -221,7 +222,7 @@ function write_w90_band_labelinfo( end """ - write_w90_band(prefix; x, eigenvalues, kpoints, kweights, symm_point_indices, symm_point_labels) + $(SIGNATURES) Write `prefix_band.dat, prefix_band.kpt, prefix_band.labelinfo.dat`. diff --git a/src/w90/chk.jl b/src/w90/chk.jl index 1050bf2..cadea5e 100644 --- a/src/w90/chk.jl +++ b/src/w90/chk.jl @@ -1,5 +1,3 @@ -using Printf: @printf - export read_chk, write_chk, get_U, get_Udis """ @@ -104,6 +102,8 @@ struct Chk{T<:Real} end """ + $(SIGNATURES) + Convenience constructor of [`Chk`](@ref) struct that auto set some fields. """ function Chk( @@ -669,9 +669,9 @@ function write_chk(filename::AbstractString, chk::Chk; binary=false) end """ - get_U(chk) + $(SIGNATURES) -Extract `U` matrices from `Chk`. +Extract the combined `U = Udis * Uml` matrices from `Chk`. """ function get_U(chk::Chk) if !chk.have_disentangled @@ -686,9 +686,9 @@ function get_U(chk::Chk) end """ - get_Udis(chk) + $(SIGNATURES) -Extract `U` matrices for disentanglement from `Chk`. +Extract disentanglement `Udis` matrices from `Chk`. """ function get_Udis(chk::Chk) n_kpts = chk.n_kpts @@ -726,9 +726,9 @@ function get_Udis(chk::Chk) end """ -Compare two `Chk` objects. + $(SIGNATURES) -Used in tests. +Compare two `Chk` objects. """ function Base.isapprox(a::Chk, b::Chk) for f in propertynames(a) diff --git a/src/w90/eig.jl b/src/w90/eig.jl index 8eafac9..8850943 100644 --- a/src/w90/eig.jl +++ b/src/w90/eig.jl @@ -1,9 +1,11 @@ -using Printf: @printf - export read_eig, write_eig """ + $(SIGNATURES) + Reshape a vector of eigenvalues into a matrix of eigenvalues. + +Auto detect the number of bands and kpoints. """ @inline function _reshape_eig( idx_b::AbstractVector, idx_k::AbstractVector, eig::AbstractVector @@ -17,7 +19,11 @@ Reshape a vector of eigenvalues into a matrix of eigenvalues. end """ -Check that eigenvalues are in order, some times there are small noises. + $(SIGNATURES) + +Check that eigenvalues are in order. + +Some times there are small noises, use `digits` to set the number of digits for comparisons. """ @inline function _check_eig_order(eigenvalues::AbstractVector; digits=7) round_digits(x) = round(x; digits) diff --git a/src/w90/hh_r.jl b/src/w90/hh_r.jl index 5c3bc9e..98180c5 100644 --- a/src/w90/hh_r.jl +++ b/src/w90/hh_r.jl @@ -1,9 +1,7 @@ -using Dates: now - # TODO update this file, use consistent variable names """ - write_HH_R(filename, H, R; N=nothing, header=nothing) + $(SIGNATURES) Write the real space Hamiltonian to a `prefix_HH_R.dat` file. @@ -34,7 +32,7 @@ function write_HH_R( H::AbstractArray{T,3}, R::AbstractMatrix{IT}; N::Union{AbstractVector{IT},Nothing}=nothing, - header::Union{AbstractString,Nothing}=nothing, + header=default_header(), ) where {T<:Complex,IT<:Integer} n_wann, _, n_rvecs = size(H) size(H, 2) == n_wann || error("H must be a n_wann * n_wann * n_rvecs matrix") @@ -43,10 +41,6 @@ function write_HH_R( io = open(filename, "w") - if header === nothing - header = @sprintf "Created by WannierIO.jl %s" string(now()) - end - header = strip(header) write(io, header, "\n") @printf(io, "%d\n", n_wann) diff --git a/src/w90/mmn.jl b/src/w90/mmn.jl index 9b8cc94..861d750 100644 --- a/src/w90/mmn.jl +++ b/src/w90/mmn.jl @@ -1,5 +1,3 @@ -using Printf: @printf - export read_mmn, write_mmn """ @@ -163,6 +161,9 @@ Check the dimensions between the quantities are consistent. @assert all(all(length.(Gk) .== 3) for Gk in kpb_G) "kpb_G[ib][ib] are not 3-vectors" end +""" + $(SIGNATURES) +""" @inline function _check_dimensions_M_kpb(M, kpb_k, kpb_G) _check_dimensions_kpb(kpb_k, kpb_G) diff --git a/src/w90/nnkp.jl b/src/w90/nnkp.jl index 3faea24..dafbb84 100644 --- a/src/w90/nnkp.jl +++ b/src/w90/nnkp.jl @@ -1,6 +1,3 @@ -using Printf: @printf, @sprintf -using Dates: now - export read_nnkp, write_nnkp """ diff --git a/src/w90/spn.jl b/src/w90/spn.jl index a127287..eb7278c 100644 --- a/src/w90/spn.jl +++ b/src/w90/spn.jl @@ -73,6 +73,9 @@ Write the `spn` file. """ function write_spn end +""" + $(SIGNATURES) +""" @inline function _check_dimensions_Sx_Sy_Sz(Sx, Sy, Sz) n_kpts = length(Sx) @assert n_kpts > 0 "empty spn matrix" diff --git a/src/w90/unk.jl b/src/w90/unk.jl index b512e7c..bc0fb82 100644 --- a/src/w90/unk.jl +++ b/src/w90/unk.jl @@ -1,5 +1,3 @@ -using Printf: @printf, @sprintf - export read_unk, write_unk """ diff --git a/src/w90/win.jl b/src/w90/win.jl index 8692efa..80982f5 100644 --- a/src/w90/win.jl +++ b/src/w90/win.jl @@ -1,4 +1,3 @@ -using Printf: @printf, @sprintf using TOML export read_win, write_win @@ -305,7 +304,7 @@ function read_win(filename::AbstractString; fix_inputs=true) end """ - fix_win!(params) + $(SIGNATURES) Sanity check and add missing input parameters from a `win` file. @@ -410,6 +409,9 @@ write_win( """ function write_win end +""" + $(SIGNATURES) +""" @inline function _check_win_required_params(kwargs) required_keys = [:num_wann, :unit_cell_cart, :atoms_frac, :mp_grid, :kpoints] for k in required_keys diff --git a/src/w90/wout.jl b/src/w90/wout.jl index c7ef20b..383a228 100644 --- a/src/w90/wout.jl +++ b/src/w90/wout.jl @@ -1,9 +1,7 @@ -using Printf: @printf - export read_wout """ - read_wout(filename) + $(SIGNATURES) Parse wannire90 `wout` file.