Esempio n. 1
0
def say_synapse(text, amplitude=None, wpm=None):
    """Synapse to adapt the parameters of say.

    Args:
        text (str): text to reproduce.
		amplitude(int, optional): string representation of an integer.
		wpm(int, optional): string representation of an integer.

    Returns:
        ([str, int, int], {}): a tuple of args and kwargs. The last one is always empty.
    """
    res = [text]
    res += [str_to_int(amplitude)] if amplitude else []
    res += [str_to_int(wpm)] if wpm else []
    return res, {}
Esempio n. 2
0
async def join_gathering(ctx):
    def check(message):
        if (message.author == ctx.author) and (message.channel == ctx.channel):
            return True
        else:
            return False
    try:
        gatherings = []
        for gathering_data in db['gatherings']:
            gathering = Gathering(gathering_data)
            if gathering.isOpen():
                gatherings.append(gathering)
        await ctx.send(
            'Type the number of the circle you want to join:\n{0}'
            .format(bot.pprint_gatherings(gatherings))
        )
        msg = await bot.wait_for('message', check=check)
        index = util.str_to_int(msg.content)
        if (index > len(gatherings) - 1) or index < 0:
            raise ValueError('Number is out of range')
        gathering = gatherings[index]
        user = User({'name': ctx.author.name, 'id': ctx.author.id})
        if user not in gathering.users:
            gathering.users.append(user)
        await ctx.send(f'**You have joined: {gathering.name}**')
    except (ValueError, IndexError) as e:
        await ctx.send(f'Error: {str(e)}\nEXITING COMMAND')
Esempio n. 3
0
    async def select_topics(self, ctx, length):
        def check(msg):
            if (msg.author == ctx.author) and (msg.channel == ctx.channel):
                return True
            else:
                return False

        available_topics = Topics(deepcopy(Topics.all_topics))
        result_list = []
        while len(result_list) < length:
            await ctx.send(
                'Type the number corresponding to the topic to select it:\n{0}'
                .format(available_topics.pprint()))
            msg = await self.wait_for('message', check=check)
            index = util.str_to_int(msg.content)
            if index > len(available_topics) - 1:
                raise ValueError(
                    "Your selection must be between 1 and {0}".format(
                        len(available_topics) - 1))
            result_list.append(available_topics[index])
            await ctx.send(
                f'**Topic {len(result_list)}: {available_topics[index]}**')
            available_topics.remove(index)
        await ctx.send(f'**Your selections are: {", ".join(result_list)}**')
        return result_list
Esempio n. 4
0
    def _download_one_day(self, day):
        """輸入一個date或datetime物件,下載物件指定的日期的資訊。
        """
        if self.isHoliday(day):
            return {'_id': self.date_to_datetime(day), 'TradingDay': False}

        ts = self.timestamp()
        self.js = js = proxy.get(
            self.url.format(day.year, day.month, day.day, ts)).json()

        item = None
        for k in js.keys():
            if k.startswith('fields') and js[k][0] == '證券代號':
                item = js['data' + k.replace('fields', '')]
        if not item:
            return {'_id': self.date_to_datetime(day), 'TradingDay': False}

        data = dict()
        data['_id'] = self.date_to_datetime(day)
        data['TradingDay'] = True
        for row in item:
            if not row[0].isdigit():
                continue
            item_name = row[0]
            data[item_name + '_成交股數'] = str_to_int(row[2])
            data[item_name + '_成交筆數'] = str_to_int(row[3])
            data[item_name + '_成交金額'] = str_to_int(row[4])
            if data[item_name + '_成交筆數'] == 0:
                data[item_name + '_平均每筆金額'] = 0.0
                data[item_name + '_平均每筆股數'] = 0.0
            else:
                n_trans = float(data[item_name + '_成交筆數'])
                data[item_name +
                     '_平均每筆金額'] = data[item_name + '_成交金額'] / n_trans
                data[item_name +
                     '_平均每筆股數'] = data[item_name + '_成交股數'] / n_trans
            data[item_name + '_開盤價'] = str_to_float(row[5])
            data[item_name + '_最高價'] = str_to_float(row[6])
            data[item_name + '_最低價'] = str_to_float(row[7])
            data[item_name + '_收盤價'] = str_to_float(row[8])
        return data
