RNApolis 0.14.2
A Python library containing RNA-related bioinformatics functions and classes
Requires Python: <4.0,>=3.12

# RNApolis

A Python library and utilities containing RNA-related bioinformatics functions and classes.

## Utilities

### `annotator`

**Annotator** is a cutting-edge command-line tool engineered for the extraction and classification of secondary structures from biomolecular coordinates. This tool stands out in its ability to identify and categorize various base interactions, including base pairs, stacking, base-ribose, and base-phosphate interactions.

#### Comprehensive Classification:

- **Base Pair Analysis**: Utilizes the Leontis-Westhof and Saenger methodologies for precise base pair classification.
- **Stacking and Interactions**: Efficiently finds and classifies stacking, base-ribose, and base-phosphate interactions.

#### Flexible Output Formats:

- **Dot-Bracket Notation**: Produces results in dot-bracket format, optimized for pseudoknot-order assignment. With the `--extended` option, it also encodes non-canonical base pairs in a unique way.
- **BPSEQ Format**: Option to output results in BPSEQ format, detailing base interactions and classifications.
- **CSV Output**: Generates a CSV file containing detailed classifications of all base interactions.
- **JSON Export**: When enabled with `--json`, it outputs a JSON file detailing all identified base interactions and structural elements, including single strands, stems, and loops.
- **GraphViz Integration**: The `--dot` option enables the creation of a GraphViz dot file, illustrating the relationships between various structural elements.

#### Enhanced Features:

- **Gap Detection**: Capable of detecting and handling gaps in the PDB chain, breaking it into multiple strands for gaps larger than 2.4 Å.

#### Usage:

Execute `annotator.py` with your file path to initiate analysis. Customize your analysis and outputs using these options:

- `--bpseq [PATH]`: Specify path for BPSEQ file output.
- `--csv [PATH]`: Set path for CSV file output.
- `--json [PATH]`: Define path for JSON file output.
- `--extended`: Enable detailed secondary structure analysis.
- `--find-gaps`: Activate gap detection and handling.
- `--dot [PATH]`: Choose path for GraphViz DOT file output.

For help and more information, use `-h` or `--help`.

#### Examples

```
$ annotator --csv 8af0.csv --json 8af0.json --extended 8af0.cif.gz
    >strand_C
seq GCCCGCTUGUTACGCAGGC
cWW ((((((.((.((.((((((
cWH .........(.........
    >strand_D
seq GCCCGCTUGUTACGCAGGC
cWW )))))).)).)).))))))
cWH .........).........
```

<details>
<summary>Click here to see the output CSV</summary>

| nt1   | nt2   | type      | classification-1 | classification-2 |
| ----- | ----- | --------- | ---------------- | ---------------- |
| C.G26 | D.C44 | base pair | cWW              | XIX              |
| C.C27 | D.G43 | base pair | cWW              | XIX              |
| C.C28 | D.G42 | base pair | cWW              | XIX              |
| C.C29 | D.G41 | base pair | cWW              |                  |
| C.G30 | D.C40 | base pair | cWW              | XIX              |
| C.C31 | D.G39 | base pair | cWW              | XIX              |
| C.U33 | D.A37 | base pair | cWW              | XX               |
| C.G34 | D.C36 | base pair | cWW              | XXVIII           |
| C.U35 | D.U35 | base pair | cWH              |                  |
| C.C36 | D.G34 | base pair | cWW              | XXVIII           |
| C.A37 | D.U33 | base pair | cWW              | XX               |
| C.G39 | D.C31 | base pair | cWW              | XIX              |
| C.C40 | D.G30 | base pair | cWW              | XIX              |
| C.G41 | D.C29 | base pair | cWW              |                  |
| C.G42 | D.C28 | base pair | cWW              | XIX              |
| C.G43 | D.C27 | base pair | cWW              | XIX              |
| C.C44 | D.G26 | base pair | cWW              | XIX              |
| C.G26 | C.C27 | stacking  | upward           |                  |
| C.C27 | C.C28 | stacking  | upward           |                  |
| C.C28 | C.C29 | stacking  | upward           |                  |
| C.C28 | D.G43 | stacking  | inward           |                  |
| C.C29 | C.G30 | stacking  | upward           |                  |
| C.G30 | C.C31 | stacking  | upward           |                  |
| C.G30 | D.G41 | stacking  | inward           |                  |
| C.C31 | C.C32 | stacking  | upward           |                  |
| C.C32 | C.U33 | stacking  | upward           |                  |
| C.U33 | C.G34 | stacking  | upward           |                  |
| C.G34 | C.U35 | stacking  | upward           |                  |
| C.G34 | D.A37 | stacking  | inward           |                  |
| C.U35 | C.C36 | stacking  | upward           |                  |
| C.A37 | C.C38 | stacking  | upward           |                  |
| C.A37 | D.G34 | stacking  | inward           |                  |
| C.C38 | C.G39 | stacking  | upward           |                  |
| C.G39 | C.C40 | stacking  | upward           |                  |
| C.G41 | C.G42 | stacking  | upward           |                  |
| C.G41 | D.G30 | stacking  | inward           |                  |
| C.G42 | C.G43 | stacking  | upward           |                  |
| C.G42 | D.C29 | stacking  | inward           |                  |
| C.G43 | C.C44 | stacking  | upward           |                  |
| C.G43 | D.C28 | stacking  | inward           |                  |
| D.G26 | D.C27 | stacking  | upward           |                  |
| D.C27 | D.C28 | stacking  | upward           |                  |
| D.C28 | D.C29 | stacking  | upward           |                  |
| D.G30 | D.C31 | stacking  | upward           |                  |
| D.C31 | D.C32 | stacking  | upward           |                  |
| D.G34 | D.U35 | stacking  | inward           |                  |
| D.U35 | D.C36 | stacking  | inward           |                  |
| D.A37 | D.C38 | stacking  | upward           |                  |
| D.C38 | D.G39 | stacking  | upward           |                  |
| D.G39 | D.C40 | stacking  | upward           |                  |
| D.C40 | D.G41 | stacking  | upward           |                  |
| D.G41 | D.G42 | stacking  | upward           |                  |
| D.G42 | D.G43 | stacking  | upward           |                  |
| D.G43 | D.C44 | stacking  | upward           |                  |

