Communitygithub.com

incerteza-e-unidades

Gerencia unidades físicas e propaga incerteza de medição em cálculos usando pint e uncertainties. Ideal para conversão de unidades, orçamentos de incerteza GUM, propagação Monte Carlo e verificações de plausibilidade.

O que é incerteza-e-unidades?

Esta skill fornece um conjunto de ferramentas e fluxos de trabalho para lidar com unidades físicas e incerteza de medição em cálculos científicos e de engenharia. Ela se baseia nas bibliotecas Python pint e uncertainties, integradas com NumPy e SciPy, para garantir consistência dimensional e a propagação correta da incerteza. A skill inclui vários CLIs locais que automatizam tarefas comuns como conversão de unidades com contexto (ex.: comprimento de onda para energia de fóton), construção de orçamentos de incerteza GUM a partir de certificados de calibração, propagação de incerteza via método GUM e Monte Carlo com validação cruzada, e auditoria estática de código Python para detectar erros comuns como unidades descascadas, propagação quebrada de incerteza e correlações ignoradas. Além disso, oferece uma ferramenta de verificação de plausibilidade que avalia ordens de grandeza usando grupos adimensionais (Reynolds, Peclet, etc.) e bandas de magnitude observadas para evitar resultados fisicamente impossíveis, mesmo quando dimensionalmente consistentes. A skill é projetada para uso em análise de dados científicos, simulações de engenharia, metrologia e qualquer contexto onde a rastreabilidade de unidades e a quantificação confiável de incerteza sejam essenciais.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/K-Dense-AI/scientific-agent-skills/tree/main/skills/uncertainty-and-units

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Incerteza e unidades

Escopo

Use esta skill sempre que um cálculo envolver unidades físicas ou um número relatado precisar de incerteza. Concretamente:

  • converter entre unidades, incluindo conversões que precisam de um contexto físico (comprimento de onda para energia de fóton, massa para quantidade de substância, energia para temperatura);
  • propagar incerteza através de um modelo de medição, com ou sem entradas correlacionadas;
  • construir um orçamento de incerteza GUM a partir de certificados de calibração, especificações e dados de repetitividade;
  • escolher um fator de abrangência e decidir se k = 2 é defensável;
  • arredondar e escrever um resultado para que o leitor saiba o que o ± significa;
  • extrair incertezas de parâmetros de um ajuste de curva sem descartar correlações;
  • revisar código de análise existente para detectar defeitos silenciosos de unidades e incerteza;
  • verificar se uma resposta dimensionalmente consistente também é fisicamente possível — a ordem de grandeza, o grupo adimensional e o regime que ele implica.

Esta skill cobre a metrologia e as duas bibliotecas que a implementam. Não cobre inferência estatística, seleção de modelos ou desenho de estudos — veja statistical-analysis, statistical-power e experimental-design.

Versão atual e instalação

Verificado em 2026-07-26:

  • pint 0.25.3, lançado em 2026-03-19; requer Python 3.11+.
  • uncertainties 3.2.3, lançado em 2025-04-21; requer Python 3.8+.
  • NumPy 2.5.1 e SciPy 1.18.0; ambos requerem Python 3.12+.
  • scipy.constants no SciPy 1.18.0 fornece CODATA 2022. SciPy 1.11 e anteriores forneciam CODATA 2018, e vários valores recomendados diferem entre eles.
uv venv --python 3.13
source .venv/bin/activate
uv pip install "pint==0.25.3" "uncertainties==3.2.3" "numpy==2.5.1" "scipy==1.18.0"

pint-pandas e pint-xarray adicionam colunas e arrays com ciência de unidades e são instalações separadas.

Fluxo de trabalho inegociável

  1. Anexe unidades na entrada e remova-as apenas na saída. Converta nos limites das funções com ureg.wraps ou m_as("unidade"), nunca no meio do cálculo.
  2. Escreva o modelo de medição explicitamente antes de calcular qualquer coisa, incluindo correções cujo valor estimado é zero. Uma correção omitida do modelo deixa sua incerteza fora do orçamento.
  3. Dê a cada entrada quatro coisas: uma estimativa, uma incerteza padrão, a distribuição de onde veio a incerteza e seus graus de liberdade.
  4. Converta declarações Tipo B com o divisor correto. A incerteza expandida de um certificado divide pelo seu k declarado; limites retangulares dividem por sqrt(3).
  5. Identifique correlações antes de combinar. Entradas calibradas contra o mesmo padrão, medidas no mesmo instrumento ou obtidas do mesmo ajuste estão correlacionadas.
  6. Calcule coeficientes de sensibilidade e leia o orçamento de c_i * u(x_i) em vez das incertezas brutas.
  7. Verifique a linearização. Execute Monte Carlo junto com o framework GUM e aplique o teste de comparação da cláusula 8 do JCGM 101. Relate o resultado Monte Carlo quando ele falhar.
  8. Escolha k a partir dos graus de liberdade efetivos, não por hábito.
  9. Arredonde a incerteza primeiro, depois o valor para a mesma casa decimal.
  10. Declare o que o ± é — padrão ou expandido, com k, a probabilidade de abrangência e o método.
  11. Verifique a magnitude antes de relatar. Um resultado dimensionalmente consistente ainda pode ser impossível. Compare-o com uma escala conhecida ou um grupo adimensional e confirme que cada suposição em que você confiou ainda é válida naquele regime.

