←Back
>Meet The Team
Alex Damarjian
Instructor / Producer
Email Me
Visit My Website
David Antognoli
Instructor / Producer
Email Me
Visit My Website
Aaron Ayala
Prop / Environmental
Email Me
Adam Cholewinski
Assistant Producer / QA Lead
Email Me
Visit My Website
Aidan Walsh
Programmer
Alex Lee
Programmer / Game System Engineer
Email Me
Visit My Website
Alexander Nigl
Game Programmer
Email Me
Visit My Website
Andrew Ferguson
Lead Sound Designer
Email Me
Visit My Website
Angel Turan
Environmental / Prop Artist
Email Me
Visit My Website
Anthony Tate
Environmental / Prop
Email Me
Visit My Website
Arlo Andino
Environmental / Prop
Clayton Miller
Level Designer
Email Me
Visit My Website
Charless Ross
Game Programmer
Email Me
Visit My Website
Dane Wheaton
Gameplay Scripter / Level Designer
Email Me
Visit My Website
Daniel Caneda
Game Programmer / Web Developer
Email Me
Visit My Website
David Piech
Character / Prop Artist
Email Me
Visit My Website
DeAndre Owens
Level Designer
Desmond Watson
SCo-Lead Sound Designer
Email Me
Dominika Bak
Character / Rigger
Email Me
Visit My Website
Evan Sucher
Game Programmer
Email Me
Hermon Mogos
Environmental / Prop Artist
Email Me
Visit My Website
Jacob Brown
Game Programmer
James Robertson
Level Designer
Email Me
Jennifer Nguyen
Environmental / Prop Artist
Email Me
Visit My Website
Jose Figueroa
Character / Prop
Justin Smith
Gameplay Scripter
Email Me
Kent Williams
Enviro / Prop / Character Artist
Email Me
Visit My Website
Kevin Hatley
Game Play Mechanics / Interaction
Email Me
Visit My Website
Kwaku Owusu-Ansah
Programmer
Email Me
Lundon Lewis
Character / Prop
Marilu Rodriguez
Environmental / Prop
Email Me
Visit My Website
Matthew Nerovich
Level Designer
Email Me
Visit My Website
Matthew Santiago
Level Designer
Email Me
Visit My Website
Matthew Sullivan
Music Composer / SFX Designer
Matvey Doronichev
Level Designer
Email Me
Visit My Website
Michael Ingargiola
Gameplay Scripter / Level Designer
Email Me
Visit My Website
Miranda Penrod
Environmental / Prop
Email Me
Rebecca Sertic
Music Composer / SFX Designer
Email Me
Róbert Smári Björnsson
Programmer / System Design
Email Me
Russell Medrano
Programmer
Email Me
Ryan Carpenter
Level Designer
Email Me
Visit My Website
Ryan Staudacher
Programmer / Level Designer
Email Me
Visit My Website
Tim Abel
Video Capture and Editor
Email Me
Visit My Website
Yvonne Briseno-Flores
Environmental / Prop Artist
Email Me
Visit My Website
Zach Daniel
Programmer
Email Me
Visit My Website


| af.xml |
55,249 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| am.xml |
76,654 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| ar.xml |
57,568 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| as.xml |
66,153 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| ast.xml |
63,769 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| az.xml |
59,755 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| bg.xml |
64,149 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| bn.xml |
58,367 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| bn_in.xml |
66,764 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| bs.xml |
63,616 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| ca.xml |
61,492 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| cs.xml |
59,931 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| cy.xml |
75,936 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| da.xml |
61,935 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| de.xml |
60,538 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| el.xml |
63,077 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| en.xml |
83,580 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| eo.xml |
79,043 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| es.xml |
61,927 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| et.xml |
56,216 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| eu.xml |
57,323 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| fa.xml |
67,801 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| fi.xml |
57,527 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| fr.xml |
66,697 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| ga.xml |
75,535 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| gl.xml |
55,406 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| gu.xml |
65,377 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| he.xml |
55,640 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| hi.xml |
65,079 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| hr.xml |
63,698 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| hu.xml |
58,737 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| id.xml |
75,923 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| is.xml |
63,848 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| it.xml |
79,269 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| ja.xml |
57,057 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| ka.xml |
67,951 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| kn.xml |
79,188 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| ko.xml |
54,483 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| ky.xml |
59,414 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| la.xml |
54,141 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| lt.xml |
59,958 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| lv.xml |
79,393 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| ml.xml |
67,481 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| mn.xml |
63,553 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| mr.xml |
65,889 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| nb.xml |
82,331 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| nds.xml |
63,705 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| nl.xml |
60,377 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| nn.xml |
82,338 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| or.xml |
79,180 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| pa.xml |
64,537 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| pl.xml |
59,879 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| pt.xml |
73,102 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| pt_br.xml |
75,224 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| ro.xml |
53,961 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| ru.xml |
61,448 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| se.xml |
83,008 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| sk.xml |
53,932 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| sl.xml |
54,033 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| sq.xml |
58,256 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| sr.xml |
63,661 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| sr_Latn.xml |
61,216 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| sv.xml |
55,760 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| ta.xml |
66,410 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| te.xml |
67,061 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| th.xml |
56,905 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| tl.xml |
75,625 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| tr.xml |
58,023 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| uk.xml |
61,330 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| ur.xml |
61,716 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| vi.xml |
55,128 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| xh.xml |
55,247 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| zh.xml |
67,162 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| zh_cn.xml |
67,172 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |
| zh_tw.xml |
58,864 |
07 Apr 2023 at 14:46 |
ndw |
75d1d171 |
Deploying to master from @ docbook/xslTNG@994171418bf6adef6ef87… |


