{"schema":"https://ver.cy/schemas/card/1.0.0","id":"vr.tr.netpbm-formats","code":"thing-q17154458","url":"https://ver.cy/models/thing/q17154458/","name":"Netpbm formats","alternateNames":["Portable Anymap"],"kind":"thing","status":"published","version":"0.1.0-research.1","language":"en","classifiers":{"family":"Thing Registry","category":"Information and virtual systems","entryKind":"thing","plane":"INF","domain":["INF.KNW"],"industry":[],"navPath":"","tags":[],"facets":{}},"whatItIs":"Netpbm formats are a family of simple raster image file formats, centred on Portable Bitmap (PBM), Portable Graymap (PGM), and Portable Pixmap (PPM), with Portable Arbitrary Map (PAM) extending the family to more general pixel tuples.","purpose":"Enable an agent to recognize Netpbm formats, assess whether their encoded samples are valid and interpretable, and choose conversions that preserve the intended information.","scope":{"in":["PBM, PGM and PPM, including plain and raw representations","PNM as the collective designation for PBM, PGM and PPM","PAM headers, tuple structures and declared sample meanings","Header-to-raster consistency and image-sequence boundaries","Evidence for sample interpretation and conversion fidelity"],"out":["The Netpbm software package's installation, release management and command catalogue","The depicted subject, authorship and intellectual-property status of individual images","General image-processing algorithms such as segmentation and resampling","Specifications of neighbouring formats such as PNG, JPEG and TIFF","PFM and other related formats pending evidence that this registry entry includes them"],"boundaries":[]},"distinguishingFeatures":["P1/P4 identify plain/raw PBM, P2/P5 identify plain/raw PGM, and P3/P6 identify plain/raw PPM; identification must continue by checking the corresponding header and raster. [PBM specification](https://netpbm.sourceforge.net/doc/pbm.html), [PGM specification](https://netpbm.sourceforge.net/doc/pgm.html), [PPM specification](https://netpbm.sourceforge.net/doc/ppm.html).","PNM names the PBM/PGM/PPM group rather than an additional wire format. [PAM specification](https://netpbm.sourceforge.net/doc/pam.html).","PAM requires its structured header after P7; P7 alone cannot distinguish it from xv thumbnails. [PAM specification](https://netpbm.sourceforge.net/doc/pam.html).","PBM assigns 1 to black, whereas PAM BLACKANDWHITE assigns 0 to black, so equivalent pictures can require sample inversion. [PBM specification](https://netpbm.sourceforge.net/doc/pbm.html), [PAM specification](https://netpbm.sourceforge.net/doc/pam.html).","A parseable PGM or PPM raster does not establish its transfer function: documented variants use linear or sRGB interpretations. [PGM specification](https://netpbm.sourceforge.net/doc/pgm.html), [PPM specification](https://netpbm.sourceforge.net/doc/ppm.html)."],"structure":{"bundles":[{"id":"family-recognition","name":"Family recognition","description":"Establish which Netpbm representation is present and what evidence supports that identification.","layers":[{"id":"member-identification","name":"Member identification","description":"Resolve the family member from its actual representation.","findings":[{"id":"signature-and-header-agreement","name":"Signature and header agreement","description":"Record whether the initial signature, following header and claimed format agree.","questions":[{"text":"Which family member and encoding do the bytes support?","id":"signature-and-header-agreement-q01","kind":"definition"},{"text":"Does the complete header support the initial identification, including any P7 ambiguity?","id":"signature-and-header-agreement-q02","kind":"boundary"}]}]},{"id":"specification-basis","name":"Specification basis","description":"Anchor recognition to an explicit format contract.","findings":[{"id":"format-contract","name":"Format contract","description":"Record the specification revision and any producer-specific departures used for assessment.","questions":[{"text":"Which specification document and revision govern the assessment?","id":"format-contract-q01","kind":"provenance"},{"text":"Does a claim of PNM support identify the actual members and encodings accepted?","id":"format-contract-q02","kind":"boundary"}]}]}]},{"id":"header-and-raster-integrity","name":"Header and raster integrity","description":"Determine whether the declared structure accounts for the encoded samples.","layers":[{"id":"raster-entry","name":"Raster entry","description":"Locate the exact transition from header syntax to sample data.","findings":[{"id":"header-termination","name":"Header termination","description":"Raw PGM and PPM use a single whitespace delimiter before the raster; a decoder must not consume subsequent sample bytes as header whitespace. [PGM specification](https://netpbm.sourceforge.net/doc/pgm.html), [PPM specification](https://netpbm.sourceforge.net/doc/ppm.html).","questions":[{"text":"At which byte offset does the raster begin under this member's rules?","id":"header-termination-q01","kind":"measurement"},{"text":"Could comment or whitespace handling consume bytes belonging to the raster?","id":"header-termination-q02","kind":"boundary"}]}]},{"id":"sample-layout","name":"Sample layout","description":"Check packing, sample width and declared extent.","findings":[{"id":"packing-and-extent","name":"Packing and extent","description":"Raw PBM packs bits with padding at each row end; raw PGM and PPM use one-byte or two-byte samples, with the most significant byte first. [PBM specification](https://netpbm.sourceforge.net/doc/pbm.html), [PGM specification](https://netpbm.sourceforge.net/doc/pgm.html), [PPM specification](https://netpbm.sourceforge.net/doc/ppm.html).","questions":[{"text":"What raster extent follows from dimensions, sample count and storage width?","id":"packing-and-extent-q01","kind":"measurement"},{"text":"Are row padding, sample byte order and values consistent with the selected representation?","id":"packing-and-extent-q02","kind":"measurement"},{"text":"Can the declared extent be processed within configured limits without arithmetic overflow?","id":"packing-and-extent-q03","kind":"action"}]}]}]},{"id":"sample-meaning","name":"Sample meaning","description":"Establish what decoded integers signify before interpreting or changing them.","layers":[{"id":"intensity-and-color","name":"Intensity and color","description":"Record the evidence governing brightness and color interpretation.","findings":[{"id":"transfer-function-evidence","name":"Transfer function evidence","description":"The PGM and PPM specifications distinguish their BT.709-based interpretation from commonly encountered variants. [PGM specification](https://netpbm.sourceforge.net/doc/pgm.html), [PPM specification](https://netpbm.sourceforge.net/doc/ppm.html).","questions":[{"text":"What producer evidence identifies the actual transfer function and, for RGB, color interpretation?","id":"transfer-function-evidence-q01","kind":"provenance"},{"text":"Which proposed operations require resolving the difference between linear, sRGB and specification-defined samples?","id":"transfer-function-evidence-q02","kind":"action"}]}]},{"id":"tuples-and-opacity","name":"Tuples and opacity","description":"Separate channel layout from its asserted meaning.","findings":[{"id":"tuple-interpretation","name":"Tuple interpretation","description":"PAM DEPTH controls tuple size; optional TUPLTYPE supplies a convention for meaning. PGM may instead represent an opacity mask. [PAM specification](https://netpbm.sourceforge.net/doc/pam.html), [PGM specification](https://netpbm.sourceforge.net/doc/pgm.html).","questions":[{"text":"What convention assigns meaning to each channel, and is it consistent with the declared depth?","id":"tuple-interpretation-q01","kind":"definition"},{"text":"Are samples image intensities, opacity values or non-image measurements?","id":"tuple-interpretation-q02","kind":"boundary"},{"text":"If channel meaning is unresolved, which transformations must remain undecided?","id":"tuple-interpretation-q03","kind":"action"}]}]}]},{"id":"sequence-and-reader-compatibility","name":"Sequence and reader compatibility","description":"Assess the entire stream and the actual recipient's capabilities.","layers":[{"id":"image-boundaries","name":"Image boundaries","description":"Account for individual images and remaining bytes.","findings":[{"id":"stream-coverage","name":"Stream coverage","description":"Raw PBM, PGM and PPM permit image sequences, while their plain variants specify one image per file. [PBM specification](https://netpbm.sourceforge.net/doc/pbm.html), [PGM specification](https://netpbm.sourceforge.net/doc/pgm.html), [PPM specification](https://netpbm.sourceforge.net/doc/ppm.html).","questions":[{"text":"How many complete images are present, and where does each end?","id":"stream-coverage-q01","kind":"measurement"},{"text":"Are remaining bytes another permitted image, tolerated trailing content or evidence of damage?","id":"stream-coverage-q02","kind":"boundary"}]}]},{"id":"recipient-capabilities","name":"Recipient capabilities","description":"Describe tested support independently of format conformance.","findings":[{"id":"reader-support-evidence","name":"Reader support evidence","description":"Record observed acceptance of the specific member, encoding, precision, tuple semantics and image count.","questions":[{"text":"Which application version has been tested with this exact combination of features?","id":"reader-support-evidence-q01","kind":"provenance"},{"text":"Does the recipient process every image and required channel?","id":"reader-support-evidence-q02","kind":"measurement"},{"text":"What adaptation is necessary for the intended recipient?","id":"reader-support-evidence-q03","kind":"action"}]}]}]},{"id":"conversion-fidelity","name":"Conversion fidelity","description":"Choose and verify transformations against explicit preservation requirements.","layers":[{"id":"representation-choice","name":"Representation choice","description":"Match the destination's expressive capacity to the intended use.","findings":[{"id":"destination-fit","name":"Destination fit","description":"Record whether the proposed destination can retain the required distinctions and supporting interpretation.","questions":[{"text":"Must the destination preserve bilevel distinctions, grayscale, RGB, opacity or custom channels?","id":"destination-fit-q01","kind":"definition"},{"text":"Would the proposed conversion require thresholding, quantization, channel removal or external metadata?","id":"destination-fit-q02","kind":"action"}]}]},{"id":"preservation-verification","name":"Preservation verification","description":"Evaluate the converted output against the chosen invariant.","findings":[{"id":"conversion-evidence","name":"Conversion evidence","description":"Record comparisons that establish whether the promised samples, meanings and image coverage survived.","questions":[{"text":"Is success defined by byte identity, decoded sample equality, numerical meaning or visual equivalence?","id":"conversion-evidence-q01","kind":"definition"},{"text":"What measured changes occurred in sample values, polarity, opacity and image count?","id":"conversion-evidence-q02","kind":"measurement"},{"text":"Which comparison results and conversion parameters support accepting the output?","id":"conversion-evidence-q03","kind":"provenance"}]}]}]},{"id":"evidence-and-external-alignment","name":"Evidence and external alignment","description":"What the world already says about this thing, gathered so the model can be checked against it.","layers":[{"id":"reported-evidence","name":"Reported evidence","description":"Findings from the breadth pass, kept separate from the structural claims.","findings":[{"id":"evidence-confidence-notes","name":"Check these first","description":"Recalled without web access and unsourced; every item is a lead to verify.","questions":[{"text":"Which of these check these first hold for the sense of Netpbm formats this model covers, and on what evidence?","id":"evidence-confidence-notes-q01","kind":"provenance"}]},{"id":"evidence-kinds","name":"Kinds and varieties","description":"Recalled without web access and unsourced; every item is a lead to verify.","questions":[{"text":"Which of these kinds and varieties hold for the sense of Netpbm formats this model covers, and on what evidence?","id":"evidence-kinds-q01","kind":"provenance"}]},{"id":"evidence-identifiers","name":"Identifiers and schemes","description":"Recalled without web access and unsourced; every item is a lead to verify.","questions":[{"text":"Which of these identifiers and schemes hold for the sense of Netpbm formats this model covers, and on what evidence?","id":"evidence-identifiers-q01","kind":"provenance"}]},{"id":"evidence-standards-and-regulation","name":"Standards and regulation","description":"Recalled without web access and unsourced; every item is a lead to verify.","questions":[{"text":"Which of these standards and regulation hold for the sense of Netpbm formats this model covers, and on what evidence?","id":"evidence-standards-and-regulation-q01","kind":"provenance"}]},{"id":"evidence-real-world-use","name":"Real-world use","description":"Recalled without web access and unsourced; every item is a lead to verify.","questions":[{"text":"Which of these real-world use hold for the sense of Netpbm formats this model covers, and on what evidence?","id":"evidence-real-world-use-q01","kind":"provenance"}]},{"id":"evidence-measurements","name":"Typical measurements","description":"Recalled without web access and unsourced; every item is a lead to verify.","questions":[{"text":"Which of these typical measurements hold for the sense of Netpbm formats this model covers, and on what evidence?","id":"evidence-measurements-q01","kind":"provenance"}]},{"id":"evidence-failure-modes-and-hazards","name":"Failure modes and hazards","description":"Recalled without web access and unsourced; every item is a lead to verify.","questions":[{"text":"Which of these failure modes and hazards hold for the sense of Netpbm formats this model covers, and on what evidence?","id":"evidence-failure-modes-and-hazards-q01","kind":"provenance"}]},{"id":"evidence-neighbours","name":"Neighbouring kinds and how to tell them apart","description":"Recalled without web access and unsourced; every item is a lead to verify.","questions":[{"text":"Which of these neighbouring kinds and how to tell them apart hold for the sense of Netpbm formats this model covers, and on what evidence?","id":"evidence-neighbours-q01","kind":"provenance"}]}]}]}]},"agentConduct":{"may":["Read, write and convert Netpbm images the user is entitled to process.","Explain the differences between the PBM, PGM, PPM and PAM variants."],"mustNot":["Parse untrusted image files without checking headers and sizes against the data.","Convert or share images that the user has no rights to.","Strip or ignore the declared maximum value and silently change image data.","Claim a file is valid when it breaks the format description."],"requiresHuman":["Running format converters on files from unknown sources inside production systems."]},"ethics":{"considerations":["Images can show people; converting a format does not remove privacy or copyright duties.","Simple formats are often used in teaching and research, where correctness matters."],"affectedParties":["People shown in images","Developers and researchers","Users of image tools"]},"owners":{"steward":"Nobody owns the format family; each image belongs to its rights holder.","roles":[],"masterSystems":[]},"relations":[{"target":"Q105599390","type":"parent","note":"registry parent class"},{"target":"Q26085352","type":"parent","note":"registry parent class"}],"interaction":{"identity":{"applicability":"required","items":["Vercy registry: vr.tr.netpbm-formats","Wikidata: Q17154458 (https://www.wikidata.org/wiki/Q17154458)"]},"properties":{"applicability":"not-applicable","items":["Family member and encoding: PBM plain/raw; PGM plain/raw; PPM plain/raw; PAM; unresolved","Raster dimensions: Width and height in pixels or tuple positions","Samples per position: Samples per pixel or tuple; declared DEPTH for PAM","Declared sample maximum: MAXVAL 1-65535 for PGM, PPM and PAM; absent for PBM","Sample interpretation: Bilevel; grayscale; RGB; opacity; custom tuple semantics; unknown","Interpretation evidence: Links to specification revision, producer documentation, tuple convention or external metadata","Assessment state: Unchecked; structurally valid; semantically unresolved; nonconforming; truncated; unsupported by target","Conversion preservation: Unassessed; samples preserved; interpretation preserved; quantified loss; unknown loss"]},"recognition":{"applicability":"optional","items":["Files begin with a magic number from P1 to P7 followed by width and height.","Common extensions are .pbm, .pgm, .ppm, .pnm and .pam."]},"capabilities":{"applicability":"required","items":["Identify the family member from bytes and reconcile it with filename claims.","Validate headers, sample ranges, raster extent and sequence boundaries.","Decode or encode samples under an explicitly recorded interpretation.","Choose a target representation based on required channels, precision and reader support.","Convert representations while checking polarity, opacity and sample scaling.","Report unresolved semantics or unsupported features before performing dependent transformations."]},"hazards":{"applicability":"required","items":["Malformed headers can cause buffer overflows in careless image parsers.","Files are uncompressed and can grow very large."]},"interfaces":{"applicability":"not-applicable","items":[]},"context":{"applicability":"required","items":["These raster formats are used to exchange bitmap, grayscale and colour images between image processing programs.","Their simple headers and sample layouts make them useful for teaching, debugging and intermediate processing files.","They are useful when straightforward decoding matters more than compact storage or extensive embedded metadata."]}},"sources":[{"title":"Wikidata item Q17154458: Netpbm formats","url":"https://www.wikidata.org/wiki/Q17154458","note":"identity and sense of the item"},{"title":"Wikipedia: Netpbm format","url":"https://en.wikipedia.org/wiki/Netpbm_format","note":"general description of the item"}],"openQuestions":["Does the registry intend the PBM/PGM/PPM/PAM family only, or also related formats such as PFM and historical extensions?","Which reader implementations and versions must the catalogue's interoperability claims cover?","What producer evidence is available to resolve transfer functions and custom channel semantics in representative files?","Which historical specification revisions and tolerated deviations must validation distinguish?","What preservation requirements should govern conversions when comments or external interpretation metadata cannot accompany the output?"],"resources":{"spec":"/models/things/publications/thing-q17154458/spec.json"},"provenance":{"origin":"thing registry research (pass 2)","builtFrom":["models/things/publications/thing-q17154458/spec.json"],"providers":["Codex"],"researchStatus":"unreviewed","generatedAt":"2026-09-12T11:34:15Z","builder":"tools/build_cards.py@1.0.0"},"completeness":{"sections":{"classifiers":"filled","whatItIs":"filled","purpose":"filled","distinguishingFeatures":"filled","structure":"filled","agentConduct":"filled","ethics":"filled","owners":"filled","relations":"filled","interaction.identity":"filled","interaction.properties":"not-applicable","interaction.recognition":"filled","interaction.capabilities":"filled","interaction.hazards":"filled","interaction.interfaces":"not-applicable","interaction.context":"filled","sources":"filled"},"notes":{"_gate":"Published through the thing publication gate 1.0 on 2026-10-07T10:10:26+00:00: completeness 1.00; sense: Wikidata description; 2 live sources; review by codex: pass","interaction.properties":"Plane INF: no invented physical properties.","interaction.interfaces":"No external formal standard or regulation applies specifically to this format family, whose encodings are defined by its project specifications."},"score":1.0}}