Esempio n. 5
0
def movetime_synapse(time):
    """Synapse to adapt a time string to an integer. Internally it calls
    `str_to_int` so refer to it for a general overview.

    Args:
        speed_value (str): string representation of an integer.

    Returns:
        ([bool], {}): a tuple of args and kwargs. The last one is always empty.
    """
    res = [str_to_int(time)] if time else []
    return res, {}
Esempio n. 6
0
    def _download_one_day(self, day):
        """輸入一個date或datetime物件,下載物件指定的日期的資訊。
        """
        if self.isHoliday(day):
            return {'_id': self.date_to_datetime(day), 'TradingDay': False}

        ts = self.timestamp()
        self.day = day
        self.js = js = proxy.get(
            self.url.format(day.year, day.month, day.day, ts)).json()

        item = None
        for k in js.keys():
            if k.startswith('fields') and js[k][0] == '成交統計':
                item = js['data' + k.replace('fields', '')]
        if not item:
            return {'_id': self.date_to_datetime(day), 'TradingDay': False}

        data = dict()
        data['_id'] = self.date_to_datetime(day)
        data['TradingDay'] = True
        for row in item[:12]:
            item_name = '成交統計_' + re.sub(r'\(.*\)', '', row[0]).replace(
                '.', '_')
            data[item_name + '_成交金額'] = str_to_int(row[1])
            data[item_name + '_成交股數'] = str_to_int(row[2])
            data[item_name + '_成交筆數'] = str_to_int(row[3])
            if data[item_name + '_成交筆數'] == 0:
                data[item_name + '_平均每筆金額'] = 0.0
                data[item_name + '_平均每筆股數'] = 0.0
            else:
                n_trans = float(data[item_name + '_成交筆數'])
                data[item_name +
                     '_平均每筆金額'] = data[item_name + '_成交金額'] / n_trans
                data[item_name +
                     '_平均每筆股數'] = data[item_name + '_成交股數'] / n_trans

        return data
Esempio n. 7
0
    def _download_one_day(self, day):
        """輸入一個date或datetime物件,下載物件指定的日期的資訊。
        """
        date_key = '{:04d}{:02d}'.format(day.year, day.month)
        if date_key in self.cache:
            js = self.cache[date_key]
        else:
            print('cache miss', date_key)
            ts = self.timestamp()
            self.cache[date_key] = js = proxy.get(
                self.url.format(day.year, day.month, 1, ts)).json()
        if 'data' not in js:
            return {'_id': self.date_to_datetime(day), 'TradingDay': False}
        found = [
            item
            for item in js['data'] if item[0] == '{:3d}/{:02d}/{:02d}'.format(
                day.year - 1911, day.month, day.day)
        ]
        if not found:
            return {'_id': self.date_to_datetime(day), 'TradingDay': False}
        item = found[0]

        data = dict()
        data['_id'] = self.date_to_datetime(day)
        data['TradingDay'] = True
        data['成交股數'] = str_to_int(item[1])
        data['成交金額'] = str_to_int(item[2])
        data['成交筆數'] = str_to_int(item[3])
        data['發行量加權股價指數'] = str_to_float(item[4])
        data['漲跌點數'] = str_to_float(item[5])
        if data['成交筆數'] == 0:
            data['平均每筆金額'] = 0.0
            data['平均每筆股數'] = 0.0
        else:
            n_trans = float(data['成交筆數'])
            data['平均每筆金額'] = data['成交金額'] / n_trans
            data['平均每筆股數'] = data['成交股數'] / n_trans
        return data
Esempio n. 8
0
    def post(self):
        pagesize = util.str_to_int(flask.request.form.get("pagesize"),
                                   default=10,
                                   min_value=10,
                                   max_value=100)
        target = util.str_one_of(flask.request.form.get("target"), "blank",
                                 ["self", "blank"])
        suggest = util.str_to_bool(flask.request.form.get("suggest", "off"),
                                   True, "on", "off")

        flask.session["pagesize"] = pagesize
        flask.session["target"] = target
        flask.session["suggest"] = suggest

        return flask.redirect(flask.url_for("main"))