As falhas que esta skill existe para prevenir

Cada um dos exemplos a seguir é executado sem erro e produz um número plausível.

Uma unidade removida em uma escala desconhecida

length = (12.7 * ureg.mm).magnitude          # 12.7 -- de quê?
length = (12.7 * ureg.mm).m_as("m")          # 0.0127 metros, declarado

.magnitude retorna o que a quantidade estiver carregando. Nomeie a unidade no ponto de extração, sempre.

Aritmética de temperatura offset

Q(20, "degC") + Q(5, "degC")     # OffsetUnitCalculusError -- corretamente recusado
Q(20, "degC") + Q(5, "delta_degC")   # 25 degree_Celsius
Q(25, "degC") - Q(20, "degC")        # 5 delta_degree_Celsius

Celsius e Fahrenheit são escalas intervalares. Uma incerteza sobre uma temperatura é sempre uma diferença e pertence a uma unidade delta_: converter 20 ± 0.5 degC para Fahrenheit dá 68 degF ± 0.9 delta_degF, duas conversões diferentes em uma linha.

Unidades logarítmicas que somam multiplicando

Q(10, "dBm") + Q(10, "dBm")   # 0.0001 kilogram**2 * meter**4 / second**6

Isso é 10 mW × 10 mW, não 20 mW e nem 13 dBm. Nada é levantado. Converta para uma unidade linear antes de qualquer aritmética.

Uma correlação destruída por uma ida e volta

x = ufloat(1.0, 0.1)
x - x                                     # 0.0+/-0
x - ufloat(x.nominal_value, x.std_dev)    # 0.00+/-0.14

Recriar uma variável a partir de seu valor nominal e desvio padrão cria uma variável independente. O mesmo vale para qualquer serialização que passa por um par de floats. Use correlated_values(values, covariance_matrix) para recriar um conjunto correlacionado.

Uma matriz de covariância silenciosamente redimensionada

popt, pcov = curve_fit(f, x, y, sigma=sigma)                        # padrão
popt, pcov = curve_fit(f, x, y, sigma=sigma, absolute_sigma=True)

O comportamento padrão redimensiona pcov pelo qui-quadrado reduzido, então as incertezas dos parâmetros absorvem a qualidade do ajuste e correspondem ao que você obteria passando nenhum sigma. Em um ajuste de linha reta sintético, os dois dão [0.0364, 0.2154] e [0.0477, 0.2820] — uma diferença de 31%. Use absolute_sigma=True sempre que sigma contiver incertezas padrão reais.

Uma linearização que nunca foi verificada

Para y = x² com x = 1.0 ± 0.5, o framework GUM dá y = 1.0, u_c = 1.0 e um intervalo de 95% de [-0.96, 2.96] — principalmente negativo, para uma quantidade ao quadrado. Monte Carlo dá uma média de 1.25, u_c = 1.06 e um intervalo mais curto de 95% de [0, 3.32]. Nada em uma biblioteca de propagação linear lhe dirá que isso aconteceu.

CLIs locais incluídas

Todos os ajudantes funcionam offline, rejeitam URLs e links simbólicos, limitam suas entradas, escrevem a saída atomicamente com permissões privadas e se recusam a sobrescrever sem --force.

python skills/uncertainty-and-units/scripts/propagate_uncertainty.py --help
python skills/uncertainty-and-units/scripts/uncertainty_budget.py --help
python skills/uncertainty-and-units/scripts/format_result.py --help
python skills/uncertainty-and-units/scripts/convert_units.py --help
python skills/uncertainty-and-units/scripts/audit_units.py --help
python skills/uncertainty-and-units/scripts/check_plausibility.py --help

propagate_uncertainty.py

