--- title: "Import File Format" slug: "monomer-import-file-format" status: "update" updated: 2026-11-03T16:08:35Z published: 2026-11-03T16:08:35Z canonical: "docs.discngine.com/monomer-import-file-format" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.discngine.com/llms.txt > Use this file to discover all available pages before exploring further. # Import File Format The file accepted by the **Import monomers** page of Biotoolkit Monomers. ## File | Property | Value | | --- | --- | | Formats | `.xlsx` (first sheet), `.csv`, `.txt` (CSV content), `.sdf` | | Template | `monomer_import_template.xlsx`, from the **Download the template** button of the **Import monomers** page and of **The import file** dialog | | Header row | Required, first row. Column names in upper case, in any order. Unknown columns are ignored. | | CSV delimiter | Comma | | Encoding | UTF-8 | | One file per upload | Yes. Files are listed in **Import history** for twelve months. | An SDF is converted to the tabular form before processing. The structure of a record is its `SMILES` data field when it has one, otherwise its molfile, which the monomer service turns into a SMILES in one call per file; stereocentres drawn without the chiral flag are read as the option below says. The record's other data fields map to the columns below, and R-groups are read from fields named `R1` to `R10` whose value is the cap group name. Aliases are read from an `<aliases>` data field. A record whose `Symbol` field is empty or `-` is skipped. ## Columns | Column | Required | Type and limit | Normalisation | Description | | --- | --- | --- | --- | --- | | `SYMBOL` | yes | text, 500 characters | trimmed | Symbol used in HELM sequences. Unique within your organisation and the polymer type, not held by a public monomer, and not already an alias. Case-sensitive. Together with `POLYMER_TYPE`, it is the key that decides between creating and updating. | | `NAME` | yes | text, 1000 characters | trimmed | Full name. Unique within your organisation and the polymer type. | | `SMILES` | yes | text | trimmed | Structure with `[*:n]` attachment points. CXSMILES accepted, including enhanced stereo groups such as `\\|&1:2\\|` or `\\|o1:2\\|`. See [Attachment Points and CAP Groups](/public/docs/attachment-points-and-cap-groups) and [Enhanced Stereochemistry](/public/docs/enhanced-stereochemistry). | | `POLYMER_TYPE` | yes | text, 100 characters | upper-cased | `PEPTIDE`, `RNA` or `CHEM`. | | `MONOMER_TYPE` | yes | text, 100 characters | trimmed, case as listed | `Backbone`, `Branch` or `Undefined`. Must be valid for the polymer type. A `CHEM` monomer is stored as `Undefined` whatever is submitted. | | `NATURAL_ANALOG` | for `PEPTIDE` and `RNA` | text, 10 characters | upper-cased | Natural analog code for the polymer type. A `CHEM` monomer is stored as `-` whatever is submitted. See [Monomer Types, Polymer Types and Natural Analogs](/public/docs/monomer-types-polymer-types-and-natural-analogs). | | `AUTHOR` | no | text, 500 characters | trimmed | Free text. | | `RGROUPS` | no | text | upper-cased | Semicolon-separated `label:cap` pairs, for example `R1:H;R2:OH`. Labels `R1` to `R25`, caps from the vocabulary. When absent, every attachment point found in the SMILES is capped with `H`. | | `ISOMER_LABEL` | no | text, 10 characters | trimmed, case kept | Tells apart two monomers that share a drawing with an unknown (*or*) stereo group, typically `A` and `B`. Accepted only when the `SMILES` carries an *or* group. See [Enhanced Stereochemistry](/public/docs/enhanced-stereochemistry). | | `RESOLVED_FROM` | no | text, 500 characters | trimmed | Symbol of the monomer this row resolves: one registered with an unknown or racemic centre, of which this row is an assigned form. The structure must be one of the stereoisomers that monomer stands for. See [Enhanced Stereochemistry](/public/docs/enhanced-stereochemistry). | | `ALIASES` | no | text, 500 characters per alias | each alias trimmed, case kept, repeats ignored | Other names the monomer answers to in HELM, separated by `/`, for example `Sar/MeGly`. Added to the monomer the row creates or updates, never removed: an alias the monomer already has is accepted. Visible to your organisation only. An alias cannot contain `/`. See [Monomer Aliases](/public/docs/monomer-aliases). | A missing `NAME` or `MONOMER_TYPE` is reported before the structure is processed, with a plain message naming the column. ## Import options | Option on the import page | Default | Effect | | --- | --- | --- | | **Register a known structure as an alias** | Off | Off: a row whose structure is already registered under another symbol, in your library or in the public data, fails. On: the row's symbol, and the aliases of its `ALIASES` cell, are added as aliases of the monomer that has the structure; no monomer is created, and the row counts as succeeded. | | **Read stereo without chiral flag as racemic** | On | SD files only, records read from their molfile. On: a molfile that draws stereocentres without the chiral flag and without `STEABS`, `STERAC` or `STEREL` collection is registered as a racemate, all those centres in one `&1` group (the MDL standard). Off: as drawn. A molfile with the flag or with collections, and every SMILES, are read the same either way. | **Import the file** shows a confirmation that recalls the options before the file is sent. ## Cap group vocabulary | Code | Name | SMILES template | | --- | --- | --- | | `H` | Hydrogen | `[*:{n}][H]` | | `OH` | Hydroxyl | `O[*:{n}]` | | `NH2` | Amino | `N[*:{n}]` | | `Azide` | Azide | `[*:{n}]N=[N+]=[N-]` | | `Ethynyl` | Ethynyl | `[*:{n}]C#C` | Codes are matched case-insensitively and stored in the spelling above. Your organisation may have additional codes; the error message on an invalid cap lists the current vocabulary. ## Row outcomes | Outcome | Condition | | --- | --- | | Created | No private monomer with this `SYMBOL` and `POLYMER_TYPE` in your organisation | | Updated | A private monomer with this `SYMBOL` and `POLYMER_TYPE` exists; its fields are replaced. A material change increments its version. | | Registered as an alias | Only with **Register a known structure as an alias**: the structure is already registered under another symbol, and the row's symbol was added to that monomer as an alias. Counts as succeeded. | | Failed | Any error below. Other rows are unaffected. | The import summary of the file adds, when it applies, the rows registered as aliases, each as `<row symbol> -> <monomer symbol>`, and the number of aliases added. ## Error file Produced when at least one row failed. It is the input file with the failed rows only and an extra `ERROR_MESSAGE` column. Downloaded from the **Error File** column of **File History**. | Message | Meaning | | --- | --- | | `Symbol is required` | `SYMBOL` empty | | `SMILES is required` | `SMILES` empty | | `The record has no molfile (no 'M END' line)` | SD file: a record with neither a `SMILES` field nor a molfile | | `The molfile could not be read: <reason>` | SD file: Indigo cannot read the record's molfile | | `Enhanced stereochemistry on bonds (the MDLV30/STEB<type> collection …) is not supported …` | SD file: the molfile carries a bond stereo collection (E/Z mixture, unknown geometry, atropisomer axis group), which the library cannot store | | `Axial chirality is not supported (the stereo on atom <n>, …) …` | The structure states axial stereo (biaryl axis, spiro ring system, allene) that the canonical key cannot keep | | `Polymer type is required` | `POLYMER_TYPE` empty | | `Unknown polymer type: <value>. Expected values: <list>` | `POLYMER_TYPE` not in the list | | `Unknown monomer type: <value>. Expected values: <list>` | `MONOMER_TYPE` not in the list, or not valid for the polymer type | | `Invalid cap group "<value>" for <label>. Valid values: <list>` | A cap outside the vocabulary | | `Invalid R-group format "<pair>". Expected format: R1:H or R2:OH` | A pair in `RGROUPS` is not `label:cap` | | `Monomer with this structure is already registered: <symbol>. If you expected a distinct structure, verify your input carries full stereochemistry …` | Same canonical structure as a live monomer of the polymer type, private or public. Delivered inside a JSON envelope with `outcome` and `message`. | | `Cannot modify protected public monomer '<symbol>' (public seed data)` | Symbol held by a public monomer. Same envelope. | | `An isomer label ('<label>') is only allowed on a structure that carries an OR enhanced-stereo group …` | `ISOMER_LABEL` on a `SMILES` without an *or* group, or over 10 characters. | | `Resolved from '<symbol>': no monomer of that symbol in your library or in the public data` | `RESOLVED_FROM` names no monomer you can see, or the row itself. | | `Resolved from '<symbol>': <reason>` | The structure is not one of the stereoisomers the named monomer stands for; the reason names the centre or the rule. Nothing was written for the row. | | `Monomer with this name is already registered: <name> (symbol: <symbol>). A name is used only once per polymer type.` | Another of your monomers of the polymer type has this `NAME`. | | `"<symbol>" is already an alias of monomer <symbol>.` | The row's `SYMBOL` is already an alias, yours or a public one. | | `Alias "<alias>..." is longer than 500 characters.` | An alias of the `ALIASES` cell is too long. Nothing was written for the row. | | `Monomer <symbol> was created, but alias "<alias>" was not added: <reason> Fix the cell and import the row again.` | The monomer was written (or updated, or registered as an alias), but one alias was refused, typically because another monomer already answers to that name. The aliases before it in the cell were added. Importing the row again is safe. | | `Biotoolkit service is unavailable. Please try again later.` | The chemistry service did not answer. Re-import the rows later. | | Any other text | The structure was rejected by the chemistry service. The message is the service's, with the technical prefix removed. | ## Upload-time errors Shown on the page instead of in the error file. | Message | Meaning | | --- | --- | | `Please add your import file.` | No file selected | | `An error has occurred, check your file format and if the problem persists contact an administrator.` | The file could not be read or registered. Check the extension and the header row. | ## Import history columns | Column | Content | | --- | --- | | File Name | Uploaded name. Click to download the file. | | Status | `Processing` while rows are handled, then a terminal status; `Error` as soon as one row failed | | Total Rows, Parsed Rows, Success Rows, Error Rows | Row counts | | Parsing Progress, Progress Percentage, Success Percentage, Error Percentage | Derived from the counts | | Started At, Completed At, Duration Seconds | Timing, dates as `YYYY-MM-DD` | | Summary | One-line outcome | | Created By, Created At | Who uploaded, when. This is the only place the uploader is recorded: the monomers themselves show `Unknown` as creator. | | Error File | **Download** button when an error file exists | ## Example ``` SYMBOL,NAME,SMILES,POLYMER_TYPE,MONOMER_TYPE,NATURAL_ANALOG,AUTHOR,RGROUPS,ALIASES Ahp,2-Aminoheptanoic acid,CCCCC[C@H](N[*:1])C([*:2])=O,PEPTIDE,Backbone,L,M. Curie,R1:H;R2:OH, MeNva,N-methyl-norvaline,CCC[C@H](N(C)[*:1])C([*:2])=O,PEPTIDE,Backbone,V,M. Curie,R1:H;R2:OH,NMeNva/N-Me-Nva PEG3,Triethylene glycol linker,[*:1]OCCOCCOCCO[*:2],CHEM,Undefined,-,M. Curie,R1:H;R2:H, ```