This section describes the core functionalities of clustimage
.
Many of the functionalities are written in a generic manner which allows to be used in various applications.
Core functionalities
The are 5 core functionalities of clustimage
that allows to preprocess the input images, robustly determines the optimal number of clusters, and then optimize the clusters if desired.
fit_transform()
extract_faces()
cluster()
find()
unique()
Fit and transform
The fit_transform function allows to detect natural groups or clusters of images. It works using a multi-step proces of pre-processing, extracting the features, and evaluating the optimal number of clusters across the feature space. The optimal number of clusters are determined using well known methods such as silhouette, dbindex, and derivatives in combination with clustering methods, such as agglomerative, kmeans, dbscan and hdbscan. Based on the clustering results, the unique images are also gathered.
Examples can be found here: clustimage.clustimage.Clustimage.fit_transform()
The fit_transform contains 4 core functionalities that can also be used seperatly which provides more control:
import_data()
extract_feat()
embedding()
cluster()
import_data
The input for the clustimage.clustimage.Clustimage.import_data()
can have multiple forms; path to directory, list of strings and and array-like input.
The following steps are used for which the parameters needs to be set during initialization:
Images are imported with specific extention ([‘png’,’tiff’,’jpg’]),
Each input image can be grayscaled.
Resizing images in the same dimension such as (128,128). Note that if an array-like dataset [Samples x Features] is given as input, setting these dimensions are required to restore the image in case of plotting.
Independent of the input, a dict is returned in a consistent manner.
# Initialize
cl = Clustimage(method='pca')
# Import data
X = cl.import_example(data='flowers')
# Check whether in is dir, list of files or array-like
X = cl.import_data(X)
print(cl.results.keys())
# dict_keys(['img', 'feat', 'xycoord', 'pathnames', 'labels', 'filenames'])
# Note that only the keys img, pathnames and filenames are filled.
extract_feat
Extracting of features is performed in the clustimage.clustimage.Clustimage.extract_feat()
function.
There are different options the extract features from the image as lised below. Note that these settings needs to be set during initialization.
‘pca’ : PCA feature extraction
‘hog’ : hog features extraced
‘pca-hog’ : PCA extracted features from the HOG desriptor
‘ahash’: Average hash
‘phash’: Perceptual hash
‘dhash’: Difference hash
‘whash-haar’: Haar wavelet hash
‘whash-db4’: Daubechies wavelet hash
‘colorhash’: HSV color hash
‘crop-resistant’: Crop-resistant hash
None : No feature extraction
# Initialize
cl = Clustimage(method='pca')
# Import data
X = cl.import_example(data='flowers')
# Check whether in is dir, list of files or array-like
X = cl.import_data(X)
# Extract features using method
Xfeat = cl.extract_feat(X)
print(cl.results.keys())
# dict_keys(['img', 'feat', 'xycoord', 'pathnames', 'labels', 'filenames'])
# At this point, the key: 'feat' is filled.
embedding
The embedding is performed using tSNE in the clustimage.clustimage.Clustimage.embedding()
function.
The coordinates are used for vizualiation purposes only but if desired. However, when setting the cluster_space
parameter to ‘low’ in the cluster
function, the clustering will be performed in the low-dimensional tSNE space.
# Initialize
cl = Clustimage(method='pca')
# Import data
X = cl.import_example(data='flowers')
# Check whether in is dir, list of files or array-like
X = cl.import_data(X)
# Extract features using method
Xfeat = cl.extract_feat(X)
# Embedding using tSNE
xycoord = cl.embedding(Xfeat)
print(cl.results.keys())
# dict_keys(['img', 'feat', 'xycoord', 'pathnames', 'labels', 'filenames'])
# At this point, the key: 'xycoord' is filled.
cluster
The cluster function is build on clusteval, which is a python package that provides various evalution methods for unsupervised cluster validation.
The optimal number of clusters are determined using well known methods such as silhouette, dbindex, and derivatives in combination with clustering methods, such as agglomerative, kmeans, dbscan and hdbscan.
This function can be run after the fit_transform
function to solely optimize the clustering results or try-out different evaluation approaches without repeately performing all the steps of preprocessing.
Besides changing evaluation methods and metrics, it is also possible to cluster on the low-embedded feature space. This can be done setting the parameter cluster_space='low'
.
# Initialize
cl = Clustimage(method='pca')
# Import data
X = cl.import_example(data='flowers')
# Check whether in is dir, list of files or array-like
X = cl.import_data(X)
# Extract features using method
Xfeat = cl.extract_feat(X)
# Embedding using tSNE
xycoord = cl.embedding(Xfeat)
# Cluster
labels = cl.cluster(cluster='agglomerative', evaluate='silhouette', metric='euclidean', linkage='ward', min_clust=3, max_clust=25, cluster_space='high')
print(cl.results.keys())
# dict_keys(['img', 'feat', 'xycoord', 'pathnames', 'labels', 'filenames'])
# At this point, the key: 'labels' is filled.
More examples can also be found here: clustimage.clustimage.Clustimage.cluster()
extract_faces
To cluster faces on images, we first need to detect, and extract the faces from the images.
The extract_faces function does this task.
Faces and eyes are detected using haarcascade_frontalface_default.xml
and haarcascade_eye.xml
in python-opencv
.
Examples can be found here: clustimage.clustimage.Clustimage.extract_faces()
find
The find
function clustimage.clustimage.Clustimage.find()
allows to find images that are similar to that of the input image.
Finding images can be performed in two manners:
Based on the k-nearest neighbour
Based on significance after probability density fitting
In both cases, the adjacency matrix is first computed using the distance metric (default Euclidean). In case of the k-nearest neighbour approach, the k nearest neighbours are determined. In case of significance, the adjacency matrix is used to to estimate the best fit for the loc/scale/arg parameters across various theoretical distribution. The tested disributions are [‘norm’, ‘expon’, ‘uniform’, ‘gamma’, ‘t’]. The fitted distribution is basically the similarity-distribution of samples. For each new (unseen) input image, the probability of similarity is computed across all images, and the images are returned that are P <= alpha in the lower bound of the distribution. If case both k and alpha are specified, the union of detected samples is taken. Note that the metric can be changed in this function but this may lead to confusions as the results will not intuitively match with the scatter plots as these are determined using metric in the fit_transform() function.
Example to find similar images using 1D vector as input image.
from clustimage import Clustimage
import matplotlib.pyplot as plt
import pandas as pd
# Init with default settings
cl = Clustimage(method='pca')
# load example with digits
X, y = cl.import_example(data='mnist')
# Cluster digits
results = cl.fit_transform(X)
# Lets search for the following image:
plt.figure(); plt.imshow(X[0,:].reshape(cl.params['dim']), cmap='binary')
# Find images
results_find = cl.find(X[0:3,:], k=None, alpha=0.05)
# Show whatever is found. This looks pretty good.
cl.plot_find()
cl.scatter(zoom=3)
# Extract the first input image name
filename = [*results_find.keys()][1]
# Plot the probabilities
plt.figure(figsize=(8,6))
plt.plot(results_find[filename]['y_proba'],'.')
plt.grid(True)
plt.xlabel('samples')
plt.ylabel('Pvalue')
# Extract the cluster labels for the input image
results_find[filename]['labels']
# The majority of labels is for class 0
print(pd.value_counts(results_find[filename]['labels']))
# 0 171
# 7 8
# Name: labels, dtype: int64
** Example to find similar images based on the pathname as input.**
from clustimage import Clustimage
# Init with default settings
cl = Clustimage(method='pca')
# load example with flowers
pathnames = cl.import_example(data='flowers')
# Cluster flowers
results = cl.fit_transform(pathnames[1:])
# Lets search for the following image:
img = cl.imread(pathnames[10], colorscale=1)
plt.figure(); plt.imshow(img.reshape((128,128,3)));plt.axis('off')
# Find images
results_find = cl.find(pathnames[10], k=None, alpha=0.05)
# Show whatever is found. This looks pretty good.
cl.plot_find()
cl.scatter()
Examples can be found here: clustimage.clustimage.Clustimage.find()
unique
The unique images can be computed using the unique clustimage.clustimage.Clustimage.unique()
and are detected by first computing the center of the cluster, and then taking the image closest to the center.
Lets demonstrate this by example and the digits dataset.
from clustimage import Clustimage
# Init with default settings
cl = Clustimage(method='pca')
# load example with digits
X, y = cl.import_example(data='mnist')
# Find natural groups of digits
results = cl.fit_transform(X)
# Show the unique detected images
cl.results_unique.keys()
# Plot the digit that is located in the center of the cluster
cl.plot_unique(img_mean=False)
# Average the image per cluster and plot
cl.plot_unique()
# Compute again with other metric desired
cl.unique()
Preprocessing
The preprocessing step is the function clustimage.clustimage.Clustimage.imread()
, and contains 3 functions to handle the import, scaling and resizing of images.
This function requires the full path to the image for which the first step is reading the images and colour scaling it based on the input parameter grayscale
.
If grayscale
is set to True, the cv2.COLOR_GRAY2RGB
setting from python-opencv
is used.
The pre-processing has 4 steps and are exectued in this order.
Import data.
Conversion to gray-scale (user defined)
Scaling color pixels between [0-255]
Resizing
# Import libraries
from clustimage import Clustimage
import matplotlib.pyplot as plt
# Init
cl = Clustimage()
# Load example dataset
pathnames = cl.import_example(data='flowers')
# Preprocessing of the first image
img = cl.imread(pathnames[0], dim=(128,128))
# Plot
plt.figure()
plt.imshow(img.reshape(128,128,3))
plt.axis('off')
imscale
The imscale function clustimage.clustimage.Clustimage.imscale()
is only applicable for 2D-arrays (images).
Scaling data is an import pre-processing step to make sure all data is ranged between the minimum and maximum range.
The images are scaled between [0-255] by the following equation:
Ximg * (255 / max(Ximg) )
imresize
The imresize function clustimage.clustimage.imresize()
resizes the images into 128x128 pixels (default) or to an user-defined size.
The function depends on the functionality of python-opencv
with the interpolation: interpolation=cv2.INTER_AREA
.
Output
The results obtained from the clustimage.clustimage.Clustimage.fit_transform()
or clustimage.clustimage.Clustimage.cluster()
is a dictionary containing the following keys:
* img : Image vector of the preprocessed images.
* feat : Extracted feature.
* xycoord : X and Y coordinates from the embedding.
* pathnames : Absolute path location to the image file.
* filenames : File names of the image file.
* labels : Cluster labels.
For demonstration purposes I will load the flowers dataset and cluster the images.
# Import library
from clustimage import Clustimage
# Initialize
cl = Clustimage(method='pca')
# Import data
pathnames = cl.import_example(data='flowers')
# Cluster flowers
results = cl.fit_transform(pathnames)
# All results are stored in a dict:
print(cl.results.keys())
# Which is the same as:
print(results.keys())
# dict_keys(['img', 'feat', 'xycoord', 'pathnames', 'labels', 'filenames'])
Extract images that belong to a certain cluster and make some plots.
# Extracting images that belong to cluster label=0:
label = 0
Iloc = cl.results['labels']==label
pathnames = cl.results['pathnames'][Iloc]
# Extracting xy-coordinates for the scatterplot for cluster 0:
import matplotlib.pyplot as plt
xycoord = cl.results['xycoord'][Iloc]
plt.figure()
plt.scatter(xycoord[:,0], xycoord[:,1])
plt.title('Cluster %.0d' %label)
# Plot the images for cluster 0:
imgs = cl.results['img'][Iloc]
# Make sure you get the right dimension
dim = cl.get_dim(cl.results['img'][Iloc][0,:])
# Plot
for img, pathname in zip(imgs, pathnames):
plt.figure()
plt.imshow(img.reshape(dim))
plt.title(pathname)
Generic functions
clustimage
contains various generic functionalities that are internally used but may be usefull too in other applications.
wget
Download files from the internet and store on disk.
Examples can be found here: clustimage.clustimage.wget()
# Import library
import clustimage as cl
# Download
images = cl.wget('https://erdogant.github.io/datasets/flower_images.zip', 'c://temp//flower_images.zip')
unzip
Unzip files into a destination directory.
Examples can be found here: clustimage.clustimage.unzip()
# Import library
import clustimage as cl
# Unzip to path
dirpath = cl.unzip('c://temp//flower_images.zip')
listdir
Recusively list the files in the directory.
Examples can be found here: clustimage.clustimage.listdir()
# Import library
import clustimage as cl
# Unzip to path
dirpath = 'c://temp//flower_images'
pathnames = cl.listdir(dirpath, ext=['png'])
set_logger
Change status of the logger.
Examples can be found here: clustimage.clustimage.set_logger()
# Change to verbosity message of warnings and higher
set_logger(verbose=30)
extract_hog
Histogram of Oriented Gradients (HOG), is a feature descriptor that is often used to extract features from image data.
Examples: clustimage.clustimage.Clustimage.extract_hog()
More detailed explanation can be found in the Feature Extraction - HOG section.
Merge/ Expand Clusters
The number of clusters are optimized using the clusteval library. However, when desired it is also possible to manually merge of expand the number of clusters.
Optimized Clusters
import numpy as np
import matplotlib.pyplot as plt
from clustimage import Clustimage
# Initialize
cl = Clustimage()
# Import data
X = cl.import_example(data='flowers')
# Fit transform
cl.fit_transform(X)
# Check number of clusters
len(np.unique(cl.results['labels']))
# 9
# Scatter
cl.scatter(dotsize=75)
# Create dendrogram
cl.dendrogram();
Force to K clusters
Let’s merge some of the clusters and set it to 5 clusters.
# Set to 5 clusters
labels = cl.cluster(min_clust=5, max_clust=5)
# Check number of clusters
len(np.unique(cl.results['labels']))
# 5
# Scatter
cl.scatter(dotsize=75)
# Create dendrogram
cl.dendrogram();
Set clusters by dendrogram threshold
Another manner to change the number of cluster is by specifying the height of the dendrogram (setting a threshold point or cut-off). The number of clusters is automatically derived from that point.
# Look at the dendrogram y-axis and specify the height to merge clusters
dendro_results = cl.dendrogram(max_d=60000)
# Check number of clusters
len(np.unique(cl.results['labels']))
# 3
# Scatter
cl.scatter(dotsize=75)
Selection on the cluster labels
# All results are stored in cl.results
cl.results.keys()
['img', 'feat', 'xycoord', 'pathnames', 'labels', 'url', 'filenames', 'predict']
# The cluster labels are stored in labels
cl.results['labels']
# Select cluster 0
Iloc = cl.results['labels']==0
# Select files for cluster 0
cl.results['pathnames'][Iloc]
# Select filenames for cluster 0
cl.results['filenames'][Iloc]
# Select xy-coordinates for cluster 0
cl.results['xycoord'][Iloc]


