# 1. Overview of MDAnalysis

MDAnalysis is a Python package for the analysis of molecular dynamics simulations. It provides an object-oriented interface to molecular structures and trajectories, with direct access to atomic coordinates as `numpy.ndarray` objects for seamless integration with NumPy and SciPy.

This page gives a high-level overview of the most important public classes and modules. For usage examples and tutorials, refer to the User Guide.

## 1.1. Key Classes

The core of MDAnalysis revolves around the `Universe` class, which serves as the central data structure that loads and connects topology and coordinate data. From a `Universe`, users typically interact with `AtomGroup` objects — flexible collections of atoms that support structural selections and analysis operations. These selections are created using CHARMM-style selection syntax via the `select_atoms()` method, allowing users to query atoms based on names, residue numbers, segments, and more.

Individual atoms are represented by the `Atom` class, while residues and segments (or chains) are modeled using the `Residue` and `Segment` classes, respectively. Together, these classes form an intuitive, object-oriented hierarchy that makes it easy to navigate and analyze molecular systems.

## 1.2. Core modules

MDAnalysis is organized into several core modules that provide specialized functionality for handling and analyzing molecular dynamics data. The `MDAnalysis.core` module defines the essential data structures such as `Universe`, `AtomGroup`, and related objects. The `MDAnalysis.analysis` module contains a collection of analysis tools for tasks like RMSD calculation, diffusion analysis, contact maps, and more. The `MDAnalysis.selections` module implements the flexible selection language used to query atoms based on structural properties. Finally, `MDAnalysis.topology` manages topology parsing and representation, supporting a wide range of file formats for loading molecular structures.