Escolar Documentos
Profissional Documentos
Cultura Documentos
TCC Diego Ifsc Versão Corrigida Pizetta Tannus Final
TCC Diego Ifsc Versão Corrigida Pizetta Tannus Final
São Carlos
2023
DIEGO PROSPERI TURIBIO
São Carlos
2023
2
RESUMO
O objetivo deste trabalho foi criar um plugin - adição ou alteração de software que permitem a
personalização de programas de computador - que se acopla ao ambiente de desenvolvimento
integrado (IDE) - Spyder - com as ferramentas já desenvolvidas pelo time, e juntamente, criar um
editor sensível à linguagem F (linguagem para programação de Métodos de ressonância magnética
desenvolvida pelo CIERMag), além de um gerenciador de projetos e arquivos que também fará
parte do mesmo IDE.
3
1. INTRODUÇÃO
1.1. Contextualização
1.1.1. Ressonância Magnética
1.1.3. Linguagem F
4
Um programa escrito na linguagem F consiste em três elementos distintos: sequências, módulos e
eventos.
Os módulos são usados para controlar o fluxo do programa que está sendo escrito. Eles contêm
declarações para repetir instruções, fazer processamento condicional, iniciar eventos, definir
matrizes de rotação e executar outras operações.
Os eventos são a forma mais baixa de agregação usada na construção das sequências. Os eventos
são uma coleção de linhas onde cada linha descreve a forma de onda durante a duração do evento
para uma determinada saída.
1.1.5. Plugins
Também conhecidos como “add-ons”, são softwares que são agregados a outros softwares
servindo como uma extensão dos mesmos, fazendo uso de suas funcionalidades principais e
estendendo funcionalidades específicas que atendem também a um público específico que o utiliza.
5
É uma filosofia de desenvolvimento compartilhado de software, onde qualquer usuário pode
copiar ou modificar o código fonte desde que a licença seja mantida livre e aberta, assim
contribuindo para a evolução do software ou personalizá-lo para atender às suas necessidades
particulares.
1.2. Motivação
2. MATERIAIS E MÉTODOS
2.1. Ambiente Virtual
6
2.2. Sistema operacional
7
Devido ao modelo de desenvolvimento de software em paralelo dentre os diversos membros
do grupo de pesquisa, uma ferramenta de versionamento e controle de código se faz necessária para
que mudanças feitas em alguma parte do código não sejam sobrescritas por outro desenvolvedor
trabalhando num mesmo arquivo do programa. Para tal finalidade utilizamos uma conta na
plataforma Gitlab9 que permite centralizar o código e todas alterações em uma máquina na nuvem,
facilitando assim o acesso para todos que possuem uma conta e permissão de acesso ao repositório
por meio da ferramenta de interface git.10
Nesta mesma plataforma, pode-se reportar problemas encontrados por membros do grupo que
testam as ferramentas desenvolvidas, e assim tem-se um controle total da cadeia de
desenvolvimento, teste e implementação de uma versão estável.
8
Um projeto é um conjunto de arquivos e pastas organizados em árvores para gerenciar e
agrupar os desenvolvimentos de ressonância magnética. O próprio gerenciador de arquivos do
Spyder foi replicado e então feitas adaptações para atender às necessidades específicas de projetos
de ressonância magnética.
3. RESULTADOS
3.1. Editor da Linguagem F como plugin
9
Figura 1 - Coloração da sintaxe do código da linguagem F.
Atualmente, o IDE Spyder conta com um servidor de linguagem, que descartou a necessidade de
utilização da metalinguagem textX. Estas alterações foram feitas por outro integrante do grupo, e
todas definições e estrutura do plugin foram aproveitadas nesta melhoria.
10
Figura 2 - Spyder PyMR com plugin de gerenciamento de projetos. 1) Menu com funcionalidades
sobre um projeto. 2) Plugin de gerenciamento de projetos com árvore padrão de diretórios e
arquivos de um projeto aberto. 3) Área de edição de arquivos em formato texto.
Ao se criar um novo projeto, Figura 3, uma estrutura padrão de arquivos e pastas necessários para
um projeto novo é criada e preenchida com valores iniciais.
11
Figura 3 - Janela de criação de novo projeto com parâmetros marcados com * de preenchimento
obrigatório para que a estrutura padrão de um projeto possa ser gerada.
Atualmente, existem duas versões do PyMR: PyMR1 - Figura 4 e PyMR2 - Figura 5, e ambos são
objetos deste projeto de conclusão de curso, onde foram transformados em plugins do Spyder IDE.
O PyMR1 é uma versão mais estável e funcional do software, que é utilizada para criação e
desenvolvimento de métodos de ressonância magnética, enquanto o PyMR2 está em
desenvolvimento contínuo atualmente para incorporar novas funcionalidades, e programação de
sequências em forma de arrastar e soltar objetos com ajuda do mousepad, entre outras
funcionalidades que são temas de um projeto de pós-doutorado atualmente.
12
Figura 5 - PyMR2 IDE.
Por fim temos a janela de log (Figura 4-4) que mostra todas mensagens referentes à validação e
execuções também em forma de janela/aba (Figura 8) no plugin. Vale ressaltar que todas as janelas
e abas são móveis, basta destravá-las e posicionar onde se desejar, que esta configuração é salva
automaticamente ao fechar o IDE, e é recarregada no mesmo layout quando reiniciado o IDE.
O plugin também gerencia todas as configurações de layouts e de projetos deixados abertos ao se
fechar o IDE, recarregando-as na próxima inicialização, assim como os valores iniciais de variáveis
de ambiente e de trabalho, tornando a utilização automática pelo usuário não familiarizado com o
sistema.
13
Figura 6 - Spyder PyMR1. Janela de parâmetros e barra de ferramentas destacadas em vermelho.
14
Figura 8 - Spyder PyMR1. Janela do log do sistema.
A estrutura oferece interfaces gráficas para diferentes tipos de interação e visualização do sistema,
sequência de pulsos e dados, que podem ser combinados livremente (encaixados) ou exibidos em
combinações particulares para diferentes contextos.3
15
Figura 9 - Spyder PyMR2. Em destaque janelas de inspeção, criação e edição de objetos,
visualização gráfica e explorador de projetos, e barra de ferramentas.
16
Figura 10 - criação da toolbar (1) com base no menu (2) já existente no plugin nativo (explorador de
variáveis) (3) do Spyder IDE.
Além da criação da barra de ferramentas, que possibilita a edição de tipos de dados básicos como
números, strings (palavras), valores booleanos (verdadeiro ou falso), listas e dicionários,
necessitava-se ter esta mesma edição para tabelas18, o que precisava ser implementado do zero pois
envolve um tipo de dado que não é nativo da linguagem.
As novas implementações seguem conforme pode ser visto na Figura 11.
17
Figura 11 - criação da toolbar (1), do menu (2) e implementação de todas funcionalidades no plugin
nativo (explorador de variáveis) (3) do Spyder IDE.
Desta forma é feita uma contribuição direta para o projeto Spyder ao mesmo tempo que se cria
funcionalidades almejadas para a edição dos sistemas de ressonância magnética.
Desde sua concepção, os plugins desenvolvidos descritos neste trabalho, vêm sendo
utilizados pelo grupo de ressonância magnética, facilitando o acesso ao ambiente de forma
centralizada. Como novas funcionalidades, configurações e melhorias são propostas e
implementadas conforme necessidade, o plugin sofre constantes modificações para adequar tais
mudanças ao longo de seu ciclo de desenvolvimento por diversos membros do grupo de trabalho. A
integração em uma única plataforma facilita a iniciação de novos usuários ao sistema, visto que
apenas uma instalação é necessária para se ter todo ferramental de desenvolvimento utilizado em
ressonância magnética, diminuindo o tempo de configuração e instalação de diversas ferramentas
que muitas vezes é feita por pessoal especializado ou com conhecimento específico sobre
determinados ferramentais da área.
18
A criação de um plugin, envolveu inicialmente um estudo reverso sobre como o plugin deveria ser
implementado inicialmente, visto que a documentação específica do IDE não era abrangente o
suficiente na época de sua concepção. Além da criação do plugin, ainda foram feitas contribuições
para o desenvolvimento de software livre, o que beneficia toda comunidade científica que faz uso
dessa ferramenta.
Com a concepção e desenvolvimento dessa ideia, esperamos inserir no mercado uma ferramenta
abrangente o suficiente para se gerenciar diversos tipos de hardware para ressonância magnética em
um único pacote.
REFERÊNCIAS
19
9 GITLAB. Disponível em: <https://gitlab.com/>. Acesso em: 12 abr. 2023.
17 QT: Tools for Each Stage of Software Development Lifecycle. Disponível em:
<https://www.qt.io/>. Acesso em: 10 maio. 2023.
18 PR: Add edition menu and toolbar to dataframe viewer. Disponível em:
<https://github.com/spyder-ide/spyder/pull/20546>. Acesso em: 10 maio. 2023.
19 PR: Add context menu entries for collections to a toolbar (Variable Explorer). Disponível em:
<https://github.com/spyder-ide/spyder/pull/17473>. Acesso em: 10 maio. 2023.
20 PR: Add option to insert elements above/below in lists (Variable Explorer). Disponível em:
<https://github.com/spyder-ide/spyder/pull/13380>. Acesso em: 10 maio. 2023.
20