Executa ambos os métodos de propagação no mesmo modelo e aplica o teste de validação da cláusula 8 do JCGM 101.

python skills/uncertainty-and-units/scripts/propagate_uncertainty.py \
  --expression "m / (pi * (d / 2) ** 2 * h)" \
  --variable "m=250.0,0.05" \
  --variable "d=20.0,0.02,rectangular" \
  --variable "h=40.0,0.05,rectangular" \
  --measurand density --unit "g/cm3" --format markdown

Cada --variable é nome=valor,incerteza_padrão[,distribuição[,gdl]], onde a distribuição é normal, rectangular, triangular, arcsine ou exact e controla apenas a amostragem Monte Carlo. Correlações são inseridas como --correlation "a,b=0.9". Um arquivo --spec JSON contém o mesmo modelo para qualquer coisa de longa duração.

A expressão é analisada em uma árvore sintática abstrata e reduzida por uma caminhada explícita sobre + - * / ** e uma lista fixa de funções. Nunca é compilada ou executada.

O relatório fornece a estimativa, u_c, coeficientes de sensibilidade, o orçamento em porcentagem, graus de liberdade efetivos, k, U, ambos os intervalos de cobertura Monte Carlo e o veredito sobre se o resultado linearizado pode ser relatado.

uncertainty_budget.py

Combina componentes declarados da forma como certificados e folhas de dados os declaram.

python skills/uncertainty-and-units/scripts/uncertainty_budget.py --template > budget.json
python skills/uncertainty-and-units/scripts/uncertainty_budget.py --spec budget.json --format markdown

Cada componente nomeia uma distribution que fixa seu divisor — expanded divide por seu coverage_factor, rectangular por sqrt(3), triangular por sqrt(6), arcsine por sqrt(2), normal por 1 — com sensitivity, dof e relative: true opcionais. A ferramenta calcula u_c, os graus de liberdade efetivos de Welch-Satterthwaite, k a partir da distribuição t e U, e avisa quando um componente Tipo A não tem graus de liberdade, quando nu_eff é pequeno o suficiente para que k = 2 esteja errado, quando um componente domina e quando um componente Tipo B declarado normal é provavelmente uma incerteza expandida não dividida.

format_result.py

python skills/uncertainty-and-units/scripts/format_result.py \
  --value 12.34567 --uncertainty 0.02345 --unit mm \
  --coverage-factor 2.26 --coverage-probability 0.95

Retorna 12.346 ± 0.023 mm, 12.346(23) mm, as formas científica e LaTeX, e a frase que deve acompanhar o número. Avisa quando um dígito significativo é solicitado para uma incerteza começando em 1 ou 2 e quando a incerteza excede a estimativa.

convert_units.py

python skills/uncertainty-and-units/scripts/convert_units.py \
  --value 532 --unit nm --to eV --context spectroscopy --uncertainty 0.5

python skills/uncertainty-and-units/scripts/convert_units.py \
  --value 1.0 --unit g --to mol --context chemistry --context-parameter "mw=180.156 g/mol"

Carrega a incerteza através da derivada local da conversão, o que importa porque conversões contextuais são recíprocas em vez de proporcionais. Nomeia o contexto na mensagem de erro quando uma conversão precisa de um e sinaliza unidades offset e logarítmicas. --list-contexts mostra o que o registro define.

audit_units.py

Revisão estática de código de análise existente. Analisa, nunca importa ou executa.

python skills/uncertainty-and-units/scripts/audit_units.py \
  --input analysis.py --format markdown --fail-on medium
RegraGravidadeDetecta
UNIT001mediumum segundo UnitRegistry em um módulo — ValueError entre registros
UNIT002mediumunidades de temperatura offset sem nenhuma unidade delta_
UNIT003high.magnitude sem um .to(...) ou .m_as(...) precedente
UNIT004mediumunidades logarítmicas, cujo + multiplica
UNC001highcurve_fit sem absolute_sigma
UNC002mediumnp.std / np.var sem ddof
UNC003mediumfunções math ou numpy em um módulo que usa uncertainties
UNC004highum ufloat reconstruído a partir de .nominal_value e .std_dev
CONST001lowum literal dentro de 0.1% de uma constante CODATA

O status de saída é 1 quando um achado atende --fail-on (padrão high), o que o torna utilizável como uma verificação de pré-commit ou CI.

As regras são heurísticas, então um falso positivo é suprimido com um comentário diretivo — no final da linha para cobrir sua própria linha, ou sozinho em uma linha para cobrir a próxima:

value = quantity.magnitude  # audit-units: ignore UNIT003 -- já convertido a montante

