GithubHelp home page GithubHelp logo

hdf5kit's People

Contributors

aidangomez avatar alejandro-isaza avatar jonaswitt avatar rikner avatar timburgess avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

hdf5kit's Issues

Support for Swift 5

Hi pretty new to Swift so I just want to see if this package supports swift 5.5 or not. Thanks!

How to get the attributes and its name for each File instance?

I have a HDF5 file structured like the following:
file -- group --- dataSet
|- group |- dataSet
....

The file has an attribute named "group_names". Firstly, I'd like to get each group's name by using the string "group_names". I tried the following.

 do {
      let groupNamesStringAttribute = try file.openStringAttribute("group_names")
      do {
          let groupNames = try groupNamesStringAttribute?.read()
...

file.openStringAttribute worked, but when I run groupNamesStringAttribute?.read(), it returned the following errors.

.../Pods/HDF5Kit/dist/src/H5A.c line 695 in H5Aread(): unable to read attribute
    major: Attribute
    minor: Read failed
  #001: .../Pods/HDF5Kit/dist/src/H5Aint.c line 524 in H5A__read(): unable to convert between src and dst datatypes
    major: Attribute
    minor: Feature is unsupported
  #002: .../Pods/HDF5Kit/dist/src/H5T.c line 4560 in H5T_path_find(): no appropriate function for conversion path
    major: Datatype
    minor: Unable to initialize object
ioError

Please let me know if you have any idea to solve this. Also, I'd like to know the way how to get the attribute's name itself (in this case, "group_names").

Problem reading string attribute

I'm using xcode 11.2 beta 2 and Swift 5.
I'm reading in a relatively small hdf5 file, 650kb.
I'm not able to read in string attributes or string dataset

    let a = group.openStringAttribute("category")
    let category = try a?.read()

        let list2 = listElementsGroup?.openStringDataset("materials_container_index_table")
        let a2 = try list2?.read()

Both of these throw an ioError

I can open the file in HDFView. In this capture I can read in the floating point "value" but not the category or the unit.

I'm not sure the best way to debug what is happening here.

Screen Shot 2019-10-29 at 9 37 44 PM

Read hrtf.soap file

Hello there,

I have hrtf.soap file with me, I want to read the content of that file using HDF5, one of my friend is doing using python.

Please help me know how can I do using this library.

Thanks

Add support for attributes

As far as I can tell, this library does not include support for reading/writing/deleting attributes ( https://www.hdfgroup.org/HDF5/doc1.6/UG/13_Attributes.html )

While it's not clean or complete, I was able to create attributes of type Double on groups by adding this code to Group.swift:

    /// Create an attribute
    public func createAttribute(name: String) -> hid_t {
        let dataspace = Dataspace.init(dims: [1, 1])
        let datatype = Datatype(type: Double.self)!
        let attributeId = name.withCString{
            return H5Acreate2(id, $0, datatype.id, dataspace.id, 0, 0)
        }
        return attributeId
    }

    /// Write an attribute
    public func writeAttribute(attributeId: hid_t, value: Double) {
        let datatype = Datatype(type: Double.self)!
        var cValue = CDouble(value)
        H5Awrite(attributeId, datatype.id, &cValue)
    }

    /// Close an attribute
    public func closeAttribute(attributeId: hid_t) {
        H5Aclose(attributeId)
    }

fatal error: Don't know how to read Double

I'm wondering if you guys have any ideas/suggestions about this. I am running a pretty simple piece of read code to extract from a dataset with just four Doubles in it, namely:

guard let file = File.open(path, mode: .ReadOnly) else {
    fatalError("Failed to open \(path)")
}
guard let mmmDS = file.openDataset("mmm", type: Double.self) else {
    fatalError("Failed to open MMM node")
}
let mmm = mmmDS.read() as! [Double]

Other than setting up some globals, this is all the code does. On running this, Xcode 7.1.1 on OS X 10.10.5 crashes on me. If I run from the command-line, I see:

fatal error: Don't know how to read Double: file /Users/tim/work/carthage-builds/Carthage/Checkouts/HDF5Kit/Source/Dataset.swift, line 98
Illegal instruction: 4

It seems the the Element.self == Double check is failing somehow. If I put the code into an HDF5Kit test, it works fine. I know the HDF5 is good. I can read it without problem using NumPy and it works in the test.

I suspect it is something to do with how I am building or adding the framework. I'm building HDF5Kit with Carthage. Only difference from master is that I have 'contains embedded swift code' = on, as without this the executable can't find the Swift libraries. I also use install_name_tool -change ... to avoid rpath issues by just using an absolute path:

otool -L LSDAlgo
LSDAlgo:
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1252.0.0)
    /Users/tim/work/carthage-builds/Carthage/Build/Mac/HDF5Kit.framework/Versions/A/HDF5Kit (compatibility version 1.0.0, current version 1.0.0)
    /Users/tim/work/carthage-builds/Carthage/Build/Mac/Upsurge.framework/Versions/A/Upsurge (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1225.1.1)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1253.0.0)
    /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics (compatibility version 64.0.0, current version 600.0.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)

it would be good to know a way to use HDF5Kit which avoids this hard crash issue and I'd value any thoughts.

readFixedLength() sometimes contains the corruption of text

readFixedLength() once worked for a hdf5 file to get the name of group, but when I tried to use it for a different hdf5 file, it threw an error. When I checked what was returned, it seemed the last element was not the value it should be returned.

(lldb) po layerNamesStringAttribute.read()
▿ 10 elements
  - 0 : "convolution1d_30"
  - 1 : "activation_46"
  - 2 : "reshape_12"
  - 3 : "convolution2d_41"
  - 4 : "activation_47"
  - 5 : "maxpooling2d_11"
  - 6 : "flatten_11"
  - 7 : "dense_21"
  - 8 : "activation_48"
  - 9 : "dense_2@�\u{16}p\u{01}"

The last element should be "dense_22". I'll post if I find further information.

swiftc 2.2-dev has AnyObject problems on Linux

With the new build, using swiftc 2.2-dev (the snapshot release) Dataset.swift fails when a [Double], [Float], etc. is returned when the function return type definition is [AnyObject]. The good news is that other than that, HDF5Kit builds on Linux (Ubuntu 15.10)

Cocoapods + -Os Optimization may cause crash?

I am trying to track down a crash that seems to happen sporadically for some people that use my application.

The crash only occurs in release and not in debug, which lead me to think that it has something to do with the applied optimisation level to HDF5Kit upon release?

In the screenshot below, you see which function failed. Line 96 is a precondition statement, precondition(data.count == size, "Data size doesn't match Dataspace dimensions")

I already created a local copy of the data before giving it to the function to avoid changes to the dataset by other threats while storage is happening. That did not solve the issue.

Now, I set optimisation of the HD5Kit framework to -O0. This seems to have solved the issue.

Please let me know if I am missing something!
(I am using the latest release, 0.2.1

screenshot_2018-11-26_at_12 43 21

StringAttribute.read() only returns 11 characters

It's a continued topic from #21.

The output should be variable length, but it returns fixed length string (maximum: 11 characters) when I use read(). Are there any ways to fix this?

The current output Optional(["convolution", "activation_", "convolution", "activation_", "maxpooling2", "dropout_1", "flatten_1", "dense_1", "activation_", "dropout_2", "dense_2", "activation_"])
should be
Optional(["convolution2d_1", "activation_1", "convolution2d_2", "activation_2", "maxpooling2d_1", "dropout_1", "flatten_1", "dense_1", "activation_3", "dropout_2", "dense_2", "activation_4"])

I'm not 100% sure, but in Source/StringAttribute.swift, line49 somehow converts each string's data to maximum 11 characters length string. That invokes a wrong result mentioned here.
a6b4b86#commitcomment-19898264

Can't add package with Xcode 11 beta 3 on macOS Catalina beta 3

Hi,

I'm trying to add HDF5Kit to a new project on a system running macOS Catalina beta 3 with Xcode 11 beta 3. In "Build Phases", under "Link Binary With Libraries", I tried adding the library with the "+" button, and then choosing "Add package dependency..." from the popup menu. This has worked for adding other projects for me, but for HDF5Kit, I get the error shown below:

image

I have verified that I do have hdf5 installed in /usr/local.

Any ideas why this might be happening?

Add support for shape property in dataset and support for read function that returns multi-dimensional array

Dataset sometimes includes multi-dimensional array. For example, a weights parameter of convolution layer has 4 axes (e.g. 3, 3, 1, 32). In h5py, group[parameter_name] returns multi-dimensional array and group[parameter_name].shape returns a tuple like (3, 3, 1, 32). To handle multi-dimentional operation, I need this support.

Regarding for read function that returns multi-dimensional array, related code in h5py might be found here: https://github.com/h5py/h5py/blob/master/h5py/h5d.pyx#L145

Regarding for shape property, it use get_space()that uses SpaceID(H5Dget_space(self.id)) and get_simple_extent_dims(): https://github.com/h5py/h5py/blob/master/h5py/h5d.pyx#L126

I really need these API. Please let me know if you have any other ways to get them. Thank you for your support!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.