Esempio n. 9
0
async def delete_gathering(ctx):
    def check(message):
        if (message.author == ctx.author) and (message.channel == ctx.channel):
            return True
        else:
            return False
    if not db['gatherings']:
        await ctx.send('No Gatherings')
        return
    try:
        all_gatherings = [Gathering(data) for data in db['gatherings']]
        gatherings = [
            gathering for gathering in all_gatherings
            if gathering.author.id == ctx.author.id
        ]
        if not gatherings:
            await ctx.send('You did not create any gatherings')
            return
        # Author created only 1 gathering:
        if len(gatherings) == 1:
            selected_gathering = gatherings[0]
        # Author created multiple gatherings
        else:
            await ctx.send(
                '**Select the Index of the Circle to delete:**\n{0}'
                .format(bot.pprint_gatherings(gatherings))
            )
            msg = await bot.wait_for('message', check=check)
            index = util.str_to_int(msg.content)
            if (index > len(gatherings) - 1) or index < 0:
                raise ValueError('Number is out of range')
            selected_gathering = gatherings[index]
        # Delete Selected Gathering:
        await ctx.send(
            '**Do you wish to delete this gathering? Type y or n**\n{0}'
            .format(selected_gathering.toString())
        )
        msg = await bot.wait_for('message', check=check)
        if msg.content not in ['y', 'n']:
            raise ValueError('Type y or n only')
        if msg.content == 'y':
            index = all_gatherings.index(selected_gathering)
            del db['gatherings'][index]
            await ctx.send('Circled Deleted')
            time.sleep(2)
            await ctx.invoke(bot.get_command('clear'))
    except (ValueError, IndexError) as e:
        await ctx.send(f'Error: {str(e)}\nEXITING COMMAND')
Esempio n. 10
0
    def _download_one_day(self, day):
        """輸入一個date或datetime物件,下載物件指定的日期的資訊。
        """
        try:
            self.get_json(day, name_field='fields', value_field='data')
        except HolidayException:
            return {'_id': self.date_to_datetime(day), 'TradingDay': False}

        data = dict()
        data['_id'] = self.date_to_datetime(day)
        data['TradingDay'] = True
        for row in self.js['data']:
            item_name = row[0].replace(')', '').replace('(', '_')
            if row[0] == '合計':
                continue
            for name, value in zip(self.js['fields'][1:], row[1:]):
                data[item_name + '_' + name] = str_to_int(value)
        return data
Esempio n. 11
0
    def _download_one_day(self, day):
        """輸入一個date或datetime物件,下載物件指定的日期的資訊。
        """
        try:
            self.get_json(day,
                          name_field='creditFields',
                          value_field='creditList')
        except HolidayException:
            return {'_id': self.date_to_datetime(day), 'TradingDay': False}

        data = dict()
        data['_id'] = self.date_to_datetime(day)
        data['TradingDay'] = True
        for row in self.js['creditList']:
            item_name = re.sub('\(.*?\)', '', row[0])
            for name, value in zip(self.js['creditFields'][1:], row[1:]):
                data[item_name + '_' +
                     re.sub('\(.*?\)', '', name)] = str_to_int(value)
        return data
Esempio n. 12
0
	def get(self):
		query = flask.request.args.get("q")
		
		if query == None or query == "":
			return flask.redirect(flask.url_for("main"))

		pagesize = flask.session["pagesize"] if "pagesize" in flask.session else 10
		page = util.str_to_int(flask.request.args.get("p"), default=1, min_value=1) 
		result = self.indexer.search(query, page, pagesize)
		target = flask.session["target"] if "target" in flask.session else "blank"
		suggest = flask.session["suggest"] if "suggest" in flask.session else True
		
		if suggest:
			maybe = self.indexer.suggest(query)
			suggest = maybe != query
		else:
			maybe = None
		
		return flask.render_template("search.html", text=query, suggest=suggest, maybe=maybe, result=result, page=page, target=target)
