Xplor-NIH [1] is a generalized package for biomolecular structure determination from experimental NMR data combined with known geometric data. This is achieved by seeking the minimum of a target function comprising terms for the experimental NMR restraints, covalent geometry and non-bonded contacts using a variety of optimization procedures including molecular dynamics in Cartesian and torsion angle space, Monte Carlo methods and conventional gradient-based minimization. Xplor-NIH was originally derived from XPLOR [2] version 3.851 and contains all of the functionality therein. However, Xplor-NIH incorporates numerous completely new features designed to render its overall architecture highly flexible and to foster the rapid and easy development of new and improved functionality. This architecture is comprised of a framework written in C++ with user interfaces to the Python and Tclscripting languages. Features introduced since XPLOR 3.851 include:•A number of additional NMR-specific features related to refinement against NMR observables [3-7] not included in XPLOR 3.851, as well as a variety of knowledge-based database potentials of mean force [8-10].•A reduced variable dynamics module which permits completely generalized minimization and molecular dynamics in torsion angle and Cartesian coordinate space, as well as the effective treatment of rigid bodies [11].•The PASD [12] facility for automatic NOE assignment and structure determination directly from automatically peak-picked multidimensional spectra.•Facilities for refinement against an ensemble of structures, for use, for example, in studies of dynamics [13,14].•A direct interface to the VMD-XPLOR visualization package [15]. We note that despite the numerous additions and modifications present in Xplor-NIH, great care has been taken to ensure that old XPLOR scripts still run as expected. CNS [16] scripts can also be run with very minor modifications. Xplor-NIH is written in a combination of languages. The older code of the XPLOR interface is written in Fortran 77, and it is still possible to compile just this code subset, corresponding closely to XPLOR 3.851. One major change to the Fortran code was the removal of all structure-based limits, so that the maximum number of atom, bonds, etc. is now determined by the amount of the computer's RAM, and not by pre-compiled constants. Most recent computationally intensive code has been developed in the C++ language, with interfaces to the Python and Tcl scripting languages generated automatically with the SWIG package [17]. Much of the non-computationally intensive code is now being developed directly in the Python and Tcl languages, and thus is directly accessible for modification by the end-user without recompilation. The Python interface to Xplor-NIH in particular provides an extensible toolbox for developing further functionality. The full source code package is available by sending email to requests@nmr.cit.nih.gov. Binary packages for most popular Unix and Unix-like operating systems (such as Linux and Mac OS X), as well as documentation and support are available directly from http://nmr.cit.nih.gov/Xplor-NIH/. An agreement with the Accelrys corporation allows us to distribute Xplor-NIH in its entirety (in both source and executable formats) freely to academic users, as well as to distribute freely to industrial users those portions of Xplor-NIH not based on the legacy XPLOR Fortran framework. Commercial use of Xplor-NIH should be arranged with the Accelrys Corporation, but code developed outside the old XPLOR framework (the C++ interface including the IVM, etc.) is available to commercial and noncommercial entities. Xplor-NIH is a collaborative effort, with groups worldwide contributing advice and computer code. Additional contributions are encouraged, and are advantageous to the contributors as well as to end-users. New contributions should adhere to Xplor-NIH coding conventions, and be accompanied by appropriate testing scripts to assure reproducible future operation. This review provides an overview of recent Xplor-NIH development, and an introduction complete with example code, via the Python interface. This review is organized as follows. Section 2 presents a brief introduction to the Python interface. Section 3 introduces some of the most often used potential terms for NMR structure determination, along with Python example code. Section 4 discusses the internal variable module used to manipulate atomic coordinates. Section 5 introduces the parallel structure calculation facilities, while Section 6 discusses facilities for simultaneous refinement of ensembles of structures. Finally, Section 7 presents brief overviews of other Xplor-NIH facilities.