Как я могу исправить `OSError: ошибка файла: неверный входной файл` в RDKit с помощью файла .sdf?

#c #sdf #rdkit

#c #sdf #rdkit

Вопрос:

Я использую сторонний код на 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. Не могли бы вы также включить код python?

2. RDKit сообщает, что нет файла ‘files.sdf’. Это может означать, что вы используете неправильное имя файла или файл находится в неправильном каталоге.

Ответ №1:

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

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