The procedure calculates a basis for two types of splines or orthogonal polynomials and creates a new dataset containing the generated basis variables. The dataset can be merged back into the input dataset.
Splines and polynomials make it easy to estimate nonlinear effects of predictors in linear or logistic models. A cubic spline, one of the most common tools for formulating nonlinear relationships, is a piecewise cubic polynomial where the joins at each knot have continuous first and second derivatives. A natural cubic spline extrapolates linearly beyond boundary points, which are typically the range of the data. Orthogonal polynomials are equivalent to adding ordinary polynomials in the variables, but the orthogonality makes it easy to test for the optimal degree.
The challenge with splines is deciding where to put the knots, i. e., the join points of the piecewise polynomial segments. Instead of specifying the knots directly, using this procedure you specify a degrees of freedom parameter in addition to the degree of the polynomial. The procedure then places the knots at appropriate quantiles of the variable. The number of knots is the difference between the degrees of freedom and the degree of the polynomial. In addition, boundary knots can specify anchor points, by default, the endpoints of the data.
Split files and the Statistics case weights are not supported by this procedure. Cases with missing values will have missing values for the calculated values for the two spline methods, but will cause the procedure to stop with orthogonal polynomials.
STATS SPLINES
VARIABLES = variable list*
ID = variable
DATASET = dataset*
/TRANSFORMATION
TYPE = POLYSPLINE** or NATURALSPLINE or ORTHOPOLY
DEGREE = integer
DF = integer
BOUNDS = number number
/OPTIONS
OUTNAMES = VARNAME** or FIXED
PREFIX = text
DISPLAYKNOTS = NO** or YES
/HELP
* Required
** Default
STATS SPLINES /HELP. prints this information and does nothing else.
STATS SPLINES VARIABLES=x y z
DATASET=splines
/TRANSFORMATION TYPE=POLYSPLINE DF=5 DEGREE=3.
The VARIABLES keyword specifies the variables for which splines or orthogonal polynomials are to be created. Each variable is processed independently.
ID specifies an optional ID variable to be written to the output dataset. This will facilitate merging the results into the input dataset. If no variable is specified, the id values will be sequential integers. In order to merge the datasets using the ID variable, the input dataset must be in the sort order of the ID variable.
DATASET specifies the dataset for the output. The dataset name must not already be in use.
This subcommand specifies the type of spline or orthogonal polynomials to create.
TYPE specifies the type. POLYSPLINE specifies a spline of any order. The default is cubic. NATURALSPLINE specifies a natural spline of degree 3. ORTHOPOLY specifies orthogonal polynomials, which do not have any knots.
DEGREE applies to POLYSPLINE and ORTHOPOLY and specifies the degree of the polynomial.
DF specifies the degrees of freedom for either of the spline choices. The difference between the degrees of freedom and the polynomial degree is the number of knots, so if that is zero, there will be no knots.
BOUNDS optionally specifies a pair of boundaries for the polynomial or natural spline. The default is the minimum and maximum of the data.
OUTNAMES specifies how to name the variables in the output dataset. Variable names can be based on the input variable names or use a fixed prefix. For example, using the first option, a cubic spline for variable age and educ might produce variables age_X1, age_X2, age_X3, educ_X1, educ_X2, and educ_X3 . If a fixed prefix, for example, "spline", is used and there are multiple input variables, the names would be like spline_X1, spline_X2, spline_X3, spline_X1_1, spline_X2_1, and spline_X3_1.
DISPLAYKNOTS specifies whether or not to display a table of knots for each variable. The number of knots is always shown in the summary table.
This procedure uses the R splines package. The specific package version is indicated in the procedure output.
© Portions Copyright IBM Corp. 1989, 2016


