Как я могу исправить `OSError: file error: bad input file` в RDkit с файлом .sdf? - PullRequest
1 голос
/ 08 апреля 2019

Я использую сторонний код на python из arxiv, который использует RDkit в качестве библиотеки. Он принимает файл .sdf с данными о молекулах химических веществ в качестве аргумента, но затем RDkit выдает ошибку:

OSError: File error: Bad input file file.sdf

Я следовал инструкциям, установил все необходимые пакеты, скачал файлы, как они сказали, увеличил пространство подкачки на моем компьютере, потому что .sdf довольно большой, вычеркнул большую часть данных этого файла ... но я не могу заставить его работать, ни одна из этих попыток не увенчалась успехом.

Я искал пакет RDkit, и этот фрагмент кода вызывает ошибку:

LocalForwardSDMolSupplier(std::string filename, bool sanitize, bool removeHs,
                          bool strictParsing) {
  std::istream *tmpStream = nullptr;
  tmpStream = static_cast<std::istream *>(
      new std::ifstream(filename.c_str(), std::ios_base::binary));
  if (!tmpStream || (!(*tmpStream)) || (tmpStream->bad())) {
    std::ostringstream errout;
    errout << "Bad input file " << filename;
    throw RDKit::BadFileException(errout.str());
  }
  dp_inStream = tmpStream;
  df_owner = true;
  df_sanitize = sanitize;
  df_removeHs = removeHs;
  df_strictParsing = strictParsing;
  POSTCONDITION(dp_inStream, "bad instream");
}

Кажется, это C ++, чего я не знаю.

Я ожидаю увидеть, как этот код работает, с какими входами и выходами адаптироваться к моему коду. Я хотел бы увидеть этот файл .sdf, но, возможно, еще один мог бы работать для моей цели.

1 Ответ

0 голосов
/ 10 апреля 2019

Наконец, я обнаружил в исходном коде, что путь к этому файлу был неверным. Ему нужно было добавить ../ раньше, потому что он вызывал файл в другой папке, не из мастера, а из одной из подпапок.

Спасибо, ребята!

...