Source code for sails.tutorial_utils
#!/usr/bin/python
# vim: set expandtab ts=4 sw=4:
import os
from os.path import abspath, expanduser, isdir, isfile, join, split
import numpy as np
__all__ = []
[docs]
def generate_pink_roots(power, order=24):
"""Generates the poles of a system with a pink spectrum according to eqn
116 in [Kasdin1995]_
Parameters
----------
power : float
Power of pole must be between -2 and 2.
order :
Order of system to generate (Default value = 24)
Returns
-------
ndarray
Roots of the system (length of order)
"""
a = np.zeros((order,))
a[0] = 1
for k in range(1, order):
a[k] = (k - 1 - (power/2.)) * (a[k-1] / k)
return np.roots(a)
__all__.append('generate_pink_roots')
[docs]
def model_from_roots(roots):
"""Sets up a univariate model based on the roots of a polynomial
Parameters
----------
roots : ndarray
Vector of polynomial roots.
Returns
-------
AbstractLinearModel
Model fit class containing the parameters defined by the input roots
"""
# We can use the AbstractLinearModel for this as we
# don't need the fit_model routine
from sails import AbstractLinearModel
ret = AbstractLinearModel()
ret.parameters = -np.poly(roots)[None, None, :]
ret.resid_cov = np.ones((1, 1, 1))
ret.delay_vect = np.arange(ret.order + 1)
return ret
__all__.append('model_from_roots')
[docs]
def find_support_path():
"""Returns the path to the support files directory"""
d, f = split(__file__)
return join(abspath(d), 'support')
__all__.append('find_support_path')
[docs]
def find_example_path():
"""Returns the path to the tutorial example data directory (if available)"""
example_path = os.getenv('SAILS_EXAMPLE_DATA', None)
if example_path is None:
# Try the user's home directory
example_path = join(expanduser("~"), "sails-example-data")
# A sentinel file which we ensure is in the git repo for the example data
sentinel = join(example_path, 'SAILS_EXAMPLE_DATA')
# Check for directory and sentinel file
if not isdir(example_path) or not isfile(sentinel):
error = """
Error: Could not find the sails example data (looked in
{})
If you wish to use the example data, download it from git
using:
git clone https://github.com/sails-dev/sails-example-data
If the git repository is in your home directory, this function
will then find the path. If you wish to store the data in another
location, set the SAILS_EXAMPLE_DATA environment variable to
the location of the git checkout
""".format(example_path)
raise Exception(error)
return example_path
__all__.append('find_example_path')
def set_sail():
""" """
import os
import time
rows, columns = os.popen('stty size', 'r').read().split()
cols = int(columns)
ship = [' __|__ __|__ ',
' ) )) )\\',
' ) )) )\\\\',
' )____))____) \\\\',
'\\---__|______|____\\\\----',
'~~;\\_____________/']
air = ''
air = [air + ' '*cols for ii in range(6)]
air = '\n'.join(air) + '\n'
sea = ''
sea = [sea + '~'*cols for ii in range(3)]
sea = '\n'.join(sea)
msg = list(air+sea)
for step in range(5, cols-25):
msg = list(air+sea)
for ii in range(len(ship)):
start = step + (cols+1)*(ii+1)
stop = start + len(ship[ii])
msg[start:stop] = ship[ii]
print('\033[2J\033[<3>A')
print(''.join(msg))
time.sleep(1.0/15)
start = cols//2 + cols*(2) - 2
stop = start+5
msg[start:stop] = 'SAILS'
print('\033[2J\033[<3>A')
print(''.join(msg))
time.sleep(2)
__all__.append('set_sail')