PostScript
Future Directions
- Mutation testing tool
- Automatic derivation of generators and shrinkers for data satisfying Inductive relations
- Vellum2 testing
- DeepSpec Web Server
- Testing-only variant of Software Foundations?
Recommended Reading
The material presented in this short course serves as an introduction to property based random testing using QuickChick. For the interested reader, we provide a few more references for additional reading:- The original QuickCheck paper by Koen Claessen and John Hughes
from ICFP 2000.
http://www.cs.tufts.edu/~nr/cs257/archive/john-hughes/quick.pdf
- The original QuickChick paper that focuses on a framework for
proving the correctness of QuickChick generators.
http://www.cis.upenn.edu/~llamp/pdf/Foundational.pdf
- A case study that uses QuickCheck to test non-interference for
information-flow-control abstract machines.
http://www.cis.upenn.edu/~llamp/pdf/TestingNonInterferenceQuickly.pdf
- Code for that case study exists under the QuickChick
organization of github (https://github.com/QuickChick) for
both Haskell ("Testing Noninterference") and Coq ("IFC").
- A paper on deriving QuickChick generators for a large class of inductive relations. http://www.cis.upenn.edu/~llamp/pdf/GeneratingGoodGenerators.pdf


--- layout: post title: It's never too late for coffee date: 2009-12-14 00:25:37.000000000 -08:00 type: post published: true status: publish categories: [] tags: [] meta: {} author: ---
Sent via iPidgeon


../vignettes/waterquality_vignette.Rmd
waterquality_vignette.Rmd
The main purpose of waterquality is to quickly and
easily convert satellite-based reflectance imagery into one or many
well-known water quality indices designed for the detection of harmful
algal blooms (HABs) using the following pigment proxies: chlorophyll-a,
blue-green algae (phycocyanin), and turbidity. Currently, this package
is able to process 40
algorithms for the following satellite-based imagers: WorldView-2
and -3, Sentinel-2, Landsat-8, MODIS, MERIS, and OLCI. In order to
improve the aesthetics of the wq_calc
output, a series of
intuitive Map_WQ
functions were developed to help reduce
technical barriers due to coding and the myriad of map options.
Additional functionality of the package includes a series of
extract_lm
functions which wrap the “Fitting
Linear Models” and the “caret” packages to
quickly generate a suite of regression models with standardized outputs.
These functions range from simple linear models for a single dependent
and independent variable to robust linear regression using
crossvalidation over multiple dependent and independent variables. These
functions are extremely useful when conducting experimental testing on a
large number of satellite algorithms across multiple water quality
parameters. NOTE these functions require ground-truth
data in order to develop the models.
For an example of our entire research workflow, which includes data acquisition, image pre-processing, analyses, and results please see our publication entitled “Waterquality: An Open-Source R Package for the Detection and Quantification of Cyanobacterial Harmful Algal Blooms and Water Quality”.
Currently, the package includes a total of 40
algorithms that can be applied for the detection of the three
parameters. NOTE not all sensors are capable of using
all algorithms due to their spectral configurations. Each of the
algorithms are searchable within the package, where there is a reference
to the original paper (Ex. ?Am092Bsub()
). Each algorithm is
also linked to the original papers water quality parameters
(chlorophyll-a, phycocyanin, turbidity) by type, which allows users to
select all algorithms for that type. The final outputs are raster
stacked images which represent relative index values and are not direct
estimations of chlorophyll-a, phycocyanin, or turbidity values. However,
relative index values can be converted to estimated concentration values
using the extract_lm
functions and ground truth
measurements.
The main function of this package is called wq_calc()
which calculates water quality indices by using a reflectance raster
stack as an input, user-defined algorithm(s) selection, and satellite
configuration selection corresponding to the following three arguments:
terraRast
, alg
, and sat
.
terraRast
- The input reflectance image to be used in
band algorithm calculation.alg
- Determines the indices to be utilized:
sat
- Determines the appropriate spectral configuration
and subsequently appropriate algorithms to be calculated from predefined
list:
library(waterquality)
library(terra)
Harsha <- terra::rast(system.file("raster/S2_Harsha.tif", package = "waterquality"))
Harsha_Am092Bsub <- wq_calc(terraRast = Harsha,
alg = "MM12NDCI",
sat = "sentinel2")
terra::plot(Harsha_Am092Bsub)
Harsha_Multiple <- wq_calc(terraRast = Harsha,
alg = c("MM12NDCI", "Am092Bsub", "Da052BDA"),
sat = "sentinel2")
terra::plot(Harsha_Multiple)
This function wraps the “tmap” package to
help users to efficiently generate a map of a raster image which can be
overlaid with optional geospatial objects and data histogram. In order
to simplify this process and reduce the technical expertise required,
the number of arguments were reduced to the following: -
WQ_raster
- Raster file generated from wq_calc
or other GeoTiff file
- sample_points
- geospatial file (.shp or .gpkg)
containing sampling locations - map_title
- text used to
generate title of map - raster_style
- method to process
the color scale when col is a numeric variable. Please refer to the
style argument in the ?tmap::tm_raster()
function for more
details (Default is “quantile”). - histogram
- Option to
add or remove a histogram of the data values. (Default is TRUE)
library(waterquality)
library(terra)
library(tmap)
library(sf)
s2 = terra::rast(system.file("raster/S2_Harsha.tif", package = "waterquality"))
MM12NDCI = wq_calc(s2, alg = "MM12NDCI", sat = "sentinel2")
samples = terra::vect(system.file("raster/Harsha_Simple_Points_CRS.gpkg", package = "waterquality"))
lake_extent = terra::vect(system.file("raster/Harsha_Lake_CRS.gpkg", package = "waterquality"))
Map_WQ_raster(WQ_raster = MM12NDCI,
sample_points = samples,
map_title= "Water Quality Map",
raster_style = "quantile",
histogram = TRUE)
Developing models is an essential step in water quality monitoring,
and this requires sufficient coincident ground truth data. These
functions have been developed to combine user-provided ground truth data
and the results from the wq_calc
function to generate a
single or series of regression models. These functions have been
developed to easily conduct linear models with standardized outputs,
providing intuitive yet robust options. Most effectively, the functions
will utilize a single comma delimited (.csv) file as the data frame
source. Although these functions were designed for our water quality
research, they can be used as standalone functions for any data to
generate the same standardized outputs containing the following:
Global Model
- r2
- p-value
- slope
- intercept
Crossvalidated Model
- average r2
- average RMSE
- average MAE
Additionally, we have provided code that might be useful to help
users import and extract the data from a raster stack image (i.e. output
from wq_calc
), combine it with a geospatial object (i.e
shapefiles of sample locations), and export the results to a .csv file
to be used in the modeling functions.
#Input raster image
wq_raster <- terra::rast("C:/temp/my_raster.tif")
#Input shapefile
wq_samples <- terra::vect('C:/temp/my_samples.shp')
#Extract values from raster and combine with shapefile
waterquality_data <- data.frame(wq_samples, terra::extract(wq_raster, wq_samples))
#Export results as csv file
write.csv(waterquality_data, file = "C:/temp/waterquality_data.csv")
parameter
A string specifying water quality
parameteralgorithm
A string specifying water quality
algorithmdf
data frame containing the values for parameter and
algorithm arguments
library(waterquality)
library(caret)
df <- read.csv(system.file("raster/waterquality_data.csv", package = "waterquality"))
extract_lm(parameter = "Chl_ugL", algorithm = "MM12NDCI", df = df)
#> # A tibble: 1 × 4
#> R_Squared Slope Intercept P_Value
#> <dbl> <dbl> <dbl> <dbl>
#> 1 0.162 26.2 4.69 0.153
parameter
A string specifying water quality
parameteralgorithm
A string specifying water quality
algorithmdf
data frame containing the values for parameter and
algorithm argumentstrain_method
A string specifying which classification
or regression model to use (Default = “lm”). See ?caret::train for more
detailscontrol_method
A string specifying the resampling
method (Default = “repeatedcv”). See ?caret::trainControl for more
detailsfolds
the number of folds to be used in the cross
validation model (Default = 3)nrepeats
the number of iterations to be used in the
cross validation model (Default = 5)
extract_lm_cv(parameter = "Chl_ugL", algorithm = "MM12NDCI",
df = df, train_method = "lm", control_method = "repeatedcv",
folds = 3, nrepeats = 5)
#> # A tibble: 1 × 7
#> R_Squared Slope Intercept P_Value CV_R_Squared RMSE MAE
#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 0.162 26.2 4.69 0.153 0.341 1.43 1.12
parameters
list of water quality parametersalgorithms
list of water quality algorithmsdf
data frame containing the values for parameter and
algorithm argumentstrain_method
A string specifying which classification
or regression model to use (Default = “lm”). See ?caret::train for more
detailscontrol_method
A string specifying the resampling
method (Default = “repeatedcv”). See ?caret::trainControl for more
detailsfolds
the number of folds to be used in the cross
validation model (Default = 3)nrepeats
the number of iterations to be used in the
cross validation model (Default = 5)
# Create series of strings to be used for parameters and algorithms arguments
algorithms <- c(names(df[6:10]))
parameters <- c(names(df[3:5]))
extract_lm_cv_multi_results <- extract_lm_cv_multi(parameters = parameters, algorithms = algorithms,
df = df, train_method = "lm", control_method = "repeatedcv",
folds = 3, nrepeats = 5)
head(extract_lm_cv_multi_results)
#> # A tibble: 6 × 8
#> Algorithms R_Squared Slope Intercept P_Value CV_R_Squared RMSE MAE
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 Turbid_NTU_Al10… 0.441 -30.5 -4.37 9.54e-3 0.637 2.77 1.86
#> 2 Turbid_NTU_Go04… 0.763 0.0430 0.311 4.46e-5 0.502 2.22 1.43
#> 3 Turbid_NTU_Ku15… 0.432 0.0818 -0.0687 1.06e-2 0.577 2.90 1.86
#> 4 Turbid_NTU_MM12… 0.166 42.3 0.370 1.48e-1 0.318 2.78 1.85
#> 5 Turbid_NTU_Wy08… 0.432 0.0818 -0.0687 1.06e-2 0.468 2.87 1.83
#> 6 Chl_ugL_Al10SABI 0.534 -21.0 1.30 2.99e-3 0.538 1.38 1.08
parameters
list of water quality parametersdf
data frame containing the values for parameter and
algorithm argumentstrain_method
A string specifying which classification
or regression model to use (Default = “lm”). See ?caret::train for more
detailscontrol_method
A string specifying the resampling
method (Default = “repeatedcv”). See ?caret::trainControl for more
detailsfolds
the number of folds to be used in the cross
validation model (Default = 3)nrepeats
the number of iterations to be used in the
cross validation model (Default = 5)
extract_lm_cv_all_results <- extract_lm_cv_all(parameters = parameters, df = df,
train_method = "lm", control_method = "repeatedcv",
folds = 3, nrepeats = 5)
head(extract_lm_cv_all_results)
#> # A tibble: 6 × 8
#> Algorithms R_Squared Slope Intercept P_Value CV_R_Squared RMSE MAE
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 Turbid_NTU_pH 0.976 -14.1 125. 4.86e-11 0.681 1.39 0.778
#> 2 Turbid_NTU_Al10S… 0.441 -30.5 -4.37 9.54e- 3 0.461 2.43 1.48
#> 3 Turbid_NTU_MM12N… 0.166 42.3 0.370 1.48e- 1 0.235 2.49 1.53
#> 4 Turbid_NTU_Da052… 0.168 19.2 -18.7 1.45e- 1 0.341 2.80 1.78
#> 5 Turbid_NTU_MM12N… 0.166 42.3 0.370 1.48e- 1 0.304 2.74 1.83
#> 6 Turbid_NTU_TurbD… 0.136 -7.44 5.47 1.95e- 1 0.324 2.76 1.88
The waterquality package was developed with funding from the U.S. Army Corps of Engineers. The authors would also like to thank the University of Cincinnati Library’s Research & Data Services and the University of Cincinnati’s Space Informatics Lab for their expertise and technical services.
To cite this library, please use the following entry:
Johansen R., Reif M., Emery E., Nowosad J., Beck R., Xu M., Liu H., waterquality: An Open-Source R Package for the Detection and Quantification of Cyanobacterial Harmful Algal Blooms and Water Quality. USACE ERDC/EL TR-19-20; DOI: 10.21079/11681/35053
@Article{, author = {Richard Johansen and Molly Reif and Erich Emery and Jakub Nowosad and Richard Beck and Min Xu and Hongxing Liu}, title = {waterquality: An Open-Source R Package for the Detection and Quantification of Cyanobacterial Harmful Algal Blooms and Water Quality}, year = {2019}, doi = {10.21079/11681/35053}, journal = {USACE ERDC/EL TR-19-20}, }


Home
About
Projects
Contact
|
Resume
Source
Habit Hacker
Leave Feedback
Name:
Email:
Subject:
Message:


(). ▸). superspace vacancy Al/Si calculations modulation ordering mullite DFT parameters model structure different functions stable structural structures block supercells Phys. determined range Am. atoms {border-style based models pattern px;} #ffffff;} Soc. composition diclusters modulated number phase superstructures total unified Acta M., site study Ceram. Chem. Cryst. experimental optimized used Figure atomic distribution shown supercell vacancies Fig. blocks comparison concentration < Rev. ideal occupational solid stability Section SiO commensurate crystal energies energy geometrically relative sites solution ▸), (Fig. Klar Schneider, average cases chemical considered displacive lattice space triclusters J., Mineral. Table allows applied calculations. compositions defined domains patterns physical results vacancy-free > (Klar B., S., according agreement computational concentrations coordinates diagram diffraction expected function functional labelled ordered oxygen present px; values {font-family A., Al, L., X-ray analysis certain described example, first-principles font-size higher lengths like method methods mullite. observed presence satellite suggested temperature terms using x)/ H., PBE Pask, Therefore, bond calculated carried case chains correction description dispersion double; example given identical investigate length orientation reflections respective scheme structures. studied studies symmetry tetrahedra tetrahedral α-Al . Å Eur. Experimental Fredrickson, Hence, Kristallogr. Lett. Madariaga, Si–Si Structural V., applying approach border-color border-width borders cell compared contain contains correctly correspond corresponds dependence determine diagrams dicluster disordered dynamics group i.e. investigation measurements observations. presented qualitative ranking real refinement relevant sections set solid; strongly supporting {font-style {font-weight –Al (N) (O) (PBEsol-D) (Å) AS. Cameron, D., Different E., Fredrickson G., However, Klug NIST Nissen, PBEsol Perez-Mato, Rahman, Reference Schneider Si. Smith, T., Z., additional amplified approximation axis blocks. bold characteristics coordinate courier; decreases density depend describing determination difference distributions does elements em; energy. environment especially establish explain fitting following form formation free harmonic harmonics including independent indicated indicates indicating information input investigated limited mainly mentioned models, molecular parameter positions provided pt;} ratio reference scattering selected shows significantly sillimanite similar size small systematic theory unit wave wavevector α-SiO


In order to collaborate as a team, it would be best to store your source code in a Version Control System. While there are many options for this, the CTO of Knowzy has asked you to use Visual Studio Team Services (VSTS) so that later on your can use it for Continuous Integration, Continuous Delivery, program management, and project planning. In this task, you'll set up a VSTS instance to share with the team.
The only prerequisite for this task is that you have a Microsoft account. If you do not already have one you can sign up for one here.
OR


click or touch, in map screen, to view description on table and audiovisual medical presentation host link


What does Impact Health do?
We make buying health insurance online simple and transparent. Instead of you doing all the legwork, we take care of the process for you – finding you the best plan, answering your questions, walking you through the insurance application process, finding you a doctor that will actually take your health insurance plan, etc. We even help with billing a.k.a. one of the biggest health insurance headaches.
Does it really just take 5 minutes to find the right plan for me?
Yep, what used to take around 4 hours of mind-numbing research now only takes 5 minutes.
Do you offer options in my state?
We offer health plan options in every state.
Is it really free?
Yes, our service will be free forever.
Forever-ever?
We’ll still be free even if pigs start flying or the apocalypse happens.
How does Impact Health make money?
Your health plan pays us $12 per month on average so that we can be your personal healthcare concierge service. They pay, you get all the benefits.
Who does Impact Health give my information to?
Your information ONLY goes to the health plan provider that you’re enrolling with. During the sign-up process, we keep your information in our system just in case the health plan needs it again. But as soon as it's confirmed that you are a part of the plan, we delete your information from our systems.
How does Impact Health figure out what health plan is right for me?
We factor the information about your health – medications you take, how many times you’ve been to the doctor in the past few years, etc – into an algorithm that lets you know exactly what you’re getting out of each plan. And the great thing is that the more we learn from you, the better our algorithm works, saving you even more money!
Is there any health insurance plan that Impact Health doesn't offer?
Nope. We offer every plan choice that’s available to you. Since we don’t play favorites with any plan, you can trust that you’re getting all of the facts, without bias.
Why Impact Health?
Our data analysis takes into consideration information that our competitors don’t, like your specific medications. And, in addition to finding plans that cover these medications, we also analyze which health plans pay the most for those medications. Most importantly, we consider our customers’ successes to be our successes, meaning that we work extra hard to make paying for healthcare as painless as possible.
Where has Impact Health been all my life?
What matters is that we’re here now, and we’re committed to taking the stress out of paying for healthcare.
I’ve read through this F.A.Q., and I still have questions.
Please email<EMAIL_ADDRESS>and we’ll take care of you.


