Identities
Unique Identities
Not just valuable identites, but all kinds which establish unique identifiers for transactions, whole blockchains, protocols, indidivual people, or businesses, or agencies, etc. All of these things have a need to uniquely identify themselves vs many thousands to billions or even trillions of similar things. Identities need to be unique for computers to be certain they are dealing with the same thing, and they need to be recognizable to human users as well. These same basic needs are shared among all things that need unique identities, so it makes sense*to me, at least
for all unique identifiers to share the same basic low level structure - only diverging in implementation when getting to the levels*especially human user facing information
where the different kinds of entities have different needs.
Collisions
The first requirement for unique identifiers is to avoid collisions. Just like you don't want any two addresses to be identical*because if two houses have the same address, where will mail for that address be delivered?
no two identities should ever be identical. A cryptographic hash can compress a long form identity with human-friendly elements like images, sounds, and any amount of text into a relatively short string of ones and zeroes that are for all intents and purposes random, but still verifiable as the hash of the long form data. These short hashes can be very useful for computer storage and retrieval of items using their hash as an index, but by design collisions should be vanishingly rare.
Addressing
Many collision avoidance schemes break down the world, or universe, into divisions like: country, state, city, street and number - so a relatively short number can uniquely identify a house on a street, the street name itself is (hopefully) unique within the city, etc. In a chaotic environment like millions or billions of independently run blockchains, agreement on addressing divisions can be expensive to achieve. Best to avoid divisions in establishing the lowest level unique identifiers, if at all possible.
In a randomly selected group of people, their birthdays are - more or less - randomly distributed. But, you don't need a very large group of people before it is statistically a better chance for two of them to have the same birthday than not. The first pair has a 365.24:1 chance of a collision, but add a third person to the group and now there are two more such chances for collisions. The fourth person represents three more chances for a collision and so on: N*(N-1) / 2. Of course, by the time you reach 367 people in the group, there is 100% certainty that at least two share a birthday, but the nature of the problem is such that you reach 50% chance of a collision by the time there are 23 people in the group, and 99% chance of a collision by the time there are 60.
Collision Avoidance
Fortunately, while the probability of collision grows with the square of the number items in a group, the number space grows exponentially with the number of digits. So, a 256 bit hash, instead of ~365 possible numbers, represents 10^77 possible numbers. If we wish to be 99.9999999999% certain*one chance in a trillion
of no collisions, that 256 bit number space can hold 4.8×10^32 randomly selected 256 bit identifiers. A 128 bit space can hold 2.6×10^13 identifiers with the same low chance of collision.
To put this in perspective, if 100 billion (10^11) entities are transacting with each other once a second, each, generating 100 billion hashes per second, then the 128 bit hash will have a one in a trillion chance of collision in just over four minutes, however, the 256 bit hash will take 152 billion years to reach the same probability of collision. For purposes of human-use blockchains recording human scale events, a 256 bit hash*using a competent cryptographic algorithm
alone is sufficient to banish all reasonable chances of a random hash collision. For slow moving events, like blockchain identities, 128 bits is more than enough and might be preferred to "keep it short" for faster processing, lower storage costs, etc.
Human Readability
While a 256 bit hash by itself may be all that a computer needs to uniquely identify any element of any blockchain made by humans in the next million years, the random string of bits is not very debug-friendly. The hash_o on the right depicts a somewhat more human-friendly form of identity. It includes a timestamp of when the hash was calculated, useful in all kinds of auditing and debugging. It includes a notation of the algorithm used to compute the hash, and it contains the hash itself - which is actually a hash of the hashedOb_o in binary form, with the hashInfo_o appended. In some cases, like protocol identifiers, a very short human readable string is also included in the hashInfo_o, making it easier to identify and refer to the item - although collisions in those strings are probably and the actual hash in the data_b is the "final word" on unique identification.
Developers are Human too
Wherever a human might possibly be "digging in the datastream" to debug or otherwise work with identifiers, use of the full hash_o instead of just the data_b is preferred to support that ease and speed of human understanding of the identifiers.
User side readability
The hashedOb_o would contain "long form" information for identifiers like personal identifiers, blockchain identifiers, etc. Even transactions may include human readable notes in the hashedOb_o. This is the information that makes its way to the user interface in the form of icons, photos, labels, even entire documents. The hash_o data_b is a guarantee that the hashedOb_o contents are uncorrupted - it serves as a strong checksum of all the data. separableItems are, as the name implies, separable. You don't have to have the item itself to check if the data_b hash of the hashedOb_o is correct, but if you do have the item you can verify that it is uncorrupted by checking its corresponding hash in the separableItemsHashes.
Universal Applicability
This identity scheme should be re-used wherever unique identifiers are needed, or wanted. Protocols can define nested structures in which multiple unique ids are embedded multiple layers deep inside objects which are themselves uniquely identified. Whenever an algorithm needs to find a unique item, it can look it up by its unique hash, regardless of what type of item it is. As such, if the hash_o hashInfo_o includes the type identifier of the object being hashed, high level handlers can easily hand-off items to their appropriate lower level handlers just by looking at the type identifier, and ignore items with unknown type identifiers. Or, the high level handlers could just look at the wrapper that the hashedOb and hash come in... maybe better that way, actually.
Assign Onward
25 December 2021
MIT License
Copyright (c) 2021 Assign Onward
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
 IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


Calendar
-
= WAB monthly meetings= WAB (semi-)public events
4th WAB participants
- Anna Raimondo
- Bruno De Wachter
- Buratinas Captains
- Chloé Schuiten & Clément Thiry
- Christian Hansen
- Davide Tidoni
- Eleni Kamma (Jubilee)
- Francesca Chiacchio / Il Palinsesto
- hans Andreas R.
- Isabel Burr Raty
- Kasper Demeulemeester
- Laurent Delom
- Marialena Marouda / The Oceanographies Institute
- oracle (Caroline Daish, Justine Maxelon, Michel Yang)
- Pacôme Béru / Atelier Cartographique
- Pierre-Philippe Hofmann
- Shervin Kianersi Haghighi
- Steven Jouwersma
- Various Artists
Organisation
- WAB is a project by nadine vzw.
- -
4th WAB stretches throughout the year.
Public activities include lectures, movie screenings, book launches, collective walks, events in the public space and monthly meetings with the participating artists involved connecting to the selected themes.
On this website you find a list of all the activities organized in 2020 and 2021 as well as traces from the meetings and lectures (text, image, video, audio).- -
- contact<EMAIL_ADDRESS>- WAB MEETING POINT : Nieuwbrug 3 Rue du Pont neuf, 1000 Brussels
- -
- 4th WAB is supported by Vlaamse Gemeenschap, Vlaamse Gemeenschapscommissie (VGC), Mobiel Brussel.
- graphic design by Überknackig
- web by a.-c.
WAB Books
1st WABook
180p, offset laser and riso prints, hand bound, 2016, 15€ : order it here.
2nd WABook
offset laser and riso prints, hand bound, 2018, 15€ : order it here.


Home
About
Login
Logout
Health Information
Favourite List
Contact Us
Register
API Result
Title Header button
GPS corddinate button
Movie button
Game button
Gov API
Health API
Weather API
Drug Info API


| ArcBlock |
ABT Network |
ABT DID Method |
did:abt: |
PROVISIONAL |
| Christopher Allen, Ryan Grant, Kim Hamilton Duffy |
Bitcoin |
BTCR DID Method |
did:btcr: |
PROVISIONAL |
| Jude Nelson |
Bitcoin |
Blockstack DID Method |
did:stack: |
PROVISIONAL |
| Markus Sabadello, Fabian Vogelsteller, Peter Kolarov |
Ethereum |
erc725 DID Method |
did:erc725: |
PROVISIONAL |
| W3C Credentials Community Group |
DID Specification |
DID Specification |
did:example: |
PROVISIONAL |
| TranSendX |
IPFS |
IPID DID method |
did:ipid: |
PROVISIONAL |
| lifeID Foundation |
RChain |
lifeID DID Method |
did:life: |
PROVISIONAL |
| Mike Lodder |
Sovrin |
Sovrin DID Method |
did:sov: |
PROVISIONAL |
| uPort |
Ethereum |
|
did:uport: |
PROVISIONAL |
| Digital Bazaar |
Veres One |
Veres One DID Method |
did:v1: |
PROVISIONAL |
| Dominode |
Ethereum |
|
did:dom: |
PROVISIONAL |
| Ontology Foundation |
Ontology |
Ontology DID Method |
did:ont: |
PROVISIONAL |
| Vivvo Application Studios |
Vivvo |
Vivvo DID Method |
did:vvo: |
PROVISIONAL |
| ICON Foundation |
ICON |
ICON DID Method |
did:icon: |
PROVISIONAL |
| Raonsecure |
InfoWallet |
InfoWallet DID Method |
did:iwt: |
PROVISIONAL |
| Ockam |
Ockam |
Ockam DID Method |
did:ockam: |
PROVISIONAL |
| Alastria National Blockchain Ecosystem |
Alastria |
Alastria DID Method |
did:ala: |
PROVISIONAL |
| Ocean Protocol |
Ocean Protocol |
Ocean Protocol DID Method |
did:op: |
PROVISIONAL |
| Victor Grey |
JLINC Protocol |
JLINC Protocol DID Method |
did:jlinc: |
PROVISIONAL |
| Various DIF contributors |
Bitcoin |
ION DID Method |
did:ion: |
PROVISIONAL |
| Jolocom |
Ethereum |
Jolocom DID Method |
did:jolo: |
PROVISIONAL |
| uPort |
Ethereum |
ETHR DID Method |
did:ethr: |
PROVISIONAL |
| Marcos Allende, Sandra Murcia, Flavia Munhoso, Ruben Cessa |
bryk |
bryk DID Method |
did:bryk: |
PROVISIONAL |
| Daniel Hardman |
peer |
peer DID Method |
did:peer: |
PROVISIONAL |
| SelfKey |
Ethereum |
SelfKey DID Method |
did:selfkey: |
PROVISIONAL |
| Metadium Foundation |
Metadium |
Metadium DID Method |
did:meta: |
PROVISIONAL |
| Chainyard |
DID Specification |
TYS DID Method |
did:tys: |
PROVISIONAL |


So taxation is unjust, and the government has the authority to tax.
Is taxation beneficial to society?
Yes, it is beneficial.
No, it is detrimental.
Back


Exclusive offer from: / logo
Get Your
100%
up
to
£400
+200 Free Spins
+ Terms and Conditions apply
Ligal Line Ligal Line Ligal Line Ligal Line Ligal Line Ligal Line Ligal Line Ligal Line


