Pergunta

Eu gostaria de mudar programaticamente os dados associados a um conjunto de dados em um arquivo HDF5. Eu não consigo encontrar uma maneira de excluir um conjunto de dados por nome (que me permite adicioná-lo novamente com os dados modificados) ou atualizar um conjunto de dados pelo nome. Eu estou usando a API C para HDF5 1.6.x, mas ponteiros em relação a qualquer API HDF5 seria útil.

Foi útil?

Solução

de acordo com o guia do usuário :

HDF5 não neste momento fornecer um mecanismo fácil para remover um conjunto de dados de um arquivo ou para recuperar o espaço de armazenamento ocupado por um objeto excluído.

Tão simples eliminação parece estar fora de questão. Mas a secção continua:

A remoção de um conjunto de dados e recuperar o espaço que costumava pode ser feito com a função H5Ldelete e h5repack programa utilitário . Com a função H5Ldelete, links para um conjunto de dados pode ser removido da estrutura de arquivos. Depois de todos os links foram removidos, o conjunto de dados torna-se inacessível a qualquer aplicação e é efetivamente removido do arquivo. A maneira de recuperar o espaço ocupado por um conjunto de dados desvinculados é escrever todos os objetos do arquivo em um novo arquivo. Qualquer objeto desvinculado é inacessível para a aplicação e não serão incluídos no novo arquivo. Escrevendo objetos para um novo arquivo pode ser feito com um programa personalizado ou com o h5repack programa utilitário.

Outras dicas

Se você quiser excluir um conjunto de dados em C ++ são necessários os seguintes comandos:

H5File m_h5File (pathAndNameToHDF5File, H5F_ACC_RDWR); //The hdf5 c++ object.
std::string channelName = "/myGroup/myDataset";
int result = H5Ldelete(m_h5File.getId(), channelName.data(), H5P_DEFAULT);

resultado será um valor não negativo se for bem sucedida; caso contrário devolve um valor negativo. https://support.hdfgroup.org/HDF5/doc/ RM / RM_H5L.html # link-Excluir

Como @MaxLybbert disse, o espaço no disco rígido é não recoverd. Você deve usar a ferramenta repack. No entanto, com HDF5 V.1.10 o espaço pode ser recuperado. Mas o guia do usuário ainda não está pronto: https://support.hdfgroup.org/HDF5 /docNewFeatures/NewFeaturesFileSpaceMgmtDocs.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top