{% extends "base.html" %} {% load static %} {% block css %} {{ block.super }} {% endblock css%} {% block nav-home-classes %}active{% endblock nav-home-classes %} {% block page_container %} {% endblock page_container %} {% block full_page_content %}
Despite some effort from the community and great initiatives, female neuroscientists are still under-represented in neuroscience. The aim of this Women in Neuroscience Repository is to help you identify and recommend female neuroscientists for conferences, symposia or collaborations.
entries in repository.
|
%
|
profiles
|
%
|
profiles
|
%
|
profiles
|
%
|
profiles
Download our slide and insert it at the end of your presentation! It will raise awareness on the issue of gender equity in neuroscience and show that there are resources to help conference organizers. In addition, it will encourage researchers to submit recommendations of their peers.
Download slide


Login to your Delicious account
Join Delicious
Login
Add new link
My bookmarks
Add to Delicious
Private?
Add


DiscUsage_Console.DUCore.DUSpinner module¶
A module containing a thread class to create a new thread for waiting animation.
-
class
DiscUsage_Console.DUCore.DUSpinner.
Spinner
(max_play=0, min_play=1, time_step=0.5)¶ Bases:
threading.Thread
Class for enabling a new thread with waiting indicator animation.
Note
Works as a daemon.
-
play_animation
() → None¶ Start playing animation until
`self._state`
changed.
-
run
() → None¶ Start new thread and repeatedly flush stdout to show animation frames.
-
stop
() → None¶ Stop and join thread to main and change animation state.
-


Answer TRUE or FALSE.
If you are given the order of the nodes as visited by a preorder traversal and the order of the nodes as visited by an inorder traversal, do you have enough information to reconstruct the original tree? Assume that the nodes all have unique values.
Build yourself a small example tree of about 6 or 7 nodes and see what happens.
Consider the example where the root has value A. In the preorder traversal, that A is printed first. In the inorder traversal, the left subtree comes first, then the A, then the right subtree.
From this information, we always know the root, the contents of its left subtree, and the contents of its right subtree.
We can apply this concept recursively to reconstruct the left subtree and the right subtree.


title=The Week Spring 3.1 Went GA, or, The Holidays Begin Now! date=2011-12-17 type=post tags=blog status=published ~~~~~~
This week has been nothing short of a rollercoaster! The week started with Spring 3.1 debuting, chock full of new features. From the release announcement,
WebApplicationInitializer
mechanism for bootstrapping a Spring web application without web.xml! This is a key piece in Spring's web configuration story, providing a rich alternative to XML-based bootstrapping.
@RequestPart
annotation, and further REST support refinements. This new HandlerMapping
/HandlerAdapter
variant is also highly extensible for custom MVC needs.
Beyond the above major themes, we invested into our O/R Mapping support, allowing for JPA package scanning without persistence.xml
, and supporting Hibernate 4.0 (CR7 at this time - we will fully support Hibernate 4.0 GA once released). ForkJoinPool
setup and injection.
That was Tuesday. The web reacted as expected, with news announcements aplenty, on TheServerSide, on InfoQ, and on Dzone, and on a zillion other sites, too.
Then, Costin Leau, who I'm pretty sure never sleeps, shipped Spring Data Gemfire 1.1.0, and Spring Data Redis 1.0.0, both of which have many new features and are compatible with Spring 3.1.
Then, Grails 2.0 was released, also compatible with Spring 3.1.
Then, vFabric SQLFire 1.0 was Released! SQLFire, for those of you who haven't heard about it before, is an SQL92 compliant database that runs on top of GemFire, the distributed data grid product from VMware. It can be used to run, unchanged, a good many existing RDBMS applications and acheive drastic improvements in speed immediately. This has little to do with Spring 3.1, but is instead a release of its own import, also released in the last week.
Then, Spring Social 1.0.1 was released, also compatible with Spring 3.1! Spring Social's release is important too because other projects depend on it. So, we can expect to see the floodgates open even more soon with more releases, all because Spring 3.1 was released.
To top things off, Oleg Zhurakousky's interview at JavaOne with InfoQ on messaging, Spring, and the cloud is now available, and so is Roy Clarkson and Keith Donald's SpringOne2GX talk on Making the Mobile Web Native with PhoneGap.
Awesome.
I for one, need a breather. Can't wait until this weekend.
Next week's going to be crazy, as well. I'll be at the San Diego JUG on December 20th, talking about all things Spring and Cloud Foundry. There are actually two talks, one on Spring and Cloud Foundry, and another still on Tailoring Spring for Custom Usage. Hope to see you there!


Sequences and Queries Sample
Purpose
The sample shows features of Oxygene related to sequences and Language Integrated Query (LINQ) statements.
Examine the code
Sequences are a special type introduced by the Oxygene language, and can be thought of as a collection of elements, similar to an array.
Examine code (Main.pas) to see how to use different query expressions for retrieving data from sequences.
- In order to use the Standard Query Operators, is needed reference to the System.Core.dll and the System.Linq namespace
in your uses clause.
- All query expressions are started with a from clause, and can be followed by zero or more additional clauses that act on the sequence.
Getting started
- Compile the entire solution.
- Run the application.
- Try to execute different query statements to see the result in the grid below.


| Name | Type | Author | Creation Date | |
|---|---|---|---|---|
| Object | Type | User | January 1, 2020 | |
| Object | Type | User | January 1, 2020 | |
| Object | Type | User | January 1, 2020 | |
| Object | Type | User | January 1, 2020 | |
| Object | Type | User | January 1, 2020 | |
| Object | Type | User | January 1, 2020 | |
| Object | Type | User | January 1, 2020 | |
| Object | Type | User | January 1, 2020 | |
| Object | Type | User | January 1, 2020 |


Basic Data Types
Learning objectives
We have seen that we can store objects in the R workspace. In our earlier example, we created variables that would store one piece of information, i.e. a number.
As you would expect, R can store many different types of data. We call them R basic data types. We call them “basic” because they can be assembled into more complex data structures (vectors, arrays, dataframes, etc.) that we will study later.
In this section you will learn about the basic data types you will be using for our analyses.
Numeric (real numbers)
Real numbers are stored as numerics in R. It is the default computational data type.
If we assign a decimal value to a variable $ x $ as follows, $ x $ will be of numeric type. Note that, even if we assign an integer to a variable $ y $, it is still being saved as a numeric value.
(x <- 10.5) # assign a decimal value
## [1] 10.5
class(x) # print the class name of x
## [1] "numeric"
y <- 1
class(y)
## [1] "numeric"
The fact that $ y $ is not an integer can be confirmed with the is.integer
function
is.integer(y) # is k an integer?
## [1] FALSE
Integers
There are several ways to create an integer variable in R
(z <- 3L) # declare an integer by appending an L suffix
## [1] 3
is.integer(z)
## [1] TRUE
(z <- as.integer(3)) # use the as.integer( ) function
## [1] 3
is.integer(z)
## [1] TRUE
Note that the function as.integer
can coerce a numeric value (or even some character variable) into an integer value.
(z <- as.integer(3.14))
## [1] 3
is.integer(z)
## [1] TRUE
(z <- as.integer("5.27")) # coerce a decimal string
## [1] 5
is.integer(z)
## [1] TRUE
Logicals
A logical value is either TRUE
or FALSE
A logical is often created via comparison between variables.
x <- 1; y <- 2 # sample values
(z <- x > y) # is x larger than y?
 You just have to remember that the TRUE
has the value 1, while FALSE
has value 0.
(as.integer(TRUE)) # is k an integer?
## [1] 1
TRUE + TRUE
## [1] 2
Characters
In R, strings are stored as a character
object. Strings are surrounded by two "
.
(x <- "This is a string")
## [1] "This is a string"
class(x)
## [1] "character"
If you do not use the "
, R will look for a variable instead of a string of characters, and will most likely throw an error message.
(x <- This is a string)
class(x)
## Error: <text>:1:12: unexpected symbol
## 1: (x <- This is
## ^
We can convert objects into character values with the as.character()
function:
(x = as.character(3.14))
## [1] "3.14"
Two character values can be concatenated with the paste()
function.
fname = "Joe"; lname ="Smith"
paste(fname, lname)
## [1] "Joe Smith"
To extract a substring, we apply the substr()
function. Here is an example showing how to extract the substring between the third and fourteenth positions in a string.
substr("Mary has a little lamb.", start=3, stop=14)
## [1] "ry has a lit"
And to replace the first occurrence of the word “little” by another word “big” in the string, we apply the sub()
function.
sub("little", "big", "Mary has a little lamb.")
## [1] "Mary has a big lamb."
Factors
With R, factors store categorical variables, i.e. variables that take on a limited number of different values. Categorical variables enter into statistical models differently than continuous variables, so R developers have created a specific data type to insure that the modeling functions will treat such data correctly.
Practically, factors are stored as a vector of integer values with a corresponding set of character values to use when the factor is displayed.
Use the function factor()
to create a factor. The only required argument to factor is a vector of values which will be returned as a vector of factor values. Both numeric and character variables can be made into factors, but a factor’s levels will always be character values. You can see the possible levels for a factor through the levels()
command.
# Transform character vector into a factor
data = c("a","c","b","a","a","b")
fdata = factor(data)
fdata
## [1] a c b a a b
## Levels: a b c
# Transform numeric vector into a factor
data = c(1,2,2,3,1,2,3,3,1,2,3,3,1)
fdata = factor(data)
fdata
## [1] 1 2 2 3 1 2 3 3 1 2 3 3 1
## Levels: 1 2 3
The levels of a factor are used when displaying the factor’s values. You can change these levels at the time you create a factor by passing a vector with the new values through the labels= argument
. Note that this actually changes the internal levels of the factor, and to change the labels of a factor after it has been created, the assignment form (<-
) of the levels function is used.
To convert the default factor fdata we use the assignment form of the levels function:
data = c(1,2,2,3,1,2,3,3,1,2,3,3,1)
#define specific labels when constructing the factor
fdata = factor(data, labels = c("Weak", "Mild", "Strong"))
fdata
## [1] Weak Mild Mild Strong Weak Mild Strong Strong Weak Mild
## [11] Strong Strong Weak
## Levels: Weak Mild Strong
#re-define labels after construction
levels(fdata) = c('I','II','III')
fdata
## [1] I II II III I II III III I II III III I
## Levels: I II III
Factors are an efficient way to store character values, because each unique character value is stored only once, and the data itself is stored as a vector of integers.
To change the order in which the levels will be displayed from their default sorted order, the levels= argument can be given a vector of all the possible values of the variable in the order you desire.
Consider some data consisting of the names of months:
theMonths = c("March","April","January","November","January",
"September","October","September","November","August",
"January","November","November","February","May","August",
"July","December","August","August","September","November",
"February","April")
theMonths = factor(theMonths)
By default, the levels will be presented using alphabetic order, which in the case of Months will make readings of results a bit difficult when summarizing information.
For example, the function table()
will tell us how many times each month has appeared in our vector theMonths
table(theMonths)
## theMonths
## April August December February January July March May
## 2 4 1 2 3 1 1 1
## November October September
## 5 1 3
Although the months clearly have an ordering, this is not reflected in the output of the table function.
theMonths <- factor(theMonths,levels=c("January","February","March",
"April","May","June","July","August","September",
"October","November","December"))
table(theMonths)
## theMonths
## January February March April May June July August
## 3 2 1 2 1 0 1 4
## September October November December
## 3 1 5 1
theMonths[2] > theMonths[3]
## Warning in Ops.factor(theMonths[2], theMonths[3]): '>' not meaningful for
## factors
## [1] NA
As the results of the last operation shows, the comparison operators are not supported for unordered factors. Creating an ordered factor solves this problem:
theMonths <- factor(theMonths,levels=c("January","February","March",
"April","May","June","July","August","September",
"October","November","December"), ordered = TRUE)
table(theMonths)
## theMonths
## January February March April May June July August
## 3 2 1 2 1 0 1 4
## September October November December
## 3 1 5 1
theMonths[2] > theMonths[3]
## [1] TRUE
Another common way to create factors is to split a continuous variables into intervals using the cut
function. The breaks= argument
to cut is used to describe how ranges of numbers will be converted to factor values. If a number is provided through the breaks= argument
, the resulting factor will be created by dividing the range of the variable into that number of equal length intervals; if a vector of values is provided, the values in the vector are used to determine the breakpoint. Note that if a vector of values is provided, the number of levels of the resultant factor will be one less than the number of values in the vector.
For example, consider the women data set, which contains height and weights for a sample of women. If we wanted to create a factor corresponding to weight, with three equally-spaced levels, we could use the following:
data("women")
wfact = cut(women$height,3)
wfact
## [1] (58,62.7] (58,62.7] (58,62.7] (58,62.7] (58,62.7] (62.7,67.3]
## [7] (62.7,67.3] (62.7,67.3] (62.7,67.3] (62.7,67.3] (67.3,72] (67.3,72]
## [13] (67.3,72] (67.3,72] (67.3,72]
## Levels: (58,62.7] (62.7,67.3] (67.3,72]
table(wfact)
## wfact
## (58,62.7] (62.7,67.3] (67.3,72]
## 5 5 5
The labels= argument
to cut allows you to specify the levels of the factors, instead of the intervals
wfact = cut(women$height,3,labels=c('Low','Medium','High'))
table(wfact)
## wfact
## Low Medium High
## 5 5 5