pydent.aqsession.Browser¶
-
class
pydent.aqsession.
Browser
(session, inherit_models=False)[source]¶ Bases:
pydent.interfaces.QueryInterfaceABC
A class for browsing models and Aquarium inventory.
Instantiates a new browser from a AqSession instance.
Changed in version 0.1.5a7: ‘inherit_models’ argument will inherit the sessions model_cache (default: False)
- Parameters
session (SessionABC) – a session instance
inherit_models (
bool
) – if True, the browser will inherit the cache in the provided session’s browser model_cache
-
__init__
(session, inherit_models=False)[source]¶ Instantiates a new browser from a AqSession instance.
Changed in version 0.1.5a7: ‘inherit_models’ argument will inherit the sessions model_cache (default: False)
- Parameters
session (SessionABC) – a session instance
inherit_models (
bool
) – if True, the browser will inherit the cache in the provided session’s browser model_cache
Methods
__init__
(session[, inherit_models])Instantiates a new browser from a AqSession instance.
all
([model_class, opts])Return all models of a model_class.
cached_find
(model_class, id)cached_where
(query, model[, primary_key, …])clear
()Clears the model cache.
close_matches
(pattern[, sample_type])Finds samples whose names closely match the pattern.
export_samples_to_csv
(samples, out)Exports the samples to a csv (for Aquarium import)
find
(model_id[, model_class])Finds a model by id.
find_by_name
(name[, model_class, primary_key])Find model by name.
first
([num, model_class, sample_type, query])Finds first models.
get
(models[, relations, query, strict, …])- type models
List
[ModelBase
]
inspect
(model, header, attributes)interface
([model_class])Returns a new model query interface.
last
([num, model_class, sample_type, query])Finds last models.
list_field_values
(model_ids, **query)Lists sample field values.
list_models
(*args, **kwargs)new_sample
(sample_type, name, description, …)one
([model_class, sample_type, query, opts])Finds one instance of a model (or returns None)
recursive_retrieve
(models, relations[, …])Efficiently retrieve a model relationship recursively from an iterable.
retrieve
(models, relationship_name[, …])Retrieves a model relationship for the list of models.
sample_list
([sample_type_id])Returns a sample list.
Browser.samples_to_df
samples_to_rows
(samples[, sample_resolver])Return row of dictionaries containing sample information and their properties.
search
(pattern[, ignore_case, sample_type])Performs a regular expression search of Samples.
search_description
(pattern[, samples, …])Search samples by their description.
set_model
(model_name)Sets the default model of this browser.
update_cache
(models[, recursive, update_session])Update the browser’s model cache from a list of models.
where
(query[, model_class, primary_key, …])Perform a ‘where’ query.
Attributes
ACCEPTED_GET_RELATION_TYPES
Alias for self.model.__name__
models
-
INTERFACE_CLASS
¶ alias of
pydent.interfaces.QueryInterface
-
_Browser__query_helper
(fname, query, model_class, sample_type=None, opts=None, params=None, as_single=False)¶ Builds a custom query for the browser.
- Parameters
fname (basestring) – the function name
query (dict) – the query
model_class (basestring) – the name of the model class (e.g. “Sample”)
sample_type (basestring) – optional sample_type name
opts (dict) – options to send to the function
params (dict) – additionaly keyword arguments to send to the function
as_single (bool) – if True, will return the first model of the array or None if array is empty
- Returns
Aquarium model or list of Aquarium models
- Return type
ModelBase | list
-
static
_match_query
(query, model_dict)[source]¶ Matches a query against a model dictionary.
- Parameters
query (dict) – query dictionary
model_dict (dict) – model dictionary (e.g. model.__dict__)
- Returns
whether the model matches the query
- Return type
bool
-
_retrieve_has_many_or_has_one
(models, relationship_name, relation=None, strict=True)[source]¶ Performs exactly 1 query to fullfill some relationship for a list of models.
-
_retrieve_has_many_through
(models, relationship_name, strict=True)[source]¶ Performs exactly 2 queries to establish a HasManyThrough relationship.
-
_update_model_cache_helper
(modelname, modeldict)[source]¶ Updates the browser’s model cache with models from the provided model dict.
- Return type
List
[ModelBase
]
-
all
(model_class=None, opts=None)[source]¶ Return all models of a model_class.
- Parameters
model_class (basestring) – the name of the model class (e.g. “Sample”)
opts –
- Returns
- Return type
-
close_matches
(pattern, sample_type=None, **query)[source]¶ Finds samples whose names closely match the pattern.
- Parameters
pattern (basestring) – regular expression pattern
sample_type (basestring) – sample_type_name to filter samples (optional)
query (dict) – additional query parameters to filter by
- Returns
list of samples
- Return type
list
-
export_samples_to_csv
(samples, out)[source]¶ Exports the samples to a csv (for Aquarium import)
- Parameters
samples (list) – list of samples
out (basestring) – output path of csv file
- Returns
pandas dataframe used for the csv
- Return type
pandas.DataFrame
-
find
(model_id, model_class=None)[source]¶ Finds a model by id. Will returned cached model if possible.
- Parameters
model_id (int) – model_id
model_class (basestring) – the name of the model class (e.g. “Sample”)
- Returns
- Return type
-
find_by_name
(name, model_class=None, primary_key='id')[source]¶ Find model by name. Will return cached model if possible.
- Parameters
name – name of the model
model_class (basestring) – the name of the model class (e.g. “Sample”)
primary_key –
- Returns
-
first
(num=1, model_class=None, sample_type=None, query=None)[source]¶ Finds first models. Will NOT return cached models.
- Parameters
num (int) – number of models to return
model_class (basestring) – the name of the model class (e.g. “Sample”)
sample_type (basestring) – optional sample_type name
query (dict) – additional query to filter models
- Returns
- Return type
-
get
(models, relations=None, query=None, strict=True, force_refresh=False)[source]¶ - Parameters
models (
List
[ModelBase
]) –relations (
Optional
[List
[BaseRelationship
]]) –query (
Optional
[dict
]) –strict (
bool
) –force_refresh (
bool
) –
- Return type
- Returns
-
interface
(model_class=None)[source]¶ Returns a new model query interface.
- Parameters
model_class (basestring) –
- Returns
Interface
- Return type
-
last
(num=1, model_class=None, sample_type=None, query=None)[source]¶ Finds last models. Will NOT return cached models.
- Parameters
num (int) – number of models to return
model_class (basestring) – the name of the model class (e.g. “Sample”)
sample_type (basestring) – optional sample_type name
query (dict) – additional query to filter models
- Returns
- Return type
-
list_field_values
(model_ids, **query)[source]¶ Lists sample field values.
May supply an additional query to filter
FieldValue
.
-
property
model_name
¶ Alias for self.model.__name__
-
one
(model_class=None, sample_type=None, query=None, opts=None)[source]¶ Finds one instance of a model (or returns None)
- Parameters
model_class (basestring) – the name of the model class (e.g. “Sample”)
sample_type (basestring) – optional sample_type name
query (dict) – additional query to filter models
opts (dict) – additional options
- Returns
- Return type
-
recursive_retrieve
(models, relations, strict=True, force_refresh=False)[source]¶ Efficiently retrieve a model relationship recursively from an iterable. The relations_dict iterable may be either a list or a dictionary. For example, the following will collect all of the field_values and their incoming and outgoing wires, the connecting field_values, and finally those FieldValues’ operations.
relation_dict = { "field_values": { "wires_as_dest": { "source": "operation", "destination": "operation" }, "wires_as_source": { "source": "operation", "destination": "operation" }, } } browser.retrieve(operations, relation_dict)
- Parameters
models (list) – models to retrieve from
relations (list|dict|basestring) – the relation to retrieve. May be a string (by attribute name), a list, or a dict.
strict (
bool
) – wither to ignore database inconsistenciesforce_refresh (bool) –
- Returns
dictionary of all models retrieved grouped by the attribute name that retrieved them.
- Return type
dictionary
-
classmethod
relationship_network
(models, get_models, cache_func=None, key_func=None, reverse=False, g=None, strict_cache=True)[source]¶ Build a DAG of related models based on some relationships. By default are built from a model using (model.__class__.__name__, model._primary_key)
New in version 0.1.5a7: method added
See also
Usage example
sample_network
- Parameters
models (
List
[ModelBase
]) – list of modelsget_models (
Callable
) – A function that takes in a single instance of a Model and returns an iterable of Tuples of (model, data), which is used to build edges.key_func (
Optional
[Callable
]) – An optional function that takes in a single instance of a Model and returns a key and some node datacache_func (
Optional
[Callable
]) – A function that takes in a list of models and caches some results.g (
Optional
[DiGraph
]) – optional nx.DiGraphreverse (
bool
) – whether to reverse the edge liststrict_cache (
bool
) – if True, if a request occurs after the cache step, a ForbiddenRequestException will be raised.
- Returns
the relationship graph
-
retrieve
(models, relationship_name, relation=None, strict=True, force_refresh=False)[source]¶ Retrieves a model relationship for the list of models. Compared to a for loop, retrieve is >10X faster for most queries.
# FAST code example samples = browser.search(".*mCherry.*") items = browser.retrieve(samples, 'items') for s in samples: sample_items = s.items # do something with items
# very SLOW code example. DO NOT USE. samples = browser.search(".*mCherry.*") for s in samples: sample_items = s.items # do something with itmes
- Parameters
models (list) – list of models to retrieve the attribute
relationship_name (basestring) – name of the attribute to retrieve
relation (pydent.relationships.Relation) – the relation to retrieve (operational)
strict (bool) – wither to ignore database inconsistencies
- Returns
list of models retrieved
- Return type
list
-
classmethod
sample_network
(samples, reverse=False, g=None, get_models=None, cache_func=None, key_func=None)[source]¶ Build a DAG of
Samples
from their.New in version 0.1.5a7: method added
Changed in version 0.1.5a16: added optional get_models, cache_func, key_func arguments
- Parameters
samples (
List
[Sample
]) – list of samplesreverse (
bool
) – whether to reverse the edges of the final graphg (
Optional
[DiGraph
]) – the graph
- Return type
DiGraph
- Returns
-
samples_to_rows
(samples, sample_resolver=None)[source]¶ Return row of dictionaries containing sample information and their properties. Can be imported into a pandas DataFrame:
import pandas df = pandas.DataFrame(samples_to_rows(samples))
- Parameters
samples (list) – samples, all of same sample type
sample_resolver (callable) – callable to resolve a sample object if the field value property contains a sample. Defaults to return the sample name.
- Returns
list of dictionaries containing sample info and properties
- Return type
list
-
search
(pattern, ignore_case=True, sample_type=None, **query)[source]¶ Performs a regular expression search of Samples.
- Parameters
pattern (basestring) – regular expression pattern
ignore_case (bool) – whether to ignore case for regex search (default: True)
sample_type (basestring) – sample_type_name to filter samples (optional)
query (dict) – additional query parameters to filter by
- Returns
list of samples
- Return type
list
-
search_description
(pattern, samples=None, sample_type=None, ignore_case=True)[source]¶ Search samples by their description.
- Parameters
pattern (basestring) – regex pattern
samples (list) – samples to search. If left blank, a search to find samples will be performed
sample_type (name) – restrict to a particular sample type
ignore_case (bool) – ignore case for regular pattern search (default True)
- Returns
list of samples
- Return type
list
-
update_cache
(models, recursive=True, update_session=False)[source]¶ Update the browser’s model cache from a list of models.
Changed in version 0.1.5a8: Added ‘update_session’ kwarg which will change the model’s session to the browser’s session.
Warning
If update_session=True, the model’s session will change and this may have unintended consequences.
- Parameters
models (
List
[ModelBase
]) – list of modelsrecursive (
bool
) – if True, recursively collect all models contained in the relationships and use those to update the cache as well.update_session (
bool
) – if True, attach the browser’s session to the models
- Return type
Dict
[str
,List
[ModelBase
]]- Returns
the updated dictionary broken down by model class name
-
where
(query, model_class=None, primary_key='id', sample_type=None, methods=None, opts=None, page_size=None, include=None)[source]¶ Perform a ‘where’ query. If models are found in the browser cache, those are returned, else new http queries are made to find the models.
- Parameters
query – query as a dictionary
model_class – model class to use (str)
primary_key – which primary key to use (default: ‘id’)
sample_type – optional sample_type short cut for finding samples
kwargs – other kwargs
- Returns
returned model list


Apple could be forced to open up NFC to Apple Pay rivals in Germany
Das is verbotten Appfel
by Carly PageAPPLE COULD BE FORCED open up access to the iPhone's NFC chip to Apple Pay competitors Germany.
As per Zeit Online, a German parliamentary committee last week voted that Apple should make its NFC chip available to other payment services and financial institutions in the form of an amendment to an anti-money laundering law that is set to come into effect early next year.
The bill doesn't name Apple specifically, but instead requires "operators of electronic money infrastructure to offer access to rivals for a reasonable fee", Reuters reports. However, while it could charge for access to its NFC chip, Apple wouldn't get the reported 0.15 per cent fee that it currently gets from each Apple Pay transaction.
In a statement, Apple said it is "surprised" at how suddenly the legislation was approved, adding: "We fear that the draft law could be harmful to user-friendliness, data protection and the security of financial information."
German lawmakers aren't the only ones with Apple Pay in their sights. Margrethe Vestager, the EU's antitrust chief, is considering an investigation into the service over concerns that Apple's NFC lockdown is anticompetitive and is squeezing third-party firms out of the mobile payments market.
The EU regulator has asked online retailers if they are contractually obligated to use Apple's payment system over rival services, and Vestager has confirmed that since doing so, she has received a "very high number" of complaints about the service.
"Convenience can come with a very big price if it shuts down competition, because then eventually you may have to pay a higher price either in terms of money or fees or in terms of data," Vestager told Bloomberg earlier this month.
"Payment systems is an obvious place where it is beneficial for consumers that different payment systems can work together." µ
Further reading
EU antitrust chief hints at formal Apple Pay antitrust probe
- 08 Nov 2019
Apple Pay faces EC probe over 'possible anticompetitive' practices
- 17 Oct 2019
UK gov pilots Google Pay and Apple Pay for some services
- 07 May 2019
EU drops 'sweetheart deal' lawsuit as Apple pays €14.3bn in taxes to Ireland
- 19 Sep 2018


--- layout: post title: Hello World date: '2014-05-16T13:03:00-05:00' author: Open Data Portal Team categories: - Open Data - Data Portal tags: - announcement ---
So, you’ve come to rely on the open data portal to power a website, a research project, or simply browse. First, thank you! We do want to make the open data portal an effective platform for everyone.
The portal has grown quickly in three years to almost 600 datasets. As developers have come to rely on the portal, the open data team is looking forward to improving that experience. Thus, we’ve launched the status blog to keep you in the loop about changes and issues with the data portal.
The portal is a sophisticated setup of automated scripts that refresh data on a daily, weekly, or monthly process. But, sometimes things go wrong. If something does malfunction, it’s important that we provide a basic service of keeping our users up-to-date on the resolution.
What kind of things will we write about here?
This blog will be updated if we notice an issue or if one is brought to our attention. Visit here to see if there are any known issues and keep abreast of developments.
Each post will be marked with the dataset’s 4x4, which is a unique identifier associated with each dataset. You can find the 4x4, such as usfg-z9mx, can be found in the URL.
See an issue? Reach out to @ChicagoCDO or contact us at dataportal@cityofchicago.org


Authentication Codes
The following authentication codes have been issued to client applications.
ID
Code
Issued to
id
client id
client secret
revoke