| He’s one of the hardest working filmmakers in the genre business.......So what’s HATCHET man Adam Green been up to this past year apart from working on his sit-com ‘Holliston’, writing KILLER PIZZA and prepping EXORCISM ON CROOKED LAKE? The answer is this documentary starting out exploring genre-based monster art and then taking an odd turn into the blurring of fantasy and reality. Because halfway through producing this treatise with cinematographer Will Barratt at his L.A. ArieScope Pictures offices, they are contacted by former policeman William Dekker who claims he can prove that monsters are indeed real. That they live in world just below our own named The Marrow and he knows where one of the entrances to this dark hidden universe is. Green of course is intrigued and so the monster hunting expedition begins… to become something else far more frightening than he ever imagined. | |
| Genres: | Biography, Drama, Fantasy, Horror, Mystery, Thriller |
| Director: | Adam Green |
| Writer: | Adam Green |
Cast: | William Dekker - Ray Wise Adam Green - Adam Green Will Barratt - Will Barratt Josh Ethier / Vance / Little Bigfoot - Josh Ethier Rileah Vanderbilt - Rileah Vanderbilt Kane Hodder - Kane Hodder Sarah Elbert - Sarah Elbert Tom Holland - Tom Holland Mick Garris - Mick Garris Alex Pardee / Park Ranger - Alex Pardee Sgt. Sean Ross - Jimmy McCarthy Harlequin - Nic Henley Tombstone - Caitlyn Brisbin Shadow - Robert Pendergraft Himself - Steve Agee Himself - Steven Barton Oderus Urungus - Dave Brockie Himself - Don Coscarelli Himself - Evan Dickson Herself - Corri English Herself - Arwen Green Himself - Lloyd Kaufman Himself - Joe Lynch Herself - Laura Ortiz Himself - Tony Todd Park Ranger - Mathew Waters |


A JavaScript Example by Alexa Barreto Portal
This web page uses JavaScript to determine the current hour, and presents a different image, custom message, and color based on each of the following times of day.
- Morning (5am to 12 noon)
- Afternoon (12 noon to 6pm)
- Evening (6pm to 11pm)
- Night (11pm to 5am)


Meet Ziggy.
Vietnamese Pot Bellied adult black male
“Dashingly handsome, above-average smarts, with a happy disposition.” If Ziggy could talk, this is how he would describe himself. In all honesty, it's pretty much the truth. Ziggy has the thickest, most beautiful coat of bristles you will ever see. Born February 2014, this stunning fella joined the sancuary in 2016. Found as a stray in northern Arizona, Ziggy is cute as a teddy bear, and confident with other pigs. Ziggy is looking for a home where he can bring one of his Sanctuary pig friends, or to join a family which already includes piggy companions.


TableSearch
class TableSearch
Methods
No description
Limit the number of results
Set offset to use when a limit has been set.
Set the table columns to retrieve
Add table prefixed columns, will automatically quote table parts identifiers found in the column name.
Set a group option
Set an order by clause
Add an inner table join to the search
Add an left outer table join to the search
Add an right outer table join to the search
Return SQL string
Return a json version of the results
Return an array version of the results
Return an array indexed by $indexKey useful for comboboxes.
Details
at line 44
__construct(Select $select, Table $table)
at line 57
TableSearch
limit(int $limit)
Limit the number of results
at line 69
TableSearch
offset(int $offset)
Set offset to use when a limit has been set.
at line 83
TableSearch
columns(array $columns, boolean $prefixColumnsWithTable = true)
Set the table columns to retrieve
at line 98
prefixedColumns(array $columns)
Add table prefixed columns, will automatically quote table parts identifiers found in the column name.
It provides an alternative for defining columns from multiple/joined table in one go.
at line 111
TableSearch
group(array|string $group)
Set a group option
at line 126
Select
having(Where|Closure|string|array $predicate, string $combination = Predicate\PredicateSet::OP_AND)
Set a habing option
at line 139
TableSearch
order(string|array $order)
Set an order by clause
at line 153
TableSearch
where(Where|Closure|string|array|PredicateInterface $predicate, string $combination = null)
Add a where condition
at line 166
TableSearch
orWhere(Where|Closure|string|array|PredicateInterface $predicate)
Add an orWhere condition to the search
at line 181
TableSearch
join(string|array $table, string $on, string|array $columns = array())
Add an inner table join to the search
at line 200
TableSearch
joinLeft(string|array $table, string $on, string|array $columns = array())
Add an left outer table join to the search
at line 217
TableSearch
joinRight(string|array $table, string $on, string|array $columns = array())
Add an right outer table join to the search
at line 231
Select
getSelect()
Return the underlying select
at line 241
string
getSql()
Return SQL string
at line 253
string
toJson()
Return a json version of the results
at line 263
array
toArray()
Return an array version of the results
at line 275
ResultSet
execute()
Return record as an array
at line 291
array
toArrayColumn(string $columnKey, string $indexKey)
Return an array indexed by $indexKey useful for comboboxes.
..


Uses an API I also built in anger using NestJS to render some map data. Get started by clickingon the links above.


Sortable
First
Second
Third
SOMETHING ELSE
away
First
Second
Third
GROUP DRAG PARENT
GROUP CHILD 1
GROUP CHILD 2
First
Second
Third
GO VERTICAL


Add New Membership Type
MEMBERSHIP NAME
LOGO
Choose a file…
Add Membership
MEMBERSHIP TYPE
Member-Ship Name
Action
{{ row.memberShipName }}
Edit
Delete