Everyone wishes finding that perfect celebrity boyfriend was as simple as shopping for produce. Well now it is! Simply fill out the survey below and our expert algorithms will match you to the a-list celebrity that will best get your engines revvin'. Have fun, and don't forget to invite us to the wedding!
Your tastes run a bit more traditional, , which makes family-man and longtime Law & Order SVU fixture a perfect match. His hunky demeanor and easy-going attitude will sweep you off your feet in a very approachable, non-threatening way. Take this one home to your momma - she'll really appreciate his perky buns.
 Your intelligence and artsy-fartsy tastes pair nicely with this acclaimed film director. Get ready for interesting vacations in countries you've never heard of and spending hours watching him fix the cinematograph. Feel free to take this one home to mother, but be warned that he will definitely bring Bill Murray with him.
 Don't. Give. A. Fuck. Which is why music's baddest bad boy is perfect for you. His lavish lifestyle may seem enticing at first, and that's because it is.  A lot. That's the price of fame!
 Which makes this hillarious goofball a perfect match for you. He tells a good joke, loves podcasts, and is a secret hunk! What more could you want? (NOTE: He is not the son of Danny Glover. No relation.)
Our sophisticated algorithms couldn't find the perfect celebrity match for you. Please retake the quiz and provide different responses, or leave the site and feel at peace with the knowledge that no one man can tie you down.


If you have a query regarding adopting an animal, membership, donating to AnimalShelter, knowing of an animal in need or any query about the work we do, please speak to our Supporter Care Team 7 days a week 8am - 10pm.
4-7 Langtry Walk, London, UK
+44 20 7123 1234 - 20 7123 8374


openssl x509
OpenSSL command to manage X.509 certificates.
More information: home page
- Display certificate information:
openssl x509 -in filename.crt -noout -text
- Display a certificate's expiration date:
openssl x509 -enddate -noout -in filename.pem
- Convert a certificate between binary DER encoding and textual PEM encoding:
openssl x509 -inform der -outform pem -in original_certificate_file -out converted_certificate_file
- Store a certificate's public key in a file:
openssl x509 -in certificate_file -noout -pubkey -out output_file


Prvi far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar. The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn’t listen. She packed her seven versalia, put her initial into the belt and made herself on the way. When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. Pityful a rethoric question ran over her cheek, then
Drugi far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar. The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn’t listen. She packed her seven versalia, put her initial into the belt and made herself on the way. When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. Pityful a rethoric question ran over her cheek, then
Lorem ipsum dolor sit amet consectetur adipisicing elit. Eius, magnam eum nobis architecto ipsam, amet voluptate corporis ad quasi explicabo est? Debitis optio dignissimos ratione exercitationem, neque veniam dolores! Eveniet. Treci far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar. The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn’t listen. She packed her seven versalia, put her initial into the belt and made herself on the way. When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. Pityful a rethoric question ran over her cheek, then
Fourth far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar. The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn’t listen. She packed her seven versalia, put her initial into the belt and made herself on the way. When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. Pityful a rethoric question ran over her cheek, then
LINK ZA DRUGU STRANU!


'I’ve learned' Reece Brown makes this admission about his time at Birmingham City
Birmingham City latest | All the latest Blues news and views from BirminghamLive as a former Blues starlet discusses his time at St Andrew's
by Brian Dick, https://www.facebook.com/blueswriterbriandick/?fref=tsHuddersfield Town hopeful Reece Brown insists he has learned lessons from his time at Birmingham City .
The talented midfielder came through the system at Blues, making his debut at just 17-years-old but then struggling to stay in the team.
Lee Clark handed him eight appearances in the 2013/2014 season but Gary Rowett’s arrival saw the play-maker’s opportunities severely limited.
Indeed Brown ended up being briefly suspended under Rowett before being allowed to leave on a free transfer in the summer of 2017.
Two solid years at Forest Green tempted Huddersfield to hand him a second chance in the second tier - although he has only played once this season.
Birmingham City latest
This is your round up of all things Birmingham City; the one-stop shop that will keep you updated on the latest goings on at the club and beyond.
Transfers, injuries, match-days and managers, we’ve got you covered.
We’ll be bringing the very latest on the Blues throughout the week and around the clock.
Make sure you keep yourself updated with our handy daily catch up...
Must reads...
- Garry Monk on his reunion with Birmingham City
- Lee Camp's classy message after his Birmingham City benching
- Pep Clotet explains that Birmingham City call - and who impressed him at Huddersfield
- Birmingham City player ratings as Jefferson Montero makes an impact at Huddersfield
- Reece Brown makes this admission about his time at Birmingham City
For all your latest BCFC news, opinion, analysis and transfer gossip, click here
You can follow our Blues reporter Brian Dick on Twitter, and his email address is<EMAIL_ADDRESS>He was not involved in Saturday’s 1-1 draw between his current and former clubs - but told the match-day programme how he has learned how to deal with that situation.
“After my debut I tried to kick on but the Championship is a difficult league. There was a little stage where I was playing a few games, then later on in the season I didn’t really feature that much,” Brown told The Terrier.
“Of course, I can’t speak for everyone but for me it was mentally hard. You get in there, play, I didn’t play badly I don’t think and then to come out of the first team, it’s not nice.
"It’s about having a good mindset really, to fight and get back into is as soon as possible.
“If you do make your debut, then come out of the team, you just have to stay focused and keep grafting and soon it’ll come again.
“Since, I’ve been here, I haven’t really featured so far this year, but I’ve kind of been through it before. When I was at Birmingham, I might not have dealt with it in the best way.
“I’ve learned that’s not the way to get what you want, you have to stay focused, work even harder and when the opportunity comes, try and take it. “
Brown joined Blues from Sedgley White Lions as a ten-year-old and spent more than a decade at the club.
“Being there was everything to me,” he continued. “When you’ve been there for ten or 11 years, you’re going to feel every emotion at the club. There were fun times, lots of fun times.
“When I was 14 or 15 years old, I started getting the opportunity to play on the pitch at St Andrew’s...at that point you’re around older boys in the changing room so it all starts to become real.
“It was just another game to me. Obviously, you think abot the bigger boys but football is just football to me. From a kid I’ve played with people older than me. so it wasn’t all that new.”


