It may be better to check this outside the loop, as ```Table.ObservationMetadata``` will be ```None``` if there really isn't any metadata associated with any of the observations. Note that if *any* observation has metadata (i.e. something that isn't ```None```), ```ObservationMetadata``` will be a defaultdict that returns ```None``` for the observations without metadata.

If there's a reason to keep the check here instead, can you change this to ```if otu_metadata is None```? I know the performance penalties for using ```==``` over ```is``` are slight, but you're doing this check for each OTU in the table, so it may actually make a difference here.