DSC UNILAG
Toggle navigation
Login
WELCOME TO DSC UNILAG
New User Sign Up
*** Select Your Faculty ***
Architecture
Arts
Buisness Administration
Education
Engineering
Environmental Science
Sciences
Social Science
Password Don't Match
Sign Up


Your work is going to fill a large part of your life, and the only way to be truly satisfied is to do what you believe is great work. And the only way to do great work is to love what you do. If you haven’t found it yet, keep looking. Don’t settle. As with all matters of the heart, you’ll know when you find.  Even people who want to go to heaven don’t want to die to get there. And yet death is the destination we all share. No one has ever escaped it. And that is as it should be, because Death is very likely the single best invention of Life. It is Life’s change agent. It clears out the old to make way for the new. Right now the new is you, but someday not too long from now, you will gradually become the old and be cleared away. Sorry to be so dramatic, but it is quite true.  Don’t be trapped by dogma — which is living with the results of other people’s thinking. Don’t let the noise of others’ opinions drown out your own inner voice. And most important, have the courage to follow your heart and intuition. They somehow already know what you truly want to become. Everything else is secondary.
Born in 1995, I spent early years of my life in various cities of Pakistan including Multan, Faisalabad and Islamabad. Later at the age of 14, I finally settled in Lahore and continued studying there until secondary edcucation.
In my high school, I studied GCE Advanced Level with subjects including Mathematics, Physics, Chemistry and Applied Information and Communication Technology.
Currently, I am studying in Hong Kong Univeristy of Science and Technology pursing a major in Computer Science and Engineering.
Undergraduate Researcher on Machine Learning
Worked with OpenCV to first implement face detection and then carry out expression and emotion recognition in still images. Used Android mobile devices for video capture and carry out the real time detection of face and certain hand signs.
Part-time Android Application Developer
Designed and developed the front-end user interface and back-end server of an e-commerce android application. Incorporated User Authentication through Facebook, Image Processing, Background Services and Offline Capabilities.
Derivatives Algorithmic Trading Trainee
Worked on Horizon Market Maker and developed trading algorithms in a distributed architecture and multi-threaded environment. Used Native Streams and created Custom Streams to get data from the market and other Horizon Services e.g. Pricer, Posman.


Invalid username and password.
You have been logged out.
you must type your username and password so that you can have the access to continue.
User Name :
Password:


wasp
A Paid Cydia Repository by wasp
Click here to add this repository to Cydia
Reddit
/u/wasp
Twitter
@wasp
If you appreciate my work, consider a small donation to buy me coffee.


THE OUT-OF-TOWNERS A film review by Steve Rhodes Copyright 1999 Steve Rhodes RATING (0 TO ****): **
George and Gwen Kellerman are going through some big lifestyle changes. The last of their 2 kids just left home, leaving them with only each other to talk to. In addition, George has just lost his job -- a fact he's trying to hide from Gwen. "I have absolutely no idea what I'm going to do with the rest of my life," she confesses sadly over a lonely dinner with her husband. Although this may sound serious, THE OUT-OF-TOWNERS, a remake of the 1970 Neil Simon screenplay, is a comedy, albeit not a particularly funny one.
The Kellermans are played without much chemistry by Steve Martin and Goldie Hawn, who deliver decidedly subpar performances. George is a no-nonsense ad executive, and Gwen, who used to be in advertising, is a hopelessly romantic type.   Needless to say, their love life isn't.
When they go to New York for his job interview, the trip starts off inauspiciously with their plane being diverted to Boston. This is followed by a Cliff's Notes version of PLANES, TRAINS & AUTOMOBILES that lands them broke and luggageless in New York.
As directed by Sam Weisman and written by Marc Lawrence, the movie is full of missteps and bad judgement. Too often in a hurry, few of the jokes are set up properly. Gwen, for example, plows into the Fulton Fish market with her car in the type of scene that you've seen a hundred times before, but it's edited so fast that you're never sure what is supposed to be funny about it. And when a starving George heads for the vending machine, you are so sure that it will jam that, when it does, the result is laugh free.
The story does have a few genuinely humorous moments. Low on blood sugar, their noses lead the Kellermans to a pile of pastries, but, before they can partake, they have to join the group hosting the meeting.  George and Gwen accidentally come up with a few revelations themselves at the meeting.
Steve Martin does get to strut his stuff in an energetic sequence set in Central Park. George is given an hallucinogenic drug, which causes him to dance and sing to "The Age of Aquarius" as he chases his wife and other women.
Did I mention John Cleese's performance as the obsequious hotel manager, who is a secret cross-dresser? He likes to hide in unused hotel rooms and dance and lip-synch in stiletto heels. He seems to have dropped in from another movie, which isn't much better than this one. If you've seen the trailers to THE OUT-OF-TOWNERS, you've already seen most of the best parts of the story. The rest is just lame padding.
THE OUT-OF-TOWNERS runs 1:31. It is rated PG-13 for sexuality and drug references and would be fine for kids around 12 and up.
Email<EMAIL_ADDRESS>Web: www.InternetReviews.com
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


training HMM Name
Tagger
The training procedure for the Jet HMM Name
tagger is invoked by
xjet
Jet.HMM.HMMNameTagger state-file model-file
order directory1 filelist1 [directory2
filelist2] ...
with 2n+3 arguments, as follows
- state-file
- a file defining states of the HMM (input)
- model-file
- a file containing trained HMM model (output)
- order
- either "unigram" or "bigram", indicating what emission
probabilities should be used
- directoryi
- directory containing ne-tagged files
- filelisti
- list of ne-tagged files (relative to directoryi)


coverage report
chrome report
ie6 report
ie7 report
ie8 report
firefox report
maxthon report
opera report
safari report


Force-Directed Graph
It checks all the boxes for communicating importance and shows relationships between nodes.
Welcome to our code zone. Here we publish our coding practices every week.
It checks all the boxes for communicating importance and shows relationships between nodes.
It displays the changes in data over time of different categories through the use of flowing.
It’s a valid hierarchical graph structure with rectangles representing the nodes of the tree.
It shows the relationship between attributes/data on both low and high dimensions and the sacle to observe is changeable.
It is a tree-like graph which can be collapsed and unfolded.
It displays a model of epicyclic gearing with three animation mode.
The clouds give greater prominence to words that appear more frequently.
More implementations and visualization layouts yet to come...


Let's start with the basics - Who are you?
Your name
Your name
City/Town
City/Town
Primary Transportation
Select one...
Car
Public Transportation
Walking
Not sure/Other
Type of car
Select one...
Small
Medium
Large
Not sure/Don't own a car
Next


Neural-Field Cox Process (NFCP) library
These are automatically generated links for browsing the project.
Please refer to
the documentation
for further details.
Index of js
../
modernizr.min.js
theme.js


Shirley Marksman
A mother, grandmother, sister, and nurse with a heart of gold.
Here's a timeline of Shirley Marksman's life:
- 1935 - Born on the island of St. Vincent as the oldest of what would eventually be nine children.
- 1949 - Arrived in Brooklyn, New York, USA to her grandmother's care.
- 1955 - Graduated with her Diploma in Nursing as a Registered Nurse (RN).
- 1957 - Graduated with her Bachelor of Science degree in Nursing.
- 1965 - Married her first husband on September 4, 1965.
- 1966 - In September of 1966 she gave birth to their first child: a daughter.
- 1969 - She arranged for the purchase of a home in Crown Heights, Brooklyn.
- 1971 - In January of 1971 she gave birth to their second child: another daughter.
- 1973 - Her mother passed away. She took on the role of matriarch in the family.
- 1982 - She and her first husband divorced.
- 1985 - She married her second husband.
- 1985 - Her oldest daughter got married.
- 1987 - She welcomed her first grandchild.
- 1988 - Her second husband passed away.
- 1993 - Her youngest daughter graduated from college.
- 1998 - Her first husband passed away. She fell ill the same month.
- 1998 - She retired from a career that spanned over 40 years as a psychiatric nurse.
- 2001 - She was hospitalized after burying her favorite aunt. While in the hospital, the events of September 11 occurred, to her shock and dismay.
- 2002 - On the night of March 2, 2002 she passed away at home.
Favorite Quotes by Shirley:
"You've got to be a friend, to have a friend."
"When all you have is lemons, make lemonade."
"Shake a leg!"