# audit-units: ignore UNC003 -- o argumento aqui é um array simples de floats
scaled = np.log10(counts)

# audit-units: ignore-file CONST001 cobre um módulo inteiro, e nomear nenhuma regra suprime todas. As supressões são contadas no relatório em vez de ocultadas, então um arquivo que silencia tudo ainda informa isso.

check_plausibility.py

Consistência dimensional não é possibilidade física. Uma célula de 2 m de diâmetro e um número de Reynolds de 4e7 em um capilar ambos passam em todas as verificações de unidade. Esta ferramenta testa um conjunto de quantidades contra grupos adimensionais, escalas características e bandas de magnitude selecionadas, e verifica a dimensionalidade de cada fórmula antes de relatar um número.

python skills/uncertainty-and-units/scripts/check_plausibility.py \
  --quantity "density=1060 kg/m**3" --quantity "velocity=0.5 mm/s" \
  --quantity "length=8 um" --quantity "viscosity=3.5 mPa*s" \
  --group reynolds --format markdown
# Re = 0.001211 -- laminar (tubo circular, comprimento = diâmetro)

python skills/uncertainty-and-units/scripts/check_plausibility.py \
  --quantity "diameter=2 m" --band "eukaryotic_cell_diameter=diameter"
# implausível: 4.3 décadas fora da faixa de 5-100 um

--group avalia um dos 14 grupos adimensionais e nomeia o regime em que coloca o sistema; --scale calcula uma escala característica como tempo de difusão, comprimento de Debye ou velocidade de sedimentação de Stokes; --band compara uma quantidade fornecida com uma faixa observada. --list imprime todo o catálogo com as entradas que cada fórmula precisa.

Constantes físicas (k_B, N_A, R_gas, g_earth e o restante) estão disponíveis para cada fórmula sem serem fornecidas e são lidas de scipy.constants em tempo de execução em vez de escritas como literais, para que acompanhem a versão CODATA que o SciPy distribui.

A verificação de dimensionalidade é o ponto. Passar uma viscosidade cinemática onde a fórmula precisa de uma dinâmica — ambas chamadas "viscosidade", ambas tabeladas para água, diferindo por um fator de ρ — é recusado antes que qualquer número seja computado:

erro: viscosidade deve ter dimensionalidade [massa] / ([comprimento] * [tempo]),
       mas m²/s é [comprimento] ** 2 / [tempo]

O status de saída é 1 quando o veredito atinge --fail-on (padrão implausible; um valor dentro de uma década de uma banda é questionable). Os limiares são convenções com bordas suaves e assumem a geometria para a qual sua correlação foi ajustada — veja references/plausibility-scales.md para o comprimento característico a usar em cada caso.

Escolhendo um método de propagação

SituaçãoMétodo
Modelo linear ou quase linear, entradas aproximadamente normais, muitos gdlApenas framework GUM
Qualquer não linearidade em ±2u de uma entradaexecute ambos, aplique o teste da cláusula 8
Incerteza relativa acima de ~20% em qualquer entradaMonte Carlo obrigatório, com verificação da cláusula 8 como diagnóstico.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

adaptyv

How to use the Adaptyv Bio Foundry API and Python SDK for protein experiment design, submission, and results retrieval. Use this skill whenever the user mentions Adaptyv, Foundry API, protein binding assays, protein screening experiments, BLI/SPR assays, thermostability assays, or wants to submit protein sequences for experimental characterization. Also trigger when code imports `adaptyv`, `adaptyv_sdk`, or `FoundryClient`, or references `foundry-api-public.adaptyvbio.com`.

aeon

This skill should be used for time series machine learning tasks including classification, regression, clustering, forecasting, anomaly detection, segmentation, and similarity search. Use when working with temporal data, sequential patterns, or time-indexed observations requiring specialized algorithms beyond standard ML approaches. Particularly suited for univariate and multivariate time series analysis with scikit-learn compatible APIs.

alphagenome

Look up precomputed AlphaGenome Atlas effects for any GRCh38 single-nucleotide variant (AVI score with Phred and 18 SHAP feature attributions, plus raw and quantile scores for RNA-seq, DNase, ATAC, ChIP-TF, ChIP-histone, CAGE, PRO-cap, splicing, polyadenylation and contact-map tracks), score variants or scan windows on demand with the AlphaGenome model for human and mouse (variant scoring, in silico mutagenesis, REF-versus-ALT track prediction), and build Atlas website deep links. Use when the user mentions AlphaGenome, AlphaGenome Atlas, AVI or AlphaGenome Variant Impact, DeepMind variant effect prediction, or wants to prioritise or mechanistically interpret non-coding, regulatory, splicing, enhancer, promoter, or chromatin-accessibility effects of SNVs from a VCF, credible set, or region. Research use only; not a clinical tool.