Esempio n. 13
0
def processa_estados():

	enf_uf, med_uf, hosp_uf, leitos_uf, uti_uf, uti_sus_uf, ibge_uf = util.read_uf_reg()

	# troca "-" pelo valor 0 nas celulas em que aparece
	util.dash_to_zero(enf_uf)
	util.dash_to_zero(med_uf)
	util.dash_to_zero(hosp_uf)
	util.dash_to_zero(leitos_uf)
	util.dash_to_zero(uti_uf)
	util.dash_to_zero(uti_sus_uf)

	# converte strings para valores numericos quando pertinente
	util.str_to_int(enf_uf)
	util.str_to_int(med_uf)
	util.str_to_int(hosp_uf)
	util.str_to_int(leitos_uf)
	util.str_to_int(uti_uf)
	util.str_to_int(uti_sus_uf)

	# retira linhas com informacoes desnecessarias
	util.drop(enf_uf, [-1, -1, -1])
	util.drop(med_uf, [-1, -1, -1])
	util.drop(hosp_uf, [-1, -1])
	util.drop(leitos_uf, [-1, -1])
	util.drop(uti_uf, [-1, -1])
	util.drop(uti_sus_uf, [-1, -1, -1])

	# cada bloco a seguir cria um atributo da tabela final

	nome = enf_uf["Região/Unidade da Federação"]
	# remove caracteres desnecessarios
	for i in range(len(nome)):
		nome[i] = nome[i].strip(". ")

	pop = []
	for item in ibge_uf["EST_POP_19"]:
		pop.append(item)
	# adiciona populacoes de cada regiao
	pop.insert(0, sum(ibge_uf["EST_POP_19"][0:7])) # norte
	pop.insert(8, sum(ibge_uf["EST_POP_19"][7:16])) # nordeste
	pop.insert(18, sum(ibge_uf["EST_POP_19"][16:20])) # sudeste
	pop.insert(23, sum(ibge_uf["EST_POP_19"][20:23])) # sul
	pop.insert(27, sum(ibge_uf["EST_POP_19"][23:27])) # centro-oeste

	enf_sus = enf_uf["Sim"]

	enf_nsus = enf_uf["Não"]

	enf_total = enf_uf["Total"]

	enf_sus_percent = util.percent(enf_sus, enf_total)

	enf_10k = util.pop_ratio(enf_total, 10000, pop)

	med_sus = med_uf["Sim"]

	med_nsus = med_uf["Não"]

	med_total = med_uf["Total"]

	med_sus_percent = util.percent(med_sus, med_total)

	med_10k = util.pop_ratio(med_total, 10000, pop)

	hosp_publ = []
	for i in range(len(hosp_uf)):
		hosp_publ.append(int(sum([hosp_uf["Administração Pública Federal"][i], 
						hosp_uf["Administração Pública Estadual ou Distrito Federal"][i],
						hosp_uf["Administração Pública Municipal"][i],
						hosp_uf["Administração Pública - Outros"][i],
						hosp_uf["Empresa Pública ou Sociedade de Economia Mista"][i]])))

	hosp_npubl = [] 
	for i in range(len(hosp_uf)):
		hosp_npubl.append(int(sum([hosp_uf["Demais Entidades Empresariais"][i], 
						hosp_uf["Entidades sem Fins Lucrativos"][i]])))

	hosp_total = []
	for i in range(len(hosp_uf)):
		hosp_total.append(int(hosp_publ[i] + hosp_npubl[i]))

	hosp_publ_percent = util.percent(hosp_publ, hosp_total) 

	hosp_100k = util.pop_ratio(hosp_total, 100000, pop)

	leitos_sus = []
	for i in range(len(leitos_uf)):
		leitos_sus.append(int(leitos_uf["Quantidade SUS"][i]))

	leitos_nsus = []
	for i in range(len(leitos_uf)):
		leitos_nsus.append(int(leitos_uf["Quantidade Não SUS"][i]))

	leitos_total = []
	for i in range(len(leitos_uf)):
		leitos_total.append(int(leitos_sus[i] + leitos_nsus[i]))

	leitos_sus_percent = util.percent(leitos_sus, leitos_total) 

	leitos_10k = util.pop_ratio(leitos_total, 10000, pop)

	leitos_uti_total = []
	for i in range(len(uti_uf)):
		leitos_uti_total.append(int(uti_uf["Total"][i]))

	leitos_uti_sus = uti_sus_uf["Total"]

	leitos_uti_nsus = []
	for i in range(len(leitos_uti_total)):
		leitos_uti_nsus.append(int(leitos_uti_total[i] - leitos_uti_sus[i]))

	leitos_uti_sus_percent = util.percent(leitos_uti_sus, leitos_uti_total)

	leitos_uti_10k = util.pop_ratio(leitos_uti_total, 10000, pop)

	leitos_covid_total = []
	for i in range(len(uti_uf)):
		leitos_covid_total.append(int(uti_uf["UTI adulto II COVID-19"][i] + 
							uti_uf["UTI pediátrica II COVID-19"][i]))

	leitos_covid_sus = []
	for i in range(len(uti_sus_uf)):
		leitos_covid_sus.append(int(uti_sus_uf["UTI adulto II COVID-19"][i] + 
							uti_sus_uf["UTI pediátrica II COVID-19"][i]))

	leitos_covid_nsus = []
	for i in range(len(leitos_covid_total)):
		leitos_covid_nsus.append(int(leitos_covid_total[i] - leitos_covid_sus[i]))

	leitos_covid_sus_percent = util.percent(leitos_covid_sus, leitos_covid_total)

	leitos_covid_10k = util.pop_ratio(leitos_covid_total, 10000, pop)

	# deficit ou excesso de profissionais de saude no estado ou regiao
	# em relacao a densidade populacional
	# considerando referencia oms (health workforce requirements, 2016)
	# recomendado = 44.5 medicos/enfs a cada 10k habitantes 
	rel_prof_saude_recomend = []
	recomend = 44.5
	for i in range(len(enf_total)):
		med_e_enf_10k = med_10k[i] + enf_10k[i]
		dfca = med_e_enf_10k - recomend # valor pos indica excesso; valor neg indica deficit
		rel_prof_saude_recomend.append(round((dfca*pop[i])/10000, 2))

	dados = {'Região ou UF': nome,
		'População': pop,
		'Enfermeiros SUS': enf_sus,
		'Enfermeiros não-SUS': enf_nsus,
		'Enfermeiros - Total': enf_total,
		'%' + ' de enfermeiros SUS': enf_sus_percent,
		'Enfermeiros a cada 10k habitantes': enf_10k,
		'Médicos SUS': med_sus,
		'Médicos não-SUS': med_nsus,
		'Médicos - Total': med_total,
		'%' + ' de médicos SUS': med_sus_percent,
		'Médicos a cada 10k habitantes': med_10k,
		'Déficit ou excesso de médicos/enfermeiros': rel_prof_saude_recomend,
		'Hospitais públicos': hosp_publ,
		'Hospitais não-públicos': hosp_npubl,
		'Hospitais - Total': hosp_total,
		'%' + ' de hospitais públicos': hosp_publ_percent,
		'Hospitais a cada 100k habitantes': hosp_100k,
		'Leitos (internação) SUS': leitos_sus,
		'Leitos (internação) não-SUS': leitos_nsus,
		'Leitos (internação) - Total': leitos_total,
		'%' + ' de leitos (internação) SUS': leitos_sus_percent,
		'Leitos (internação) a cada 10k habitantes': leitos_10k,
		'Leitos UTI SUS': leitos_uti_sus,
		'Leitos UTI não-SUS': leitos_uti_nsus,
		'Leitos UTI - Total': leitos_uti_total,
		'%' + ' de leitos UTI SUS': leitos_uti_sus_percent,
		'Leitos UTI a cada 10k habitantes': leitos_uti_10k,
		'Leitos UTI COVID-19 SUS': leitos_covid_sus,
		'Leitos UTI COVID-19 não-SUS': leitos_covid_nsus,
		'Leitos UTI COVID-19 - Total': leitos_covid_total,
		'%' + ' de leitos UTI COVID-19 SUS': leitos_covid_sus_percent,
		'Leitos UTI COVID-19 a cada 10k habitantes': leitos_covid_10k}

	df = pd.DataFrame(data=dados)
	util.write_to_csv(df, "Brasil - UFs e Regiões")
	stats.stats_estados(pd.read_csv("../data/processed/Brasil - UFs e Regiões.csv"))