{% extends "sections/includes/sidebar.html" %} {% block sidenav %} {% include "includes/navigation/get_involved.html" with as_sidebar="true" %} {% endblock sidenav %}


Preparation time
30 mins to 1 hour
Cooking time
30 mins to 1 hour
Serves
Serves 2
This accomplished dish looks great and tastes even better – what’s more, it’s very simple to make.
Preheat the oven to 190C/375F/Gas 5.
Heat the butter and one tablespoon of the oil in a large frying pan over a medium heat. Add the onion and fry for 4-5 minutes, or until softened but not coloured.
Add the mushrooms and the garlic, reduce the heat to low and continue to cook for 15-20 minutes, or until the moisture from the mushrooms has evaporated. Season, to taste, with salt and freshly ground black pepper. Transfer the pan contents to a bowl and set aside.
Using a very sharp knife, make a deep incision along the length of the pork fillet. Stuff the fillet with the strips of black pudding and season, to taste, with salt and freshly ground black pepper.
Heat another tablespoon of the oil in the pan used to cook the onions and mushrooms. Add the stuffed pork fillet and fry for 3-4 minutes, turning regularly, until sealed and lightly browned all over. Remove the pan from the heat and set aside.
Dust a work surface with a light coating of flour and roll out the puff pastry to a rectangular shape approximately 20cm x 30cm/8in x 12in in size (it needs to be a little longer than the length of the pork fillet and wide enough to wrap around it). Trim the edges, reserving the offcuts.
Lay the slices of ham on top of the rolled-out pastry, leaving a 1cm/½in pastry border around the edge. Spread the mushroom mixture in a thin layer on top of the ham. Place the pork fillet in the centre of the pastry rectangle (reserve the pork juices in the pan).
Brush the edges of the pastry rectangle with a little beaten egg, then wrap the pastry around the pork fillet to form a large sausage shape. Press the ends of the pastry together to seal. Decorate the top of the pastry parcel with the pastry offcuts, then brush all over with more beaten egg.
Transfer the pork Wellington to a non-stick baking tray and bake for 15 minutes.
Reduce the oven temperature to 170c/340F/Gas 3 and continue to cook for 10 minutes, or until the pastry has risen and is golden-brown. Remove from oven and set aside to rest for 10 minutes (keep warm).
Meanwhile, return the pan containing the pork juices to a low to medium heat. Add the remaining tablespoon of vegetable oil and fry the apple slices for 4-5 minutes, or until softened and golden-brown.
Add the Dijon mustard, chicken stock, sage leaves and sherry and bring the mixture to the boil. Reduce the heat until the mixture is simmering and simmer until the volume of liquid has reduced by half and the sauce has thickened. Stir in the cream until warmed through and season, to taste, with salt and freshly ground black pepper.
To serve, cut the pork Wellington into thick slices and place onto serving plates. Spoon over the creamy apple sauce. Serve with steamed green beans and new potatoes.


Sumukh Sridhara
Re: Adding Macros to Scheme Project.
Professor Denero will provide more instructions.
For now, just submit project as usual.
Performing calculations simulatenously
by dividing large problems into smaller problems that run concurrently. [1]
This is the "normal" model
The real world is parallel.
Underlying hardware is increasignly parallel.
Even cell-phones now rely on parallelism!
The number of transistors in a CPU doubles every two years
Interpreted to: Speed of a processor of CPU would double every two years
The same program - was becoming faster without us (programmers) doing anything!
Except, the speed of a processor stopped increasing.
So instead of increasing the speed of a single processor.
We'll add more processors (cores) to a CPU.
Speed!
Time & $$$
Solve BIG problems.
x = x * 2
Loads the variable(s) on the right hand side
Compute the right hand side
Store the result into the variable
Loads the variable(s) on the right hand side (say x is 5)
x = x (which is 5) * 2
Compute the right hand side
x * 2 (evaluates to 10)
Store the result into the variable on the left
x = 10
Assume x and y have been set.
| Thread 1 | Thread 2 |
|---|---|
|
|
| Thread 1 | Thread 2 |
|---|---|
|
|
|
Load x (L1) Compute x*2 (C1) Store result into x (S1) |
Load y (L2) Compute y+1 (C2) Store result into y (S2) |
Try to do both at the same time. Interleaving instructions
| Thread 1 | Thread 2 |
|---|---|
|
|
| Possible Order: |
L1 C1 S1 L2 C2 S2 |
| Possible Order: |
L1 L2 C1 S1 C2 S2 |
| Possible Order: |
L1 L2 C1 C2 S1 S2 etc... |
Parallelism may cause instructions to become shuffled
Fine - as long the output is correct.
But what happens when the two threads use/write to the same variable?
Assume x is 10.
| Thread 1 | Thread 2 |
|---|---|
|
|
| Possible Order: |
L1 C1 L2 C2 S2 S1 |
| Execution: |
L1: X is 10. C1: Compute 10 * 2 = 20 L2: X is 10. C2: Compute 10 + 1 = 11 S2: Store 11 into X. S1: Store 20 into X |
| Final Answer | X == 20 ??!!?! Huh? |
Parallelism broke our code. We got an incorrect answer!
Just ran into the dangerous part of parallelism.
Fast computation with incorrect output is ... useless.
z is initialized to 3.
What are the possible values of z after parallel computation?
| Thread 1 | Thread 2 |
|---|---|
z = z * 3
|
y = z + 0
|
| Possible Output: |
9 , 6 , 18 , 12 |
If you want to change data - you have to lock access to the data.
If someone else has locked the data, you'll have to wait.
Once you are done - it releases the locks (unlocks)
Can't change anything until you have locked the data
from Threading import Lock
x_lock = Lock()
| Thread 1 | Thread 2 |
|---|---|
|
|
Acquiring/Releasing locks is atomic
meaning that they can't be interrupted.
Locks are powerful. Only one thread changes x at a time if we add locks.
but ...
What happens if we use two different locks?
from Threading import Lock
x_lock1 = Lock()
x_lock2 = Lock()
| Thread 1 | Thread 2 |
|---|---|
|
|
What happens if we perform lots of computation during the lock period.
| Thread 1 | Thread 2 |
|---|---|
|
|
Thread 2 can't proceed until the long_computation is done. If long_computation() doesn't change X - it's inefficent to perform it during the lock period.
from threading import Lock
x_lock = Lock()
y_lock = Lock()
| Thread 1 | Thread 2 |
|---|---|
|
|
Thread 1 acquires X and Thread 2 acquires Y. What happens?
You can place most issues with parallelism into 4 categories
Incorrect Results
Inefficent
Unfairness
Program Crash/Deadlock
There isn't a one size fits all solution.
Parallelism requires careful attention.
You'll learn more about this in CS 61C.
It allows for huge speedups.
Your program can become 2-1000x faster
How would you make this for loop faster with 10 threads?
for i in range(100):
compute(i)
You would give each thread a section of the for loop.
Parallel code is usually seen more in lower level languages
A lot of parallel code is in the C language (or some variant)
C is "low level" - closer to the actual machine instructions.
Python is a high level language
There are libraries that help programmers write parallel code.
Python has builtin Threading library
import threading
def worker():
print('Worker')
for i in range(5):
t = threading.Thread(target=worker)
t.start()
OpenMP - For C and C++ (and Fortran)
#pragma omp parallel for
for (int i = 0; i < 12; i++) {
do_work();
}
You'll see this in 61C
From CS194-15
Classes @ Berkeley:
CS61C (& CS162) - Parallelism is a section of the course
CS194-15 - All about using Parallelism and Patterns
CS267 - Applying Parallelism
I've taken these three courses, I recommend taking at least one.
Parallelism is an important tool to optimize our programs
Every device will be able to take advantage of parallelism
Can result in major benefits for programmer
But also requires dedicated thought to implement
Any questions?


A dataset containing experimental results on hatching behavior of red-eyed tree frog embryos.
Red-eyed tree frog (RETF) embryos can hatch earlier than their normal 7ish days if they detect potential predator threat. Researchers wanted to determine how, and when, these tree frog embryos were able to detect stimulus from their environment. To do so, they subjected the embryos at varying developmental stages to "predator stimulus" by jiggling the embryos with a blunt probe. Beforehand, though some of the embryos were treated with gentamicin, a compound that knocks out their lateral line (a sensory organ.) Researcher Julie Jung and her crew found that these factors inform whether an embryo hatches prematurely or not!
tree_frogs
A data frame with 1212 rows and 6 variables:
RETFs lay their eggs in gelatinous "clutches" of 30-40 eggs. Eggs with the same clutch ID are siblings of each other! This variable is useful in mixed effects models. (Unordered factor.)
The treatment group for the embryo. Either "gentamicin", a compound that knocks out the embryos' lateral line, or "control" for the negative control group (i.e. sensory organs intact). (Character.)
A measure of ear function called the vestibulo-ocular reflex, categorized into bins. Ear function increases from factor levels "low", to "mid", to "full". (Ordered factor.)
Age of the embryo, in seconds, at the time that the embryo was jiggled. (Numeric, in seconds.)
The time of day that the stimulus (i.e. jiggle) was applied. "morning" is 5 a.m. to noon, "afternoon" is noon to 8 p.m., and "night" is 8 p.m. to 5 a.m. (Character.)
Whether or not the embryo hatched in response to the jiggling! Either "yes" or "no". (Character.)
Time elapsed between the stimulus (i.e. jiggling) and hatching in response to the stimulus, in seconds. Missing values indicate that the embryo didn't hatch in response to the stimulus. (Numeric, in seconds.)
Julie Jung et al. (2020) Multimodal mechanosensing enables treefrog embryos to escape egg-predators. doi: 10.1242/jeb.236141
Note that the data included with the stacks
package is not necessarily
a representative or unbiased subset of the complete dataset, and is only
for demonstrative purposes.


| DOSE: T+ 0:00 |
1 hit |
oral |
DOM |
| T+ 2:30 |
1 hit |
oral |
DOM |
| T+ 4:35 |
2 hits |
oral |
DOM |
| T+ 20:30 |
1 hit |
oral |
LSD |
| T+ 25:00 |
2 hits |
oral |
DOM |
I have never gotten the chance to try a Dox compound despite experimenting with various other Rcs. When some came around I could not wait. I had 6 hits which came on rainbow colored sugar cubes. This is a long report of the events of the trip and how the drug made me react to them, there is a summary at the end.