analytical-method-validation

Plan, execute, and document validation, verification, and transfer of analytical procedures under the governing framework - ICH Q2(R2) and Q14, USP <1220>/<1225>/<1226>, ICH M10 bioanalytical, CLSI EP, or ISO/IEC 17025. Use for HPLC, LC-MS/MS, GC, CE, ICP-MS, dissolution, qNMR, qPCR, NIR, and ligand binding or cell-based assays whenever the question is whether a procedure is fit for its intended purpose. Triggers include

anndata

Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.

arbor

Autonomously improve a real artifact (code, training recipe, agent harness, data pipeline, prompt) against an objective and an evaluator, using Hypothesis Tree Refinement (HTR) from the Arbor paper. Use this whenever someone wants to iteratively optimize something over many experiments without overfitting — e.g.

arboreto

Infer gene regulatory networks (GRNs) from gene expression data using scalable algorithms (GRNBoost2, GENIE3). Use when analyzing transcriptomics data (bulk RNA-seq, single-cell RNA-seq) to identify transcription factor-target gene relationships and regulatory interactions. Supports distributed computation for large-scale datasets.

astropy

Core Python library for astronomy and astrophysics workflows that need Astropy APIs, including units/quantities, coordinates, FITS I/O, tables, time systems, WCS, and cosmology. Use when implementing or debugging astronomical data analysis code with Astropy.

autoskill

Observe the user

benchling-integration

Benchling Python SDK and REST API integration for registry entities, inventory, ELN entries, workflows, Benchling Apps, and Data Warehouse queries. Use when automating lab data with benchling-sdk or the v2 API.

bgpt-paper-search

Search scientific papers and retrieve structured experimental data extracted from full-text studies via the BGPT MCP server. Returns 25+ fields per paper including methods, results, sample sizes, quality scores, and conclusions. Use for literature reviews, evidence synthesis, and finding experimental details not available in abstracts alone.

bids

>

biopython

Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.

bioservices

Unified Python interface to 40+ bioinformatics services. Use when querying multiple databases (UniProt, KEGG, ChEMBL, Reactome) in a single workflow with consistent API. Best for cross-database analysis, ID mapping across services. For quick single-database lookups use gget; for sequence/file manipulation use biopython.

bulk-rnaseq

End-to-end bulk RNA-seq orchestrator — takes raw FASTQ reads through QC and trimming (FastQC, fastp/Trim Galore), alignment and quantification (STAR, Salmon, featureCounts), assembles a gene-level counts matrix, then hands off to differential expression (pydeseq2), pathway/GSEA enrichment (pathway-enrichment), and publication figures (scientific-visualization). Use whenever the user has bulk RNA-seq reads or quant output and wants a complete, reproducible differential-expression workflow — e.g.

cellxgene-census

Query the CZ CELLxGENE Census programmatically for versioned public single-cell and spatial transcriptomics data. Use when you need population-scale cell metadata, gene expression slices, Census summary counts, source H5AD URIs/downloads, embeddings, spatial Census data, or reference atlas comparisons across organisms, tissues, diseases, assays, and cell types. For analyzing your own local single-cell data use scanpy, anndata, or scvi-tools.

cirq

Google quantum computing framework. Use when targeting Google Quantum AI hardware, designing noise-aware circuits, or running quantum characterization experiments. Best for Google hardware, noise modeling, and low-level circuit design. For IBM hardware use qiskit; for quantum ML with autodiff use pennylane; for physics simulations use qutip.

citation-management

Comprehensive citation management for academic research. Search OpenAlex, PubMed, and Google Scholar for papers, extract accurate metadata, validate citations, and generate properly formatted BibTeX entries. This skill should be used when you need to find papers, verify citation information, convert DOIs to BibTeX, or ensure reference accuracy in scientific writing.

clinical-decision-support

Prepare and validate research-only clinical decision-support evaluation, evidence-profile, cohort, survival, biomarker/model, privacy, and governance artifacts. Use for aggregate or synthetic research documentation and traceability—not patient care or live clinical operation.

clinical-reports

Create safety-bounded draft structures and run local deterministic checks for clinical case, diagnostic, trial, safety, and aggregate research reports. Use only with synthetic, de-identified, or aggregate inputs and verified source-fact manifests; every output requires qualified review.

Habilidades Relacionadas