Ready to start the bot!
Profile: Custom
Please check again that your item, profile and settings are correctly
configured!
It is prefered to start the bot about 2 minutes before the drop. A window
with captchas will open and you will have to constantly fill them out.
For more information go to the about page.


Id: 485
Name: Modern Rick
Status: Alive
Species: Human
Type:
Gender: Male
OriginName: unknown
OriginUrl:
LocationName: Citadel of Ricks
LocationUrl: https://rickandmortyapi.com/api/location/3
Image: https://rickandmortyapi.com/api/character/avatar/485.jpeg
Episode: ['https://rickandmortyapi.com/api/episode/28']
Url: https://rickandmortyapi.com/api/character/485
Created: 2018-05-22T17:36:56.925Z


{{updatedLength}} of {{length}} given entries were updated.
Several erroneous entries were encountered. Please make sure these entries adhere to the given guidelines. The following entries are considered erroneous:


| Website Hosting (Free SSL certificate included) |
£160 per year payable in advance |
| Wordpress or Joomla Hosting (Free setup) |
£160 per year payable in advance |
| Website Design |
This price of course is very dependant on what you want, how many pages, and what extra features you need. Call or email for a quote. |
| Salesforce CRM customisation done for many different companies. |
Call or fill in contact form for a consultation. |
| CRM hosting (SugarCRM) |
£500 set-up and £150 per month for up to 5 users. This includes database backup. |
| Server setup and networking. CAT5 and CAT6 cabling |
Call for a quote |
| Small Business and Home I.T support |
£0.40 per mile travel costs plus £30 per hour support charge. |
| We offer CCTV installation and any update or upgrade to CCTV |
Call for a quote |
| Advice |
FREE |


API OverviewLast updated: 2020-03-04
The MedCab predictive API allows access to a machine learning process for predicting strains of therapeutic herbal treatments. With limited endpoints, the API has a narrow range of options but is nonetheless powerful. Although authentication is required to register for and use the main service, the predictive API, written by the MedCab development team's Data Engineers is currently open.
Endpoints
http://medcab1-api.herokuapp.com/| Method | URL | Description |
|---|---|---|
| POST | /predict | Receives json input from user, returns strain recommendation in corresponding format |
Examples
The following examples use python3
and requests
POST /predict
Input:
Output:


Musical Institute
|
No. |
Name |
No. |
Name |
No. |
Name |
|
1 |
Thelma
Hartshorn |
10 |
Clara
Ludy |
19 |
David
Milton Drum |
|
2 |
Rose
Barker |
11 |
Eunice
Eisenbarth |
20 |
Allen
Eddy |
|
3 |
Ruth
Eddy |
12 |
Olive
Fox |
21 |
Mr.
Fox * |
|
4 |
Dalley
Jones |
13 |
Mary
Fox |
22 |
William
Fox |
|
5 |
Lena
Wood |
14 |
Blanche
Drum |
23 |
Homer
Drum |
|
6 |
Josephine
Drum |
15 |
Laura
Wohnhas |
24 |
Reubel
Fox |
|
7 |
Celesti
Fox |
16 |
Freda
Cehrs Cox |
25 |
Leroy
Jones ** |
|
8 |
Clara
Backman Eddy |
17 |
Vernon
Drum |
26 |
Prof.
W. J. Gorrell |
|
9 |
Nellie
Ludy |
18 |
Ellsworth
Eddy |
27 |
Everett
Jones ** |
* Doris Eisenbarth Hart's
grandfather
** Dorothy
(Jones) Bayes uncle
Musical Institute
This picture is labeled, Musical Institute, West
Union, Ohio
If you can contribute additional names to members of the Institute, please contact the webmaster of this site, Richard Harrington
Photo taken May 1911
Provided by Betty Goudy Cronin -- e-mail: Betty
Cronin
A second copy of this photo plus
some names provided by: Dorothy Bayes
Click here for the Short-Cut Table of Contents


| I l@ve RuBoard |
If you use different modules and/or libraries, you always have the potential for name clashes. This is because modules and libraries might use the same identifier for different things. This problem was solved by the introduction of namespaces into C++ (see Section 2.2.4, for an introduction to the concept of namespaces). A namespace is a certain scope for identifiers. Unlike a class, it is open for extensions that might occur at any source. Thus, you could use a namespace to define components that are distributed over several physical modules. A typical example of such a component is the C++ standard library, so it follows that it uses a namespace. In fact, all identifiers of the C++ standard library are defined in a namespace called std.
According to the concept of namespaces, you have three options when using an identifier of the C++ standard library:
You can qualify the identifier directly. For example, you can write std::ostream instead of ostream. A complete statement might look like this:
std::cout << std::hex << 3.4 << std::endl;
You can use a using declaration (see page 17). For example, the following code fragment introduces the local ability to skip std:: for cout and endl.
using std::cout; using std::endl;
Thus the example in option 1 could be written like this:
cout << std::hex << 3.4 << endl;
You can use a using directive. (see page 17). This is the easiest option. By using a using directive for namespace std, all identifiers of the namespace std are available as if they had been declared globally. Thus, the statement
using namespace std;
allows you to write
cout << hex << 3.4 << endl;
Note that in complex code this might lead to accidental name clashes or, worse, to different behavior due to some obscure overloading rules. You should never use a using directive when the context is not clear (such as in header files, modules, or libraries).
The examples in this book are quite small, so for my own convenience, I usually use the last option throughout this book in complete example programs.
| I l@ve RuBoard |