At around 9:00PM I was feeling a great sense of peace filling me. No matter what was happening or what was going on I felt like I could just be chill. It was like having a feeling that everything was the perfect moment at the time. Me and my friend walked over to his dorm and ended up having an acoustic jam out in the hall in his building. I was able to just sit and almost be enveloped by the music, again all I could feel is peace.
At around 9:30 I ate another cube
We sat around and jammed for an hour when we decided to head over to my friends house who was having a jungle juice party. This was going to be an adventure. Neither of us owned a car so we would have to jump on the public transit and ride that for an hour and a half. At this point I was beginning to see visuals. We stopped off to pick up some sish and cigs at the tobacco shop and I could see some shifting and moving of the carpet below me if I focused.
The train ride seemed to take forever and no time at all. I felt like hurrying was not possible. We spend so much of are time worrying about where we are heading that we forget to enjoy the moment, can describe the state of mind I was in.
It was 11:30 and we reached the end of the line where another friend was coming to pick us up.
At 11:35 I took two more cubes
My friends picked us up and we got to the party. I have no problem tripping in party situations of 20-30 people.  My trip was still at a peaceful state of tranquility. It was interesting to watch the people around me fall apart as they slowly descended into drunkenness.
Just around when everyone starting passing out at around 2:35 am my trip really started to hit me. I was sat outside for around 45 minutes smoking and watching the clouds shift and flow like an incredibly complex lava lamp in the sky. It was after this that I decided to go inside as it was probably around 15 degrees even though I did not feel it. Also things began to get much more intense.
The next five or six hours were very intense, I began to come down at around 6am. I began to withdraw from reality if I was not directly engaged with someone. I would leave my body because I ceased to function in my surroundings. In my head it was like every memory was being linked with new ideas and surroundings. It was like complete abstraction in my mind. It was like having vivid dreams while completely awake. I jammed on another guitar but kept losing focus unless I really concentrated or was talking to someone.
For probably an hour or two I was completely lost inside my own mind space, it was in no way scary, I was all ready so at peace that the slow build up had given me that I was completely ready to let go into my own mind.
The next morning at around 8am things had mellowed out, things were barely moving but I still was still definitely in a tripping state of mind. I was able to eat a huge breakfast at ihop, but I had not eaten anything the day before.
At around two or three in the afternoon I had made it back home.
At around 3:30pm I ate a hit of acid
I was not really expecting the acid to really have that much of an affect. I had started drinking from a jug of wine no one had wanted the night before and having passed on alcohol I was ready to mellow out a little bit.
But sure enough about an hour in I was starting to just feel that lsd magic, and mind state. Two hours in I was getting great acid visuals, I must have still been tripping on the DOM and the visuals and mindstate I was in was definately still somewhat dom.
At around 8pm I ate two more sugar cubes
At around 9pm me and some friends headed over to a house party where there would be a live reggage/rock band playing. We got there right as they were setting up. I ending up drinking about six or seven beers over the course of the party. There ended up being like seventy people in a tiny room dancing out to reggage. It was around 11PM and I had felt the acid start to wear off. But still I was in an incredibly peaceful mindset. I could just feel the good vibes coming off everything. I still had all the energy in the world despite being up for forever.
I was back in my room at around 2am and ended up eating a little more. Things were really starting to die down. I ended up listening to music and ended up passing out at around 3am. I woke up the next day at around 9am and still felt a little strange, but fell asleep fine the next night after just sitting around my room all day.
Overall I can say DOM is an amazing drug, it is by far my new favorite research chemical. The first night was an incredibly spiritual experience. The only other research chemical I have ever found to have any spiritual value was 2C-T-2. DOM is definitely not a party drug, it has a very introspective peaceful quality to it. Yet the second night with the acid it gave a feeling of just being able to have a great time. There is no other way to describe it, it is truly deserving of the title Serenity, Tranquility, and Peace.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


{% extends "layout.html" %} {% block page_title %} GOV.UK prototyping kit {% endblock %} {% block content %} ALPHA This is a new service – your feedback will help us to improve it. Select a chapter 01 - Mining/Quarrying/Mineral Treatment 02 - Agriculture/Hunting/Fishing/Food Processing 03 - Wood/Paper/Card Processing 04 - Leather/Fur/Textile Industry 05 - Petroleum/Gas Production 06 - Inorganic Chemical Processing 07 - Organic Chemical Processing 08 - MFSU of Coatings/Adhesives/Inks 09 - Photographic Industry 10 - Thermal Processes 11 - Chemical Surface Treatment of Metals/Plastic 12 - Shaping/Physical Treatment of Metals/Plastic 13 - Oil and Liquid Fuel Waste 14 - Solvents, Refrigerants and Propellants 15 - Packaging, Absorbents, Wiping Cloths and Filters 16 - Other wastes from Industrial processes 17 - Construction and Demolition Waste 18 - Healthcare Waste 19 - Materials from Waste and Water Treatment 20 - Municipal Waste and Similar Materials From Commerce and Industry {% endblock %}
ALPHA This is a new service – your feedback will help us to improve it.


Welcome to easy-to-use, flexible yet powerful SDK, making it a snap to quickly assemble your custom real-time app leveraging any data in the platform.
Browse Echo JS SDK API detailed documentation to learn more about the SDK components.
Browse Echo JS SDK Guides to learn more about how to create custom components based on JS SDK.
Check the Echo JS SDK Examples to see the Apps and Controls samples.
Echo JS SDK code is open sourced on GitHub. You are welcome to monitor and participate in the SDK development!


