Source: https://guthlabs.ai/docs/instruments/ng-to-pmol-copy-number-converter/mechanism/

instrument mechanism / verified-clean

# ng-to-pmol / Copy Number Converter mechanism

The inspectable method record for ng-to-pmol / Copy Number Converter, kept separate from implementation and qualification.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Model scope

The specification needs an explicit MW unit and a corrected pmol formula before release. Under the stated 650 g/mol/bp dsDNA assumption, use pmol=(mass_ng×1000)/MW_g_per_mol and copies=(mass_ng×10^-9/MW_g_per_mol)×6.02214076×10^23. Preserve the educational-estimate and not-medical-advice labeling.

- The pmol formula is incorrect if MW is in the standard g/mol units implied by the 650 g/mol/bp constant. The correct formula is pmol=(mass_ng×10^3)/MW_g_per_mol, equivalently (mass_ng×10^-9/MW_g_per_mol)×10^12.

- The copy-number formula is correct only when mass_g and MW_g_per_mol are used, but the declared input is mass(ng); the implementation must explicitly convert mass_g=mass_ng×10^-9.

- MW units are not specified. The pmol formula would differ by a factor of 1000 depending on whether MW is treated as g/mol or mg/mol, so the formula cannot be verified unconditionally.

- Length-based MW calculation is underspecified for RNA and single-stranded DNA. The supplied 650 g/mol/bp constant is identified as dsDNA-only and should not be applied to every molecule type.

## Units and conventions

- For these test vectors, MW is assumed to be in g/mol.

- Mass input is assumed to be in ng and is converted to grams using mass_g=mass_ng×10^-9.

- pmol conversion uses 1 mol=10^12 pmol.

- Copy number uses Avogadro's constant N_A=6.02214076×10^23 mol^-1.

- For dsDNA length-based estimates, MW=650 g/mol/bp×length_bp, as specified; this is an average estimate, not sequence-specific molecular weight.

## Inspectable vector

One of 4 source-bound review vectors:

````
{
  "inputs": {
    "mass_ng": 1,
    "length_bp": 1000,
    "MW_g_per_mol": 650000,
    "molecule_type": "dsDNA"
  },
  "expected_outputs": {
    "pmol": 0.00153846153846,
    "copies": 926483193.846154
  },
  "working": "MW=650×1000=650000 g/mol. pmol=(1 ng×1000)/650000=1000/650000=0.00153846153846 pmol. mass_g=1×10^-9=0.000000001 g. copies=(0.000000001/650000)×6.02214076×10^23=1.53846153846×10^-15×6.02214076×10^23=9.26483193846×10^8=926483193.846154 copies."
}
````

## Failure boundary

**BREAK_CLAIMED** · SELF_FLAGGED

The supplied pmol formula is dimensionally inconsistent with mass in ng and molecular weight in g/mol: for 650 ng of a 1000-bp dsDNA molecule it returns 1000 pmol, while the copy-number formula gives 6.022×10^11 copies, corresponding to 1 pmol. The instrument also needs rejection handling for zero length, unsupported molecule types, and negative mass.

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/ng-to-pmol-copy-number-converter/>)[03**Implementation**](<https://guthlabs.ai/docs/instruments/ng-to-pmol-copy-number-converter/implementation/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/ng-to-pmol-copy-number-converter/qualification/>)

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json`

- `evidence-tranche4/tranche4-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
