Reeeeee
This commit is contained in:
parent
a5f023f190
commit
2fd94ae46c
2 changed files with 215 additions and 0 deletions
112
.vscode/.ropeproject/config.py
vendored
Normal file
112
.vscode/.ropeproject/config.py
vendored
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
# The default ``config.py``
|
||||||
|
# flake8: noqa
|
||||||
|
|
||||||
|
|
||||||
|
def set_prefs(prefs):
|
||||||
|
"""This function is called before opening the project"""
|
||||||
|
|
||||||
|
# Specify which files and folders to ignore in the project.
|
||||||
|
# Changes to ignored resources are not added to the history and
|
||||||
|
# VCSs. Also they are not returned in `Project.get_files()`.
|
||||||
|
# Note that ``?`` and ``*`` match all characters but slashes.
|
||||||
|
# '*.pyc': matches 'test.pyc' and 'pkg/test.pyc'
|
||||||
|
# 'mod*.pyc': matches 'test/mod1.pyc' but not 'mod/1.pyc'
|
||||||
|
# '.svn': matches 'pkg/.svn' and all of its children
|
||||||
|
# 'build/*.o': matches 'build/lib.o' but not 'build/sub/lib.o'
|
||||||
|
# 'build//*.o': matches 'build/lib.o' and 'build/sub/lib.o'
|
||||||
|
prefs['ignored_resources'] = ['*.pyc', '*~', '.ropeproject',
|
||||||
|
'.hg', '.svn', '_svn', '.git', '.tox']
|
||||||
|
|
||||||
|
# Specifies which files should be considered python files. It is
|
||||||
|
# useful when you have scripts inside your project. Only files
|
||||||
|
# ending with ``.py`` are considered to be python files by
|
||||||
|
# default.
|
||||||
|
#prefs['python_files'] = ['*.py']
|
||||||
|
|
||||||
|
# Custom source folders: By default rope searches the project
|
||||||
|
# for finding source folders (folders that should be searched
|
||||||
|
# for finding modules). You can add paths to that list. Note
|
||||||
|
# that rope guesses project source folders correctly most of the
|
||||||
|
# time; use this if you have any problems.
|
||||||
|
# The folders should be relative to project root and use '/' for
|
||||||
|
# separating folders regardless of the platform rope is running on.
|
||||||
|
# 'src/my_source_folder' for instance.
|
||||||
|
#prefs.add('source_folders', 'src')
|
||||||
|
|
||||||
|
# You can extend python path for looking up modules
|
||||||
|
#prefs.add('python_path', '~/python/')
|
||||||
|
|
||||||
|
# Should rope save object information or not.
|
||||||
|
prefs['save_objectdb'] = True
|
||||||
|
prefs['compress_objectdb'] = False
|
||||||
|
|
||||||
|
# If `True`, rope analyzes each module when it is being saved.
|
||||||
|
prefs['automatic_soa'] = True
|
||||||
|
# The depth of calls to follow in static object analysis
|
||||||
|
prefs['soa_followed_calls'] = 0
|
||||||
|
|
||||||
|
# If `False` when running modules or unit tests "dynamic object
|
||||||
|
# analysis" is turned off. This makes them much faster.
|
||||||
|
prefs['perform_doa'] = True
|
||||||
|
|
||||||
|
# Rope can check the validity of its object DB when running.
|
||||||
|
prefs['validate_objectdb'] = True
|
||||||
|
|
||||||
|
# How many undos to hold?
|
||||||
|
prefs['max_history_items'] = 32
|
||||||
|
|
||||||
|
# Shows whether to save history across sessions.
|
||||||
|
prefs['save_history'] = True
|
||||||
|
prefs['compress_history'] = False
|
||||||
|
|
||||||
|
# Set the number spaces used for indenting. According to
|
||||||
|
# :PEP:`8`, it is best to use 4 spaces. Since most of rope's
|
||||||
|
# unit-tests use 4 spaces it is more reliable, too.
|
||||||
|
prefs['indent_size'] = 4
|
||||||
|
|
||||||
|
# Builtin and c-extension modules that are allowed to be imported
|
||||||
|
# and inspected by rope.
|
||||||
|
prefs['extension_modules'] = []
|
||||||
|
|
||||||
|
# Add all standard c-extensions to extension_modules list.
|
||||||
|
prefs['import_dynload_stdmods'] = True
|
||||||
|
|
||||||
|
# If `True` modules with syntax errors are considered to be empty.
|
||||||
|
# The default value is `False`; When `False` syntax errors raise
|
||||||
|
# `rope.base.exceptions.ModuleSyntaxError` exception.
|
||||||
|
prefs['ignore_syntax_errors'] = False
|
||||||
|
|
||||||
|
# If `True`, rope ignores unresolvable imports. Otherwise, they
|
||||||
|
# appear in the importing namespace.
|
||||||
|
prefs['ignore_bad_imports'] = False
|
||||||
|
|
||||||
|
# If `True`, rope will insert new module imports as
|
||||||
|
# `from <package> import <module>` by default.
|
||||||
|
prefs['prefer_module_from_imports'] = False
|
||||||
|
|
||||||
|
# If `True`, rope will transform a comma list of imports into
|
||||||
|
# multiple separate import statements when organizing
|
||||||
|
# imports.
|
||||||
|
prefs['split_imports'] = False
|
||||||
|
|
||||||
|
# If `True`, rope will remove all top-level import statements and
|
||||||
|
# reinsert them at the top of the module when making changes.
|
||||||
|
prefs['pull_imports_to_top'] = True
|
||||||
|
|
||||||
|
# If `True`, rope will sort imports alphabetically by module name instead of
|
||||||
|
# alphabetically by import statement, with from imports after normal
|
||||||
|
# imports.
|
||||||
|
prefs['sort_imports_alphabetically'] = False
|
||||||
|
|
||||||
|
# Location of implementation of rope.base.oi.type_hinting.interfaces.ITypeHintingFactory
|
||||||
|
# In general case, you don't have to change this value, unless you're an rope expert.
|
||||||
|
# Change this value to inject you own implementations of interfaces
|
||||||
|
# listed in module rope.base.oi.type_hinting.providers.interfaces
|
||||||
|
# For example, you can add you own providers for Django Models, or disable the search
|
||||||
|
# type-hinting in a class hierarchy, etc.
|
||||||
|
prefs['type_hinting_factory'] = 'rope.base.oi.type_hinting.factory.default_type_hinting_factory'
|
||||||
|
|
||||||
|
|
||||||
|
def project_opened(project):
|
||||||
|
"""This function is called after opening the project"""
|
||||||
|
# Do whatever you like here!
|
103
malaria.py
103
malaria.py
|
@ -0,0 +1,103 @@
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import numpy as np
|
||||||
|
import random
|
||||||
|
from enum import IntEnum
|
||||||
|
|
||||||
|
|
||||||
|
class Model:
|
||||||
|
def __init__(self, width=32, height=32, humandens=0.15, mosquitodens=0.10,
|
||||||
|
immumepct=0.1, mosqinfpct=0.1, hm_infpct=0.5, mh_infpct=0.5,
|
||||||
|
hinfdiepct=0.01, mhungrypct=0.1, humandiepct=10**-6,
|
||||||
|
mosqdiepct=10**-3, mosqnetdens=0.05, time_steps=500):
|
||||||
|
self.width = width
|
||||||
|
self.height = height
|
||||||
|
|
||||||
|
self.humandens = humandens
|
||||||
|
self.mosquitodens = mosquitodens
|
||||||
|
self.immunepct = immunepct
|
||||||
|
self.mosqinfpct = mosqinfpct
|
||||||
|
self.hm_infpct = hm_infpct
|
||||||
|
self.mh_infpct = mh_infpct
|
||||||
|
self.hinfdiepct = hinfdiepct
|
||||||
|
self.mhungrypct = mhungrypct
|
||||||
|
self.humandiepct = humandiepct
|
||||||
|
self.mosqdiepct = mosqdiepct
|
||||||
|
self.mosqnetdens = mosqnetdens
|
||||||
|
|
||||||
|
self.time_steps = time_steps
|
||||||
|
|
||||||
|
self.humans = self.gen_humans()
|
||||||
|
self.mosquitos = self.gen_mosquitos()
|
||||||
|
|
||||||
|
def recycle_human(self):
|
||||||
|
# Get all living humans
|
||||||
|
humans = np.transpose(np.where(a != Human.DEAD))
|
||||||
|
deaths = numpy.random.rand(len(humans)) < self.humandiepct
|
||||||
|
grid[humans[deaths]] = Human.DEAD
|
||||||
|
|
||||||
|
for x, y in humans:
|
||||||
|
if numpy.random.rand() < self.humandiepct:
|
||||||
|
grid[x, y] =
|
||||||
|
|
||||||
|
# Pick a random, unpopulated spot
|
||||||
|
x, y = random.choice(np.transpose(np.where(a == Human.DEAD)))
|
||||||
|
|
||||||
|
def gen_humans(self):
|
||||||
|
p_dead = 1 - self.humandens
|
||||||
|
p_immune = self.humandens * self.immunepct
|
||||||
|
p_healthy = p_dead - p_immune
|
||||||
|
|
||||||
|
return np.random.choice((Human.DEAD, Human.HEALTHY, Human.IMMUNE),
|
||||||
|
size=(self.width, self.height),
|
||||||
|
p=(p_dead, p_immune, p_healthy))
|
||||||
|
|
||||||
|
def gen_mosquitos(self):
|
||||||
|
mosquitos = []
|
||||||
|
|
||||||
|
count = self.width * self.height * self.mosquitodens
|
||||||
|
for _ in count:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
for _ in range(self.time_steps):
|
||||||
|
self.step()
|
||||||
|
self.draw()
|
||||||
|
|
||||||
|
|
||||||
|
def step(self):
|
||||||
|
#dingen
|
||||||
|
pass
|
||||||
|
|
||||||
|
def draw(self):
|
||||||
|
# this function draws the humans
|
||||||
|
plt.imshow(self.humans)
|
||||||
|
plt.pause(0.0001)
|
||||||
|
plt.clf()
|
||||||
|
|
||||||
|
|
||||||
|
class Mosquito:
|
||||||
|
def __init__(self, x: int, y: int, infected: bool, hungry: bool):
|
||||||
|
self.x = x
|
||||||
|
self.y = y
|
||||||
|
|
||||||
|
self.infected = infected
|
||||||
|
self.hungry = hungry
|
||||||
|
|
||||||
|
|
||||||
|
class Human(IntEnum):
|
||||||
|
DEAD = 0
|
||||||
|
HEALTHY = 1
|
||||||
|
INFECTED = 2
|
||||||
|
IMMUNE = 3
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
|
||||||
|
plt.ion()
|
||||||
|
|
||||||
|
for i in range(500):
|
||||||
|
img = np.random.randint(0, 3, (10000, 10000))
|
||||||
|
plt.imshow(img)
|
||||||
|
plt.pause(0.0001)
|
||||||
|
plt.clf()
|
Loading…
Reference in a new issue