Repository: catalystneuro/neuroconv

Issue:
[Feature]: Add Compression support for compound objects
### What would you like to see added to NeuroConv?

`DatasetIOConfiguration.from_neurodata_object` currently raises a `NotImplementedError` for compound objects with dtype 'object'. 

This makes it very difficult to use the `KiloSortSortingInterface`, which includes a compound object for unit quality ('good' or 'noise').

### Is your feature request related to a problem?

_No response_

### Do you have any interest in helping implement the feature?

Yes.

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/catalystneuro/neuroconv/blob/main/.github/CODE_OF_CONDUCT.rst)
- [X] Have you ensured this bug was not already [reported](https://github.com/catalystneuro/neuroconv/issues)?

Discussion:
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
Attention: Patch coverage is `20.00000%` with `4 lines` in your changes missing coverage. Please review.
> Project coverage is 90.38%. Comparing base [(`8522241`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/8522241af1a39d90a29431cdb6997a881dc6f6ba?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`f1c4b68`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/f1c4b687e881d5361dd39e9f323e1e9ef2b3a34f?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).
> Report is 1 commits behind head on main.

| [Files with missing lines](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Patch % | Lines |
|---|---|---|
| [...\_helpers/\_configuration\_models/\_base\_dataset\_io.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&filepath=src%2Fneuroconv%2Ftools%2Fnwb_helpers%2F_configuration_models%2F_base_dataset_io.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi90b29scy9ud2JfaGVscGVycy9fY29uZmlndXJhdGlvbl9tb2RlbHMvX2Jhc2VfZGF0YXNldF9pby5weQ==) | 20.00% | [4 Missing :warning: ](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) |

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@            Coverage Diff             @@
##             main    #1042      +/-   ##
==========================================
- Coverage   90.41%   90.38%   -0.04%     
==========================================
  Files         129      129              
  Lines        7919     7923       +4     
==========================================
+ Hits         7160     7161       +1     
- Misses        759      762       +3     
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.38% <20.00%> (-0.04%)` | :arrow_down: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files with missing lines](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...\_helpers/\_configuration\_models/\_base\_dataset\_io.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&filepath=src%2Fneuroconv%2Ftools%2Fnwb_helpers%2F_configuration_models%2F_base_dataset_io.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi90b29scy9ud2JfaGVscGVycy9fY29uZmlndXJhdGlvbl9tb2RlbHMvX2Jhc2VfZGF0YXNldF9pby5weQ==) | `93.49% <20.00%> (-2.31%)` | :arrow_down: |

</details>
h-mayorquin: OK, this should not be throwing an error. Can you just pass a configuration with no chukning or compression for those objects?

I also need to take a look on the gin dataset from phy.  
pauladkisson: > Can you just pass a configuration with no chukning or compression for those objects?

Passed in no compression (chunk_shape is required to pass validation, so I kept that) and removed the warning.
h-mayorquin: Yeah, I remember that I discussed that issue about the chunk_shape and full_shape being mandatory. I think that the argument was that we should not being creating configurations for those cases at all. Does that ring a bell, @CodyCBakerPhD ?

I think his idea was it should be skipped at a higher level like `get_default_dataset_io_configurations` where  `from_neurodata_object` is called.


pauladkisson: > I think that the argument was that we should not being creating configurations for those cases at all.

I really don't see why we should disallow this, esp since the docs seem to imply that setting these properties to None is the way to disable chunking/compression while still providing a backendConfiguration: https://neuroconv.readthedocs.io/en/main/user_guide/backend_configuration.html

codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
Attention: Patch coverage is `0%` with `3 lines` in your changes missing coverage. Please review.
> Project coverage is 90.39%. Comparing base [(`a8d702d`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/a8d702dcfcb57b1d533233bb07632b6f91870cd1?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`bb1ca5a`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/bb1ca5aab28606adca419c73d860d1f2fa5daa92?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).
> Report is 6 commits behind head on main.

| [Files with missing lines](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Patch % | Lines |
|---|---|---|
| [...\_helpers/\_configuration\_models/\_base\_dataset\_io.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&filepath=src%2Fneuroconv%2Ftools%2Fnwb_helpers%2F_configuration_models%2F_base_dataset_io.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi90b29scy9ud2JfaGVscGVycy9fY29uZmlndXJhdGlvbl9tb2RlbHMvX2Jhc2VfZGF0YXNldF9pby5weQ==) | 0.00% | [3 Missing :warning: ](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) |

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@            Coverage Diff             @@
##             main    #1042      +/-   ##
==========================================
- Coverage   90.42%   90.39%   -0.03%     
==========================================
  Files         129      129              
  Lines        7924     7926       +2     
==========================================
  Hits         7165     7165              
- Misses        759      761       +2     
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.39% <0.00%> (-0.03%)` | :arrow_down: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files with missing lines](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...\_helpers/\_configuration\_models/\_base\_dataset\_io.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&filepath=src%2Fneuroconv%2Ftools%2Fnwb_helpers%2F_configuration_models%2F_base_dataset_io.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi90b29scy9ud2JfaGVscGVycy9fY29uZmlndXJhdGlvbl9tb2RlbHMvX2Jhc2VfZGF0YXNldF9pby5weQ==) | `94.21% <0.00%> (-1.59%)` | :arrow_down: |

</details>
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
Attention: Patch coverage is `0%` with `3 lines` in your changes missing coverage. Please review.
> Project coverage is 90.39%. Comparing base [(`a8d702d`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/a8d702dcfcb57b1d533233bb07632b6f91870cd1?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`ff5ac01`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/ff5ac010efc0aa08b01e6d82204dd6d22dda2ca5?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).
> Report is 7 commits behind head on main.

| [Files with missing lines](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Patch % | Lines |
|---|---|---|
| [...\_helpers/\_configuration\_models/\_base\_dataset\_io.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&filepath=src%2Fneuroconv%2Ftools%2Fnwb_helpers%2F_configuration_models%2F_base_dataset_io.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi90b29scy9ud2JfaGVscGVycy9fY29uZmlndXJhdGlvbl9tb2RlbHMvX2Jhc2VfZGF0YXNldF9pby5weQ==) | 0.00% | [3 Missing :warning: ](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) |

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@            Coverage Diff             @@
##             main    #1042      +/-   ##
==========================================
- Coverage   90.42%   90.39%   -0.03%     
==========================================
  Files         129      129              
  Lines        7924     7926       +2     
==========================================
  Hits         7165     7165              
- Misses        759      761       +2     
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.39% <0.00%> (-0.03%)` | :arrow_down: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files with missing lines](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...\_helpers/\_configuration\_models/\_base\_dataset\_io.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&filepath=src%2Fneuroconv%2Ftools%2Fnwb_helpers%2F_configuration_models%2F_base_dataset_io.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi90b29scy9ud2JfaGVscGVycy9fY29uZmlndXJhdGlvbl9tb2RlbHMvX2Jhc2VfZGF0YXNldF9pby5weQ==) | `94.21% <0.00%> (-1.59%)` | :arrow_down: |

</details>
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
Attention: Patch coverage is `0%` with `3 lines` in your changes missing coverage. Please review.
> Project coverage is 90.34%. Comparing base [(`905dc73`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/905dc73b549ce877487401d9dbcb67ebebff4e8d?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`9402105`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/9402105250bc8b118b3bb4c658ffdc1422465126?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).
> Report is 6 commits behind head on main.

| [Files with missing lines](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Patch % | Lines |
|---|---|---|
| [...\_helpers/\_configuration\_models/\_base\_dataset\_io.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&filepath=src%2Fneuroconv%2Ftools%2Fnwb_helpers%2F_configuration_models%2F_base_dataset_io.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi90b29scy9ud2JfaGVscGVycy9fY29uZmlndXJhdGlvbl9tb2RlbHMvX2Jhc2VfZGF0YXNldF9pby5weQ==) | 0.00% | [3 Missing :warning: ](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) |

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@            Coverage Diff             @@
##             main    #1042      +/-   ##
==========================================
- Coverage   90.42%   90.34%   -0.09%     
==========================================
  Files         129      129              
  Lines        7924     7940      +16     
==========================================
+ Hits         7165     7173       +8     
- Misses        759      767       +8     
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.34% <0.00%> (-0.09%)` | :arrow_down: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files with missing lines](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...\_helpers/\_configuration\_models/\_base\_dataset\_io.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&filepath=src%2Fneuroconv%2Ftools%2Fnwb_helpers%2F_configuration_models%2F_base_dataset_io.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi90b29scy9ud2JfaGVscGVycy9fY29uZmlndXJhdGlvbl9tb2RlbHMvX2Jhc2VfZGF0YXNldF9pby5weQ==) | `94.21% <0.00%> (-1.59%)` | :arrow_down: |

... and [1 file with indirect coverage changes](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

</details>
h-mayorquin: OK, I am weary of this when if the array is too large because we will be creating chunks that are too large but I think that this will be an edge case. In a future PR let's think about how to differentiate objects that are strings (the motivation of this PR) from things that are real objects (I am not even sure we can write the latter to NWB)

Can you add a test for this for this behavior?
pauladkisson: > OK, I am *wary of this when if the array is too large because we will be creating chunks that are too large but I think that this will be an edge case.

Maybe we should keep the warning then?
pauladkisson: > Can you add a test for this for this behavior?

Done!
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
All modified and coverable lines are covered by tests :white_check_mark:
> Project coverage is 90.35%. Comparing base [(`675ec48`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/675ec48966eab421d25c15cd2ce6041ae6e8b34c?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`e0ed9b5`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/e0ed9b512041f1f56a42792d2c11846a1d7eee78?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@            Coverage Diff             @@
##             main    #1042      +/-   ##
==========================================
+ Coverage   90.32%   90.35%   +0.02%     
==========================================
  Files         129      129              
  Lines        7988     7992       +4     
==========================================
+ Hits         7215     7221       +6     
+ Misses        773      771       -2     
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.35% <100.00%> (+0.02%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files with missing lines](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...\_helpers/\_configuration\_models/\_base\_dataset\_io.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&filepath=src%2Fneuroconv%2Ftools%2Fnwb_helpers%2F_configuration_models%2F_base_dataset_io.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi90b29scy9ud2JfaGVscGVycy9fY29uZmlndXJhdGlvbl9tb2RlbHMvX2Jhc2VfZGF0YXNldF9pby5weQ==) | `97.56% <100.00%> (+1.76%)` | :arrow_up: |

</details>
h-mayorquin: This looks good. 

Here you are testing for arrays that have object type but are in fact string arrays. I would like to hear your thoughts about this comment: https://github.com/catalystneuro/neuroconv/issues/1041#issuecomment-2332668040. I want to move the code in that direction. Would you like to help? It can be here or in another PR but your test will need to be modified a bit. Otherwise, I can take care of it in another PR.


Also, can you unlink the issue so it is not closed when we merge?
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
All modified and coverable lines are covered by tests :white_check_mark:
> Project coverage is 90.36%. Comparing base [(`675ec48`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/675ec48966eab421d25c15cd2ce6041ae6e8b34c?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`4235e04`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/4235e040958e56e39351695b37c16d7b1903011f?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@            Coverage Diff             @@
##             main    #1042      +/-   ##
==========================================
+ Coverage   90.32%   90.36%   +0.04%     
==========================================
  Files         129      129              
  Lines        7988     8004      +16     
==========================================
+ Hits         7215     7233      +18     
+ Misses        773      771       -2     
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.36% <100.00%> (+0.04%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files with missing lines](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...\_helpers/\_configuration\_models/\_base\_dataset\_io.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&filepath=src%2Fneuroconv%2Ftools%2Fnwb_helpers%2F_configuration_models%2F_base_dataset_io.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi90b29scy9ud2JfaGVscGVycy9fY29uZmlndXJhdGlvbl9tb2RlbHMvX2Jhc2VfZGF0YXNldF9pby5weQ==) | `97.77% <100.00%> (+1.97%)` | :arrow_up: |

</details>
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
All modified and coverable lines are covered by tests :white_check_mark:
> Project coverage is 90.36%. Comparing base [(`675ec48`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/675ec48966eab421d25c15cd2ce6041ae6e8b34c?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`1cbf178`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/1cbf17877137f0275076cd09be35f23122f59262?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).
> Report is 2 commits behind head on main.

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@            Coverage Diff             @@
##             main    #1042      +/-   ##
==========================================
+ Coverage   90.32%   90.36%   +0.04%     
==========================================
  Files         129      129              
  Lines        7988     8012      +24     
==========================================
+ Hits         7215     7240      +25     
+ Misses        773      772       -1     
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.36% <100.00%> (+0.04%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files with missing lines](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...\_helpers/\_configuration\_models/\_base\_dataset\_io.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&filepath=src%2Fneuroconv%2Ftools%2Fnwb_helpers%2F_configuration_models%2F_base_dataset_io.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi90b29scy9ud2JfaGVscGVycy9fY29uZmlndXJhdGlvbl9tb2RlbHMvX2Jhc2VfZGF0YXNldF9pby5weQ==) | `97.77% <100.00%> (+1.97%)` | :arrow_up: |

</details>
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
All modified and coverable lines are covered by tests :white_check_mark:
> Project coverage is 90.36%. Comparing base [(`81a022d`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/81a022def1eafcf1e9205a8dfe8b90bd62995a82?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`562bf7f`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/562bf7ff5222ea6d90f8ba6b4f440b3afcd64078?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@            Coverage Diff             @@
##             main    #1042      +/-   ##
==========================================
+ Coverage   90.32%   90.36%   +0.04%     
==========================================
  Files         129      129              
  Lines        7996     8012      +16     
==========================================
+ Hits         7222     7240      +18     
+ Misses        774      772       -2     
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.36% <100.00%> (+0.04%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files with missing lines](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...\_helpers/\_configuration\_models/\_base\_dataset\_io.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&filepath=src%2Fneuroconv%2Ftools%2Fnwb_helpers%2F_configuration_models%2F_base_dataset_io.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi90b29scy9ud2JfaGVscGVycy9fY29uZmlndXJhdGlvbl9tb2RlbHMvX2Jhc2VfZGF0YXNldF9pby5weQ==) | `97.77% <100.00%> (+1.97%)` | :arrow_up: |

</details>
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
All modified and coverable lines are covered by tests :white_check_mark:
> Project coverage is 90.36%. Comparing base [(`81a022d`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/81a022def1eafcf1e9205a8dfe8b90bd62995a82?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`2f10bc4`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/2f10bc4f6c97a9abf3cbd36d026748a8c11d6783?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@            Coverage Diff             @@
##             main    #1042      +/-   ##
==========================================
+ Coverage   90.32%   90.36%   +0.04%     
==========================================
  Files         129      129              
  Lines        7996     8014      +18     
==========================================
+ Hits         7222     7242      +20     
+ Misses        774      772       -2     
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.36% <100.00%> (+0.04%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files with missing lines](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...\_helpers/\_configuration\_models/\_base\_dataset\_io.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&filepath=src%2Fneuroconv%2Ftools%2Fnwb_helpers%2F_configuration_models%2F_base_dataset_io.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi90b29scy9ud2JfaGVscGVycy9fY29uZmlndXJhdGlvbl9tb2RlbHMvX2Jhc2VfZGF0YXNldF9pby5weQ==) | `97.81% <100.00%> (+2.01%)` | :arrow_up: |

</details>
h-mayorquin: Cody brought a new case to me that I want to consider before merging this. I will do some experimentation. 
pauladkisson: > For the patch release I would like to include the "compound objects that are actually strings" changes of this PR.
> I would suggest do the following:
> Let's keep the code for objects that are real strings but still keep the previous behavior (throw an error) for compound types.
> This could be achieved by changing the warning to an error and temporarily commenting out the corresponding tests

tbh I'd rather just wait and take care of all compound objects (including the problematic mixed str-NaN case) in this PR.
Is there a reason you need it in the upcoming patch?
pauladkisson: > In short: I want to have the bug solved and I want to think about the complicated case more. They are two different issues so I would prefer them to address them piece-wise.

Ok, I am conviced. 👍
pauladkisson: > > > In short: I want to have the bug solved and I want to think about the complicated case more. They are two different issues so I would prefer them to address them piece-wise.
> > 
> > 
> > Ok, I am conviced. 👍
> 
> Thanks but man I feel bad about my lack of clear thinking on this issue. I have made too many requests as I have changed my mind and learned thinking about this. I can take care of rebasing and organizing this PR so you don't have to if you want.

No worries.
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
Attention: Patch coverage is `85.71429%` with `1 line` in your changes missing coverage. Please review.
> Project coverage is 90.37%. Comparing base [(`81a022d`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/81a022def1eafcf1e9205a8dfe8b90bd62995a82?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`e2a56c0`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/e2a56c0587972dbe70f7613e60ea031479d336fd?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).
> Report is 9 commits behind head on main.

| [Files with missing lines](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Patch % | Lines |
|---|---|---|
| [...\_helpers/\_configuration\_models/\_base\_dataset\_io.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&filepath=src%2Fneuroconv%2Ftools%2Fnwb_helpers%2F_configuration_models%2F_base_dataset_io.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi90b29scy9ud2JfaGVscGVycy9fY29uZmlndXJhdGlvbl9tb2RlbHMvX2Jhc2VfZGF0YXNldF9pby5weQ==) | 85.71% | [1 Missing :warning: ](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) |

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@            Coverage Diff             @@
##             main    #1042      +/-   ##
==========================================
+ Coverage   90.32%   90.37%   +0.05%     
==========================================
  Files         129      129              
  Lines        7996     8003       +7     
==========================================
+ Hits         7222     7233      +11     
+ Misses        774      770       -4     
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.37% <85.71%> (+0.05%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files with missing lines](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...\_helpers/\_configuration\_models/\_base\_dataset\_io.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&filepath=src%2Fneuroconv%2Ftools%2Fnwb_helpers%2F_configuration_models%2F_base_dataset_io.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi90b29scy9ud2JfaGVscGVycy9fY29uZmlndXJhdGlvbl9tb2RlbHMvX2Jhc2VfZGF0YXNldF9pby5weQ==) | `96.80% <85.71%> (+1.00%)` | :arrow_up: |

... and [3 files with indirect coverage changes](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

</details>
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
Attention: Patch coverage is `85.71429%` with `1 line` in your changes missing coverage. Please review.
> Project coverage is 90.38%. Comparing base [(`81a022d`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/81a022def1eafcf1e9205a8dfe8b90bd62995a82?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`c6835f5`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/c6835f554b313e3d78bf872817f6b041ad7f7cfb?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).
> Report is 10 commits behind head on main.

| [Files with missing lines](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Patch % | Lines |
|---|---|---|
| [...\_helpers/\_configuration\_models/\_base\_dataset\_io.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&filepath=src%2Fneuroconv%2Ftools%2Fnwb_helpers%2F_configuration_models%2F_base_dataset_io.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi90b29scy9ud2JfaGVscGVycy9fY29uZmlndXJhdGlvbl9tb2RlbHMvX2Jhc2VfZGF0YXNldF9pby5weQ==) | 85.71% | [1 Missing :warning: ](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) |

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@            Coverage Diff             @@
##             main    #1042      +/-   ##
==========================================
+ Coverage   90.32%   90.38%   +0.06%     
==========================================
  Files         129      129              
  Lines        7996     8005       +9     
==========================================
+ Hits         7222     7235      +13     
+ Misses        774      770       -4     
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.38% <85.71%> (+0.06%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files with missing lines](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...\_helpers/\_configuration\_models/\_base\_dataset\_io.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&filepath=src%2Fneuroconv%2Ftools%2Fnwb_helpers%2F_configuration_models%2F_base_dataset_io.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi90b29scy9ud2JfaGVscGVycy9fY29uZmlndXJhdGlvbl9tb2RlbHMvX2Jhc2VfZGF0YXNldF9pby5weQ==) | `96.80% <85.71%> (+1.00%)` | :arrow_up: |

... and [3 files with indirect coverage changes](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

</details>
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) Report
Attention: Patch coverage is `85.71429%` with `1 line` in your changes missing coverage. Please review.
> Project coverage is 90.38%. Comparing base [(`81a022d`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/81a022def1eafcf1e9205a8dfe8b90bd62995a82?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) to head [(`6ea1abb`)](https://app.codecov.io/gh/catalystneuro/neuroconv/commit/6ea1abb0bd6899f976a6ffaabccc6eeee6673054?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro).
> Report is 11 commits behind head on main.

| [Files with missing lines](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Patch % | Lines |
|---|---|---|
| [...\_helpers/\_configuration\_models/\_base\_dataset\_io.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&filepath=src%2Fneuroconv%2Ftools%2Fnwb_helpers%2F_configuration_models%2F_base_dataset_io.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi90b29scy9ud2JfaGVscGVycy9fY29uZmlndXJhdGlvbl9tb2RlbHMvX2Jhc2VfZGF0YXNldF9pby5weQ==) | 85.71% | [1 Missing :warning: ](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) |

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/graphs/tree.svg?width=650&height=150&src=pr&token=h63OQoWehP&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

```diff
@@            Coverage Diff             @@
##             main    #1042      +/-   ##
==========================================
+ Coverage   90.32%   90.38%   +0.06%     
==========================================
  Files         129      129              
  Lines        7996     8005       +9     
==========================================
+ Hits         7222     7235      +13     
+ Misses        774      770       -4     
```

| [Flag](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | `90.38% <85.71%> (+0.06%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Files with missing lines](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro) | Coverage Δ | |
|---|---|---|
| [...\_helpers/\_configuration\_models/\_base\_dataset\_io.py](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042?src=pr&el=tree&filepath=src%2Fneuroconv%2Ftools%2Fnwb_helpers%2F_configuration_models%2F_base_dataset_io.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro#diff-c3JjL25ldXJvY29udi90b29scy9ud2JfaGVscGVycy9fY29uZmlndXJhdGlvbl9tb2RlbHMvX2Jhc2VfZGF0YXNldF9pby5weQ==) | `96.80% <85.71%> (+1.00%)` | :arrow_up: |

... and [3 files with indirect coverage changes](https://app.codecov.io/gh/catalystneuro/neuroconv/pull/1042/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=catalystneuro)

</details>

Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 12ed1eaf..cf4f6bfb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,6 @@
 # Upcoming
 
-## v.0.6.3
+## v0.6.4
 
 ## Bug Fixes
 * Fixed a setup bug introduced in `v0.6.2` where installation process created a directory instead of a file for test configuration file  [PR #1070](https://github.com/catalystneuro/neuroconv/pull/1070)
@@ -9,10 +9,12 @@
 ## Deprecations
 
 ## Features
+* Added chunking/compression for string-only compound objects: [PR #1042](https://github.com/catalystneuro/neuroconv/pull/1042)
 * Added automated EFS volume creation and mounting to the `submit_aws_job` helper function. [PR #1018](https://github.com/catalystneuro/neuroconv/pull/1018)
 
 ## Improvements
 
+## v0.6.3
 
 
 ## v0.6.2 (September 10, 2024)
diff --git a/src/neuroconv/tools/nwb_helpers/_configuration_models/_base_dataset_io.py b/src/neuroconv/tools/nwb_helpers/_configuration_models/_base_dataset_io.py
index 8b40e9a9..9cdb9740 100644
--- a/src/neuroconv/tools/nwb_helpers/_configuration_models/_base_dataset_io.py
+++ b/src/neuroconv/tools/nwb_helpers/_configuration_models/_base_dataset_io.py
@@ -277,10 +277,30 @@ class DatasetIOConfiguration(BaseModel, ABC):
             )
             compression_method = "gzip"
         elif dtype == np.dtype("object"):  # Unclear what default chunking/compression should be for compound objects
-            raise NotImplementedError(
-                f"Unable to create a `DatasetIOConfiguration` for the dataset at '{location_in_file}'"
-                f"for neurodata object '{neurodata_object}' of type '{type(neurodata_object)}'!"
-            )
+            # pandas reads in strings as objects by default: https://pandas.pydata.org/docs/user_guide/text.html
+            all_elements_are_strings = all([isinstance(element, str) for element in candidate_dataset[:].flat])
+            if all_elements_are_strings:
+                dtype = np.array([element for element in candidate_dataset[:].flat]).dtype
+                chunk_shape = SliceableDataChunkIterator.estimate_default_chunk_shape(
+                    chunk_mb=10.0, maxshape=full_shape, dtype=dtype
+                )
+                buffer_shape = SliceableDataChunkIterator.estimate_default_buffer_shape(
+                    buffer_gb=0.5, chunk_shape=chunk_shape, maxshape=full_shape, dtype=dtype
+                )
+                compression_method = "gzip"
+            else:
+                raise NotImplementedError(
+                    f"Unable to create a `DatasetIOConfiguration` for the dataset at '{location_in_file}'"
+                    f"for neurodata object '{neurodata_object}' of type '{type(neurodata_object)}'!"
+                )
+                # TODO: Add support for compound objects with non-string elements
+                # chunk_shape = full_shape  # validate_all_shapes fails if chunk_shape or buffer_shape is None
+                # buffer_shape = full_shape
+                # compression_method = None
+                # warnings.warn(
+                #     f"Default chunking and compression options for compound objects are not optimized. "
+                #     f"Consider manually specifying DatasetIOConfiguration for dataset at '{location_in_file}'."
+                # )
 
         return cls(
             object_id=neurodata_object.object_id,


Test patch:
diff --git a/tests/test_minimal/test_tools/test_backend_and_dataset_configuration/test_models/test_dataset_io_configuration_model.py b/tests/test_minimal/test_tools/test_backend_and_dataset_configuration/test_models/test_dataset_io_configuration_model.py
index 901a82d6..616c6e9d 100644
--- a/tests/test_minimal/test_tools/test_backend_and_dataset_configuration/test_models/test_dataset_io_configuration_model.py
+++ b/tests/test_minimal/test_tools/test_backend_and_dataset_configuration/test_models/test_dataset_io_configuration_model.py
@@ -2,6 +2,7 @@
 
 import numpy as np
 import pytest
+from pynwb.testing.mock.file import mock_NWBFile
 
 from neuroconv.tools.nwb_helpers import DatasetIOConfiguration
 
@@ -53,3 +54,44 @@ def test_model_json_schema_generator_assertion():
         DatasetIOConfiguration.model_json_schema(schema_generator="anything")
 
     assert "The 'schema_generator' of this method cannot be changed." == str(error_info.value)
+
+
+# TODO: Add support for compound objects with non-string elements
+# def test_from_neurodata_object_dtype_object():
+#     class TestDatasetIOConfiguration(DatasetIOConfiguration):
+#         def get_data_io_kwargs(self):
+#             super().get_data_io_kwargs()
+
+#     nwbfile = mock_NWBFile()
+#     nwbfile.add_trial(start_time=0.0, stop_time=1.0)
+#     nwbfile.add_trial(start_time=1.0, stop_time=2.0)
+#     nwbfile.add_trial(start_time=2.0, stop_time=3.0)
+#     data = np.array(["test", 5, False], dtype=object)
+#     nwbfile.add_trial_column(name="test", description="test column with object dtype", data=data)
+#     neurodata_object = nwbfile.trials.columns[2]
+
+#     dataset_io_configuration = TestDatasetIOConfiguration.from_neurodata_object(neurodata_object, dataset_name="data")
+
+#     assert dataset_io_configuration.chunk_shape == (3,)
+#     assert dataset_io_configuration.buffer_shape == (3,)
+#     assert dataset_io_configuration.compression_method is None
+
+
+def test_from_neurodata_object_dtype_object_all_strings():
+    class TestDatasetIOConfiguration(DatasetIOConfiguration):
+        def get_data_io_kwargs(self):
+            super().get_data_io_kwargs()
+
+    nwbfile = mock_NWBFile()
+    nwbfile.add_trial(start_time=0.0, stop_time=1.0)
+    nwbfile.add_trial(start_time=1.0, stop_time=2.0)
+    nwbfile.add_trial(start_time=2.0, stop_time=3.0)
+    data = np.array(["test", "string", "abc"], dtype=object)
+    nwbfile.add_trial_column(name="test", description="test column with object dtype but all strings", data=data)
+    neurodata_object = nwbfile.trials.columns[2]
+
+    dataset_io_configuration = TestDatasetIOConfiguration.from_neurodata_object(neurodata_object, dataset_name="data")
+
+    assert dataset_io_configuration.chunk_shape == (3,)
+    assert dataset_io_configuration.buffer_shape == (3,)
+    assert dataset_io_configuration.compression_method == "gzip"