Skip to content

lacc-ufmg/QSARModelingPy

Repository files navigation

QSARModelingPy - Core

QSARModelingPy is an open-source Python package to build and validate QSAR/QSPR models.

Desenvolvimento (IMPORTANTE LER!)

Este repositório contém o pacote Python, disponível publicamente no PyPI e, portanto, via pip install qsarmodelingpy. Ele contém as rotinas centrais do software.

Esta é, portanto, a base e a "fonte de verdade" do pacote irmão, QSARModelingPyInterfaces, que será distribuído no PyPI sob o nome mais simples qsarmodeling, e conterá as interfaces de usuário final.

Esses projetos foram desenvolvido há, agora, mais de 5 anos. Na ocasião, a equipe se dedicou ao empacotamento de um conjunto de scripts mais antigos, sem grandes preocupações com a refatoração ou o estilo de código.

Hoje, visando a expansão do pacote, as prioridades centrais no desenvolvimento deste projeto são:

  1. Documentação: Desenvolvimento de uma extensiva e detalhada documentação que permita aos usuários utilizar o pacote e o software.
  2. Testagem: Expansão das rotinas de testes automatizados existentes, as quais são:
    1. Testes unitários (em andamento): escrever testes atômicos do programa, buscando maximizar a cobertura dos testes. Usamos pytest e o diretório tests/.
    2. Análise estática (em andamento): ferramentas de análise constante do código, tais como:
      1. mypy para checagem de tipagem;
      2. ruff check para linting;
      3. ruff format para formatação automática de código.
    3. Testes de integração: elaboração de testes para a integração entre as diferentes partes do programa, o que pode se extender até um teste ponta-a-ponta (no qual o programa é testado fechado, sem acesso ao código).
    4. Testes humanos: disponibilização do software para usuários reais e acompanhamento do feedback.
  3. DevOps e MLOps (em estágio avançado), que se dedicam a operações de infraestrutura majoritariamente automatizáveis.
    1. Integração contínua (CI) (parcialmente completo): rotinas automátizadas de testagem e qualidade de código executadas pelo próprio repositório Github, sem interação humana. Útil para executar as ferramentas de análise estática, fazer formatação de código e detectar problemas.
    2. Entrega contínua (CD) (parcialmente completo): infraestrutura na qual o próprio repositório Github é capaz de compilar o pacote e distribuí-lo nos canais adequados (como o PyPI ou o conda).

Configurando o projeto

Após git clone este repositório, certifique-se de estar na branch dev/2024-update:

$ git clone -b dev/2024-update https://github.com/hellmrf/QSARModelingPy
$ cd QSARModelingPy

# ou

$ git clone https://github.com/hellmrf/QSARModelingPy
$ cd QSARModelingPy
$ git checkout dev/2024-update 
$ git fetch && git pull

Para executá-lo, é necessário apenas o gerenciador uv. Caso não o tenha, instale-o com pipx install uv ou veja as Instruções de Instalação.

Running

Com o uv instalado, utilize o comando uv run para criar um ambiente, baixar as dependências e executar o projeto. Note que uv run X é, na maioria dos casos, semelhante a python X ou, em alguns casos, python -m X.

$ uv run python qsarmodelingpy/runners/external_validation.py

$ uv run qsarmodelingpy/runners/external_validation.py

Linting - ruff check

Para executar o linter e procurar por erros na base de código, utilize o ruff check:

Only find and report errors:

$ uv run ruff check

Found 427 errors.

Find and report errors, and try to fix when possible:

$ uv run ruff check --fix

Found 427 errors (1 fixed, 426 remaining).

Formatter - ruff format

Para executar o formatador de código, utilize o ruff format:

Formatar todos os arquivos necessários:

$ uv run ruff format

Use a flag --check para apenas reportar, sem alterar nenhum arquivo. Um exit code zero indica que todos os arquivos já estão formatados; um exit code diferente de zero indica que há arquivos que precisam ser formatados.

$ uv run ruff format --check

$ uv run ruff format --diff

Analisador Estático de Tipagem: mypy

Para executar o analisador estático mypy e encontrar erros potenciais no código-fonte, use:

$ uv run mypy src/qsarmodeling/gui

PyPI docs PyPI - Format GitHub top language GitHub License

QSARModeling é uma ferramenta gratuita e open-source para a construção e validação de modelos QSAR e QSPR. Originalmente desenvolvido em Java, esta biblioteca em Python permite ao usuário a aplicação programática, personalizável e escalável dos recursos do software.

Alguns recursos podem ser destacados, como:

  • Redução de dimensionalidade baseada em variância, correlação e autocorrelação;
  • Seleção de variáveis: Ordered Predictors Selection (OPS) ou Algoritmo Genético (GA)
  • Validação cruzada: y-randomization e leave-N-out
  • Validação externa

Installation

You shall have Python (preferably 3.11) installed. To install the package and dependencies, go to the repository's root folder and run:

python -m pip install . .[dev]

You can ommit .[dev] if you'll not work directly on the development

Development

Stage of development

The current stage of this project is: IDEA, so it's absolutely not ready for real usage. Your contribution would be very appreciated.

Code formatting

We're using Google's yapf autoformatter together with google style-guide. You can install yapf on VSCode from the extensions marketplace. At command-line, it would be yapf file.py. Make sure you have it configured, so we don't conflict styling.

Current plan

Uso

Esta versão do QSARModelingPy Core é uma biblioteca para a linguagem de programação Python, com foco em programadores que desejam implementar sua própria versão do QSAR Modeling, expandi-lo ou utilizá-lo programaticamente. Se deseja uma versão funcional desenvolvida para o usuário final, veja as interfaces do QSARModelingPy.

Para utilizar, instale a biblioteca em seu ambiente.

$ pip install qsarmodelingpy

About

A free and open-source Python Package for building and validating QSAR models.

Resources

License

Stars

Watchers

Forks

Contributors