mrbles package¶
Submodules¶
mrbles.core module¶
Core Classes and Functions.
This file stores the core classes and functions for the MRBLEs Analysis module.
-
class
mrbles.core.
Classify
(target, sigma=1e-05, train=False, **kwargs)[source]¶ Bases:
object
Classification of beads by Gaussian Mixture Model.
- Parameters
target (list, NumPy array) – List of target ratios.
tol (float) – Tolerance. Defaults to 1e-5.
min_covar (float) – Minimum covariance. Defaults to 1e-7.
sigma (float) – Minimum significance. Defaults to 1e-5.
train (boolean) – Sets training mode. Remembers covariance matrix or resets to initial covariance matrix. Defaults to False.
-
found
¶ Return found codes.
-
init_covars
¶ Return initial covariance matrix.
-
init_weights
¶ Return initial weights.
-
log_prob
¶ Return log probabilities.
-
means
¶ Return means.
-
missing
¶ Return missing codes.
-
output
¶ Return codes, probability and log probability.
-
probs
¶ Return probabilities.
-
stds
¶ Return Choleski based SD.
-
class
mrbles.core.
FindBeadsCircle
(bead_size, min_r, max_r, param_1=99, param_2=7, annulus_width=2, min_dist=None, enlarge=1, auto_filt=True, border_clear=False, parallelize=True)[source]¶ Bases:
mrbles.core.FindBeadsImaging
Find and identify bead objects from image.
Parameters changes for each setup/magnification/bead-set.
- Parameters
min_r (int) – Sets the minimum diameter of the bead in pixels.
max_r (int) – Sets the maximum diameter of the bead in pixels.
param_1 (int) – Sets the gradient steepness. CHECK
param_2 (int) – Sets the sparsity. CHECK
annulus_width (int, optional) – Sets the width of the annulus in pixels. Defaults to 2 pixels.
min_dist (int, optional) – Sets the minimal distance between the centers of the beads in pixels. Defaults to 2x of the minimum diameter (min_r).
enlarge (float, optional) – Enlarges the found diameter by this factor. 1 remains equal, 1.1 enlarges by 10% and 0.9 shrinks by 10%. Defaults to 1, no enlarging/shrinking.
-
static
circle_mask
(image, min_dist, min_r, max_r, param_1, param_2, enlarge)[source]¶ Find initial circles using Hough transform and return mask.
-
class
mrbles.core.
FindBeadsImaging
(bead_size, border_clear=True, circle_size=None, parallelize=False)[source]¶ Bases:
mrbles.data.ImageDataFrame
Find and identify beads and their regions using imaging.
Parallel computing version.
- Parameters
bead_size (int) – Approximate width of beads (circles) in pixels.
border_clear (boolean) – Beads touching border or ROI will be removed. Defaults to True.
circle_size (int) – Set circle size for auto find circular ROI.
- Variables
area_min (float) – Sets the minimum area in pixels. Set to minimum size inside of ring. Defaults to 0.1 * area of set bead_size.
area_max (float) – Sets the maximum area in pixels. Set maximum size outside of ring. Defaults to 1.5 * area of set bead_size.
eccen_max (float) – Get or set maximum eccentricity of beads in value 0 to 1, where a perfect circle is 0. Defaults to 0.65.
-
area_max
¶ Get or set minimum area of beads (circles) in pixels.
-
area_min
¶ Get or set minimum area of beads (circles) in pixels.
-
bead_dims
¶ Return found bead dimensions.
-
bead_labels
¶ Return all positive labels of labeled mask.
-
bead_num
¶ Return number of beads labeled mask.
-
bead_size
¶ Get or set approximate width of beads (circles) in pixels.
-
static
circle_area
(diameter)[source]¶ Return area of circle.
- Parameters
diameter (float) – Diameter of circle.
-
classmethod
circle_roi
(image, circle_size, hough_settings=None)[source]¶ Apply a circular image ROI.
- Parameters
image (NumPy array image)
hough_settings (list, int) – Settings for HoughCircles in list. list[0] = dp, list[1] = param1, list[2] = param2
-
eccen_max
¶ Get or set maximum eccentricity of beads from 0 to 1.
A perfect circle is 0 and parabola is 1.
-
static
eccentricity
(axis_a, axis_b)[source]¶ Return eccentricity by major axes.
- Parameters
axis_a (float) – Size major axis a.
axis_b (float) – Size major axis b.
-
classmethod
filter_mask
(mask, filter_params, filter_names, slice_types, border_clear=False)[source]¶ Filter labeled mask based on provided parameters.
-
classmethod
filter_properties
(properties, filter_params, filter_names, slice_types)[source]¶ Get labels of areas outside of limits.
-
static
filter_property
(properties, filter_param, filter_name, slice_type)[source]¶ Get labels of beads outside/inside/up/down of propert limits.
- Parameters
properties (photutils table) – Table with feature properties from labeled mask. >>> from photutils import source_properties, properties_table >>> tbl = properties_table(properties) >>> properties = source_properties(mask, mask)
filter_param (float, int, list) – Parameters to filter by. If provided a list it will filter by range, inside or outside). If provided a value it filter up or down that value.
slice_type (string) – ‘outside’ : < > ‘inside’ : >= <= ‘up’ : > ‘down’ : <
-
classmethod
make_mask_outside
(mask, size, buffer=0)[source]¶ Return labeled mask of area around bead.
-
mask_types
¶ Return list of mask types.
-
static
show_image_overlay
(image, image_blend, alpha=0.3, cmap1='Greys_r', cmap2='jet')[source]¶ Overlay of 2 images using alpha blend.
- Parameters
image (NumPy array) – Base image.
image_blend (NumPy arra) – Image to blend over base image.
aplha (float) – Amount of blending. Value between 0 and 1. Defaults to 0.3.
c_map1 (cmap) – Color scheme using cmap. See matplotlib for color schemes. Defaults to ‘Greys_r’, which are reversed grey values.
-
class
mrbles.core.
ICP
(target, matrix_method='std', offset=None, max_iter=100, tol=0.0001, outlier_pct=0.01)[source]¶ Bases:
object
Iterative Closest Point (ICP).
Iterative Closest Point (ICP) algorithm to minimize the difference between two clouds of points.
- Parameters
matrix_method (string/function/list, optional) – Transformation matrix method. Standard methods: ‘max’, ‘mean’, ‘std’. Other options: own function or list of initial guesses. Defaults to ‘std’.
offset (list of float, optional)
max_iter (int, optional) – Maximum number of iterations. Defaults to 100.
tol (float, optional) – Convergence threshold. ICP will stop after delta < tol. Defaults to 1e-4.
outlier_pct (float, optional) – Discard percentile 0.x of furthest distance from target. Percentile given in fraction [0-1], e.g. ‘0.001’. Defaults to 0.
train (boolean) – Turn on (True) or off (False) traning mode. This will keep the current tranformation from resetting to default initial values. Defaults to True.
echo (boolean) – Turn on (True) or off (False) printing information while in process. Prints the delta for each iteration, the final number of iterations, and the final transformation and offset matrices.
- Variables
matrix (NumPy array) – This stores the transformation matrix.
offset (NumPy vector) – This stores the offset vector.
Functions –
--------- –
fit (function) – Function to find ICP using set parameters and attributes.
transform (function) – Function to apply transformat data using current transformation matrix and offset vector.
-
static
matrix_create
(func, input1, input2)[source]¶ Create identity matrix and set values with function on inputs e.g ‘np.mean’.
- Parameters
func (function) – Function to apply on input1 divided by input2, e.g. ‘np.std’. Insert function without function call: ().
input1 (list, ndarray)
input2 (list, ndarray)
- Returns
matrix – Returns func(input1/input2)
- Return type
ndarray
-
class
mrbles.core.
SpectralUnmixing
(ref_data)[source]¶ Bases:
mrbles.data.ImageDataFrame
Spectrally unmix images using reference spectra.
Unmix the spectral images to dye images, e.g., 620nm, 630nm, 650nm images to Dy, Sm and Tm nanophospohorous lanthanides using reference spectra for each dye.
- Parameters
ref_data (list, ndarray, Pandas DataFrame, mrbles.data.References) – Reference spectra for each dye channel as Numpy Array: N x M, where N are the spectral channels and M the dye channels.
-
unmix
(images)[source]¶ Unmix images based on initiated reference data.
Unmix the spectral images to dye images, e.g., 620nm, 630nm, 650nm images to Dy, Sm and Tm nanophospohorous lanthanides using reference spectra for each dye.
- Parameters
image_data (NumPy array, Xarry DataArray, mrbles.Images) – Spectral images as NumPy array: N x M x P, where N are the spectral channels and M x P the image pixels (Y x X).
mrbles.data module¶
Data Classes and Functions.
This file stores the data classes and functions for the MRBLEs Analysis module.
-
class
mrbles.data.
ImageDataFrame
(data=None)[source]¶ Bases:
object
Xarray based dataframe object for images.
- Variables
data (Xarray DataArray) – Returns (cropped, if crop_x and/or crop_y is set) Xarray DataArray.
xdata (Xarray DataArray) – Returns uncropped Xarray DataArray.
sets (list) – Returns a list of all set names, if ‘set’ column is present.
crop_x (slice) – Crop X slice. Set with slice().
crop_y (slice) – Crop Y slice. Set with slice().
-
combine
(images)[source]¶ Combine iamges with dataframe.
- Parameters
images (Xarray DataArray, dict of Xarray DataArrays)
-
crop_x
¶ Crop X slice. Set with slice().
-
crop_y
¶ Crop Y slice. Set with slice().
-
data
¶ Return cropped Xarray dataframe.
-
sets
¶ Return list of sets.
-
shift_channel
(channel, x_shift, y_shift)[source]¶ Shift images of channel by x and y pixels.
WARNING: This will shift the images permanently and sets inbound pixels to 0. Reload images to reset.
- Parameters
channel (str) – Channel name to shift.
x_shift (int) – Pixels to shift in X dimension.
y_shift (int) – Pixels to shift in Y dimension.
-
xdata
¶ Return uncropped Xarray dataframe.
-
class
mrbles.data.
ImageSetRead
(file_path, series=0, output='xr')[source]¶ Bases:
mrbles.data.ImageDataFrame
Image set data object that loads image set from file(s).
- Parameters
file_path (string/list [string, string, …]) – File path as string, e.g. ‘C:/folder/file.tif’, or as list of file paths, e.g. [‘C:/folder/file.tif’, ‘C:/folder/file.tif’].
series (int, optional) – Sets the series number if file has multiple series. To Loads all series set to series=’all’. Defaults to 0.
output (str, optional) – Sets default output method. Options: ‘nd’ for NumPy ndarray or ‘xd’ for xarray. Defaults to ‘ndarray’.
- Variables
function descriptions. (See) –
- Returns
_dataframe (xarray dataframe) – Returned when calling the instance.
_dataframe[idx] (NumPy ndarray) – Returns the index value or slice values: [start:stop:stride]. Warning: when using column names stop values are included.
Examples
>>> image_data_object = ImageSetRead('C:/folder/file.tif') >>> image_files = ['C:/folder/file.tif', 'C:/folder/file.tif'] >>> image_data_object = ImageSetRead(image_files, output='xd') >>> image_data_object['BF', 100:400, 100:400] (301L, 301L)
-
axes
¶ Return data order.
- Returns
data_order – Returns order as string with: P for position; F for file; T for timepoint, C for channel; Y for Y-axis; X for X-axis.
- Return type
string
Examples
>>> image_data_object = ImageSetRead('C:/folder/file.tif') >>> image_data_object.axes 'TCYX'
-
c_names
¶ Return channel names.
-
c_size
¶ Return channel count.
-
f_names
¶ Return file names.
-
f_size
¶ Return file count.
-
is_multi_file
¶ Return if from multiple files.
-
classmethod
load
(file_path, series=0)[source]¶ Load image files into data structures.
Class method. Can be used without instantiating.
- Parameters
file_path (string/list [string, string, …]) – File path as string, e.g. ‘C:/folder/file.tif’, or as list of file paths, e.g. [‘C:/folder/file.tif’, ‘C:/folder/file.tif’].
series (int, optional) – Sets the series number if file has multiple series (or positions). Use series=’all’ for loading all series. Defaults to 0.
Examples
>>> ImageSetRead.load('C:/folder/file.tif') >>> image_files = ['C:/folder/file.tif', 'C:/folder/file.tif'] >>> ImageSetRead.load(image_files)
-
p_size
¶ Return position count.
-
s_size
¶ Return series count.
-
static
scan_path
(path, pattern='.*.tif')[source]¶ Scan folder recursively for files matching the pattern.
- Parameters
path (string) – Folder path as string, e.g. r’C:/folder/file.tif’.
pattern (string) – General file pattern as search string, e.g. ‘20160728_MOL_*’, using regular expressions (regex). Defaults to ‘.*.tif’.
-
classmethod
scan_paths
(paths, pattern='.*.tif')[source]¶ Scan folders recursively for files matching the pattern.
- Parameters
paths (list) – Folder paths as list, e.g. [‘C:/folder/file.tif’, …].
pattern (string) – General file pattern as search string, e.g. ‘20160728_MOL_*’, using regular expressions (regex).
-
t_deltas
¶ Return time deltas between each image acquisition.
Default in milliseconds (ms), check object.t_unit for time unit.
-
t_interval
¶ Return set time interval.
Default in milliseconds (ms), check object.t_unit for time unit.
-
t_size
¶ Return time-point count.
-
t_unit
¶ Return time unit.
-
z_size
¶ Return Z-slice count.
mrbles.kinetics module¶
Kinetics Classes and Functions.
This file stores the kinetics classes and functions for the MRBLEs Analysis module.
-
class
mrbles.kinetics.
GlobalFit
[source]¶ Bases:
object
Global non-linear regression.
This class is based on the lmfit module pipeline. For mor information and functionalilty, please visit: https://lmfit.github.io/lmfit-py/
-
fit_metrics
¶ Return fit metrics.
-
static
model_bind
(Mt, Kd, Rmax)[source]¶ Langmuir Isothem model.
Assuming protein [M]total in excess model: [M] ≈ [M]total = [MP]+[M].
Model -> [MP] := ([M]total * Rmax) / (Kd + [M]total)
[M]total * Rmax
- [MP] := ——————-
Kd + [M]total
All concentrations must be in the same units!
- Parameters
Mt (float) – Total protein [M] concentration: [M]total = [M]free+[MP].
Rmax (float) – Maximum response level in abitrary units.
-
classmethod
model_dataset
(params, i, Mt)[source]¶ Model dataset function.
This extracts the data from the Parameters, used by lmfit.
-
classmethod
objective
(params, Mt, data, sigma=None)[source]¶ Objective function of the Langmuir Isotherm model.
-
result
¶ Return lmfit ModelResult object.
-
-
class
mrbles.kinetics.
KModelSim
(c_substrate, c_complex, kd_init, tol=0.0001)[source]¶ Bases:
object
Kurt’s white paper for competive binding.
Assuming substrate (peptide on bead) or complex (protein) concentration in excess.
- Parameters
c_substrate (array) – NumPy array of substrate (peptide) concentrations.
c_complex (array) – NumPy array of complex (protein) concentrations.
kd_init (int) – Set range max for Kd’s starting from 0.
tol (float) – Set tolerance error. Defaults to 1E-4.
- Variables
result (array) – Returns NumPy array of fit.
Functions –
--------- –
fit (function) – Function to fit parameters.
Examples –
>>> Mmat = np.logspace(0, 3, 20) # Matrix of protein concentrations, e.g. 20x between 0 to 3 uM. >>> Pt = np.array(([10]*10)) # Concentrations of each peptide, e.g. 10x 10 uM. >>> test_kshow = ba.kin.kshow(Pt, Mmat, 2, 1E-4) >>> test_kshow.fit() >>> plt.plot(test_kshow.result) ...
-
result
¶ Return result from fit.
mrbles.path module¶
MRBLE-Path Classes and Functions.
This file stores the MRBLE-Path classes and functions for the MRBLEs Analysis module.
-
class
mrbles.path.
PathUnmix
(references, blast=True)[source]¶ Bases:
mrbles.data.TableDataFrame
MRBLE-Path unmixing algorithm.
- Parameters
references (Pandas DataFrame) – Dataframe with reference spectra.
blast (bool) – Setting to convert blast E-scores. Defaults to True.
-
static
generate_test_refs
(channels, spike_channel=None, signal_max=65536, scale=True)[source]¶ Generate test reference spectra.
- spike_channellist
List of channel numbers to spike.
- signal_maxint
Maximum value. Defaults to 2**16: 65536.
- scalebool
Scale to 1. Defaults to True.
-
unmix
(data, signal, z_score=True)[source]¶ Unmix data.
- Parameters
data (Pandas DataFrame) – Data that contains the various sets.
signal (str) – Column with signal data.
z_score (bool or list) – Convert to Z-score if set to True, or uses mean and SD values of provided list position 0 is mean, position 1 is SD. Defaults to True.
mrbles.pipeline module¶
Pipeline Classes and functions.
This files contains the pipeline for the MRBLEs analysis.
-
class
mrbles.pipeline.
Analyze
(dataframe, seq_list=None, images=None, masks=None)[source]¶ Bases:
mrbles.data.TableDataFrame
Analyze data MRBLE data and return per-code statistics.
- Parameters
seq_list (list, Pandas DataFrame) – List (one column) or Pandas DataFrame with additional per-code information. In the case of a Pandas DataFrame all provided columns will be added, based on the row number, which corresponds to its code.
flag_filt (boolean) – Sets if the flagged data is automatically filtered out. Defaults to True.
- Variables
functions (dict) –
Dictionary of functions and their corresponding names. Default: {
’mean’: np.mean, ‘median’: np.median, ‘sd’: np.std, ‘se’: sp.stats.sem, ‘N’: len, ‘CV’: sp.stats.variation}
-
analyze
(assay_channel, min_prob=None, bkg_data=None)[source]¶ Calculate per-code statisics.
- assay_channelstr
Assay channel name (column name) to calculate per-code statistics for.
- min_prob: float
Filter by minimum probability interval, e.g. 0.95. Defaults to None.
- bkg_datafloat/int, string, list, NumPy array, Pandas DataFrame
If float/value is used, this value be subtracted. If string is used, column from internal dataframe is used. Otherwise, the data provided is subtracted, which needs to be the same size as the per-bead data. In the case of Pandas DataFrame, do slice the single exact column. Row number of the data is the code. Defaults to None.
-
data_per_bead
¶ Return (normalized) data per bead.
-
data_per_code
¶ Return (normalized) data per code.
-
mrble_report
(assay_channel, filename, set_name=None, codes=None, files=None, sort=True, image_names=None, mask_names=None)[source]¶ Generate per-MRBLE PDF image report.
- Parameters
assay_channel (str) – Assay channel name, e.g. ‘Cy5_FF’
filename (str) – Filename for generated PDF file.
set_name (str) – Name of set, e.g. ‘Set A’
codes (int, list of int) – Integer or list of integers with selected codes. Defaults to None.
files (int, list of int) – Integer or list of integers with selected files. Defaults to None.
sort (boolean) – Sort by code. Defaults to True.
image_names (list of str) – List of image names. Defaults to [‘Dy’, ‘Sm’, ‘Tm’, ‘bkg’, ‘Eu’, assay_channel].
mask_names (list of str) – List of mask names. Defaults to [‘mask_ring’, ‘mask_inside’, ‘mask_full’, ‘mask_bkg’].
-
norm_data
¶ Return normalized data.
-
class
mrbles.pipeline.
Decode
(target, seq_list=None, decode_channels=None)[source]¶ Bases:
mrbles.data.TableDataFrame
Decode MRBLEs.
- Parameters
target (list) – List of target ratios
seq_list (Pandas DataFrame) – Columns with sequence information. Defaults to None.
decode_channels (list) – Channel names. Defaults to None.
-
decode
(data, combine_data=None)[source]¶ Decode MRBLEs.
- Parameters
data (Pandas DataFrame) – Data that contains decoding data.
combine_data (Pandas DataFrame) – Data to be combined from previous pipeline steps. Defaults to None.
-
plot_clusters_2D
(colors, ci_trace=None, min_prob=None)[source]¶ Plot ratio clusters in 2D.
- Parameters
colors (list) – List of color (NPL) names.
ci_trace (float) – Set trace confidence line around clusters. Defaults to None.
min_prob (float) – Set minimal probability level from 0 to 1, e.g. 0.95. Defaults to None.
-
class
mrbles.pipeline.
Extract
(function=None)[source]¶ Bases:
mrbles.data.TableDataFrame
Extract data from images using masks.
- Parameters
function (function) – This is the function used to extract data from each bead region. This can be replaced with any 1 parameter function, e.g. np.mean. Defaults to np.median.
-
background_subtract
(assay_channel, bkg_data)[source]¶ Subtract background signal.
- Parameters
assay_channel (str) – Name of assay channel.
bkg_data (list, NumPy arrar, Pandas DataFrame) – Data to be subtracted.
-
filter
(bkg_factor=2.0, ref_factor=2.0, bkg='bkg.mask_full', ref='Eu.mask_inside')[source]¶ Filter and flag based on unmixed background and reference signal.
- Parameters
bkg_factor (float) – Filter factor of Standard Deviations away from mean background signal. Defaults to 2.0
ref_factor (float) – Filter factor of Standard Deviations within mean of reference signal. Defaults to 2.0
bkg (string) – Background signal column name. Defaults to ‘bkg.mask_full’
ref (string) – Reference signal column name. Defaults to ‘Eu.mask_inside’
-
get
(images, masks, combine_data=None)[source]¶ Extract data from images using masks.
- Parameters
images (Xarray DataArray, mrbles ImageDataFrame) – Images of which to take values from using provided labeled masks. Must be same number of dimensions as masks.
masks (Xarray DataArray, mrbles ImageDataFrame) – Labeled mask of regions to take values from the provided images. Must be same number of dimensions as images, even if one dimension is only singular. Therefore, use [] around mask selection, even when only using a single channel: [‘inside’].
Examples
>>> per_mrble_data = mrbles.Extract(np.median) >>> per_mrble_data.run(images['100 nM', :, ['Cy5', 'Cy3']], masks['100 nM', :, ['ring']]) >>> per_mrble_data.data
-
class
mrbles.pipeline.
Find
(bead_size, pixel_size=None, border_clear=True, circle_size=None, min_r=None, max_r=None, annulus_width=None, **kwargs)[source]¶ Bases:
mrbles.data.ImageDataFrame
Find MRBLEs in brightfield images.
This class provides the method to find MRBLEs and segment regions for each MRBLE in brightfield images, provided by mrbles.Images.
Mask output: mask_full, mask_ring, mask_inside, mask_outside, mask_bkg, mask_check.
Examples
>>> find_mrbles = mrbles.Find(bead_size=18, pixel_size=3.5, border_clear=True, circle_size=350) >>> find_mrbles.settings.parallelize = True >>> find_mrbles.find(assay_images[:, : , 'Brightfield']) Bead diameter AVG: 54.36 Bead diameter SD: 2.00 Bead diameter CV: 3.68% Total number of beads: 2386 >>> find_mrbles {'Set 1': <xarray.DataArray (f: 12, c: 6, y: 1024, x: 1024)> array([[[[0, ..., 0], ..., [0, ..., 0]]]], dtype=uint16) Coordinates: * c (c) <U12 'mask_full' 'mask_ring' 'mask_inside' ... Dimensions without coordinates: f, y, x, 'Set 2': ... >>> find_mrbles['Set 2', 3, 'mask_ring'] <xarray.DataArray (y: 860, x: 860)> array([[0, 0, 0, ..., 0, 0, 0], ..., [0, 0, 0, ..., 0, 0, 0]], dtype=uint16) Coordinates: c <U12 'mask_ring' Dimensions without coordinates: y, x
Super-Class wrapper for mrbles.core.FindBeadsImaging. Please see this class documentation for more information.
- Parameters
bead_size (int) – Approximate width of beads (circles) in pixels.
pixel_size (float) – Optional setting for image pixel size. Outputs dimensions using provided conversion value. Adds additional converted to database with affic ‘_conv’. Defaults to None.
border_clear (boolean) – Beads touching border or ROI will be removed. Defaults to True.
circle_size (int) – Set circle size for auto find circular ROI.
min_r (int) – Minimum size of beads. Also set max_r and annulus_width. When this is set Circle Finding method is used!
max_r (int) – Maximum size of beads. Also set min_r and annulus_width. When this is set Circle Finding method is used!
annulus_width (int) – Annulus width size. Also set min_r and max_r. When this is set Circle Finding method is used!
- Variables
bead_dims (Pandas DataFrame) – Dataframe with individual MRBLE dimensions.
beads_total (int) – Total number of MRBLEs found.
beads_per_set (list of int) – Number of MRBLEs per set.
settings (property) – Property provinding access to settings of mrbles.core.FindBeadsImaging. See property documentation for more information.
-
bead_dims
¶ Return MRBLEs dimensions.
-
beads_per_set
¶ Return total bead count in set(s).
-
beads_total
¶ Return total bead count in set(s).
-
sets
¶ Return list of sets.
-
settings
¶ Return FindBeadsImaging object for settings purposes.
See FindBeadsImaging documentation for detailed settings.
Examples
>>> find_object = Find(bead_size=18) >>> find_object.settings.area_min = 20 >>> find_object.settings.area_max = 350 >>> find_object.settings.eccen_max = 0.65 >>> find_object.settings.circle_size = 350
-
class
mrbles.pipeline.
Images
(folders=None, file_patterns=None, data=None, channels=None)[source]¶ Bases:
mrbles.data.ImageDataFrame
Load images into mrbles dataframe.
There are two methods to load images into the mrbles dataframe: Method 1 - Provide dictionaries with folder and filename patterns. Method 2 - Provide a dictionary with numpy arrays.
This class facilitates loading images into the mrbles.data.ImageDataFrame. Please see this class documentation for more information.
For loading OME-TIFF image it uses mrbles.data.ImageSetRead. Please see this class documentation for more information.
Examples
Method 1.
>>> assay_folder = '../data' >>> assay_folders = {'Set 1': '../data1', 'Set 2': '../data2'} >>> assay_files = {'Set 1': 'image_set1_(0-9)(0-9).ome.tif', 'Set 2': 'image_set2_(0-9)(0-9).ome.tif'} >>> assay_images = mrbles.Images(assay_folder, assay_files) Found 12 files in Set 1 Found 11 files in Set 2
Method 2.
>>> image_arrays = {'Set 1': numpy_array_1, 'Set 2': numpy_array_2} >>> channel_names = ['Brightfield', 'Cy5', 'l-435', 'l-546', 'l-620'] >>> assay_images = mrbles.Images(data=image_arrays, channels=channel_names)
Output - Example.
>>> assay_images {'Set 1': <xarray.DataArray (f: 12, c: 5, y: 1024, x: 1024)> array([[[[169., ..., 166.], ..., [101., ..., 121.]]]]) Coordinates: * c (c) object 'Brightfield', 'Cy5', 'l-435', 'l-546', ... Dimensions without coordinates: f, y, x, 'Set 2': ... >>> assay_images['Set 2', 3, 'Brightfield'] <xarray.DataArray (y: 1024, x: 1024)> array([[188., 163., 182., ..., 188., 174., 170.], ..., [144., 141., 142., ..., 162., 162., 154.]]) Coordinates: c <U11 'Brightfield' Dimensions without coordinates: y, x
- Parameters
folders (str, dict) – String of single folder or dict of multiple folders. The folder(s) provided will searched recursively. Dict keys must match file_patterns dict.
file_patterns (dict) – Dict of multiple file patterns. Dict keys must match folders keys, if multiple folders.
data (NumPy array) – Alternative method to loading OME-Tif files. Load a dict of NumPy arrays with dimension order (f, c, y, x): files (f), channels (c), Y-dimension (y), X-dimension (x)
channels (list of str) – List of channel names. Defaults to None. Channels will be numbers.
- Variables
crop_x (slice) – Used for setting ROI slice in the X dimension.
crop_y (slice) – Used for setting ROI slice in the Y dimension.
-
flat_field
(ff_image, channel, affix='_FF')[source]¶ Flat-Field correction.
- Parameters
ff_image (str, NumPy array) – Flat-field image file or NumPy array.
channel (str) – Channel to apply flat-field correction.
affix (str) – Affix for channel name to be appended. Defaults to ‘_FF’
-
rename_channel
(old_name, new_name)[source]¶ Rename channel name.
- Parameters
old_name (str) – Original name of channel.
new_name (str) – New name for old_name channel.
-
static
scan_path
(path, pattern='*.tif')[source]¶ Scan folder recursively for files matching the pattern.
- Parameters
path (string) – Folder path as string, e.g. r’C:/folder/file.tif’.
pattern (string) – File extenstion of general file pattern as search string, e.g. ‘peptides_x_([0-9][0-9])_MMStack_Pos0.ome.tif’ Defaults to ‘*.tif’.
-
class
mrbles.pipeline.
Ratio
(reference_spectra, background='bkg')[source]¶ Bases:
mrbles.data.ImageDataFrame
Generate spectrally unmix ratio images.
- Parameters
reference_spectra (list, ndarray, References object) – List, array, or References object of reference spectra for linear spectral unmixing.
background (string) – Background key label. Defaults to ‘bkg’.
-
get
(image_sets, reference, combine_data=None)[source]¶ Calculate unmixed and ratio images.
- Parameters
image_set (Xarray DataArray, mblres ImageDataFrame) – These are the images (emission channels) to be unmixed.
reference (string) – Reference key label, e.g. ‘Eu’, used for ratio images.
comb_data (Xarray DataArray, mblres ImageDataFrame) – These are the images that are combined with ‘image_set’. Must be same dimensions and type as ‘image_set’.
-
class
mrbles.pipeline.
References
(folders, files, object_channel, reference_channels, bead_size=16, dark_noise=99)[source]¶ Bases:
mrbles.data.TableDataFrame
Create reference spectra.
There are three methods to load images into the this class: Method 1 - Provide a dictionaries with folders and filenames. Method 2 - Provide a dictionary with numpy arrays. Method 3 - Provide a file with spectra data.
- Parameters
folders (dict) – Dictionary with keywords (e.g. ‘Dy’, ‘bkg’) and folders. Must correspond with files parameter.
files (dict) – Dictionary with keywords (e.g. ‘Dy’, ‘bkg’) and filenames. Must correspond with folders parameter.
object_channel (str) – Channel to be used for finding MRBLEs
reference_channels (list) – List of channel names to be used for generating reference spectra.
bead_size (int) – Bead diamater set in pixels. Defaults to 16.
dark_noise (int) – Dark noise of the camera used for the images. Defaults to 99 (median dark noise of Andor Zyla 4.2 PLUS sCMOS).
- Variables
background (str) – Name of the background spectrum. Defaults to ‘bkg’.
crop_x (slice) – Crop X slice. Set with slice().
crop_y (slice) – Crop Y slice. Set with slice().
-
static
get_spectrum
(dark_noise, channels, mask)[source]¶ Get spectrum from image set using mask.
The median of the masked area is extracted, the camera dark noise subtracted, and normalized.
- Parameters
dark_noise (int) – Intrinsic dark noise of camera. Image taken when shutter closed.
channels (slice, list) – Slice of channels
mask (NumPy array) – Labeled mask.
mrbles.report module¶
Quality Control Report Classes and Functions.
This file stores the quality control report classes and functions for the MRBLEs Analysis module.
-
class
mrbles.report.
BeadsReport
(data, images, masks, assay_channel, codes=None, files=None, sort=True)[source]¶ Bases:
object
Per-MRBLE images report.
This method generates the selected images per-MRBLE.
WARNING!
This method can take a lot of time, since it will generate images per-MRBLE. It takes about 5 minutes per 1,000 beads, for 12 images each, which makes a total of 11,000 images.
- Parameters
data (Pandas DataFrame) – Contains all the dimension, posotional, and intensity data per-MBRLE.
images (mrbles.ImageDataFrame, Xarray DataArray) – Contains images.
masks (Xarray DataArray) – Contains masks.
assay_channel (str) – Assay channel name, e.g. ‘Cy5_FF’
codes (int, list of int) – Integer or list of integers with selected codes. Defaults to None.
files (int, list of int) – Integer or list of integers with selected files. Defaults to None.
sort (boolean) – Sort by code. Defaults to True.
- Variables
time_sec (float) – Time required per-image generated in seconds. For instance, 300 beads times 12 images is 3600 images. Defaults to 0.0275
parallelize (boolean) – Wether to use parallelization. Can be slowing down on low-power computers. Defaults to True.
-
class
mrbles.report.
ClusterCheck
(decode_object, *args, **kwargs)[source]¶ Bases:
mrbles.data.TableDataFrame
Cluster check reporting.
-
class
mrbles.report.
GenerateCodes
(colors, s0s, slopes, nsigma)[source]¶ Bases:
object
Generate bead code set.
- Parameters
colors (list of str) – List of coding colors in a list of strings.
s0s (liat of float) – List of standard deviations (SD) at intensity 0 for each encoding color.
slopes (float) – List of slopes of the SDs versus intensity for each encoding color.
nsigma (float) – The number of SD to separate coding levels.
Examples
>>> code_set_gen = GenerateCodes(['Dy', 'Sm', 'Tm'], [0.0039, 0.0055, 0.0029], [0.022, 0.016, 0.049], 6.4) >>> code_set_gen.result Dy Sm Tm 0 0.000000 0.000000 0.000000 >>> code_set_gen = GenerateCodes(['Dy', 'Sm'], [0.0039, 0.0055], [0.022, 0.016], 8.4) >>> code_set_gen.generate() Number of codes: 24 >>> code_set_gen.result Dy Sm 0 0.000000 0.000000 1 0.000000 0.106747 2 0.000000 0.246642 ...................... >>> code_set_gen.iterate(28) .................... Number of codes: 26 Number of codes: 26 Number of codes: 28 Final nsigma: 8.09 Iterations : 31
-
axis
¶ Return number of axis (colors).
-
colors
¶ Return color names.
-
generate
(nsigma=None, depends=None)[source]¶ Generate codes with default nsigma or given nsigma.
- Parameters
nsigma (float, optional) – The number of SD to separate coding levels. Defaults to initial nsigma.
depends (any, experimental, optional) – Used for Tm (3rd in array) dependence on Dy (1st array).
-
static
get_levels
(std0, slope, nsigma)[source]¶ Predict the number of levels of a coding color.
The coding levels are based on s0, the standard deviation (SD) at intensity 0, and the slope between intensity and SD.
- Parameters
std0 (float) – The SD at intensity 0.
slope (float) – The slope of the SD versus intensity.
nsigma (float) – The number of SD to separate levels.
- Returns
levels – Returns list of codes values for a given coding color.
- Return type
list of float
-
iterate
(num, nsimga_start=None, nsigma_step=0.01, max_iter=1000)[source]¶ Iterate nsigma until number of codes are found.
Does not work with dependence, such as Tm dependence on Dy.
- Parameters
num (int) – Number of required codes.
nsigma_start (float, optional) – Start value of nsigma. Defaults to initial nsigma.
nsigma_step (float, optional) – Iterarion step. Defaults to 0.01
max_iter (int, optional) – Maximum iteration steps. Defaults to 1000.
-
levels
¶ Return number of levels.
-
static
recursive_looper
(iterators, pos=0)[source]¶ Recursive looper.
Implements the same functionality as nested for loops, but is more dynamic. Iterators can either be a list of methods which return iterables, a list of iterables, or a combination of both.
-
result
¶ Return resulting ratios.
-
class
mrbles.report.
PeptideScramble
(seq)[source]¶ Bases:
object
Randomizes amino acid sequence
- Parameters
seq (string) – Inset amino acid sequence as a string.
- Returns
seq – Returns string of shuffled amino acid sequence.
- Return type
string
-
class
mrbles.report.
QCReport
(data)[source]¶ Bases:
object
MRBLE library Quality Control report.
- Parameters
data (Pandas DataFrame) – Per beads data.
Module contents¶
MRBLEs Analysis Package.
This package provides the tools to: (1) find the MRBLEs in a monochrome bright-field microscopy image; (2) decode the MRBLEs beads by spectral unmxing, using reference spectra, and then spectrally decode the found beads using Iterative Closest Point Matching and Gaussian Mixture Modeling; (3) extract, statistical values of interest in additional fluorescence channels using the morphology of the MRBLEs, their locations, and respective code; (4) analyze affinity information based on titrations of MRBLEs assays.


---
---
| Event Title: | Optimum experimental design |
| Speaker: | Prof. Volker Schulz |
| Affiliation: | FB IV - Mathematics, University of Trier, 54286 Trier, Germany |
| Abstract/Brief Description: | Often, the measurement process does not yield a sufficiently trustworthy estimation of model parameters. In most cases, the reason is not a lack of efficient numerical PI techniques, but rather a lack of statistical quality of the mapping from parameters to measurement. In this talk, we will discuss this problem and present practical examples of nonlinear optimum experimental design solutions. |
| Subject Area: | Mathematics |
| Date: | Thursday, April 22, 2004 |
| Time: | 4:00pm |
| Venue: | Lecture Hall I, Department of Mathematics, IISc., Bangalore-12 |


m1.analysisParameters.Rd
Load parameter specification list for Module 1 (preprocessing and QC). If not specified, default settings are applied.
Load parameter specification list for Module 1 (preprocessing and QC). If not specified, default settings are applied.
m1.analysisParameters( which.data, which.strata = NULL, organism.filter.flag, organism.include, save.flag = T, save.filename, save.directory = "Preprocessed Datasets/", set_names = NULL, data.imputed.flag = F, vars2regress = "percent.mt", subsample_factor = 1, plt.log.flag = TRUE, RNA.upperlimit = 9000, RNA.lowerlimit = 200, mt.upperlimit = 60, cluster.resolution = 0.4, print.inline = FALSE ) m1.analysisParameters( which.data, which.strata = NULL, organism.filter.flag, organism.include, save.flag = T, save.filename, save.directory = "Preprocessed Datasets/", set_names = NULL, data.imputed.flag = F, vars2regress = "percent.mt", subsample_factor = 1, plt.log.flag = TRUE, RNA.upperlimit = 9000, RNA.lowerlimit = 200, mt.upperlimit = 60, cluster.resolution = 0.4, print.inline = FALSE )
| which.data | Character. Specify input data (input file specification are stored in separate data.frame. See Module 1 for details) |
|---|---|
| which.strata | Character. Specify how input data are subset. Leave unspecified to keep all data. |
| organism.filter.flag | Logical specifying whether inputs should be filtered by species. Recommended if multiple species are present in input. |
| organism.include | Character. Which species to include. One of:
|
| save.flag | Logical specifying whether preprocessed data are saved as RData file. |
| save.filename | Character. Output filename (must include .Rdata suffix) |
| save.directory | Character. output directory (Default is "Preprocessed Datasets/") |
| set_names | Optional character. Label for dataset. |
| data.imputed.flag | Logical specifying wehther data were imputed. Default is F. |
| vars2regress | Character vector specifying which parameters to regress during data scaling. Default is "percent.mt" |
| subsample_factor | Numeric [0,1]. Factor used to subsample data. Recommended during initial data exploration, especially if dataset is large. |
| plt.log.flag | Logical specifying whether QC violin plots are on log scale. |
| RNA.upperlimit | Numeric. Upper limit for number of genes per cell. Default is 200. |
| RNA.lowerlimit | Numeric. Lower limit for number of genes per cell. Default is 9000. |
| mt.upperlimit | Numeric [0,100]. Upper limit for mitochondrial percentage. Default is 60. |
| cluster.resolution | Resolution used for cell clustering. |
| print.inline | Logical specifying wheter data are printed in R notebook. Default is F - recommended if generated flexdashboard output. |
list
list


|
|
{{ duePayment.createdDate | date: 'medium' }} |
{{ duePayment.customerFullName }} |
{{ duePayment.projectName }} |
{{ duePayment.totalPayment | currency: 'IDR':'Rp. ' }} |
{{ duePayment.saldo | currency: 'IDR':'Rp. ' }} |
This field should be at least 0.
This field should be at least 0.
|
|


Network Analysis Report Dashboard
The following diagrams give you the opportunity to have a look on your network performance over time.


Previous: The nextfile
Statement, Up: Control Statements in Actions [Contents][Index]
exit
StatementThe exit
statement causes awk
to immediately stop
executing the current rule and to stop processing input; any remaining input
is ignored. The exit
statement is written as follows:
exit
[return code]
When an exit
statement is executed from a BEGIN
rule, the
program stops processing everything immediately. No input records are
read. However, if an END
rule is present,
as part of executing the exit
statement,
the END
rule is executed
(see The BEGIN
and END
Special Patterns).
If exit
is used in the body of an END
rule, it causes
the program to stop immediately.
An exit
statement that is not part of a BEGIN
or END
rule stops the execution of any further automatic rules for the current
record, skips reading any remaining input records, and executes the
END
rule if there is one. gawk
also skips
any ENDFILE
rules; they do not execute.
In such a case,
if you don’t want the END
rule to do its job, set a variable
to a nonzero value before the exit
statement and check that variable in
the END
rule.
See Assertions
for an example that does this.
If an argument is supplied to exit
, its value is used as the exit
status code for the awk
process. If no argument is supplied,
exit
causes awk
to return a “success” status.
In the case where an argument
is supplied to a first exit
statement, and then exit
is
called a second time from an END
rule with no argument,
awk
uses the previously supplied exit value. (d.c.)
See gawk
’s Exit Status for more information.
For example, suppose an error condition occurs that is difficult or
impossible to handle. Conventionally, programs report this by
exiting with a nonzero status. An awk
program can do this
using an exit
statement with a nonzero argument, as shown
in the following example:
BEGIN { if (("date" | getline date_now) <= 0) { print "Can't get system date" > "/dev/stderr" exit 1 }
print "current date is", date_now close("date") }
NOTE: For full portability, exit values should be between zero and 126, inclusive. Negative values, and values of 127 or greater, may not produce consistent results across different operating systems.
Previous: The nextfile
Statement, Up: Control Statements in Actions [Contents][Index]


|
My Project
|
The base class for a detailed definition of a user-defined p-code operation. More...
#include <userop.hh>
Public Member Functions | |
| UserPcodeOp (Architecture *g, const string &nm, int4 ind) | |
| Construct from name and index. | |
| const string & | getName (void) const |
| Get the low-level name of the p-code op. | |
| int4 | getIndex (void) const |
| Get the constant id of the op. | |
| virtual | ~UserPcodeOp (void) |
| Destructor. | |
| virtual string | getOperatorName (const PcodeOp *op) const |
| Get the symbol representing this operation in decompiled code. More... | |
| virtual void | restoreXml (const Element *el)=0 |
| Restore the detailed description from an XML stream. More... | |
Protected Attributes | |
| string | name |
| Low-level name of p-code operator. | |
| int4 | useropindex |
| Index passed in the CALLOTHER op. | |
| Architecture * | glb |
| Architecture owning the user defined op. | |
The base class for a detailed definition of a user-defined p-code operation.
Within the raw p-code framework, the CALLOTHER opcode represents a user defined operation. At this level, the operation is just a placeholder for inputs and outputs to same black-box procedure. The first input parameter (index 0) must be a constant id associated with the particular procedure. Classes derived off of this base class provide a more specialized definition of an operation/procedure. The specialized classes are managed via UserOpManage and are associated with CALLOTHER ops via the constant id.
The derived classes can in principle implement any functionality, tailored to the architecture or program. At this base level, the only commonality is a formal name of the operator and its CALLOTHER index. A facility for reading in implementation details is provided via restoreXml().
|
inlinevirtual |
Get the symbol representing this operation in decompiled code.
This will return the symbol formally displayed in source code, which can be tailored more than the low-level name
| op | is the operation (in context) where a symbol is needed |
Reimplemented in VolatileWriteOp, and VolatileReadOp.
|
pure virtual |
Restore the detailed description from an XML stream.
The details of how a user defined operation behaves can be dynamically configured from an XML tag.
| el | is the root XML element describing the op |
Implemented in JumpAssistOp, SegmentOp, VolatileWriteOp, VolatileReadOp, InjectedUserOp, and UnspecializedPcodeOp.


The following page contains a sonnet of a
English author
William
Shakespeare who was born in
1564 and died in
1616.

I have seen roses damasked, red and white,
But no such roses see I in her cheeks;
And in some perfumes is there more delight
Than in the breath that from my mistress reeks.
I love to hear her speak, yet well I know
That music hath a far more pleasing sound;
I grant I never saw a goddess go;
My mistress when she walks treads on the ground.
And yet, by heaven, I think my love as rare,
As any she belied with false compare.


Employee Storage Service
Name *:
Surname * :
email * :
address * :
salary * :
company :
Company
Submit
Back
* - required


Here, I focus on a range of items and features that we use in life without giving them a second thought such as Coca Cola, body
Over 92% of computers are infected with Adware and spyware. Such software is rarely accompanied by uninstall utility
If you own an Iphone, you’ve probably already worked out how much fun it is to use it to watch movies-it has that nice big screen
Here, I focus on a range of items and features that we use in life without giving them a second thought such as Coca Cola, body
Over 92% of computers are infected with Adware and spyware. Such software is rarely accompanied by uninstall utility
If you own an Iphone, you’ve probably already worked out how much fun it is to use it to watch movies-it has that nice big screen
Usage of the Internet is becoming more common due to rapid advancement of technology and the power of globalization. Societies are becoming more inter-connected. Thoughts from different
Get StartedUsage of the Internet is becoming more common due to rapid advancement of technology and the power of globalization. Societies are becoming more inter-connected. Thoughts from different
Get Started


In the Java Print Service API, an attribute category is represented by a Java class implementing the Attribute interface, and attribute values are instances of such a class or one of its subclasses. For example, to print 5 copies of a job, an application constructs an instance of the Copies class with the value of 5 and uses the Copies instance to specify the print job. The Copies class represents the attribute category, and the Copies instance represents the attribute value. Because the attribute value is encapsulated as a Java object, the attribute value implies its attribute category, and so an attribute value is usually referred to simply as an attribute. The category and value constitute a key-value pair, which you can add to a set along with other attributes. See Attribute Sets for more information
The Attribute interface defines just two methods: getName and getCategory. The getName method returns a String name for the attribute category. The getCategory method returns the class that first implements that category. To ensure that all implementations of a particular category report the same name and class, subclasses should not override the getName or getCategory methods.
To determine what attribute categories and values are supported by a printer, use the query methods defined in the PrintService interface. A print request does not need to specify attribute values for all of the target printer's supported attribute categories: each supported attribute category has a default value. For example, a printer might support printing up to 999 copies of a job, but if a print request does not specify the number of copies, the printer almost always prints a default of just 1 copy.


This Week in Parties
by Savannah WalshELLE.com takes on the party scene. Here's what everyone was doing out and about this week.
Chef David Kinch and Gwyneth Paltrow
At a Goop by the Beach event in Montecito on October 26.
Nicky Hilton
Attending the Halloween on Top party at The Standard in New York City on October 26.
Kerby Jean-Raymond
Attending the Halloween on Top party at The Standard in New York City on October 26.
Peter Brant Jr. and Erica Pelosini
Attending the Halloween on Top party at The Standard in New York City on October 26.
Neil Patrick Harris
Attending opening night of the Big Apple Circus at NYC's Lincoln Center, where he served as celebrity ringmaster, October 27.
Lin-Manuel Miranda
Attending opening night of the Big Apple Circus at NYC's Lincoln Center, October 27.
Tinsley Mortimer and Scott Kluth
Attending opening night of the Big Apple Circus at NYC's Lincoln Center, October 27.
Matt Dillon
Attending a closing dinner and screening for FFFEST, presented by ILYSM, at Public Kitchen and Public Arts in NYC, October 28.
Dianna Agron
Attending a closing dinner and screening for FFFEST, presented by ILYSM, at Public Kitchen and Public Arts in NYC, October 28.
Molly Gordon
Attending a closing dinner and screening for FFFEST, presented by ILYSM, at Public Kitchen and Public Arts in NYC, October 28.
Lana Condor
Celebrating Prabal Gurung’s 10-year anniversary and release of his first coffee table book at Sunset Tower Hotel in West Hollywood, October 29. Wearing a Prabal Gurung dress with Tasaki Atelier fine jewelry.
Brad Goreski
Celebrating Prabal Gurung’s 10-year anniversary and release of his first coffee table book at Sunset Tower Hotel in West Hollywood, October 29.
Laverne Cox, Prabal Gurung, and Olivia Munn
Celebrating Prabal Gurung’s 10-year anniversary and release of his first coffee table book at Sunset Tower Hotel in West Hollywood, October 29. Cox is wearing a Prabal Gurung dress and Tasaki Atelier jewelry. Munn is wearing a Prabal Gurung shirt and skirt with Tasaki Atelier fine jewelry.
Rachel Zoe
Celebrating Prabal Gurung’s 10-year anniversary and release of his first coffee table book at Sunset Tower Hotel in West Hollywood, October 29. Wearing Prabal Gurung.
Quincy Brown
At the opening of Sandra Sandor and Peter Baldaszti's Nanushka flagship store opening in New York on October 29.
Dylan Sprouse and Barbara Palvin
At the opening of Sandra Sandor and Peter Baldaszti's Nanushka flagship store opening in New York on October 29.
Victor Cruz
At the opening of Sandra Sandor and Peter Baldaszti's Nanushka flagship store opening in New York on October 29.
Hilary Rhoda
At the 3 Moncler Grenoble launch event at Le Chalet at L'Avenue at Saks on October 30.
Violetta Komyshan and Suzanna Komyshan
At the 3 Moncler Grenoble launch event at Le Chalet at L'Avenue at Saks on October 30.
Alicia Vikander
Celebrating the opening of Louis Vuitton Maison Seoul on October 30.
Chloe Kim
Celebrating the opening of Louis Vuitton Maison Seoul on October 30.
Chloë Grace Moretz
Celebrating the opening of Louis Vuitton Maison Seoul on October 30.
Rumer Willis
Attending Cuyana x RAD Talks, a panel discussion on sustainability and fashion for the launch of Cuyana's sustainable collection, Recycled Cashmere, at Club Hollywood in Los Angeles on October 30.
Logan Browning
Attending Cuyana x RAD Talks, a panel discussion on sustainability and fashion for the launch of Cuyana's sustainable collection, Recycled Cashmere, at Club Hollywood in Los Angeles on October 30.
Patricia Arquette
Attending Cuyana x RAD Talks, a panel discussion on sustainability and fashion for the launch of Cuyana's sustainable collection, Recycled Cashmere, at Club Hollywood in Los Angeles on October 30.
Tom Kaulitz and Heidi Klum
Celebrating Halloween at Heidi Klum's 20th annual party, held at Cathédrale New York, October 31.
Georgia Fowler
Celebrating Halloween at Heidi Klum's 20th annual party, held at Cathédrale New York, October 31.
Antoni Porowski and Kevin Harrington
Celebrating Halloween at Heidi Klum's 20th annual party, held at Cathédrale New York, October 31.
David Burtka and Neil Patrick Harris
Celebrating Halloween at Heidi Klum's 20th annual party, held at Cathédrale New York, October 31.
Ben Platt, Bette Midler, and Beanie Feldstein
Attending Midler's 2019 Hulaween at the Hilton in Midtown New York, October 31.
Katie Couric and John Molner
Attending Bette Midler's 2019 Hulaween at the Hilton in Midtown New York, October 31.
Lucy Boynton and Julia Schlaepfer
Attending Bette Midler's 2019 Hulaween at the Hilton in Midtown New York, October 31.
Cyndi Lauper and Judith Light
Attending Bette Midler's 2019 Hulaween at the Hilton in Midtown New York, October 31.
Michael Douglas and Catherine Zeta-Jones
Attending Bette Midler's 2019 Hulaween at the Hilton in Midtown New York, October 31.
Christian Cowan
Celebrating Halloween with a Garden of Good & Evil-themed party at the Fleur Room, atop the Moxy Chelsea on October 31.
Bowen Yang and Julio Torres
Celebrating Halloween with a Garden of Good & Evil-themed party at the Fleur Room, atop the Moxy Chelsea on October 31.
Christian Siriano
Celebrating Halloween with a Garden of Good & Evil-themed party at the Fleur Room, atop the Moxy Chelsea on October 31.


public final class PwCoreSession
extends java.lang.Object
| Modifier and Type | Field and Description |
|---|---|
static int |
SESSION_TIMER
A session is stopped using:
activityStopSession(android.app.Activity) . |
| Modifier | Constructor and Description |
|---|---|
protected |
PwCoreSession() |
| Modifier and Type | Method and Description |
|---|---|
void |
activityStartSession(android.app.Activity activity)
Start or persist session.
|
void |
activityStopSession(android.app.Activity activity)
Stop session.
|
java.lang.String |
getAccessKey()
Get the Access Key that was registered in one of the variations of
registerKeys(Context, String, String, String, String) . |
java.lang.String |
getApplicationId()
Get the Application ID that was passed into
registerKeys(Context, String, String, String, String) . |
protected com.phunware.core.CoreModuleManager |
getCoreModuleManager() |
java.lang.String |
getDeviceId()
Deprecated.
|
java.lang.String |
getEncryptionKey()
Get the Encryption Key that was registered in one of the variations of
registerKeys(Context, String, String, String, String) . |
java.lang.String |
getEnvironmentString()
Debugging helper.
|
int |
getInstalledVersionCode()
Returns the application version code.
|
static PwCoreSession |
getInstance()
Return an instance of
PwCoreSession . |
com.phunware.core.SessionData |
getSessionData()
Get the
SessionData object. |
java.lang.String |
getSessionId(android.content.Context context)
Get the current Session ID.
|
java.lang.String |
getSignatureKey()
Get the Signature Key that was registered in one of the variations of
registerKeys(Context, String, String, String, String) . |
void |
installModules(com.phunware.core.CoreModule... modules)
Install MaaS modules here.
|
protected void |
installModules(PwCoreSession arg0,
com.phunware.core.CoreModule... arg1) |
boolean |
isAppHasUpdated()
Check if the app has started from an update.
|
boolean |
isFreshInstall()
Check if the app has started from a fresh installation.
|
boolean |
isSessionStarted()
Check if the session has been started.
|
static void |
killSession()
This will completely wipe out all session-related data as well as keys.
|
void |
registerKeys(android.content.Context context)
This should be called after
installModules(CoreModule...) and before making any
additional calls to PwCoreSession . |
void |
registerKeys(android.content.Context context,
java.lang.String applicationId,
java.lang.String accessKey,
java.lang.String signatureKey,
java.lang.String encryptionKey)
This should be called after
installModules(CoreModule...) and before making any
additional calls to PwCoreSession . |
protected void |
registerKeys(PwCoreSession arg0,
android.content.Context arg1) |
protected void |
registerKeys(PwCoreSession arg0,
android.content.Context arg1,
java.lang.String arg2,
java.lang.String arg3,
java.lang.String arg4,
java.lang.String arg5) |
public static final int SESSION_TIMER
activityStopSession(android.app.Activity)
. After this amount of
time (in seconds), the session will expire.public static PwCoreSession getInstance()
PwCoreSession
. This will provide a handle to be able to start and stop
sessions.activityStartSession(android.app.Activity)
,
activityStopSession(android.app.Activity)
public static void killSession()
registerKeys(Context, String, String, String, String)
must be called again to start a new session.
This should only be used for testing purposes.public void activityStartSession(android.app.Activity activity)
Activity
onStart()
method.
If a session doesn't exist, then a new session will be created. If a
session was recently stopped using
activityStopSession(Activity)
, then it can be resumed
by calling this method before the session expires.
RuntimeException
will be thrown if
registerKeys(Context, String, String, String, String)
was not called first in Application.onCreate()
.activity
- The current Activity
.SESSION_TIMER
public void activityStopSession(android.app.Activity activity)
Activity
onStop().
The session will be stopped but can be resumed by calling
activityStartSession(Activity)
before the session
expires.
RuntimeException
will be thrown if
registerKeys(Context, String, String, String, String)
was not called first in Application.onCreate()
.activity
- The current Activity
.SESSION_TIMER
public java.lang.String getAccessKey()
registerKeys(Context, String, String, String, String)
.public java.lang.String getApplicationId()
registerKeys(Context, String, String, String, String)
.public java.lang.String getEncryptionKey()
registerKeys(Context, String, String, String, String)
.public java.lang.String getSignatureKey()
registerKeys(Context, String, String, String, String)
.public java.lang.String getSessionId(android.content.Context context)
context
- Non-null context to work with.public com.phunware.core.SessionData getSessionData()
SessionData
object.public int getInstalledVersionCode()
public boolean isAppHasUpdated()
public boolean isFreshInstall()
public boolean isSessionStarted()
public void installModules(com.phunware.core.CoreModule... modules)
PwCoreSession
, including
registerKeys(Context, String, String, String, String)
. This
must be called in Application.onCreate()
and should only be
called once. Example usage:
PwCoreSession.installModules(PwAlertsModule.getInstance(), ...);
modules
- New instance of a CoreModule
.public final void registerKeys(android.content.Context context)
installModules(CoreModule...)
and before making any
additional calls to PwCoreSession
. This must be called in
Application.onCreate()
. This performs initializations and setup
that is required by other method calls.
Use this in place of
registerKeys(Context, String, String, String, String)
if you choose to
set the keys in the manifest.
i.e.
<meta-data android:name="META_DATA_APPLICATION_ID"
android:value="APPLICATION_ID_HERE" />
<meta-data android:name="META_DATA_ACCESS_KEY"
android:value="ACCESS_KEY_HERE" />
<meta-data android:name="META_DATA_SIGNATURE_KEY"
android:value="SIGNATURE_KEY_HERE" />
<meta-data android:name="META_DATA_ENCRYPTION_KEY"
android:value="ENCRYPTION_KEY_HERE" />
context
- application contextpublic final void registerKeys(android.content.Context context, java.lang.String applicationId, java.lang.String accessKey, java.lang.String signatureKey, java.lang.String encryptionKey)
installModules(CoreModule...)
and before making any
additional calls to PwCoreSession
. This must be called in
Application.onCreate()
if not using registerKeys(Context)
.
This performs initializations and setup
that is required by other method calls.context
- Application context.applicationId
- You can find your Application Key in the MaaS portal.accessKey
- A unique key that identifies the client making the request. You can find your Access Key in the MaaS portal.signatureKey
- A unique key that is used to sign requests. The Signature Key is used to both check request authorization and as data integrity. You can find your Signature Key in the MaaS portal.encryptionKey
- The key used to encrypt and decrypt data that is exchanged between the client and the server. You can find your Encryption Key in the MaaS portal.public java.lang.String getEnvironmentString()
@Deprecated public java.lang.String getDeviceId()
getSessionData()
.getDeviceId()
Get the Device ID. This is generated by OpenUDID.protected void installModules(PwCoreSession arg0, com.phunware.core.CoreModule... arg1)
protected void registerKeys(PwCoreSession arg0, android.content.Context arg1)
protected void registerKeys(PwCoreSession arg0, android.content.Context arg1, java.lang.String arg2, java.lang.String arg3, java.lang.String arg4, java.lang.String arg5)
protected com.phunware.core.CoreModuleManager getCoreModuleManager()


Preparation time
less than 30 mins
Cooking time
30 mins to 1 hour
Serves
Serves 6
Preheat the oven to 190C/375F/Gas 5.
Lightly oil a 20cm loose-bottomed cake tin.
Heat the oil and cook the leeks and bacon until leeks are soft. Add the wine and reduce.
Take off the heat and stir in mustard and herbs. Season well.
Make a layer of 1/3 of the potatoes in the tin. Cover with half the leek mixture.
Repeat above. Finish with a final layer of potatoes on top.
Spread over the crème fraîche.
Bake in the oven for 30-40 minutes until the cake is golden and piping hot.


FRESHFARM Share is our multi-farm farmers market subscription service. It provides another important outlet for economic opportunity to our farmers and food producers, and provides a convenient alternative for consumers who wish to access seasonal, locally-grown, fresh foods.
MoreFRESHFARM Share is our multi-farm farmers market subscription service. It provides another important outlet for economic opportunity to our farmers and food producers, and provides a convenient alternative for consumers who wish to access seasonal, locally-grown, fresh foods.
MoreFRESHFARM Share is our multi-farm farmers market subscription service. It provides another important outlet for economic opportunity to our farmers and food producers, and provides a convenient alternative for consumers who wish to access seasonal, locally-grown, fresh foods.
More


Reports while loops which iterate
over collections, and can be replaced with the foreach iteration syntax,
which is available in Java 5 and newer.
This inspection only reports if the project or module is configured to use a
language level of 5.0 or higher.
Powered by InspectionGadgets


Invalid username and password.
You have been logged out.
Please Sign In
In order to view the content of this website you need to sign in.
Username
Password


SVG Examples
Basic Shapes - Rectangles
Solid Color Rectangle
Sorry, your browser does not support inline SVG.
Transparent Rectangles
Sorry, your browser does not support inline SVG.
Sorry, your browser does not support inline SVG.
Sorry, your browser does not support inline SVG.
A rectangle with rounded corners
Sorry, your browser does not support inline SVG.


--- layout: default title: "WM&A" ---
This site contains notes, materials and resources
on web mapping and analysis for the module
ENVS456
-"Web Mapping and Analysis",
from the MSc in Geographic Data Science at the University
of Liverpool.
You can explore the contents of this website by navigating the menu on the left (click on the top-left to expand it).
{{ site.author.name }}[@{{ site.author.twitter }}]
{{ site.author.title }}
{{ site.author.email }}
{{ site.author.add1 }}
{{ site.author.add2 }}
{{ site.author.add3 }}
{{site.repository}}


Patient Warming Blanket
| Stock # | Description | Price | |
|---|---|---|---|
| WBCB-3060 | Patient Warming Blanket Full System | $1,628.57 | |
| WBDC-3060 | Covers Only (25/Case) | $190.00 | |
| WBCT-3060 | Optional Carrying Bag | $180.00 |
Patient heating blanket is used to provide warmth to patients before, during and after imaging and surgical procedures.
Can be used in:
Ultrasound
CT
Radiology
Mammography
Cath Labs
Interventional Suites
Cath Labs
Cardiology
Oncology
Many other modalities.
NOT approved for MRI.
Full system includes battery and temperature control unit (powered by either battery or A/C), bedrail hanger, one reusable blanket, one disposable blanket cover.
Additional disposable covers are also available. Light Blue, shown left.
Optional Carrying Bag available.
Can be used in:
Ultrasound
CT
Radiology
Mammography
Cath Labs
Interventional Suites
Cath Labs
Cardiology
Oncology
Many other modalities.
NOT approved for MRI.
Full system includes battery and temperature control unit (powered by either battery or A/C), bedrail hanger, one reusable blanket, one disposable blanket cover.
Additional disposable covers are also available. Light Blue, shown left.
Optional Carrying Bag available.


Could it be that video games will unleash a nightmarish future of socially adept, physically fit teenagers? Ban this filth now!


We run Christian Camps for families, children, teens and even the young at heart, with Geezer Camp. You can find more details on our camps on this website under "Camps" or you can click the link below to go to the registration page.
If you would like to contribute to God's work here at SLWC in the Christian Camping, Retreat and Community ministry, you are able to do so online. Funds can be directed to specific fundraising efforts (infrastructure, general fund, etc.)
Want to Volunteer? Check out our Spring Work Bee under Events, or:
but when you get right down to it, the purpose of SLWC is simple: to help anyone of any age to know God and grow to become more like Him. Everyone who comes to camp will have the opportunity to explore, discover and decide in regard to faith issues.


2 police officers, transit worker charged in separate cases
PHILADELPHIA (AP) - Officials say two Philadelphia police officers and a transit authority employee have been charged in two separate investigations.
The city's district attorney's office announced the charges Thursday.
Narcotics officer Charles Myers was charged with perjury, records tampering and lying to authorities. Officials say Myers gave court testimony in 2017 about two arrests that was eventually disproven.
Southeastern Pennsylvania Transportation Authority employee Edward Williams was charged with lying to authorities and obstruction. Authorities say a woman alleged he was stalking and harassing her.
Philadelphia Police Homicide Det. Nathaniel Williams, Edward's brother, was also arrested in the same investigation. He's been charged with records and evidence tampering, lying to authorities and obstruction.
Specific information on the pending investigations was not released.
Attorney information couldn't be found for any of the men charged.
Copyright 2019 The Associated Press. All rights reserved. This material may not be published, broadcast, rewritten or redistributed.


John has spent the majority of his career developing Rich Web Applications. Before working with JetBrains, he was a Technical Architect at Roundarch leading large teams in building the latest and greatest in web apps for the Air Force, HBO, and Bloomberg. He even did a stint working on "League of Legends". John now spends his time delivering high-quality video tutorials at egghead.io.
John will start from Scratch and build as much of a Board Game Store as possible using Angular 2. He'll talk through his design decisions and strategies for getting started quickly. All of the code from the session will be available on github after the presentation.


In this post we will explore how to connect RethinkDBs changefeeds to Phoenix’s channels. We are going to build a chat app that stores messages in a RethinkDB database. When a user connects, we listen to a changefeed on the database. As soon as a new message row is inserted into the database, we push the JSON we receive from the changefeed directly to the user.
For this, we will use the very young exrethinkdb library. I’m assuming Elixir and Phoenix are already set up.
Then code of the finished example app can be found at https://github.com/manukall/phoenix_rethinkdb_chat.
First we create a new phoenix application:
mix phoenix.new phoenix_exrethinkdb_chat --no-ecto
Then we need to add exrethinkdb as a dependency. As it is not published on hex yet, we fetch it from Github. In phoenix_exrethinkdb_chat/mix.exs
change the deps method to:
| defp deps do
[{:phoenix, "~> 0.11"},
{:phoenix_live_reload, "~> 0.3"},
{:exrethinkdb, github: "hamiltop/exrethinkdb", ref: "55fb5b5ed892f28b7ae8ee1b2f8e54fb651bd611"},
{:cowboy, "~> 1.0"}]
end
|
Next we let mix install our new dependency. To do this run the following command (inside our new project’s directory):
mix deps.get
Because we do not want to reconnect to RethinkDB every time a new request happens, we will connect to it once when our application starts and keep a reference to the connection.
We will use an Agent
for this.
Create the file lib/phoenix_exrethinkdb_chat/repo.ex
with the following content:
| defmodule PhoenixExrethinkdbChat.Repo do
def start_link do
conn = Exrethinkdb.local_connection
Agent.start_link(fn -> conn end, name: __MODULE__)
{:ok, self}
end
def run(query) do
Agent.get(__MODULE__, fn conn ->
Exrethinkdb.run conn, query
end)
end
end
|
To actually connect to the database when our application starts, we need to add our repo to the supervisor tree. In lib/phoenix_exrethinkdb_chat.ex
add the following to the children
array:
worker(PhoenixExrethinkdbChat.Repo, []),
Next we are going to add our HTML. We just want the page to display a list of messages and one input each for the user’s name and the message.
Replace web/templates/page/index.html.eex
with the following code, which is pretty much stolen from chrismccord’s phoenix chat app:
|

@
<input id="username" type="text" class="form-control"
placeholder="username">

<input id="message-input" class="form-control" />

|
We’re also going to shamelessly steal the javascript from the example chat app. Put the following into web/static/js/app.js
:
| import {Socket, LongPoller} from "phoenix"
class App {
static init(){
var socket = new Socket("ws://" + location.host + "/ws")
socket.connect()
var $status = $("#status")
var $messages = $("#messages")
var $input = $("#message-input")
var $username = $("#username")
socket.onClose( e => console.log("CLOSE", e))
socket.join("rooms:lobby", {})
.receive("ignore", () => console.log("auth error") )
.receive("ok", chan => {
chan.onError( e => console.log("something went wrong", e) )
chan.onClose( e => console.log("channel closed", e) )
$input.off("keypress").on("keypress", e => {
if (e.keyCode == 13) {
chan.push("new:msg", {user: $username.val(), body: $input.val()})
$input.val("")
}
})
chan.on("new:msg", msg => {
$messages.append(this.messageTemplate(msg))
scrollTo(0, document.body.scrollHeight)
})
chan.on("user:entered", msg => {
var username = this.sanitize(msg.user || "anonymous")
$messages.append(`<br/><i>[${username} entered]</i>`)
})
})
.after(10000, () => console.log("Connection interruption") )
}
static sanitize(html){ return $("
").text(html).html() }
static messageTemplate(msg){
let username = this.sanitize(msg.user || "anonymous")
let body = this.sanitize(msg.body)
return(`<p><a href='#'>[${username}]</a> ${body}</p>`)
}
}
$( () => App.init() )
export default App
|
This needs jQuery. Download this version directly from chrismccord’s repo to web/static/vendor/jquery.min.js
.
You can start the server by running mix phoenix.server
now and open http://localhost:4000.
RethinkDB needs to be started for this. For toy projects like this, I prefer to start a local instance by simply running rethinkdb
inside the projects folder.
If you check your browser console, you will see an error telling you that the app can’t connect to your server via websocket. Let’s fix that by adding a channel route.
Open web/router.ex
and add the following:
| socket "/ws", PhoenixExrethinkdbChat do
channel "rooms:*", RoomChannel
end
|
This tells the router to listen for websocket connections at /ws
and use the PhoenixExrethinkdbChat.RoomChannel
module for all requests to channels matching rooms:*
.
Next we need to create this module. Create the file web/channels/room_channel.ex
with the following content:
| defmodule PhoenixExrethinkdbChat.RoomChannel do
use Phoenix.Channel
require Logger
alias Exrethinkdb.Query
alias PhoenixExrethinkdbChat.Repo
def join("rooms:lobby", message, socket) do
send(self, :after_join)
{:ok, socket}
end
def handle_info(:after_join, socket) do
q = Query.table("messages")
result = Repo.run(q)
Enum.each(result.data, fn message -> push socket, "new:msg", message end)
changes = Query.changes(q)
|> Repo.run
Task.async fn ->
Enum.each(changes, fn change ->
push socket, "new:msg", change["new_val"]
end)
end
{:noreply, socket}
end
def handle_in("new:msg", msg, socket) do
q = Query.table("messages")
|> Query.insert(%{user: msg["user"], body: msg["body"]})
Repo.run(q)
{:reply, {:ok, msg["body"]}, assign(socket, :user, msg["user"])}
end
end
|
The join method get’s called when users open the website. It allows everyone to join the channel “rooms:lobby” and sends a after_join
message. This is an Elixir/Erlang message (see http://elixir-lang.org/getting-started/processes.html#send-and-receive) - not a chat message. This message is handled at line 12. We first send all existing chat-messages back to the browser (line 15). Then we subscribe to the messages-table’s changefeed and send each new message as it comes (lines 17-23).
The last step before we can try our application is setting up the database. For now, it is easiest to just create the table manually. Run iex -S mix
in the console to start IEx. In the IEx shell execute Exrethinkdb.Query.table_create("messages") |> PhoenixExrethinkdbChat.Repo.run
.
This is all. Restart your server and reload the browser page. In IEx run the following and watch the new message appear in your browser.
Exrethinkdb.Query.table("messages") |> Exrethinkdb.Query.insert(%{user: "kai", body: "hi"}) |> PhoenixExrethinkdbChat.Repo.run
Changelog
- 2015-04-29: The exrethinkdb dependency now includes the specific git SHA
- 2015-04-29: Added link to github repository


TL; DR
You can create a very functional development environment on Nitrous that is accessible from anywhere that has an internet connection. Unfortunately, this is a flaw. Without a fast connection, Nitrious might not be very accessible.
Technologists are familiar with Moore’s Law which states that the number of transistors doubles every two years. In turn, this affects our computeres and phones by allowing us to have more processing power.
But what happens when your processing power is so efficient that each hardware upgrade is less enticing?
Personally, I consolidate my hardware to optimize it for Software engineering.
Developing a plan
I found myself using the terminal and Google Chrome a lot. I use Virtual machines for doing development on Linux environments.
My desktop is a custom built gaming computer that is seriously over-powered and ridiculously underused; I don’t really consume much media on my computer except for light video watching on Netflix.
Most of my media is stored in the cloud, GitHub or in a 2 TB Western Digital Hard Drive.
Let’s take inventory here:
- A terminal
- A browser
When life gives you SaaS, you take it
There are plenty of websites out there that teach you how to make use of many cloud services in creative ways. Seeing as how it’s increasingly difficult to not be connected in online services, I decided to endure the cloud and try out Nitrous.IO to do my web development from an online IDE.
The things it does good
Nitrous offers a Google Chrome App that is amazing if you log into Chrome. This allows you to have Nitrous installed on any Chrome you want.
The terminal it provides is a full-fledged Linux bash terminal, which means that most of your favorite dotfiles can be implemented in the terminal. I was able to set up a NodeJS server very quickly, and had a fully functional development environment thanks to migrating my dotfiles to a Git repository.
Do not underestimate the ability to have a fully functional development environment within minutes, that can be accessed from anywhere, on any kind of machine. While this might be scary to some, it’s not nearly as bad as you’d think.
The things it does bad
Nitrous can be slow at times, and it requires you to have a fast internet connection. Without a fast internet connection, Nitrous can be slow and lag when doing any text editing.
Having to set up an account on Nitrous might be another flaw for people.


Watch: Lil Durk Throws Wild Pool Party In New WEIRDO H*ES Video
by Team SOHHChicago rapper Lil Durk is keeping the cameras rolling. The hip-hop artist has come through with his new “Weirdo H*es” video premiere. Watch and comment below!
Chicago rapper Lil Durk is keeping the cameras rolling. The hip-hop artist has come through with his new “Weirdo H*es” video premiere. Watch and comment below!