@@ -167,9 +167,11 @@ void FeatureHDF5::data(const std::string &name_or_id) {
167167}
168168
169169
170- shared_ptr<IDataArray> FeatureHDF5::data () const {
170+ shared_ptr<IDataArray> FeatureHDF5::dataArray () const {
171+ if (targetType () != TargetType::DataArray) {
172+ throw std::runtime_error (" Cannot convert Feature data to DataArray! Feature target is of type DataFrame!" );
173+ }
171174 shared_ptr<IDataArray> da;
172-
173175 if (group ().hasGroup (" data" )) {
174176 H5Group other_group = group ().openGroup (" data" , false );
175177 da = make_shared<DataArrayHDF5>(file (), block, other_group);
@@ -181,6 +183,23 @@ shared_ptr<IDataArray> FeatureHDF5::data() const {
181183}
182184
183185
186+ shared_ptr<IDataFrame> FeatureHDF5::dataFrame () const {
187+ if (targetType () != TargetType::DataFrame) {
188+ throw std::runtime_error (" Cannot convert Feature data to DataFrame! Feature target is of type DataArray!" );
189+ }
190+ shared_ptr<IDataFrame> df;
191+ if (group ().hasGroup (" data" )) {
192+ H5Group other_group = group ().openGroup (" data" , false );
193+ df = make_shared<DataFrameHDF5>(file (), block, other_group);
194+
195+ if (!block->hasEntity (df)) {
196+ throw std::runtime_error (" FeatureHDF5::data: DataFrame not found!" );
197+ }
198+ }
199+ return df;
200+ }
201+
202+
184203LinkType FeatureHDF5::linkType () const {
185204 if (group ().hasAttr (" link_type" )) {
186205 string link_type;
@@ -197,7 +216,7 @@ TargetType FeatureHDF5::targetType() const {
197216 group ().getAttr (" target_type" , target_type);
198217 return targetTypeFromString (target_type);
199218 } else {
200- return TargetType::DataFrame ;
219+ return TargetType::DataArray ;
201220 }
202221}
203222
0 commit comments