qlib icon indicating copy to clipboard operation
qlib copied to clipboard

TypeError: control character 'delimiter' cannot be a newline

Open danial2008 opened this issue 3 years ago • 15 comments

🐛 Bug Description

Traceback (most recent call last): File "D:\dev\anaconda3\envs\qlib\lib\site-packages\IPython\core\interactiveshell.py", line 3398, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "", line 1, in <cell line: 1> e.calendar(start_time='2010-01-01', end_time='2017-12-31', freq='day') File "D:\dev\pyqlib\qlib\qlib\data\data.py", line 90, in calendar _calendar, _calendar_index = self._get_calendar(freq, future) File "D:\dev\pyqlib\qlib\qlib\data\data.py", line 171, in _get_calendar _calendar = np.array(self.load_calendar(freq, future)) File "D:\dev\pyqlib\qlib\qlib\data\data.py", line 657, in load_calendar backend_obj = self.backend_obj(freq=freq, future=future).data File "D:\dev\pyqlib\qlib\qlib\data\storage\file_storage.py", line 129, in data H["c"][key] = self._read_calendar() File "D:\dev\pyqlib\qlib\qlib\data\storage\file_storage.py", line 111, in _read_calendar for x in np.loadtxt(fp, str, skiprows=skip_rows, max_rows=n_rows, delimiter="\n", encoding="utf-8") File "D:\dev\anaconda3\envs\qlib\lib\site-packages\numpy\lib\npyio.py", line 1301, in loadtxt arr = _read(fname, dtype=dtype, comment=comment, delimiter=delimiter, File "D:\dev\anaconda3\envs\qlib\lib\site-packages\numpy\lib\npyio.py", line 1006, in _read next_arr = _load_from_filelike( TypeError: control character 'delimiter' cannot be a newline (\r or \n).

To Reproduce

Steps to reproduce the behavior: 1.download the data by get_data.py firstly 2.write a simple demo qlib.init(provider_uri="D:/dev/pyqlib/data/cn_data/")

from qlib.data import D

D.calendar(start_time='2010-01-01', end_time='2017-12-31', freq='day')[:5]

Expected Behavior

Screenshot

Environment

Note: User could run cd scripts && python collect_info.py all under project directory to get system information and paste them here directly.

  • Qlib version: 0.8.6
  • Python version: 3.8
  • OS (Windows, Linux, MacOS):Windows
  • Commit number (optional, please provide it if you are using the dev version):

Additional Notes

danial2008 avatar Jun 26 '22 04:06 danial2008

Same issue encountered!

wwwadx avatar Jun 27 '22 06:06 wwwadx

This issue is caused by an upgrade of the qlib dependent library and is currently being fixed.

SunsetWolf avatar Jun 27 '22 07:06 SunsetWolf

Same issue encountered!

Viperccc avatar Jun 28 '22 08:06 Viperccc

This bug has been fixed in PR 1141.

SunsetWolf avatar Jun 28 '22 10:06 SunsetWolf

Is this PR merged into main? I pulled the latest main branch but this bug remains.

LiquidAmmonia avatar Jun 29 '22 02:06 LiquidAmmonia

I have the same issue with latest code.

HuihuiWu-Microsoft avatar Jul 01 '22 09:07 HuihuiWu-Microsoft

https://github.com/numpy/numpy/blob/40230640b2e5c611b0d1fe913cf3285c35848026/numpy/core/src/multiarray/textreading/readtext.c#L116

rmallof avatar Jul 02 '22 14:07 rmallof

Create virtual environment using Python=3.7 and install the qlib package using the codes from https://github.com/microsoft/qlib/blob/main/examples/workflow_by_code.ipynb can run properly.

XixuHu avatar Jul 04 '22 09:07 XixuHu

同样问题

rovedream avatar Jul 04 '22 10:07 rovedream

This has been fixed in the latest code https://github.com/microsoft/qlib/blob/c34051c1ced920e365f8167e2bba5302a6f08318/qlib/data/storage/file_storage.py#L109

you-n-g avatar Jul 08 '22 09:07 you-n-g

Thank you for the quick resolution - it's working for me

rmallof avatar Jul 08 '22 22:07 rmallof

encountered the same issue. pyqlib 0.8.6 python 3.8 os: linux

I've tried to install a new condo environment, but issue remains.

lichoil avatar Jul 24 '22 07:07 lichoil

[880:MainThread](2022-07-24 15:51:15,217) INFO - qlib.Initialization - [config.py:413] - default_conf: client. [880:MainThread](2022-07-24 15:51:15,219) INFO - qlib.Initialization - [init.py:74] - qlib successfully initialized based on client settings. [880:MainThread](2022-07-24 15:51:15,220) INFO - qlib.Initialization - [init.py:76] - data_path={'__DEFAULT_FREQ': PosixPath('/home/choil/.qlib/qlib_data/cn_data')} [880:MainThread](2022-07-24 15:51:15,220) INFO - qlib.workflow - [expm.py:315] - <mlflow.tracking.client.MlflowClient object at 0x7f5d10e0a940> [880:MainThread](2022-07-24 15:51:15,235) INFO - qlib.workflow - [exp.py:257] - Experiment 1 starts running ... [880:MainThread](2022-07-24 15:51:15,325) INFO - qlib.workflow - [recorder.py:293] - Recorder c36a78bf0d8d4c3398ab4654c3db3ad6 starts running under Experiment 1 ... Please install necessary libs for CatBoostModel. ModuleNotFoundError. XGBModel is skipped(optional: maybe installing xgboost can fix it). ModuleNotFoundError. PyTorch models are skipped (optional: maybe installing pytorch can fix it). [880:MainThread](2022-07-24 15:51:15,505) INFO - qlib.timer - [log.py:117] - Time cost: 0.000s | waiting async_log Done [880:MainThread](2022-07-24 15:51:15,506) ERROR - qlib.workflow - [utils.py:41] - An exception has been raised[TypeError: control character 'delimiter' cannot be a newline (\r or \n).]. File "/home/choil/anaconda3/envs/qlib2/bin/qrun", line 8, in sys.exit(run()) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/workflow/cli.py", line 72, in run fire.Fire(workflow) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/fire/core.py", line 141, in Fire component_trace = _Fire(component, args, parsed_flag_args, context, name) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/fire/core.py", line 466, in _Fire component, remaining_args = _CallAndUpdateTrace( File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/fire/core.py", line 681, in _CallAndUpdateTrace component = fn(*varargs, **kwargs) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/workflow/cli.py", line 66, in workflow recorder = task_train(config.get("task"), experiment_name=experiment_name) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/model/trainer.py", line 127, in task_train _exe_task(task_config) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/model/trainer.py", line 46, in _exe_task dataset: Dataset = init_instance_by_config(task_config["dataset"], accept_types=Dataset) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/utils/init.py", line 457, in init_instance_by_config return klass(**cls_kwargs, **kwargs) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/data/dataset/init.py", line 115, in init self.handler: DataHandler = init_instance_by_config(handler, accept_types=DataHandler) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/utils/init.py", line 457, in init_instance_by_config return klass(**cls_kwargs, **kwargs) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/contrib/data/handler.py", line 171, in init super().init( File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/data/dataset/handler.py", line 434, in init super().init(instruments, start_time, end_time, data_loader, **kwargs) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/data/dataset/handler.py", line 97, in init self.setup_data() File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/data/dataset/handler.py", line 570, in setup_data super().setup_data(**kwargs) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/data/dataset/handler.py", line 141, in setup_data self._data = lazy_sort_index(self.data_loader.load(self.instruments, self.start_time, self.end_time)) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/data/dataset/loader.py", line 135, in load { File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/data/dataset/loader.py", line 136, in grp: self.load_group_df(instruments, exprs, names, start_time, end_time, grp) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/data/dataset/loader.py", line 211, in load_group_df df = D.features( File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/data/data.py", line 1184, in features return DatasetD.dataset(instruments, fields, start_time, end_time, freq, inst_processors=inst_processors) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/data/data.py", line 905, in dataset instruments_d = self.get_instruments_d(instruments, freq) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/data/data.py", line 514, in get_instruments_d instruments_d = Inst.list_instruments(instruments=instruments, freq=freq, as_list=False) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/data/data.py", line 695, in list_instruments cal = Cal.calendar(freq=freq) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/data/data.py", line 90, in calendar _calendar, _calendar_index = self._get_calendar(freq, future) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/data/data.py", line 171, in _get_calendar _calendar = np.array(self.load_calendar(freq, future)) File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/data/data.py", line 657, in load_calendar backend_obj = self.backend_obj(freq=freq, future=future).data File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/data/storage/file_storage.py", line 129, in data H["c"][key] = self._read_calendar() File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/qlib/data/storage/file_storage.py", line 111, in _read_calendar for x in np.loadtxt(fp, str, skiprows=skip_rows, max_rows=n_rows, delimiter="\n", encoding="utf-8") File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/numpy/lib/npyio.py", line 1308, in loadtxt arr = _read(fname, dtype=dtype, comment=comment, delimiter=delimiter, File "/home/choil/anaconda3/envs/qlib2/lib/python3.8/site-packages/numpy/lib/npyio.py", line 1006, in _read next_arr = _load_from_filelike( TypeError: control character 'delimiter' cannot be a newline (\r or \n).

lichoil avatar Jul 24 '22 07:07 lichoil

The previous solution does not work for high-frequent data. It is fixed here.

https://github.com/microsoft/qlib/pull/1169/commits/54231b1ea7ffb1d91435b8262dbfd00af770a1fe

It will be merged to the main branch in the short future.

you-n-g avatar Jul 27 '22 05:07 you-n-g

It works! Thank you!!!!!!!!!!

z13670 avatar Aug 03 '22 06:08 z13670

This has been fixed in the latest code

https://github.com/microsoft/qlib/blob/c34051c1ced920e365f8167e2bba5302a6f08318/qlib/data/storage/file_storage.py#L109

Confirming that manually adding this line works with Python 3.8. I have installed the library using pip and was having the same issue before.

selimarikan avatar Nov 06 '22 21:11 selimarikan