Introduction

Rose User Guide: Introduction

Introduction

Introduction

Why am I here? What's Rose?

  • This is guide material for Rose.
  • Rose is a framework for managing and running meteorological suites.

What's The Point?

What's the point of the guide?

  • Interactive/guided learning - the basis for training courses or independent work
  • Worked Examples
  • So the Rose team can be invited to nice places to present it :)

Help!

Help! I can't use it!

What Does This Part Cover?

What does this part cover?

  • Rose background and philosophy
  • Rose concepts
  • Rose fundamentals, before the brief tour and metadata tutorial are attempted. Details will be covered later.

Background

Background - Aims of Rose

Rose aims to make the interface of scientific suites and applications:

  • as simple as possible
  • user-friendly - in particular for new users
  • easier to port and share with collaborators
  • transparent
  • easy to maintain

What is Rose?

Rose:

  • is a set of tools with open specifications.
  • provides a common solution for managing, configuring and running suites of scientific applications.
  • uses the cylc suite engine to run suites.

What is Rose? Continued 1

Rose:

  • uses simple, human readable and writable file formats.
  • has optional GUIs.
  • contains an optional system for managing suites, including version control ("Rosie").

What is Rose? Continued 2

Rose:

  • is mostly written in Python, using the PyGTK library for GUIs.
  • is freely available.
  • lives on github.

What is Rose? Continued 3

Rose:

  • exposes your application inputs for what they are
  • cannot do magic :)

What is a Rose Suite?

hotel suites?

A suite:

  • is a runnable collection of one or more scientific application configurations.
  • can simply be a way of running a single standalone scientific application.
  • can also be a way of running a very large number of inter-dependent scientific applications.

What is a Rose Suite? Format

A suite is a directory with some files and sub-directories.

The directory can be version controlled.

What is a Rose Suite? Contents

The suite directory contains:

  • a suite.rc file, for configuring cylc
  • a rose-suite.conf file, for configuring variables used in the suite.rc file and installing static resources
  • a rose-suite.info file, for describing the suite

What is a Rose Suite? Contents - Continued

  • an app/ directory, containing Rose applications
  • other, optional directories containing scripts and resources for the suite.

What is cylc?

  • cylc is a suite engine or metascheduler.
  • cylc runs scientific applications when their dependencies are satisfied.
  • cylc is configured via a suite.rc file that lives in the top directory of a Rose suite.
  • cylc was originally developed by Hilary Oliver at NIWA, and is now a collaboration including the Rose team.

What is cylc? Continued

What's so special about cylc? Couldn't I just use a cron job?

  • cylc has a concise, easy-to-use configuration.
  • cylc has a very clever algorithm for deciding when applications are ready to run.
  • cylc has nice utilities, including a GUI, for controlling and monitoring your suite.
  • Lots more features are described later.

What is cylc? Example

This is the cylc control/monitoring GUI.

cylc gui

Host Diagram

How cylc runs a suite.

cylc suite

Running a simple suite

(Demo) - if this isn't part of a course, skip to the next section

What is a Rose Application Configuration?

(Otherwise known as an app config)

What is a Rose App Config?

An app config:

  • can define how to run a scientific model.
  • describes how to run a command - what executable or script to call, the environment variables, the input files (namelists, etc)
  • is a specification, and not tied to a version of the model or tied to a GUI.
  • is simple to process and run.

What is a Rose App Config?

An app config:

  • is simple to edit
  • is simple to compare
  • is simple to review

What is a Rose App Config? Contents

A Rose app config is a directory.

The directory contains:

  • a rose-app.conf file, for configuring which executable to run, the environment, and configuring some of the input files like namelists.
  • an optional file/ directory, for storing other input files.

What is a Rose App Config? Contents (Complex)

It may also contain other sub-directories such as bin/, meta/ and opt/.

What is a Rose App Config? Example

Here's an example of a rose-app.conf file:

[command]
default=hello.exe

[env]
SUBJECT=world

[file:hello.nl]
source=namelist:hello

[namelist:hello]
l_exclamation_mark=.true.

What is a Rose App Config? Result

When Rose runs the app, it will create a file hello.nl that looks like this:

&hello
l_exclamation_mark=.true.,
/

and run the executable hello.exe with the environment variable SUBJECT set to world.

What is a Rose App Config? Metadata

App configs can have metadata.

Suites can also have metadata, but we'll cover this later.

What is a Rose App Config? Metadata Continued

Metadata is:

  • a way of providing information about app config inputs.
  • used to drive the rose edit GUI for editing app configs, but is not part of the GUI itself.
  • a simple specification defined in a similar format to the app config.

What is a Rose app config? metadata location

Metadata sometimes lives in the meta/ directory of an app config, but more often in a shared central location.

You'll be looking at metadata in the Metadata Tutorial later.

Changing a Rose App Config

  • You can edit the files and directories using the command line and a text editor.
  • You can also edit the app config using the Rose config editor (rose config-edit a.k.a. rose edit).

Changing a Rose App Config - Editor

The config editor is the Rose app config and suite editing GUI.

Its input panels are automatically generated from the content in your suite and app configs, and it uses metadata to improve presentation, add help, and do some checking.

Changing a Rose App Config - Screenshot

This example image shows getting hover-over help for an app config setting in the config editor rose edit.

rose-config-edit

How are Rose Suites Stored and Managed?

"Rosie" is the optional part of Rose that handles suite storage and discovery. It uses Subversion and a web-accessed database to version control and keep track of suites.

How are Suites Stored and Managed? ID

Each suite is an FCM project with a trunk and branches. Working on a suite is like working on source code.

Suites are identified using an abstract ID like niwa1-aa007 or kma3-ef432. Specific branches and revisions of suites would be identified using the syntax ID/branch@revision e.g. mo1-aa007/trunk@20.

How are Suites Stored and Managed? Info

To make finding (and remembering) suite IDs easier, each suite has a rose-suite.info file that describes the suite.

These usually look a bit like this:

access-list=bob helen mary
owner=fred
project=apollo
title=SV-1 experiment

These properties are stored in a database that is queried using Rosie utilities.

How are Suites Stored and Managed? GUI

This is the rosie go GUI for managing your Rose suites (e.g. finding, copying, checking out suites). Not an FCM GUI!

1) Menu 2) Address bar 3) Search 4) Search History 5) Advanced Search 6) Search Results 7) Statusbar

rosie go

Independent Learning

Next Steps: