> ## Documentation Index
> Fetch the complete documentation index at: https://docs.purna.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# File Types

> Which files you can upload, how each one opens in Purna, and what the assistant and background agents can read.

Purna opens supported files in your workspace, either in a [scientific component](https://docs.purna.ai/scientific-components/overview.md) or in a general viewer. This page lists every supported file type, which viewer opens it, and what Purna's AI can read from it.

Purna reads your files in two ways:

* **Chat assistant**: the model that answers you in a conversation. It reads small text files directly. For other files it gets only metadata, such as the name, type, and size.
* **Background agents**: agents that run [Code Execution](https://docs.purna.ai/code-execution/index.md) and [background jobs](https://docs.purna.ai/guides/jobs.md) in a private compute workspace. Files you attach or approve are copied into that workspace, so code can open them.

> [!NOTE]
>
> File previews are **read-only**. Opening a file never changes it, including code, text, and notebook files. When you ask Purna to modify data, it saves the result as a new file in **Files**.

## How files open

| Opens in | Type | What you can do |
| - | - | - |
| [Structure Viewer](https://docs.purna.ai/scientific-components/structure-viewer.md) | Scientific component | Rotate, pan, and zoom 3D molecular structures |
| [Sequence Alignment Component](https://docs.purna.ai/scientific-components/sequence-alignment.md) | Scientific component | Browse sequences and alignments, color residues, and highlight regions |
| [Spatial Omics Viewer](https://docs.purna.ai/scientific-components/spatial-omics-viewer.md) | Scientific component | Explore prepared single-cell data and OME imagery |
| [Slides Viewer](https://docs.purna.ai/scientific-components/slides-viewer.md) | Scientific component | Zoom whole-slide images and save regions |
| 3D mesh viewer | Scientific viewer | Rotate, zoom, and reset the view of surface meshes and point clouds |
| Spreadsheet viewer | Data viewer | Switch between sheets and scroll the cell values |
| Table viewer | Data viewer | Scroll large CSV and TSV tables row by row and column by column |
| Notebook viewer | Document viewer | Read Jupyter cells and saved outputs |
| Markdown, PDF, and Word viewers | Document viewer | Read rendered documents |
| JSON viewer | Data viewer | Expand and collapse structured data |
| Code viewer | Read-only code view | Read source code with syntax highlighting |
| Text viewer | Read-only text view | Read plain-text files with line numbers |
| Image viewer | Image view | View raster images |
| Download only | None | Upload and download the file, with no preview in Purna |

## Supported file types

**Upload** shows whether you can upload the file yourself. Some formats can be displayed only when Purna generates them.

### Structure and chemistry

| Format | Extensions | Upload | Opens in |
| - | - | - | - |
| Macromolecular structure | `.pdb` `.ent` `.cif` `.mmcif` `.mcif` `.gro` `.pdbqt` | Yes | Structure Viewer |
| BinaryCIF | `.bcif` | Yes | Structure Viewer |
| Small molecule | `.sdf` `.sd` `.mol` `.mol2` `.xyz` | Yes | Structure Viewer |
| Compressed structure | Any text structure above plus `.gz`, `.bgz`, or `.bgzf` | Yes | Structure Viewer |
| SMILES and InChI | `.smi` `.smiles` `.inchi` | Yes | Text viewer |
| Reactions and CML | `.rxn` `.rsmi` `.cml` | Yes | Text viewer |
| Surface mesh and point cloud | `.stl` `.obj` `.ply` `.glb` `.gltf` `.vtk` `.vtp` | Yes | 3D mesh viewer |

### Sequence and genome

| Format | Extensions | Upload | Opens in |
| - | - | - | - |
| FASTA and aligned FASTA | `.fa` `.fasta` `.faa` `.fna` `.ffn` `.frn` `.fas` `.mfa` `.afa` `.afasta` `.aln-fasta` | Yes | Sequence Alignment Component |
| Clustal, Stockholm, A3M | `.aln` `.clustal` `.clw` `.sto` `.stk` `.stockholm` `.a3m` | Yes | Sequence Alignment Component |
| Reads and records | `.fastq` `.fq` `.gb` `.gbk` `.genbank` `.embl` `.seq` `.sam` | Yes | Text viewer |
| Other alignments | `.phy` `.phylip` `.msf` `.pfam` | Yes | Text viewer |
| Phylogenetic trees | `.nwk` `.newick` `.tree` | Yes | Text viewer |
| Annotations and variants | `.bed` `.bedgraph` `.narrowpeak` `.broadpeak` `.gappedpeak` `.gff` `.gff3` `.gtf` `.vcf` `.wig` | Yes | Text viewer |
| Genome indexes | `.fai`, chromosome sizes (`.sizes`) | Yes | Text viewer |

### Omics and imaging

| Format | Extensions | Upload | Opens in |
| - | - | - | - |
| AnnData | `.h5ad`, AnnData-Zarr `.zip` | Yes | Spatial Omics Viewer, after preparation |
| Vitessce configuration | `.vitessce.json` | Yes | Spatial Omics Viewer |
| Whole-slide images | `.svs` `.ndpi` | Yes | Slides Viewer |
| OME imagery | `.ome.tif` `.ome.tiff`, OME-Zarr `.zip` | Yes | Slides Viewer or Spatial Omics Viewer |
| Images | `.png` `.jpg` `.jpeg` `.bmp` `.avif` | Yes | Image viewer |
| Generated images | `.gif` `.webp` `.svg` | No | Image viewer |
| Plain TIFF | `.tif` `.tiff` | Yes | Download only |
| Matrix Market, HDF5 | `.mtx` `.h5` | Yes | Download only |

### Tables, documents, and code

| Format | Extensions | Upload | Opens in |
| - | - | - | - |
| Delimited tables | `.csv` `.tsv` `.tab` | Yes | Table viewer |
| Spreadsheets | `.xlsx` `.xlsm` `.xls` `.ods` | Yes | Spreadsheet viewer |
| PDF | `.pdf` | Yes | PDF viewer |
| Word | `.docx` | Yes | Word viewer |
| Legacy Word | `.doc` | Yes | Download only |
| Markdown | `.md` `.markdown` `.mdx` | Yes | Markdown viewer |
| Jupyter notebook | `.ipynb` | Yes | Notebook viewer |
| JSON | `.json` `.geojson` `.jsonld` | Yes | JSON viewer |
| JSON Lines | `.jsonl` `.ndjson` | Yes | Text viewer |
| Source code | `.py` `.r` `.rmd` `.js` `.mjs` `.cjs` `.jsx` `.ts` `.tsx` `.sh` `.bash` `.zsh` `.sql` `.c` `.h` `.cc` `.cpp` `.hpp` `.java` `.kt` `.scala` `.swift` `.go` `.rs` `.rb` `.pl` `.jl` `.lua` `.m` `.css` `.scss` `.html` `.htm` `.xml` `.tex` | Yes | Code viewer |
| Workflows | `.nf` `.smk` `.cwl` | Yes | Code viewer |
| Configuration | `.yaml` `.yml` `.toml` `.ini` `.cfg` `.conf` `.env` `.dockerfile` `.makefile` | Yes | Code viewer |
| Logs and plain text | `.txt` `.log` `.out` `.err` `.stdout` `.stderr` | Yes | Text viewer |
| Spectra | `.mgf` `.msp` `.jdx` `.jcamp` | Yes | Text viewer |
| References | `.bib` `.ris` | Yes | Text viewer |
| Diagram source | `.mmd` `.mermaid` `.dot` `.gv` | Yes | Text viewer |
| Archives | `.zip` `.gz` | Yes | Download only, unless the archive is prepared omics or OME-Zarr data, or a compressed structure |

### Not accepted for upload

Purna does not accept these formats for upload yet:

* **Alignments and tracks**: BAM, CRAM, bigWig, and bigBed
* **Columnar and R data**: Parquet, Arrow, Feather, RDS, and Loom
* **Instrument and raw data**: mzML, vendor RAW, FCS, POD5, FAST5, and AB1
* **Microscopy and volumes**: ND2, CZI, LIF, MRC, CCP4 maps, NIfTI, and DICOM
* **Simulation**: XTC, TRR, and DCD trajectories
* **Clinical and physiology**: XPT, SAS, EDF, and NWB
* **Other**: PowerPoint, GraphML, OFF meshes, and XLSB workbooks

To work with one of these formats, convert it to a supported format first. For example, export BAM regions to SAM, or Parquet to CSV.

## What the AI can read

| File | Chat assistant | Background agents |
| - | - | - |
| Text, code, tables, JSON, Markdown, notebooks, sequences, and other text-based scientific formats | Reads the first 256 KB as UTF-8 text, for files attached to your latest message | Reads the full file |
| PNG, JPEG, and PDF up to 25 MB | Reads the file directly, if the selected model supports it | Reads the full file |
| PNG, JPEG, and PDF over 25 MB | Metadata only | Reads the full file |
| Whole-slide and OME images | Metadata, plus regions you share or request through image inspection | Reads the full file |
| Spreadsheets | Metadata only | Reads all sheets with Python (pandas) |
| H5AD and AnnData | Metadata only | Reads the file with anndata and scanpy |
| Structures and small molecules | Metadata only | Reads the file, for example with Biopython or gemmi |
| Meshes, HDF5, ZIP, GZ, and other binary files | Metadata only | Has the raw file, but no specialized library is installed for meshes |

When the chat assistant gets only metadata for a file, it hands analysis of the contents to a background agent. Files attached to the conversation are included when Purna plans the background job. Files attached to earlier messages are passed by reference; attach a file again if you want the chat assistant to reread its text.

> [!WARNING]
>
> The chat assistant reads only part of large text files, at most the first 256 KB. For whole-file statistics or summaries, ask Purna to use a background agent.

## Limitations

### Viewer limits

| Viewer | Limit |
| - | - |
| Text, code, and tables | Files over 2 MB load in chunks as you scroll, up to 128 MB per preview. To see the rest of a larger file, download it. |
| Files from a running job | Preview up to 10 MiB until you save the file to **Files**. |
| Sequence Alignment Component | Up to 10 MiB. Larger sequence files open in the text viewer instead. |
| Compressed structures | Up to 32 MiB compressed and 64 MiB uncompressed. |
| Spreadsheet viewer | Up to 25 MiB, 20,000 rows and 500 columns per sheet, and 100 sheets. |
| 3D mesh viewer | Up to 64 MiB. |
| Slides Viewer | Up to 500 MiB. |
| Uploads | Up to 5 GB per file. |

### What viewers do not do

* **Spreadsheets** show the values saved in the file. They don't recalculate formulas or show charts, formatting, or macros.
* **Notebooks** show the outputs saved in the file. They never run code, and interactive or HTML outputs are hidden.
* **Markdown** documents over 256 KB render section by section. Footnotes may not link across sections.
* **Large text files** in chunked mode show line numbers without syntax highlighting.
* **Tables** use fixed-width columns. Hover over a truncated cell to see its full value.
* **Phylogenetic trees, SMILES, and diagram files** show their source text. They aren't drawn as trees, molecules, or diagrams.
* **Genome annotation and variant files** show as text, not as genome-browser tracks.
* **glTF files** must embed all their data. Files that reference separate texture or buffer files don't open; export them as `.glb` instead.
* **Plain TIFF** files have no preview. OME-TIFF files open in a scientific viewer.

### What the AI cannot do

* The chat assistant can't see the graphics in a viewer, such as a rendered structure, slide, or mesh. Share a selection or describe what you need.
* Background agents get read-only copies of your files and save results as new files. They never change your originals.
* Background agents have no specialized library for meshes, so they can work only with the raw file contents.
* Each agent's work is your responsibility to review. Check key results before you rely on them.

## Related

* [Files](https://docs.purna.ai/guides/files.md) covers uploading, organizing, and downloading files.
* [Scientific Components](https://docs.purna.ai/scientific-components/overview.md) describes each scientific viewer in detail.
* [Code Execution](https://docs.purna.ai/code-execution/index.md) explains how background agents run analyses on your files.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.