def _stream_taxonomic_profile(self, stream_output, genome_id_to_percent, metadata_table, sample_id=''):
    '\n        Stream a taxonomic profile by list of percentages by genome id\n\n        @param stream_output: Output of taxonomic profile\n        @type stream_output: file | FileIO | StringIO\n        @param genome_id_to_percent: Percentage for each genome id\n        @type genome_id_to_percent: dict[str|unicode, float]\n        @param metadata_table: Contains metadata of all communities\n        @type metadata_table: MetadataTable\n        @param sample_id: Identifier of a sample\n        @type sample_id: str | unicode\n        '
    strain_id_to_genome_id = {}
    genome_id_to_strain_id = {}
    genome_id_to_taxid = metadata_table.get_map(key_column_name='genome_ID', value_column_name='NCBI_ID')
    genome_id_to_otu = metadata_table.get_map(key_column_name='genome_ID', value_column_name='OTU')
    column_genome_id = metadata_table.get_column('genome_ID')
    if (not metadata_table.has_column('strain_id')):
        column_strain_id = metadata_table.get_empty_column()
    else:
        column_strain_id = metadata_table.get_column('strain_id')
        genome_id_to_strain_id = metadata_table.get_map(key_column_name='genome_ID', value_column_name='strain_id')
    genome_id_to_lineage = self._get_genome_id_to_lineage(genome_id_to_percent.keys(), genome_id_to_taxid, strain_id_to_genome_id, genome_id_to_strain_id)
    percent_by_rank_by_taxid = self._get_percent_by_rank_by_taxid(genome_id_to_lineage, genome_id_to_percent)
    self._stream_tp_header(stream_output, sample_id)
    self._stream_tp_rows(stream_output, percent_by_rank_by_taxid, strain_id_to_genome_id, genome_id_to_otu)
Stream a taxonomic profile by list of percentages by genome id

@param stream_output: Output of taxonomic profile
@type stream_output: file | FileIO | StringIO
@param genome_id_to_percent: Percentage for each genome id
@type genome_id_to_percent: dict[str|unicode, float]
@param metadata_table: Contains metadata of all communities
@type metadata_table: MetadataTable
@param sample_id: Identifier of a sample
@type sample_id: str | unicode
def _stream_taxonomic_profile(self, stream_output, genome_id_to_percent, metadata_table, sample_id=):
    '\n        Stream a taxonomic profile by list of percentages by genome id\n\n        @param stream_output: Output of taxonomic profile\n        @type stream_output: file | FileIO | StringIO\n        @param genome_id_to_percent: Percentage for each genome id\n        @type genome_id_to_percent: dict[str|unicode, float]\n        @param metadata_table: Contains metadata of all communities\n        @type metadata_table: MetadataTable\n        @param sample_id: Identifier of a sample\n        @type sample_id: str | unicode\n        '
    strain_id_to_genome_id = {}
    genome_id_to_strain_id = {}
    genome_id_to_taxid = metadata_table.get_map(key_column_name='genome_ID', value_column_name='NCBI_ID')
    genome_id_to_otu = metadata_table.get_map(key_column_name='genome_ID', value_column_name='OTU')
    column_genome_id = metadata_table.get_column('genome_ID')
    if (not metadata_table.has_column('strain_id')):
        column_strain_id = metadata_table.get_empty_column()
    else:
        column_strain_id = metadata_table.get_column('strain_id')
        genome_id_to_strain_id = metadata_table.get_map(key_column_name='genome_ID', value_column_name='strain_id')
    genome_id_to_lineage = self._get_genome_id_to_lineage(genome_id_to_percent.keys(), genome_id_to_taxid, strain_id_to_genome_id, genome_id_to_strain_id)
    percent_by_rank_by_taxid = self._get_percent_by_rank_by_taxid(genome_id_to_lineage, genome_id_to_percent)
    self._stream_tp_header(stream_output, sample_id)
    self._stream_tp_rows(stream_output, percent_by_rank_by_taxid, strain_id_to_genome_id, genome_id_to_otu)