Release History  

Release 1.8.4 (2007-04-26)

This release introduces new features and fixes. CARA can now handle samples and labeling schemes. At the moment this works well for assigned spin systems.

  • Explicit support of isotopes. Up to now CARA only knew atom types. With this release you can set isotopes wherever there was an atom type (i.e. in procedures steps of spectrum types). The list is still work in progress. The repository now stores isotope labels instead of atom type labels.
  • New departments in the CARA Explorer: Labeling Schemes and Samples. Labeling Schemes are defined on repository level and will be deployed as part of future templates. Samples can optionally be defined on project level where necessary. There is an implicit default sample (id=0) for backward compatibility. The purpose of a sample is to associate ranges of the sequence with labeling schemes. Non-covered ranges are implicitly associated with the default labeling scheme (see below).
  • There is a new repository file format version. The new CARA version can open existing repositories, but if you want to go back to an earlier CARA version, some elements (sample, labeling-scheme) have to be manually removed. So make a backup before using this version! (I'm sure you do that anyway).
  • Spectra can now be explicitly assigned to a sample. There is a corresponding command in the context menu of the spectrum explorer.
  • Residue types can now exist in variations, corresponding to the defined labeling schemes. The residue type explorer allows you to add isotopes to the atoms of a residue (command "Add isotope" in the context menu). The default labeling scheme corresponds to the plain residue type. It is to be expected that future templates will contain the most common residue type variations and labeling schemes.
  • For all assigned spin systems, the scope will take into account the correct residue type variation depending on the displayed spectrum, sample, sample range and labeling scheme. For un-assigned spin systems the default labeling scheme is implicitly used. If anybody has a good idea about how this should work with un-assigned systems, please tell us.
  • The "propose spins" dialog has now an additional feature. Instead of letting CARA propose the spin selection, a Lua script from the repository can be used. For an example see here.


  • Every occurence of getAtomType() now has a new corresponding getIsotope() method. Both methods have an optional argument "schemaId".
  • New methods Atom:addIsotope( schemaId, isotopeName ) and Atom:removeIsotope( schemaId ).
  • New Lua object Sample with methods getId(), getName(), getRanges(), getEnd() and getSchema()
  • New method Spectrum:getSample()
  • New methods Spectrum:getThreshold(), setThreshold(), setPeakWidth(dim,width),
  • New method: PeakList:createModel() -> PeakModel
  • New method: PeakList:getModel( [id] ) -> PeakModel, invalid or missing id returns default model
  • New method: PeakList:getModels() -> Table[ id, PeakModel ], default model with ID=0
  • New method: Peak:setModel( [id], [Spectrum] )
  • The methods setVol, setAmp, setColor, setPos, setAssig, setLabel, setGuess of PeakList can now be directly called on Peak, e.g. Peak:setVol( [number], [Spectrum] )
  • New Lua object PeakModel with the following methods: getId(), getMaxWidth(dim),
    getAmplitude(p,p0,a0), getGain(dim), setGain(dim,gain), getBalance(dim), setBalance(dim,bal), setWidth(dim,width), getWidth(dim), setTol(dim,tol), getTol(dim), getDimCount(). The object also supports setAttr/getAttr.
  • New method: PeakList:createBackcalc( spectrum, showDiff, showExact ) -> Spectrum
  • New method: Spectrum:createRotation( table[dim,dim] ) -> Spectrum
  • New method: Spectrum:create1dProjection( dim, [ origin: table[dim,ppm] ] ) -> Spectrum
  • New method: Spectrum:create2dProjection( dim x, dim y, [ origin: table[dim,ppm] ] ) -> Spectrum

Release 1.8.3 (2007-02-21)

This is mainly a maintenance release, but also introduces some new functions.

  • Repaired some issues according to Tracker.
  • Improved peak position symbols in planes and strips.
  • Reengineered the window agent framework which caused some non-deterministic crashes when closing windows or terminating the application.
  • Found a work-around to statically compile CARA on Windows, so it is no longer dependent on the Microsoft CRT assembly (that was a uphill struggle).
  • New experimental feature "Show Peaks with unknown Labels" in Poly/Homo/Strip/SystemScope to allow intermediate assignment results of AutoLink/SideLink to be displayed.
  • Xml handler repaired. Latin1 characters are now properly loaded and saved.
  • Dynamic Lua features are on their way, but take additional time. The plugin concept should now work. If you call require "a.b.c" in Lua, the engine looks for a source or binary Lua file in <cara>/plugins/a/b/c.lua, where <cara> is the directory where you copied the CARA executable. See the Lua 5.1 reference manual or "Programming in Lua 5.1" for details on how to use the new module and require features. Like this you can write external scripts, which don't have to be part of a repository and can be deployed in binary format. In contrast to common Lua implementations, CARA doesn't support native Lua DLLs or shared libraries for security reasons.

Release 1.8.2 (2007-01-14)

This release introduces a first implementation of an additional integration method. The raw intensities within a rectangle around each peak corresponding to the base width of the peak model are summed up. You can select either the linear equation system based or the new integration algorithm by menu Integration/Method in MonoScope. Also the batch integration mode should work. Keep in mind that this is a first implementation to gain some experience. Other area shapes will follow.
The release also fixes some issues according to our tracker.

Release 1.8.1 (2006-12-11)

This is mainly an architecture release. Most of the changes have happened behind the scenes. CARA makes now use of Lua 5.1, which gives a bunch of new options, but unfortunately also breaks compatibility with Lua binary programs backwards from CARA < 1.7.x (i.e. programs like AutoLink have to be updated). The new Qt 4.2  solves some long standing issues with printing and PDF generation.

  • Move to Lua 5.1 and Qt 4.2 completed.
  • CARA Lua/Qt binding layer completely re-engineered and replaced by technology developed originally for 1.8.1 (beginning of 2006).
  • XML library replaced by Expat.
  • CW command to adjust intensity view colors (linke in XEASY).
  • Managed to compile Qt X11 on Macintos OSX. Again Mac binaries available.
  • Managed to compile everything on SGI Irix (many thanks to FLI Jena for their support!).
  • A couple of bug fixes according to Issue Tracker.
  • New CARA/Lua features:
    - Buffer:saveToFile( fileName, [ format ], [ other options ] )
      where format is "XEASY" (default), or one of the CARA formats "Comp8", "Uncomp8", "Uncomp16", "Uncomp32", "Comp8Gauss" or "Comp8Adapt".
    - Project:getCalibration( specId, dimension ), Project:setCalibration( specId, dimension, offset )

Release 1.7.1 (2006-10-24)

This is a bug fix release and probably the last release of the 1.7 series. Some issues have been resolved (see tracker).

Release 1.7.0 (2006-09-23)

This release concludes the migration of the CARA 1.5.4 code to Qt 4.1. The windows version works fine, even if there are still scaling problems with printing. The Linux version has problems with printing/pdf creation in combination with postscript fonts.
Because people complained the low reading quality of the Qt Linux aliased fonts, most X features (xrender etc.) have been disabled. Unfortunately pdf export without fontconfig on Linux doesn't work at all, and at the same time some Linux distributions (elder Redhat or Ubuntu) lack of the necessary shared library versions. We hope that newer versions of Qt 4.1.x solve these problems.
A lot of code had to be reworked for this migration, and as you can read in the roadmap, we had to do some extra tours. Unfortunately the NEASY architecture turned out to be completely reluctant to the new architecture. Parts of NEASY dependeded on the possibility to directly paint to the display (for historical reasons), which seems to be no longer possible with Qt4.1 (i.e. the Qt option to by-pass the display pipeline doesn't work and because of this parts of the NEASY screen aren't properly painted). For time reasons (a roadmap and long issue list concerning the core CARA features is still waiting to be taken care of) we decided to exclude NEASY from the current CARA release. If we will have time in future to completely re-engineer the NEASY architecture, this might change. Until then please use the old stable CARA editions, which will remain accessible.
The new CARA release has the following new features compared to 1.5.4:

  • New intensity color scheme (corresponding to the one used by XEASY). The intensity no longer adjusts with the zoom region.
  • New Export PDF function in Print Preview and Lua Editor.
  • Problem with intensity display offset fixed.
  • Problem with display offset in folding regions fixed.
  • The ESC button to terminate long running contour plots doesn't work anymore (incompatible with Qt4.1). As a work around the plot operation stops after a few seconds, writes a warning message to the status bar and automatically switches to auto-contour.
  • Much faster repository save operation. Especially noticable with large scripts.
  • The new Print Preview settings (*.set) file unfortunately is incompatible to the one of CARA 1.5.x due to changes in Qt binary stream protocol.
  • Import atom list now can consider CARA label syntax in atom names.

Release 1.5.4 (2006-06-04)

This is a maintenance release of CARA.

  • Issue with *.lua scripts on command line repaired.
  • Console mode (cara -c) now also works on Windows. Downside is a terminal window, which is also visible in GUI mode. Didn't find a way yet to avoid it; the linker has to be run the one or the other way, either with terminal window or without console mode.
  • New command line option -s or -silent: corresponds to normal GUI mode, but hides the CARA explorer. This should help integrating algorithms running in CARA (like AutoLink or SideLink) with other programs like TopSpin.

Release 1.5.3 (2005-11-29)

This is a maintenance release of CARA.

  • Sitar: Additional debugging. New option "oneoff" (values yes/no) to use i and i+1 from LHP instead of i-1 and i for gradient matching.
  • SitarViewer: New display options: sum slice, gradient offset.
  • Lua: new members Atom:setValue(mean,deviation) and Atom:setMagnitude(number)
  • Issues according to tracker.

Release 1.5.2 (2005-11-20)

This is a maintenance release of CARA.

  • Sitar: additional debugging. Optimized "Match Gradient" feature. New *.sitar file options.
  • SitarViewer: new display options.
  • PolyScope: New option View / Sync to Depth

Release 1.5.1 (2005-11-7)

This is a maintenance release of CARA. It contains some fixes and also some new Lua functions which allow to create projects by scripts.

  • CARA/Lua: the following new object methods have been implemented:

    Repository:createProject( name ), returns Project
    This method creates a new project with the given name. The name must be unique within the repository.

    Project:addResidue( typeID, [ chainID ], [ nr ] ), returns Residue
    This method adds a new Residue to the end of the sequence of the given Project. A valid short name of a ResidueType has to be provided. If chainID is left out, the new Residue is added to the same chain like its predecessor. If chainID is provided, it has either to be identical to the one of the predecessor or unique. If nr is left out, the nr of the predecessor is used incremented by one.

    Project:addSpectrum( Spectrum, SpecTypeID, [ dim1..dimN ] )
    This method adds a Spectrum to the given Project. The Spectrum usually has been opened before by spec.openSpectrum(). A valid name of an existing SpectrumType has to be provided. Optionally a dimension mapping can be explicitly provided as additional parameters. If not, CARA tries to guess the correct mapping (only if the atom types of all dimensions ar disjoint).
  • Sitar: additional debugging. New options "Match Gradient" and "Interpolate" available in SitarViewer and *.sitar file.
  • Explorer: new menu command "Open SitarViewer". This is handy to compare sitar spectra in PolyScope and SitarViewer at the same time using global cursor sync and the calibration from the project.

Release 1.5 (2005-10-18)

This is a stable release which unifies all changes since 1.4. The instance-based peak inference is now up and running (see CARA Roadmap). Additionally the following has been done since last release:

  • Repository loader: if a spectrum path was not found and it had been manually selected using the file selector box, the selected path is used as default for all other spectra with unknown path. I.e. if all spectra are in the same directory, you only have to explicitly select one and the others are automatically found.
  • StripScope/2D: due to confusion the automatic strip matching menu entries were removed from the spin list context menu. The "Setup" menu was renamed to "Auto Setup" to clarify the separation between the two similar but independant matching engines (one for automatic and one for manual matching).
  • SitarViewer: this is a new window dedicated to testing and fine tuning of decoding algorithms with primary focus to development. Some bugs in the decoder have also been removed. Other changes are to be expected.
  • Other fixes according to issue tracker (which got a bit confused recently).

Release 1.4.4 (2005-10-03)

This release continues instance-based peak inference in that changes in original spin systems are now traced back to the projected ones.

  • Inference engine: spin system changes (add/remove/rename spin, link/unlink systems) are now propagated to the +1 and -1 neighbouring spin system (if available). If I e.g. add a CA in system i, it will also be displayed in i+1, covering the projected spin CA-1 (if available). If I delete or rename the CA in system i, the CA-1 in i+1 reappears again. The same happens if I unlink systems i and i+1 (and of course also if I link them).
  • Repository file: the <cal> tag of spectrum definitions is now always present thus allowing to change folding type persistently even without calibration.
  • MonoScope: change in peak integration. PPM positions are now cut after third decimal place. This was necessary to avoid stability problems caused by very close peaks, which were not detected as degenerate (due to difference in fifth decimal place).
  • Other fixes according to issue tracker.

Release 1.4.3 (2005-09-18)

This release introduces the first beta of instance-based peak inference and thus is an important step towards release 1.5.

  • MonoScope: Menu View/DetectAmps with extended amplitude information, which allows comparison of original and backcalculation difference. Resolved an issue with backcalculated spectra (spectrum switching wasn't reflected in backcalculation).
  • Model: adaption of architecture towards Qt4 abstract models. The Lua binding will be updated during the next few releases, so that objects can be directly changed (i.e. without the container:setFeature(object,...) semantics).
  • Inference engine redisign: calculation of anchor and strip peaks now replaces the projected spins with non-zero offset with their originals in the left or right neighouring spin system if available. The existing feature to optionally ignore projected spins is dropped in favour of this new semantics.
    For non-noesy spectra the original spin is always looked up in the neighbouring spin system, even if there is now projected spin in the current one. It is therefore no longer necessary to explicitly create projected spins for projects imported from BMRB and elsewhere.
    For noesy spectra the original spin is only fetched for the projected spins of the current spin system.
  • All Scopes: renamed menu option "Show Neighour Spins" to "Resolve Projected Spins" to reflect the new semantics. CARA offers the new shortcut RP to quickly switch this option on or off. Restriction: resolved projected spins don't yet fully react on all changes in the spin system of the original spin, e.g. if the original spin is removed or created, the projected spins wont notice. As a work around switch the feature off and on using RP.
  • Replaced the garbage collector version 6.3 with the more recent 6.5 on windows due to some GC located problems.
  • Other fixes according to issue tracker.

Release 1.4.2 (2005-08-6)

This release introduces the concept of "Real Neighbour Pathway Simulation" (vs. the "Generic Neighbour Pathway Simulation" already implemented) and thus is an important step towards release 1.5.

  • The magnetic pathway simulation now considers the residue types of the real neighbours in the sequence, as soon as a spin system is assigned to a residue. Before assignment the behaviour is still the same as in 1.4. This version might use a bit more memory or be a bit slower than 1.4. Please tell me about your experiences. A debug message is written to standard output showing the total number of cached simulation runs and the residue types involved in the current run (residue type as well as left and right neighbour).
  • CARA/Lua: Spec.createExperiment() has changed parameters SpecType, ResidueType mid, ResidueType left, ResidueType right, NTerm and CTerm.
  • Starting from this release, spin labels of the form "?-x" or "?+x" are supported. The label "?" implies offset zero. As soon as the tag is empty, draft state is assumed (i.e. you cannot set a spin to something like "-1", it will always be interpreted as "?-1").
  • The pick label dialogs now offer "?" and "?-1" as standard options. Label menus were also extended by "?-1".
  • StripScope/2D: there is a new menu option Unlabeled Strip Matching in menu Setup and View / Select. If selected, CARA also takes into account unlabeled spins for strip matching (i.e. finding suited strips to build a fragment). With this option enabled, a strip with a "?" spin would now match a strip with a "?+1" or "?-1" spin (given the same atom type and a similar ppm value). You can set the option independently for both the batch and on-demand strip matcher. The option Strict Strip Matching is automatically switched off, because there is a very high probability of at least one violating spin pair when you allow unlabeled matches.
  • All scopes now automatically switch on Show Unlabeled if you label a spin with something like "?" or "?+/-x". This feature was already implemented for spin and system picking.
  • Other fixes according to issue tracker.

These notes also apply to release

Release 1.4.1 (2005-07-18)

This is a maintenance release fixing some issues. The Lua source level debugger is now working.

  • The debugger is finally working. It took several design attempts to implement breakpoints and single step debugging without multithreading. You can now run a script in debug mode, make the script stop at your breakpoints, inspect the stack and local variables, change local variables and single-step through the code. The following limitations apply to this release
    - Callbacks from GUI widgets don't run in the debugger yet, i.e. it is not yet possible to interrupt or step through callback code. This is a planned feature.
    - Stack and local variable inspection is still rudimentary using the terminal output window.
  • The following new Lua library functions have been added:
    dbg.trace()...prints the stack trace to the terminal window
    dbg.locals( [level=0] )...prints the local variables of the given level (default 0=current)
    dbg.loc( varId, [level=0] )...prints the value of the local variable given by its ID number
    dbg.get( varId, [level=0] )...returns the value of the local variable to the stack (useful for tables)
    dbg.put( varId, value, [level=0] )...sets the local variable to the given value
    Notice that these functions only work in debug break mode.
  • Inference of generic neighbour  repaired. With 1.4 sometimes the residue type itself was used as neighbour instead of the dedicated generic residue type.
  • Negative residue numbers are now supported again when importing a sequence file.
  • Explorer, Sequence View: New functions "Renumber From Here" and "Export Chain".
  • MonoScope, Peak List View: new functions "Add Column" and "Remove Columns". This allows to display attribute values of peaks and assignment guesses.
  • Pick System Dialog: new "remember" feature. When applied, the last selection is automatically proposed for the next pick.
  • Explorer, Spectrum List: new function "Set Folding".
  • CARA/Lua: Change for Conformer and Structure objects: renamed get/setCoordinate() and get/setLocation() to get/setCoord(). Also renamed getCoordinates() and getLocations() to getCoords(). The parameters are still the same as before.
  • Other fixes according to issue tracker.

Release 1.4 (2005-06-27)

This stable release expands the information model of CARA by structure information, multiple chains and molecule families. Structure information can for one part be directly assigned with spins; for the other part each project can manage an arbitrary number of structures and conformers, which are stored in the repository and accessible by scripting. This makes this release interesting for people experimenting with new structure determination, automatic assignment or chemical shift calculation algorithms. But it is also interesting for the nucleic acid or mixed amino and nucleic acid community.

  • Spins extended with structural information. Each spin can be associated with an optional location, given by x, y and z coordinates and also an r-value which can be interpreted as radius or position deviation. The location can be seen and edited in the spin view of the CARA explorer (column Location).
  • The object Spin has the following new method:
    getLocation() : x, y, z, r
  • The object Project has the following new methods:
    addStructure() : Structure
    getStructure( id ) : Structure or nil
    removeStructure( Structure )
    getStructures() : { id, Structure }
    setLocation( Spin, [ x, y, z, [ r ] ] )
    setOrigin( x, y, z )
    getOrigin() : x, y, z
    The origin attribute can also be set in the CARA explorer using the context menu Set Location Origin.
  • New CARA/Lua object Structure featuring the following methods:
    getName(): string
    setName( string )
    setLocation( id, x, y, z, [ r ] )
    getLocation( id ) : x, y, z, r
    getLocations() : { index, id }
    addConformer() : Conformer
    getConformer( id ) : Conformer or nil
    removeConformer( Conformer )
    getConformers() : { id, Conformer }
    getId() : number
    setOrigin( x, y, z )
    getOrigin() : x, y, z
  • New CARA/Lua object Conformer featuring the following methods:
    getId() : number
    getNr() : number
    setNr( number )
    getCoordinate( id ) : x, y, z
    setCoordinate( id, x, y, z )
    getCoordinates() : { index, id }
  • New method Object:getAttrs() : { name, value }
  • New method Dialog:setCentralWidget( widget ) to circumvent a Qt bug concerning dialog layout.
  • New function Remove Residue and Remove Chain in the context menu of the residue view of the CARA explorer. Residues/chains can only be removed, if there is no assignment to a spin system.
  • All scopes now automatically switch on Show Unlabled if a ? label is picked.
  • Pick System dialog in Poly/HomoScope adapts the list of selectable lables automatically to the system type selection. 
  • Other features according to issue tracker.

Release 1.3.3 (2005-06-20)

This release introduces multiple chains and multiple molecule families. It is therefore now possible to mix amino acid with nucleic acid chains. This is a fairly stable beta release ready for real world experience.

  • Residue model: new elements number and chain. The elements can be arbitrarily selected and are used to present the residue throughout the program as <chain>:<residue type letter> <residue number> (e.g. A:R41). You can also use this syntax in Goto System etc. commands.
  • Spin system type model: new elements terminal, generic neighbors, class and matching candidates. As usual a residue type can optionally point to a spin system type. This relation is now used to categorize residue types and determine terminals and the generic residue type. If a residue type points to a spin system type, these elements from the spin system type are used. If the residue type doesn't point to the spin system type or these elements are empty, the global terminal and generic residue type are used (for backward compatibility).
  • As usual spin systems match to residues, if their spin system types corresponds. Starting from this release you can associate a set of candidate residue types with the spin system type. If this is the case, the spin system type of the residue type is no longer relevant for the match. Instead the spin system matches to all residues whose type is in the candidate set of the spin system type (as it is already the case with candidates directly associated with spin systems).
  • Inferrred peaks are now immediately updated when there is a change to spin system or residue type definitions.
  • New Lua functions Residue:getNr() and Residue:getChain() corresponding to the new elements mentioned above.
  • Sequence view: new commands Set Number, Set Chain and Append Chain. The latter has to be used if you want to add another chain from a sequence file to an existing project.
  • Spin and atom labels now accept the ' character to be compatible with the nucleic acid nomenclature.
  • Spin systems whose spin system types have different class names are no longer proposed to be combined to fragments. Like this you can avoid that a amino acid strip is combined with a nucleic acid strip.
  • Other fixes according to issue tracker.

Release 1.3.2 (2005-05-29)

This is an intermediate release. It introduces some new features and fixes.

  • Menu texts updated to reflect all shortcut renames (hopefully).
  • Repository warning "Incompatible dimension atom types in spectrum" removed.
  • SynchroScope: the rotation of the 3D spectra is now compatible to the old SynchroScope.
  • PolyScope: Pick System now respects system types and assigned residues.
  • All Scopes: Pick Label and  Label Peak now only show assignable labels.
  • All Scopes: Set System Type now properly updates screen display.
  • Poly/Homo/SynchroScope: Pick System dialog can now optionally set system type.
  • Poly/Synchro/StripScope: Pick Label is now filtered based on AnchorPair.
  • Pick Label dialog has a new editable input field reflecting the current selection by default.
  • MonoScope, move peak in non-owner spectrum no longer causing problems.
  • For the other fixes and features please refer to the issue tracker.

Release 1.3.1 (2005-05-22)

This is an intermediate release. It introduces some new features and fixes. Please note that this release makes some renaming of shortcut commands due to collisions of spin and peak functions in some scopes.

  • Spin system lists no longer expand systems when double clicking. The cursor is still set to the position of the double clicked object if possible.
  • MonoScope: now has explicit un-alias commands (UA).
  • Synchro/Poly/HomoScope: the spectrum in the overview pane is now changed accordingly if another 2D spectrum is selected.
  • StripScopes: the manual selection dialog now accepts numbers with an optional letter prefix. If there is a prefix the number is interpreted as a residue number (instead of spin system number). The prefix character doesn't matter. This also works with Goto Peak and Goto System in the other scopes.
  • MonoScope can now export a table file from the peak list pane representing the row and column order.
  • The label formats can now be selected by menue or shortcut (LF) in scopes showing peaks. New laber formats are also available. Assignments can only be displayed as spin number for the moment for technical reasons.
  • CARA now executes scripts and commands from the command line even when started in GUI mode.
  • The following menus and shortcuts had to be renamed due to naming conflicts:
    "Move Peak" MP to "Move Spins" MS.
    "Delete Peaks" DP to "Delete Spins" DS.
    "Label Peak" LP to "Label Spins" LS.
    "Sync To List" SS in StripScopes to SH.
    "Propose Peak" PP to "Propose Spins" PR.
    "Goto System" GS to GY.
    "Goto Peak" GP to "Goto Spins" GS.
    "Move Peak Alias" MA to "Move System Alias" AY.
    "Active Overlay" AY to AO.
    The dot prefix of the peak commands could therefore be removed.
  • For the other fixes and features please refer to the issue tracker.

Release 1.3 (2005-04-29)

This is finally a new stable release. It incorporates all changes and fixes introduced during the last few months. The new memory management concept seems to have come of age. As announced the peaklist engine was completely re-engineered and extended to cope with the information delivered by structure calculation algorithms. As an additional bonus we have introduced a new Lua editor and a 2D StripScope. Some other features since last release:

  • Fixed "Show ghosts" in StripScope 2D. Like in its 3D counterpart you can now restrict the anchor strip set by adding unique dimension labels to the spectrum type.
  • ResidueTypes can now be imported from another repository (same concept as with Spectrum Types).
  • Peaks have been extended by lists of "assignment guesses". It combines a spin number per dimension with a probability value. Guesses can be added to or removed from a peak using MonoScope or Lua. An assignment guess is an object an as such features dynamic, persistent attributes (like the other object of CARA). You can specify the attributes visible to the user.
  • "Save PeakList" has been renamed in "Add to Repository" for clarity reasons.
  • CARA now issues a warning when you try to integrate a peaklist having degenerate peaks (more than one peak at the same ppm position). If you still want to integrate, the volume is divided by the number of degenerate twins. In batch mode this is the default behaviour.
  • Finally "Show List" command (SL) doesn't change the zoom region.
  • All scopes now feature two new command shortcuts in addition to "Fit Window" (WW). Using WX and WY you can restrict the fit to either X or Y direction. In StripScope WW and WY are the same. In SystemScope WW now scales the strip and the selected orthogonal pane. WX only affects the selected orthogonal.
  • Poly- and HomoScope have a new ".GP" short command to set the cursor to the position of the given peak number.
  • In SynchroScope you can now directly type GP, PP, MP, MA, DP and LP (without point prefix).
  • Removed some crashes, update problems and issues (see tracker).
  • New CARA/Lua features:
    - Project:addPeakList( PeakList ) and Project:removePeakList( PeakList )
    - New object AssigGuess featuring getAssig() and getProb().
    - PeakList:createGuess( Peak, probability [0.0..1.0], dim1, dim2, ... )
    - PeakList:removeGuess( AssigGuess )
    - PeakList:setGuess( Peak, AssigGuess, probability [0.0..1.0], dim1, dim2, ... )
    - PeakList:setHome( Spectrum )
    - PeakList:rotate( dim1, dim2, ... )
    - Peak:getGuesses() -> Table[ number, AssigGuess ]

Release 1.2.6 (2005-04-15)

This is the last release before 1.3. It continues the re-engineering of the peaklist engine, resolves some issues and introduces a new 2D StripScope.

  • Write calibration issue corrected.
  • Poly/Homo/SynchroScope: peak list presentation and handling optimized. Issues corrected. New context menu items for peak management. Auto center now also works for peaks. Name of peaklist is displayed on plane. The following short commands have been added to these scopes (notice the prefix dots):
    .PP      pick peak
    .MP     move peak
    .MA     move peak alias
    .DP      delete peaks
    .LP      label peak
    There is now also an explicit command to remove an alias: Un-alias Peak, UA.
  • PolyScope decides whether it should create a 2D or 3D peaklist depending on the state of "show 3D plane". In 3D case, you can either pick the peak on the plane or in the strips. The new peak is positioned according to the 3D cursor. There are now also ghost peaks, i.e. transparent planes along the depth peak width.
  • MonoScope: everything is now migrated to the new peaklist engine and presentation. Some issues corrected, e.g. batch integration, rotation and backcalculation.
  • New 2D StripScope: this is an experimental window which is essentially a "flattened 3D StripScope". All functions applicable to 2D should work (tell me otherwise). It is meant as a contribution to our ongoing discussion about homonuclear assignment concepts. Feel free to experiment and tell us your opinion.
  • StripScope: issue with ordered manual selections is resolved. CARA keeps the manually entered order, as long as each strip corresponds to another spin system.
  • Spectrum Types can now be imported from another CARA file. Use the import command from the context menu of the spectrum type pane of the CARA explorer.
  • Other resolved issues according to our tracker.

Release 1.2.5 (2005-03-20)

Again a major refactoring effort has been taking place. The whole peaklist management and presentation engine was re-engineered to be ready for release 1.3. Parts of 1.4 have been implemented, but the release will not do it for Q1. Here some other features:

  • The XEASY spectrum generator has been extended to allow submatrix generation. This was necessary since some other programs seem to have performance problems reading spectra without submatrices. Now you can select the preferred number of submatrices. If the selected number causes a remainder, the corresponding points are cut off. CARA proposes a reasonable default number of submatrices. The amplitude factor was moved to the same dialog as the submatrices.
  • MonoScope was partly re-engineered to work with the new peaklist management and presentation engine. In ideal case it should exactly work as before. But I expect that you will experience some bugs, which I will remove in the next release (where the re-engineering will be completed).
  • As another direct benefit of the new peaklist engine, PolySope, HomoScope and SynchroScope can open and present peaklists on top of the inferred spin peaks. The currently implemented features correspond to the original state of SynchroScope before refactoring. Two and three-dimensional peaklists are supported. Printing is also possible. Future versions will also allow peak integration directly from within these scopes.
  • CARA Explorer has a new option to switch the XEASY and BRUKER spectrum parser to another interpretation of the parameters. CARA assumes the maximum chemical shift to correspond to the first frequency point and the width to N-1 (where N is the number of frequency points in a dimension). XEASY and BRUKER happen to define the maximum chemical shift at delta/2 to the left of the first frequency point, causing a width of N. You can now switch between these two parameter interpretations. The selection is stored with the repository and also with templates.
  • Renamed attribute TemplatePath to TemplateName and added new attribute OrigTemplateDate. Also managed to display scrollbars in read-only memo fields.
  • Star file format now correctly consideres the _Saveframe_category, citation and _Residue_author_seq_code tokens. If available, the special sequence numbering given by the author is used. The parser is now able to correctly import all test projects.
  • Import sequence now also ready comments and writes these to the Comment attribute of the Residue. The crash is removed.
  • MoveAlias bug has been removed. You can now move a peak as many times along the same direction as you want. Spin aliasses have therefore to be removed using the context menu of the CARA Explorer.
  • Some other fixes.

Release 1.2.4 (2005-02-27)

This release again does features many architectural changes behind the scenes as a preparation of the next steps on our roadmap.

  • Old SynchroScope and with it all classes of the old peak inference engine removed. Quite a lot of code was touched and many dependencies had to be resoved. The new SynchroScope is a specialized sub-class of PolyScope. Peak list handling still missing.
  • Development of the Lua source level debugger continues. First menus were introduced, but still inactive.
  • Changed save/update concept for the SourceEditor. Up to now the Save command (CTRL+S) did not save the repository, but update the changed source in the repository (rendering it dirty). I changed the command name to Update (CTRL+S) to reflect this (since there were confusions). There is now a new Save command (CTRL+SHIFT+S) which saves the repository. There was also a bug which allowed the repository to be closed when an unsafed source editor was still open. You will now get a dialog box asking whether you really want to discard changes.
  • New command Indent and Unindent in Edit menue of SourceEditor, since SHIFT+TAB is swallowed by Linux.
  • New export features in SequenceView and ResidueTypeView of Explorer. In the context menu you can now Export Values to produce a *.rel file with either the statistical values on residue or residue type level.
  • New read-only repository dynamic attributes OrigTemplateDesc and TemplateDate.
  • EASY spectrum generation: introduced possibility to scale the amplitude. An additional dialog is presented, where a factor can be entered. The initial factor is automatically calculated using the maximum amplitudes of the spectrum and the maximum representable XEASY amplitude, which is around 7'000'000. Also removed a bug which caused the XEASY mantissa to be zero for the generated spectrum, if no EASY spectrum was displayed before the generation (missing initialization). This led to a decrease of amplitude resolution, as some of you have noticed.

Release 1.2.3 (2005-02-13)

The major new feature of this release is a powerful Lua programming editor as a replacement for the simple text box. This became necessary since people started to write larger scripts than I originally expected (i.e. 20'000 lines of code instead of expected ~300). The new CARA/Lua programming editor is based on Scintilla, a free and very powerful editor written by Neil Hodgson. Other news:

  • Crash removed from Spin List when clicking on a spin link
  • Script Editor: new editor featuring coloured syntax, auto indentation, brace matching, folding/outlining and printing.
  • I'm currently working on a source level debugger which will show up in a few releases. There will also be a code analyzer and cross-referencer in near future.
  • Additional file endings for Pipe (*.ft2,...) and Felix (*.felix, *.mat) spectra supported.
  • Additional consistency checks when opening spectra (e.g. to avoid Pipe spectra with spectral widht or spectrometer frequency equal to zero).
  • Improved ppm range interpretation of FELIX spectra. Looks better, but keep in mind that this is still a beta test. Please compare your FELIX spectra using CARA and your recent viewer.
  • New attribute factor in the level element of a spectrum. The intensities of the spectrum are multiplied by this factor when they are used for display and the like. The factor has a default value of 1. You can also use it to invert spectra (e.g. having a factor of -1, which is useful for the people working with NMR Pipe spectra).
  • New CARA/Lua API function ResidueType:setValue( Atom, mean, dev ) which allows statistics e.g. imported from BMRB to be modified using a script. This is just an intermediate fix due to an urgent need by Fred. The API will extensively grow within the next few months.

Release 1.2.2 (2005-02-06)

This release removed some memory management bugs, general issues and adds some new features. The new garbage collection implementation seems now to work stable enough to go productive.

  • First implementation approach of the FELIX spectrum format. CARA should be able to open most FELIX spectrum variations. The spectrum must have a *.felix postfix to be recognized by CARA. Since the format had to be inferred, it's most likely not free of bugs yet. Please use it and give me feedback, so I can improve the implementation over the next few releases.
  • A new SynchroScope2 should look and behave like the old SynchroScope. The old one will be removed in the next release (and with it quite a lot of outdated code since the introduction of the new inference engine back in 2004).
  • All scopes: new menu command View/Goto Point (shortcut GT). Cursor starting position is no longer zero, but the low ppm border of the spectrum. Command entry is now immediately possible without first clicking into a view.
  • MonoScope: new feature View/Sync Depth and shortcut MA for Move Alias Peak.

Release 1.2.1 (2005-01-29)

The features of this release, which finishes the 1.2.1 alpha series (see here), should correspond to release 1.2. In ideal case you shouldn't experience any differences. As announced in our roadmap, I have changed the whole memory management concept of CARA. This is a critical process which started around christmas 2004 and continued for some other weeks. Refactoring the memory management strategy of such a large source tree like CARA and NAF is a complex matter. Why should I do this? We want to give user scripts access to all NAF components in future to ease the implementation of new custom scopes. The integration of Lua with the visual hierarchy and notification chains implemented in C++ demands for a very flexible component concept. This is hard to realize using traditional C++ memory management strategies (like reference counting), because they restrict the referencing of objects too much (i.e. only hierarchical structures can be properly supported by reference counting). With the new strategy, CARA delegates memory management of the NAF framework to a garbage collector. This increases the average memory consumtion a bit, but allows for arbitrary graph structures having either Lua or C++ objects as nodes. Working with a garbage collector has an essential influence on the resulting software architecture. Because of this I had to rework parts of the architecture to efficiently coexist with the collector (avoiding memory leaks and premature deletes of objects). The current release seems to run quite stable now, but I'm aware that users are much more imaginative in finding bugs (i.e. hard crashes). Additional features include:

  • Repository: new XML attributes orig-template-by and template-name
  • Explorer: new menu item Edit/Properties.
  • SITAR: now supporting new coding function rendering better resolution.

Release 1.2 (2004-12-14)

This release consolidates and finalizes the changes of the last minor releases. The new external file formats like NmrPipe or BMRB have further been improved.

  • NmrPipe: dimension order is now obtained from the NmrPipe file. No other issues pending at the moment.
  • BMRB Files: I extended the parser so it can digest a whole BMRB file as it can usually be found in the database. It should be able to read 80% at least of all available files. Some have minor variations of the mainstream and may not be read properly. In that case an error message appears, which you can post to the issue tracker together with the zipped BMRB file. I will have a look at it. Even if the whole file is parsed, only sequence and atom list are interpreted (and also some other attributes).
  • All Scopes: PI repaired, no more crash
  • PolyScope: new command PN..Pick New System
  • StripScope: New menu item Calibrate in Strip menu
  • Repository: It is now possible to define the folding properties of a spectrum within the repository. Use the new attribute "fold" in "cal" element. "fold" accepts values N..None, A..Aliased (translated) und F..Folded (mirrored). It is not yet possible to change the folding within the program (will implement that later). Change it directly by editing the repository file. New file version 32, up- and downward compatible.
  • New BMRB Stats file parser. Labels are not translated, the user has to take care of the differences (e.g. H -> HN) by herself. The "import values" command in sequence view now accepts *.stats files. The menu is now also available in the residue type view, where it directly affects the residue types (not the sequence). In the latter case the residue type and atom symbols have to correspond to the repository in use, otherwise an error is reported.
  • Export EASY spectra: now saving to *.3D.param files. There was also an irregularity for spectra without folding (folding line in param was missing, which some programs like CANDID didn't like). Now fixed.

For older release notes please see here.


   contact   Last changed on April 26, 2007