Olex2

Olex[1][2] and Olex2[3][4] are versatile software for crystallographic research. Olex used to be a research project developed during PhD to implement topological (as connectivity) analysis of polymeric chemical structures and still is widely used around the world. Olex2 is an open source project with the C++ code portable to Windows, Mac and Linux. Although the projects share the common name they are not related at the source code level.

Olex

Olex program is designed for the analysis of extended structural networks. It only runs on Windows systems and source code is available only on request. It allows packing the structure, constructing the topological network and the evaluation of the networks Schläfli[5] and vertex[6] symbols[7] and to produce raster pictures of the model visible on screen. This kind of the topological network analysis is normally done to find relevance of considered structures and possibly to predict physical properties of the investigated material.

Olex2 is a relatively new, open source software[8][9] with a BSD licence which provides tools from the crystallographic structure solution to the final report preparation. It is still in the stage of active development. Olex2 platform independent GUI is provided by wxWidgets.[10] Olex2 has an extended HTML based interface, enhanced by Pillow[11] and OpenGL graphics. Olex2 provides numerous tools for the structure analysis and publication, including Fourier maps and voids calculation and visualisation, space group determination, calculation of esd's for almost any possible geometrical parameters, CIF translation to HTML and other documents, hydrogen atom placement and many others. Olex2 provides the final picture output as raster images or PostScript, Ortep[12]-like or POV-Ray output. The software is provided as pre-build binaries for Windows, Mac and Linux as well as in the source code form. Several build scripts (SCons, CMake and make) are provided to help with the Olex2 development - but only SCons is supported throughout and used for each release update and any problems have to be addressed to the supporters. Olex2 is now supported by OlexSys Ltd.[13]

As a GUI Olex2 is built from two components - the Olex2 core, written in C++ and exposing underlying model to the GUI, mostly based on the Python code. This segregation allows extending Olex2 with custom scripts and exploiting its functionality by the user at various levels - miller index operations, file manipulations and many others.

Olex2 provides a set of commercial extensions:

  • 3DPlus: provides a way to output STL, VRML and PLY files for 3D printing
  • ReportPlus: professionally looking structure determination reports including the possibility to combine structures

Official Site

http://www.olexsys.org

gollark: At least it has generics.
gollark: Oh, and it's not a special case as much as just annoying, but it's a compile error to not use a variable or import. Which I would find reasonable as a linter rule, but it makes quickly editing and testing bits of code more annoying.
gollark: As well as having special casing for stuff, it often is just pointlessly hostile to abstracting anything:- lol no generics- you literally cannot define a well-typed `min`/`max` function (like Lua has). Unless you do something weird like... implement an interface for that on all the builtin number types, and I don't know if it would let you do that.- no map/filter/reduce stuff- `if err != nil { return err }`- the recommended way to map over an array in parallel, if I remember right, is to run a goroutine for every element which does whatever task you want then adds the result to a shared "output" array, and use a WaitGroup thingy to wait for all the goroutines. This is a lot of boilerplate.
gollark: It also does have the whole "anything which implements the right functions implements an interface" thing, which seems very horrible to me as a random change somewhere could cause compile errors with no good explanation.
gollark: - `make`/`new` are basically magic- `range` is magic too - what it does depends on the number of return values you use, or something. Also, IIRC user-defined types can't implement it- Generics are available for all of, what, three builtin types? Maps, slices and channels, if I remember right.- `select` also only works with the built-in channels- Constants: they can only be something like four types, and what even is `iota` doing- The multiple return values can't be used as tuples or anything. You can, as far as I'm aware, only return two (or, well, more than one) things at once, or bind two returns to two variables, nothing else.- no operator overloading- it *kind of* has exceptions (panic/recover), presumably because they realized not having any would be very annoying, but they're not very usable- whether reading from a channel is blocking also depends how many return values you use because of course

References

  1. Dolomanov O.V.; Blake A.J; Champness N.R.; Schroder M. (2003). "OLEX: new software for visualization and analysis of extended crystal structures". J. Appl. Cryst. 36: 1283–1284. doi:10.1107/s0021889803015267.
  2. "Olex at CCP14".
  3. Dolomanov O.V.; Bourhis L.J.; Gildea R.J.; Howard J.A.K.; Puschmann H. (2009). "OLEX2: a complete structure solution, refinement and analysis program". J. Appl. Cryst. 42: 229–341.
  4. "Olex2 website".
  5. Wells, A. F. (1977). Three-Dimensional Nets and Polyhedra. New York: John Wiley.
  6. O'Keeffe M.; Hyde S.T. (1997). "Vertex symbols for zeolite nets". Zeolites. 19: 370–374. doi:10.1016/s0144-2449(97)00133-4.
  7. "Topological analysis in Olex" (PDF).
  8. "Olex2 at SourceForge".
  9. "Olex2 at Ohloh".
  10. "wxWidgets".
  11. "The friendly PIL fork".
  12. "Ortep III".
  13. "OlexSys Ltd".
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.