deepmodeling / dpdata

A Python package for manipulating atomistic data of software in computational science
https://docs.deepmodeling.com/projects/dpdata/
GNU Lesser General Public License v3.0
195 stars 129 forks source link

[BUG] File name too long error when trying to use a long type_map #553

Closed wanghan-iapcm closed 11 months ago

wanghan-iapcm commented 11 months ago

OSError: [Errno 36] File name too long: raised when creating dpdata.MultiSystem with a very long type_map (e.g. periodic table).

log attached below:

Traceback (most recent call last):
  File "/argo/staging/script", line 41, in <module>
    output = op_obj.execute(input)
  File "/tmp/inputs/artifacts/dflow_python_packages/Users/x.liu/workflows/dflow/src/dflow/python/op.py", line 136, in wrapper_exec
    op_out = func(self, op_in)
  File "/tmp/inputs/artifacts/dflow_python_packages/Users/x.liu/workflows/dpgen2/dpgen2/op/select_confs.py", line 88, in execute
    type_map=type_map,
  File "/tmp/inputs/artifacts/dflow_python_packages/Users/x.liu/workflows/dpgen2/dpgen2/exploration/selector/conf_selector_frame.py", line 96, in select
    ms.to_deepmd_npy(out_path)  # type: ignore
  File "/tmp/inputs/artifacts/dflow_python_packages/Users/x.liu/opt/anaconda3/lib/python3.9/site-packages/dpdata/system.py", line 1697, in to_format
    return self.to_fmt_obj(ff(), *args, **kwargs)
  File "/tmp/inputs/artifacts/dflow_python_packages/Users/x.liu/opt/anaconda3/lib/python3.9/site-packages/dpdata/system.py", line 1341, in to_fmt_obj
    ss.to_fmt_obj(fmtobj, fn, *args, **kwargs)
  File "/tmp/inputs/artifacts/dflow_python_packages/Users/x.liu/opt/anaconda3/lib/python3.9/site-packages/dpdata/system.py", line 354, in to_fmt_obj
    return fmtobj.to_system(self.data, *args, **kwargs)
  File "/tmp/inputs/artifacts/dflow_python_packages/Users/x.liu/opt/anaconda3/lib/python3.9/site-packages/dpdata/plugins/deepmd.py", line 65, in to_system
    dpdata.deepmd.comp.dump(file_name, data, set_size=set_size, comp_prec=prec)
  File "/tmp/inputs/artifacts/dflow_python_packages/Users/x.liu/opt/anaconda3/lib/python3.9/site-packages/dpdata/deepmd/comp.py", line 67, in dump
    os.makedirs(folder, exist_ok=True)
  File "/opt/miniconda/lib/python3.7/os.py", line 223, in makedirs
    mkdir(name, mode)
OSError: [Errno 36] File name too long: 'confs/H0He0Li0Be0B0C0N0O36F0Ne0Na0Mg4Al0Si0P0S0Cl0Ar0K0Ca0Sc0Ti0V0Cr0Mn0Fe0Co0Ni0Cu0Zn0Ga0Ge0As0Se0Br0Kr0Rb0Sr0Y0Zr0Nb8Mo0Tc0Ru0Rh0Pd0Ag0Cd0In0Sn0Sb0Te0I0Xe0Cs0Ba
0La0Ce0Pr0Nd0Pm0Sm0Eu0Gd0Tb0Dy0Ho0Er0Tm0Yb0Lu0Hf0Ta0W0Re0Os0Ir0Pt0Au0Hg0Tl0Pb12Bi0Po0At0Rn0Fr0Ra0Ac0Th0Pa0U0Np0Pu0Am0Cm0Bk0Cf0Es0Fm0Md0No0Lr0Rf0Db0Sg0Bh0Hs0Mt0Ds0Rg0Cn0Nh0Fl0Mc0Lv0Ts0Og0'
njzjz commented 11 months ago

Per https://stackoverflow.com/a/6571568/9567349,

max filename length: 255 bytes