Last updated on 4th March 2021
GrowMore Limited, its subsidiaries and branch operations hereinafter referred as ‘GrowMore’, ‘we’, ‘us’ or
‘our’
is committed to respect your privacy and choices. The statement highlights our privacy practices regarding
Personal Information that we collect and store about you through this website, www.GrowMore.in (the “Site”)
and
also for those Personal Information that you provide us while participating in our events and campaigns.
I.1 Personal Information that we process
For the purposes of this privacy statement, 'Personal Information' is any data which relates to an
individual
who may be identified from that data, or from a combination of a set of data, and other information which is
in
possession of GrowMore.
We collect the following categories of Personal Information:
Information that you provide via our website, including information you provide when you register on our
website
e.g. name, email address, designation, company, country, name of your university, your field of academic
study/concentration, expected year and month of your graduation, and telephone number;
Information about your computer and about your visits to and use of this Site, such as your Internet
Protocol
(IP) address, demographics, your computers’ operating system, and browser type and information collected via
cookies
Cookie related details are provided in the Cookie Policy
I.2. Use of your Personal Information
We use your Personal Information for the following purposes:
To provide better usability, troubleshooting and site maintenance;
To understand which parts of the website are visited and how frequently;
To create your user ID;
To identify you once you register on our website;
To contact you and respond to your questions or requests; and
To provide access to desirable content based on your preferences.
To process job application and alumni related requests, more details about which are available on
corresponding
portals of this website.
To know your interest of participation in ideathons or other competitions
As a participant of the competition, to publish your name and corresponding details to make them available
to
larger audience on the Internet
I.3. Legal basis of the processing
I. We process your Personal Information when it is necessary for the performance of a contract to which you
are
the party or in order to take steps at your request prior to entering into a contract. This applies in any
case where we provide services to you pursuant to a contract, such as when you use our website or process
your registration on the website.
II. If you do not provide the Personal Information that we need in order to
provide our services, we will not be able to provide our services to you.
III. We process your Personal
Information for the performance of a contract in the following circumstances:
to provide better usability, troubleshooting and site maintenance; and
to create your user ID.
IV. We process your Personal Information when it is necessary for the purposes of a legitimate interest
pursued by us or a third party (when these interests are not overridden by your data protection rights).
V. This applies in the following circumstances:
- To identify you once you register on our website; and
- To contact you and respond to your questions or requests;
- To understand which parts of the website are visited and how frequently; and
- To provide access to desirable content based on your preferences.
VI. We process your Personal Information with your consent for the below purpose(s). Where we process
Personal Data based on consent, your consent is revocable at any time.
- To know your interest of participation in ideathons or other competitions
- To contact you in furtherance to your participation in the ideathons or other competitions
I.4 Consequences of not providing Personal Information
If you choose not to provide your Personal Information that is mandatory to process your request, we may not
be able to provide the corresponding service.
I.5 Data recipients, transfer, and disclosure of Personal Information
GrowMore does not share your Personal Information with third parties for their direct marketing purposes.
We share your Personal Information within
GrowMore or with any of its subsidiaries;
Business partners;
Service vendors;
Authorized third-party agents; or
Contractors.
GrowMore Limited does not sell your Personal Information to third parties.
In general, GrowMore Limited, domiciled in Rajasthan, is the data controller processing your Personal
Information.
For transfers to GrowMore group companies and service providers outside the EEA, we use standard contractual
clauses or rely on a service provider's (EU data protection authority approved) corporate rules that are in
place to protect your Personal Information. Please contact us as set out below if you would like to obtain a
copy of the methods used. When required, GrowMore discloses Personal Information to external law enforcement
bodies or regulatory authorities, in order to comply with legal obligations.
I.7 Your Rights
Subject to the laws of your country, You have the right to access, correct, delete or transfer your Personal
Information that we hold, including your profile and preferences. You also have the right to object to
certain processing and, where we have asked for your consent to process your Personal Information, to
withdraw this consent. Where we process your Personal Information because we have a legitimate interest in
doing so (as explained above), you also have a right to object to this. These rights may be limited in some
situations – for example, where we can demonstrate that we have a legal requirement to process your Personal
Information.
You can assert your rights in the corresponding sections where such information was provided or by
contacting us at<EMAIL_ADDRESS>I.8 Data Security
GrowMore adopts reasonable and appropriate security practices and procedures including administrative,
physical security, and technical controls in order to safeguard your Personal Information.
I.9 Data Retention
Personal Information will not be retained for a period more than necessary to fulfill the purposes outlined
in this privacy statement, unless a longer retention period is required by law or for directly related
legitimate business purposes.
I.10 Linked websites
Our privacy practices regarding Personal Information that we collect and store about you through our portals
such as Recruitment and Global Alumni will be as per the privacy policy of those portals.
GrowMore provides links to third-party websites and services. However, GrowMore is not responsible for the
privacy statements, practices, or the contents of such third-party websites.
I.11 Children’s Privacy
The Site does not knowingly solicit or collect personally identifiable information online from children
under the age of 13 without prior verifiable parental consent. If GrowMore Limited learns that a child under
the age of 13 has submitted personally identifiable information online without parental consent, it will
take all reasonable measures to delete such information from its databases and to not use such information
for any purpose (except where necessary to protect the safety of the child or others as required or allowed
by law). If you become aware of any personally identifiable information we have collected from children
under 13, please call us at +91<PHONE_NUMBER> or email us at<EMAIL_ADDRESS>Minors under 18 years of age may have the personal information that they provide to us deleted by sending an
email to<EMAIL_ADDRESS>requesting deletion. Please note that, while we make reasonable efforts to
comply with such requests, deletion of your personal information does not ensure complete and comprehensive
removal of that data from all systems.
How to Contact us
If you have any questions regarding our privacy practices or this privacy statement, or to request this
privacy
statement in another format, please contact us at:
Contact address: NIIT University Alwar, Rajasthan India-301705
Phone: +91<PHONE_NUMBER>
Email<EMAIL_ADDRESS>Updates to this privacy statement
GrowMore may change the data privacy practices and update this privacy statement as and when the need
arises, and the same will be made available on the website. But our commitment to protect the privacy of
website users will continue to remain.


Join the Vermont GIS and Data Science community at Main Street Landing on Burlington's waterfront and learn about the latest technology, see examples of outstanding projects, and discuss big ideas for the future across the two days. GeoDatSci is the evolution of the annual ‘Geospatial Forum’ that Vermont’s GIS community has held for over decade. We are excited that this year’s event is expanding the community and topics to include the emerging world of data science.
New possibilities and emerging trends.
New skills from experts offering practical advice to help you in your day to day work.
With new and old friends in Vermont's GIS and Data Science Communities.
Attend both days or come for just one.
Location: The Generator, 40 Sears Ln, Burlington, VT 05401
Cost: Free and Open to the Public
There are many areas where GIS and data may be used not just for business, research or governmental application. This event will be composed of four half-hour talks exploring on non-traditional applications of GIS and Data in creative fields.
It is open to the general public and is held at The Generator which is a combination of artist studios, classroom, and business incubator at the intersection of art, science, and technology.
Parking: Park on Sear's Lane or behind the Champlain College Miller Center on Lakeside Ave
Cost: $65 Early Bird before April 15, $75 Regular Register HERE
A Slack Channel has been set up for participants, it is encouraged that you join the channel to be aware of any announcements and ask any questions you may have. Once you are registered you should receive and invite to the channel, if you do not please reach out through the email on the Contact section of this site.
Topics will cover big ideas, interesting projects and technical instruction in the fields of Geospatial Information Systems (GIS) and Data Science. Most talks will be 20 minutes with a 10 minute Q&A and transition.
The event is at The Main Street Landing Performing Arts Center on the 3rd floor in the Filmhouse, Blackbox Theater and the Great Room. Tables will be set up in the Filmhouse Lobby and the Atrium for sponsors for the duration of the event.
Food: Breakfast snacks and a brown-bag lunch will be provided, if there are any dietary constraints reach out as soon as possible to the organizers on the Slack channel.
Parking: There is no free parking for the venue, please review paid options for Burlington City Parking
GeoDatSci Geospatial and Data Science Conference was originaly called the Geospatial Forum and has been run for many years by the Vermont Center for Geographic Information (VCGI). The change of the event name and the inclusion of Data Science themed talks was introduced in 2017 with the goal of bridging the two fields given the common interests and problems.
History of EventsThe Vermont Center for Geospatial Information is your source for Vermont's geospatial data, information, and activities. VCGI is a division of the Agency of Commerce and Community Development charged by the State of Vermont with assisting the Vermont GIS community as well as anyone interested in geospatial technology or mapping.
Any questions about the event? Join us on our Slack Channel and ask us any question.
Or you can send us an email at<EMAIL_ADDRESS>and we will get back to you as soon as possible!


Cavanagh set to play on with Tyrone in 2020
Mickey Harte has confirmed that the 32-year-old will be available for selection next season.
by Gavan CaseyCOLM CAVANAGH HAS committed to another year with Tyrone despite suggestions the former All-Star would retire following the Red Hand’s All-Ireland semi-final defeat to Kerry in August.
Cavanagh, 32, is the last remaining on-field link with the Tyrone team which lifted the Sam Maguire in 2008, and is now set to embark upon a 14th season in his county colours.
The Moy midfielder spoke of the increasing demands of both his family and professional life after Mickey Harte’s men bowed out in the last four of the 2019 championship, fuelling speculation that he was set to hang up his boots at inter-county level.
Harte, however, confirmed in Wednesday’s Irish News that the two-time All-Star would play on for another year, suggesting Cavanagh remains an indispensable presence in his side.
“The rumours were a bit off the mark,” Harte said.
“He hasn’t retired, he’s prepared to give it a lash, and we’re all pleased that that’s the case,” added the Tyrone boss.
“He’s been a great stalwart for this team, and a very versatile player. He has a lot of experience that we can ill-afford to do without at the minute.”
Cavanagh’s decision to play next year comes as a welcome boost for Harte, who will be without captain Mattie Donnelly for the first quarter of 2020 at least, and whose forward Connor McAliskey has opted to take a year out ahead of the upcoming season.


