Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ install:
cytoolz ipython-notebook jinja2 matplotlib numpy pandas pandana patsy pip
pytables pytest pyyaml scipy statsmodels toolz
- source activate test-environment
- pip install bottle prettytable simplejson zbox
- pip install https://github.com/synthicity/urbansim/archive/master.zip
- pip install bottle orca prettytable simplejson zbox
- pip install openmatrix
- pip install pytest-cov coveralls pep8
- pip install .
Expand Down
19 changes: 10 additions & 9 deletions activitysim/defaults/misc.py
Original file line number Diff line number Diff line change
@@ -1,37 +1,38 @@
import urbansim.sim.simulation as sim
import warnings
import os
import yaml
import pandas as pd
import warnings

import numpy as np
import orca
import pandas as pd
import yaml


warnings.filterwarnings('ignore', category=pd.io.pytables.PerformanceWarning)
pd.options.mode.chained_assignment = None


@sim.injectable()
@orca.injectable()
def set_random_seed():
pass


@sim.injectable()
@orca.injectable()
def configs_dir():
return '.'


@sim.injectable()
@orca.injectable()
def data_dir():
return '.'


@sim.injectable()
@orca.injectable()
def settings(configs_dir):
with open(os.path.join(configs_dir, "configs", "settings.yaml")) as f:
return yaml.load(f)


@sim.injectable(cache=True)
@orca.injectable(cache=True)
def store(data_dir, settings):
return pd.HDFStore(os.path.join(data_dir, "data", settings["store"]),
mode='r')
10 changes: 6 additions & 4 deletions activitysim/defaults/models/auto_ownership.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import os
import urbansim.sim.simulation as sim

import orca

from activitysim import activitysim as asim

"""
Expand All @@ -8,18 +10,18 @@
"""


@sim.injectable()
@orca.injectable()
def auto_ownership_spec(configs_dir):
f = os.path.join(configs_dir, 'configs', "auto_ownership.csv")
return asim.read_model_spec(f).fillna(0)


@sim.model()
@orca.step()
def auto_ownership_simulate(set_random_seed, households_merged,
auto_ownership_spec):

choices, _ = asim.simple_simulate(
households_merged.to_frame(), auto_ownership_spec)

print "Choices:\n", choices.value_counts()
sim.add_column("households", "auto_ownership", choices)
orca.add_column("households", "auto_ownership", choices)
18 changes: 10 additions & 8 deletions activitysim/defaults/models/cdap.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import os

import orca
import pandas as pd
import urbansim.sim.simulation as sim

from activitysim import activitysim as asim
from activitysim.cdap import cdap