Contiguous Cache Example
The simplest way to use QContiguousCache is to cache as items are requested. When a view requests an item at row N it is also likely to ask for items at rows near to N.
QVariant RandomListModel::data(const QModelIndex &index, int role) const { if (role != Qt::DisplayRole) return QVariant(); int row = index.row(); if (row > m_rows.lastIndex()) { if (row - m_rows.lastIndex() > lookAhead) cacheRows(row-halfLookAhead, qMin(m_count, row+halfLookAhead)); else while (row > m_rows.lastIndex()) m_rows.append(fetchRow(m_rows.lastIndex()+1)); } else if (row < m_rows.firstIndex()) { if (m_rows.firstIndex() - row > lookAhead) cacheRows(qMax(0, row-halfLookAhead), row+halfLookAhead); else while (row < m_rows.firstIndex()) m_rows.prepend(fetchRow(m_rows.firstIndex()-1)); } return m_rows.at(row); } void RandomListModel::cacheRows(int from, int to) const { for (int i = from; i <= to; ++i) m_rows.insert(i, fetchRow(i)); }
After getting the row, the class determines if the row is in the bounds of the contiguous cache's current range. It would have been equally valid to simply have the following code instead.
while (row > m_rows.lastIndex()) m_rows.append(fetchWord(m_rows.lastIndex()+1); while (row < m_rows.firstIndex()) m_rows.prepend(fetchWord(m_rows.firstIndex()-1);
However a list will often jump rows if the scroll bar is used directly, resulting in the code above causing every row between the old and new rows to be fetched.
Using QContiguousCache::lastIndex() and QContiguousCache::firstIndex() allows the example to determine what part of the list the cache is currently caching. These values don't represent the indexes into the cache's own memory, but rather a virtual infinite array that the cache represents.
By using QContiguousCache::append() and QContiguousCache::prepend() the code ensures that items that may be still on the screen are not lost when the requested row has not moved far from the current cache range. QContiguousCache::insert() can potentially remove more than one item from the cache as QContiguousCache does not allow for gaps. If your cache needs to quickly jump back and forth between rows with significant gaps between them consider using QCache instead.
And thats it. A perfectly reasonable cache, using minimal memory for a very large list. In this case the accessor for getting the words into the cache generates random information rather than fixed information. This allows you to see how the cache range is kept for a local number of rows when running the example.
QString RandomListModel::fetchRow(int position) const { return QString::number(rand() % ++position); }
It is also worth considering pre-fetching items into the cache outside of the application's paint routine. This can be done either with a separate thread or using a QTimer to incrementally expand the range of the cache prior to rows being requested out of the current cache range.
Files:


The hex encoded string:
1b37373331363f78151b7f2b783431333d78397828372d363c78373e783a393b3736
... has been XOR'd against a single character. Find the key, decrypt the message.
You can do this by hand. But don't: write code to do it for you.
How? Devise some method for "scoring" a piece of English plaintext. Character frequency is a good metric. Evaluate each output and choose the one with the best score.
You now have our permission to make "ETAOIN SHRDLU" jokes on Twitter.


{{thing.description}}
Give permission to visualise your data with Grafana{{property.description}}
This thing contains no property yet.
ID: {{thing.id}}
Here is the list of properties this Thing can access, beyond its own properties.
| Property | From Thing | Shared with |
|---|---|---|
|
{{access.name}} {{access.id}} |
{{access.thing.name}} {{access.thing.id}} Owned by {{access.thing.personId}} |
{{access.sharedWith}} |
Here you can delete your Thing.
Attention: this action cannot be undone. It will erase all properties attached to
this
Thing as well as their data.


Thousand miles of your journey begins with "Shaibya Travels & Treks . We are warmly delighted to welcome you in our Trekking company . Our company has been established in 2016 AD in Nepal. Since then it has been offering a wide range of adventures of inbound and outbound as well as Air ticketing of any destination from one place. It is one of the emerging travel and trekking company. We are affiliated with NTB, NATTA, TAAN, NMA, UFTAA, and PATA & IATA.
14N/15D
NRS: 30,000
19N/20D
NRS: 40,000


20 “hidden” destinations of purported health spendings in 2020 proposed budget
by Joshua Olufemi and Adedigba AdebowaleAbout N5 billion will go to service major construction works in the nation’s health sector in the 2020 proposed budget, but development experts, working around accountability process in public budgeting, worry that this may come to waste because the projects they are nominated to develop are not captured in the vision of the Ministry of Health, the regulatory institution for health development in the country.
In the proposed budget, a minimum of 20 health-related projects got generous appropriation but only for construction purposes and without regard for how such health facilities will be subsequently manned, staffed and remunerated, since the Ministry of Health which has these responsibilities has been bypassed by this budgetary arrangement.
“How do you allow a whopping N5 billion in public spending to create projects when you make no provisions or appropriation on how to staff them or give them functional meaning?” Nkem Ilo, chief executive at Public and Private Development Centre [PPDC], lamented in an interview with Dataphyte.
Over the years, construction is a notorious subhead through which corruption has been enabled in the Nigerian contracting and procurement process, and Ms Ilo, whose organisation is a leading voice for transparency and accountability in the Nigerian civic sector, worries that the same fate that had befallen most abandoned projects “invariably awaits” these 20 nominated projects in the 2020 proposed budget.
Ms Ilo’s position is shared by Segun Elemo, the executive director at Paradigm Leadership Support Initiative [PLSI], who worries as well that unless the “integrity deficit driving budgeting process in the country” is courageously addressed, the “problem of budget padding” will always lead to wasteful investments” such as placement of projects in wrong or unrelated agencies.
“This is what is responsible for the series of uncompleted or abandoned projects in the country, and it is all because of the absence of needs-assessment and political underhand in project allocation,” Mr Elemo said.
Influential project monitoring reports from bodies like UDEME (PTCIJ), TRACKA (BudgIT) and Value for Money (PLSI) corroborate the concern about government profligacy through multiple spending around single projects spread across or hidden in many agencies that were ultimately not completed or abandoned by MDAs.
20 Nominated Silent Destinations for Hiding Projects
The 2020 proposed budget offers the best illustration of this art of hiding projects in “silent” institutions. In this particular case, whereas the key reference was for health spending, the nominated hidden outlets are 20 non-health institutions otherwise called Ministries, Departments and Agencies or MDAs.
| Ministry / Agency | Code | Name of project | Amount | Category |
|---|---|---|---|---|
| BORDER COMMUNITIES DEVELOPMENT AGENCY (BCDA) HQTRS | 23020106 | CONSTRUCTION / PROVISION OF HOSPITALS / HEALTH CENTRES | 41500000 | Construction |
| BORDER COMMUNITIES DEVELOPMENT AGENCY (BCDA) HQTRS | ERGP22144844 | CONSTRUCTION OF PRIMARY HEALTH CENTRE WITH SOLAR POWERED BOREHOLE AND | 50000000 | Construction |
| OVERHEAD TANK IN DELTA STATE | ||||
| BORDER COMMUNITIES DEVELOPMENT AGENCY (BCDA) HQTRS | ERGP23139483 | CONSTRUCTION OF PRIMARY HEALTH CENTRE WITH SOLAR POWERED BOREHOLE AND | 41500000 | Construction |
| OVERHEAD TANK | ||||
| BORDER COMMUNITIES DEVELOPMENT AGENCY (BCDA) HQTRS | ERGP28139464 | CONSTRUCTION OF SOLAR POWERED BOREHOLE AND OVERHEAD TANK IN PRIMARY | 15000000 | Construction |
| HEALTH CENTER AT ADA | ||||
| BORDER COMMUNITIES DEVELOPMENT AGENCY (BCDA) HQTRS | ERGP28139469 | CONSTRUCTION OF SOLAR POWERED BOREHOLE AND OVERHEAD TANK IN PRIMARY | 15000000 | Construction |
| HEALTH CENTER ATAUKE | ||||
| CROSS RIVER RBDA | ERGP28113603 | HEALTH SERVICES AND OTHER DISEASE SENSITIZATION WORKSHOP. | 5000000 | Health Promotion |
| FEDERAL COLLEGE OF ANIMAL HEALTH AND PRODUCTION TECHNOLOGY - IBADAN | 23020106 | CONSTRUCTION / PROVISION OF HOSPITALS / HEALTH CENTRES | 25000000 | Construction |
| FEDERAL MINISTRY OF NIGER DELTA HQTRS | 23020106 | CONSTRUCTION / PROVISION OF HOSPITALS / HEALTH CENTRES | 250000000 | Construction |
| FEDERAL MINISTRY OF NIGER DELTA HQTRS | ERGP1130412 | CONSTRUCTION/EQUIPPING OF HEALTH CENTRES IN ABIA , AKWA-IBOM, BAYELSA, | 50000000 | Construction |
| CROSS-RIVERS, DELTA, EDO, IMO, ONDO & RIVERS STATES | ||||
| FEDERAL MINISTRY OF NIGER DELTA HQTRS | ERGP25104152 | HEALTH CENTRES IN ABIA , AKWA-IBOM, BAYELSA, CROSS RIVERS, DELTA, EDO, IMO, | 100000000 | Construction |
| ONDO & RIVERS STATES | ||||
| FEDERAL MINISTRY OF NIGER DELTA HQTRS | ERGP25136024 | CONSTRUCTION OF OBIEKWELE HEALTH CENTRE AT NDOKWA/UKWAI FEDERAL | 27500000 | Construction |
| CONSTITUENCYCONSTRUCTION OF OBIEKWELE HEALTH CENTRE AT NDOKWA/UKWAI FEDERAL | ||||
| CONSTITUENCY | ||||
| FEDERAL MINISTRY OF NIGER DELTA HQTRS | ERGP25136040 | CONSTRUCTION OF UCHI PRIMARY HEALTH CENTRE | 25000000 | Construction |
| FEDERAL MINISTRY OF NIGER DELTA HQTRS | ERGP25142416 | CONSTRUCTION OF HEALTH CENTER AT AKWA OBIO INWANG, ENEYO SOUTH WARD, | 27500000 | Construction |
| AKPABUYO LOCAL GOVERNMENT AREA, CROSS RIVER STATE | ||||
| FEDERAL MINISTRY OF WATER RESOURCES - HQTRS | ERGP28111126 | CONSTRUCTION OF SANITATION AND HYGIENE FACILITIES IN INSTITUTIONS; SCHOOLS AND HEALTH CENTRES | 61982742 | Construction |
| FEDERAL MINISTRY OF WORKS AND HOUSING | ERGP27141016 | SLUM UPGRADE; COMPLETION OF CLASSROOM BLOCKS, PRIMARY HEALTH CARE, SKILL ACQUISITION CENTRE, BOREHOLES, ELECTRIFICATION, 500/300 KVA TRANSFORMERS PROVISION, HANDPUMPS AND UPGRADING OF ROADS, DRAINAGES AND EROSION CONTROL IN DAMATURU LGA-YOBE STATE,PROVISION OF PERIMETER FENCE AT FEDERAL UNIVERSITY DUTSE AND THE SIX (6) GEOPOLITICAL ZONES AND COMPLETION/RENOVATION OF CLASSROOMS BLOCKS ACROSS FEDERAL CONSTITUENCIES |<PHONE_NUMBER> | Construction |
| MINISTRY OF HUMANITARIAN AFFAIRS, DISASTER MANAGEMENT AND SOCIAL DEVELOPMENT | 23030105 | REHABILITATION / REPAIRS - HOSPITAL / HEALTH CENTRES | 150000000 | Rehabilitation/Repairs |
| NATIONAL CENTRE FOR WOMEN DEVELOPMENT | 23010122 | PURCHASE OF HEALTH / MEDICAL EQUIPMENT | 2375402 | Medical Equipment |
| NATIONAL INSTITUTE FOR SECURITY STUDIES | 23010122 | PURCHASE OF HEALTH / MEDICAL EQUIPMENT | 39643816 | Medical Equipment |
| NATIONAL INTELLIGENCE AGENCY | 23030105 | REHABILITATION / REPAIRS - HOSPITAL / HEALTH CENTRES | 969917851 | Rehabilitation/Repairs |
| NATIONAL LOTTERY TRUST FUND | ERGP25126535 | PURCHASE OF MEDICALS AND HEALTH EQUIPMENT | 35000000 | Medical Equipment |
In the proposed budget, an agency like the Border Communities Development Agency is to construct and provision hospitals/health centres and provide solar-powered borehole facilities, totalling about N150 million. Yet nowhere in the appropriation is there a vision of the human resource component of the personnel that will run the projects if they ever get completed and meet the specific health standards that the Ministry of Health which has been sidelined solely has discretion for.
The Ministry of Niger Delta also proposes the same spending jamboree of constructing and providing hospitals/health centres in the oil-producing states cohorts totalling about half a billion Naira, again without a vision of the human resource component of the personnel that will run the projects, if it ever gets completed.
The National Intelligence Agency, NIA, the country’s spy outfit, leads the trail in grabbing the lion’s share of this hidden spending with almost a billion Naira [N969.9million] in generous gifting for the “rehabilitation/repairs of hospital/health”.
Overall, the 2020 proposed budget provides for health-related expenditures worth N171 billion (N171,146,082,086) which are not within the regulatory purview of the health ministry, according to DATAPHYTE analysis. Details of these additional health spendings in the 2020 proposed budget are listed in the table below.
| Component | Proposed |
|---|---|
| Construction / Provision of Hospitals / Health Centre |<PHONE_NUMBER> |
| Counterpart Funding Including Global Fund/Health/ Refund to GAVI |<PHONE_NUMBER> |
| Drugs & Medical Supplies |<PHONE_NUMBER> |
| GAVI / Immunization |<PHONE_NUMBER>6 |
| Medical Consulting | 194060190 |
| Medical Expenses |<PHONE_NUMBER> |
| National Agency for the Control of AIDS (NACA) |<PHONE_NUMBER> |
| NHIS Contribution by FGN |<PHONE_NUMBER>7 |
| NHIS (Military Retirees) |<PHONE_NUMBER>8 |
| Purchase of Health / Medical Equipment |<PHONE_NUMBER>1 |
| Rehabilitation / Repairs - Hospital / Health Centre |<PHONE_NUMBER> |
| State House Medical Centre | 723003927 |
| TOTAL |<PHONE_NUMBER>86 |
As the table above illustrates, some of the funds are genuinely targeted to address special health issues such as immunization and HIV/AIDs. Other important health allocations in the budget are the national health insurance scheme; the allocation of N2.24 billion to the National Agency for the Control of AIDS (NACA); the N82.7 billion Federal Government’s contribution to the National Health Insurance Scheme (NHIS) and the special budget of N723 million to the State House Medical Centre.
In the same vein, some N11.74 billion NHIS fund is allocated to military retirees, as well as the GAVI Immunization project worth N22.73 billion, plus “the Global Fund Counterpart funding, including refund to GAVI” with the budget of N5.5 billion.
The chart below shows the categorization of these health budgets to non-health agencies.
The chart shows that allocation for hospitals (or health centre) is N7.77 billion (N7,774,719,768); N2.53 billion for Drugs and medical supplies; N194.06 million for Medical Consulting; and N4.3 billion for Medical Expenses.
The purchase of health/medical equipment across ministries had N26.64 billion. A total of N4.05 billion (N4,055,919,099) for rehabilitation/repairs of Hospitals and Health Centres.
Implications of the extra 171.15 billion
DATAPHYTE’s first analysis of the allotted funds to the Health sector through the Ministry of Health showed the federal government proposed N427.3 billion. This is only 4.14 per cent of the proposed budget for 2020 as budgetary allocation to the Federal Ministry of Health. The report decried the government’s N44.50 billion allocation to the Basic Health Care Fund (BHCF) as against the right allocation which was estimated to be N103.3 billion. This estimate is a 1% measure of the 2020 Consolidated Revenue Fund (CRF) of N10.33 trillion.
The N44.50 billion allocation to BHCF violates the National Health Act (2014). The Act stipulates that at least one per cent of the Consolidated Revenue Fund (CRF) must be allocated to BHCF.
The sum of extra health budgets in related and unrelated MDAs, as shown above, is 171,146,082,086. This amount added to the Ministry of Health’s budget of N424,022,751,254 would come to N594.17 billion (595,168,833,340).
Even if this is considered an increase in federal government’s total commitment to health from 4.14 per cent to 5.75 per cent, yet the value is quite low for Nigeria considering the troubling health indicators.
A brief overview of these other MDAs shows that The Nigeria Building and Road Research Institute got over one billion naira. Also, the Nigeria Intelligence Agency received N969 million. The federal Ministry of Niger Delta got N480 million.
The Border Communities Development Agency (BCDA), N163 million. The new Ministry of Humanitarian Affairs also got N150 million to rehabilitate hospital. Other agencies were: the EFCC with N12 million. Nigeria Atomic Energy Commission got N100 million.
Overall, the budgeting process in the country still requires a more robust needs assessment. Despite the incessant budget scrutiny by civil society organizations, the Nigerian government continues to allocate projects funds to wrong ministries and agencies of government. This violates the basic principles of budgeting and public contracting and might explain the unending corruption in the implementation of government projects.


#include <EngineHDREnvMap.hpp>
◆ EngineHDREnvMap() [1/2]
| EngineHDREnvMap::EngineHDREnvMap |
( |
| ) |
|
◆ EngineHDREnvMap() [2/2]
| EngineHDREnvMap::EngineHDREnvMap |
( |
const std::string & |
cubeMapDir, |
|
|
const std::string & |
extension |
|
) |
| |
◆ ~EngineHDREnvMap()
| EngineHDREnvMap::~EngineHDREnvMap |
( |
| ) |
|
|
virtual |
◆ drawScene()
| void EngineHDREnvMap::drawScene |
( |
const EngineCamera & |
camera | ) |
const |
|
virtual |
◆ initCubeMap()
| bool EngineHDREnvMap::initCubeMap |
( |
const std::string & |
cubeMapDir, |
|
|
const std::string & |
extension |
|
) |
| |
|
virtual |
◆ updateScene()
| void EngineHDREnvMap::updateScene |
( |
float |
dt | ) |
|
|
virtual |
◆ rotation
| float EngineHDREnvMap::rotation |
|
private |
The documentation for this class was generated from the following files:
- C:/Users/User/Desktop/Github/Procedural-Terrain-Estimator/Renderer/TerrainRenderer/EngineHDREnvMap.hpp
- C:/Users/User/Desktop/Github/Procedural-Terrain-Estimator/Renderer/TerrainRenderer/EngineHDREnvMap.cpp


Various forms of software are being used by groups developing Management Strategy Evaluation (MSE) applications. These code, packages in R and libraries in languages such as C++ for the conditioning of Operating Models (OMs), running simulations, building Management Procedures (MPs) and presenting results and summary statistics.
In some cases existing stock assessment methods, such as Multifan-CL and Stock Synthesis, are being used to construct OMs conditioned on stock assessment data sets and to develop Management Procedures (MPs), e.g. ASPIC.
Much of the software is available from github repositories or in the case of R packages from CRAN.
Contributions and updates are welcome and encouraged. The source file for this page is in a GitHub repository so that pull requests are also possible.
RFMOs
CCSBT
The MSE process was fully completed in costume-made software programmed in ADMB which include the operating model (for assessments), projections, and management procedures. The source code and R-package for evaluating outputs is maintained through a private (available to members) git repository. The main link for the commission for reports etc can be found at http://www.ccsbt.org.
IATTC
SS3 is being used as a platform to generated operating models conditioned on stock assessment data sets. The procedure is described in details in Maunder (2014) in an application for Pacific bluefin tuna. http://www.iattc.org/PDFFiles2/StockAssessmentReports/SAR15/7-Management-Strategy-Evaluation.pdf
ICCAT
A variety of R packages are being used to develop MSEs for a number of stocks Albacore MSE http://rscloud.iccat.int/mse/papers/SCRS2013-34.pdf
IOTC
Two MSEs are being conducted for albacore and skipjack, see the IOTC Working Party on Methods Working Group Report http://iotc.org/science/wp/working-party-methods-wpm. For albacore SS is being used for the conditioning of the OM and FLR for running the MSE https://github.com/iagomosqueira/SS3forOM, see https://github.com/iotcwpm/SKJ for the skipjack MSE.
WCPFC
Multifan-CL http://www.multifan-cl.org is being used to run simulations of HCRs and R4MFCL, a package in R is being used to summarise results https://http://code.google.com/p/r4mfcl/source/checkout
IPHC
A variety of tools are being used and git is being used for version control and code repositories, see
git http://git-scm.com these include
Interactive tools for use by stakeholders
- IPHC MSE Tool https://iphc.shinyapps.io/MSAB/
Links to Software for conducting MSE
- iSCAM (software in development for the Halibut MSE) https://github.com/smartell/iSCAM/tree/IPHC-developer
- Delay Difference Model from ADMB Course in Hawaii https://github.com/smartell/PIFSC/tree/master/opaka/DelayDiff
- Shiny Applications for R http://shiny.rstudio.com
- Using C++ in R http://www.rcpp.org
High power computing CPU & GPU and using makefiles for spawning parallel jobs
- using OpenCL in R http://cran.r-project.org/web/packages/OpenCL/OpenCL.pdf
- Example of using OpenCL in R https://github.com/smartell/DPSAM/blob/master/R/openCL/openCLeg.R
- Makefiles "http://www.gnu.org/software/make/manual/make.html
- pthreads
Tools
There are numerous R packages being used for developing MSE. These are available from the comprehensive R Archive Network (CRAN) or other repositories.
CRAN
- kobe a package for for summarising results from stock assessments and MSE in the Kobe II format.
- r4ss
FLR
Generic MSE software http://flr-project.org/doku.php
- FLCore
- FLBRP
- FLash
- FLXSA
- biodyn
FLa4a
MSE Framework for data poor stocks: http://cran.r-project.org/web/packages/DLMtool/DLMtool.pdf
Shiny
Git
Other
- SS3 http://nft.nefsc.noaa.gov/SS3.html
- R4SS http://cran.r-project.org/web/packages/r4ss
- NOAA MSE http://nft.nefsc.noaa.gov/MSE.html
- SS3SIM An R package for fisheries stock assessment simulation with Stock Synthesis http://arxiv-web2.library.cornell.edu/pdf/1312.6450.pdf


About
This site organizes the lecture notes for my 2017 class on the politics of media, information, and technology at the University of Southampton.
My homepage is jmrphy.net. You can also find me on Twitter, Youtube, Tumblr, and a few other places. I put out a podcast called Other Life and a newsletter of private letters, new work, and updates on my projects.
The site was built with Jekyll using the Tuft theme. The two-column design was inspired by the work of Edward Tufte.


select
, single-selectionHere, a single-selection select
is rendered using an array of strings.
model
Here, a single-selection select
is rendered using an array of objects, and
the selected option
's model
is assigned to the expression bound to the
select
's value
.
value
Here, a single-selection select
is rendered using an array of objects, and
the selected option
's value
is assigned to the expression bound to
the select
's value
.


WELCOME TO THE NEW SEARCH ENGINE
1000000000 views!
ThE NeW SeArCh EnGiNe
©
I'm feeling lucky
I'm feeling unlucky
Commonly visited websites and searches:
Yahoo!Mail
Gmail
Hotmail
Facebook
Twitter
nVIDIA
NetCarShow
Wikimapia
Wikipedia
Associate webpages:
BBC World News
Google


class: left, middle, inverse, title-slide .title[ # Rigor & Reproducility: sample size and power calculations ] .author[ ### Jessica Minnier, PhD
OHSU-PSU School of Public Health
Knight Cancer Institute Biostatistics Shared Resource
Oregon Health & Science University
] .date[ ### SOM Rigor & Reproducibility
May 2, 2023
(old version of slides:
bit.ly/som-power21
) ] --- layout: true ---  # What are the different kinds of reproducibile research? > Victoria Stodden, a prominent scholar on this topic, has identified some useful distinctions in reproducible research: > **Computational reproducibility**: when detailed information is provided about code, software, hardware and implementation details. > > **Empirical reproducibility**: when detailed information is provided about non-computational empirical scientific experiments and observations. In practice this is enabled by making data freely available, as well as details of how the data was collected. > > **Statistical reproducibility**: when detailed information is provided about the choice of statistical tests, model parameters, threshold values, etc. This mostly relates to pre-registration of study design to prevent p-value hacking and other manipulations. [ROpenSci Reproducibility Guide](https://ropensci-archive.github.io/reproducibility-guide/) --- # Goals of sample size and power calculations - Design a study that will have enough information about underlying population to reject a hypothesis with high confidence. - Calculate the number of sampling units (e.g. people, animals) you need to estimate statistics with a certain level of precision. - Sample size is usually referring to biological replicates. Identifying number of technical replicates is a separate question related to measurement error and technical variability (not biological variability). --- class: middle, center, inverse # Design your study --- # Step 1: State your research hypothesis - Define your: + Population + Outcome variables/measurements + Predictor variables (i.e. treatment, age, genetic mutation) - Be specific! - Example: Among *women* (population you sample from), the *BRCA1* mutation (predictor) is associated with an increased risk of developing *breast cancer* (outcome). - **Question**: How many women do we need to sample/study to determine that BRCA1 is associated with breast cancer? ## Your hypothesis and design inform your analysis method. --- # Step 2: Choose your analysis and test(s) - You can't calculate sample size without knowing which test and model you will use. - How will you measure your outcome? Continuous? Categorical? Binary (yes/no)? + choose outcomes with high sensitivity and low measurement error - How many groups/experimental conditions/predictors? + the more you have the more samples you will need - What test? t-test? Linear regression? Random effects model? Chi-square test? ## Calculate sample size based on analysis method you will use. --- class: inverse, center, middle # Calculate power and sample size --- # Need to know (/tell your statistician!): - Overall design (outcome, endpoint, hypothesis) - Size/magnitude of effect of interest + What do you *hope* to detect - Variability of measurements + Precision of your measurement, biological variability within population - Level of type I error (false positive rate, significance level, `\(\alpha\)`) - Level of power (true positive rate) - Other design details (number of groups, clustering, repeated measures) --- # Components of Sample Size Need to know 3 of the 4 to determine the 4th: Do We Know? | Measure | Definition ---|---|--- ?? | Effect Size | Magnitude of difference or association;
i.e. (difference in means)/(population standard deviation) = `\(\frac{\mu_1 - \mu_0}{\sigma}\)` = `\(\frac{\delta}{\sigma}\)` ?? | Sample Size | N 0.05, 0.01 | Type I Error / Significance level | `\(\alpha\)` = probability of rejecting null hypothesis when it is true; false positive 0.9, 0.8 | Power | 1 - `\(\beta\)` = 1 - Type II error = probability of rejecting null hypothesis when it is false; true positive --- # What is **effect size**? - Summarizes the outcome of interest - Magnitude of difference or association - Specification depends on study design and statistical model/test --- # Discussion Questions - How has study design and sample size/power calculations affected the studies you've worked on, were you limited by other factors (i.e. budget, time)? - Sample size/power calculations are usually not included in manuscripts reporting results, do you think they should be? - How does "data fishing" contribute to statistical irreproducibility? [xkcd.com/882/](https://xkcd.com/882/) - How do new and developing technologies (i.e., single cell everything, etc.) make it difficult to design studies that fulfill statistical rigor & reproducibility? --- # Thought exercise What details are missing from this sample size description? Could you reproduce it? > A sample size of 30 is required to have 90% power to detect an effect size of 1.2 with type I error 5%. --- ## Examples: - Difference in treatment and control mean outcomes, relative to variance (standard deviation) - Correlation coefficient of two biomarkers - Risk ratio of breast cancer comparing BRCA carriers to non-carriers - Magnitude of regression coefficient --- # Effect size must be - **pre-specified** - based on what is meaningful biologically or clinically (not statistical significance) - based on pilot data or literature review if available --- # Simple example: T-test Outcome = Continuous measurement, normal distribution Predictor = Treatment yes/no (treatment vs control group) Test: two sample T-test, equal variance Effect Size: difference in means divided by standard deviation of population `\(\frac{\mu_{trt} - \mu_{ctrl}}{\sigma}\)` Null Hypothesis: Difference in means = 0 Alternative Hypothesis: Difference in means `\(\neq\)` 0 **"Given a desired effect size, what sample size gives us enough information to reject the null hypothesis with power 90%, type I error 5%?"** --- # Simulations: underlying data distributions  --- # n=25, effect size = 1 Power = 0.93
 (Significance based on two sample t-test for difference in means)    --- # R code for t-test, effect size = 1: ```r power.t.test(delta = 1, sd = 1, sig.level = 0.05, power = 0.9) ``` ``` Two-sample t test power calculation n = 22.0211 delta = 1 sd = 1 sig.level = 0.05 power = 0.9 alternative = two.sided NOTE: n is number in *each* group ``` --- # n=25, effect size = 0.33 Increase standard deviation from 1 to 3, divides effect size by 3
Power = 0.21    --- To detect an effect size of 0.33 with power = 0.9 and type I error = 0.05, what sample size would we need? n=194 in each group! ```r power.t.test(delta = 0.33, sd = 1, sig.level = 0.05, power = 0.9) ``` ``` Two-sample t test power calculation n = 193.9392 delta = 0.33 sd = 1 sig.level = 0.05 power = 0.9 alternative = two.sided NOTE: n is number in *each* group ``` --- # n=10, effect size = 1 Decrease sample size
 Power = 0.56    --- # n=3, effect size = 1 Decrease sample size even more
Power = 0.16    --- # n = 3, power = 0.9, effect size = ? In the `R` output below, the effect size is delta/sd = 3.59/1 = 3.59. ```r power.t.test(n=3, sd=1, sig.level=0.05, power=0.9) ``` ``` Two-sample t test power calculation n = 3 delta = 3.589209 sd = 1 sig.level = 0.05 power = 0.9 alternative = two.sided NOTE: n is number in *each* group ``` --- # Underlying data distributions  --- # Other reasons to calculate sample size ## Precision of statistics - Sample sizes can also be calculated for a specific maximum width in confidence interval around an estimate - i.e. we will estimate the proportion with a 95% confidence interval of width 0.1 such as [0.2, 0.3] ## Prediction models - Large sample sizes are needed for complex prediction models. - Stability of prediction model accuracy measures depends on sample size. --- # Important to remember: ## Sample size estimates are ESTIMATES. - based on assumptions that could be incorrect - based on pilot data that could be a poor sample or too small - the more you don't know, the more conservative you should be (inflate your `\(n\)`) - good to provide multiple estimates for a variety of scenarios/effects --- # Power Analysis Software - [G*power](http://www.gpower.hhu.de/), examples of how to use it: http://www.ats.ucla.edu/stat/gpower/ - [TrialDesign.org](http://www.trialdesign.org/index.html) - [GLIMMPSE](https://glimmpse.samplesizeshop.org/#/) - [CRAB Stat tools](https://stattools.crab.org/) - [The Shiny CRT Calculator: Power and Sample size for Cluster Randomised Trials](https://clusterrcts.shinyapps.io/rshinyapp/) - [Cal Poly Stats Dept Apps](https://statistics.calpoly.edu/shiny) - [Shiny Dashboard for Sample Size and Power Calculations](https://mfpartridge.shinyapps.io/shinysamplesizesdashboard/) - [Sealed Envelope](https://www.sealedenvelope.com/) for randomization - Statistical software such as R, SAS, STATA # Resources - [OHSU OCTRI BERD](https://www.ohsu.edu/octri/octri-research-forum-your-monthly-clinical-and-translational-research-event) - Past OCTRI Research Forum Seminars on BERD Topics, recordings SERIES on Power and Sample Size - [Biostats4You](https://biostats4you.umn.edu/power-sample-size-concepts) --- class: inverse, center, middle # Take home message: ## Do your research before you do your research! --- # Thank you! Contact me: minnier-[at]-ohsu.edu, [datapointier](https://twitter.com/datapointier), [jminnier](https://github.com/jminnier/) Slides available: [https://jminnier-talks.netlify.app/2019_03_samplesizeaacr/2023_05_som_reproducibility_minnier](https://jminnier-talks.netlify.app/2019_03_samplesizeaacr/2023_05_som_reproducibility_minnier) Slide code available at: [github.com/jminnier/talks-etc](https://github.com/jminnier/talks_etc) # References - Some of this talk adapted from: [David Yanez's Sample Size](https://www.ohsu.edu/sites/default/files/2019-12/PowerAndSampleSize_29MAY2019.pdf) talk at [OCTRI BERD Research Forum](https://www.ohsu.edu/octri/octri-research-forum-your-monthly-clinical-and-translational-research-event) - [Statistical Rules of Thumb, Chapter 2](http://www.vanbelle.org/)


Mario Kart Tour's Next Stop Is Paris, Complete With Vacation Peach And Pastry Chef Shy Guy
Va-va-voom
by Ryan CraddockIt won't be long before you find yourself drifting into a brand new country with Mario Kart Tour, as the free-to-start racer is gearing up for a trip to Paris, France.
Starting at 10pm PT on Tuesday 5th November (so that's 1am ET / 6am GMT / 7am CET the following morning), Mario and co. will be taking to the streets of Paris for more shell-throwing, speed-boosting, and slipstreaming. You'll find famous landmarks such as the Eiffel Tower and the Arc de Triomphe waiting for you in the Paris Promenade course, as well as new versions of both Princess Peach and Shy Guy.
The Shy Guy is pretty adorable, we must admit.
Have you been enjoying your time with the game? Have you been put off somewhat by its ludicrous - if optional - pricing? Let us know in the comments.


Members
base_path
Returns the APP_BASE_PATH of the application.
- Source:
history :Array.<object>
Array of router history records.
Type:
- Array.<object>
- Source:
route_args :undefined|*
Arguments for the current route.
Type:
- undefined | *
- Source:
subscribers :Array.<function()>
List of callback functions listening for route changes.
Type:
- Array.<function()>
- Source:
Methods
back()
Navigate back one route.
- Source:
build_url(…parts) → {string}
Given an array of route parts, build a joined URL route.
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
parts |
string |
<repeatable> |
- Source:
Returns:
- Type
- string
navigate(path, args)
Navigate the app to the given path with the given args.
Parameters:
| Name | Type | Description |
|---|---|---|
path |
string | |
args |
* |
- Source:
subscribe(handler) → {object}
Subscribe to listen for route changes. Returns an object with an unsubscribe() property.
Parameters:
| Name | Type | Description |
|---|---|---|
handler |
function | callback called when the route changes |
- Source:
Returns:
- subscription manager
- Type
- object


Online sales buoy supermarket group Ahold Delhaize
by EndPlayTHE HAGUE, Netherlands (AP) - Global retailer Ahold Delhaize says soaring online sales and a strong performance in the United States have driven up revenue, while net profit edged lower in the third quarter.
Ahold Delhaize, which owns the Stop & Shop, Food Lion and Hannaford stores in the United States, said Wednesday that sales based on constant exchange rates rose 2.9% to 16.7 billion euros ($18.5 billion) compared with the same quarter last year.
Net profit fell 4.1% to 453 million, excluding currency rate fluctuations, due in part to higher insurance and other costs.
Sales rose 2% in the company's U.S. stores.
CEO Frans Muller says, "We saw a strong overall performance at our U.S. brands, particularly at Food Lion and Hannaford."
The company's online sales rose by 23.9% to 850 million euros.


Welcome to the OpenFin Excel demo!
The purpose of this demo is to demonstrate two-way, event-driven communication between OpenFin and Excel.
Excel not connected. Start by
launching Excel.
No Workbooks found. Start with creating
New Workbook.
New
Open
Formula:
New
Excel not connected
Open


Hello
- Ideal Designers
- V R CREATIVE
- V R QUICK
We build perfection, so you can get a product which complies with our quality standarts. Take action & keep it simple.
Get Started
We are a fun mix of designers and strategists with a great passion for all things creative.
We offer designing of interiors especially curtains, ordering them, delivering them and fitting them in your houses so that you do not have to go through the hassle of building a house.
We specialize in a varitey of fabrics, designing, customization and logistics.
Munnar Satin
Materials
MaterialsSilky Satin
MaterialsCelebrity
MaterialsSpotlight
MaterialsAdore
Julia Smith,Craigieburn


Implements interfaces:
Represents a security policy which need to be enforced when sandbox mode is enabled.
Located in /Sandbox/SecurityPolicy.php (line 19)
Documentation generated on Sun, 24 Oct 2010 20:29:22 +0200 by phpDocumentor 1.4.3


If you are , your API key () has been detected.
buttons will be added to torrent and magnet links.
You defined the following local patterns: . Please make them available to others in the Official thread.
Official thread - GitHub


We are making our way east and next on the journey is visiting
the British Virgin Islands. The islands make up part of the
Virgin Islands archipelago, the remaining islands constitute the
US Virgin Islands and the Spanish Virgin Islands. The BVIs
are composed of 50 islands and cays, only 15 islands are
inhabited.
We checked in at the West End of Tortola and started watching
all the credit card captains. The area is very popular for
chartering boats and the majority are very good skippers but
there are always some that take the boat to a new level,
http://vimeo.com/22630270 We did
assist a power boat who had not tied down their dingy well
enough and the 3 to 4 foot waves were trying to remove it from
the stern of their boat. Luckily the dingy did not come
off but the fuel tank did manage to get removed and we were able
to fish it out and give it back to the owners.
One of the cruising guide's "have to see stops" is called Foxy's. It is a
small bar/restaurant on Jost Van Dyke island that has been there
forever and is quiet the spot. Kris's engine guru "Brian"
had worked many years in the area and had
donated a Volvo engine to Foxy for their sailboat program.
We stopped to get an update from Foxy,
and give Brian some updates.
After Foxy's we had to hide out for 3 days due to strong winds,
but luckily our friends on "Good Trade" and "No
Rehearsal" we
hiding with us. We were able to have a nice social time and
some good company while waiting for the winds to abate, Good
Trade took the Mexican Train honors.
After the winds died moved to Normans
Island, and took a nice walk with "Remi D". They have a
younger girl, who Derek gets along with well and Sam enjoyed
playing with their two small dogs as well.
We moved over to Tortola, because we needed to check out and get
a new Health Certificate for Sam. Kris took a taxi ride to
get to the vet, and actually had to get out of the taxi early on
the way back, because she had the worlds worst taxi driver, and
nearly got in three accidents for the 5 mile ride.
The "Baths" are one of the most famous and definitely a "must
see" item in the BVI's. We spent a great day there,
snorkeling and playing in the rocks, and "Remi D" joined us, so
Derek and Remi had a grand time playing and swimming.
From there we headed north and left the BVIs and headed to St.
Martin.
05/01/13; BVIs to St. Martin


It would be helpful if this issue would point to the documentation of the location of the server, and/or the ansible PRs that created it.
The FTP server was provisioned by the Ops team outside of ansible. Location and connection info are on LastPass.
closed
by Kate Lynch at 2020-09-25 18:39:48.While the ports are opened, the rt4ds
Tomcat app. has not been deployed on the staging
or dev
environments.
The result of careless query-replace. Fixed now
On Sep 24, 2020, at 20:12, Trey Pendragon
@tpendragon requested changes on this pull request.
In lib/tasks/bulk.rakehttps://github.com/pulibrary/figgy/pull/4270#discussion_r494677096:
@@ -314,4 +314,15 @@ namespace :bulk do @logger.error "Error: #{e.message}" end end + + desc "Adds all members of a Collection to an additional collection" + task updateattrs: :environment do + coll = ENV["COLL"] + appendcoll = ENV["APPENDCOLL"] + + abort "usage: rake bulk:updateattrs COLL=[collection id] APPENDCOLL=[new collection id]" unless coll && appendcoll + logger = Logger.new(STDOUT) + attrs = { memberofcollectionids: Valkyrie::ID.new(appendcoll) }
This should be :appendcollectionids now.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/pulibrary/figgy/pull/4270#pullrequestreview-496029266, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAGZRWLCATVVNNTAFUA775LSHPN55ANCNFSM4RYQS5VA.
mentioned
by Trey Pendragon at 2020-09-25 13:06:43.subscribed
by Trey Pendragon at 2020-09-25 13:06:43.referenced
by Trey Pendragon at 2020-09-25 15:31:40.merged
by Trey Pendragon at 2020-09-25 15:31:40.closed
by Trey Pendragon at 2020-09-25 15:31:40.head_ref_deleted
by Trey Pendragon at 2020-09-25 15:31:41.assigned
by None at 2020-09-25 19:50:06.referenced
by None at 2020-09-25 19:51:28.closed
by Trey Pendragon at 2020-09-25 21:03:59.moved_columns_in_project
by Trey Pendragon at 2020-09-25 21:04:00.referenced
by Trey Pendragon at 2020-09-25 21:03:59.merged
by Trey Pendragon at 2020-09-25 21:03:59.closed
by Trey Pendragon at 2020-09-25 21:03:59.head_ref_deleted
by Trey Pendragon at 2020-09-25 21:04:00.labeled
by Kate Lynch at 2020-09-25 19:36:54.assigned
by Kate Lynch at 2020-09-25 19:38:02.closed
by Trey Pendragon at 2020-09-25 21:17:59.referenced
by Trey Pendragon at 2020-09-25 21:17:59.merged
by Trey Pendragon at 2020-09-25 21:17:59.closed
by Trey Pendragon at 2020-09-25 21:17:59.head_ref_deleted
by Trey Pendragon at 2020-09-25 21:18:00.Coverage increased (+0.4%) to 81.291% when pulling 477835c604ac922c388ab659a45fdd836553bb56 on 710-suppressed-bib into 58acfd4e191dbad3d85e8ccd3a50b03d66c7c1ec on master.
review_requested
by Christina Chortaria at 2020-09-25 14:30:40.referenced
by None at 2020-09-25 14:37:31.merged
by None at 2020-09-25 14:37:31.closed
by None at 2020-09-25 14:37:31.head_ref_deleted
by None at 2020-09-25 14:37:35.labeled
by None at 2020-09-25 14:44:58.labeled
by None at 2020-09-25 14:55:45.labeled
by None at 2020-09-25 14:55:45.referenced
by None at 2020-09-25 15:04:49.merged
by None at 2020-09-25 15:04:50.closed
by None at 2020-09-25 15:04:50.head_ref_deleted
by None at 2020-09-25 15:04:54.the structure of the bib object: https://developers.exlibrisgroup.com/alma/apis/docs/xsd/rest_bib.xsd/?tags=GET.
GET /almaws/v1/bibs/{mms_id}
Adding expand=p_avail: will add an AVA (availability) tag in the record with the physical availability:
https://api-na.hosted.exlibrisgroup.com/almaws/v1/bibs/991129830000541?expand=p_avail
will return:
<datafield ind1=" " ind2=" " tag="AVA">
<subfield code="0">991129830000541</subfield> mms_id
<subfield code="8">224687740000541</subfield> holding_id
<subfield code="a">01PRI_INST</subfield> Institution code
<subfield code="b">MAIN</subfield> library value
<subfield code="c">Stacks</subfield> location desc
<subfield code="d">292 H31m</subfield> call_number
<subfield code="e">available</subfield> availability
<subfield code="f">1</subfield> total items
<subfield code="g">0</subfield> non available items
<subfield code="j">main</subfield> Location code
<subfield code="k">8</subfield> Call number type
<subfield code="p">1</subfield> priority
<subfield code="q">Main Library</subfield> library desc
</datafield>
Edit to add: Note that the availability here will be one of 3 values: "available", "unavailable", "check holdings"
We identified with @mzelesky that the availability of a specific item misses sequence
and on_reserve
. We use them in: https://github.com/pulibrary/voyager_helpers/blob/26166ac7e68bfce5d5326f11c0a05933f2b07880/lib/voyager_helpers/liberator.rb#L283
GET /almaws/v1/bibs/{mms_id}/holdings/{holding_id}/items
This will retrieve the items list.
Edit to add: Note that we can get all item information by using a holdings number
ALL
If we want Item and label printing information, use item_pid from the record.
GET /almaws/v1/bibs/{mms_id}/holdings/{holding_id}/items/{item_pid}
The itemdata also includes barcode information. https://developers.exlibrisgroup.com/alma/apis/docs/xsd/restitem.xsd/#item
barcode: The item's barcode.
If not sent as part of the PUT or POST actions, Alma will generate a barcode based on the barcode generation rules.
labeled
by None at 2020-09-25 15:10:48.renamed
by None at 2020-09-25 15:13:08.labeled
by None at 2020-09-25 15:35:11.renamed
by None at 2020-09-25 15:36:40.labeled
by None at 2020-09-25 15:37:46.FTP server information is on LastPass.
renamed
by Kate Lynch at 2020-09-25 18:37:22.labeled
by Kate Lynch at 2020-09-25 18:37:33.labeled
by None at 2020-09-25 15:02:21.labeled
by None at 2020-09-25 15:02:21.closed
by Kate Lynch at 2020-09-25 18:40:40.This requires extra API calls to get all of the information. It requires a bib API call and an item API call using the holdings keyword ALL.
closed
by Kate Lynch at 2020-09-25 18:43:25.Per architectural discussion, we are putting this off for now (notes). Reopen if we decide to come back to it.
closed
by Kate Lynch at 2020-09-25 18:45:12.We can have a full dump of data daily, weekly, monthly. The team will determine what we need.
closed
by Kate Lynch at 2020-09-25 18:47:08.This has been sufficiently investigated.
closed
by Kate Lynch at 2020-09-25 18:48:23.deployed
by Trey Pendragon at 2020-09-25 17:52:31.referenced
by Kevin Reiss at 2020-09-25 19:04:01.merged
by Kevin Reiss at 2020-09-25 19:04:01.closed
by Kevin Reiss at 2020-09-25 19:04:01.head_ref_deleted
by Kevin Reiss at 2020-09-25 19:04:08.labeled
by None at 2020-09-25 15:51:02.labeled
by None at 2020-09-25 15:51:02.Coverage remained the same at 96.578% when pulling 65b5bb21fb3630bd97f1edc5a3ef1cd05589b2a0 on bdauthchange into 5a1fce7d021f7fb46ab0e23550db9a187d47178e on main.
review_requested
by Kevin Reiss at 2020-09-25 03:57:56.head_ref_force_pushed
by Kevin Reiss at 2020-09-25 15:31:43.ready_for_review
by Kevin Reiss at 2020-09-25 16:50:07.referenced
by None at 2020-09-25 17:11:05.merged
by None at 2020-09-25 17:11:05.closed
by None at 2020-09-25 17:11:05.head_ref_deleted
by None at 2020-09-25 17:11:09.Coverage remained the same at 96.578% when pulling e0186798bd7fc1951802d58c7f7f1753764ac285 on request-scsb-in-library into 5a1fce7d021f7fb46ab0e23550db9a187d47178e on main.
head_ref_force_pushed
by None at 2020-09-25 15:35:00.referenced
by Kevin Reiss at 2020-09-25 17:22:20.merged
by Kevin Reiss at 2020-09-25 17:22:20.closed
by Kevin Reiss at 2020-09-25 17:22:21.head_ref_deleted
by Kevin Reiss at 2020-09-25 17:22:26.moved_columns_in_project
by Trey Pendragon at 2020-09-25 18:23:03.assigned
by Trey Pendragon at 2020-09-25 18:23:23.Coverage remained the same at 96.578% when pulling 4213411fce417ec5f456f746d68cc5897b110e09 on bibdata-prod into d1cf5dc5a49faa4d3e1c0e0fc4e7b7658cb46bf1 on main.
deployed
by Trey Pendragon at 2020-09-25 18:37:09.head_ref_force_pushed
by None at 2020-09-25 18:40:27.deployed
by Trey Pendragon at 2020-09-25 18:40:36.deployed
by Trey Pendragon at 2020-09-25 19:02:28.referenced
by Kevin Reiss at 2020-09-25 19:03:26.merged
by Kevin Reiss at 2020-09-25 19:03:26.closed
by Kevin Reiss at 2020-09-25 19:03:26.head_ref_deleted
by Kevin Reiss at 2020-09-25 19:03:30.Coverage remained the same at 100.0% when pulling 4e984c484b99c3666d39f2eee0b2a9fb341523ca on overridetitlefix into ac6b8680cdc897cad6c040e53af7243349f15ebc on main.
referenced
by None at 2020-09-25 13:24:15.merged
by None at 2020-09-25 13:24:15.closed
by None at 2020-09-25 13:24:16.head_ref_deleted
by None at 2020-09-25 13:24:17.Final thoughts here:
from @tpendragon: "I think the issue was the custom fields make two override titles when reindexing happens across multiple threads, then if the most recent one that got created has a weird slug that issue we found happens."
Regarding how the slug was created to begin with, this "slug candidate" functionality in friendly_id seems relevant. here's some documentation in case we need it down the line:
It's being set up here in spotlight: https://github.com/projectblacklight/spotlight/blob/e7060283bd8b7478bc74f4dcfcf6bed72e6aa3f0/app/models/spotlight/custom_field.rb#L101
referenced
by Trey Pendragon at 2020-09-24 23:59:06.closed
by None at 2020-09-25 13:24:16.referenced
by None at 2020-09-25 13:24:17.mentioned
by Trey Pendragon at 2020-09-25 13:28:53.subscribed
by Trey Pendragon at 2020-09-25 13:28:53.referenced
by Francis Kayiwa at 2020-09-24 23:53:26.merged
by Francis Kayiwa at 2020-09-24 23:53:26.closed
by Francis Kayiwa at 2020-09-24 23:53:27.head_ref_deleted
by Francis Kayiwa at 2020-09-24 23:53:28.ready_for_review
by Francis Kayiwa at 2020-09-25 12:15:11.renamed
by Francis Kayiwa at 2020-09-25 12:21:51.referenced
by Francis Kayiwa at 2020-09-25 12:58:11.merged
by Francis Kayiwa at 2020-09-25 12:58:11.closed
by Francis Kayiwa at 2020-09-25 12:58:12.head_ref_deleted
by Francis Kayiwa at 2020-09-25 12:58:13.closed
by Francis Kayiwa at 2020-09-25 13:27:45.moved_columns_in_project
by Francis Kayiwa at 2020-09-25 13:27:45.head_ref_force_pushed
by None at 2020-09-25 13:02:00.head_ref_force_pushed
by None at 2020-09-25 13:22:24.head_ref_force_pushed
by None at 2020-09-25 13:35:41.head_ref_force_pushed
by None at 2020-09-25 13:43:38.referenced
by Kevin Reiss at 2020-09-25 14:00:58.merged
by Kevin Reiss at 2020-09-25 14:00:58.closed
by Kevin Reiss at 2020-09-25 14:00:58.head_ref_deleted
by Kevin Reiss at 2020-09-25 14:00:59.review_requested
by None at 2020-09-25 14:32:35.referenced
by Francis Kayiwa at 2020-09-25 16:11:36.merged
by Francis Kayiwa at 2020-09-25 16:11:36.closed
by Francis Kayiwa at 2020-09-25 16:11:36.head_ref_deleted
by Francis Kayiwa at 2020-09-25 16:11:37.closed
by Trey Pendragon at 2020-09-25 15:19:02.referenced
by Trey Pendragon at 2020-09-25 15:19:02.merged
by Trey Pendragon at 2020-09-25 15:19:02.closed
by Trey Pendragon at 2020-09-25 15:19:02.head_ref_deleted
by Trey Pendragon at 2020-09-25 15:19:06.assigned
by Eliot Jordan at 2020-09-25 02:25:07.closed
by Trey Pendragon at 2020-09-25 17:36:32.Confirmed by product owner too.
referenced
by Trey Pendragon at 2020-09-25 17:36:32.merged
by Trey Pendragon at 2020-09-25 17:36:32.closed
by Trey Pendragon at 2020-09-25 17:36:32.head_ref_deleted
by Trey Pendragon at 2020-09-25 17:36:36.closed
by Eliot Jordan at 2020-09-25 19:53:56.closed
by Eliot Jordan at 2020-09-25 18:23:04.moved_columns_in_project
by Eliot Jordan at 2020-09-25 18:23:05.closed
by Eliot Jordan at 2020-09-25 18:24:58.moved_columns_in_project
by Eliot Jordan at 2020-09-25 18:24:59.closed
by Kevin Reiss at 2020-09-25 15:29:14.ready_for_review
by None at 2020-09-25 13:59:43.head_ref_force_pushed
by None at 2020-09-25 14:06:03.referenced
by Kevin Reiss at 2020-09-25 15:29:13.merged
by Kevin Reiss at 2020-09-25 15:29:13.closed
by Kevin Reiss at 2020-09-25 15:29:13.head_ref_deleted
by Kevin Reiss at 2020-09-25 15:29:20.closed
by None at 2020-09-25 19:11:44.


MacGuyver Cocktail Mixer
Find Cocktails by Ingredients
Browse Drinks
About
Please select your ingredients for your custom cocktail options.
Add Ingredient
mix your drink
clear
Cocktails!
one
two


Special Abilty: Gets an heal-action (Cooldown: 2 rounds)
Can heal himself 2 times in one round!
 If the attack before was sucessful. (Max. 4 Attacks per round)
Special Abilty: Paralyse the enemy and get 1 lifepoint (Cooldown: 4 rounds)
Gets an lifepoint for 3 sucessful attacks
Special Abilty: Destroy 2 cards of your enemy (Cooldown: 4 rounds)
When has lower HP than enemy, does 2 damage
|
HP: 10/10 Life
|
|
HP: 10/ 10 Life
|
|
HP: 10/10 Life
|
| King of Kings (32 W - 1 L) |
|
|
HP: 10/ 10 Life
|


DMDirc
Main Site
DMDirc reports
Findbugs report
Findbugs Report
Copy and paste detection report
CPD Report
PMD Report
PMD Report
Checkstyle reports
Whole project
Actions
Command Parser
Core
Config
Logger
Parser
Plugins
UI


{% extends "layouts/base.html" %} {% block title %}TSCT Portal{% endblock %} {% block content %} {% for assignment in assignments %}
Name: {{ assignment['name'] }}
Due Date: {{ assignment['date'] }}
Description: {{ assignment['description'] }}
Points: {{ assignment['points'] }}


19th January 2015
Just after the attack over Charlie Hebdo office, Its really shocking about the massacre that happened in Nigeria which that killed 2000 people.   What happen the people. Are they crazy or i don’t know.
peace


[t]Invitation is no longer valid[/t]
[t]Your invitation for making an appointment has already expired.[/t]


New
Clients
25
Work
Orders
70
New
Invoices
44
Open
Cases
35
234
Applications
152
Interviews
147
Forwards
95%
Current Server Uptime
99.9%
Success Rate


@* * Copyright 2021 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import viewmodels.{AnswerSection, RepeaterAnswerSection, Section} @this( main_template: MainTemplate, formHelper: FormWithCSRF ) @( closeDateSection: AnswerSection, entities: Seq[Section], trustDetails: Seq[Section], tvn: String, crn: String, declarationSent: String, isAgent: Boolean )(implicit request: Request[_], messages: Messages) @main_template( title = messages("playbackFinalDeclarationAnswers.title") ) { @components.back_link() @components.heading("playbackFinalDeclarationAnswers.heading", headingSize = "heading-xlarge")
@messages("playbackFinalDeclarationAnswers.p1", tvn)
@if(isAgent: Boolean) {@messages("playbackFinalDeclarationAnswers.p2", crn)
}@messages("playbackFinalDeclarationAnswers.p3", declarationSent)
@messages("playbackAnswers.informationFirstRegistered")
@messages("playbackAnswers.selfAssessmentOnline")
}


Refrigerator Organizer Bins 2 Pack BPA-free Drink Can Dispensers Handle Stackable Can Organizer Easy-access Beverage Beer Soda Storage Can Rack for Countertop Pantry Cabinet Freezer - Blue
$ 12.99
Refrigerator Organizer Bins 2 Pack BPA-free Drink Can Dispensers Handle Stackable Can Organizer Easy-access Beverage Beer Soda Storage Can Rack for Countertop Pantry Cabinet Freezer - Orange
$ 12.99
Refrigerator Organizer Bins 2 Pack BPA-free Drink Can Dispensers Handle Stackable Can Organizer Easy-access Beverage Beer Soda Storage Can Rack for Countertop Pantry Cabinet Freezer - Green


I'm the header
mera
name is
ku batau
This the link to GITHUB
chalo yar
bata he
deta hu
Hey this is a title
Hello there, awesome person!