Jason Derulo Denies Photoshopping His ‘Package’ In Instagram Post
by Shivani SinghIf you haven’t heard by now, Jason Derulo posted a picture on Instagram from his recent trip to Bali. The photo compliments his body specifically one specific part of it. The singer posed in his black underwear paired with gold chains and you can pretty much guess what caught the attention of many fans which got this photo to go viral.
He casually captions the post “Good Mornin’ 💦” but trust me, the caption is not what Instagram users were looking at. His bulge in his underwear is very attention-grabbing. So many users were commenting on the post, and Derulo decided to have fun with it. Someone asked “What animal are you hiding in your pants?” he replied, “Anaconda.”
He asked his followers to admit if they zoomed in on *that area*, and the comment received over 10,000 “likes” and nearly 2,000 responses.
However, there was many speculations around whether this photo was photoshopped or not. TMZ asked Derulo to confirm if it was edited but he denied it, “Photoshop? Photoshop? Don’t make me [pull it out]. It’s not enough women in this area. Just know that us Haitians, we look different.”
“It was in Bali. I honestly [didn’t] feel like that was going to be my most liked picture when I woke up this morning. I posted the motherfucker very early. It was [a photo] from months ago. It was not even something that I just did,” he added.
Getting past all the photoshop allegations, Derulo had even more fun with the photo. He posted a photo of him and a fan trying to mimic the picture, exaggerating the size of Derulo’s underwear print:
Unlike Derulo, the photo on the right is definitely not the real deal.
Read More:
Celebrity,Entertainment,MusicInstagram
Shivani SinghCOLLEGECANDY Writer
-<PHONE_NUMBER>1348454


BrainControl Object - Properties
Baud rate
Combobox to choose the baud rate for the Neurosky connection.


Uses of Class
jabs.data.Block
| Package | Description |
|---|---|
| jabs.blockchain | |
| jabs.consensus | |
| jabs.data | |
| jabs.data.bitcoin | |
| jabs.data.casper | |
| jabs.data.dagsper | |
| jabs.data.ethereum | |
| jabs.data.pbft | |
| jabs.node.nodes |
-
Uses of Block in jabs.blockchain
Classes in jabs.blockchain with type parameters of type Block Modifier and Type Class Description class
LocalBlock<B extends Block<B>>
LocalBlock is used for blocks that resides inside a nodes memory.class
LocalBlockTree<B extends Block<B>>
A tree graph of blocks received by a node.Fields in jabs.blockchain declared as Block Modifier and Type Field Description B
LocalBlock. block
The block that is received by node -
Uses of Block in jabs.consensus
Classes in jabs.consensus with type parameters of type Block Modifier and Type Class Description class
AbstractBlockchainConsensus<B extends Block<B>,T extends Tx<T>>
class
AbstractConsensusAlgorithm<B extends Block<B>,T extends Tx<T>>
class
CasperFFG<B extends Block<B>,T extends Tx<T>>
interface
ConsensusAlgorithm<B extends Block<B>,T extends Tx<T>>
class
DAGsper<B extends Block<B>,T extends Tx<T>>
interface
DeterministicFinalityConsensus<B extends Block<B>,T extends Tx<T>>
class
GhostProtocol<B extends Block<B>,T extends Tx<T>>
class
NakamotoConsensus<B extends Block<B>,T extends Tx<T>>
class
PBFT<B extends Block<B>,T extends Tx<T>>
interface
VotingBasedConsensus<B extends Block<B>,T extends Tx<T>>
class
Xolph<B extends Block<B>,T extends Tx<T>>
Fields in jabs.consensus declared as Block Modifier and Type Field Description protected B
AbstractBlockchainConsensus. currentMainChainHead
The latest block agreed by consensus algorithm (Current agreed state by the Node)protected B
GhostProtocol. originOfGhost
-
Uses of Block in jabs.data
-
Uses of Block in jabs.data.bitcoin
Subclasses of Block in jabs.data.bitcoin Modifier and Type Class Description class
BitcoinBlock
class
BitcoinBlockWithTx
-
Uses of Block in jabs.data.casper
Classes in jabs.data.casper with type parameters of type Block Modifier and Type Class Description class
CasperFFGLink<B extends Block<B>>
class
CasperFFGVote<B extends Block<B>>
Fields in jabs.data.casper declared as Block Modifier and Type Field Description private B
CasperFFGLink. toBeFinalized
private B
CasperFFGLink. toBeJustified
-
Uses of Block in jabs.data.dagsper
Classes in jabs.data.dagsper with type parameters of type Block Modifier and Type Class Description class
DAGsperVote<B extends Block<B>>
Fields in jabs.data.dagsper declared as Block Modifier and Type Field Description B
DAGsperVote. toBeJustified
-
Uses of Block in jabs.data.ethereum
Subclasses of Block in jabs.data.ethereum Modifier and Type Class Description class
EthereumBlock
class
EthereumBlockWithTx
-
Uses of Block in jabs.data.pbft
Classes in jabs.data.pbft with type parameters of type Block Modifier and Type Class Description class
PBFTBlockVote<B extends Block<B>>
class
PBFTCommitVote<B extends Block<B>>
class
PBFTPrepareVote<B extends Block<B>>
class
PBFTPrePrepareVote<B extends Block<B>>
Subclasses of Block in jabs.data.pbft Modifier and Type Class Description class
PBFTBlock
Fields in jabs.data.pbft declared as Block Modifier and Type Field Description private B
PBFTBlockVote. block
-
Uses of Block in jabs.node.nodes
Classes in jabs.node.nodes with type parameters of type Block Modifier and Type Class Description class
BlockchainNode<B extends Block<B>,T extends Tx<T>>


|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.objectstyle.cayenne.project.ProjectFile
public abstract class ProjectFile
ProjectFile is an adapter from an object in Cayenne project to its representation in the file system.
| Field Summary | |
|---|---|
protected java.lang.String |
location
|
protected Project |
projectObj
|
protected java.io.File |
tempFile
|
| Constructor Summary | |
|---|---|
ProjectFile()
|
|
ProjectFile(Project project,
java.lang.String location)
Constructor for ProjectFile. |
| Method Summary | |
|---|---|
abstract boolean |
canHandle(java.lang.Object obj)
Returns true if this file wrapper can handle a specified object. |
boolean |
canHandleObject()
Returns true if this file wrapper can handle an internally stored object. |
protected void |
checkWritePermissions(java.io.File file)
|
java.lang.String |
getLocation()
Builds a filename from the object name and "file suffix". |
java.lang.String |
getLocationSuffix()
Returns suffix to append to object name when creating a file name. |
abstract java.lang.Object |
getObject()
Returns a project object associated with this file. |
abstract java.lang.String |
getObjectName()
Returns a name of associated object, that is also used as a file name. |
java.lang.String |
getOldLocation()
Returns saved location of a file. |
Project |
getProject()
Returns the project. |
boolean |
isRenamed()
|
java.io.File |
resolveFile()
Returns a file which is a canonical representation of the file to store a wrapped object. |
java.io.File |
resolveOldFile()
Returns a file which is a canonical representation of the file to store a wrapped object. |
abstract void |
save(java.io.PrintWriter out)
Saves an underlying object to the file. |
java.io.File |
saveCommit()
Finishes saving the underlying object. |
void |
saveTemp()
Saves ProjectFile's underlying object to a temporary file, returning this file to the caller. |
void |
saveUndo()
Cleans up after unsuccessful or canceled save attempt. |
void |
synchronizeLocation()
Replaces internally stored filename with the current object name. |
protected java.io.File |
tempFileForFile(java.io.File f)
Creates a temporary file for the master file. |
java.lang.String |
toString()
|
void |
willSave()
This method is called by project to let file know that it will be saved. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
protected java.lang.String location
protected java.io.File tempFile
protected Project projectObj
| Constructor Detail |
|---|
public ProjectFile()
public ProjectFile(Project project, java.lang.String location)
| Method Detail |
|---|
public java.lang.String getLocation()
public java.lang.String getOldLocation()
public java.lang.String getLocationSuffix()
public abstract java.lang.Object getObject()
public abstract java.lang.String getObjectName()
public abstract void save(java.io.PrintWriter out) throws java.lang.Exception
java.lang.Exception
public abstract boolean canHandle(java.lang.Object obj)
public boolean canHandleObject()
public void synchronizeLocation()
public void willSave()
public void saveTemp() throws java.lang.Exception
java.lang.Exception
public java.io.File resolveFile()
public java.io.File resolveOldFile()
public java.io.File saveCommit() throws ProjectException
ProjectException
public void saveUndo()
public Project getProject()
public boolean isRenamed()
protected java.io.File tempFileForFile(java.io.File f) throws java.io.IOException
java.io.IOException
protected void checkWritePermissions(java.io.File file) throws java.io.IOException
java.io.IOException
public java.lang.String toString()
toString
in class java.lang.Object
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


AstaXie
Slene
- Team role: primarily responsible for ORM, maintainer of Beego samples and official site.
- Social network: Sina Weibo GitHub Twitter
ClownFish
- Team role: primarily responsible for Beego admin management system.
- Social network: GitHub
Lei Cao
- Team role: Main maintainer for the English Docs and resources.
- Social network: GitHub


| File | Statements | Branches | Functions | Lines | |||||
|---|---|---|---|---|---|---|---|---|---|
| lib/ | 67.03% | 183/273 | 46.85% | 52/111 | 59.65% | 34/57 | 67.03% | 183/273 | |
| lib/authc/ | 75.09% | 214/285 | 67.33% | 101/150 | 66.67% | 22/33 | 75.09% | 214/285 | |
| lib/cache/ | 79.32% | 188/237 | 62.79% | 54/86 | 56.92% | 37/65 | 79.24% | 187/236 | |
| lib/ds/ | 73.02% | 184/252 | 60.95% | 103/169 | 64.1% | 25/39 | 73.02% | 184/252 | |
| lib/error/ | 100% | 24/24 | 100% | 4/4 | 100% | 2/2 | 100% | 24/24 | |
| lib/jwt/ | 88.14% | 52/59 | 81.25% | 13/16 | 72.73% | 8/11 | 87.93% | 51/58 | |
| lib/oauth/ | 91.15% | 103/113 | 82.61% | 38/46 | 94.12% | 16/17 | 91.15% | 103/113 | |
| lib/proxy/ | 70.83% | 34/48 | 35.71% | 5/14 | 60% | 6/10 | 70.83% | 34/48 | |
| lib/resource/ | 67.64% | 744/1100 | 46.57% | 190/408 | 61.32% | 130/212 | 67.89% | 742/1093 |


Your first service is the most important. We're here for it.
Bulldog Kia
4305 Atlanta Highway,
Athens, GA 30606
We hope you've been enjoying your new ! We're sending this to let you know It’s time for your first service. Keeping up with the factory recommended schedule will keep you running more smoothly on the road for longer.
Call us today to schedule a visit:
(888) 652-8493
Bulldog Kia
888-652-8493
•
www.bulldogkia.com
Your Vehicle Details:
Service Due:


