Repository: deepmodeling/dpdata (language: python)

Issue:
slow to import dpdata
I find that it would takes up to 30s to run just `import dpdata`  on the login node of HPC.  I did some investigation myself and find that it would load almost all the modules into memory when importing the `dpdata` module. 

Here is the relative code:
https://github.com/deepmodeling/dpdata/blob/master/dpdata/__init__.py#L21-L30

Is it possible to just remove the `__all__`  expression? I think it is for users who like to use `from dpdata import *`,  which is not a good practices IMO. 



Discussion / hints:
![image](https://github.com/deepmodeling/dpdata/assets/9496702/8e8729de-e2ea-4cc6-af82-1a298818438f)

<details>

```
import time: self [us] | cumulative | imported package
import time:       151 |        151 |   _io
import time:        51 |         51 |   marshal
import time:       231 |        231 |   posix
import time:       371 |        802 | _frozen_importlib_external
import time:        56 |         56 |   time
import time:       171 |        227 | zipimport
import time:        41 |         41 |     _codecs
import time:       328 |        369 |   codecs
import time:       249 |        249 |   encodings.aliases
import time:       360 |        977 | encodings
import time:       123 |        123 | encodings.utf_8
import time:       115 |        115 | _signal
import time:       145 |        145 | encodings.latin_1
import time:        28 |         28 |     _abc
import time:       150 |        177 |   abc
import time:       156 |        332 | io
import time:        93 |         93 |       _stat
import time:       166 |        258 |     stat
import time:       772 |        772 |     _collections_abc
import time:        94 |         94 |       genericpath
import time:       149 |        242 |     posixpath
import time:       362 |       1633 |   os
import time:       111 |        111 |   _sitebuiltins
import time:        49 |         49 |     _locale
import time:        89 |        137 |   _bootlocale
import time:       249 |        249 |         types
import time:       182 |        182 |         warnings
import time:       104 |        533 |       importlib
import time:       121 |        654 |     importlib.machinery
import time:       156 |        156 |               _heapq
import time:       161 |        316 |             heapq
import time:       634 |        634 |             itertools
import time:       127 |        127 |             keyword
import time:        62 |         62 |               _operator
import time:       268 |        330 |             operator
import time:       147 |        147 |             reprlib
import time:        61 |         61 |             _collections
import time:       887 |       2500 |           collections
import time:       187 |        187 |           collections.abc
import time:        47 |         47 |               _functools
import time:       460 |        507 |             functools
import time:       423 |        929 |           contextlib
import time:       729 |        729 |             enum
import time:        68 |         68 |               _sre
import time:       316 |        316 |                 sre_constants
import time:       312 |        627 |               sre_parse
import time:       292 |        987 |             sre_compile
import time:       146 |        146 |             copyreg
import time:       489 |       2349 |           re
import time:      1733 |       7696 |         typing
import time:       430 |       8126 |       importlib.abc
import time:       175 |       8300 |     importlib.util
import time:       146 |        146 |       fnmatch
import time:        56 |         56 |         nt
import time:        61 |         61 |         nt
import time:        45 |         45 |         nt
import time:        39 |         39 |         nt
import time:       191 |        391 |       ntpath
import time:        56 |         56 |       errno
import time:       100 |        100 |         urllib
import time:      1002 |       1101 |       urllib.parse
import time:       785 |       2478 |     pathlib
import time:       617 |      12048 |   __editable___deepmd_pytorch_0_1_3_dev32_g622a4f3_finder
import time:       152 |        152 |   __editable___deepmodeling_sphinx_0_1_4_dev1_gcfc0544_d20221105_finder
import time:       137 |        137 |   __editable___dpgen_0_11_2_dev40_g84f64dd_d20230618_finder
import time:       129 |        129 |   __editable___dpgen2_0_0_7_dev10_gb3b3bb1_finder
import time:       203 |        203 |   __editable___mddatasetbuilder_1_3_5_dev7_gd71b9da_d20221022_finder
import time:       129 |        129 |   __editable___qiuwenbot_0_1_dev42_gd6298d6_d20230703_finder
import time:       186 |        186 |   _distutils_hack
import time:       323 |        323 |   sitecustomize
import time:        90 |         90 |   usercustomize
import time:      3403 |      18674 | site
import time:       124 |        124 |   dpdata.lammps
import time:        73 |         73 |   dpdata.md
import time:        68 |         68 |   dpdata.vasp
import time:       334 |        334 |     glob
import time:       182 |        182 |         _weakrefset
import time:       347 |        529 |       weakref
import time:       100 |        100 |           org
import time:        11 |        110 |         org.python
import time:        12 |        121 |       org.python.core
import time:       152 |        801 |     copy
import time:       305 |        305 |       numpy._globals
import time:        95 |         95 |       numpy.__config__
import time:        66 |         66 |       numpy._distributor_init
import time:        96 |         96 |           __future__
import time:       146 |        146 |                   _json
import time:       292 |        437 |                 json.scanner
import time:       300 |        737 |               json.decoder
import time:       492 |        492 |               json.encoder
import time:       125 |       1352 |             json
import time:        63 |       1415 |           numpy._version
import time:        88 |       1597 |         numpy.version
import time:       264 |        264 |                 math
import time:       267 |        267 |                 _datetime
import time:      1099 |       1629 |               datetime
import time:     11504 |      13133 |             numpy.core._multiarray_umath
import time:       322 |        322 |                 numpy.compat._inspect
import time:       172 |        172 |                   pickle5
import time:       215 |        215 |                       _struct
import time:       137 |        351 |                     struct
import time:       265 |        265 |                     _compat_pickle
import time:       246 |        246 |                     _pickle
import time:       191 |        191 |                         org
import time:        75 |        265 |                       org.python
import time:        16 |        280 |                     org.python.core
import time:      1050 |       2191 |                   pickle
import time:       180 |       2541 |                 numpy.compat.py3k
import time:      2694 |       5556 |               numpy.compat
import time:        24 |       5580 |             numpy.compat._inspect
import time:       262 |      18973 |           numpy.core.overrides
import time:       508 |      19481 |         numpy.core.multiarray
import time:       210 |        210 |         numpy.core.umath
import time:       349 |        349 |           numbers
import time:       145 |        145 |           numpy.core._string_helpers
import time:       150 |        150 |             numpy.core._dtype
import time:       367 |        517 |           numpy.core._type_aliases
import time:       453 |       1462 |         numpy.core.numerictypes
import time:       382 |        382 |                 numpy.core._exceptions
import time:       230 |        611 |               numpy.core._methods
import time:       945 |       1556 |             numpy.core.fromnumeric
import time:       363 |       1918 |           numpy.core.shape_base
import time:       206 |        206 |           numpy.core._ufunc_config
import time:       589 |        589 |           numpy.core.arrayprint
import time:       136 |        136 |           numpy.core._asarray
import time:       984 |       3832 |         numpy.core.numeric
import time:      1043 |       1043 |         numpy.core.defchararray
import time:       323 |        323 |         numpy.core.records
import time:       175 |        175 |         numpy.core.memmap
import time:       220 |        220 |         numpy.core.function_base
import time:       150 |        150 |         numpy.core._machar
import time:       286 |        286 |         numpy.core.getlimits
import time:       867 |        867 |         numpy.core.einsumfunc
import time:       281 |        281 |           numpy.core._multiarray_tests
import time:      1536 |       1816 |         numpy.core._add_newdocs
import time:      2154 |       2154 |               signal
import time:       584 |        584 |               threading
import time:        57 |         57 |               pwd
import time:       182 |        182 |               grp
import time:       161 |        161 |               msvcrt
import time:       289 |        289 |               _posixsubprocess
import time:       301 |        301 |               select
import time:       705 |        705 |               selectors
import time:       572 |       5001 |             subprocess
import time:      2353 |       7354 |           platform
import time:       551 |       7905 |         numpy.core._add_newdocs_scalars
import time:       144 |        144 |         numpy.core._dtype_ctypes
import time:      1006 |       1006 |             _ast
import time:      1155 |       2161 |           ast
import time:       530 |        530 |             _ctypes
import time:       249 |        249 |             ctypes._endian
import time:       837 |       1615 |           ctypes
import time:       824 |       4599 |         numpy.core._internal
import time:       167 |        167 |         numpy._pytesttester
import time:       508 |      44777 |       numpy.core
import time:       356 |        356 |         numpy.lib.mixins
import time:       167 |        167 |             numpy.lib.ufunclike
import time:       387 |        553 |           numpy.lib.type_check
import time:       347 |        900 |         numpy.lib.scimath
import time:       220 |        220 |                     numpy.lib.stride_tricks
import time:       339 |        559 |                   numpy.lib.twodim_base
import time:       432 |        432 |                   numpy.linalg._umath_linalg
import time:       733 |       1723 |                 numpy.linalg.linalg
import time:       129 |       1851 |               numpy.linalg
import time:       290 |       2141 |             numpy.matrixlib.defmatrix
import time:       119 |       2259 |           numpy.matrixlib
import time:       289 |        289 |             numpy.lib.histograms
import time:      1116 |       1404 |           numpy.lib.function_base
import time:       424 |       4086 |         numpy.lib.index_tricks
import time:       476 |        476 |         numpy.lib.nanfunctions
import time:       523 |        523 |         numpy.lib.shape_base
import time:       708 |        708 |         numpy.lib.polynomial
import time:      2318 |       2318 |           textwrap
import time:       658 |       2975 |         numpy.lib.utils
import time:       298 |        298 |         numpy.lib.arraysetops
import time:      1018 |       1018 |           numpy.lib.format
import time:       250 |        250 |           numpy.lib._datasource
import time:       322 |        322 |           numpy.lib._iotools
import time:       655 |       2243 |         numpy.lib.npyio
import time:       167 |        167 |         numpy.lib.arrayterator
import time:       209 |        209 |         numpy.lib.arraypad
import time:       148 |        148 |         numpy.lib._version
import time:       400 |      13483 |       numpy.lib
import time:       168 |        168 |           numpy.fft._pocketfft_internal
import time:       547 |        714 |         numpy.fft._pocketfft
import time:       161 |        161 |         numpy.fft.helper
import time:       202 |       1076 |       numpy.fft
import time:       203 |        203 |           numpy.polynomial.polyutils
import time:       366 |        366 |           numpy.polynomial._polybase
import time:       350 |        918 |         numpy.polynomial.polynomial
import time:       318 |        318 |         numpy.polynomial.chebyshev
import time:       266 |        266 |         numpy.polynomial.legendre
import time:       278 |        278 |         numpy.polynomial.hermite
import time:       401 |        401 |         numpy.polynomial.hermite_e
import time:       288 |        288 |         numpy.polynomial.laguerre
import time:       185 |       2652 |       numpy.polynomial
import time:       194 |        194 |                 backports_abc
import time:       676 |        869 |               numpy.random._common
import time:       202 |        202 |                   binascii
import time:       312 |        514 |                 base64
import time:       611 |        611 |                   _hashlib
import time:       521 |        521 |                     _blake2
import time:       321 |        842 |                   hashlib
import time:       252 |       1703 |                 hmac
import time:       142 |        142 |                     _bisect
import time:       130 |        272 |                   bisect
import time:       137 |        137 |                   _random
import time:       129 |        129 |                   _sha512
import time:       399 |        935 |                 random
import time:       164 |       3314 |               secrets
import time:       607 |       4790 |             numpy.random.bit_generator
import time:       252 |        252 |             numpy.random._bounded_integers
import time:       200 |        200 |             numpy.random._mt19937
import time:       971 |       6211 |           numpy.random.mtrand
import time:       226 |        226 |           numpy.random._philox
import time:       290 |        290 |           numpy.random._pcg64
import time:       396 |        396 |           numpy.random._sfc64
import time:       565 |        565 |           numpy.random._generator
import time:       219 |       7903 |         numpy.random._pickle
import time:       213 |       8116 |       numpy.random
import time:       609 |        609 |       numpy.ctypeslib
import time:       156 |        156 |                 _opcode
import time:       296 |        452 |               opcode
import time:       478 |        929 |             dis
import time:       265 |        265 |                 token
import time:       960 |       1224 |               tokenize
import time:       156 |       1380 |             linecache
import time:      1683 |       3991 |           inspect
import time:      2972 |       6962 |         numpy.ma.core
import time:      1148 |       1148 |         numpy.ma.extras
import time:       250 |       8359 |       numpy.ma
import time:      2249 |      81783 |     numpy
import time:       179 |        179 |       monty
import time:       164 |        164 |         _uuid
import time:       410 |        574 |       uuid
import time:       265 |        265 |           pytz.exceptions
import time:       292 |        292 |           pytz.lazy
import time:       242 |        242 |           pytz.tzinfo
import time:       131 |        131 |           pytz.tzfile
import time:      1502 |       2429 |         pytz
import time:       137 |        137 |           dateutil._version
import time:       183 |        320 |         dateutil
import time:       194 |        194 |             mmap
import time:      2604 |       2797 |           pandas._typing
import time:       778 |        778 |                                 pandas._libs.tslibs.dtypes
import time:       147 |        147 |                                   pandas._libs.tslibs.base
import time:       167 |        167 |                                     pandas._libs.tslibs.np_datetime
import time:       389 |        555 |                                   pandas._libs.tslibs.nattype
import time:      1048 |       1048 |                                         six
import time:        71 |         71 |                                         six.moves
import time:       230 |        230 |                                         dateutil.tz._common
import time:       171 |        171 |                                         dateutil.tz._factories
import time:        41 |         41 |                                           six.moves.winreg
import time:       189 |        230 |                                         dateutil.tz.win
import time:       832 |       2580 |                                       dateutil.tz.tz
import time:       170 |       2749 |                                     dateutil.tz
import time:       404 |       3153 |                                   pandas._libs.tslibs.timezones
import time:       184 |        184 |                                     pandas._libs.tslibs.ccalendar
import time:       343 |        526 |                                   pandas._libs.tslibs.tzconversion
import time:       916 |        916 |                                           locale
import time:       576 |        576 |                                               pandas._config.config
import time:       275 |        275 |                                               pandas._config.dates
import time:       148 |        148 |                                               pandas._config.display
import time:       180 |       1177 |                                             pandas._config
import time:       147 |       1324 |                                           pandas._config.localization
import time:       177 |        177 |                                             backports_abc
import time:       541 |        541 |                                             calendar
import time:      1177 |       1894 |                                           pandas._libs.tslibs.strptime
import time:       399 |       4531 |                                         pandas._libs.tslibs.fields
import time:       778 |       5308 |                                       pandas._libs.tslibs.timedeltas
import time:       165 |        165 |                                         backports_abc
import time:       888 |       1053 |                                       pandas._libs.tslibs.timestamps
import time:       142 |        142 |                                       backports_abc
import time:       117 |        117 |                                       dateutil.easter
import time:       116 |        116 |                                         dateutil._common
import time:       208 |        323 |                                       dateutil.relativedelta
import time:       170 |        170 |                                       pandas._libs.properties
import time:      1562 |       8672 |                                     pandas._libs.tslibs.offsets
import time:       146 |        146 |                                     backports_abc
import time:        45 |         45 |                                           _string
import time:       761 |        805 |                                         string
import time:       740 |        740 |                                           _decimal
import time:       150 |        889 |                                         decimal
import time:      1179 |       2872 |                                       dateutil.parser._parser
import time:       272 |        272 |                                       dateutil.parser.isoparser
import time:       201 |       3344 |                                     dateutil.parser
import time:       549 |      12710 |                                   pandas._libs.tslibs.parsing
import time:       385 |      17473 |                                 pandas._libs.tslibs.conversion
import time:       373 |        373 |                                 pandas._libs.tslibs.period
import time:       242 |        242 |                                 pandas._libs.tslibs.vectorized
import time:       228 |      19092 |                               pandas._libs.tslibs
import time:        23 |      19114 |                             pandas._libs.tslibs.nattype
import time:       131 |        131 |                             pandas._libs.ops_dispatch
import time:       375 |      19619 |                           pandas._libs.missing
import time:       601 |      20220 |                         pandas._libs.hashtable
import time:       445 |        445 |                         pandas._libs.algos
import time:       839 |      21503 |                       pandas._libs.interval
import time:       112 |      21615 |                     pandas._libs
import time:        19 |      21633 |                   pandas._libs.properties
import time:       248 |      21881 |                 pandas.util._decorators
import time:        97 |         97 |                     pandas.core
import time:       131 |        228 |                   pandas.core.util
import time:       199 |        199 |                     pandas._libs.tslib
import time:       571 |        770 |                   pandas._libs.lib
import time:       174 |        174 |                   pandas._libs.hashing
import time:        91 |         91 |                     pandas.core.dtypes
import time:       260 |        260 |                       pandas.errors
import time:       287 |        287 |                       pandas.core.dtypes.generic
import time:       154 |        700 |                     pandas.core.dtypes.base
import time:       182 |        182 |                       pandas.core.dtypes.inference
import time:       766 |        948 |                     pandas.core.dtypes.dtypes
import time:       283 |       2021 |                   pandas.core.dtypes.common
import time:       180 |       3372 |                 pandas.core.util.hashing
import time:       131 |      25383 |               pandas.util
import time:      1894 |      27277 |             pandas.util.version
import time:       324 |      27601 |           pandas.compat.numpy
import time:       126 |        126 |             pyarrow
import time:       117 |        242 |           pandas.compat.pyarrow
import time:       218 |      30857 |         pandas.compat
import time:       566 |        566 |         pandas.core.config_init
import time:       150 |        150 |           pandas.core.dtypes.missing
import time:        92 |         92 |               pandas.util._exceptions
import time:       106 |        106 |               pandas.util._validators
import time:       328 |        525 |             pandas.core.dtypes.cast
import time:        82 |         82 |               pandas.core.array_algos
import time:       265 |        265 |                 pandas.core.common
import time:       151 |        415 |               pandas.core.construction
import time:       213 |        710 |             pandas.core.array_algos.take
import time:       121 |        121 |             pandas.core.indexers
import time:       540 |       1895 |           pandas.core.algorithms
import time:       184 |        184 |               pandas.compat.numpy.function
import time:        97 |         97 |                 pandas.compat._optional
import time:       266 |        362 |               pandas.core.missing
import time:        71 |         71 |                 pandas.core.roperator
import time:       215 |        215 |                   pandas._libs.ops
import time:        83 |         83 |                     pandas.core.computation
import time:       149 |        149 |                       numexpr.__config__
import time:      1648 |       1648 |                       numexpr.interpreter
import time:        70 |         70 |                               distutils.debug
import time:       221 |        221 |                               distutils.errors
import time:       249 |        249 |                                   traceback
import time:        38 |         38 |                                   atexit
import time:      1412 |       1699 |                                 logging
import time:       137 |        137 |                                 email
import time:      1167 |       1167 |                                     gettext
import time:       121 |       1288 |                                   getopt
import time:       359 |       1646 |                                 distutils.fancy_getopt
import time:       247 |        247 |                                   sysconfig
import time:        86 |         86 |                                   distutils.dep_util
import time:        61 |         61 |                                     distutils._log
import time:        82 |        143 |                                   distutils.spawn
import time:       179 |        653 |                                 distutils.util
import time:       494 |       4627 |                               distutils.dist
import time:       119 |        119 |                                 distutils.dir_util
import time:       108 |        108 |                                 distutils.file_util
import time:       199 |        199 |                                       zlib
import time:       213 |        213 |                                         _compression
import time:       155 |        155 |                                         _bz2
import time:       190 |        556 |                                       bz2
import time:       272 |        272 |                                         _lzma
import time:       179 |        451 |                                       lzma
import time:       433 |       1638 |                                     shutil
import time:       595 |       2233 |                                   zipfile
import time:       127 |       2360 |                                 distutils.archive_util
import time:       167 |       2752 |                               distutils.cmd
import time:      1394 |       1394 |                                 configparser
import time:       129 |       1523 |                               distutils.config
import time:       121 |        121 |                               distutils.extension
import time:       599 |       9910 |                             _distutils_hack.override
import time:       132 |        132 |                             setuptools._deprecation_warning
import time:       115 |        115 |                                 setuptools.extern
import time:        68 |         68 |                                     setuptools._vendor
import time:       182 |        182 |                                       _csv
import time:       241 |        422 |                                     csv
import time:       176 |        176 |                                     setuptools._vendor.zipp
import time:       118 |        118 |                                         uu
import time:       128 |        128 |                                         quopri
import time:       296 |        296 |                                             _socket
import time:       167 |        167 |                                             array
import time:      1323 |       1786 |                                           socket
import time:       200 |        200 |                                           email._parseaddr
import time:        82 |         82 |                                             email.base64mime
import time:       155 |        155 |                                             email.quoprimime
import time:       305 |        305 |                                             email.errors
import time:        77 |         77 |                                             email.encoders
import time:       155 |        772 |                                           email.charset
import time:       363 |       3119 |                                         email.utils
import time:       546 |        546 |                                           email.header
import time:       200 |        746 |                                         email._policybase
import time:       199 |        199 |                                         email._encoded_words
import time:        87 |         87 |                                         email.iterators
import time:       432 |       4827 |                                       email.message
import time:        69 |         69 |                                         setuptools._vendor.importlib_metadata._functools
import time:       105 |        174 |                                       setuptools._vendor.importlib_metadata._text
import time:       108 |        108 |                                       setuptools._vendor.importlib_metadata._compat
import time:       200 |       5308 |                                     setuptools._vendor.importlib_metadata._adapters
import time:       280 |        280 |                                     setuptools._vendor.importlib_metadata._meta
import time:       162 |        162 |                                     setuptools._vendor.importlib_metadata._py39compat
import time:       311 |        311 |                                     setuptools._vendor.importlib_metadata._collections
import time:        95 |         95 |                                     setuptools._vendor.importlib_metadata._itertools
import time:      1126 |       7943 |                                   setuptools._vendor.importlib_metadata
import time:       102 |       8045 |                                 setuptools.extern.importlib_metadata
import time:       300 |        300 |                                   zipp
import time:        72 |         72 |                                       importlib_metadata._functools
import time:       116 |        188 |                                     importlib_metadata._text
import time:       206 |        393 |                                   importlib_metadata._adapters
import time:        82 |         82 |                                     importlib_metadata._compat
import time:       162 |        244 |                                   importlib_metadata._meta
import time:       165 |        165 |                                   importlib_metadata._collections
import time:        72 |         72 |                                   importlib_metadata._itertools
import time:       966 |       2138 |                                 importlib_metadata
import time:       238 |        238 |                                     tempfile
import time:       110 |        348 |                                   importlib._common
import time:       201 |        548 |                                 importlib.resources
import time:       111 |      10954 |                               setuptools._importlib
import time:       452 |        452 |                                 email.feedparser
import time:       148 |        599 |                               email.parser
import time:      4982 |      16535 |                             setuptools.version
import time:       137 |        137 |                                 distutils.filelist
import time:       102 |        238 |                               setuptools.monkey
import time:       135 |        372 |                             setuptools.extension
import time:       107 |        107 |                               distutils.log
import time:       138 |        138 |                               distutils.command
import time:        74 |         74 |                                 setuptools._vendor.packaging
import time:        63 |        136 |                               setuptools.extern.packaging
import time:       142 |        142 |                                 setuptools._vendor.ordered_set
import time:        46 |        187 |                               setuptools.extern.ordered_set
import time:       165 |        165 |                                       _queue
import time:       257 |        421 |                                     queue
import time:       152 |        152 |                                     setuptools._vendor.more_itertools.recipes
import time:       605 |       1177 |                                   setuptools._vendor.more_itertools.more
import time:        97 |       1273 |                                 setuptools._vendor.more_itertools
import time:        49 |       1322 |                               setuptools.extern.more_itertools
import time:       747 |        747 |                               setuptools._normalization
import time:       184 |        184 |                                 distutils.command.bdist
import time:       149 |        332 |                               setuptools.command
import time:        80 |         80 |                               setuptools.windows_support
import time:       434 |        434 |                                         dataclasses
import time:       353 |        353 |                                                 setuptools._vendor.packaging._elffile
import time:       319 |        671 |                                               setuptools._vendor.packaging._manylinux
import time:       194 |        194 |                                               setuptools._vendor.packaging._musllinux
import time:       390 |       1254 |                                             setuptools.extern.packaging.tags
import time:       104 |        104 |                                               setuptools.extern.packaging._structures
import time:       520 |        624 |                                             setuptools.extern.packaging.version
import time:       277 |       2154 |                                           setuptools.extern.packaging.utils
import time:      3526 |       5680 |                                         setuptools.extern.packaging.specifiers
import time:      3718 |       9831 |                                       setuptools.extern.packaging._tokenizer
import time:       369 |      10200 |                                     setuptools.extern.packaging._parser
import time:       290 |        290 |                                     setuptools.extern.packaging.markers
import time:       158 |      10647 |                                   setuptools.extern.packaging.requirements
import time:        87 |         87 |                                     setuptools._path
import time:       525 |        611 |                                   setuptools.config.expand
import time:       669 |      11926 |                                 setuptools.config.setupcfg
import time:       115 |      12041 |                               setuptools.config
import time:       133 |        133 |                                 setuptools.errors
import time:      1533 |       1533 |                                     email._header_value_parser
import time:       403 |       1936 |                                   email.headerregistry
import time:       393 |       2329 |                                 setuptools.config._apply_pyprojecttoml
import time:       304 |       2764 |                               setuptools.config.pyprojecttoml
import time:       307 |        307 |                               setuptools.discovery
import time:        81 |         81 |                                     setuptools._vendor.jaraco
import time:        68 |        148 |                                   setuptools.extern.jaraco
import time:       182 |        182 |                                   setuptools.extern.jaraco.functools
import time:       683 |        683 |                                   setuptools.extern.jaraco.context
import time:       429 |       1440 |                                 setuptools.extern.jaraco.text
import time:       155 |       1594 |                               setuptools._reqs
import time:        74 |         74 |                                 setuptools._itertools
import time:       142 |        215 |                               setuptools._entry_points
import time:       472 |      20436 |                             setuptools.dist
import time:        67 |         67 |                                 setuptools.py34compat
import time:        87 |        154 |                               setuptools._imp
import time:       132 |        285 |                             setuptools.depends
import time:        82 |         82 |                             setuptools.logging
import time:       784 |      48533 |                           distutils
import time:       431 |      48964 |                         distutils.version
import time:       571 |      49534 |                       numexpr.expressions
import time:       189 |        189 |                         numexpr.utils
import time:      1020 |       1209 |                       numexpr.necompiler
import time:       105 |        105 |                       numexpr.version
import time:       707 |      53349 |                     pandas.core.computation.check
import time:       178 |      53609 |                   pandas.core.computation.expressions
import time:        99 |         99 |                   pandas.core.ops.missing
import time:        72 |         72 |                   pandas.core.ops.dispatch
import time:        68 |         68 |                   pandas.core.ops.invalid
import time:       199 |      54260 |                 pandas.core.ops.array_ops
import time:       110 |        110 |                 pandas.core.ops.common
import time:       122 |        122 |                 pandas.core.ops.docstrings
import time:        92 |         92 |                 pandas.core.ops.mask_ops
import time:       149 |        149 |                 pandas.core.ops.methods
import time:       213 |      55013 |               pandas.core.ops
import time:       190 |        190 |               pandas.core.sorting
import time:       437 |      56183 |             pandas.core.arrays.base
import time:       187 |        187 |                   bottleneck.reduce
import time:        95 |         95 |                   bottleneck.nonreduce
import time:        86 |         86 |                   bottleneck.nonreduce_axis
import time:        93 |         93 |                   bottleneck.move
import time:       112 |        112 |                     bottleneck.slow.reduce
import time:        65 |         65 |                     bottleneck.slow.nonreduce
import time:        82 |         82 |                     bottleneck.slow.nonreduce_axis
import time:       151 |        151 |                     bottleneck.slow.move
import time:       105 |        514 |                   bottleneck.slow
import time:        69 |         69 |                     bottleneck.benchmark
import time:        56 |         56 |                         gc
import time:       140 |        196 |                       timeit
import time:        67 |        262 |                     bottleneck.benchmark.autotimeit
import time:       128 |        458 |                   bottleneck.benchmark.bench
import time:        97 |         97 |                   bottleneck.benchmark.bench_detailed
import time:        66 |         66 |                     bottleneck.tests
import time:       129 |        195 |                   bottleneck.tests.util
import time:        93 |         93 |                   bottleneck._pytesttester
import time:        63 |         63 |                   bottleneck._version
import time:       719 |       2594 |                 pandas.core.nanops
import time:       117 |        117 |                 pandas.core.array_algos.masked_reductions
import time:       320 |        320 |                 pandas.core.arraylike
import time:       427 |       3456 |               pandas.core.arrays.masked
import time:       237 |       3693 |             pandas.core.arrays.boolean
import time:       256 |        256 |               pandas._libs.arrays
import time:       253 |        253 |               pandas.core.accessor
import time:        75 |         75 |                 pandas.core.array_algos.transforms
import time:       343 |        418 |               pandas.core.arrays._mixins
import time:       577 |        577 |               pandas.core.base
import time:      1596 |       1596 |                   pandas.core.strings.accessor
import time:       174 |        174 |                   pandas.core.strings.base
import time:       108 |       1877 |                 pandas.core.strings
import time:       160 |        160 |                 unicodedata
import time:       289 |       2325 |               pandas.core.strings.object_array
import time:       107 |        107 |                 pandas.io
import time:       120 |        227 |               pandas.io.formats
import time:       101 |        101 |               pandas.io.formats.console
import time:       671 |       4825 |             pandas.core.arrays.categorical
import time:        80 |         80 |                 pandas.tseries
import time:       268 |        268 |                 pandas.tseries.frequencies
import time:       788 |       1136 |               pandas.core.arrays.datetimelike
import time:       109 |        109 |               pandas.core.arrays._ranges
import time:       226 |        226 |                 pandas.core.arrays.numeric
import time:        77 |         77 |                   pandas.core.tools
import time:       127 |        203 |                 pandas.core.tools.numeric
import time:       289 |        717 |               pandas.core.arrays.integer
import time:        88 |         88 |               pandas.tseries.offsets
import time:       458 |       2506 |             pandas.core.arrays.datetimes
import time:       196 |        196 |             pandas.core.arrays.floating
import time:        74 |         74 |                 pandas.core.indexes
import time:       370 |        370 |                 pandas._libs.index
import time:       335 |        335 |                 pandas._libs.join
import time:       314 |        314 |                         pandas._libs.sparse
import time:       152 |        152 |                         pandas.core.arrays.sparse.dtype
import time:       227 |        227 |                         pandas.io.formats.printing
import time:       320 |       1012 |                       pandas.core.arrays.sparse.array
import time:       192 |       1203 |                     pandas.core.arrays.sparse.accessor
import time:        87 |       1290 |                   pandas.core.arrays.sparse
import time:       150 |       1440 |                 pandas.core.dtypes.concat
import time:       106 |        106 |                 pandas.core.array_algos.putmask
import time:       105 |        105 |                 pandas.core.indexes.frozen
import time:      1726 |       4153 |               pandas.core.indexes.base
import time:       793 |       4946 |             pandas.core.arrays.interval
import time:       412 |        412 |             pandas.core.arrays.numpy_
import time:       754 |        754 |             pandas.core.arrays.period
import time:       382 |        382 |             pandas.core.arrays.string_
import time:       321 |        321 |             pandas.core.arrays.string_arrow
import time:       350 |        350 |             pandas.core.arrays.timedeltas
import time:       183 |      74744 |           pandas.core.arrays
import time:       126 |        126 |           pandas.core.flags
import time:       316 |        316 |               pandas._libs.reduction
import time:       317 |        317 |                     pandas.core.indexes.extension
import time:       339 |        656 |                   pandas.core.indexes.category
import time:       338 |        338 |                       pandas.core.indexes.numeric
import time:       114 |        114 |                       pandas.core.tools.timedeltas
import time:       478 |        928 |                     pandas.core.indexes.datetimelike
import time:        98 |         98 |                     pandas.core.tools.times
import time:       695 |       1719 |                   pandas.core.indexes.datetimes
import time:      1061 |       1061 |                     pandas.core.indexes.multi
import time:       176 |        176 |                     pandas.core.indexes.timedeltas
import time:       588 |       1824 |                   pandas.core.indexes.interval
import time:       324 |        324 |                   pandas.core.indexes.period
import time:       857 |        857 |                   pandas.core.indexes.range
import time:       152 |       5531 |                 pandas.core.indexes.api
import time:       143 |       5673 |               pandas.core.aggregation
import time:       405 |        405 |               pandas.core.apply
import time:       230 |        230 |                     pandas._libs.indexing
import time:      1093 |       1322 |                   pandas.core.indexing
import time:        82 |         82 |                       pandas.core.reshape
import time:       184 |        184 |                             backports_abc
import time:       487 |        670 |                           pandas._libs.internals
import time:       241 |        241 |                             pandas._libs.writers
import time:       144 |        144 |                             pandas.core.array_algos.quantile
import time:       158 |        158 |                             pandas.core.array_algos.replace
import time:       652 |       1193 |                           pandas.core.internals.blocks
import time:       123 |       1986 |                         pandas.core.internals.api
import time:       173 |        173 |                           pandas.core.internals.base
import time:       442 |        615 |                         pandas.core.internals.array_manager
import time:       252 |        252 |                             pandas.core.internals.ops
import time:       417 |        669 |                           pandas.core.internals.managers
import time:       203 |        871 |                         pandas.core.internals.concat
import time:       100 |       3570 |                       pandas.core.internals
import time:       225 |       3876 |                     pandas.core.reshape.concat
import time:       238 |        238 |                         gzip
import time:       860 |       1097 |                       pandas.io.common
import time:       670 |       1767 |                     pandas.io.formats.format
import time:       196 |       5838 |                   pandas.core.describe
import time:       228 |        228 |                   pandas.core.internals.construction
import time:        90 |         90 |                   pandas.core.shared_docs
import time:        73 |         73 |                         pandas._libs.window
import time:       330 |        403 |                       pandas._libs.window.aggregations
import time:       140 |        140 |                       pandas.core.util.numba_
import time:        91 |         91 |                       pandas.core.window.common
import time:       186 |        186 |                       pandas.core.window.doc
import time:       282 |        282 |                         pandas._libs.window.indexers
import time:       301 |        582 |                       pandas.core.window.indexers
import time:       130 |        130 |                       pandas.core.window.numba_
import time:       161 |        161 |                       pandas.core.window.online
import time:      1133 |       1133 |                       pandas.core.window.rolling
import time:       427 |       3249 |                     pandas.core.window.ewm
import time:       558 |        558 |                     pandas.core.window.expanding
import time:        94 |       3901 |                   pandas.core.window
import time:      4291 |      15669 |                 pandas.core.generic
import time:        88 |         88 |                   pandas.core.reshape.util
import time:       318 |        406 |                 pandas.core.reshape.melt
import time:       253 |        253 |                   pandas._libs.reshape
import time:       438 |        438 |                   pandas.core.indexes.accessors
import time:        98 |         98 |                     pandas.arrays
import time:       310 |        408 |                   pandas.core.tools.datetimes
import time:       864 |        864 |                     pandas.plotting._core
import time:       138 |        138 |                     pandas.plotting._misc
import time:       104 |       1105 |                   pandas.plotting
import time:      2323 |       4526 |                 pandas.core.series
import time:       359 |        359 |                 pandas.io.formats.info
import time:     14559 |      35516 |               pandas.core.frame
import time:       211 |        211 |               pandas.core.groupby.base
import time:       386 |        386 |                 pandas._libs.groupby
import time:       136 |        136 |                 pandas.core.groupby.numba_
import time:        82 |         82 |                     pandas.core.groupby.categorical
import time:       235 |        316 |                   pandas.core.groupby.grouper
import time:       449 |        765 |                 pandas.core.groupby.ops
import time:      1632 |       2918 |               pandas.core.groupby.groupby
import time:      1375 |      46412 |             pandas.core.groupby.generic
import time:        95 |      46506 |           pandas.core.groupby
import time:       158 |     123577 |         pandas.core.api
import time:       130 |        130 |         pandas.tseries.api
import time:        89 |         89 |                 pandas.core.computation.common
import time:       154 |        243 |               pandas.core.computation.align
import time:       272 |        272 |                     pprint
import time:       193 |        193 |                     pandas.compat.chainmap
import time:       270 |        734 |                   pandas.core.computation.scope
import time:       366 |       1100 |                 pandas.core.computation.ops
import time:       139 |        139 |                 pandas.core.computation.parsing
import time:      1032 |       2269 |               pandas.core.computation.expr
import time:       243 |       2754 |             pandas.core.computation.engines
import time:       150 |       2903 |           pandas.core.computation.eval
import time:        93 |       2995 |         pandas.core.computation.api
import time:       794 |        794 |           pandas.core.reshape.merge
import time:       725 |        725 |           pandas.core.reshape.pivot
import time:       305 |        305 |           pandas.core.reshape.reshape
import time:       193 |        193 |           pandas.core.reshape.tile
import time:       169 |       2184 |         pandas.core.reshape.api
import time:       149 |        149 |           pandas.api.extensions
import time:        92 |         92 |           pandas.api.indexers
import time:       100 |        100 |             pandas.core.dtypes.api
import time:       100 |        200 |           pandas.api.types
import time:       148 |        588 |         pandas.api
import time:       133 |        133 |         pandas.util._print_versions
import time:       105 |        105 |           pandas.io.clipboards
import time:       170 |        170 |                 backports_abc
import time:       564 |        733 |               pandas._libs.parsers
import time:       152 |        152 |               pandas.io.excel._util
import time:       145 |        145 |                     pandas.io.date_converters
import time:      1257 |       1401 |                   pandas.io.parsers.base_parser
import time:       185 |        185 |                   pandas.io.parsers.c_parser_wrapper
import time:       314 |        314 |                   pandas.io.parsers.python_parser
import time:      1118 |       3017 |                 pandas.io.parsers.readers
import time:       108 |       3125 |               pandas.io.parsers
import time:       189 |        189 |               pandas.io.excel._odfreader
import time:       308 |        308 |               pandas.io.excel._openpyxl
import time:       130 |        130 |               pandas.io.excel._pyxlsb
import time:       121 |        121 |               pandas.io.excel._xlrd
import time:       833 |       5587 |             pandas.io.excel._base
import time:       187 |        187 |               pandas._libs.json
import time:       131 |        131 |                 pandas.io.formats._color_data
import time:       173 |        173 |                 pandas.io.formats.css
import time:       430 |        734 |               pandas.io.formats.excel
import time:       185 |       1105 |             pandas.io.excel._odswriter
import time:       183 |        183 |             pandas.io.excel._xlsxwriter
import time:       135 |        135 |             pandas.io.excel._xlwt
import time:       118 |       7126 |           pandas.io.excel
import time:       242 |        242 |           pandas.io.feather_format
import time:       109 |        109 |           pandas.io.gbq
import time:       516 |        516 |           pandas.io.html
import time:       495 |        495 |               pandas.io.json._normalize
import time:       121 |        121 |               pandas.io.json._table_schema
import time:       675 |       1290 |             pandas.io.json._json
import time:       112 |       1402 |           pandas.io.json
import time:        84 |         84 |           pandas.io.orc
import time:       293 |        293 |           pandas.io.parquet
import time:       170 |        170 |             pandas.compat.pickle_compat
import time:       234 |        404 |           pandas.io.pickle
import time:       370 |        370 |             pandas.core.computation.pytables
import time:      1355 |       1724 |           pandas.io.pytables
import time:       145 |        145 |             pandas.io.sas.sasreader
import time:       104 |        248 |           pandas.io.sas
import time:        84 |         84 |           pandas.io.spss
import time:       541 |        541 |           pandas.io.sql
import time:      1035 |       1035 |           pandas.io.stata
import time:       524 |        524 |           pandas.io.xml
import time:       194 |      14623 |         pandas.io.api
import time:       120 |        120 |         pandas.util._tester
import time:       201 |        201 |               pandas._testing._random
import time:       148 |        148 |               pandas._testing.contexts
import time:       190 |        538 |             pandas._testing._io
import time:        98 |         98 |             pandas._testing._warnings
import time:       145 |        145 |                 cmath
import time:       179 |        323 |               pandas._libs.testing
import time:       204 |        527 |             pandas._testing.asserters
import time:        81 |         81 |             pandas._testing.compat
import time:       472 |       1714 |           pandas._testing
import time:        78 |       1791 |         pandas.testing
import time:        76 |         76 |         pandas._version
import time:       326 |     180708 |       pandas
import time:       126 |        126 |           backports_abc
import time:       823 |        823 |           typing_extensions
import time:       117 |        117 |             backports_abc
import time:       111 |        111 |               backports_abc
import time:       109 |        109 |                 backports_abc
import time:       565 |        673 |               pydantic.typing
import time:      1573 |       2356 |             pydantic.errors
import time:       107 |        107 |               backports_abc
import time:       101 |        101 |                 backports_abc
import time:       209 |        310 |               pydantic.version
import time:       915 |       1331 |             pydantic.utils
import time:       529 |       4332 |           pydantic.class_validators
import time:       410 |        410 |           pydantic.config
import time:       100 |        100 |             backports_abc
import time:       853 |        853 |               ipaddress
import time:       106 |        106 |                 backports_abc
import time:       106 |        106 |                 colorsys
import time:       507 |        719 |               pydantic.color
import time:       106 |        106 |                 backports_abc
import time:        99 |         99 |                   backports_abc
import time:      1450 |       1450 |                   pydantic.datetime_parse
import time:       517 |       2065 |                 pydantic.validators
import time:       952 |       3123 |               pydantic.networks
import time:       105 |        105 |                 backports_abc
import time:      1460 |       1564 |               pydantic.types
import time:       241 |       6498 |             pydantic.json
import time:       419 |       7015 |           pydantic.error_wrappers
import time:       106 |        106 |             backports_abc
import time:       620 |        725 |           pydantic.fields
import time:       105 |        105 |             backports_abc
import time:       262 |        262 |             pydantic.parse
import time:       313 |        313 |               backports_abc
import time:       610 |        922 |             pydantic.schema
import time:      1503 |       2790 |           pydantic.main
import time:       644 |      16860 |         pydantic.dataclasses
import time:       105 |        105 |           backports_abc
import time:       265 |        370 |         pydantic.annotated_types
import time:       268 |        268 |         pydantic.decorator
import time:       102 |        102 |           backports_abc
import time:       647 |        748 |         pydantic.env_settings
import time:       238 |        238 |         pydantic.tools
import time:       301 |      18783 |       pydantic
import time:       100 |        100 |       bson
import time:       196 |        196 |               ruamel.yaml.compat
import time:       348 |        544 |             ruamel.yaml.error
import time:       157 |        157 |               ruamel.yaml.util
import time:       175 |        331 |             ruamel.yaml.reader
import time:       360 |        360 |               ruamel.yaml.tokens
import time:       427 |        786 |             ruamel.yaml.scanner
import time:       222 |        222 |               ruamel.yaml.events
import time:        83 |         83 |                   ruamel.yaml.anchor
import time:       164 |        247 |                 ruamel.yaml.scalarstring
import time:       591 |        838 |               ruamel.yaml.comments
import time:       285 |       1343 |             ruamel.yaml.parser
import time:       130 |        130 |               ruamel.yaml.nodes
import time:       135 |        265 |             ruamel.yaml.composer
import time:       155 |        155 |               ruamel.yaml.scalarint
import time:       115 |        115 |               ruamel.yaml.scalarfloat
import time:        94 |         94 |               ruamel.yaml.scalarbool
import time:        90 |         90 |               ruamel.yaml.timestamp
import time:       436 |        888 |             ruamel.yaml.constructor
import time:       898 |        898 |             ruamel.yaml.emitter
import time:       158 |        158 |             ruamel.yaml.serializer
import time:       303 |        303 |             ruamel.yaml.representer
import time:       291 |       5803 |           _ruamel_yaml
import time:       276 |        276 |           ruamel.yaml.resolver
import time:       233 |       6311 |         ruamel.yaml.cyaml
import time:       179 |        179 |           ruamel.yaml.loader
import time:       151 |        151 |           ruamel.yaml.dumper
import time:       389 |        718 |         ruamel.yaml.main
import time:       253 |       7281 |       ruamel.yaml
import time:       389 |     208011 |     monty.json
import time:       190 |        190 |       monty.io
import time:        80 |         80 |       monty.msgpack
import time:        96 |         96 |         msgpack._version
import time:       147 |        147 |         msgpack.exceptions
import time:       204 |        204 |         msgpack.ext
import time:       187 |        187 |         msgpack._cmsgpack
import time:       146 |        777 |       msgpack
import time:       116 |       1162 |     monty.serialization
import time:       123 |        123 |     dpdata.md.pbc
import time:       462 |        462 |       importlib.metadata
import time:        75 |         75 |         dpdata.siesta
import time:       120 |        195 |       dpdata.siesta.aiMD_output
import time:        80 |         80 |       dpdata.siesta.output
import time:        82 |         82 |         dpdata.plugin
import time:       134 |        216 |       dpdata.format
import time:        68 |         68 |         dpdata.xyz
import time:       141 |        208 |       dpdata.xyz.quip_gap_xyz
import time:        98 |         98 |       dpdata.xyz.xyz
import time:        68 |         68 |         dpdata.pwmat
import time:       938 |        938 |         dpdata.periodic_table
import time:       130 |       1135 |       dpdata.pwmat.atomconfig
import time:       131 |        131 |       dpdata.pwmat.movement
import time:        86 |         86 |         dpdata.pymatgen
import time:       146 |        146 |           pymatgen
import time:        97 |         97 |             monty.fractions
import time:       256 |        256 |                         scipy._lib._testutils
import time:       214 |        470 |                       scipy._lib
import time:       186 |        656 |                     scipy._lib.deprecation
import time:       155 |        155 |                     scipy.__config__
import time:        88 |         88 |                     scipy.version
import time:        76 |         76 |                     scipy._distributor_init
import time:       370 |        370 |                     scipy._lib._pep440
import time:       375 |        375 |                       scipy._lib._ccallback_c
import time:       199 |        573 |                     scipy._lib._ccallback
import time:      2843 |       4757 |                   scipy
import time:      3630 |       3630 |                   scipy.constants.codata
import time:       200 |        200 |                   scipy.constants.constants
import time:       723 |       9309 |                 scipy.constants
import time:       595 |       9903 |               pymatgen.core.units
import time:       106 |        106 |                 pymatgen.util
import time:       632 |        632 |                 fractions
import time:       203 |        940 |               pymatgen.util.string
import time:     12333 |      23176 |             pymatgen.core.periodic_table
import time:       526 |      23798 |           pymatgen.core.composition
import time:       243 |        243 |                   multiprocessing.process
import time:       208 |        208 |                   multiprocessing.reduction
import time:       429 |        879 |                 multiprocessing.context
import time:       159 |       1037 |               multiprocessing
import time:       171 |       1208 |             monty.dev
import time:        69 |         69 |                 pymatgen.util.numpy
import time:       388 |        456 |               pymatgen.util.coord_cython
import time:       208 |        664 |             pymatgen.util.coord
import time:       110 |        110 |             pymatgen.util.num
import time:       189 |        189 |                 numpy.typing._nested_sequence
import time:        74 |         74 |                 numpy.typing._nbit
import time:       687 |        687 |                 numpy.typing._char_codes
import time:       217 |        217 |                 numpy.typing._scalars
import time:       100 |        100 |                 numpy.typing._shape
import time:       189 |        189 |                   numpy.typing._generic_alias
import time:      1111 |       1299 |                 numpy.typing._dtype_like
import time:      1218 |       1218 |                 numpy.typing._array_like
import time:       390 |        390 |                 numpy.typing._add_docstring
import time:       319 |       4489 |               numpy.typing
import time:       246 |       4734 |             pymatgen.util.typing
import time:       460 |       7175 |           pymatgen.core.lattice
import time:        84 |         84 |               pymatgen.electronic_structure
import time:       463 |        546 |             pymatgen.electronic_structure.core
import time:       308 |        854 |           pymatgen.core.operations
import time:       248 |        248 |           pymatgen.core.sites
import time:       167 |        167 |                   wcwidth.table_wide
import time:       157 |        157 |                   wcwidth.table_zero
import time:        70 |         70 |                   wcwidth.unicode_versions
import time:       165 |        557 |                 wcwidth.wcwidth
import time:       119 |        675 |               wcwidth
import time:       623 |        623 |                 html.entities
import time:       315 |        937 |               html
import time:      1428 |       3039 |             tabulate
import time:       300 |        300 |             pymatgen.core.bonds
import time:        97 |         97 |               pymatgen.symmetry
import time:       446 |        446 |                   _sqlite3
import time:       244 |        690 |                 sqlite3.dbapi2
import time:       102 |        791 |               sqlite3
import time:       130 |        130 |               monty.design_patterns
import time:     12118 |      12118 |               pymatgen.symmetry.groups
import time:       175 |        175 |               pymatgen.symmetry.settings
import time:       315 |      13622 |             pymatgen.symmetry.maggroups
import time:      3270 |      20231 |           pymatgen.core.structure
import time:       483 |      52932 |         pymatgen.core
import time:       149 |      53166 |       dpdata.pymatgen.molecule
import time:       285 |        285 |         lmp
import time:       295 |        579 |       dpdata.lammps.dump
import time:       113 |        113 |       dpdata.lammps.lmp
import time:       873 |        873 |       dpdata.driver
import time:       146 |        146 |               ase.data.vdw
import time:       285 |        430 |             ase.data
import time:       224 |        654 |           ase.atom
import time:       176 |        176 |             ase.units
import time:       497 |        497 |                   ase.formula
import time:       373 |        870 |                 ase.utils
import time:       179 |       1048 |               ase.utils.arraywrapper
import time:       738 |       1786 |             ase.cell
import time:       121 |        121 |             ase.stress
import time:       125 |        125 |               ase.geometry.cell
import time:       126 |        126 |                 ase.geometry.minkowski_reduction
import time:       133 |        259 |               ase.geometry.geometry
import time:        74 |         74 |               ase.geometry.distance
import time:       102 |        558 |             ase.geometry
import time:       199 |        199 |             ase.symbols
import time:       597 |       3436 |           ase.atoms
import time:       176 |        176 |           ase.parallel
import time:       159 |       4424 |         ase
import time:        71 |         71 |             ase.calculators
import time:       306 |        306 |               ase.outputs
import time:       151 |        151 |               ase.calculators.abc
import time:       496 |        952 |             ase.calculators.calculator
import time:       204 |       1226 |           ase.calculators.singlepoint
import time:       379 |        379 |                   scipy.linalg._fblas
import time:        72 |         72 |                   scipy.linalg._cblas
import time:        30 |         30 |                   scipy.linalg._fblas_64
import time:       208 |        689 |                 scipy.linalg.blas
import time:       608 |        608 |                   scipy.linalg._flapack
import time:        52 |         52 |                   scipy.linalg._clapack
import time:        30 |         30 |                   scipy.linalg._flapack_64
import time:       347 |        347 |                   scipy._lib._util
import time:       973 |       2007 |                 scipy.linalg.lapack
import time:       166 |       2860 |               scipy.linalg.misc
import time:       152 |        152 |                   scipy.linalg._flinalg
import time:       137 |        289 |                 scipy.linalg.flinalg
import time:       217 |        217 |                 scipy.linalg.decomp
import time:       107 |        107 |                 scipy.linalg.decomp_svd
import time:       197 |        197 |                 scipy.linalg._solve_toeplitz
import time:       285 |       1093 |               scipy.linalg.basic
import time:       100 |        100 |               scipy.linalg.decomp_lu
import time:        95 |         95 |               scipy.linalg._decomp_ldl
import time:        87 |         87 |               scipy.linalg.decomp_cholesky
import time:        98 |         98 |               scipy.linalg.decomp_qr
import time:        98 |         98 |               scipy.linalg._decomp_qz
import time:       198 |        198 |               scipy.linalg.decomp_schur
import time:        85 |         85 |               scipy.linalg._decomp_polar
import time:       149 |        149 |                 scipy.linalg.special_matrices
import time:        99 |         99 |                 scipy.linalg._expm_frechet
import time:       194 |        194 |                   scipy.linalg._matfuncs_sqrtm_triu
import time:       110 |        304 |                 scipy.linalg._matfuncs_sqrtm
import time:       223 |        773 |               scipy.linalg.matfuncs
import time:       145 |        145 |               scipy.linalg._solvers
import time:        69 |         69 |               scipy.linalg._procrustes
import time:       281 |        281 |                 scipy.linalg.cython_blas
import time:       906 |        906 |                 scipy.linalg.cython_lapack
import time:       219 |       1405 |               scipy.linalg._decomp_update
import time:       133 |        133 |                     scipy.sparse.sputils
import time:       378 |        510 |                   scipy.sparse.base
import time:       853 |        853 |                     scipy.sparse._sparsetools
import time:       198 |        198 |                       scipy.sparse.data
import time:       148 |        148 |                       scipy.sparse.dia
import time:       119 |        119 |                       scipy.sparse._index
import time:       454 |        917 |                     scipy.sparse.compressed
import time:       151 |       1920 |                   scipy.sparse.csr
import time:       118 |        118 |                   scipy.sparse.csc
import time:       477 |        477 |                     scipy.sparse._csparsetools
import time:       652 |       1129 |                   scipy.sparse.lil
import time:       212 |        212 |                   scipy.sparse.dok
import time:       164 |        164 |                   scipy.sparse.coo
import time:       245 |        245 |                   scipy.sparse.bsr
import time:       156 |        156 |                   scipy.sparse.construct
import time:        78 |         78 |                   scipy.sparse.extract
import time:        78 |         78 |                   scipy.sparse._matrix_io
import time:       117 |        117 |                     scipy.sparse.csgraph._laplacian
import time:       157 |        157 |                         scipy.sparse.csgraph._tools
import time:       108 |        265 |                       scipy.sparse.csgraph._validation
import time:       242 |        507 |                     scipy.sparse.csgraph._shortest_path
import time:       150 |        150 |                     scipy.sparse.csgraph._traversal
import time:       189 |        189 |                     scipy.sparse.csgraph._min_spanning_tree
import time:       261 |        261 |                     scipy.sparse.csgraph._flow
import time:       197 |        197 |                     scipy.sparse.csgraph._matching
import time:       188 |        188 |                     scipy.sparse.csgraph._reordering
import time:       143 |       1749 |                   scipy.sparse.csgraph
import time:       293 |       6645 |                 scipy.sparse
import time:       102 |       6746 |               scipy.linalg._sketches
import time:       126 |        126 |               scipy.linalg._decomp_cossin
import time:       246 |      14218 |             scipy.linalg
import time:       121 |        121 |             ase.utils.parsemath
import time:       818 |      15155 |           ase.constraints
import time:       208 |        208 |           ase.io.jsonio
import time:       186 |        186 |           ase.io.pickletrajectory
import time:       281 |      17055 |         ase.io.trajectory
import time:       275 |        275 |           ase.io.ulm
import time:       250 |        525 |         ase.io.bundletrajectory
import time:       246 |        246 |         ase.io.netcdftrajectory
import time:       673 |        673 |         ase.io.formats
import time:       132 |      23052 |       ase.io
import time:        79 |         79 |         dpdata.cp2k
import time:       197 |        197 |         dpdata.unit
import time:        83 |         83 |         dpdata.cp2k.cell
import time:       401 |        759 |       dpdata.cp2k.output
import time:        72 |         72 |         dpdata.gaussian
import time:       176 |        176 |             swig_runtime_data4
import time:      8634 |       8810 |           openbabel.openbabel
import time:       196 |       9006 |         openbabel
import time:       233 |       9309 |       dpdata.gaussian.gjf
import time:       192 |        192 |       dpdata.gaussian.log
import time:      1198 |       1198 |         h5py._errors
import time:       569 |        569 |             h5py.defs
import time:       209 |        209 |             h5py._objects
import time:       116 |        116 |             h5py.h5py_warnings
import time:       225 |       1118 |           h5py.h5
import time:       263 |       1381 |         h5py.version
import time:       167 |        167 |           h5py.h5r
import time:       126 |        126 |                 h5py.utils
import time:       265 |        391 |               h5py.h5s
import time:       121 |        121 |               h5py.h5ac
import time:       623 |       1134 |             h5py.h5p
import time:       899 |       2033 |           h5py.h5t
import time:       275 |       2474 |         h5py._conv
import time:       186 |        186 |         h5py.h5z
import time:       132 |        132 |           h5py._proxy
import time:       259 |        391 |         h5py.h5a
import time:       370 |        370 |         h5py.h5d
import time:       190 |        190 |         h5py.h5ds
import time:       312 |        312 |           h5py.h5g
import time:       163 |        163 |           h5py.h5i
import time:       298 |        772 |         h5py.h5f
import time:       218 |        218 |         h5py.h5fd
import time:       131 |        131 |         h5py.h5pl
import time:        98 |         98 |         h5py._hl
import time:        82 |         82 |           h5py._hl.compat
import time:       284 |        366 |         h5py._hl.filters
import time:       475 |        475 |         h5py._hl.base
import time:       252 |        252 |             h5py.h5o
import time:       219 |        219 |             h5py.h5l
import time:       160 |        160 |                 backports_abc
import time:       388 |        547 |               h5py._selector
import time:       201 |        201 |               h5py._hl.selections
import time:        99 |         99 |               h5py._hl.selections2
import time:       100 |        100 |               h5py._hl.datatype
import time:       235 |        235 |               h5py._hl.vds
import time:       430 |       1610 |             h5py._hl.dataset
import time:       410 |       2489 |           h5py._hl.group
import time:       278 |       2767 |         h5py._hl.files
import time:       176 |        176 |         h5py._hl.attrs
import time:       429 |      11614 |       h5py
import time:       101 |        101 |         dpdata.deepmd
import time:        84 |         84 |         dpdata.deepmd.raw
import time:       175 |        359 |       dpdata.deepmd.comp
import time:       553 |        553 |             wcmatch.__meta__
import time:       113 |        666 |           wcmatch
import time:       380 |        380 |             bracex.__meta__
import time:       700 |       1079 |           bracex
import time:       791 |        791 |             wcmatch.util
import time:       109 |        109 |             wcmatch.posix
import time:       938 |        938 |             wcmatch._wcmatch
import time:      5316 |       7153 |           wcmatch._wcparse
import time:      1273 |      10169 |         wcmatch.glob
import time:       151 |      10320 |       dpdata.deepmd.hdf5
import time:       242 |        242 |       dpdata.deepmd.mixed
import time:       102 |        102 |         dpdata.fhi_aims
import time:       183 |        284 |       dpdata.fhi_aims.output
import time:      2559 |       2559 |           rdkit.rdBase
import time:       228 |       2787 |         rdkit
import time:        98 |         98 |           rdkit.RDPaths
import time:       160 |        160 |           pyPgSQL
import time:       194 |        451 |         rdkit.RDConfig
import time:      4763 |       4763 |           rdkit.DataStructs.cDataStructs
import time:       160 |       4923 |         rdkit.DataStructs
import time:      1427 |       1427 |           rdkit.Geometry.rdGeometry
import time:       159 |       1585 |         rdkit.Geometry
import time:      8377 |       8377 |         rdkit.Chem.rdchem
import time:      6005 |       6005 |         rdkit.Chem.rdmolfiles
import time:      6171 |       6171 |         rdkit.Chem.rdmolops
import time:       573 |        573 |         rdkit.Chem.rdCIPLabeler
import time:      1347 |       1347 |           rdkit.Chem.rdinchi
import time:       193 |        193 |           rdkit.RDLogger
import time:       277 |       1815 |         rdkit.Chem.inchi
import time:       764 |        764 |         rdkit.Chem.rdMolInterchange
import time:       703 |        703 |         rdkit.Chem.rdCoordGen
import time:       396 |      34545 |       rdkit.Chem
import time:       122 |        122 |         dpdata.rdkit
import time:       187 |        309 |       dpdata.rdkit.utils
import time:        79 |         79 |         dpdata.amber
import time:       106 |        106 |                 scipy._lib.doccer
import time:        82 |         82 |                 scipy.io.matlab.byteordercodes
import time:       268 |        455 |               scipy.io.matlab.miobase
import time:       164 |        164 |                 scipy.io.matlab.mio_utils
import time:       303 |        467 |               scipy.io.matlab.mio4
import time:       193 |        193 |                   scipy.io.matlab.streams
import time:       306 |        306 |                   scipy.io.matlab.mio5_params
import time:       314 |        811 |                 scipy.io.matlab.mio5_utils
import time:       510 |       1321 |               scipy.io.matlab.mio5
import time:       324 |       2565 |             scipy.io.matlab.mio
import time:       129 |       2694 |           scipy.io.matlab
import time:       287 |        287 |           scipy.io.netcdf
import time:       159 |        159 |           scipy.io._fortran
import time:       283 |        283 |           scipy.io.mmio
import time:       234 |        234 |           scipy.io.idl
import time:       163 |        163 |               scipy.io.harwell_boeing._fortran_format_parser
import time:       229 |        392 |             scipy.io.harwell_boeing.hb
import time:        96 |        488 |           scipy.io.harwell_boeing
import time:       146 |       4288 |         scipy.io
import time:       107 |        107 |             parmed._version
import time:       403 |        403 |             parmed.exceptions
import time:       172 |        172 |             parmed.periodic_table
import time:       263 |        263 |             parmed.residue
import time:       130 |        130 |                 openmm
import time:        13 |        143 |               openmm.unit
import time:       149 |        149 |                 parmed.unit.mymatrix
import time:       147 |        147 |                 parmed.unit.baseunit
import time:        85 |         85 |                   parmed.unit.basedimension
import time:        86 |        171 |                 parmed.unit.standard_dimensions
import time:       226 |        690 |               parmed.unit.unit
import time:       171 |        171 |               parmed.unit.quantity
import time:        81 |         81 |                   parmed.unit.unit_operators
import time:       119 |        119 |                   parmed.unit.prefix
import time:     29379 |      29578 |                 parmed.unit.unit_definitions
import time:       297 |      29874 |               parmed.unit.unit_math
import time:       647 |        647 |               parmed.unit.constants
import time:      1005 |      32528 |             parmed.unit
import time:       139 |        139 |               parmed.utils.pairlist
import time:       449 |        449 |                 parmed.constants
import time:       135 |        135 |                       openmm
import time:        72 |        207 |                     openmm.vec3
import time:       208 |        414 |                   parmed.vec3
import time:       158 |        572 |                 parmed.geometry
import time:      1831 |       2850 |               parmed.topologyobjects
import time:       235 |       3223 |             parmed.utils
import time:       127 |        127 |                 openmm
import time:       193 |        319 |               parmed.utils.decorators
import time:       163 |        163 |                 parmed.rdkit.rdkit
import time:        95 |        258 |               parmed.rdkit
import time:       104 |        104 |               openmm
import time:       871 |       1550 |             parmed.structure
import time:       144 |        144 |                           urllib.response
import time:       205 |        348 |                         urllib.error
import time:       720 |        720 |                             http
import time:      1098 |       1098 |                               _ssl
import time:      3540 |       4637 |                             ssl
import time:       853 |       6209 |                           http.client
import time:      1170 |       7379 |                         urllib.request
import time:       161 |       7887 |                       parmed.utils.io
import time:       142 |       8029 |                     parmed.formats.registry
import time:       357 |        357 |                           parmed.modeller.residue
import time:      2703 |       2703 |                           parmed.amber.offlib
import time:     14092 |      14092 |                           parmed.modeller.standardtemplates
import time:       171 |      17321 |                         parmed.modeller
import time:        25 |      17346 |                       parmed.modeller.residue
import time:       366 |      17711 |                     parmed.formats.mol2
import time:       427 |        427 |                       ftplib
import time:       320 |        320 |                           parmed.formats.pdbx.PdbxContainers
import time:       315 |        635 |                         parmed.formats.pdbx.PdbxReader
import time:       144 |        144 |                         parmed.formats.pdbx.PdbxWriter
import time:       155 |        933 |                       parmed.formats.pdbx
import time:       102 |        102 |                       parmed.symmetry
import time:      1005 |       2465 |                     parmed.formats.pdb
import time:       220 |        220 |                     parmed.formats.pqr
import time:       586 |        586 |                           parmed.charmm.psf
import time:       175 |        175 |                             parmed.parameters
import time:       141 |        141 |                             parmed.charmm._charmmfile
import time:       496 |        812 |                           parmed.charmm.parameters
import time:       211 |        211 |                           parmed.charmm.charmmcrds
import time:       132 |       1740 |                         parmed.charmm
import time:        19 |       1759 |                       parmed.charmm.psf
import time:       190 |       1948 |                     parmed.formats.psf
import time:       123 |        123 |                     parmed.formats.sdf
import time:       140 |      30632 |                   parmed.formats
import time:        17 |      30648 |                 parmed.formats.registry
import time:       195 |        195 |                         cmd
import time:       285 |        285 |                         bdb
import time:       149 |        149 |                           codeop
import time:       174 |        322 |                         code
import time:       613 |       1413 |                       pdb
import time:       105 |        105 |                         parmed.utils.fortranformat._exceptions
import time:       457 |        561 |                       parmed.utils.fortranformat._edit_descriptors
import time:       122 |        122 |                       parmed.utils.fortranformat._misc
import time:       131 |        131 |                       parmed.utils.fortranformat.config
import time:       191 |       2416 |                     parmed.utils.fortranformat._input
import time:       153 |        153 |                       parmed.utils.fortranformat._lexer
import time:       171 |        324 |                     parmed.utils.fortranformat._parser
import time:       169 |       2908 |                   parmed.utils.fortranformat.FortranRecordReader
import time:       177 |        177 |                     parmed.utils.fortranformat._output
import time:       128 |        305 |                   parmed.utils.fortranformat.FortranRecordWriter
import time:       114 |       3326 |                 parmed.utils.fortranformat
import time:       792 |      34765 |               parmed.amber.amberformat
import time:       434 |        434 |               parmed.amber.asciicrd
import time:       277 |        277 |               parmed.amber.mask
import time:       254 |        254 |                     backports_abc
import time:       852 |        852 |                     netCDF4.utils
import time:       109 |        109 |                     netCDF4.sys
import time:        42 |         42 |                     netCDF4.posixpath
import time:        38 |         38 |                     netCDF4.cftime
import time:      2545 |       2545 |                       cftime._cftime
import time:       351 |       2895 |                     cftime
import time:        91 |         91 |                     netCDF4.numpy
import time:        50 |         50 |                     netCDF4.weakref
import time:        48 |         48 |                     netCDF4.warnings
import time:        47 |         47 |                     netCDF4.subprocess
import time:        45 |         45 |                     netCDF4.pathlib
import time:        44 |         44 |                     netCDF4.glob
import time:        44 |         44 |                     netCDF4.numpy
import time:      5043 |       9596 |                   netCDF4._netCDF4
import time:       266 |       9861 |                 netCDF4
import time:       501 |        501 |                 parmed.utils.netcdf
import time:       338 |      10700 |               parmed.amber.netcdffiles
import time:      3139 |       3139 |               parmed.amber.parameters
import time:       255 |        255 |                   openmm
import time:       631 |        885 |                 parmed.amber._amberparm
import time:       246 |        246 |                 parmed.amber._chamberparm
import time:       371 |        371 |                 parmed.amber._tinkerparm
import time:       206 |       1708 |               parmed.amber.readparm
import time:       743 |        743 |               parmed.amber.titratable_residues
import time:       224 |      51986 |             parmed.amber
import time:       754 |        754 |                   parmed.gromacs._cpp
import time:       187 |        941 |                 parmed.gromacs._gromacsfile
import time:       959 |       1900 |               parmed.gromacs.gromacstop
import time:       242 |        242 |               parmed.gromacs.gromacsgro
import time:     78553 |      80694 |             parmed.gromacs
import time:       212 |        212 |               parmed.dlpoly.dlpolyfield
import time:       130 |        130 |               parmed.dlpoly.dlpolyconfig
import time:       112 |        452 |             parmed.dlpoly
import time:       180 |        180 |               parmed.namd.namdbinfiles
import time:        95 |        274 |             parmed.namd
import time:       579 |        579 |               parmed.openmm.reporters
import time:       124 |        124 |                 lxml
import time:       169 |        169 |                   backports_abc
import time:       131 |        131 |                     backports_abc
import time:       638 |        769 |                   lxml._elementpath
import time:       117 |        117 |                   rnc2rng
import time:      3598 |       4651 |                 lxml.etree
import time:       409 |       5184 |               parmed.openmm.parameters
import time:       203 |        203 |               parmed.openmm.topsystem
import time:       111 |        111 |               parmed.openmm.utils
import time:       192 |        192 |               parmed.openmm.xmlfile
import time:       120 |       6386 |             parmed.openmm
import time:       105 |        105 |                 pyrosetta
import time:       135 |        239 |               parmed.rosetta.pose
import time:        86 |        325 |             parmed.rosetta
import time:       180 |        180 |               parmed.tinker.tinkerfiles
import time:        80 |        259 |             parmed.tinker
import time:       195 |        195 |                   sierra
import time:        70 |        264 |                 parmed.entos.imports
import time:       213 |        477 |               parmed.entos.converters
import time:        84 |        560 |             parmed.entos
import time:       451 |        451 |                   parmed.tools.exceptions
import time:       240 |        691 |                 parmed.tools.argumentlist
import time:       105 |        105 |                 parmed.tools.parmlist
import time:      1289 |       2084 |               parmed.tools.actions
import time:       120 |       2204 |             parmed.tools
import time:       771 |     182151 |           parmed
import time:        99 |     182249 |         dpdata.amber.mask
import time:       172 |     186787 |       dpdata.amber.md
import time:       160 |        160 |       dpdata.amber.sqm
import time:        95 |         95 |         dpdata.psi4
import time:       186 |        281 |       dpdata.psi4.output
import time:        92 |         92 |         dpdata.qe
import time:       167 |        258 |       dpdata.qe.scf
import time:       173 |        173 |       dpdata.qe.traj
import time:        84 |         84 |         dpdata.gromacs
import time:       159 |        243 |       dpdata.gromacs.gro
import time:       140 |        140 |       dpdata.vasp.outcar
import time:       101 |        101 |       dpdata.vasp.poscar
import time:       112 |        112 |             xml
import time:       756 |        867 |           xml.etree
import time:       434 |        434 |           xml.etree.ElementPath
import time:       343 |        343 |             pyexpat
import time:       499 |        842 |           _elementtree
import time:       586 |       2728 |         xml.etree.ElementTree
import time:       111 |       2838 |       dpdata.vasp.xml
import time:       131 |        131 |       dpdata.utils
import time:        81 |         81 |         dpdata.abacus
import time:       150 |        150 |         dpdata.abacus.scf
import time:       164 |        394 |       dpdata.abacus.md
import time:       102 |        102 |       dpdata.abacus.relax
import time:       275 |        275 |       encodings.cp437
import time:       314 |        314 |       dpdata.data_type
import time:     18046 |     358465 |     dpdata.plugins
import time:      1260 |     651936 |   dpdata.system
import time:       113 |        113 |   dpdata._version
import time:       346 |        346 |     dpdata.rdkit.sanitize
import time:       200 |        546 |   dpdata.bond_order_system
import time:       264 |     653120 | dpdata
```

</details>
@link89 it will be helpful if you show the output of `python -X importtime -c 'import dpdata'` to let us know which module takes the longest time.
[log.txt](https://github.com/deepmodeling/dpdata/files/12472277/log.txt)
Here is the log.
![image](https://github.com/deepmodeling/dpdata/assets/9496702/1816132b-ebc6-4333-a710-3f300bd9cd65)


Fix patch:
diff --git a/dpdata/__init__.py b/dpdata/__init__.py
index dd853697..847554d3 100644
--- a/dpdata/__init__.py
+++ b/dpdata/__init__.py
@@ -1,17 +1,5 @@
-# monty needs lzma
-# See https://github.com/pandas-dev/pandas/pull/27882
-try:
-    import lzma  # noqa: F401
-except ImportError:
-
-    class fakemodule:
-        pass
-
-    import sys
-
-    sys.modules["lzma"] = fakemodule
-
 from . import lammps, md, vasp
+from .bond_order_system import BondOrderSystem
 from .system import LabeledSystem, MultiSystems, System
 
 try:
@@ -19,18 +7,6 @@ class fakemodule:
 except ImportError:
     from .__about__ import __version__
 
-# BondOrder System has dependency on rdkit
-try:
-    # prevent conflict with dpdata.rdkit
-    import rdkit as _  # noqa: F401
-
-    USE_RDKIT = True
-except ModuleNotFoundError:
-    USE_RDKIT = False
-
-if USE_RDKIT:
-    from .bond_order_system import BondOrderSystem
-
 __all__ = [
     "__version__",
     "lammps",
diff --git a/dpdata/amber/md.py b/dpdata/amber/md.py
index 279ce55e..91240121 100644
--- a/dpdata/amber/md.py
+++ b/dpdata/amber/md.py
@@ -2,7 +2,6 @@
 import re
 
 import numpy as np
-from scipy.io import netcdf_file
 
 from dpdata.amber.mask import pick_by_amber_mask
 from dpdata.unit import EnergyConversion
@@ -44,6 +43,8 @@ def read_amber_traj(
     labeled : bool
         Whether to return labeled data
     """
+    from scipy.io import netcdf_file
+
     flag_atom_type = False
     flag_atom_numb = False
     amber_types = []
diff --git a/dpdata/ase_calculator.py b/dpdata/ase_calculator.py
index 65a462a5..c0579978 100644
--- a/dpdata/ase_calculator.py
+++ b/dpdata/ase_calculator.py
@@ -1,6 +1,6 @@
 from typing import TYPE_CHECKING, List, Optional
 
-from ase.calculators.calculator import (
+from ase.calculators.calculator import (  # noqa: TID253
     Calculator,
     PropertyNotImplementedError,
     all_changes,
diff --git a/dpdata/bond_order_system.py b/dpdata/bond_order_system.py
index e2449ee6..1b6f903d 100644
--- a/dpdata/bond_order_system.py
+++ b/dpdata/bond_order_system.py
@@ -3,7 +3,6 @@
 from copy import deepcopy
 
 import numpy as np
-from rdkit.Chem import Conformer
 
 import dpdata.rdkit.utils
 from dpdata.rdkit.sanitize import Sanitizer
@@ -102,6 +101,8 @@ def from_fmt_obj(self, fmtobj, file_name, **kwargs):
         return self
 
     def to_fmt_obj(self, fmtobj, *args, **kwargs):
+        from rdkit.Chem import Conformer
+
         self.rdkit_mol.RemoveAllConformers()
         for ii in range(self.get_nframes()):
             conf = Conformer()
diff --git a/dpdata/deepmd/hdf5.py b/dpdata/deepmd/hdf5.py
index 992a1344..34ae9dbe 100644
--- a/dpdata/deepmd/hdf5.py
+++ b/dpdata/deepmd/hdf5.py
@@ -3,16 +3,15 @@
 from __future__ import annotations
 
 import warnings
+from typing import TYPE_CHECKING
 
-try:
-    import h5py
-except ImportError:
-    pass
 import numpy as np
-from wcmatch.glob import globfilter
 
 import dpdata
 
+if TYPE_CHECKING:
+    import h5py
+
 __all__ = ["to_system_data", "dump"]
 
 
@@ -35,6 +34,8 @@ def to_system_data(
     labels : bool
         labels
     """
+    from wcmatch.glob import globfilter
+
     g = f[folder] if folder else f
 
     data = {}
diff --git a/dpdata/gaussian/gjf.py b/dpdata/gaussian/gjf.py
index 21300a60..90aaf2f0 100644
--- a/dpdata/gaussian/gjf.py
+++ b/dpdata/gaussian/gjf.py
@@ -10,16 +10,7 @@
 from typing import List, Optional, Tuple, Union
 
 import numpy as np
-from scipy.sparse import csr_matrix
-from scipy.sparse.csgraph import connected_components
 
-try:
-    from openbabel import openbabel
-except ImportError:
-    try:
-        import openbabel
-    except ImportError:
-        openbabel = None
 from dpdata.periodic_table import Element
 
 
@@ -53,10 +44,13 @@ def _crd2frag(symbols: List[str], crds: np.ndarray) -> Tuple[int, List[int]]:
     ImportError
         if Open Babel is not installed
     """
-    if openbabel is None:
-        raise ImportError(
-            "Open Babel (Python interface) should be installed to detect fragmentation!"
-        )
+    from scipy.sparse import csr_matrix
+    from scipy.sparse.csgraph import connected_components
+
+    try:
+        from openbabel import openbabel
+    except ImportError:
+        import openbabel
     atomnumber = len(symbols)
     # Use openbabel to connect atoms
     mol = openbabel.OBMol()
diff --git a/dpdata/periodic_table.py b/dpdata/periodic_table.py
index b05a2cfb..6df1fd41 100644
--- a/dpdata/periodic_table.py
+++ b/dpdata/periodic_table.py
@@ -1,9 +1,9 @@
+import json
 from pathlib import Path
 
-from monty.serialization import loadfn
-
-fpdt = str(Path(__file__).absolute().parent / "periodic_table.json")
-_pdt = loadfn(fpdt)
+fpdt = Path(__file__).absolute().parent / "periodic_table.json"
+with fpdt.open("r") as fpdt:
+    _pdt = json.load(fpdt)
 ELEMENTS = [
     "H",
     "He",
diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py
index 127611f6..f3347c99 100644
--- a/dpdata/plugins/ase.py
+++ b/dpdata/plugins/ase.py
@@ -6,15 +6,9 @@
 from dpdata.driver import Driver, Minimizer
 from dpdata.format import Format
 
-try:
-    import ase.io
-    from ase.calculators.calculator import PropertyNotImplementedError
-    from ase.io import Trajectory
-
-    if TYPE_CHECKING:
-        from ase.optimize.optimize import Optimizer
-except ImportError:
-    pass
+if TYPE_CHECKING:
+    import ase
+    from ase.optimize.optimize import Optimizer
 
 
 @Format.register("ase/structure")
@@ -84,6 +78,8 @@ def from_labeled_system(self, atoms: "ase.Atoms", **kwargs) -> dict:
             ASE will raise RuntimeError if the atoms does not
             have a calculator
         """
+        from ase.calculators.calculator import PropertyNotImplementedError
+
         info_dict = self.from_system(atoms)
         try:
             energies = atoms.get_potential_energy(force_consistent=True)
@@ -137,6 +133,8 @@ def from_multi_systems(
         ase.Atoms
             ASE atoms in the file
         """
+        import ase.io
+
         frames = ase.io.read(file_name, format=ase_fmt, index=slice(begin, end, step))
         yield from frames
 
@@ -222,6 +220,8 @@ def from_system(
         dict_frames: dict
             a dictionary containing data of multiple frames
         """
+        from ase.io import Trajectory
+
         traj = Trajectory(file_name)
         sub_traj = traj[begin:end:step]
         dict_frames = ASEStructureFormat().from_system(sub_traj[0])
@@ -264,6 +264,8 @@ def from_labeled_system(
         dict_frames: dict
             a dictionary containing data of multiple frames
         """
+        from ase.io import Trajectory
+
         traj = Trajectory(file_name)
         sub_traj = traj[begin:end:step]
 
diff --git a/dpdata/plugins/deepmd.py b/dpdata/plugins/deepmd.py
index 9daadcf3..1ed79f72 100644
--- a/dpdata/plugins/deepmd.py
+++ b/dpdata/plugins/deepmd.py
@@ -1,11 +1,8 @@
 from __future__ import annotations
 
 import os
+from typing import TYPE_CHECKING
 
-try:
-    import h5py
-except ImportError:
-    pass
 import numpy as np
 
 import dpdata
@@ -16,6 +13,9 @@
 from dpdata.driver import Driver
 from dpdata.format import Format
 
+if TYPE_CHECKING:
+    import h5py
+
 
 @Format.register("deepmd")
 @Format.register("deepmd/raw")
@@ -202,6 +202,8 @@ def _from_system(
         TypeError
             file_name is not str or h5py.Group or h5py.File
         """
+        import h5py
+
         if isinstance(file_name, (h5py.Group, h5py.File)):
             return dpdata.deepmd.hdf5.to_system_data(
                 file_name, "", type_map=type_map, labels=labels
@@ -300,6 +302,8 @@ def to_system(
         **kwargs : dict
             other parameters
         """
+        import h5py
+
         if isinstance(file_name, (h5py.Group, h5py.File)):
             dpdata.deepmd.hdf5.dump(
                 file_name, "", data, set_size=set_size, comp_prec=comp_prec
@@ -330,6 +334,8 @@ def from_multi_systems(self, directory: str, **kwargs) -> h5py.Group:
         h5py.Group
             a HDF5 group in the HDF5 file
         """
+        import h5py
+
         with h5py.File(directory, "r") as f:
             for ff in f.keys():
                 yield f[ff]
@@ -353,6 +359,8 @@ def to_multi_systems(
         h5py.Group
             a HDF5 group with the name of formula
         """
+        import h5py
+
         with h5py.File(directory, "w") as f:
             for ff in formulas:
                 yield f.create_group(ff)
diff --git a/dpdata/plugins/rdkit.py b/dpdata/plugins/rdkit.py
index ff7638cb..c7cef07f 100644
--- a/dpdata/plugins/rdkit.py
+++ b/dpdata/plugins/rdkit.py
@@ -1,20 +1,18 @@
+import dpdata.rdkit.utils
 from dpdata.format import Format
 
-try:
-    import rdkit.Chem
-
-    import dpdata.rdkit.utils
-except ModuleNotFoundError:
-    pass
-
 
 @Format.register("mol")
 @Format.register("mol_file")
 class MolFormat(Format):
     def from_bond_order_system(self, file_name, **kwargs):
+        import rdkit.Chem
+
         return rdkit.Chem.MolFromMolFile(file_name, sanitize=False, removeHs=False)
 
     def to_bond_order_system(self, data, mol, file_name, frame_idx=0, **kwargs):
+        import rdkit.Chem
+
         assert frame_idx < mol.GetNumConformers()
         rdkit.Chem.MolToMolFile(mol, file_name, confId=frame_idx)
 
@@ -24,6 +22,8 @@ def to_bond_order_system(self, data, mol, file_name, frame_idx=0, **kwargs):
 class SdfFormat(Format):
     def from_bond_order_system(self, file_name, **kwargs):
         """Note that it requires all molecules in .sdf file must be of the same topology."""
+        import rdkit.Chem
+
         mols = [
             m
             for m in rdkit.Chem.SDMolSupplier(file_name, sanitize=False, removeHs=False)
@@ -35,6 +35,8 @@ def from_bond_order_system(self, file_name, **kwargs):
         return mol
 
     def to_bond_order_system(self, data, mol, file_name, frame_idx=-1, **kwargs):
+        import rdkit.Chem
+
         sdf_writer = rdkit.Chem.SDWriter(file_name)
         if frame_idx == -1:
             for ii in range(mol.GetNumConformers()):
diff --git a/dpdata/pymatgen/molecule.py b/dpdata/pymatgen/molecule.py
index 13d4046c..fc05b07a 100644
--- a/dpdata/pymatgen/molecule.py
+++ b/dpdata/pymatgen/molecule.py
@@ -1,13 +1,11 @@
-import numpy as np
-
-try:
-    from pymatgen.core import Molecule
-except ImportError:
-    pass
 from collections import Counter
 
+import numpy as np
+
 
 def to_system_data(file_name, protect_layer=9):
+    from pymatgen.core import Molecule
+
     mol = Molecule.from_file(file_name)
     elem_mol = list(str(site.species.elements[0]) for site in mol.sites)
     elem_counter = Counter(elem_mol)
diff --git a/dpdata/pymatgen/structure.py b/dpdata/pymatgen/structure.py
index b6c148da..9f47baee 100644
--- a/dpdata/pymatgen/structure.py
+++ b/dpdata/pymatgen/structure.py
@@ -1,10 +1,5 @@
 import numpy as np
 
-try:
-    from pymatgen.core import Structure  # noqa: F401
-except ImportError:
-    pass
-
 
 def from_system_data(structure) -> dict:
     symbols = [site.species_string for site in structure]
diff --git a/dpdata/rdkit/sanitize.py b/dpdata/rdkit/sanitize.py
index 061de3d9..45060abc 100644
--- a/dpdata/rdkit/sanitize.py
+++ b/dpdata/rdkit/sanitize.py
@@ -2,17 +2,6 @@
 import time
 from copy import deepcopy
 
-from rdkit import Chem
-from rdkit.Chem.rdchem import BondType
-
-# openbabel
-try:
-    from openbabel import openbabel
-
-    USE_OBABEL = True
-except ModuleNotFoundError as e:
-    USE_OBABEL = False
-
 
 def get_explicit_valence(atom, verbose=False):
     exp_val_calculated_from_bonds = int(
@@ -32,6 +21,8 @@ def get_explicit_valence(atom, verbose=False):
 
 def regularize_formal_charges(mol, sanitize=True, verbose=False):
     """Regularize formal charges of atoms."""
+    from rdkit import Chem
+
     assert isinstance(mol, Chem.rdchem.Mol)
     for atom in mol.GetAtoms():
         assign_formal_charge_for_atom(atom, verbose)
@@ -47,6 +38,8 @@ def regularize_formal_charges(mol, sanitize=True, verbose=False):
 
 def assign_formal_charge_for_atom(atom, verbose=False):
     """Assigen formal charge according to 8-electron rule for element B,C,N,O,S,P,As."""
+    from rdkit import Chem
+
     assert isinstance(atom, Chem.rdchem.Atom)
     valence = get_explicit_valence(atom, verbose)
     if atom.GetSymbol() == "B":
@@ -135,6 +128,8 @@ def get_terminal_NR2s(atom):
 
 
 def sanitize_phosphate_Patom(P_atom, verbose=True):
+    from rdkit import Chem
+
     if P_atom.GetSymbol() == "P":
         terminal_oxygens = get_terminal_oxygens(P_atom)
         mol = P_atom.GetOwningMol()
@@ -161,6 +156,8 @@ def sanitize_phosphate(mol):
 
 
 def sanitize_sulfate_Satom(S_atom, verbose=True):
+    from rdkit import Chem
+
     if S_atom.GetSymbol() == "S":
         terminal_oxygens = get_terminal_oxygens(S_atom)
         mol = S_atom.GetOwningMol()
@@ -187,6 +184,8 @@ def sanitize_sulfate(mol):
 
 
 def sanitize_carboxyl_Catom(C_atom, verbose=True):
+    from rdkit import Chem
+
     if C_atom.GetSymbol() == "C":
         terminal_oxygens = get_terminal_oxygens(C_atom)
         mol = C_atom.GetOwningMol()
@@ -214,6 +213,8 @@ def sanitize_carboxyl(mol):
 
 
 def sanitize_guanidine_Catom(C_atom, verbose=True):
+    from rdkit import Chem
+
     if C_atom.GetSymbol() == "C":
         terminal_NR2s = get_terminal_NR2s(C_atom)
         mol = C_atom.GetOwningMol()
@@ -241,6 +242,8 @@ def sanitize_guanidine(mol):
 
 
 def sanitize_nitro_Natom(N_atom, verbose=True):
+    from rdkit import Chem
+
     if N_atom.GetSymbol() == "N":
         terminal_oxygens = get_terminal_oxygens(N_atom)
         mol = N_atom.GetOwningMol()
@@ -275,6 +278,8 @@ def is_terminal_nitrogen(N_atom):
 
 
 def sanitize_nitrine_Natom(atom, verbose=True):
+    from rdkit import Chem
+
     if atom.GetSymbol() == "N" and len(atom.GetNeighbors()) == 2:
         mol = atom.GetOwningMol()
         nei1, nei2 = atom.GetNeighbors()[0], atom.GetNeighbors()[1]
@@ -312,6 +317,8 @@ def contain_hetero_aromatic(mol):
 
 # for carbon with explicit valence > 4
 def regularize_carbon_bond_order(atom, verbose=True):
+    from rdkit import Chem
+
     if atom.GetSymbol() == "C" and get_explicit_valence(atom) > 4:
         if verbose:
             print("Detecting carbon with explicit valence > 4, fixing it...")
@@ -330,6 +337,8 @@ def regularize_carbon_bond_order(atom, verbose=True):
 
 # for nitrogen with explicit valence > 4
 def regularize_nitrogen_bond_order(atom, verbose=True):
+    from rdkit import Chem
+
     mol = atom.GetOwningMol()
     if atom.GetSymbol() == "N" and get_explicit_valence(atom) > 4:
         O_atoms = get_terminal_oxygens(atom)
@@ -363,6 +372,9 @@ def mol_edit_log(mol, i, j):
 
 
 def kekulize_aromatic_heterocycles(mol_in, assign_formal_charge=True, sanitize=True):
+    from rdkit import Chem
+    from rdkit.Chem.rdchem import BondType
+
     mol = Chem.RWMol(mol_in)
     rings = Chem.rdmolops.GetSymmSSSR(mol)
     rings = [list(i) for i in list(rings)]
@@ -566,6 +578,9 @@ def hetero_priority(idx, mol):
 def convert_by_obabel(
     mol, cache_dir=os.path.join(os.getcwd(), ".cache"), obabel_path="obabel"
 ):
+    from openbabel import openbabel
+    from rdkit import Chem
+
     if not os.path.exists(cache_dir):
         os.mkdir(cache_dir)
     if mol.HasProp("_Name"):
@@ -585,6 +600,8 @@ def convert_by_obabel(
 
 
 def super_sanitize_mol(mol, name=None, verbose=True):
+    from rdkit import Chem
+
     if name is None:
         if mol.HasProp("_Name"):
             name = mol.GetProp("_Name")
@@ -655,11 +672,6 @@ def _check_level(self, level):
             raise ValueError(
                 f"Invalid level '{level}', please set to 'low', 'medium' or 'high'"
             )
-        else:
-            if level == "high" and not USE_OBABEL:
-                raise ModuleNotFoundError(
-                    "obabel not installed, high level sanitizer cannot work"
-                )
 
     def _handle_exception(self, error_info):
         if self.raise_errors:
@@ -669,6 +681,8 @@ def _handle_exception(self, error_info):
 
     def sanitize(self, mol):
         """Sanitize mol according to `self.level`. If failed, return None."""
+        from rdkit import Chem
+
         if self.level == "low":
             try:
                 Chem.SanitizeMol(mol)
diff --git a/dpdata/rdkit/utils.py b/dpdata/rdkit/utils.py
index 25cf97cd..9c7e50af 100644
--- a/dpdata/rdkit/utils.py
+++ b/dpdata/rdkit/utils.py
@@ -1,11 +1,9 @@
-try:
-    from rdkit import Chem
-except ModuleNotFoundError:
-    pass
 import numpy as np
 
 
 def mol_to_system_data(mol):
+    from rdkit import Chem
+
     if not isinstance(mol, Chem.rdchem.Mol):
         raise TypeError(f"rdkit.Chem.Mol required, not {type(mol)}")
 
@@ -52,6 +50,8 @@ def mol_to_system_data(mol):
 
 
 def system_data_to_mol(data):
+    from rdkit import Chem
+
     mol_ed = Chem.RWMol()
     atom_symbols = [data["atom_names"][i] for i in data["atom_types"]]
     # add atoms
diff --git a/dpdata/system.py b/dpdata/system.py
index a848066e..33b7e7cf 100644
--- a/dpdata/system.py
+++ b/dpdata/system.py
@@ -7,8 +7,6 @@
 from typing import Any, Dict, Optional, Tuple, Union
 
 import numpy as np
-from monty.json import MSONable
-from monty.serialization import dumpfn, loadfn
 
 import dpdata
 import dpdata.md.pbc
@@ -41,7 +39,7 @@ def load_format(fmt):
     )
 
 
-class System(MSONable):
+class System:
     """The data System.
 
     A data System (a concept used by `deepmd-kit <https://github.com/deepmodeling/deepmd-kit>`_)
@@ -297,6 +295,8 @@ def __add__(self, others):
 
     def dump(self, filename, indent=4):
         """Dump .json or .yaml file."""
+        from monty.serialization import dumpfn
+
         dumpfn(self.as_dict(), filename, indent=indent)
 
     def map_atom_types(self, type_map=None) -> np.ndarray:
@@ -340,8 +340,22 @@ def map_atom_types(self, type_map=None) -> np.ndarray:
     @staticmethod
     def load(filename):
         """Rebuild System obj. from .json or .yaml file."""
+        from monty.serialization import loadfn
+
         return loadfn(filename)
 
+    @classmethod
+    def from_dict(cls, data: dict):
+        """Construct a System instance from a data dict."""
+        from monty.serialization import MontyDecoder
+
+        decoded = {
+            k: MontyDecoder().process_decoded(v)
+            for k, v in data.items()
+            if not k.startswith("@")
+        }
+        return cls(**decoded)
+
     def as_dict(self):
         """Returns data dict of System instance."""
         d = {
diff --git a/dpdata/unit.py b/dpdata/unit.py
index eba07b41..5fc8fe1e 100644
--- a/dpdata/unit.py
+++ b/dpdata/unit.py
@@ -1,6 +1,6 @@
 from abc import ABC
 
-from scipy import constants
+from scipy import constants  # noqa: TID253
 
 AVOGADRO = constants.Avogadro  # Avagadro constant
 ELE_CHG = constants.elementary_charge  # Elementary Charge, in C
diff --git a/pyproject.toml b/pyproject.toml
index 5292ba9c..1be79442 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -82,6 +82,7 @@ select = [
     "D", # pydocstyle
     "UP", # pyupgrade
     "I", # isort
+    "TID253", # banned-module-level-imports
 ]
 ignore = [
     "E501", # line too long
@@ -107,3 +108,17 @@ ignore-init-module-imports = true
 
 [tool.ruff.lint.pydocstyle]
 convention = "numpy"
+
+[tool.ruff.lint.flake8-tidy-imports]
+banned-module-level-imports = [
+    "pymatgen",
+    "ase",
+    "openbabel",
+    "rdkit",
+    "parmed",
+    "deepmd",
+    "h5py",
+    "wcmatch",
+    "monty",
+    "scipy",
+]


Test patch:
diff --git a/tests/test_custom_data_type.py b/tests/test_custom_data_type.py
index 006d6b01..7e3278ea 100644
--- a/tests/test_custom_data_type.py
+++ b/tests/test_custom_data_type.py
@@ -1,6 +1,6 @@
 import unittest
 
-import h5py
+import h5py  # noqa: TID253
 import numpy as np
 
 import dpdata
diff --git a/tests/test_to_pymatgen_entry.py b/tests/test_to_pymatgen_entry.py
index fd8f40fc..7111dcdc 100644
--- a/tests/test_to_pymatgen_entry.py
+++ b/tests/test_to_pymatgen_entry.py
@@ -2,7 +2,7 @@
 import unittest
 
 from context import dpdata
-from monty.serialization import loadfn
+from monty.serialization import loadfn  # noqa: TID253
 
 try:
     from pymatgen.entries.computed_entries import ComputedStructureEntry  # noqa: F401