pavdedutor


Namepavdedutor JSON
Version 0.0.4 PyPI version JSON
download
home_pageNone
SummaryOtimizador de uso de ábacos de valores deduzíveis para análise de patologias em pavimentos rígidos e flexíveis
upload_time2025-08-05 02:16:02
maintainerNone
docs_urlNone
author['Wellington Moura', 'Francisco Macedo']
requires_python>=3.7
licenseMIT
keywords dnit pavimento norma ábaco rígido flexível
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 🛣️ PavDedutor 

## Descrição

Biblioteca python voltada para otimização do cálculo de valores deduzíveis de patologias de pavimentos **rígidos** e **flexíveis** com base nas disposições normativas da [DNIT 062/2004 PRO](https://www.gov.br/dnit/pt-br/assuntos/planejamento-e-pesquisa/ipr/coletanea-de-normas/coletanea-de-normas/procedimento-pro/dnit_062_2004_pro.pdf) e [ASTMD6433](https://pages.mtu.edu/~balkire/CE5403/ASTMD6433.pdf).

Entendendo a necessidade de automação dos processo manuais presentes nas normas [DNIT 062/2004 PRO](https://www.gov.br/dnit/pt-br/assuntos/planejamento-e-pesquisa/ipr/coletanea-de-normas/coletanea-de-normas/procedimento-pro/dnit_062_2004_pro.pdf) e [ASTMD6433](https://pages.mtu.edu/~balkire/CE5403/ASTMD6433.pdf), a `pavdedutor` propõe a substiuição da consulta manual aos *ábacos de valores de deduzíveis* pelo uso de funções programáticas rápidas e precisas - desenvolvidad
Para isso, as curvas presentes nos ábacos das normas foram *vetorizadas* e a partir dos *pontos conhecidos* de cada uma, foram aplicadas *regressões polinomiais* ou *regressões logaritimicas* (a depender do tipo de pavimento), resultando na obtenção de coeficientes capazes de reproduzir com alta fidelidade os valores originais, dispensando a necessidade de consultas manuais.

A biblioteca possibilita:
- Cálculo direto dos valores deduzíveis por tipo de defeito e tipo de pavimento;
- Correção automática do valor total deduzível com base na diversidade de patologias;
- Integração com `pandas` para análises em lote.

## Instalação

#### Instalação com pip
```bash
pip install pavdedutor
```

## Uso
#### Cálculo de valor deduzível unitário
```python
import pavdedutor as pav  # Importa a biblioteca

# Cálculo de valor deduzível
exemplo = pav.deduzivel(1, 'a', 30, 'rígido')  # Chama a função deduzivel passando: patologia 1, severidade 'a', densidade 30 e pavimento rígido
print(exemplo)  # Imprime o valor deduzível calculado
```

#### Cálculo de valor deduzível em lote
```python
import pavdedutor as pav  # Importa a biblioteca
import pandas as pd  # Importa a biblioteca pandas

# Criação de um dicionário com dados genéricos de patologias
dic_patologias = {
    'Patologias': [1, 2, 3, 4, 5, 6, 7, 8, 9],  # Lista de códigos de patologias
    'Severidades': ['a','b','m','a','b','m','a','b','m'],  # Severidades correspondentes
    'Densidades': [10, 20, 30, 10, 20, 30, 10, 20, 30],  # Densidades para cada patologia
    'Tipo de pavimento': ['rígido']*9,  # Tipo de pavimento (todos rígidos)
    'Número da amostra': [1, 1, 1, 2, 2, 2, 3, 3, 3]  # Identifica a qual amostra cada linha pertence
}

df = pd.DataFrame(dic_patologias)  # Cria um DataFrame a partir do dicionário

resultado = []  # Lista para armazenar os resultados

# Loop para calcular o valor deduzível de cada linha
for i in range(len(df)):
    resultado.append(pav.deduzivel(
        df.loc[i, 'Patologias'], # Nome da coluna com as patologias
        df.loc[i, 'Severidades'], # Nome da coluna com as severidades correspondentes
        df.loc[i, 'Densidades'], # Nome da coluna com as densidades correspondentes
        df.loc[i, 'Tipo de pavimento'] # Nome da coluna com os tipos de pavimentos
    )
)

df['Valores deduziveis'] = resultado  # Adiciona os valores deduzíveis calculados ao DataFrame

df  # Exibe o DataFrame final
```

#### Cálculo de valor deduzível corrigido total 
```python
import pavdedutor as pav  # Importa a biblioteca pavdedutor
import pandas as pd  # Importa a biblioteca pandas

# Criação de um dicionário com dados genéricos
dic_patologias = {
    'Patologias': [1, 2, 3],  # Códigos das patologias
    'Severidades': ['a','b','m'],  # Severidades correspondentes
    'Densidades': [10, 20, 30],  # Densidades para cada patologia
    'Tipo de pavimento': ['rígido']*3,  # Tipo de pavimento (todos rígidos)
    'Valores deduziveis': [54, 17, 39]  # Valores deduzíveis previamente calculados
}

df = pd.DataFrame(dic_patologias)  # Converte o dicionário em DataFrame

# Cálculo de valor deduzível total com correção por diversidade de patologias
exemplo = pav.deduzivel_total(
    df, # DataFrame com os dados genéricos
    'Patologias',  # Nome da coluna com os códigos das patologias
    'Valores deduziveis',  # Nome da coluna com os valores deduzíveis
    'rígido'  # Tipo de pavimento
)

print(exemplo)  # Exibe o valor deduzível total corrigido

```

#### Cálculo de valor deduzível corrigido total em lote
```python
import pavdedutor as pav  # Importa a biblioteca pavdedutor
import pandas as pd  # Importa a biblioteca pandas

# Criação do dicionário com dados simulados de patologias por amostra
dic_patologias = {
    'Patologias': [1, 2, 3, 4, 5, 6, 7, 8, 9],  # Códigos das patologias
    'Severidades': ['a','b','m','a','b','m','a','b','m'],  # Severidades correspondentes
    'Densidades': [10,20,30,10,20,30,10,20,30],  # Densidades para cada patologia
    'Tipo de pavimento': ['rígido']*9,  # Tipo de pavimento (todos rígidos)
    'Número da amostra': [1,1,1,2,2,2,3,3,3],  # Identificador da amostra
    'Valores deduzíveis': [54,17,39,16,2,10,18,7,7]  # Valores deduzíveis previamente calculados
}

df = pd.DataFrame(dic_patologias)  # Cria o DataFrame com os dados

resultado = []  # Lista para armazenar os resultados corrigidos

# Loop para calcular o valor deduzível total corrigido por amostra
for amostra in df['Número da amostra'].unique():
    
    resultado.append(pav.deduzivel_corrigido_total(
        df[df['Número da amostra'] == amostra],  # Filtra os dados da amostra atual
        'Patologias',  # Nome da coluna de patologias
        'Valores deduzíveis',  # Nome da coluna com os valores deduzíveis
        'rígido'  # Tipo de pavimento
    )
)

resultado  # Exibe os resultados finais corrigidos por amostra

```
#### Com os valores deduzíveis corrigidos, o usuário já pode obter o **ICP/IPC**
```python
import pandas as pd  # Importa a biblioteca pandas

amostras = [1, 2, 3]  # Lista com os números das amostras
resultado = [66, 22, 20]  # Lista com os valores deduzíveis corrigidos por amostra

tabela_final = dict(zip(amostras, resultado))  # Cria um dicionário associando cada amostra ao seu resultado

df_final = pd.DataFrame(tabela_final.items(), columns=['Amostra', 'VDC'])  # Converte em DataFrame com colunas Amostra e VDC
df_final['ICP'] = 100 - df_final['VDC']  # Calcula o ICP como 100 - VDC

df_final  # Exibe a tabela final com VDC e ICP por amostra
```

#### Desenvolvimento do projeto
A biblioteca ainda está em processo de desenvolvimento, com novas funcionalidades a serem implementadas, assim como sua documentação. Fique a vontade para me contatar e dar sua opnião sobre o projeto no meu [Linkedin](www.linkedin.com/in/wmoural), [GitHub](https://github.com/wmoural) ou [Email](pro.wmoura@gmail.com).

#### Licença
Copyright (c) 2025 Wellington Moura

O uso é fornecido sob a Licença do MIT.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pavdedutor",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "dnit pavimento norma \u00e1baco r\u00edgido flex\u00edvel",
    "author": "['Wellington Moura', 'Francisco Macedo']",
    "author_email": "pro.wmoura@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/0a/f8/9fdf884c25426a4ea028eee3f8d3af863bd9679774a7c598d8c92f27253c/pavdedutor-0.0.4.tar.gz",
    "platform": null,
    "description": "# \ud83d\udee3\ufe0f PavDedutor \r\n\r\n## Descri\u00e7\u00e3o\r\n\r\nBiblioteca python voltada para otimiza\u00e7\u00e3o do c\u00e1lculo de valores deduz\u00edveis de patologias de pavimentos **r\u00edgidos** e **flex\u00edveis** com base nas disposi\u00e7\u00f5es normativas da [DNIT 062/2004 PRO](https://www.gov.br/dnit/pt-br/assuntos/planejamento-e-pesquisa/ipr/coletanea-de-normas/coletanea-de-normas/procedimento-pro/dnit_062_2004_pro.pdf) e [ASTMD6433](https://pages.mtu.edu/~balkire/CE5403/ASTMD6433.pdf).\r\n\r\nEntendendo a necessidade de automa\u00e7\u00e3o dos processo manuais presentes nas normas [DNIT 062/2004 PRO](https://www.gov.br/dnit/pt-br/assuntos/planejamento-e-pesquisa/ipr/coletanea-de-normas/coletanea-de-normas/procedimento-pro/dnit_062_2004_pro.pdf) e [ASTMD6433](https://pages.mtu.edu/~balkire/CE5403/ASTMD6433.pdf), a `pavdedutor` prop\u00f5e a substiui\u00e7\u00e3o da consulta manual aos *\u00e1bacos de valores de deduz\u00edveis* pelo uso de fun\u00e7\u00f5es program\u00e1ticas r\u00e1pidas e precisas - desenvolvidad\r\nPara isso, as curvas presentes nos \u00e1bacos das normas foram *vetorizadas* e a partir dos *pontos conhecidos* de cada uma, foram aplicadas *regress\u00f5es polinomiais* ou *regress\u00f5es logaritimicas* (a depender do tipo de pavimento), resultando na obten\u00e7\u00e3o de coeficientes capazes de reproduzir com alta fidelidade os valores originais, dispensando a necessidade de consultas manuais.\r\n\r\nA biblioteca possibilita:\r\n- C\u00e1lculo direto dos valores deduz\u00edveis por tipo de defeito e tipo de pavimento;\r\n- Corre\u00e7\u00e3o autom\u00e1tica do valor total deduz\u00edvel com base na diversidade de patologias;\r\n- Integra\u00e7\u00e3o com `pandas` para an\u00e1lises em lote.\r\n\r\n## Instala\u00e7\u00e3o\r\n\r\n#### Instala\u00e7\u00e3o com pip\r\n```bash\r\npip install pavdedutor\r\n```\r\n\r\n## Uso\r\n#### C\u00e1lculo de valor deduz\u00edvel unit\u00e1rio\r\n```python\r\nimport pavdedutor as pav  # Importa a biblioteca\r\n\r\n# C\u00e1lculo de valor deduz\u00edvel\r\nexemplo = pav.deduzivel(1, 'a', 30, 'r\u00edgido')  # Chama a fun\u00e7\u00e3o deduzivel passando: patologia 1, severidade 'a', densidade 30 e pavimento r\u00edgido\r\nprint(exemplo)  # Imprime o valor deduz\u00edvel calculado\r\n```\r\n\r\n#### C\u00e1lculo de valor deduz\u00edvel em lote\r\n```python\r\nimport pavdedutor as pav  # Importa a biblioteca\r\nimport pandas as pd  # Importa a biblioteca pandas\r\n\r\n# Cria\u00e7\u00e3o de um dicion\u00e1rio com dados gen\u00e9ricos de patologias\r\ndic_patologias = {\r\n    'Patologias': [1, 2, 3, 4, 5, 6, 7, 8, 9],  # Lista de c\u00f3digos de patologias\r\n    'Severidades': ['a','b','m','a','b','m','a','b','m'],  # Severidades correspondentes\r\n    'Densidades': [10, 20, 30, 10, 20, 30, 10, 20, 30],  # Densidades para cada patologia\r\n    'Tipo de pavimento': ['r\u00edgido']*9,  # Tipo de pavimento (todos r\u00edgidos)\r\n    'N\u00famero da amostra': [1, 1, 1, 2, 2, 2, 3, 3, 3]  # Identifica a qual amostra cada linha pertence\r\n}\r\n\r\ndf = pd.DataFrame(dic_patologias)  # Cria um DataFrame a partir do dicion\u00e1rio\r\n\r\nresultado = []  # Lista para armazenar os resultados\r\n\r\n# Loop para calcular o valor deduz\u00edvel de cada linha\r\nfor i in range(len(df)):\r\n    resultado.append(pav.deduzivel(\r\n        df.loc[i, 'Patologias'], # Nome da coluna com as patologias\r\n        df.loc[i, 'Severidades'], # Nome da coluna com as severidades correspondentes\r\n        df.loc[i, 'Densidades'], # Nome da coluna com as densidades correspondentes\r\n        df.loc[i, 'Tipo de pavimento'] # Nome da coluna com os tipos de pavimentos\r\n    )\r\n)\r\n\r\ndf['Valores deduziveis'] = resultado  # Adiciona os valores deduz\u00edveis calculados ao DataFrame\r\n\r\ndf  # Exibe o DataFrame final\r\n```\r\n\r\n#### C\u00e1lculo de valor deduz\u00edvel corrigido total \r\n```python\r\nimport pavdedutor as pav  # Importa a biblioteca pavdedutor\r\nimport pandas as pd  # Importa a biblioteca pandas\r\n\r\n# Cria\u00e7\u00e3o de um dicion\u00e1rio com dados gen\u00e9ricos\r\ndic_patologias = {\r\n    'Patologias': [1, 2, 3],  # C\u00f3digos das patologias\r\n    'Severidades': ['a','b','m'],  # Severidades correspondentes\r\n    'Densidades': [10, 20, 30],  # Densidades para cada patologia\r\n    'Tipo de pavimento': ['r\u00edgido']*3,  # Tipo de pavimento (todos r\u00edgidos)\r\n    'Valores deduziveis': [54, 17, 39]  # Valores deduz\u00edveis previamente calculados\r\n}\r\n\r\ndf = pd.DataFrame(dic_patologias)  # Converte o dicion\u00e1rio em DataFrame\r\n\r\n# C\u00e1lculo de valor deduz\u00edvel total com corre\u00e7\u00e3o por diversidade de patologias\r\nexemplo = pav.deduzivel_total(\r\n    df, # DataFrame com os dados gen\u00e9ricos\r\n    'Patologias',  # Nome da coluna com os c\u00f3digos das patologias\r\n    'Valores deduziveis',  # Nome da coluna com os valores deduz\u00edveis\r\n    'r\u00edgido'  # Tipo de pavimento\r\n)\r\n\r\nprint(exemplo)  # Exibe o valor deduz\u00edvel total corrigido\r\n\r\n```\r\n\r\n#### C\u00e1lculo de valor deduz\u00edvel corrigido total em lote\r\n```python\r\nimport pavdedutor as pav  # Importa a biblioteca pavdedutor\r\nimport pandas as pd  # Importa a biblioteca pandas\r\n\r\n# Cria\u00e7\u00e3o do dicion\u00e1rio com dados simulados de patologias por amostra\r\ndic_patologias = {\r\n    'Patologias': [1, 2, 3, 4, 5, 6, 7, 8, 9],  # C\u00f3digos das patologias\r\n    'Severidades': ['a','b','m','a','b','m','a','b','m'],  # Severidades correspondentes\r\n    'Densidades': [10,20,30,10,20,30,10,20,30],  # Densidades para cada patologia\r\n    'Tipo de pavimento': ['r\u00edgido']*9,  # Tipo de pavimento (todos r\u00edgidos)\r\n    'N\u00famero da amostra': [1,1,1,2,2,2,3,3,3],  # Identificador da amostra\r\n    'Valores deduz\u00edveis': [54,17,39,16,2,10,18,7,7]  # Valores deduz\u00edveis previamente calculados\r\n}\r\n\r\ndf = pd.DataFrame(dic_patologias)  # Cria o DataFrame com os dados\r\n\r\nresultado = []  # Lista para armazenar os resultados corrigidos\r\n\r\n# Loop para calcular o valor deduz\u00edvel total corrigido por amostra\r\nfor amostra in df['N\u00famero da amostra'].unique():\r\n    \r\n    resultado.append(pav.deduzivel_corrigido_total(\r\n        df[df['N\u00famero da amostra'] == amostra],  # Filtra os dados da amostra atual\r\n        'Patologias',  # Nome da coluna de patologias\r\n        'Valores deduz\u00edveis',  # Nome da coluna com os valores deduz\u00edveis\r\n        'r\u00edgido'  # Tipo de pavimento\r\n    )\r\n)\r\n\r\nresultado  # Exibe os resultados finais corrigidos por amostra\r\n\r\n```\r\n#### Com os valores deduz\u00edveis corrigidos, o usu\u00e1rio j\u00e1 pode obter o **ICP/IPC**\r\n```python\r\nimport pandas as pd  # Importa a biblioteca pandas\r\n\r\namostras = [1, 2, 3]  # Lista com os n\u00fameros das amostras\r\nresultado = [66, 22, 20]  # Lista com os valores deduz\u00edveis corrigidos por amostra\r\n\r\ntabela_final = dict(zip(amostras, resultado))  # Cria um dicion\u00e1rio associando cada amostra ao seu resultado\r\n\r\ndf_final = pd.DataFrame(tabela_final.items(), columns=['Amostra', 'VDC'])  # Converte em DataFrame com colunas Amostra e VDC\r\ndf_final['ICP'] = 100 - df_final['VDC']  # Calcula o ICP como 100 - VDC\r\n\r\ndf_final  # Exibe a tabela final com VDC e ICP por amostra\r\n```\r\n\r\n#### Desenvolvimento do projeto\r\nA biblioteca ainda est\u00e1 em processo de desenvolvimento, com novas funcionalidades a serem implementadas, assim como sua documenta\u00e7\u00e3o. Fique a vontade para me contatar e dar sua opni\u00e3o sobre o projeto no meu [Linkedin](www.linkedin.com/in/wmoural), [GitHub](https://github.com/wmoural) ou [Email](pro.wmoura@gmail.com).\r\n\r\n#### Licen\u00e7a\r\nCopyright (c) 2025 Wellington Moura\r\n\r\nO uso \u00e9 fornecido sob a Licen\u00e7a do MIT.\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Otimizador de uso de \u00e1bacos de valores deduz\u00edveis para an\u00e1lise de patologias em pavimentos r\u00edgidos e flex\u00edveis",
    "version": "0.0.4",
    "project_urls": null,
    "split_keywords": [
        "dnit",
        "pavimento",
        "norma",
        "\u00e1baco",
        "r\u00edgido",
        "flex\u00edvel"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0af89fdf884c25426a4ea028eee3f8d3af863bd9679774a7c598d8c92f27253c",
                "md5": "41a8df2772a9833aec313d9a8ef2c4c8",
                "sha256": "2137f66d0172e0426f0d8d2fc11d90e41376ff360cba74f501da093b42a7056b"
            },
            "downloads": -1,
            "filename": "pavdedutor-0.0.4.tar.gz",
            "has_sig": false,
            "md5_digest": "41a8df2772a9833aec313d9a8ef2c4c8",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 18369,
            "upload_time": "2025-08-05T02:16:02",
            "upload_time_iso_8601": "2025-08-05T02:16:02.416901Z",
            "url": "https://files.pythonhosted.org/packages/0a/f8/9fdf884c25426a4ea028eee3f8d3af863bd9679774a7c598d8c92f27253c/pavdedutor-0.0.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-05 02:16:02",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "pavdedutor"
}
        
Elapsed time: 1.84718s