Noble-Lab / casanovo

De Novo Mass Spectrometry Peptide Sequencing with a Transformer Model
https://casanovo.readthedocs.io
Apache License 2.0
90 stars 31 forks source link

[v3.5.0 ValueError] in the denovo mode of prediction with pretrained massive-kb model #305

Closed irleader closed 4 months ago

irleader commented 4 months ago

Hi Sir,

I use Casanovo 3.5.0 with model "casanovo_massivekb.ckpt" in denovo mode to predict on my own mgf file. I use my own config.yaml, and only changed "precursor_mass_tol: 10", "min_peptide_len: 4" and "predict_batch_size: 512". The following error occured:

"Predicting DataLoader 0:  91%|████████████████████████████████████████████▋    | 449/493 [24:24:58<2:23:33, 195.76s/it]Traceback (most recent call last):
  File "D:\miniconda3\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "D:\miniconda3\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "D:\miniconda3\Scripts\casanovo.exe\__main__.py", line 7, in <module>
  File "D:\miniconda3\lib\site-packages\click\core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "D:\miniconda3\lib\site-packages\click\core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "D:\miniconda3\lib\site-packages\click\core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "D:\miniconda3\lib\site-packages\click\core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "D:\miniconda3\lib\site-packages\casanovo\casanovo.py", line 166, in main
    model_runner.predict(peak_path, model, config, writer)
  File "D:\miniconda3\lib\site-packages\casanovo\denovo\model_runner.py", line 46, in predict
    _execute_existing(peak_path, model_filename, config, False, out_writer)
  File "D:\miniconda3\lib\site-packages\casanovo\denovo\model_runner.py", line 170, in _execute_existing
    run_trainer(model, loaders.test_dataloader())
  File "D:\miniconda3\lib\site-packages\pytorch_lightning\trainer\trainer.py", line 892, in predict
    return call._call_and_handle_interrupt(
  File "D:\miniconda3\lib\site-packages\pytorch_lightning\trainer\call.py", line 38, in _call_and_handle_interrupt
    return trainer_fn(*args, **kwargs)
  File "D:\miniconda3\lib\site-packages\pytorch_lightning\trainer\trainer.py", line 938, in _predict_impl
    results = self._run(model, ckpt_path=self.ckpt_path)
  File "D:\miniconda3\lib\site-packages\pytorch_lightning\trainer\trainer.py", line 1112, in _run
    results = self._run_stage()
  File "D:\miniconda3\lib\site-packages\pytorch_lightning\trainer\trainer.py", line 1190, in _run_stage
    return self._run_predict()
  File "D:\miniconda3\lib\site-packages\pytorch_lightning\trainer\trainer.py", line 1244, in _run_predict
    return self.predict_loop.run()
  File "D:\miniconda3\lib\site-packages\pytorch_lightning\loops\loop.py", line 199, in run
    self.advance(*args, **kwargs)
  File "D:\miniconda3\lib\site-packages\pytorch_lightning\loops\dataloader\prediction_loop.py", line 100, in advance
    dl_predictions, dl_batch_indices = self.epoch_loop.run(
  File "D:\miniconda3\lib\site-packages\pytorch_lightning\loops\loop.py", line 199, in run
    self.advance(*args, **kwargs)
  File "D:\miniconda3\lib\site-packages\pytorch_lightning\loops\epoch\prediction_epoch_loop.py", line 100, in advance
    self._predict_step(batch, batch_idx, dataloader_idx)
  File "D:\miniconda3\lib\site-packages\pytorch_lightning\loops\epoch\prediction_epoch_loop.py", line 129, in _predict_step
    predictions = self.trainer._call_strategy_hook("predict_step", *step_kwargs.values())
  File "D:\miniconda3\lib\site-packages\pytorch_lightning\trainer\trainer.py", line 1494, in _call_strategy_hook
    output = fn(*args, **kwargs)
  File "D:\miniconda3\lib\site-packages\pytorch_lightning\strategies\strategy.py", line 408, in predict_step
    return self.model.predict_step(*args, **kwargs)
  File "D:\miniconda3\lib\site-packages\casanovo\denovo\model.py", line 807, in predict_step
    self.forward(batch[0], batch[1]),
  File "D:\miniconda3\lib\site-packages\casanovo\denovo\model.py", line 195, in forward
    return self.beam_search_decode(
  File "D:\miniconda3\lib\site-packages\casanovo\denovo\model.py", line 267, in beam_search_decode
    self._cache_finished_beams(
  File "D:\miniconda3\lib\site-packages\casanovo\denovo\model.py", line 534, in _cache_finished_beams
    heapadd(
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Predicting DataLoader 0:  91%|█████████ | 449/493 [24:27:51<2:23:50, 196.15s/it]"

Where might this error come from? Thanks!

Best regards

wsnoble commented 4 months ago

This issue is being actively worked on here.