xyfigure 0.0.6
A library for xy plotting and processing
Requires Python: >=3.6

# Sandia Injury Biomechanics Laboratory (SIBL)

## Purpose

The Sandia Injury Biomechanics Laboratory analyzes injury due to blast, ballistics, and blunt trauma to help the nation protect the U.S. warfighter. Our contributions to the science of injury causation and prevention aim to significantly reduce the U.S. warfighter's exposure to serious, severe, and fatal injuries.

For more information, see our [website](http://www.sandia.gov/biomechanics/).

## Library 

[![python](https://img.shields.io/badge/python-3.8-blue.svg)](https://www.python.org/) 
[![license](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/sandialabs/sibl#license) 
[![pypi](https://img.shields.io/badge/pypi-v0.0.5-brightgreen.svg)](https://pypi.org/project/xyfigure/) 
[![CI](https://github.com/sandialabs/sibl/workflows/CI/badge.svg)](https://github.com/sandialabs/sibl/actions)
[![coverage](https://img.shields.io/badge/coverage-73%25-yellow.svg)](https://github.com/sandialabs/sibl/tree/master/htmlcov/index.html)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

* [xyfigure](https://github.com/sandialabs/sibl/tree/master/xyfigure/code/README.md)
* [tpav](https://github.com/sandialabs/sibl/tree/master/xyfigure/process/tpav/README.md)

## Prerequisites

* Git
* Conda

## Workflow Choice

There are two workflows: Client and Developer

| **Client** | **Developer**  |
|---|---|
| *"I just want to use the library, I don't want to develop the library."* | *"I want to use the library and develop the library."* | 
| Follow the [Client Workflow](https://github.com/sandialabs/sibl#client-workflow) | Follow the [Developer Workflow](https://github.com/sandialabs/sibl#developer-workflow) | 

## Client Workflow

### Setup with conda environment

* See the [Client setup](https://github.com/sandialabs/sibl/blob/master/resources/environment.md#client-setup)


### Historical setup, with pip, now deprecated

Install from a terminal:

```bash
$ pip install xyfigure
```

If your computer does not have a network connection, install the WHL file (a Python
package saved in Wheel format), which must can be obtained from Chad directly, or 
from [here](https://pypi.org/project/xyfigure/#files).   Then

```bash
$ pip install --user xyfigure-0.0.n-py3-non-any.whl  # where n is the version number
$ pip install --user xyfigure-0.0.5-py3-non-any.whl  # version 5, for example
```

Verify installation: check that **xyfigure** is contained in the list generated by 

```bash
$ pip list
```

## Developer Workflow

For an overview, [read the guide](https://guides.github.com/activities/hello-world/) from GitHub.

### Get a local copy of the repository using `git clone` with SSH

```console
$ cd ~  # Starting from the home directory is optional, but recommended.
$ git clone git@github.com:sandialabs/sibl.git
```

### Development Cycle

* pull code
* implement
* unit test (active now, both local manual testing and automated testing on push to repository)
* Black code style
* coverage (to come)
* push code

```bash
$ (base) [~]$ cd ~/sibl
$ (base) [~/sibl]$ conda activate siblenv
$ (siblenv) [~/sibl]$ # development in python
$ (siblenv) [~/sibl]$ python -m unittest # unit tests must pass prior to push to repository
$ (siblenv) [~/sibl]$ python -m unittest -v # for more verbose unittest output
$ (siblenv) [~/sibl] black some_specific_file.py
$ (siblenv) [~/sibl] black some_folder/
$ (siblenv) [~/sibl]
```

### Push to repository

If you update the codebase, and wish to have the modifications merged into the main repository, you will need to either *push to the repository* if you are a collaborator (information below), or *create a pull request* if you have forked the repo (information to come).

In the `~/sibl/.git/config` file, add the following:

```python
[user]
    name = James Bond  # your first and last name
    email = jb007@company.com  # your email address
```

Configure ssh keys between your local and the repo.  This assumes to you have an existing public key file in `~/.ssh/id_rsa/id_rsa.pub`.  See [this](https://help.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh) to create a public key.  See [this](https://help.github.com/en/github/authenticating-to-github) for troubleshooting.

Copy the entire **public** key to the GitHub site under [Settings > SSH and GPG keys](https://github.com/settings/keys).

From within the repo `~/sibl/`, set the username and email on a *per-repo* basis:

```console
$ git config user.name "James Bond"  # your first and last name in quotations
$ git config user.email "jb007@company.com"  # your email address in quotations
```

## Contact

* Chad B. Hovey, Sandia National Laboratories, chovey@sandia.gov

## License

* [License](LICENSE)
* [Third-Party Notice](NOTICE.md)

Sandia National Laboratories is a multimission laboratory managed and operated by National Technology and Engineering Solutions of Sandia, LLC, a wholly owned subsidiary of Honeywell International, Inc., for the U.S. Department of Energy's National Nuclear Security Administration under contract DE-NA-0003525.

## Copyright

Copyright 2020 National Technology and Engineering Solutions of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with NTESS, the U.S. Government retains certain rights in this software.

### Notice

For five (5) years from  the United States Government is granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable worldwide license in this data to reproduce, prepare derivative works, and perform publicly and display publicly, by or on behalf of the Government. There is provision for the possible extension of the term of this license. Subsequent to that period or any extension granted, the United States Government is granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable worldwide license in this data to reproduce, prepare derivative works, distribute copies to the public, perform publicly and display publicly, and to permit others to do so. The specific term of the license can be identified by inquiry made to National Technology and Engineering Solutions of Sandia, LLC or DOE.
 
NEITHER THE UNITED STATES GOVERNMENT, NOR THE UNITED STATES DEPARTMENT OF ENERGY, NOR NATIONAL TECHNOLOGY AND ENGINEERING SOLUTIONS OF SANDIA, LLC, NOR ANY OF THEIR EMPLOYEES, MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY INFORMATION, APPARATUS, PRODUCT, OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS.
 
Any licensee of this software has the obligation and responsibility to abide by the applicable export control laws, regulations, and general prohibitions relating to the export of technical data. Failure to obtain an export control license or other authority from the Government may result in criminal liability under U.S. laws.