biom-format/biom-format — pull request #57 by jrrideout (2012-11-22 04:54:11+00:00)
Title: Table objects are now immutable.

```Table``` objects are now immutable, meaning that their members cannot be set to something different after instantiation. The ```SampleIds```, ```ObservationIds```, ```SampleMetadata```, and ```ObservationMetadata``` members are also now converted to tuples so that users can't access e.g. ```SampleIds``` and set an element of the list to something different.

The only exception to the immutability of ```Table``` objects is sample/observation metadata, which can be modified through ```addSampleMetadata``` and ```addObservationMetadata```.

```__setitem__``` and ```setValueByIds``` have been removed.

I also made some minor modifications to ```CSMat``` to handle empty (i.e. no non-zero elements) matrices. This was causing a test to fail (prior to my changes).

I tested these changes out with QIIME 1.5.0-dev to see what impact they had. Though there are many failures, they will all be easy to fix if we decide to keep these changes.

@wasade, I'm particularly interested in your feedback regarding these changes, as you've been very active in this code. I have not tried to improve the performance of CSMat given the new immutability of ```Table``` objects.

This resolves issue #50.