# The MIT License (MIT)
#
# Copyright (c) 2020 M. Choji
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""A set of indexes that map identifiers to descriptions.
Each index in this module relates to a question or student/institution
information (variable) in Enade microdata. Indexes are represented by
dictionaries and should not be accessed directly.
"""
from typing import Dict
from .helpers import list_cols_inst_eval
_index_co_categad = {
1:
'Pública Federal',
2:
'Pública Estadual',
3:
'Pública Municipal',
4:
'Privada com fins lucrativos',
5:
'Privada sem fins lucrativos',
7:
'Especial',
93:
'Pessoa Jurídica de Direito Público - Federal',
115:
'Pessoa Jurídica de Direito Público - Estadual',
116:
'Pessoa Jurídica de Direito Público - Municipal',
118: (
'Pessoa Jurídica de Direito Privado - '
'Com fins lucrativos - Sociedade Civil'
),
120: (
'Pessoa Jurídica de Direito Privado - '
'Sem fins lucrativos - Associação de Utilidade Pública'
),
121:
('Pessoa Jurídica de Direito Privado - '
'Sem fins lucrativos - Fundação'),
10001:
'Pessoa Jurídica de Direito Público - Estadual',
10002:
'Pessoa Jurídica de Direito Público - Federal',
10003:
'Pessoa Jurídica de Direito Público - Municipal',
10004: (
'Pessoa Jurídica de Direito Privado - '
'Com fins lucrativos - Associação de Utilidade Pública'
),
10005:
'Privada com fins lucrativos',
10006: (
'Pessoa Jurídica de Direito Privado - '
'Com fins lucrativos - Sociedade Mercantil ou Comercial'
),
10007: (
'Pessoa Jurídica de Direito Privado - '
'Sem fins lucrativos - Associação de Utilidade Pública'
),
10008:
'Privada sem fins lucrativos',
10009: (
'Pessoa Jurídica de Direito Privado - '
'Sem fins lucrativos - Sociedade'
),
17634:
'Fundação Pública de Direito Privado Municípal',
}
_index_co_orgacad = {
10019: 'Centro Federal de Educação Tecnológica',
10020: 'Centro Universitário',
10022: 'Faculdade',
10026: 'Instituto Federal de Educação, Ciência e Tecnologia',
10028: 'Universidade',
}
_index_co_grupo = {
# Enade 2016
5: 'Medicina Veterinária',
6: 'Odontologia',
12: 'Medicina',
17: 'Agronomia',
19: 'Farmácia',
23: 'Enfermagem',
27: 'Fonoaudiologia',
28: 'Nutrição',
36: 'Fisioterapia',
38: 'Serviço Social',
51: 'Zootecnia',
55: 'Biomedicina',
69: 'Tecnologia em Radiologia',
90: 'Tecnologia em Agronegócios',
91: 'Tecnologia em Gestão Hospitalar',
92: 'Tecnologia em Gestão Ambiental',
95: 'Tecnologia em Estética E Cosmética',
3501: 'Educação Física (Bacharelado)',
# Enade 2017
21: 'Arquitetura e Urbanismo',
72: 'Tecnologia em Análise e Desenvolvimento de Sistemas',
76: 'Tecnologia em Gestão da Produção Industrial',
79: 'Tecnologia em Redes de Computadores',
701: 'Matemática (Bacharelado)',
702: 'Matemática (Licenciatura)',
903: 'Letras - Português (Bacharelado)',
904: 'Letras - Português (Licenciatura)',
905: 'Letras - Português e Inglês (Licenciatura)',
906: 'Letras - Português e Espanhol (Licenciatura)',
1401: 'Física (Bacharelado)',
1402: 'Física (Licenciatura)',
1501: 'Química (Bacharelado)',
1502: 'Química (Licenciatura)',
1601: 'Ciências Biológicas (Bacharelado)',
1602: 'Ciências Biológicas (Licenciatura)',
2001: 'Pedagogia (Licenciatura)',
2401: 'História (Bacharelado)',
2402: 'História (Licenciatura)',
2501: 'Artes Visuais (Licenciatura)',
3001: 'Geografia (Bacharelado)',
3002: 'Geografia (Licenciatura)',
3201: 'Filosofia (Bacharelado)',
3202: 'Filosofia (Licenciatura)',
3502: 'Educação Física (Licenciatura)',
#
4003: 'Engenharia da Computação',
4004: 'Ciência da Computação (Bacharelado)',
4005: 'Ciência da Computação (Licenciatura)',
4006: 'Sistemas de Informação',
4301: 'Música (Licenciatura)',
5401: 'Ciências Sociais (Bacharelado)',
5402: 'Ciências Sociais (Licenciatura)',
5710: 'Engenharia Civil',
5806: 'Engenharia Elétrica',
5814: 'Engenharia de Controle e Automação',
5902: 'Engenharia Mecânica',
6002: 'Engenharia de Alimentos',
6008: 'Engenharia Química',
6208: 'Engenharia de Produção',
6306: 'Engenharia',
6307: 'Engenharia Ambiental',
6405: 'Engenharia Florestal',
6407: 'Letras - Inglês',
6409: 'Tecnologia em Gestão da Tecnologia da Informação',
# Enade 2018
1: 'Administração',
2: 'Direito',
13: 'Ciências Econômicas',
18: 'Psicologia',
22: 'Ciências Contábeis',
26: 'Design',
29: 'Turismo',
38: 'Serviço Social',
67: 'Secretariado Executivo',
81: 'Relações Internacionais',
83: 'Tecnologia em Design de Moda',
84: 'Tecnologia em Marketing',
85: 'Tecnologia em Processos Gerenciais',
86: 'Tecnologia em Gestão de Recursos Humanos',
87: 'Tecnologia em Gestão Financeira',
88: 'Tecnologia em Gastronomia',
93: 'Tecnologia em Gestão Comercial',
94: 'Tecnologia em Logística',
100: 'Administração Pública',
101: 'Teologia',
102: 'Tecnologia em Comércio Exterior',
103: 'Tecnologia em Design de Interiores',
104: 'Tecnologia em Design Gráfico',
105: 'Tecnologia em Gestão da Qualidade',
106: 'Tecnologia em Gestão Pública',
803: 'Comunicação Social - Jornalismo',
804: 'Comunicação Social - Publicidade e Propaganda',
}
_index_co_modalidade = {
0: 'EaD',
1: 'Presencial',
}
_index_co_uf_curso = {
11: 'Rondônia (RO)',
12: 'Acre (AC)',
13: 'Amazonas (AM)',
14: 'Roraima (RR)',
15: 'Pará (PA)',
16: 'Amapa (AP)',
17: 'Tocantins (TO)',
21: 'Maranhão (MA)',
22: 'Piauí (PI)',
23: 'Ceará (CE)',
24: 'Rio Grande do Norte (RN)',
25: 'Paraíba (PB)',
26: 'Pernambuco (PE)',
27: 'Alagoas (AL)',
28: 'Sergipe (SE)',
29: 'Bahia (BA)',
31: 'Minas gerais (MG)',
32: 'Espírito santo (ES)',
33: 'Rio de janeiro (RJ)',
35: 'São paulo (SP)',
41: 'Paraná (PR)',
42: 'Santa catarina (SC)',
43: 'Rio grande do sul (RS)',
50: 'Mato grosso do sul (MS)',
51: 'Mato grosso (MT)',
52: 'Goiás (GO)',
53: 'Distrito federal (DF)',
}
_index_co_regiao_curso = {
1: 'Norte',
2: 'Nordeste',
3: 'Sudeste',
4: 'Sul',
5: 'Centro-Oeste',
}
_index_tp_sexo = {
'M': 'Masculino',
'F': 'Feminino',
}
_index_co_turno_graduacao = {
1: 'Matutino',
2: 'Vespertino',
3: 'Integral',
4: 'Noturno',
}
_index_tp_inscricao_adm = {
0: 'Tradicional',
1: 'Judicial',
}
_index_tp_inscricao = {
1: 'Concluinte',
}
_index_tp_pres = {
222: 'Ausente',
333: 'Resultado desconsiderado por inscrição indevida',
334: 'Eliminado por participação indevida',
444: 'Ausente devido a dupla graduação',
555: 'Presente com resultado válido',
556: 'Presente com resultado desconsiderado pela Aplicadora',
888: 'Presente com resultado desconsiderado pelo Inep',
999: 'Presente por Ação judicial',
}
_index_tp_pr_ger = {
222: 'Ausente',
333: 'Participação com prova em branco',
555: 'Participação com respostas válidas na prova',
556: 'Participação com resultado desconsiderado pela Aplicadora',
888: 'Participação com resultado desconsiderado pelo Inep',
}
_index_tp_pr_ob_fg = _index_tp_pr_ger
_index_tp_pr_di_fg = _index_tp_pr_ger
_index_tp_pr_ob_ce = _index_tp_pr_ger
_index_tp_pr_di_ce = _index_tp_pr_ger
_index_tp_sfg_d1 = _index_tp_sfg_d2 = _index_tp_sce_d1 = _index_tp_sce_d2 = \
_index_tp_sce_d3 = {
222: 'Não se aplica (estudante ausente)',
333: 'Questão em branco (estudante presente)',
335: 'Questão zerada por motivo de resposta nula',
336: 'Questão zerada por motivo de resposta divergente com a temática',
555: 'Questão com resultado válido',
556: ('Questão com resultado desconsiderado devido a '
'problemas administrativos'),
888: 'Questão não respondida por problemas administrativos',
}
# Indexes for the questions from section 'Percepção da Prova'
_index_co_rs_i1 = _index_co_rs_i2 = {
'A': 'Muito fácil',
'B': 'Fácil',
'C': 'Médio',
'D': 'Difícil',
'E': 'Muito difícil',
'*': 'Resposta anulada',
'.': 'Não respondeu',
}
_index_co_rs_i3 = {
'A': 'Muito longa',
'B': 'Longa',
'C': 'Adequada',
'D': 'Curta',
'E': 'Muito curta',
'*': 'Resposta anulada',
'.': 'Não respondeu',
}
_index_co_rs_i4 = _index_co_rs_i5 = {
'A': 'Sim, todos',
'B': 'Sim, a maioria',
'C': 'Apenas cerca da metade',
'D': 'Poucos se apresentam',
'E': 'Não, nenhum',
'*': 'Resposta anulada',
'.': 'Não respondeu',
}
_index_co_rs_i6 = {
'A': 'Sim, até excessivas',
'B': 'Sim, em todas elas',
'C': 'Sim, na maioria delas',
'D': 'Sim, somente em algumas',
'E': 'Não, em nenhuma delas',
'*': 'Resposta anulada',
'.': 'Não respondeu',
}
_index_co_rs_i7 = {
'A': 'Desconhecimento do conteúdo',
'B': 'Forma diferente de abordagem do conteúdo',
'C': 'Espaço insuficiente para responder às questões',
'D': 'Falta de motivação para fazer a prova',
'E': 'Não tive qualquer tipo de dificuldade para responder à prova',
'*': 'Resposta anulada',
'.': 'Não respondeu',
}
_index_co_rs_i8 = {
'A': 'Não estudou ainda a maioria desses conteúdos',
'B': 'Estudou alguns desses conteúdos, mas não os aprendeu',
'C': 'Estudou a maioria desses conteúdos, mas não os aprendeu',
'D': 'Estudou e aprendeu muitos desses conteúdos',
'E': 'Estudou e aprendeu todos esses conteúdos',
'*': 'Resposta anulada',
'.': 'Não respondeu',
}
_index_co_rs_i9 = {
'A': 'Menos de uma hora',
'B': 'Entre uma e duas horas',
'C': 'Entre duas e três horas',
'D': 'Entre três e quatro horas',
'E': 'Quatro horas e não consegui terminar',
'*': 'Resposta anulada',
'.': 'Não respondeu',
}
# Indexes for the questions from section 'Questionário do Estudante'
_index_qe_i01 = {
'A': 'Solteiro(a)',
'B': 'Casado(a)',
'C': 'Separado(a) judicialmente/divorciado(a)',
'D': 'Viúvo(a)',
'E': 'Outro',
}
_index_qe_i02 = {
'A': 'Branca',
'B': 'Preta',
'C': 'Amarela',
'D': 'Parda',
'E': 'Indígena',
'F': 'Não quero declarar',
}
_index_qe_i03 = {
'A': 'Brasileira',
'B': 'Brasileira naturalizada',
'C': 'Estrangeira',
}
_index_qe_i04 = _index_qe_i05 = {
'A': 'Nenhuma',
'B': 'Ensino Fundamental: 1º ao 5º ano (1ª a 4ª série)',
'C': 'Ensino Fundamental: 6º ao 9º ano (5ª a 8ª série)',
'D': 'Ensino Médio',
'E': 'Ensino Superior - Graduação',
'F': 'Pós-graduação',
}
_index_qe_i06 = {
'A':
'Em casa ou apartamento, sozinho',
'B':
'Em casa ou apartamento, com pais e/ou parentes',
'C':
'Em casa ou apartamento, com cônjuge e/ou filhos',
'D':
'Em casa ou apartamento, com outras pessoas (incluindo república)',
'E':
'Em alojamento universitário da própria instituição',
'F': (
'Em outros tipos de habitação individual ou coletiva '
'(hotel, hospedaria, pensão ou outro)'
),
}
_index_qe_i07 = {
'A': 'Nenhuma',
'B': 'Uma',
'C': 'Duas',
'D': 'Três',
'E': 'Quatro',
'F': 'Cinco',
'G': 'Seis',
'H': 'Sete ou mais',
}
_index_qe_i08 = {
'A': 'Até 1,5 salário mínimo',
'B': 'De 1,5 a 3 salários mínimos',
'C': 'De 3 a 4,5 salários mínimos',
'D': 'De 4,5 a 6 salários mínimos',
'E': 'De 6 a 10 salários mínimos',
'F': 'De 10 a 30 salários mínimos',
'G': 'Acima de 30 salários mínimos',
}
_index_qe_i09 = {
'A': (
'Não tenho renda e meus gastos são financiados '
'por programas governamentais'
),
'B': (
'Não tenho renda e meus gastos são financiados '
'pela minha família ou por outras pessoas'
),
'C': (
'Tenho renda, mas recebo ajuda da família ou de'
' outras pessoas para financiar meus gastos'
),
'D':
'Tenho renda e não preciso de ajuda para financiar meus gastos',
'E':
'Tenho renda e contribuo com o sustento da família',
'F':
'Sou o principal responsável pelo sustento da família',
}
_index_qe_i10 = {
'A': 'Não estou trabalhando',
'B': 'Trabalho eventualmente',
'C': 'Trabalho até 20 horas semanais',
'D': 'Trabalho de 21 a 39 horas semanais',
'E': 'Trabalho 40 horas semanais ou mais',
}
_index_qe_i11 = {
'A': 'Nenhum, pois meu curso é gratuito',
'B': 'Nenhum, embora meu curso não seja gratuito',
'C': 'ProUni integral',
'D': 'ProUni parcial, apenas',
'E': 'FIES, apenas',
'F': 'ProUni Parcial e FIES',
'G': 'Bolsa oferecida por governo estadual, distrital ou municipal',
'H': 'Bolsa oferecida pela própria instituição',
'I': 'Bolsa oferecida por outra entidade (empresa, ONG, outra)',
'J': 'Financiamento oferecido pela própria instituição',
'K': 'Financiamento bancário',
}
_index_qe_i12 = {
'A': 'Nenhum',
'B': 'Auxílio moradia',
'C': 'Auxílio alimentação',
'D': 'Auxílio moradia e alimentação',
'E': 'Auxílio permanência',
'F': 'Outro tipo de auxílio',
}
_index_qe_i13 = {
'A': 'Nenhum',
'B': 'Bolsa de iniciação científica',
'C': 'Bolsa de extensão',
'D': 'Bolsa de monitoria/tutoria',
'E': 'Bolsa PET',
'F': 'Outro tipo de bolsa acadêmica',
}
_index_qe_i14 = {
'A':
'Não participei',
'B':
'Sim, Programa Ciência sem Fronteiras',
'C': (
'Sim, programa de intercâmbio financiado pelo '
'Governo Federal (Marca; Brafitec; PLI; outro'
),
'D':
'Sim, programa de intercâmbio financiado pelo Governo Estadual',
'E':
'Sim, programa de intercâmbio da minha instituição',
'F':
'Sim, outro intercâmbio não institucional',
}
_index_qe_i15 = {
'A':
'Não',
'B':
'Sim, por critério étnico-racial',
'C':
'Sim, por critério de renda',
'D': (
'Sim, por ter estudado em escola pública ou particular '
'com bolsa de estudos'
),
'E':
'Sim, por sistema que combina dois ou mais critérios anteriores',
'F':
'Sim, por sistema diferente dos anteriores',
}
_index_qe_i16 = {
11: 'Rondônia (RO)',
12: 'Acre (AC)',
13: 'Amazonas (AM)',
14: 'Roraima (RR)',
15: 'Pará (PA)',
16: 'Amapa (AP)',
17: 'Tocantins (TO)',
21: 'Maranhão (MA)',
22: 'Piauí (PI)',
23: 'Ceará (CE)',
24: 'Rio Grande do Norte (RN)',
25: 'Paraíba (PB)',
26: 'Pernambuco (PE)',
27: 'Alagoas (AL)',
28: 'Sergipe (SE)',
29: 'Bahia (BA)',
31: 'Minas gerais (MG)',
32: 'Espírito santo (ES)',
33: 'Rio de janeiro (RJ)',
35: 'São paulo (SP)',
41: 'Paraná (PR)',
42: 'Santa catarina (SC)',
43: 'Rio grande do sul (RS)',
50: 'Mato grosso do sul (MS)',
51: 'Mato grosso (MT)',
52: 'Goiás (GO)',
53: 'Distrito federal (DF)',
99: 'Não se aplica',
}
_index_qe_i17 = {
'A': 'Todo em escola pública',
'B': 'Todo em escola privada (particular)',
'C': 'Todo no exterior',
'D': 'A maior parte em escola pública',
'E': 'A maior parte em escola privada (particular)',
'F': 'Parte no Brasil e parte no exterior',
}
_index_qe_i18 = {
'A':
'Ensino médio tradicional',
'B': (
'Profissionalizante técnico '
'(eletrônica, contabilidade, agrícola, outro)'
),
'C':
'Profissionalizante magistério (Curso Normal)',
'D':
'Educação de Jovens e Adultos (EJA) e/ou Supletivo',
'E':
'Outra modalidade',
}
_index_qe_i19 = {
'A': 'Ninguém',
'B': 'Pais',
'C': 'Outros membros da família que não os pais',
'D': 'Professores',
'E': 'Líder ou representante religioso',
'F': 'Colegas/Amigos',
'G': 'Outras pessoas',
}
_index_qe_i20 = {
'A': 'Não tive dificuldade',
'B': 'Não recebi apoio para enfrentar dificuldades',
'C': 'Pais',
'D': 'Avós',
'E': 'Irmãos, primos ou tios',
'F': 'Líder ou representante religioso',
'G': 'Colegas de curso ou amigos',
'H': 'Professores do curso',
'I': 'Profissionais do serviço de apoio ao estudante da IES',
'J': 'Colegas de trabalho',
'K': 'Outro grupo',
}
_index_qe_i21 = {
'A': 'Sim',
'B': 'Não',
}
_index_qe_i22 = {
'A': 'Nenhum',
'B': 'Um ou dois',
'C': 'De três a cinco',
'D': 'De seis a oito',
'E': 'Mais de oito',
}
_index_qe_i23 = {
'A': 'Nenhuma, apenas assisto às aulas',
'B': 'De uma a três',
'C': 'De quatro a sete',
'D': 'De oito a doze',
'E': 'Mais de doze',
}
_index_qe_i24 = {
'A':
'Sim, somente na modalidade presencial',
'B':
'Sim, somente na modalidade semipresencial',
'C': (
'Sim, parte na modalidade presencial '
'e parte na modalidade semipresencial'
),
'D':
'Sim, na modalidade a distância',
'E':
'Não',
}
_index_qe_i25 = {
'A': 'Inserção no mercado de trabalho',
'B': 'Influência familiar',
'C': 'Valorização profissional',
'D': 'Prestígio Social',
'E': 'Vocação',
'F': 'Oferecido na modalidade a distância',
'G': 'Baixa concorrência para ingresso',
'H': 'Outro motivo',
}
_index_qe_i26 = {
'A': 'Gratuidade',
'B': 'Preço da mensalidade',
'C': 'Proximidade da minha residência',
'D': 'Proximidade do meu trabalho',
'E': 'Facilidade de acesso',
'F': 'Qualidade/reputação',
'G': 'Foi a única onde tive aprovação',
'H': 'Possibilidade de ter bolsa de estudo',
'I': 'Outro motivo',
}
# Variables from QE_I27 TO QE_I68 take a scale format
_index_qe_i27_to_qe_i68 = {
1: 'Discordo totalmente',
2: 'Discordo consideravalmente',
3: 'Discordo parcialmente',
4: 'Concordo parcialmente',
5: 'Concordo consideravelmente',
6: 'Concordo totalmente',
7: 'Não sei responder',
8: 'Não se aplica',
}
# TODO: indexes from QE_I169 to QE_I81 (exclusive for licentiate)
[docs]def get_index_dict(varname: str) -> Dict:
"""Gets a map to translate indexes from a given variable.
Given a variable name (column name from Enade microdata), returns
a dictionary containing the values seen in microdata as dictionary's
keys and the respective descriptions as dictionary's values.
Args:
varname (str): A variable or column name from Enade microdata.
Raises:
NameError: if a dictionary was not found for the given name.
Returns:
Dict: A dictionary mapping values to descriptions for a given
variable or column name.
"""
if not isinstance(varname, str):
raise TypeError('Expected string as argument')
if varname.upper() in list_cols_inst_eval():
return _index_qe_i27_to_qe_i68
dict_name = '_index_' + varname.lower()
if dict_name in globals():
return globals()[dict_name]
else:
raise NameError(f'Index for {varname} not found')