MolChemicalFeatureFactory *buildFeatFactory(std::string fileName) {
  std::ifstream inStream(fileName.c_str());
  if (!inStream.is_open()) {
    std::string errorstring = "File: " + fileName + " could not be opened.";
    PyErr_SetString(PyExc_IOError, errorstring.c_str());
    python::throw_error_already_set();
  }
  std::istream &instrm = static_cast<std::istream &>(inStream);
  return buildFeatureFactory(instrm);
}
 MolChemicalFeatureFactory *buildFeatureFactory(const std::string &featureData){
   std::stringstream ss(featureData);
   return buildFeatureFactory(ss);
 }
MolChemicalFeatureFactory *buildFeatFactoryFromString(std::string fdefString) {
  std::istringstream inStream(fdefString);
  std::istream &instrm = static_cast<std::istream &>(inStream);
  return buildFeatureFactory(instrm);
}