Expand All @@ -15,37 +17,37 @@
"""


@sim.injectable()
@orca.injectable()
def cdap_1_person_spec(configs_dir):
f = os.path.join(configs_dir, 'configs', "cdap_1_person.csv")
return asim.read_model_spec(f).fillna(0)


@sim.injectable()
@orca.injectable()
def cdap_2_person_spec(configs_dir):
f = os.path.join(configs_dir, 'configs', "cdap_2_person.csv")
return asim.read_model_spec(f).fillna(0)


@sim.injectable()
@orca.injectable()
def cdap_3_person_spec(configs_dir):
f = os.path.join(configs_dir, 'configs', "cdap_3_person.csv")
return asim.read_model_spec(f).fillna(0)


@sim.injectable()
@orca.injectable()
def cdap_final_rules(configs_dir):
f = os.path.join(configs_dir, 'configs', "cdap_final_rules.csv")
return asim.read_model_spec(f).fillna(0)


@sim.injectable()
@orca.injectable()
def cdap_all_people(configs_dir):
f = os.path.join(configs_dir, 'configs', "cdap_all_people.csv")
return asim.read_model_spec(f).fillna(0)


@sim.model()
@orca.step()
def cdap_simulate(set_random_seed, persons_merged,
cdap_1_person_spec, cdap_2_person_spec, cdap_3_person_spec,
cdap_final_rules, cdap_all_people):
Expand All @@ -60,4 +62,4 @@ def cdap_simulate(set_random_seed, persons_merged,
cdap_all_people)

print "Choices:\n", choices.value_counts()
sim.add_column("persons", "cdap_activity", choices)
orca.add_column("persons", "cdap_activity", choices)
12 changes: 7 additions & 5 deletions activitysim/defaults/models/destination.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,24 @@
import urbansim.sim.simulation as sim
from activitysim import activitysim as asim
import os

import orca
import pandas as pd

from activitysim import activitysim as asim

"""
Given the tour generation from the above, each tour needs to have a
destination, so in this case tours are the choosers (with the associated
person that's making the tour)
"""


@sim.table()
@orca.table()
def destination_choice_spec(configs_dir):
f = os.path.join(configs_dir, 'configs', 'destination_choice.csv')
return asim.read_model_spec(f).fillna(0)


@sim.model()
@orca.step()
def destination_choice(set_random_seed,
non_mandatory_tours_merged,
skims,
Expand Down Expand Up @@ -64,4 +66,4 @@ def destination_choice(set_random_seed,
print "Choices:\n", choices.describe()
# every trip now has a destination which is the index from the
# alternatives table - in this case it's the destination taz
sim.add_column("non_mandatory_tours", "destination", choices)
orca.add_column("non_mandatory_tours", "destination", choices)
19 changes: 10 additions & 9 deletions activitysim/defaults/models/mandatory_scheduling.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import os

import orca
import pandas as pd
import urbansim.sim.simulation as sim

from activitysim import activitysim as asim
from .util.vectorize_tour_scheduling import vectorize_tour_scheduling

Expand All @@ -10,7 +12,7 @@
"""


@sim.table()
@orca.table()
def tdd_alts(configs_dir):
# right now this file just contains the start and end hour
f = os.path.join(configs_dir, "configs",
Expand All @@ -20,19 +22,19 @@ def tdd_alts(configs_dir):

# used to have duration in the actual alternative csv file,
# but this is probably better as a computed column like this
@sim.column("tdd_alts")
@orca.column("tdd_alts")
def duration(tdd_alts):
return tdd_alts.end - tdd_alts.start


@sim.table()
@orca.table()
def tdd_work_spec(configs_dir):
f = os.path.join(configs_dir, 'configs',
'tour_departure_and_duration_work.csv')
return asim.read_model_spec(f).fillna(0)


@sim.table()
@orca.table()
def tdd_school_spec(configs_dir):
f = os.path.join(configs_dir, 'configs',
'tour_departure_and_duration_school.csv')
Expand All @@ -41,7 +43,7 @@ def tdd_school_spec(configs_dir):

# I think it's easier to do this in one model so you can merge the two
# resulting series together right away
@sim.model()
@orca.step()
def mandatory_scheduling(set_random_seed,
mandatory_tours_merged,
tdd_alts,
Expand Down Expand Up @@ -69,6 +71,5 @@ def mandatory_scheduling(set_random_seed,

print "Choices:\n", choices.describe()

sim.add_column("mandatory_tours",
"tour_departure_and_duration",
choices)
orca.add_column(
"mandatory_tours", "tour_departure_and_duration", choices)
20 changes: 11 additions & 9 deletions activitysim/defaults/models/mandatory_tour_frequency.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import os

import orca
import pandas as pd
import urbansim.sim.simulation as sim

from activitysim import activitysim as asim
from .util.mandatory_tour_frequency import process_mandatory_tours

Expand All @@ -10,13 +12,13 @@
"""


@sim.injectable()
@orca.injectable()
def mandatory_tour_frequency_spec(configs_dir):
f = os.path.join(configs_dir, 'configs', "mandatory_tour_frequency.csv")
return asim.read_model_spec(f).fillna(0)


@sim.model()
@orca.step()
def mandatory_tour_frequency(set_random_seed,
persons_merged,
mandatory_tour_frequency_spec):
Expand All @@ -36,7 +38,7 @@ def mandatory_tour_frequency(set_random_seed,
index=choices.index).reindex(persons_merged.local.index)

print "Choices:\n", choices.value_counts()
sim.add_column("persons", "mandatory_tour_frequency", choices)
orca.add_column("persons", "mandatory_tour_frequency", choices)


"""
Expand All @@ -46,7 +48,7 @@ def mandatory_tour_frequency(set_random_seed,
"""


@sim.table()
@orca.table()
def mandatory_tours(persons):
persons = persons.to_frame(columns=["mandatory_tour_frequency",
"is_worker"])
Expand All @@ -55,7 +57,7 @@ def mandatory_tours(persons):


# broadcast mandatory_tours on to persons using the person_id foreign key
sim.broadcast('persons', 'mandatory_tours',
cast_index=True, onto_on='person_id')
sim.broadcast('persons_merged', 'mandatory_tours',
cast_index=True, onto_on='person_id')
orca.broadcast('persons', 'mandatory_tours',
cast_index=True, onto_on='person_id')
orca.broadcast('persons_merged', 'mandatory_tours',
cast_index=True, onto_on='person_id')
18 changes: 10 additions & 8 deletions activitysim/defaults/models/mode.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import os
import copy
import yaml
import os

import orca
import pandas as pd
import urbansim.sim.simulation as sim
import yaml

from activitysim import activitysim as asim
from activitysim import skim as askim

Expand All @@ -12,7 +14,7 @@
"""


@sim.injectable()
@orca.injectable()
def mode_choice_settings(configs_dir):
with open(os.path.join(configs_dir, "configs", "mode_choice.yaml")) as f:
return yaml.load(f)
Expand Down Expand Up @@ -45,7 +47,7 @@ def evaluate_expression_list(expressions, locals_d):
return pd.Series(d)


@sim.injectable()
@orca.injectable()
def mode_choice_coefficients(mode_choice_settings):
# coefficients comes as a list of dicts and needs to be tuples
coeffs = [x.items()[0] for x in mode_choice_settings['COEFFICIENTS']]
Expand All @@ -54,7 +56,7 @@ def mode_choice_coefficients(mode_choice_settings):
return evaluate_expression_list(expressions, locals_d=constants)


@sim.injectable()
@orca.injectable()
def mode_choice_spec(configs_dir, mode_choice_coefficients):
f = os.path.join(configs_dir, 'configs', "mode_choice_work.csv")
df = asim.read_model_spec(f)
Expand All @@ -67,7 +69,7 @@ def get_segment_and_unstack(spec, segment):
return spec[segment].unstack().fillna(0)


@sim.model()
@orca.step()
def mode_choice_simulate(tours_merged,
mode_choice_spec,
mode_choice_settings,
Expand Down Expand Up @@ -100,4 +102,4 @@ def mode_choice_simulate(tours_merged,
locals_d=locals_d)

print "Choices:\n", choices.value_counts()
sim.add_column("tours", "mode", choices)
orca.add_column("tours", "mode", choices)
13 changes: 7 additions & 6 deletions activitysim/defaults/models/non_mandatory_scheduling.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import os

import orca
import pandas as pd
import urbansim.sim.simulation as sim

from activitysim import activitysim as asim
from .util.vectorize_tour_scheduling import vectorize_tour_scheduling

Expand All @@ -11,14 +13,14 @@
"""


@sim.table()
@orca.table()
def tdd_non_mandatory_spec(configs_dir):
f = os.path.join(configs_dir, 'configs',
'tour_departure_and_duration_nonmandatory.csv')
return asim.read_model_spec(f).fillna(0)


@sim.model()
@orca.step()
def non_mandatory_scheduling(set_random_seed,
non_mandatory_tours_merged,
tdd_alts,
Expand All @@ -35,6 +37,5 @@ def non_mandatory_scheduling(set_random_seed,

print "Choices:\n", choices.describe()

sim.add_column("non_mandatory_tours",
"tour_departure_and_duration",
choices)
orca.add_column(
"non_mandatory_tours", "tour_departure_and_duration", choices)
Loading