Esempio n. 14
0
def processa_municipios():

	enf_mun, med_mun, hosp_mun, leitos_mun, uti_mun, uti_sus_mun, ibge_mun = util.read_mun()

	# troca "-" pelo valor 0 nas celulas em que aparece
	util.dash_to_zero(enf_mun)
	util.dash_to_zero(med_mun)
	util.dash_to_zero(hosp_mun)
	util.dash_to_zero(leitos_mun)
	util.dash_to_zero(uti_mun)
	util.dash_to_zero(uti_sus_mun)

	# converte strings para valores numericos quando pertinente
	util.str_to_int(enf_mun)
	util.str_to_int(med_mun)
	util.str_to_int(hosp_mun)
	util.str_to_int(leitos_mun)
	util.str_to_int(uti_mun)
	util.str_to_int(uti_sus_mun)

	# retira linhas com informacoes desnecessarias
	util.drop(enf_mun, [-1, -1, -1])
	util.drop(med_mun, [-1, -1, -1])
	util.drop(hosp_mun, [-1, -1, -1])
	util.drop(leitos_mun, [-1, -1, -1])
	util.drop(uti_mun, [-1, -1, -1])
	util.drop(uti_sus_mun, [-1, -1, -1])
	util.drop_mun(enf_mun)
	util.drop_mun(med_mun)
	util.drop_mun(hosp_mun)
	util.drop_mun(leitos_mun)
	util.drop_mun(uti_mun)
	util.drop_mun(uti_sus_mun)

	# adiciona informacao sobre sigla correspondente a cada codigo uf
	siglas_uf = util.cod_to_uf(ibge_mun)
	ibge_mun["NM_UF"] = siglas_uf

	# remove ultimo digito do codigo municipal do dataset do ibge
	# o objetivo eh igualar ao codigo municipal dos datasets do datasus
	for i in range(len(ibge_mun)):
		ibge_mun.at[i, "CD_MUN"] = ibge_mun["CD_MUN"][i]//10

	# cada bloco a seguir cria um atributo da tabela final

	cod = []
	for i in range(len(enf_mun)):
		cod.append(int(enf_mun["Município"][i][0:7])) # primeiros seis digitos

	nome = []
	for i in range(len(enf_mun)):
		nome.append(enf_mun["Município"][i][7:]) # todos os digitos menos 7 primeiros (6 do codigo + espaco)

	pop = []
	# insere na ordem dos datasets do datasus
	for i in range(len(cod)):
		# pop_cod = populacao registrada para a linha em que cd_mun == cod[i]
		pop_cod = ibge_mun["EST_POP_19"][ibge_mun["CD_MUN"] == cod[i]].iloc[0]
		pop.append(pop_cod)
	
	uf = []
	# insere na ordem dos datasets do datasus
	for i in range(len(cod)):
		# uf_cod = sigla da uf registrada para a linha em que cd_mun == cod[i]
		uf_cod = ibge_mun["NM_UF"][ibge_mun["CD_MUN"] == cod[i]].iloc[0]
		uf.append(uf_cod)

	enf_sus = enf_mun["Sim"]

	enf_nsus = enf_mun["Não"]

	enf_total = enf_mun["Total"]

	enf_sus_percent = util.percent(enf_sus, enf_total)

	enf_10k = util.pop_ratio(enf_total, 10000, pop)

	med_sus = med_mun["Sim"]

	med_nsus = med_mun["Não"]

	med_total = med_mun["Total"]

	med_sus_percent = util.percent(med_sus, med_total)

	med_10k = util.pop_ratio(med_total, 10000, pop)

	hosp_publ = []
	for i in range(len(hosp_mun)):
		hosp_publ.append(int(sum([hosp_mun["Administração Pública Federal"][i], 
						hosp_mun["Administração Pública Estadual ou Distrito Federal"][i],
						hosp_mun["Administração Pública Municipal"][i],
						hosp_mun["Administração Pública - Outros"][i],
						hosp_mun["Empresa Pública ou Sociedade de Economia Mista"][i]])))

	hosp_npubl = [] 
	for i in range(len(hosp_mun)):
		hosp_npubl.append(int(sum([hosp_mun["Demais Entidades Empresariais"][i], 
						hosp_mun["Entidades sem Fins Lucrativos"][i]])))

	hosp_total = []
	for i in range(len(hosp_mun)):
		hosp_total.append(int(hosp_publ[i] + hosp_npubl[i]))

	hosp_publ_percent = util.percent(hosp_publ, hosp_total) 

	hosp_100k = util.pop_ratio(hosp_total, 100000, pop)

	leitos_sus = leitos_mun["Quantidade SUS"]

	leitos_nsus = leitos_mun["Quantidade Não SUS"]

	leitos_total = []
	for i in range(len(leitos_mun)):
		leitos_total.append(int(leitos_sus[i] + leitos_nsus[i]))

	leitos_sus_percent = util.percent(leitos_sus, leitos_total) 

	leitos_10k = util.pop_ratio(leitos_total, 10000, pop)

	leitos_uti_total = uti_mun["Total"]

	leitos_uti_sus = uti_sus_mun["Total"]

	leitos_uti_nsus = []
	for i in range(len(leitos_uti_total)):
		leitos_uti_nsus.append(int(leitos_uti_total[i] - leitos_uti_sus[i]))

	leitos_uti_sus_percent = util.percent(leitos_uti_sus, leitos_uti_total)

	leitos_uti_10k = util.pop_ratio(leitos_uti_total, 10000, pop)

	leitos_covid_total = []
	for i in range(len(uti_mun)):
		leitos_covid_total.append(int(uti_mun["UTI adulto II COVID-19"][i] + 
							uti_mun["UTI pediátrica II COVID-19"][i]))

	leitos_covid_sus = []
	for i in range(len(uti_sus_mun)):
		leitos_covid_sus.append(int(uti_sus_mun["UTI adulto II COVID-19"][i] + 
							uti_sus_mun["UTI pediátrica II COVID-19"][i]))

	leitos_covid_nsus = []
	for i in range(len(leitos_covid_total)):
		leitos_covid_nsus.append(int(leitos_covid_total[i] - leitos_covid_sus[i]))

	leitos_covid_sus_percent = util.percent(leitos_covid_sus, leitos_covid_total)

	leitos_covid_10k = util.pop_ratio(leitos_covid_total, 10000, pop)

	# deficit ou excesso de profissionais de saude no municipio
	# em relacao a densidade populacional
	# considerando referencia oms (health workforce requirements, 2016)
	# recomendado = 44.5 medicos/enfs a cada 10k habitantes 
	rel_prof_saude_recomend = []
	recomend = 44.5
	for i in range(len(enf_total)):
		med_e_enf_10k = med_10k[i] + enf_10k[i]
		dfca = med_e_enf_10k - recomend # valor pos indica excesso; valor neg indica deficit
		rel_prof_saude_recomend.append(round((dfca*pop[i])/10000, 2))


	dados = {'Código Municipal': cod,
		'Município': nome,
		'População': pop,
		'UF': uf,
		'Enfermeiros SUS': enf_sus,
		'Enfermeiros não-SUS': enf_nsus,
		'Enfermeiros - Total': enf_total,
		'%' + ' de enfermeiros SUS': enf_sus_percent,
		'Enfermeiros a cada 10k habitantes': enf_10k,
		'Médicos SUS': med_sus,
		'Médicos não-SUS': med_nsus,
		'Médicos - Total': med_total,
		'%' + ' de médicos SUS': med_sus_percent,
		'Médicos a cada 10k habitantes': med_10k,
		'Déficit ou excesso de médicos/enfermeiros': rel_prof_saude_recomend,
		'Hospitais públicos': hosp_publ,
		'Hospitais não-públicos': hosp_npubl,
		'Hospitais - Total': hosp_total,
		'%' + ' de hospitais públicos': hosp_publ_percent,
		'Hospitais a cada 100k habitantes': hosp_100k,
		'Leitos (internação) SUS': leitos_sus,
		'Leitos (internação) não-SUS': leitos_nsus,
		'Leitos (internação) - Total': leitos_total,
		'%' + ' de leitos (internação) SUS': leitos_sus_percent,
		'Leitos (internação) a cada 10k habitantes': leitos_10k,
		'Leitos UTI SUS': leitos_uti_sus,
		'Leitos UTI não-SUS': leitos_uti_nsus,
		'Leitos UTI - Total': leitos_uti_total,
		'%' + ' de leitos UTI SUS': leitos_uti_sus_percent,
		'Leitos UTI a cada 10k habitantes': leitos_uti_10k,
		'Leitos UTI COVID-19 SUS': leitos_covid_sus,
		'Leitos UTI COVID-19 não-SUS': leitos_covid_nsus,
		'Leitos UTI COVID-19 - Total': leitos_covid_total,
		'%' + ' de leitos UTI COVID-19 SUS': leitos_covid_sus_percent,
		'Leitos UTI COVID-19 a cada 10k habitantes': leitos_covid_10k}

	df = pd.DataFrame(data=dados)
	util.write_to_csv(df, "Brasil - Municípios")
	stats.stats_municipios(pd.read_csv("../data/processed/Brasil - Municípios.csv"))