Google Stadia adds 10 new games - the list is impressive - Gizchina.com
by Efe UdinGoogle Stadia adds 10 new games – the list is impressive
4.7 (93.33%) 3 votes
There was so much anticipation to the arrival of Google Stadia. However, when it finally officially announced the starting lineup, there were only 12 games much to the disappointment of fans. Google promised that more games will be available before the end of the year. After the release of the cloud game platform, Stadia’s starting lineup has been ruthlessly ridiculed, and now Google announced that it will increase the number of starting games. The Google Stadia cloud gaming platform will be officially launched tomorrow. Google has decided to change its plan to increase the starting lineup from 12 to 22.
The 10 new games added today are:
- The Attacking Giant 2: The Final Battle
- Mock Farm 2019
- Final Fantasy XV
- Football Manager 2020
- Super Touring Car 2019
- Metro: Escape
- NBA2K20
- Furious 2
- German Headquarters: New Blood
- Stunt Motorcycle: Awakening
Google Stadia is priced at $129 and includes a handle, a Chromecast Ultra, and a 3-month Pro membership. Pro members will also receive free games every month.
Google Stadia initial 12 games
- Assassin’s Creed Odyssey
- Destiny 2: The Collection
- GYLT
- Just Dance 2020
- Kine
- Mortal Kombat 11
- Red Dead Redemption 2
- Rise of the Tomb Raider
- SAMURAI SHODOWN
- Shadow of the Tomb Raider: Definitive Edition
- Thumper
- Tomb Raider: Definitive Edition
What to expect from Google Stadia
Google Stadia is a gaming subscription service that promises to offer a panoply of games for a monthly fee. This fee will be $9.99 and all you need to play is an internet connection of at least 10 Mbps. The great advantage of this service is that you do not have to worry about game processing. This task will be performed on Google’s servers. It means that you will have access to your games either on your PC, smartphone or TV. Unfortunately, only select countries are part of the initial lot where Stadia will be available. Nevertheless, more countries will join with time


Language Documentation
For microscheme version 0.9.2
This document is not intended to be a full Scheme tutorial. It is a specification of the subset of Scheme implemented by microscheme, and the particular workings of the runtime system. This document describes the built-in types and procedures of microscheme, and the mechanism by which runtime exceptions are reported.
Users who are new to Scheme might benefit from following a desktop tutorial such as Teach Yourself Scheme in Fixnum Days first, because programs running on a PC are much easier to debug than ones running on an Arduino.
Usage
microscheme [-aucvrio] [-m model] [-d device] [-w filename] [-t rounds] program[.ms]
Option flags:
-a Assemble (implied by -u) (requires -m)
-u Upload (requires -d)
-c Cleanup (removes intermediate files)
-v Verbose
-r Verify (Uploading takes longer)
-i Allow the same file to be included more than once
-o Disable optimizations
-h Show this help message
Configuration flags:
-m model Specify a model (UNO/MEGA/LEO...)
-d device Specify a physical device
-w files 'Link' with external C or assembly files
-t rounds Specify the maximum number of tree-shaker rounds
Type SystemTop
The basic built-in types are numbers, pairs, vectors, procedures, characters, Booleans and the empty list. Each of these has a corresponding type predicate:
Lists and Strings are built-in compound data types. This means that they are represented as combinations of the basic types.
Lists are represented as chains of pairs, terminating in the empty list. A list is any expression
Strings are represented as vectors of characters. A string is any expression
Fundamental FormsTop
A microscheme program is a sequence of top-level expressions. A top-level expression is a definition or any other expression. Definitions may not appear as subexpressions.
(define var val)
represents a top-level (i.e. global) binding of the name
(define (proc vars …) exprs …)
represents a procedure named
Expressions can take the following fundamental forms. (The keywords that identify fundamental forms are not first-class values. For example,
(lambda (vars …) exprs …)
represents a lambda abstraction, or an anonymous procedure with parameters
(let ((var val) …) exprs …) represents a lambda abstraction.
(if cond conseq else)
represents a control branch. If cond evaluates to
(set! var val) represents an assignment.
(begin exprs …) represents a sequence of expressions.
(and exprs …) evaluates expressions until one evaluates to false.
(or exprs …) evaluates expressions until one evaluates to true.
(free! exprs …) evaluates expressions, recovering heap memory afterwards. (Caution!)
(include “filename”)
is equivalent to the code contained in
(list exprs …)
represents a list whose elements are expressed by
(vector exprs …)
represents a vector whose elements are expressed by
(call-c-func “function” args …) invokes the Foreign Function Interface.
(procedure args …) represents a procedure application.
Primitive Procedures: Top
Primitive procedures are built-in to the language, and have efficient assembly-code implementations. The compiler performs function inlining on calls to these procedures, and they are available as first-class values at runtime.
(eq? x y) (= x y) (> x y) (>= x y) (< x y) (<= x y) (not x) (¬ x) (number? x) (pair? x) (vector? x) (procedure? x) (char? x) (boolean? x) (null? x) (assert x) (error) (stacksize) (heapsize) (pause x) (micropause x) (+ x y) (* x y) (- x y) (div x y) (mod x y) (zero? x) (cons x y) (car x) (cdr x) (set-car! x y) (set-cdr! x y) (vector-length x) (vector-ref x y) (vector-set! x y z) (make-vector x) (digital-state x y) (set-digital-state x y z) (register-state x) (set-register-state x y) (char->number x) (number->char x) (arity x) (apply proc lst) (<< x) (>> x) (| x y) (& x y) (~ x) (^ x y)
Library Procedures:Top
Library Procedures are written in microscheme, and are included automatically by the compiler. (There is no unnecessary memory penalty, because all unused definitions are eliminated by the tree-shaker.) Library Procedures are not inlined by the compiler, and do not have hand-optimized assembly implementations, but they generally represent much richer computations than primitives.
(equal? x y) (list? x) (string? x) (forever x) (for x y z) (for-both x y) (set-ddr x y) (set-pin x y) (output? x) (input? x) (high? x) (low? x) (output x) (input x) (high x) (low x) (toggle x) (serial-init) (serial-write x) (serial-read) (serial-available) (analog-init) (analog-read x) (analog-write x y) (reverse x) (length x) (member x lst) (for-each fnc lst) (fold x y z) (fold-right x y z) (map x y) (map-2 x y z) (zip x y) (all test lst) (for-each-vector x y) (for-each-vector-reverse x y) (all-vector x y) (vector-concat x y) (vector-copy x y) (vector-last x) (sub-vector x a b) (vector-first x y) (vector->list x) (list->vector x)
Memory ManagementTop
Since microscheme has no garbage collector, it is important to program in a memory-conservative style. The most significant part of that process is identifying memory-thirsty constructs, and keeping them out of any loops, so they will be evaluated as few times as possible.
The fundamental forms which allocate new heap space during their evaluation are
; Unlifted version
; (Heap space used every time (loop) is evaluated)
(define (loop)
(for 0 1
(lambda (i)
(print (vector-ref my-data i)))))
; Lifted version
; (No heap space used every time (loop) is evaluated)
(define (print-my-data i)
(print (vector-ref my-data i)))
(define (loop)
(for 0 1 print-my-data))
In the unlifted version of the above code, some heap space is used (allocated) every time
Another way of curtailing memory usage is the (free! exprs …) construct. Using
; free! version
; (No heap space used every time (loop) is evaluated)
(define (loop)
(free!
(for 0 1
(lambda (i)
(print (vector-ref my-data i))))))
Foreign Function InterfaceTop
Microscheme has a robust FFI (Foreign Function Interface) meaning that C code may be invoked directly from (ms) programs. The FFI is invoked using the special form: (call-c-func "function" args …). Functions with up to 10 arguments are supported.
Since Scheme is a dynamically typed language, whereas C is statically typed, typing interactions must be planned and annotated carefully. Generally, type conversion is achieved from the C side of the interface. Any C function invoked by the FFI should take arguments of type
One benefit of the FFI is that C libraries (such as the standard Math library) are effectively available within microscheme. The following example shows how a simple wrapper to the "power" function may be called via the FFI.
// ffitest.c
#include <math.h>
#include "microscheme_types.c"
ms_value mathpow(ms_value x, ms_value y) {
return round(pow(x, y));
}
;; ffitest.ms
;; Define a scheme wrapper around our external function...
(define (pow x y)
(call-c-func "mathpow" x y))
;; We call the external C function, and send the result via Serial
(serial-init 96)
(serial-write (pow 2 5))
The microscheme and C source files are combined during compilation at the 'linking' stage. The simplest way to achieve this is using the '-w filename' command line option when invoking microscheme. To compile the above example, one might run the command: $ microscheme -m UNO -w ffitest.c -a ffitest.ms
.
Microscheme produces properly relocatable assembly files. Therefore, in a more complicated project, one may compile microscheme source files to assembly (by omitting the '-a' flag), then link and upload the program manually.
Interrupts are not used in the microscheme runtime system, but the FFI does enable or re-enable interrupts whenever C code is running. Therefore, C interrupt handlers will generally work, so long as control is periodically passed to some C function.
Runtime ExceptionsTop
Like Scheme, microscheme is strongly, dynamically typed. Exceptions are semantic errors that arise at runtime. Microscheme makes use of the Arduino's built-in LED on digital pin 13 to give on-device indications of these situations. Generally, exceptions are not recoverable, and the device will need to be reset if an exception is raised. While it is possible to use digital pin 13 for general input and output, it is highly recommended to leave it free for exception indication.
| Status | Meaning | Indication |
|---|---|---|
| RUN | Program Running | No Light |
| NVP | Not a Valued Procedure | Single Flashes |
| NAR | Number of ARguments | 2 Flashes |
| NAN | Not A Number | 3 Flashes |
| NAP | Not A Pair | 4 Flashes |
| NAV | Not A Vector | 5 Flashes |
| OOB | Out Of Bounds | 6 Flashes |
| DBZ | Divide By Zero | 7 Flashes |
| ERR | Custom Exception | Continuous Flashes |
| HALT | Program Completed | Continuous Light |
NVP: A procedure application takes the form (proc X1 X2 ... Xn) where proc is an expression. At the time of application, if proc does not evaluate to a (valued) procedure, such as the result of a (lambda …) form, or a variable bound to a procedure, then NVP will be raised.
NAR: A procedure application takes the form (proc X1 X2 ... Xn) where X1 X2 ... Xn are arguments. At the time of application, if proc evaluates to a procedure taking m arguments, but m ≠ n, then NAR will be raised.
NAN: Indicates that an arithmetic operator (+, -, *, /, div, mod) received an argument that did not evaluate to a number.
NAP: Indicates that a pair operator (car, cdr, set-car!, set-cdr!) received an argument that did not evaluate to a pair.
NAV: Indicates that a vector operator (vector-ref, vector-set!) received an argument that did not evaluate to a vector.
OOB: Indicates that a vector operator (vector-ref, vector-set!) received an index that was outside the dimensions of the vector given.
DBZ: Indicates an attempt to divide by zero.
ERR: This exception is raised manually by the programmer. See (error) and (assert expr) in the language guide.


../
Status:
Alert:
Preferred label languages must be unique.
Alert:
Definition languages must be unique.
Save
Delete
Import Dbpedia Labels
Edit nomisma id
Type
Required
Select...
Numismatic Term
numismatic_term
foaf:Person
foaf:Person
id
Required
(
)
Preferred Label
|
Alternate Label
Comment
Coordinates
Definition
Field of Numismatics
Numismatic Start Date
Numismatic End Date
Related Link
Labels and Definitions
Preferred Label
Required
Select...
Required; English label most occur once.
Alternate Label
Required
Select...
Required
Definition
Required
Select...
Required; English label most occur once.
Miscellaneous Fields
Comment
Required
Select...
Required
Related Link
Required, must be URI
Field
Required
Select...
Numismatic Start Date
Content
Must conform to xsd:gYear
Label
Numismatic End Date
Content
Must conform to xsd:gYear
Label
Coordinates
Latitude
Must be decimal integer between -180 and 180
Longitude
Must be decimal integer between -180 and 180
Preferred Label
|
Alternate Label
Comment
Coordinates
Definition
Field of Numismatics
Numismatic Start Date
Numismatic End Date
Related Link
Delete
Do you wish to delete this id from nomisma? It can only be restored from GitHub.
Yes
No


§431:10A-207 Coverage for specific services. Every person insured under a group or blanket disability insurance policy shall be entitled to the reimbursements and coverages specified in section 431:10A-116. [L 1987, c 347, pt of §2; am L 2002, c 155, §63]


Hello, I am Vinnie
Thank you for coming to my site.
About Me
I am taking this course so that I can move into the tech space. I like fishing, the Grateful Dead, and LOVE hockey.God, grant me the serenity to accept the things I cannot change,
the courage to change the things I can,
and the wisdom to know the difference


Inc. City Pop →
Negative → Positive 2000-13 Pop. Growth
For this latest project, I wanted to clean up my zoom functioning a little. To do that, I thought the easiest way drawing features by level. There are a few ways to do that, and the longest part of this project was figuring out a way to do it efficiently.
To me, the most obvious place to start was the zoom function. If you need to tell d3 to redraw features on your map, you need to find a way for your code to track a variable to act upon. In this case, since I wanted to draw based on zoom level, the only place where that variable is accessible the zoom function itself. My original method produced a very large amount of code, and worked in sequence like this: 1) detect zoom level, 2) clear all city features, 3) redraw all city features per zoom level with brand new code.
It worked, but there were two related issues that made the solution not optimal. The first was that the code was enourmously long. As I rewrote all my code with every zoom level, it balooned out to almost 800 lines before the whole page was gone, and about 80% of my javascript was redundant. The second issue, and the reason for the first was that my code was not dynamic. To do that, you need to use the filter function. I've marked this section of the code with commentary explaining a little bit how it works.