This example is based on fixing Issue 1761 from the list of Astropy issues on GitHub. It resulted in pull request 1917.
The issue title was “len() does not work for coordinates” with description “It would be nice to be able to use len on coordinate arrays to know how many coordinates are present.”
This particular example was chosen because it was tagged as easy in GitHub; seemed like the best place to start out!
There is a minimalist, command-only version of this at Condensed example of contributing code to Astropy. You should have pull request 1917 open as you read the commands so you can see the edits made to the code.
There is also a very exciting terminal-cast at Terminal-cast of worked example.
Make sure you have a local copy of astropy set up as described in Try the development version. In a nutshell, the output of git remote -v, run in the directory where your local of Astropy resides, should be something like this:
astropy git://github.com/astropy/astropy.git (fetch)
astropy git://github.com/astropy/astropy.git (push)
your-user-name git@github.com:your-user-name/astropy.git (fetch)
your-user-name git@github.com:your-user-name/astropy.git (push)
The precise form of the URLs for your-user-name depends on the authentication method you set up with GitHub.
The important point is that astropy should point to the official Astropy repo and your-user-name should point to your copy of Astropy on GitHub.
A few steps in this tutorial take only a single command. They are broken out separately to outline the process in words as well as code.
Inform your local copy of Astropy about the latest changes in the development version with:
git fetch astropy
Make a new git branch for fixing this issue, check it out, and let my GitHub account know about this branch:
git branch fix-1761 astropy/master # branch based on latest from GitHub
git checkout fix-1761 # switch to this branch
git push --set-upstream origin fix-1761 # tell my github acct about it
Make a python environment just for this fix and switch to that environment. The example below shows the necessary steps in the Anaconda python distribution:
conda create -n apy-1761 --clone root # Anaconda distribution only
source activate apy-1761
If you are using a different distribution, see Python virtual environments for instructions for creating and activating a new environment.
Install our branch in this environment (will not work in python 3) with:
python setup.py develop
Do you really have to set up a separate python environment for each fix? No, but you definitely want to have a python environment for your work on code contributions. Making new environments is fast, doesn’t take much space and provide a way to keep your work organized.
It would be hard to overstate the importance of testing to Astropy. Tests are what gives you confidence that new code does what it should and that it doesn’t break old code.
You should at least run the relevant tests before you make any changes to make sure that your python environment is set up properly.
The first challenge is figuring out where to look for relevant tests. Issue 1761 is a problem in the coordinates package, so the tests for it are in astropy/coordinates/tests. The rest of Astropy has a similar layout, described at Testing Guidelines.
Change to that directory and run the current tests with:
cd astropy/coordinates/test
py.test
The tests all pass, so I need to write a new test to expose this bug.
There are several files with tests in them, though:
$ ls
test_angles.py
test_angular_separation.py
test_api.py
test_arrays.py
test_distance.py
test_formatting.py
test_matching.py
test_name_resolve.py
test_transformations.py
Issue 1761 affects arrays of coordinates, so it seems sensible to put the new test in test_arrays.py. As with all of the steps, if you are not sure, ask on the astropy-dev mailing list.
The goal at this point may be a little counter-intuitive: write a test that we know will fail with the current code. This test allows Astropy to check, in an automated way, whether our fix actually works and to make sure future changes to code do not break our fix.
Looking over the existing code in test_arrays.py, each test is a function whose name starts with test_; the last test in the file is test_array_indexing so an appropriate place to add the test is right after that.
Give the test a reasonably clear name; I chose: test_array_len. The easiest way to figure out what you need to import and how to set up the test is to look at other tests. The full test is in the traceback below and in pull request 1917
Write the test, then see if it works as expected–remember, in this case we expect to fail. Running py.test test_arrays.py gives the expected result; an excerpt from the output is:
================= FAILURES =============================
______________ test_array_len __________________________
def test_array_len():
from .. import ICRS
input_length = 5
ra = np.linspace(0, 360, input_length)
dec = np.linspace(0, 90, input_length)
c = ICRS(ra, dec, unit=(u.degree, u.degree))
> assert len(c) == input_length
E TypeError: object of type 'ICRS' has no len()
test_arrays.py:291: TypeError
Success!
Keep git commits small and focused on one logical piece at a time. The test we just wrote is one logical change, so we will commit it. You could, if you prefer, wait and commit this test along with your fix.
For this tutorial I’ll commit the test separately. If you aren’t sure what to do, ask on astropy-dev mailing list.
We can see what has changed with git status:
$ git status
On branch fix-1761
Your branch is up-to-date with 'origin/fix-1761'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: test_arrays.py
no changes added to commit (use "git add" and/or "git commit -a")
There are two bits of information here:
For more extensive changes it can be useful to use git diff to see what changes have been made:
$ git diff
diff --git a/astropy/coordinates/tests/test_arrays.py b/astropy/coordinates/test
index 2785b59..7eecfbb 100644
--- a/astropy/coordinates/tests/test_arrays.py
+++ b/astropy/coordinates/tests/test_arrays.py
@@ -278,3 +278,14 @@ def test_array_indexing():
assert c2.equinox == c1.equinox
assert c3.equinox == c1.equinox
assert c4.equinox == c1.equinox
+
+def test_array_len():
+ from .. import ICRS
+
+ input_length = 5
+ ra = np.linspace(0, 360, input_length)
+ dec = np.linspace(0, 90, input_length)
+
+ c = ICRS(ra, dec, unit=(u.degree, u.degree))
+
+ assert len(c) == input_length
A graphical interface to git makes keeping track of these sorts of changes even easier; see Get a git GUI (optional) if you are interested.
git requires you to add changes in two steps:
These can be combined into one step; the advantage of doing it in two steps is that it is easier to undo staging than committing. As we will see later, git status even tells you how to do it.
Staging can be very handy if you are making changes in a couple of different places that you want to commit at the same time. Make your first changes, stage it, then make your second change and stage that. Once everything is staged, commit the changes as one commit.
In this case, first stage the change:
git add test_arrays.py
You get no notice at the command line that anything has changed, but git status will let you know:
$ git status
On branch fix-1761
Your branch is up-to-date with 'origin/fix-1761'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: test_arrays.py
Note that git helpfully includes the command necessary to unstage the change if you want to.
I prefer to make commits frequently, so I’ll commit the test without the fix:
$ git commit -m'Add test for array coordinate length (issue #1761)'
[fix-1761 dd4ef8c] Add test for array coordinate length (issue #1761)
1 file changed, 11 insertions(+)
Commit messages should be short and descriptive. Including the GitHub issue number allows GitHub to automatically create links to the relevant issue.
Use git status to get a recap of where we are so far:
$ git status
On branch fix-1761
Your branch is ahead of 'origin/fix-1761' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working directory clean
In other words, we have made a change to our local copy of astropy but we have not pushed (transferred) that change to our GitHub account.
Now that we have a test written, we’ll fix the issue. A full discussion of the fix is beyond the scope of this tutorial, but the fix is to add a __len__ method to astropy.coordinates.SphericalCoordinatesBase in coordsystems.py. All of the spherical coordinate systems inherit from this base class and it is this base class that implements the __getitem__ method that allows indexing of coordinate arrays.
See pull request 1917 to view the changes to the code.
 A fail or an error is not fine. If you get stuck, ask on astropy-dev mailing list for help!
Add the file to your git repo in two steps: stage, then commit.
To make this a little different than the commit we did above, make sure you are still in the top level directory and check the git status:
$ git status
On branch fix-1761
Your branch is ahead of 'origin/fix-1761' by 1 commit.
(use "git push" to publish your local commits)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: astropy/coordinates/coordsystems.py
no changes added to commit (use "git add" and/or "git commit -a")
Note that git knows what has changed no matter what directory you are in (as long as you are in one of the directories in the repo, that is).
Stage the change with:
git add astropy/coordinates/coordsystems.py
For this commit it is helpful to use a multi-line commit message that will automatically close the issue on GitHub when this change is accepted. The snippet below accomplishes that in bash (and similar shells):
$ git commit -m"
> Add len() to coordinates
>
> Closes #1761"
[fix-1761 f196771] Add len() to coordinates
1 file changed, 4 insertions(+)
If this was not a tutorial I would write the commit message in a git gui or run git commit without a message and git would put me in an editor.
However you do it, the message after committing should look like this:
Add len() to coordinates
Closes #1761
You can check the commit messages by running git log. If the commit message doesn’t look right, ask about fixing it at astropy-dev mailing list.
This one is easy: git push
This copies the changes made on your computer to your copy of Astropy on GitHub. At this point none of the Astropy maintainers know anything about your change.
We’ll take care of that in a moment with a “pull request”, but first...
It never hurts to pause at this point and review whether your proposed changes are complete. In this case I realized there were some tests I could have included but didn’t:
Both of these are mentioned in the pull request so it doesn’t hurt to check them. In this case they also provide an opportunity to illustrate a feature of the py.test framework.
I’ll move back to the directory containing the tests with cd astropy/coordinates/tests to make it a bit easier to run just the test I want.
The second case is easier, so I’ll handle that one first following the cycle we used above:
The test passed; rather than committing this one change I’ll also implement the check for the scalar case.
One could imagine two different desirable outcomes here:
If you encounter a case like this and are not sure what to do, ask. The best place to ask is in GitHub on the page for the issue you are fixing.
Alternatively, make a choice and be clear in your pull request on GitHub what you chose and why; instructions for that are below.
In this case I opted for raising a TypeError, because the user needs to know that the coordinate they created is not going to behave like an array of one coordinate if they try to index it later on. It also provides an opportunity to demonstrate a test when the desired result is an error.
The py.test framework makes testing for an exception relatively easy; you put the code you expect to fail in a with block:
with pytest.raises(TypeError):
c = ICRS(0, 0, unit=(u.degree, u.degree))
len(c)
I added this to test_array_len in test_arrays.py and re-ran the test to make sure it works as desired.
The actual fix to this issue was very, very short. In coordsystems.py two lines were added:
def __len__(self):
return len(self.lonangle)
lonangle contains the Angle``s that represent longitude (sometimes this is an RA, sometimes a longitude). By simply calling ``len() on one of the angles in the array you get, for free, whatever behavior has been defined in the Angle class for handling the case of a scalar.
Adding an explicit check for the case of a scalar here would have the very big downside of having two things that need to be kept in sync: handling of scalars in Angle and in coordinates.
Follow the cycle you saw above:
The git commands, without their output, are:
git status
git add astropy/coordinates/tests/test_arrays.py
git commit -m"Add tests of len() for scalar coordinate and length 1 coordinate"
Keeping the list of changes up to date is nearly impossible unless each contributor makes the appropriate updates as they propose changes.
Changes are in the file CHANGES.rst in the top-level directory (the directory where setup.py is). Put the change under the list that matches the milestone (aka release) that is set for the issue in GitHub. If you are proposing a new feature in a pull request you may need to wait on this change until the pull request is discussed.
This issue was tagged for 0.3.1, as shown in the image below, so the changelog entry went there.
The entry in CHANGES.rst should summarize was you did and include the issue number. For writing changelog entries you don’t need to know much about the markup language being used (though you can read as much as you want about it at the Sphinx primer); look at other entries and imitate.
For this issue the entry was the line that starts - Implemented:
- ``astropy.coordinates``
- Implemented `len()` for coordinate objects. [#1761]
Starting the line with a - makes a bulleted list item, indenting it makes it a sublist of astropy.coordinates and putting len() in single backticks makes that text render in a typewriter font.
You can use git status as above or jump right to staging and committing:
git add CHANGES.rst
git commit -m"Add changelog entry for 1761"
One last push to GitHub with these changes before asking for the changes to be reviewed:
git push
This stage requires to go to your GitHub account and navigate to your copy of astropy; the url will be something like https://github.com/your-user-name/astropy.
Once there, select the branch that contains your fix from the branches dropdown:
After selecting the correct branch click on the “Pull Request” button, like that in the image below:
Name your pull request something sensible. Include the issue number with a leading # in the description of the pull request so that a link is created to the original issue.
Please see pull request 1917 for the pull request from this example.
You may be asked to make changes in the discussion of the pull request. Make those changes in your local copy, commit them to your local repo and push them to GitHub. GitHub will automatically update your pull request.


If you have pressed one of these Buttons they normally should be displayed in orange:
Unbenannt2.PNG
But the new Buttons (Weapons, Vehicles,...) are not orange
Unbenannt.PNG
(They are also colored if you go manually to your statistics)
BrainFooLong
Administrator
Yes, because this button doesn't exist in orange by battlelog.
This isn't a bug. The work to make it orange is really to much for this minor case.
Not only graphic related, a system to highlight those new buttons when on such page is not existing and would also be required to make it working.


This is a continuation of some work I've been doing with the Mozilla Science Lab and their 'code as a research object' program. There's multiple aspects to this project including work on code and GUI prototypes, discussions around best practices for making code reusable and software citation. This post explores some ideas around linked data and machine readable descriptions of software repositories with the goal being to make software more discoverable and therefore increase reuse.
JSON-LD is a way of describing data with additional context (or semantics if you like) so that for a JSON record like this:
{ "name" : "Arfon" }
when there's an entity called name
you know that it means the name of a person and not a place.
If you haven't heard of JSON-LD then there are some great resources here and an excellent short screencast on YouTube here.
One of the reasons JSON-LD is particularly exciting is that it's a lightweight way of organising JSON-formatted data and giving semantic meaning without having to care about things like RDF data models, XML and the (note the capitals) Semantic Web. Being much more succinct than XML and JavaScript native, JSON has over the past few years become the way to expose data through a web-based API. JSON-LD offers a way for API provides (and consumers) to share data more easily with little or no ambiguity about what the data they're describing.
Over the past few months there's been a lot of talk about finding ways for researchers to derive (more) credit for code. There are lots of issues at play here but one major factor is that a prerequisite to receiving credit for some piece of code you've written is that a peer needs to both be able to find your work and then reuse it.
The problem is, it can be pretty hard to find software unless there's a standard place to share tools in that language and the author of the code has chosen to publish there. Ruby has RubyGems.org, Python has PyPI, Perl has CPAN but where do I go if I'm looking to find an obscure library written in C++?
Discovering domain, language and function specific software is an even harder problem to crack. Sure, if I write Ruby I can head over to RubyGems to look for a Gem that might solve my problem but I'm relying on both the author to write a descriptive README and my ability to search for terms that include similar language to the author of the package.
For many subjects where common languages don't benefit from canonical package indexes and the function of the software is relatively niche, then just finding code that might be useful is a problem.
One way to address this discoverability problem is to find a standard way of describing software with context for the terms used. A design goal here should be that these files can be almost entirely automatically generated.
Inspired by the package.json
format prescribed by the npm community and using an ontology described on http://schema.org below is a relatively short JSON-LD document that describes the Fidgit codebase. Let's call it code.jsonld
for now.
Note the first two line (@context
and @type
) defines the context for the key/value pairs in the JSON structure so that name
means the name of the codebase. You can see the full ontology for Code
here but this should mostly be straightforward to understand1.
Once we get to the authors attribute we're now entering a new context, that of an individual. As we're still using the schema.org ontology for type Person
we only need to set the @type
attribute here.
There are a bunch more attributes that we could set here but this feels like a minimal set of information that is sufficient for citation (and therefore credit and attribution for the author).
This next example is a slightly modified version of the minimal. This includes multiple authors2 but now also has keywords required by folks like figshare and Zenodo who require these terms. (Note these keywords should probably be more explicitly structured rather than relying on comma-delimited strings.)
I started by describing the problem of software discovery and how domain, function and language specific searches for tools is hard. So far these JSON-LD snippets don't really help with this problem as we still only have keywords and a description for describing the software function and domain.
The schema.org Code
ontology includes a programmingLanguage
attribute which solves for doing language-specific searches. At GitHub we're pretty good at detecting this automatically with Linguist and so it's not even clear that an author of a piece of software would need to manually specify this (a win).
The challenge when designing a more 'complete' code.jsonld
document is that it's seemingly rather tough to automate a description of what subject domain the software has been designed for and what the software does.
PLOS ONE has a pretty decent subject taxonomy that I've extracted into a machine readable form here and so it's possible something along these lines could be used to assign a subject domain. Thus far, I've been unable to find a good schema for describing academic subjects (or any subject domains). Going deeper and attempting to describe also the function of software is also proving challenging.
At this point I'd love some feedback on these ideas. The goal here is to promote software discovery and reuse, so framing this in what's possible today is a good place to start reflecting on these ideas. Right now it's possible to do a pretty advanced search for code on GitHub with facets for programming language, file extension, creation date, username and more. Imagine if you could do the same but add in subject area and software function?
One major pitfall with this idea is that in order for an index of code.json
files to be useful people have to start making them - a classic chicken and egg problem. All is not lost though, pretty much all of the minimal code.json
file can be auto-generated and perhaps submitted to authors as a pull request patch by a friendly robot?
One of the biggest barriers to reusing research software is finding the damn stuff in the first place - does this help?
1 Note the Code ontology on schema.org doesn't *does now* include a license attribute which seems like an oversight.
2 It's not clear that this is allowed!


Msistuff.exe is a configuration utility for Setup.exe, the bootstrap executable for Microsoft® Windows® Installer version 3.0. Msistuff provides the user with the ability to configure certain resources within setup.exe. Setup.exe uses the values of these resources to download and install Windows® Installer packages from the web.
Thus, using Msistuff.exe, anyone can quickly configure setup.exe to download and install a package of their choice from the web without modifying or recompiling setup.exe.
The sample can be built by running the following command from a Platform SDK build environment window:
nmake
In order to build the sample clean, the following commands should be used:
nmake clean
nmake
Syntax
msistuff setup.exe option {value}
If no data is specified following an option, that resource is removed.
Command Line Parameters
Msistuff.exe uses the following case-insensitive command line options. A slash delimiter may also be used in place of a dash. If an option is listed multiple times, only the last occurrence is used.
|
Option |
Resource ID |
Description |
|
no options specified |
|
Display configurable resources in Setup.exe. |
|
-u |
ISETUPPROPNAME_BASEURL |
Set BaseURL, the base URL location of Setup.exe. If no value is present, the location of Setup.exe defaults to removable media. Only URL based installs are subject to a check with WinVerifyTrust. The trailing slash on the URL is optional. This option may be omitted. |
|
-d |
ISETUPPROPNAME_DATABASE |
Set Msi, the name of the .msi file. This is a relative path to the .msi file in relation to the location of the Setup.exe program. This option is required if the -m option is not specified. The -d and -m options are mutually exclusive. They cannot both be specified. |
|
-m |
ISETUPPROPNAME_PATCH |
Set Msp, the name of the .msp file. This is a relative path to the .msp file in relation to the location of the Setup.exe program. This option is required if the -d option is not specified. The -m and -d options are mutually exclusive. They cannot both be specified. |
|
-n |
ISETUPPROPNAME_PRODUCTNAME |
Set Product Name, the name of the product. This provides the name used in the banner text for the downloaded user interface. This option may be omitted. If omitted, the default is "the product". |
|
-o |
ISETUPPROPNAME_OPERATION |
Specify the type of operation to perform. The valid values are INSTALL, MINPATCH, MAJPATCH and INSTALLUPD. For additional information on these options, see Internet Download Bootstrapping. |
|
-v |
ISETUPPROPNAME_MINIMUM_MSI |
Set Minimum Msi Version, the minimum version of Windows® Installer required on the computer. If the minimum version of the Windows® Installer is not present on the machine, the update package is installed to upgrade the Windows® Installer. The value of this property has the same format as the PID_PAGECOUNT value. See Page Count Summary Property. The value must be at least 200, the value for the Windows® Installer version 2.0. This option is required. |
|
-i |
ISETUPPROPNAME_UPDATELOCATION |
The base URL location of Windows® Installer update package. If this value is missing, the location of the update package defaults to the location of Setup.exe. This option may be omitted. |
|
-w |
ISETUPPROPNAME_UPDATE |
Set to the name of the Windows® Installer update package. This is a relative path to the location specified by ISETUPPROPNAME_UPDATELOCATION. This option is required. |
|
-p |
ISETUPPROPNAME_PROPERTIES |
Set the PROPERTY=VALUE strings. These are the PROPERTY=VALUE pairs to include on the command line. This option may be omitted. This option cannot be listed multiple times, and it must be listed last on the command line. All of the command line following -p is considered as a part of the {value}. |
Remarks
Windows® Installer 3.0 redistributable is an update package instead of InstMsi thereby new resource set supported by MsiStuff.exe of Windows® Installer 3.0 SDK should be used to configure Setup.exe bootstrapper used to install Windows® Installer 3.0.


GPA Calculator
Home
About Calculator
FAQ
Contact Us
☰
Class name (optional)
Class Credit
Class Grade
Delete Row
Delete Row
Delete Row
Delete Row
Clear Table
Total Credits:
GPA:
Get Results:


MAHLER (director/writer: Ken Russell; cinematographer: Dick Bush; cast: Robert Powell (Gustav Mahler), Georgina Hale (Alma Mahler), Richard Morant (Max), Antonia Ellis (Cosima Wagner), Lee Montague (Bernhard Mahler), Rosalie Crutchley (Marie Mahler), Angela Down (Justine Mahler), Miriam Karlin (Aunt Rosa ), David Collings (Hugo Wolfe), Gary Rich (Young Mahler), Ronald Pickup (Nick), Otto Diamant (Prof. Sladky), Benny Lee (Uncle Arnold), 1974-GB)
Reviewed by Dennis Schwartz
The always obstreperous Ken Russell (The Music Lovers/Listomania/Tommy) has come up with a wonderfully impetuous Freudian-like biography on turn-of-the-century (1860-1911) Austrian musical conductor and composer Gustave Mahler (Robert Powell), who obsessively plays him with proper conviction. The troubled life of the neurotic Jewish composer, who converted to Catholicism to appease the anti-Semites in Austria, especially the powerful voice of Cosima Wagner (Antonia Ellis), so he can gain career advantages, is powerfully covered by Russell elaborately using a series of tableaux to get into the maestro's head and into his music and into his perplexing marriage with Alma (Georgina Hale), who is played by her with a succinct elegance.
Dreams and fits of anguish, interspersed with flashbacks to his pressured upbringing by his pedlar Bohemian father who demanded he succeed for the family's honor, and then to further flashbacks of other important events in his creative life, enthrall this biopic with strong emotional feelings, that make it clear that Mahler was someone who struggled with his musical genius as he kept hearing music inside himself, as well as his struggle with his hostile surroundings (always the outsider), and with a wife who told him "You have succceeded in taking the tunes out of me."
The film opens with the kind of excessive dream sequence one comes to expect from Russell, where the composer's house on the lake is in flames, and his wife is tightly wrapped in white linen, struggling to free herself from the garb and is crawling on the rocks to a bust of Mahler, which she embraces. Mahler tells his wife that the dream, which she did not look kindly upon, thinking it was just another one of the ways he always uses to put her in place; but to him, it was actually a homage to her, as he tells her, "She is the living creature struggling to be born." His bust on the rock, he says, signifies that, "I was the rock and the rock was me." The visionary dream is evocative of the music he created for the 1st movement of the third sympathy, as it is heard and interpreted by Russell in a way that is highly complimentary to a composer whom he obviously admires, flawed personality, not withstanding.
We pick up the Mahlers on their last train ride before his death, where the famous composer of ten symphonies (nine numbered) is returning from a conducting stint at New York's Metropolitan Opera with Arturo Toscanini, after hostility fomented by sections of the press forced his resignation in 1907 from his prestigious conducting postion at the Vienna State Opera. From a reporter who boards the train, we learn that Mahler might have been forced to leave TheVienna State Opera because of anti-Semtism, though Mahler claims he left for a change of environment and is returning for the same reason. He also emphatically says, "I conduct to live; I live to conduct," indicating that it is his composing that makes life interesting for him, as he contemptuously dismisses the reporter.
As a timid child, he meets a puckish sort of man in the woods (Pickup) who saves him from drowning, and teaches him an invaluable lesson about music, "The man who doesn't live in nature can't write a true note of music."Mahler sees his compositions as a tribute to the music of the spheres; and for him, a symphony is a farewell to love. When asked, "What religion are you?" by a smug army officer named Max (Richard Morant), who is a suitor of his wife, he replies, "I'm a composer."
What gives the film force and a sense of inspired madness, and makes this a work the musical aficionado might question regarding its authenticity but the film buff might applaud for its richness of visuals, are a few very inventive scenes. At a mental institution he visits his dear friend and fellow student at theVienna Conservatory, who cracked up, Hugo Wolfe (Collins). He addresses Hugo as his majesty, and from this charade he is grilled by the lunatic, accepting him as if he were the real Emperor Franz Joseph, and comes away from this visit realizing that he can only get places musically if he converts, since his religion is holding him back in this anti-Semitic milieu. The conversion scene becomes the most powerful and outlandish one in the film, as it is filmed as if were a silent movie changing to a talkie at the moment of the conversion. This scene comes on so strong as to drown out any other attempt by Russell to have a more subdued film than he usually shoots for.  Cosima is depicted as a Nazi and he, as a willing servant of hers, prepared to go into a cave and slay the dragon of the old gods to gain her appproval, as she smilingly tells him, when he has slain the dragon "You are no longer a Jew, you are now one of us." He will then eat the non-kosher pig meat and drink a glass of milk with it, completing his conversion.
After his real conversion, he will say it reminded him of having a toothache. For Mahler, man is his own God, and God shares his love with us all. But this conversion affected him greatly and continued to eat away at his famished psyche, already terribly damaged from a childhood of constant nagging.
Always insecure and troubled, never happy, always irritable and petulant, a most unpleasant person, and a sexist; but, a musical genius, is the impression of Mahler that Russell convincingly leaves us with. As Mahler, in despite of his pettiness, bravely tells his wife, choose between me and Max, but do not choose me because of duty, duty always destroys. The choice in marriage must always be love. In a film, that plays at times like a soap opera story of a beautiful wife who learns to live with her genius husband, as the husband and wife fight for their beliefs and for their love. But it is the music of Mahler that is refreshingly digested, admittedly a music for acquired tastes, but a music that I most heartily appreciated, that gives the film its resonance. The film also plays like Visconti's Death in Venice gone astray, where homo-erotic shots are coupled with coarse hetero-sexual shots. The passion of Mahler's Germanic symphonies, evincing childlike death-cries from his renown 6th symphony, as coincidentally, one of his little girls died soon afterwards and he received one of his many heart attacks after the symphony was completed... which result for Russell, a director who has proven himself to be a music lover, who knows how to be flamboyant and controversial, into making a film that was very impressive. Though the film, like Mahler's music, is clearly not for everyone.
REVIEWED ON 10/5/99 GRADE: A
Dennis Schwartz: " Ozus' World Movie Reviews"
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews