# iSCAM 1.6
## What is iSCAM ##
iSCAM is short for integrated statistical catch age model. The software was orginally developed by Steven Martell at the University of British Columbia, and the project was intiated in the fall of 2010. The code was originally written for use as a stock assessment model for BC herring stocks. Since this time the code has evolved substantially, and can now be used to conduct assessments for multiple sexs, one or more stocks, or sub-stocks, and can be spatially explicit.
### Workflow ###
[See github workflow](https://guides.github.com/introduction/flow/)
## Table of Contents ##
- [What is iSCAM](#what-is-iscam)
- [Obtaining iSCAM](#obtaining-iscam)
- [Prerequisites](#prerequisites)
- [Linux and Mac OS X](#linux-and-mac-os-x)
- [Windows](#windows)
- [List of developers](#list-of-developers)
## Obtaining iSCAM##
Obtaining the latest version of iSCAM should be done using the [gitHub](https://github.com/smartell/iSCAM) repository
### Prerequisites ###
* C++ compiler (preferably `clang++` that supports C++11 compliance standards)
* AD Model Builder (version 11.1 or later)
* R (version 2.15 or later)
* PBSmodelling package (and dependencies)
* Hmisc package (and dependencies)
* Shiny package (and dependencies)
### Linux and Mac OS X ###
Open terminal and run the following
cd ~
git clone https://github.com/smartell/iSCAM.git
cd iSCAM-project
make
### Windows ###
Obtain a copy of git for windows [here](http://git-scm.com/download/win), then in a command window
git clone https://github.com/smartell/iSCAM.git
You might find it useful to install [Cygwin](http://www.cygwin.com) or [MinGW](http://www.mingw.org) to give you Windows machine that Linux like feel and allow you machine to use much of the functionality builtin iSCAM. Compiling iSCAM and running examples is carried out using GNU Makefiles.
## List of developers ##
The following people have contributed source code or ideas to the iSCAM-project:
| **Individual** | **Organization** | _email_ |
|:-----------------|:----------------:| ---------------------------:|
| Steven Martell | IPHC | stevem@iphc.int |
| Vivian Haist | Consultant | haistv@shaw.ca |
| Jaclyn Cleary | DFO | Jaclyn.Cleary@dfo-mpo.gc.ca |
| Chris Grandin | DFO | Chris.Grandin@dfo-mpo.gc.ca |
| Robyn Forrest | DFO | Robyn.Forrest@dfo-mpo.gc.ca |
| James Ianelli | NOAA/NMFS | Jim.Ianelli@noaa.gov |
| Dave Fournier | Otter Research | davef@otter-rsch.com |
| Carl Walters | UBC | c.walters@fisheries.ubc.ca |
| Rob Kronlund | DFO | Allen.Kronlund@dfo-mpo.gc.ca|
| Sean Cox | SFU | spcox@sfu.ca |
| Nathan Taylor | DFO | Nathan.Taylor@dfo-mpo.gc.ca |
| Catarina Wor | UBC/IPHC | catarinawor@gmail.com |
| Richard Methot | NOAA/NMFS | Richard.Methot@noaa.gov |
| Matthew Supernaw | NOAA/NMFS | matthew.supernaw@noaa.gov |
| Chris Francis | NIWA | chris.francis@clear.net.nz |
| Mark Maunder | IATTC | mmaunder@iattc.org |
| Marie Etienne | France | mp.etienne@gmail.com |
<img src="https://raw.githubusercontent.com/smartell/iSCAM/IPHC/src/R/logo/iscamLogoSmall.png" alt="iSCAM" style="width: 200px;"/>
----
# Creating new projects
## Scripts
There are a number of shell scripts for creating new projects within the examples directory and the fba directory. The makeproject script sets up the following directory tree:
- DATA
- Example.ctl
- Example.dat
- Example.mpc
- Example.pfc
- Example.scn
- Makefile
- RUN.dat
- FIGS
- MISC
- PRESENTATION
- Example.tex
- iScamLogo.pdf
- R
- collectAll.R
- saveMSEdataframe.R
- TABLES
- WRITEUP
On \*nix operating systems, at the terminal simply type:
./makeproject <ProjectName>
By default the makeproject script copies a set of templates that are required for iSCAM to run. The \*.ctl, \*.dat, \*.pfc, \*.scn, \*.mpc are input files required by iscam. The RUN.dat file is the primary file that is opened by iSCAM to determine which files are used as the contord, data, projection, scenario and manamement procedure, respectively.
# Version control
* To check out a copy of the project code, open terminal and
go to the directory (folder) where you want to keep a clone
(copy) of the repository on your macbook pro. If you are
using Mac OSX 10.6 or later you will already have "git"
installed on your computer. At the command prompt type:
* git clone https://code.google.com/p/iscam-project/
* The above command will now download a copy (referred to as a
clone in git terminology) onto your computer in the current
directory. You only need to run the above command once. To
obtain updates of the repository, you can run the following:
* git fetch https://code.google.com/p/iscam-project/
* To gain write access to the repository contact martell.steve@gmail.com
THE FOLLOWING IS A LIST OF USEFUL GIT COMMANDS TO USE AT THE COMMAND LINE$:
git help <list git commands>
git clone url ILSMR/ <clone repository>
git add filename <add new file rel='nofollow' onclick='return false;'>
git commit -m"message" <commit with message>
git log <view commit log>
git status <view changes & staging>
git branch <list, create or delete branches>
Making an alias for a git command, eg:
git config --global alias.ci commit
git config --global alias.lol "log --oneline --graph"
### Version control system resources:
Before using git, I would highly recommend spending some time
learning how to use git. There are many online resources and
most of them can be found at: http://git-scm.com/documentation
A video tutorial: http://www.youtube.com/watch?v=ZDR433b0HJY
Another good [cheatsheet](http://cheat.errtheblog.com/s/git/)
## Compiling code using Makefiles:
There are several [GNU Makefiles](http://www.gnu.org/software/make/manual/make.html) throughout the directories in the iSCAM project that will greatly simplify recompiling the iscam code and running multiple models in parallel using the -j option in the Makefiles.
The first makefile is in the iSCAM-project root directory (shown below). At the command line in the iSCAM-project directory, if you type make, the makefile will create a _dist_ directory and subdirectories, compile optimized and safe versions of the iSCAM.tpl file, then copy these files into the _dist/release_ and _dist/debug_ directories.
## Makefile for building distribtion folder for iscam
## TODO add verify target to run example models.
.PHONY: dist clean
ifndef DISK
DISK=dist
endif
dist:
mkdir -p ${DISK}/debug
mkdir -p ${DISK}/R
mkdir -p ${DISK}/release
make --directory=src/admb-code --file=linux.mak
make --directory=src/admb-code --file=linux.mak opt
cp -r ./src/r-code/ ${DISK}/R/
clean:
make --directory=src/admb-code --file=linux.mak clean
rm -r dist
---
## Setting up a new project in fba:
- fba is a directory (short for "full blown assessments" ) that
contains project folders with a specific directory structure.
It is important to maintain this directory structure within
the project folders because the R and shell scripts use the
relative paths for maintaining inputs and outputs to automate
much of the running of iSCAM and its outputs.
- To set up a new project, use the makeproject shell script (linux or MacOSX)
when you are inside the fba directory only.
For example:
cd fba
./makeproject MyAssessment
It may be necessary to change the permissions if you are
running MacOSX, eg: type "chmod 755 makeproject" in terminal
at the fba directory to allow execution permissions for
makeproject.
- The