Official Learn@Home Web Site: Feedback Page
If you would like to send your comments regarding Learn@Home website improvements, corrections, etc., please send an email.
"Feedback" messages pertaining to matters other than this Website cannot be processed. "Feedback" is a mechanism for you to critique this Website only. Feedback messages are only read by members of the Learn@Home Website development team. Thank you for your understanding.
Please direct your questions and comments concerning other organizations within the Learn@Home site by contacting these organizations directly.
Thank you for your time and your assistance in improving our website.
Learn@Home | Feedback | Christian Community Network (TM)


Documentation
Properties
| Property / Type | Default | Description |
|---|---|---|
|
{{ property.type | safe }} |
{{ property.default | markdown | safe }} | {{ property.description | markdown | safe }} |
Methods
| Method | Parameters | Description |
|---|---|---|
{% if method.parameters %}
|
{{ method.description | markdown | safe }} |
Events
| Name | Description |
|---|---|
|
{{ event.type | safe }} |
{{ event.description | markdown | safe }} |
CSS Properties
| Name | Description | Default |
|---|---|---|
{{ prop.name }}
|
{{ prop.description | markdown | safe }} | {{ prop.default | markdown | safe }} |
CSS Parts
| Name | Description |
|---|---|
{{ part.name }}
|
{{ part.description | markdown | safe }} |
Position Object
You can use a JavaScript object to represent a board position.
The object property names must be algebraic squares (ie: e4, b2, c6, etc) and the values must be a valid piece codes (ie: wP, bK, wQ, etc).
See an example of using an object to represent a position here.
chessboard-element.js exports the objToFen
function
to help convert between Position Objects and FEN Strings.
FEN String
You can use Forsyth-Edwards Notation (FEN) to represent a board position.
Note that FEN notation captures more information than chessboard-element requires, like who's move it is and whether or not castling is allowed. This information will be ignored; only the position information is used.
See an example of using a FEN String to represent a position here and here.
chessboard-element.js exports the fenToObj
function to help convert a FEN String to a
Position Object.


--- title: Squishing a big bad bug author: Zhian N. Kamvar date: '2017-09-17' slug: squish categories: - R - science tags: - poppr - bruvo - algorithms image: preview_only: false caption: "git diff showing test values changed" ---
As I was preparing to push a new version of poppr to CRAN , this tweet (appropriately) came across my feed:
{{% tweet<PHONE_NUMBER>24179968 %}}The reason I was updating poppr was to fix a mistake I had made a few years ago. In the realm of scientific mistakes on a scale of hapliod to arsenic, I would say this probably falls somewhere on the lower end, but still significant enough that I felt I should blog about it ¯\_(ツ)_/¯.
Mistakes in scientific software happen all the time, which is why we have automated testing. Usually, these kind of bugs are things like simple logical errors that can easily be fixed by changing a single character. Unfortunately, the issue I was fixing was not so easily fixed. In short, in my assumptions about how to calculate Bruvo’s genetic distance for polyploid genotypes with multiple ambiguous alleles was incorrect (a detailed explanation of how Bruvo’s distance works can be found below for those interested). Without going into too much detail, at the heart of the error, I had fallen for a common statistical misconception of independent probabilities. Consider the following question:
If you have two fair coins and flip both of them, what is the most likely scenario?
- both are heads (🐦 , 🐦 )
- both are tails (🦅 , 🦅 )
- one heads and one tails (🐦 , 🦅 )
- all are equally likely (🐦 , 🐦 ) == (🐦 , 🦅 ) == (🦅 , 🦅 )
When I first saw this question, my immediate answer was d, but if I had paid attention in statistics class, or even remembered what the dots on my Settlers of Catan board meant, I would have answered c.
Embarassingly, I had assumed that the possible outcomes were unordered (the number of which is dictated by the multiset coefficient),
| outcome | probability |
|---|---|
| (🐦 , 🐦 ) | p |
| (🐦 , 🦅 ) | p |
| (🦅 , 🦅 ) | p |
as opposed to ordered (of which there is an exponential number of possible outcomes).
| outcome | probability |
|---|---|
| (🐦 , 🐦 ) | p |
| (🐦 , 🦅 ) | 2p |
| (🦅 , 🦅 ) | p |
Of course, both (🐦 , 🦅 ) and (🦅 , 🐦 ) can occur with equal frequency. You can see this with a little simulation:
# Function to flip a coin N times
flip <- function(n) sample(c(1, 0), n, replace = TRUE)
# Flipping two coins 1000 times each
n <- 1000
set.seed(2017-09-23)
trials <- replicate(2, flip(n))
colnames(trials) <- c("coin 1", "coin 2")
rownames(trials) <- paste("trial", seq(n))
head(trials)
## coin 1 coin 2
## trial 1 0 1
## trial 2 1 0
## trial 3 1 0
## trial 4 1 1
## trial 5 1 1
## trial 6 1 0
res <- table(rowSums(trials))
names(res) <- c("TT", "HT", "HH")
barplot(res, col = "violet")
The process to calculate Bruvo’s distance for polyploids with multiple ambiguous alleles involved taking the average value of the distance over all possible genotypes. The problem with my assumption of all possible unordered genotypes was that this fundamentally changed the structure of how I iterated through the possibilities, which meant that I would either have to completely re-write the machinery 😭 or find a clever way around it. 🤔
I chose the latter path 😤
It turns out that you can calculate the number of possible combinations of a given set of items using the multinomial coefficient:
\[ \frac{n!}{k_1!k_2!...k_m!} \]
where n is the number of items in your set and each k represents the number of each unique item. Since Bruvo’s distance doesn’t take order into account when it calculates the distance, it was possible to multiply the distance at a particular allele combination with the multinomial coefficient and use the sum of the multinomial coefficients as the denominator to get the average distance1. In terms of the coin flips above, we can see how it would work:
| Replaced alleles | distance | coefficient |
|---|---|---|
| (🐦 , 🐦 ) | a | 1 |
| (🐦 , 🦅 ) | b | 2 |
| (🦅 , 🦅 ) | c | 1 |
The mean without the coefficient would be (a*b*c/3) whereas the mean with the coefficient would be (a*2b*c/4).
Because I didn’t have to substantially change the architecture of the calculation, I was able to give poppr users the ability to compare their data by adding a switch in the internal functions that would turn the coefficient calculation off if desired. This switch is controlled by the global option: options(old.bruvo.model = FALSE)
. If it’s set to TRUE
, calculation of Bruvo’s distance will revert to the old method of unordered alleles. By doing this, I was able to avoid adding extra potentially confusing arguments to the functions that use Bruvo’s distance while still providing backwards compatibility. 👍
Mistakes in scientific software are commonplace. The very first bug discovered in poppr was discovered in 2014, there have been many more since, and there will be more as time goes on. When I find a mistake in poppr, I do what I would hope any other developer would do: I fix the mistake 🐛🔨, make a note that I fixed it 📝, and write a test to make sure the mistake never happens again 💻 ✅. If I make a mistake, I own it. There is no valor in covering it up, making excuses for it, or even fixing it and pretending it never happened.
Unfortunately, in this case, it took me several months from finding the bug to actually fixing it. This is due, in part, to the fact that I’m now only working on poppr in my spare time. It was also in part for the fact that it took me so long to even figure out the right terms to google for the multinomial coefficient. In terms of actual coding, I spent a weekend re-learning C and getting everything implemented.
At the end of the day, I figure that if I am open and transparent about how I fix bugs in poppr, then my users will hopefully have trust in me and also be comfortable in brining up any unexpected results they find.
Bruvo’s distance is used for microsatellite markers assuming a stepwise mutation model. Between any two alleles the distance, \(d\), is
\[ d = 1 - 2^{-|x|} \]
where \(x\) is the number of repeat units between the alleles. For example, if you have two alleles, 420 and 428 with a repeat motif of ACAT, then they would represent (ACAT)\(_{105}\) and (ACAT)\(_{107}\), respectively, which would result in a distance of 0.75.
This gets more complicated when you increase the ploidy, because then you must find the minimum average distance among all the alleles. In practice, this involves creating a matrix of Bruvo’s distance for all alleles. So, for example, if you had the following alleles in two tetraploid samples:
| genotype 1: | 20 | 23 | 24 | 30 |
| genotype 2: | 20 | 24 | 26 | 43 |
The resulting genotype matrix would look like this:
| 20 | 23 | 24 | 30 | |
|---|---|---|---|---|
| 20 | 0.0000 | 0.875 | 0.9375 | 0.9990 |
| 24 | 0.9375 | 0.500 | 0.0000 | 0.9844 |
| 26 | 0.9844 | 0.875 | 0.7500 | 0.9375 |
| 43 | 1.0000 | 1.000 | 1.0000 | 0.9999 |
If you take the average of the diagonal, you end up with 0.5625. However, if we switch columns 2 and 3 in the above matrix, we find that the average is 0.4687. If we were to try all possible combinations of rearranging these columns and calculating the mean of the diagonal, we find that this is the minimum value. Because of this, order of alleles does not matter when calculating Bruvo’s distance. This fact becomes important in just a little bit.
Of course, this is assuming that all alleles are known, but the problem with polyploids is that it is often difficult to accurately score genotypes that are only partially heterozygotic, so Bruvo came up with a solution where all possible combinations of the observed alleles are used to fill the missing genotypes as demonstrated in figure 1 of the publication:
This figure is a bit confusing to look at, but what it’s demonstrating is that if you weren’t able to score that “30” allele, you would be comparing three alleles against four. To compensate, you could do one of four things:
In calculating 1, 2, and 4, you must consider all possible combinations to fill the missing allele. Luckily, when you only have one allele missing, all possible combinations amounts to the number of alleles observed. However, when you have more than one ambiguous allelic state, the question becomes, do you consider all possible ordered combinations of alleles, of which there are nk where n is the number of observed alleles and k, the number of ambiguous alleles or all possible unordered combinations, of which there are \({n+k-1}\choose{k}\) combinations.
For example, if you were comparing two genotypes:
| genotype 1: | 🤷 | 🤷 | 23 | 24 |
| genotype 2: | 20 | 24 | 26 | 43 |
you would need some way to replace the two ambiguous alleles (🤷🏻♀) from genotype 1. If we assume that the extra alleles in genotype 2 are due to a recent genome expansion event (genome addition model), we would replace the ambiguous alleles with the observed alleles in genotype 1. Here are all the unordered combinations:
| genotype 1: | 23 | 23 | 23 | 24 |
| genotype 2: | 20 | 24 | 26 | 43 |
| genotype 1: | 23 | 24 | 23 | 24 |
| genotype 2: | 20 | 24 | 26 | 43 |
| genotype 1: | 24 | 24 | 23 | 24 |
| genotype 2: | 20 | 24 | 26 | 43 |
If we take the average of the three, we get a Bruvo’s distance of 0.6667, but if we remember that there are two ordered combinations for the center genotype, we average over four distances to get 0.6641.
For those who like details, here’s the calculation of the multinomial coefficient and here’s how it was implemented in the genome addition model.↩


Work at the best company in the country, the only company offering tenure and 2 months vacation time off each year, paternity leave, maternity leave, with a growing nationwide healthcare plan as we add more cities!
Work at the best company in the country, the only company offering tenure and 2 months vacation time off each year, paternity leave, maternity leave, with a growing nationwide healthcare plan as we add more cities!


#include <pas-co2-platf-ino.hpp>
Public Attributes | |
| TwoWire * | i2c |
| HardwareSerial * | uart |
| uint8_t | power3V3 |
| uint8_t | power12V |
| uint8_t | pwm |
| uint8_t | pwmSelect |
| uint8_t | protoSelect |
| uint8_t | inte |
| TwoWire* PlatformIno_t::i2c |
I2C interface
| HardwareSerial* PlatformIno_t::uart |
UART interface
| uint8_t PlatformIno_t::power3V3 |
Power supply VDD 3V3 pin
| uint8_t PlatformIno_t::power12V |
Power supply VDD 12V pin
| uint8_t PlatformIno_t::pwm |
PWM output pin
| uint8_t PlatformIno_t::pwmSelect |
PWM disable pin
| uint8_t PlatformIno_t::protoSelect |
Serial interface select pin
| uint8_t PlatformIno_t::inte |
Interrupt pin


| 004:165 Khan | : |
Messengers as bearers of good news as well as of warning in order that mankind should have no plea against Allah after the Messengers. And Allah is Ever All-Powerful, All-Wise. |
| 004:165 Maulana | : |
Messengers, bearers of good news and warners, so that the people may have no plea against Allah after the (coming of) messengers. And Allah is ever Mighty, Wise. |
| 004:165 Pickthal | : |
Messengers of good cheer and of warning, in order that mankind might have no argument against Allah after the messengers. Allah was ever Mighty, Wise. |
| 004:165 Rashad | : |
Messengers to deliver good news, as well as warnings. Thus, the people will have no excuse when they face GOD, after all these messengers have come to them. GOD is Almighty, Most Wise. |
| 004:165 Sarwar | : |
The Messengers were sent to give people the glad news (of God's mercy) and warn them (of His punishment) so that the human being would not have any objections against God, after the coming of the Messengers, (that they did not have any knowledge of His mercy and punishment). God is Majestic and All-wise. |
| 004:165 Shakir | : |
(We sent) messengers as the givers of good news and as warners, so that people should not have a plea against Allah after the (coming of) messengers; and Allah is Mighty, Wise. |
| 004:165 Sherali | : |
Messengers, bearers of glad tidings and Warners, so that people may have no plea against ALLAH after the coming of Messengers. And ALLAH is Mighty, Wise. |
| 004:165 Yusufali | : |
Messengers who gave good news as well as warning, that mankind, after (the coming) of the messengers, should have no plea against Allah: For Allah is Exalted in Power, Wise. |
Concepts/Themes Covered: أركان الإسلام > (محمد (صلى الله عليه وسلم > الوحي Pillars of Islam> The Blessed Muhammad(PBUH)> The Revelation
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


You see the whole theruin, you are it and it is you and everything blends together.
You hear the distant sound of chatter but the voices fade away into the vastness.
For all your size you long to know what they are saying or who they are.
Close your eyes


Albert and Bernard have just become friends with Cheryl, and they want to know when her birthday is. Cheryl gives them a list of 10 possible dates:
| May | 9 | 10 | ||||
|---|---|---|---|---|---|---|
| June | 8 | 11 | 12 | |||
| July | 11 | 12 | 13 | |||
| August | 8 | 10 |
Cheryl then tells Albert and Bernard separately the month and the day of her birthday respectively.
Albert: I don’t know when Cheryl’s birthday is, but I know that
Bernard doesn’t know too.
Bernard: At first I didn’t know when Cheryl’s birthday is, but I
know now.
Albert: Then I also know when Cheryl’s birthday is.
Let birthmonth be the month of Cheryl’s birthday (as a number from 1–12) and birthday be the day of Cheryl’s birthday.
| 30 | |||||||||
| 40 | 4 | 33 | 22 | 16 | |||||
| 35 | 3 | 32 | |||||||
| 17 | 18 | ||||||||
| 11 | |||||||||
| 14 | 31 | ||||||||
| 21 | 13 | ||||||||
| 15 | |||||||||
| 12 | 20 | 34 | |||||||
| 26 | 9 | 23 |
Cheryl picks a cell of the above 10-by-10 table containing a number. Cheryl tells which row the cell is in to Albert and which column the cell is in to Bernard. The above table is known to both Albert and Bernard.
Albert: I don’t know the location of the cell.
Bernard: I don’t know the location of the cell.
Albert: I don’t know the location of the cell.
Bernard: I don’t know the location of the cell.
Albert: We could continue this conversation indefinitely (by repeatedly
saying “I don’t know the location of the cell”) without
either of us learning the location of the cell.
Bernard: I know the location of the cell.
Let cell be the number written in Cheryl’s cell.
Denise is visiting town. She chooses 3 numbers between 1 and 6 inclusive and calls them d1, d2, and d3. She gives d2 + d3 to Albert, d1 + d3 to Bernard, and d1 + d2 to Cheryl.
Cheryl: I don’t know if there are exactly two 1s among Denise’s
three numbers.
Bernard: I don’t know if there are exactly zero 1s among
Denise’s three numbers.
Cheryl: I don’t know if there are exactly two 6s among Denise’s
three numbers.
Albert: I don’t know if there are exactly zero 6s among Denise’s
three numbers.
Bernard: I don’t know if there is exactly one 1 among Denise’s
three numbers.
Albert: I don’t know if there is exactly one 6 among Denise’s
three numbers.
Bernard: The number I was given is even.
Albert: The number I was given is prime.
Bernard: I now know Denise’s three numbers.
Cheryl gives Bernard a number between 1 and 7, and then gives Albert a proper divisor of Bernard’s number.
Albert: Bernard doesn’t know my number.
Albert: Bernard still doesn’t know my number.
Bernard: I now know Albert’s number.
Let div1 and div2 be Albert’s number and Bernard’s number respectively.
Cheryl draws the above graph (unknown to Albert and Bernard) and picks an edge from it. Cheryl gives this drawing and one of the endpoints of this edge to Albert. Cheryl then arbitrarily rearranges the vertices of this graph (producing an isomorphic graph). Cheryl gives this new drawing to Bernard, along with the identity of the other endpoint of her edge.
Albert: I don’t know if there’s any conversation we can have
where I will learn which edge is Cheryl’s edge.
Bernard: I don’t know if there’s any conversation we can have
where I will learn which edge is Cheryl’s edge.
Albert: I know Cheryl’s edge.
Bernard: I know Cheryl’s edge.
Let edges be the number of edges in the graph that share exactly one endpoint with Cheryl’s edge.
Albert and Bernard are solving a 5-by-5 nonogram. Albert has the clues for the 5 rows and Bernard has the clues for the 5 columns.
Albert: I don’t know whether the first two columns of the grid have any
filled-in squares.
Bernard: I already knew you didn’t know that. One of my clues is a 5. I
don’t know if the filled-in squares form a single orthogonally-connected
region.
Albert: I don’t know if you know whether the center of the grid is filled
in, but I know whether the center of the grid is filled in.
Bernard: I did not know whether the center of the grid was filled in, but I
do now. In addition, I now know that the filled-in squares form a single
orthogonally-connected region. I don’t know if you know the shape formed
by this region (where two shapes are the same if they can be translated and
rotated to match).
Albert: I do not. In particular, I do not know whether the cell in row 4
column 2 is filled in (although I do know that all four corners of the grid
are empty).
Bernard: Until you said that, I did not know whether the cell in row 4
column 2 was filled in, but now I know the solution to the nonogram.
Albert: I too now know the solution to this nonogram.
Let nonogram be the number depicted in the solution to this nonogram.
Cheryl picks her favorite U.S. state. Cheryl gives the first letter of the state abbrevation to Albert and the second letter of the state abbreviation to Bernard.
Albert: I don’t know the state.
Bernard: I don’t know the state.
Albert: I don’t know the state.
Bernard: I already knew that.
Albert: Well I already knew that you already knew that.
Bernard: I still don’t know what the state is.
Albert: I also don’t know what the state is.
Bernard: Again, I still don’t know the state.
Albert: Well, I don’t even know how many states you still think are
possibly the correct state.
Bernard: Well, I know how many possibilities you have narrowed down the
state to.
Albert: I now know the state. By the way, the state does not border
Canada.
Bernard: Thanks. I also now know the state.
Let state be the state abbreviation of Cheryl’s favorite state.
Cheryl picks a set of distinct positive integers with at least two elements, tells Albert this set’s sum, and tells Bernard this set’s product.
Albert: I don’t know whether you know my number.
Bernard: I know your number, and now I know you know my number too.
Albert: I do. Isn’t it convenient that both of our numbers are less
than 4,000,000,000,000,000,000?
Let sum be Albert’s number and product be Bernard’s number.
Cheryl gives Albert and Bernard numbers between 1 and 11 (inclusive) such that Albert’s number is either the same as Bernard’s number or one greater than Bernard’s number.
Albert: I know whether you know my number.
Bernard: I know whether you know my number.
Albert: I know whether you know my number.
Bernard: I know whether you know whether I know whether you know whether I
know whether you know whether I know whether you know whether I know whether
you know whether I know whether you know whether I know whether you know my
number.
Albert: I don’t know your number.
Let whether be Albert’s number.
Cheryl picks (whisper1, whisper2) from the set {(1, 1), (1, 2), (1, 3), (2, 2), (2, 3), (2, 4), (3, 1), (3, 5)} (this set is known to both Albert and Bernard). Cheryl gives whisper1 to Albert and whisper2 to Bernard.
Cheryl then whispers something to Albert; Bernard observes this but does not hear what Cheryl whispered.
Albert: I don’t know your number.
Bernard: Then you don’t know whether my number is greater than your
number.
Albert: I now know your number.
The answer to this puzzle is six letters long. Cheryl gives Albert the first 3 letters of the answer and Bernard the last 3 letters of the answer. Albert and Bernard are not aware they are in a puzzle hunt, so they believe the answer can be any string of six letters (but as is customary, the answer is indeed an English word or phrase).
Albert: I don’t know if the answer contains exactly
product vowels.
Bernard: I don’t know if the answer contains exactly
product vowels.
Albert: I don’t know if the answer contains
state as a substring.
Bernard: I don’t know if the answer contains
state as a substring.
Albert: I don’t know if the sum of the
whisper1th and
sumth letters (where A = 1, B = 2, …) is
at least birthmonth.
Bernard: I don’t know if the sum of the
whisper1th and
sumth letters (where A = 1, B = 2, …) is
at least birthday.
Albert: I don’t know if the scrabble score of the answer is equal to
edges.
Bernard: I don’t know if the scrabble score of the answer is equal to
whether.
Albert: I don’t know if the set of letters in the answer contains
nonogram consecutive letters.
Bernard: I don’t know if the set of letters in the answer contains
nonogram consecutive letters.
Albert: I don’t know if the whisper2th letter, the
div1th letter, and the
div2th letter of the answer form a
common English word when concatenated.
Bernard: I don’t know if the d1th letter, the
d2th letter, and the
d3th letter of the answer form a
common English word when concatenated.
Albert: I don’t know if the product of all the letters (where A = 1, B = 2,
…) in the answer is divisible by
cell.
Cheryl: Oh, I forgot to tell you this earlier, but all the letters in the
answer are distinct.
Bernard: I know the answer to this puzzle.
Albert: I know the answer to this puzzle.


Functions for time operations
Tests whether the date is between from and to. Returns true then otherwise false. Time, from and to are Time objects as retrieved from Time.now or Time.local(2013,“apr”,13,10,50,0). Alternatively time strings can be provided in the form of “2013-04-13”.
# File lib/syctime/time_util.rb, line 53 def date_between?(date, from, to) date = date.strftime("%Y-%m-%d") if date.class == Time || date.class == Date from = from.strftime("%Y-%m-%d") if from.class == Time || from.class == Date to = to.strftime("%Y-%m-%d") if to.class == Time || to.class == Date time_pattern = %r\d{4}-\d{2}-\d{2}/ raise ArgumentError if date.scan(time_pattern).empty? raise ArgumentError if from.scan(time_pattern).empty? raise ArgumentError if to.scan(time_pattern).empty? date >= from && date <= to end
Extracts the time out of a time string. Accepts ‘today’, ‘tomorrow’, ‘yesterday’ or a date in the form ‘YYYY-MM-DD’. Returns the date contained in the time_string or if time = true in a Time object
# File lib/syctime/time_util.rb, line 93 def extract_time(time_string,time=false) if time_string.match(%r\d{4}-\d{2}-\d{2}/) date = time_string date = Time.xmlschema("#{time_string}T00:00:00") if time else timeleap = SycTimeleap::TimeLeap.new begin date = timeleap.send(time_string) date = date.to_s unless time rescue NoMethodError help_now! "Arguments may be 'time distances', YYYY-MM-DD or <RETURN>\n"+ "\ntime distances are:\n"+ "* yesterday|today|tomorrow\n"+ "* next|previous_monday|tuesday|...|sunday\n"+ "* in|back_10_days|weeks|months|years\n"+ "* monday|tuesday|...|sunday_in|back_1_day|week|month|year\n"+ "Short forms are also possible:\n"+ "* y|tod|tom\n"+ "* n|pmo|tu|we|th|fr|sa|su\n"+ "* i|b10d|w|m|y\n"+ "* mo|tu|we|th|fr|sa|sui|b1d|w|m|y" end end date end
Translates seconds to years, months, weeks, days, hours, minutes and seconds The return value is an array [seconds,…,years]
# File lib/syctime/time_util.rb, line 9 def seconds_to_time(seconds) seconds = seconds.round duration = [] duration << seconds % 60 # seconds duration << seconds / 60 % 60 # minutes duration << seconds / 60 / 60 % 24 # hours duration << seconds / 60 / 60 / 24 % 7 # days duration << seconds / 60 / 60 / 24 / 7 % 4 # weeks duration << seconds / 60 / 60 / 24 / 7 / 4 % 12 # months duration << seconds / 60 / 60 / 24 / 7 / 4 / 12 # years end
Creates a time string separating hours, minutes and seconds with the provided separator like 12:50:33
# File lib/syctime/time_util.rb, line 35 def separated_time_string(seconds, separator) secs = seconds % 60 mins = seconds / 60 % 60 hours = seconds / 60 / 60 time_string = sprintf("%02d#{separator}%02d#{separator}%02d", hours, mins, secs) end
Translates seconds into a time string like 1 year 2 weeks 5 days 10 minutes.
# File lib/syctime/time_util.rb, line 22 def string_for_seconds(seconds) time = seconds_to_time(seconds) time_name = ['year','month','week','day','hour','minute','second'] time_string = "" time.reverse.each_with_index do |part,index| time_string << part.to_s + ' ' + time_name[index] + ' ' if part == 1 time_string << part.to_s + ' ' + time_name[index] + 's ' if part > 1 end time_string end
Checks whether the time is between from and to. Returns true then otherwise false. time, from and to have to be Time objects.
# File lib/syctime/time_util.rb, line 66 def time_between?(time, from, to) time >= from && time <= to end
Translates a time in the ISO 8601 schema to a time object.
2013-04-09 21:45 -200
# File lib/syctime/time_util.rb, line 44 def time_for_string(time) time = time.scan(%r\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/)[0].sub(' ','T') Time.xmlschema(time) end
Checks whether the date is a valid date in the form of yyyy-mm-dd. If it’s no valid date false is returned otherwise true
# File lib/syctime/time_util.rb, line 72 def valid_date?(date_string) if date_string.match(%r\d{4}-\d{2}-\d{2}/) begin Date.parse(date_string) return true rescue ArgumentError return false end else begin SycTimeleap::TimeLeap.new.send(date_string) return true rescue return false end end end


she / her
Notice: This site is currently under development.
Personal portfolio website. You're looking at it!
Built using HTML/CSS/JS.
Static site generator for this site. Prototype for developing static site generator package. Check the repository for details on how to use the generator.
Built using Jinja2.
Personal blog, made for fun. Built using Django.
Features


Micah Parsons Isn’t Downplaying Penn State’s Game vs. Ohio State
by Andrew McCartyAnother weekend of college football is in the books. There will be plenty of change in the polls this week after Iowa took down Minnesota, Georgia escaped Auburn and Saturday night’s Oklahoma-Baylor game concludes.
Week 13 will bring a few of the biggest games of the season. Arguably the best game of the weekend will kick off from Columbus.
No. 1 Ohio State hosts No. 9 Penn State in a battle of Big Ten powers.
One Nittany Lions star knows Saturday’s game is the most important game of the season. Star linebacker Micah Parsons called it the “Big Ten championship” – with no respect to the Big Ten West.
Here’s what he said, via Audrey Snyder of the Athletic:
“I told people already, this is the Big Ten championship right here, next Saturday. This is gonna make or break either one of our seasons, you know, this is it right now.”
He has a point. Whoever wins Saturday’s game will likely be the favorite to win the Big Ten title game.
However, Ohio State still has Michigan to take care of, while Penn State faces off against Rutgers in the final regular season game.
Penn State and Ohio State kick off at 12:00 p.m. ET. The game will be broadcast on FOX.