</details>

<details>
<summary>Click here to see the output JSON</summary>

```json
{
  "baseInteractions": {
    "basePairs": [
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 1,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 26,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 19,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 44,
            "icode": null,
            "name": "C"
          }
        },
        "lw": "cWW",
        "saenger": "XIX"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 2,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 27,
            "icode": null,
            "name": "C"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 18,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 43,
            "icode": null,
            "name": "G"
          }
        },
        "lw": "cWW",
        "saenger": "XIX"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 3,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 28,
            "icode": null,
            "name": "C"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 17,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 42,
            "icode": null,
            "name": "G"
          }
        },
        "lw": "cWW",
        "saenger": "XIX"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 4,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 29,
            "icode": null,
            "name": "C"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 16,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 41,
            "icode": null,
            "name": "G"
          }
        },
        "lw": "cWW",
        "saenger": null
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 5,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 30,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 15,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 40,
            "icode": null,
            "name": "C"
          }
        },
        "lw": "cWW",
        "saenger": "XIX"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 6,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 31,
            "icode": null,
            "name": "C"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 14,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 39,
            "icode": null,
            "name": "G"
          }
        },
        "lw": "cWW",
        "saenger": "XIX"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 8,
            "name": "U"
          },
          "auth": {
            "chain": "C",
            "number": 33,
            "icode": null,
            "name": "U"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 12,
            "name": "A"
          },
          "auth": {
            "chain": "D",
            "number": 37,
            "icode": null,
            "name": "A"
          }
        },
        "lw": "cWW",
        "saenger": "XX"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 9,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 34,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 11,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 36,
            "icode": null,
            "name": "C"
          }
        },
        "lw": "cWW",
        "saenger": "XXVIII"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 10,
            "name": "U"
          },
          "auth": {
            "chain": "C",
            "number": 35,
            "icode": null,
            "name": "U"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 10,
            "name": "U"
          },
          "auth": {
            "chain": "D",
            "number": 35,
            "icode": null,
            "name": "U"
          }
        },
        "lw": "cWH",
        "saenger": null
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 11,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 36,
            "icode": null,
            "name": "C"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 9,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 34,
            "icode": null,
            "name": "G"
          }
        },
        "lw": "cWW",
        "saenger": "XXVIII"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 12,
            "name": "A"
          },
          "auth": {
            "chain": "C",
            "number": 37,
            "icode": null,
            "name": "A"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 8,
            "name": "U"
          },
          "auth": {
            "chain": "D",
            "number": 33,
            "icode": null,
            "name": "U"
          }
        },
        "lw": "cWW",
        "saenger": "XX"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 14,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 39,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 6,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 31,
            "icode": null,
            "name": "C"
          }
        },
        "lw": "cWW",
        "saenger": "XIX"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 15,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 40,
            "icode": null,
            "name": "C"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 5,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 30,
            "icode": null,
            "name": "G"
          }
        },
        "lw": "cWW",
        "saenger": "XIX"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 16,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 41,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 4,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 29,
            "icode": null,
            "name": "C"
          }
        },
        "lw": "cWW",
        "saenger": null
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 17,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 42,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 3,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 28,
            "icode": null,
            "name": "C"
          }
        },
        "lw": "cWW",
        "saenger": "XIX"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 18,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 43,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 2,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 27,
            "icode": null,
            "name": "C"
          }
        },
        "lw": "cWW",
        "saenger": "XIX"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 19,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 44,
            "icode": null,
            "name": "C"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 1,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 26,
            "icode": null,
            "name": "G"
          }
        },
        "lw": "cWW",
        "saenger": "XIX"
      }
    ],
    "stackings": [
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 1,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 26,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "A",
            "number": 2,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 27,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 2,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 27,
            "icode": null,
            "name": "C"
          }
        },
        "nt2": {
          "label": {
            "chain": "A",
            "number": 3,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 28,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 3,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 28,
            "icode": null,
            "name": "C"
          }
        },
        "nt2": {
          "label": {
            "chain": "A",
            "number": 4,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 29,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 3,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 28,
            "icode": null,
            "name": "C"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 18,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 43,
            "icode": null,
            "name": "G"
          }
        },
        "topology": "inward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 4,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 29,
            "icode": null,
            "name": "C"
          }
        },
        "nt2": {
          "label": {
            "chain": "A",
            "number": 5,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 30,
            "icode": null,
            "name": "G"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 5,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 30,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "A",
            "number": 6,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 31,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 5,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 30,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 16,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 41,
            "icode": null,
            "name": "G"
          }
        },
        "topology": "inward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 6,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 31,
            "icode": null,
            "name": "C"
          }
        },
        "nt2": {
          "label": {
            "chain": "A",
            "number": 7,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 32,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 7,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 32,
            "icode": null,
            "name": "C"
          }
        },
        "nt2": {
          "label": {
            "chain": "A",
            "number": 8,
            "name": "U"
          },
          "auth": {
            "chain": "C",
            "number": 33,
            "icode": null,
            "name": "U"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 8,
            "name": "U"
          },
          "auth": {
            "chain": "C",
            "number": 33,
            "icode": null,
            "name": "U"
          }
        },
        "nt2": {
          "label": {
            "chain": "A",
            "number": 9,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 34,
            "icode": null,
            "name": "G"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 9,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 34,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "A",
            "number": 10,
            "name": "U"
          },
          "auth": {
            "chain": "C",
            "number": 35,
            "icode": null,
            "name": "U"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 9,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 34,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 12,
            "name": "A"
          },
          "auth": {
            "chain": "D",
            "number": 37,
            "icode": null,
            "name": "A"
          }
        },
        "topology": "inward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 10,
            "name": "U"
          },
          "auth": {
            "chain": "C",
            "number": 35,
            "icode": null,
            "name": "U"
          }
        },
        "nt2": {
          "label": {
            "chain": "A",
            "number": 11,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 36,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 12,
            "name": "A"
          },
          "auth": {
            "chain": "C",
            "number": 37,
            "icode": null,
            "name": "A"
          }
        },
        "nt2": {
          "label": {
            "chain": "A",
            "number": 13,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 38,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 12,
            "name": "A"
          },
          "auth": {
            "chain": "C",
            "number": 37,
            "icode": null,
            "name": "A"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 9,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 34,
            "icode": null,
            "name": "G"
          }
        },
        "topology": "inward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 13,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 38,
            "icode": null,
            "name": "C"
          }
        },
        "nt2": {
          "label": {
            "chain": "A",
            "number": 14,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 39,
            "icode": null,
            "name": "G"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 14,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 39,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "A",
            "number": 15,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 40,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 16,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 41,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "A",
            "number": 17,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 42,
            "icode": null,
            "name": "G"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 16,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 41,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 5,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 30,
            "icode": null,
            "name": "G"
          }
        },
        "topology": "inward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 17,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 42,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "A",
            "number": 18,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 43,
            "icode": null,
            "name": "G"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 17,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 42,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 4,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 29,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "inward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 18,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 43,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "A",
            "number": 19,
            "name": "C"
          },
          "auth": {
            "chain": "C",
            "number": 44,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "A",
            "number": 18,
            "name": "G"
          },
          "auth": {
            "chain": "C",
            "number": 43,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 3,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 28,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "inward"
      },
      {
        "nt1": {
          "label": {
            "chain": "B",
            "number": 1,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 26,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 2,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 27,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "B",
            "number": 2,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 27,
            "icode": null,
            "name": "C"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 3,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 28,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "B",
            "number": 3,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 28,
            "icode": null,
            "name": "C"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 4,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 29,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "B",
            "number": 5,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 30,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 6,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 31,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "B",
            "number": 6,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 31,
            "icode": null,
            "name": "C"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 7,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 32,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "B",
            "number": 9,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 34,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 10,
            "name": "U"
          },
          "auth": {
            "chain": "D",
            "number": 35,
            "icode": null,
            "name": "U"
          }
        },
        "topology": "inward"
      },
      {
        "nt1": {
          "label": {
            "chain": "B",
            "number": 10,
            "name": "U"
          },
          "auth": {
            "chain": "D",
            "number": 35,
            "icode": null,
            "name": "U"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 11,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 36,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "inward"
      },
      {
        "nt1": {
          "label": {
            "chain": "B",
            "number": 12,
            "name": "A"
          },
          "auth": {
            "chain": "D",
            "number": 37,
            "icode": null,
            "name": "A"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 13,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 38,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "B",
            "number": 13,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 38,
            "icode": null,
            "name": "C"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 14,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 39,
            "icode": null,
            "name": "G"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "B",
            "number": 14,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 39,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 15,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 40,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "B",
            "number": 15,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 40,
            "icode": null,
            "name": "C"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 16,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 41,
            "icode": null,
            "name": "G"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "B",
            "number": 16,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 41,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 17,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 42,
            "icode": null,
            "name": "G"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "B",
            "number": 17,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 42,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 18,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 43,
            "icode": null,
            "name": "G"
          }
        },
        "topology": "upward"
      },
      {
        "nt1": {
          "label": {
            "chain": "B",
            "number": 18,
            "name": "G"
          },
          "auth": {
            "chain": "D",
            "number": 43,
            "icode": null,
            "name": "G"
          }
        },
        "nt2": {
          "label": {
            "chain": "B",
            "number": 19,
            "name": "C"
          },
          "auth": {
            "chain": "D",
            "number": 44,
            "icode": null,
            "name": "C"
          }
        },
        "topology": "upward"
      }
    ],
    "baseRiboseInteractions": [],
    "basePhosphateInteractions": [],
    "otherInteractions": []
  },
  "bpseq": "1 G 38\n2 C 37\n3 C 36\n4 C 0\n5 G 34\n6 C 33\n7 T 0\n8 U 31\n9 G 30\n10 U 0\n11 T 28\n12 A 27\n13 C 0\n14 G 25\n15 C 24\n16 A 0\n17 G 22\n18 G 21\n19 C 20\n20 G 19\n21 C 18\n22 C 17\n23 C 0\n24 G 15\n25 C 14\n26 T 0\n27 U 12\n28 G 11\n29 U 0\n30 T 9\n31 A 8\n32 C 0\n33 G 6\n34 C 5\n35 A 0\n36 G 3\n37 G 2\n38 C 1",
  "dotBracket": ">strand_C\nGCCCGCTUGUTACGCAGGC\n(((.((.((.((.((.(((\n>strand_D\nGCCCGCTUGUTACGCAGGC\n))).)).)).)).)).)))",
  "extendedDotBracket": "    >strand_C\nseq GCCCGCTUGUTACGCAGGC\ncWW ((((((.((.((.((((((\ncWH .........(.........\n    >strand_D\nseq GCCCGCTUGUTACGCAGGC\ncWW )))))).)).)).))))))\ncWH .........).........",
  "stems": [
    {
      "strand5p": {
        "first": 1,
        "last": 3,
        "sequence": "GCC",
        "structure": "((("
      },
      "strand3p": {
        "first": 36,
        "last": 38,
        "sequence": "GGC",
        "structure": ")))"
      },
      "description": "Stem 1 3 GCC ((( 36 38 GGC )))"
    },
    {
      "strand5p": {
        "first": 5,
        "last": 6,
        "sequence": "GC",
        "structure": "(("
      },
      "strand3p": {
        "first": 33,
        "last": 34,
        "