How did the 'process over product' concept affect the way you tackled the site redesign and rebuild?
Well as people will see on my website, I don't think I could've followed it any better. My website is clean and simple, its responsive on mobiles and user friendly.
What did you think about meditation before reading chapter 2?
I always have considered Meditation to be an important exercise to maintain mindfulness and be able to stay grounded etc.
What new things have you learnt about meditation?
That we should treat meditation with the same importance as we consider physical exercise like going for a run etc, because your mental and spiritual aspect is just as important to look after.
Did any of the suggested meditation techniques stand out to you?
Nothing new really, to me, meditation isn't complex, and the way it was outlined in the novel is the way I tend to meditate.
Any other musings?
No not really.


One Platform to host your Internal Applications and Services
One Portal provides a single place for all internal applications and services, supports consistent User experience by providing standard platform for service hosting and data integration, efficient resource management, real time metrics availability, cross-team collaboration and unified documentation.


--- title: "11/12 March 2013 Chain Fork Information" shorturl: "chainfork" active: false banner: "" date: 2013-03-11 ---
A bitcoin miner running version 0.8.0 created a large block (at height 225,430) that is incompatible with earlier versions of Bitcoin.
The result was a block chain fork, with miners, merchants and users running the new version of bitcoin accepting, and building on, that block, and miners, merchants and users running older versions of bitcoin rejecting it and creating their own block chain.
Large mining pools running version 0.8.0 were asked to switch back to version 0.7, to create a single block chain compatible with all bitcoin software.
Nothing. Your bitcoin software will switch to the correct chain automatically, no matter which version you are running.
Yes.
The core developers have investigated what caused the old versions to reject the new blocks, and have released a 0.8.1 version that avoids creating blocks that are incompatible with older versions. A full post-mortem document has been published.


Tutorials
¶
“Moving Pictures” tutorial
Sample metadata
Obtaining and importing raw data
Demultiplexing sequences
Sequence quality control
Generate a tree for phylogenetic diversity analyses
Alpha and beta diversity analysis
Taxonomic analysis
Differential abundance analysis
Fecal microbiota transplant (FMT) study: an exercise
Prepare for the analysis
Sequence quality control
Merging denoised sequence variant data
Diversity analysis
“88 soils” tutorial
Prepare for the analysis
Sequence processing and diversity analyses
Importing data
Training feature classifiers with q2-feature-classifier
Obtaining and importing reference data sets
Extract reference reads
Train the classifier
Test the classifier
Importing sequence data
“EMP protocol” multiplexed fastq
Casava 1.8 single-end demultiplexed fastq
Filtering feature tables
Total-frequency-based filtering
Contingency-based filtering
Index-based filtering
Metadata-based filtering
Table Of Contents
Getting started
What is QIIME 2?
Core concepts
Installing QIIME 2
Tutorials
“Moving Pictures” tutorial
Fecal microbiota transplant (FMT) study: an exercise
“88 soils” tutorial
Importing data
Training feature classifiers with q2-feature-classifier
Importing sequence data
Filtering feature tables
Interfaces
Plugins
Semantic types
Community
Data resources
Supplementary resources
Glossary
Quick search


I have been able to complete both primary and secondary levels of education successfully.In primary, I initially schooled at Riara Springs Primary School and later on moved to Newlight Primary School where I completed my primary school education.
I have many things that are of interest to me as I am always learning new things but at the moment some of my major interests are web design and application development.
I have taken a keen interest to coding and I am currently taking classes to widen my scope of knowledge on coding and everything that it entails. I hope to reach the furthest level in my coding studies and use the knowldege that I will have gained to implement my own projects in the future.
To see some of the projects I have completed so far click here.


@* * Copyright 2023 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import cats.data.NonEmptyList @import include._ @import uk.gov.hmrc.thirdpartydeveloperfrontend.domain.models.controllers.Crumb @import uk.gov.hmrc.thirdpartydeveloperfrontend.domain.models.applications.Application @import uk.gov.hmrc.thirdpartydeveloperfrontend.domain.models.developers.DeveloperSession @import uk.gov.hmrc.thirdpartydeveloperfrontend.controllers.routes @import _root_.controllers.routes.Assets @import views.html.helper.CSPNonce @this(devMain: DevMain) @(app: Application, nonEmptySecrets: NonEmptyList[String])( implicit request: play.api.mvc.Request[Any], loggedIn: DeveloperSession, messagesProvider: MessagesProvider, applicationConfig: ApplicationConfig ) @pushSecret = @{nonEmptySecrets.head} @devMain( title = "Push secret", userFullName = loggedIn.loggedInName, breadcrumbs = Seq( Crumb.application(app), Crumb.viewAllApplications, Crumb.home ), developerSession = Some(loggedIn) ) {
@pushSecret
Copy
An API you have subscribed to supports Push Pull Notifications.
Use the push secret to verify pushed notifications come from HMRC.
}


MY-CURRICULUM-VITAE
BACKGROUND
"BENARD AKAKA is a Kenyan Web Designer, businessman, and Teacher of the Butere secondary School.
He served as the Member of Parliament for Khwisero-sub-county from 2010 to 2013. Currently, he
is a member of big-four web developer. Wikipedia
- BORN:2000 (age: 20years)
- SPOUSE:Violet Aseka(age:40years
EDUCATION LEVEL
2018-2020: COMPUTER SCIENCE- NAIROBI UNIVERSITY
1st class Degree with professional placement
RELEVANT MODULES:
professional and Social aspects of Computing(73%)
Data Modeling and Database System(57%)
Understanding Information System(72%)
Information Security(90%)
2015-2017: BTEC NATIONAL DIPLOMA in IT-MESSIAH COLLEGE
Grade Achieved:Triple Distinction*
2011-2015:Butere Boys High School
KCSE Grade B+: Points 70
EMPLOYMENT
2019 to date :IT Mananger :MINPLUS
Mendering and Training IT staffs
Researching,installing and Configering new computer
SKILLS
Excellent Knowledge of a variaty of programming languages eg JAVA,PYTHON,C++,JAVASCRIPT,HTML
and SQL.
Expert in networking fault diagnostics and troubleshooting,Cisco router,switching
configuration and technologies
I enjoy reading non-fiction book,building computer networking solving and socialising with
friends and family


Basic Controller Example
Name: {{shop.product.name}}
Price: ${{shop.product.price}}
Description: {{shop.product.description}}


One of the most important keys to maintaining your security is selecting a strong master password for your Password Safe database. The database ("Safe") contains all your user names, passwords, and any additional information you may have added. Picking a spouse's name, a birthday, or some other easily guessable combination leaves your data vulnerable. It is important that you pick a hard-to-guess master password that you can easily remember.
Password Safe has a built in check for what it considers to be weak master passwords. In general, a master password (like any password) should consist of mixed case characters with at least one number or special character (such as those found above the number keys on a keyboard). If a master password is entered that the program considers weak, it will prompt for confirmation. You may choose the option to accept the originally entered (weak) password, or to enter a new one.
To change your master password, please see Changing Master Passwords.
Note: There is no mechanism within Password Safe to retrieve lost or forgotten safe passwords.
This is a deliberate design decision, since any mechanism for retrieving lost passwords poses a security hole that can be exploited.


MBBatteryMonitor Class Reference
| Inherits from | NSObject |
|---|---|
| Conforms to | MBService |
| Declared in | MBBatteryMonitor.h |
Overview
The MBBatteryMonitor
is a service that fires event notifications when
there are changes to device’s battery state, battery level, and plugged-in
status.
When the MBBatteryMonitor
service is running, the service will periodically
fire NSNotification
events with the name “MBBatteryMonitor:update
” whenever
there are status updates to report.
The object
method of the NSNotification
for the “MBBatteryMonitor:update
”
event will return an MBBatteryState
object providing details about the
battery and power state of the device. (Within an MBML <Listener>
, the
MBBatteryState
can be accessed through the expression “$Event.object
”.)
Note: Notification events are posted only when the MBBatteryMonitor
service is running. Use the interface provided by the
MBServiceManager
to ensure that the service is running when
needed.
– currentBatteryState
Determines the current battery state when the MBBatteryMonitor
service
is running.
- (nullable MBBatteryState *)currentBatteryState
Return Value
An MBBatteryState
instance whose properties reflect the
current state of the device’s battery. Will be nil
if the
MBBatteryMonitor
service is not running.
Declared In
MBBatteryMonitor.h


Please review the answer provided and score the answer out of 10 points.
Although steps are under way to get this project off the ground, investment by Innovate UK will stimulate Industry leads to supply additional resource funding and use of their facilities as required to advance the progress of this project. UK Investment will ensure that we are able to retain the onward manufacture internally instead of needing to create international deals taking work and profit out of the country.


{% extends 'base.html' %} {% load static from staticfiles %} {% load thumbnail %} {% block title %}About{% endblock title %} {% block content %}
We want to be your source for BMX bicycles and accessories for ALL ages and skill levels. Let us help you build up your perfect ride and get you geared up right. We are an Authorized Dealer for GT BMX bicycles. From your first gate drop to your first podium finish BMX race bikes from GT have you covered. Stop in and check them out. We also feature Fly Racing apparel and accessories -- great quality at a competitive price! If you are a racer, ask about our BMX racer's discount.


## Distributed training overview doc
Currently Paddle Fluid use parameter server architecture to support distributed training.
For synchronous and asynchronous training, the differences are mostly in the logic of parameter server. Now we have already support synchronous training.
### Synchronous training
The training process of synchronous training is:
![synchronous distributed training](./src/sync_distributed_training.png)
1. Pserver
1. set `barrier_condition_` to 0 and waits for trainers to send gradient.
1. Trainer
1. Trainer read minibatch of data, run forward-backward with local parameter copy and get the gradients for parameters.
1. Trainer use split op to split all the gradient into blocks. The split method is determined at compile time.
1. Trainer use send_op to send all the split gradients to corresponding parameter server.
1. After trainer send all the gradients, it will send a `BATCH_BARRIER_MESSAGE` to all pservers.
1. Trainer call GetVariable to pserver and wait for `barrier_condition_` on pserver to be 1.
1. Pserver
1. Pserver will count the number of `BATCH_BARRIER_MESSAGE`.
1. When the count of `BATCH_BARRIER_MESSAGE` is equal to the number of Trainer. Pserver thinks it received all gradient from all trainers.
1. Pserver will run the optimization block to optimize the parameters.
1. After optimization, pserver set `barrier_condition_` to 1.
1. Pserver wait for `FETCH_BARRIER_MESSAGE`.
1. Trainer.
1. The trainer uses GetVariable to get all the parameters from pserver.
1. Trainer sends a `FETCH_BARRIER_MESSAGE` to each pserver.
1. Pserver.
1. when the number of `FETCH_BARRIER_MESSAGE` reach the number of all trainers. Pserver think all the parameters have been got. it will go back to 1. to set `barrier_condition_` to 0.
### Asynchronous training
In the above process. There are two barriers for all trainers to synchronize with each other. In asynchronous training, these two barriers are not needed. The trainer can just send gradients to pserver and then get parameters back.
The training process of asynchronous training can be:
![asynchronous distributed training](./src/async_distributed_training.png)
1. Pserver:
1. Each parameter has a queue to receive its gradient from trainers.
1. Each parameter has a thread to read data from the queue and run optimize block, using the gradient to optimize the parameter.
1. Using an independent thread to handle RPC call `GetVariable` for trainers to get parameters back.(Maybe here we should use a thread pool to speed up fetching the parameters.)
1. Trainer:
1. Trainer read a batch of data. Run forward and backward with local parameter copy and get the gradients for parameters.
1. Trainer split all gradients to blocks and then send these gradient blocks to pservers(pserver will put them into the queue).
2. Trainer gets all parameters back from pserver.
### Note:
There are also some conditions that need to consider. For exmaple:
1. If trainer needs to wait for the pserver to apply it's gradient and then get back the parameters back.
1. If we need a lock between parameter update and parameter fetch.
1. If one parameter must be on one server, or it can also be split and send to multiple parameter servers.
The above architecture of asynchronous training can support different mode, we can have a detailed test in the future for these problems.


I just finished reading Agile Software Development by Cockburn in the last few days and it’s a very good book to get an introduction to the subject. Lots of the ideas in there ring back memories from the MBA and knowledge management actually.

For one the sender, receiver problem and frame of reference. The thing is that communication involves a sender, a receiver and a channel. The big problem is that while the channel has noise, both sender and receiver have a frame of reference that puts what they say or hear into the right context for them. This means that you can very easily not understand each other correctly. One solution here would be to often do something like this: "So what you are saying is, just so I understand it correctly, … ." This will also help if you try to win over people and notice a flaw in their reasoning. ;)

The frame of reference will only get a sound base after the norming, storming, performing phases of building a team have been gone through. This is also one of the reasons why outsourcing is a problem. You will not go through that phase and a performing team is a lot better than a norming or storming team. You will have to have so good documentation that frames of reference or noise in the channel are not important.

Cockburn actually says that software development is like rock climbing. It’s cooperative and goal seeking, yet load bearing between different people of a team that are still individuals with different talents. It’s very skill sensitive and requires training as well as the right tools. The resources are limited and you have a plan around which you improvise. It’s fun, challenging and dangerous. Great analogy.

What this also means is that you need to find the right amount of documentation and keep it so rough that you don’t need to continuously update it. This is really where it gets hard for new entries into the team, depending on how much shared vocabulary you already have.

Understanding how people work, behave, interact is key. They make mistake and this is why Agile wants short iterations, to catch them fast and keep them from growing fangs. People prefer to fail conservatively than to succeed differently.

Through University we are taught to be unique (just thinking of how unique your final thesis in germany has to be), and this makes it a none team effort and something that does not make people reuse code as such. Therefore you need to make sure that your culture, attitude and people’s education makes them want to reuse.

Another important item is "flow". Developers, or anyone actually, get into a flow after 20 minutes of quite time. Turning of the phones for 2 hours is important to really get there at least for a few hours a day.

Motivation is another key part, which can come from three different areas: pride-in-work, pride-in-accomplishment, pride-in-contribution. That is oversimplifying it a little bit as everyone is different, but it seems about right. Another might be fear, but then again that might not be motivation then ;) But if you want to use the above, split projects into small phases.

Osmotic communication means sitting people together, at best from different parts of the organization because they will pick stuff up if they want it or not. Information radiators are good here too, which is something that VISA used very well actually. Written use cases can be used for information stickyness.

So where is the sweetspot. 2-8 people in a room, 2-4 week increments, fully automated regression tests, experienced developers, reflection after each increment, usage experts in each team.

Great stuff all in all. Looking forward to pushing more into this with the new team. <!– technorati tags start –>

Technorati Tags: Agile, Scrum, Software Development, Teams

<!– technorati tags end –>


Here there will be an unordered list
- This is an unordered list item
- This is an unordered list item
- This is an unordered list item
- This is an unordered list item
- This is an unordered list item
- This is an unordered list item
Here there will be an unordered list


--- layout: post title: "Jiro Dreams of Software" published: true comments: true month: July day: 13 year: 2012 ---
{{ page.title }}
I recently went to see Jiro Dreams of Sushi.[1] I love sushi, Japan, and movies so it was a great combination. I really enjoyed the film and if you like any of these things I recommend you go see it if you can. However, it is as a Software Developer that I really connected with the movie and its subject, Jiro Ono.
Jiro Ono is an 85 year-old sushi chef, who runs a small restaurant in Tokyo. He is considered by many to be the world's greatest sushi chef. Jiro is a craftsman. At night he dreams of ways to improve the sushi that he serves in his restaurant. His obsession with perfection extends to his apprentices, who must train for years just to learn how to make rice. Jiro only works with a select few vendors who supply his fish and rice. We meet them and quickly see that they are equally dedicated to delivering only the very best product.
You must dedicate your life to mastering this skill. This is the key to success.
Jiro Ono
Much has been made of the perceived lack of quality and professionalism within the field of Software Development.[2] Jiro's attitude to his craft is very different to how most Software Developers view their work. Every field has its poor performers, but the software industry appears to harbour a lot of mediocre programmers. Imagine if we applied the same rigorous standards as Jiro to Software Development. I'm guessing there would be a lot fewer of us (although to be fair, there must be plenty of bad sushi chefs). However, the industry shows little interest in pursuing this approach, so it's up to the individual to make it happen.
The Manifesto for Software Craftsmanship promotes an alternative view of the Software Developer, one that emphasizes craft, continuous improvement, and professional accountability.[3] Practice is a key aspect of Software Craftsmanship. There is convincing evidence to show that deliberate and continuous practice leads to significant and permanent gains in ability, whether that be playing the piano, taking penalty kicks, mixing cocktails, or writing code.[4] It probably applies to anything you want to do. If you practice writing code every day, even for a short time, your ability to write code quickly and accurately will improve.
The method of putting aside time every day to practice the fundamentals of programming over and over again is referred to as a Code Kata.[5] The key point of a Code Kata is that continuous and repetitive practice every day will make you a better programmer. All it takes is thirty minutes a day. After a few short weeks you will notice an improvement in your ability to write code, from a better understanding of keyboard shortcuts to making more effective use of your chosen editor. Incredible as it may seem, many people have trouble finding even thirty minutes a day to practice whatever it is they wish to improve at.
As Software Developers what can we learn from Jiro? Jiro Ono is passionate about his chosen craft and is continuously seeking new ways to improve on it (even when he is sleeping). He has dedicated his entire life to perfecting the preparation and presentation of sushi, but is still striving to improve.
Even at my age in work, I still haven't reached perfection.
Jiro Ono
If you aspire to be a better Software Developer, then you are likely passionate enough to put in the effort required to improve. You certainly won’t have any trouble finding thirty minutes a day to practice. The feedback you get from continuous practice will spur you on to get even better. However, if you lack the passion to improve, then you might want to consider a different profession. Perhaps you have yet to find your passion in life.
Jiro has sacrificed much for his craft, perhaps too much, as the movie suggests. The point is not to be the very best, just better each day. If you commit to being a better developer than you were yesterday, then you will inevitably contribute to creating better software and inspire others to follow your example.
[1] Jiro Dreams of Sushi Official Movie Site
[2] See for example: Dirty Rotten Scrumdrels
[3] Manifesto for Software Craftsmanship
[4] See Chapter 2 “The 10,000-Hour Rule” in Outliers by Malcolm Gladwell.
[5] See for example: Code Kata at Pragmatic Programmers


Alireza Dehghani
Menu
Home
fdfdsfds
Research
fdfdsfds
Publications
fdfdsfds
Teaching
fdfdsfds
Bio
fdfdsfds
Service
fdfdsfds
Advising
fdfdsfds
Misc
fdfdsfds
Blog
fdfdsfds
Home
Research
Publications
Teaching
Bio
Service
Advising
Misc
Blog
Back to news
Third Post
Dec 17, 2020
1 min read
newest post in the news


Compare With Friends
My Calendar
Invite
Compare
Manage Groups
Import Calendar
Month
My Calendar
Friend's Calendar
Friends
Friend
Friend
Friend
Friend
Friend
Friend
Friend
Friend


College students take part inHeritage Walk in Haveri
by Special CorrespondentScores of college students took part in a Heritage Walk organised by the Dharwad Circle of Archaeological Survey of India (ASI) at a protected monument, Siddeshwar Temple, in Haveri on Thursday.
In the programme organised as part of the Heritage Week being conducted from November 19 to 25, students formed human chain on the premises of the Siddeshwar Temple before proceeding going for the walk.
Led by their principals and teachers of Shivalingeshwar and Rachoteshwar Independent PU Colleges, respectively, S.V. Hiremath and S.B. Annigeri, students covered M.G. Road, Yalakki Oni, Akkipet and M.G. Road before returning to the temple.
Throughout the walk, the students raised slogans on the significance of protecting historical monuments and highlighted the role of citizens in preserving such monuments.
Officials of ASI G. Kamaraj, Devaraj S.M., H. Ravindra, Deepak Kumar and other staff participated and coordinated the event. They threw light on why it was important to protect historical monuments.
On the temple premises, a quiz contest on the protection of monuments, historical monuments in the State and history was as held part of the Heritage Week.


--- layout: post title: Annotated models categories: - sightings - tricks author: marcel published: true date: 2006-03-03 05:22:00.000000000 +00:00 ---
Ever working with a model and you forget what all of its columns are? Ever find yourself with your schema.rb
open in a separate window so you can see what the structure is of your tables?
Dave Thomas, of Rails Pragmatic Studio fame (among a brazillion other things), hacked up a plugin that adds a comment block to the top of all of your model classes documenting the current schema for the given model. It ends up looking something like this:
class LineItem < ActiveRecord::Base belongs_to :product
- Schema as of Sun Feb 26 21:58:32 CST 2006 (schema version 7)
#- id :integer(11) not null
- quantity :integer(11)
- product_id :integer(11)
- unit_price :float
- order_id :integer(11)
#When the schema is updated, the comment is updated to reflect the new schema.
Install it with the plugin script:
script/plugin install http://svn.pragprog.com/Public/plugins/annotate_modelsRun it with a custom rake task:
rake annotate_models
Check out the caveats in the README.
Thanks for sharing Dave.


This toolkit will help small and medium-sized enterprises to improve their environmental impact. By mapping company's energy use with its operations you will create understanding and increase awareness, helping your organization to become greener. Simply fill the forms and get results along with recommendations.
Assessment
is based on 5 categories:
* Equipment procurement compliance with Green ICT
guidelines and Optimizing enterprise operations;
*
Energy performance improvement and monitoring and Use of
alternative energy;
* Energy aware networks
engineering adherence;
* Social commitment;
*
Waste Management;
With this toolkit SMEs can discover
conveniently classified list of activities on how to save on
energy costs and move towards carbon netural business.
SURF Green ICT Maturity Model for higher education institutions
Swiss Informatics Society Green IT Model
EPEAT rating for Green ICT procurement
Carbon footprint calculator from US EPA: indoor, transportation and wastes
Simplified Environmental Management System for SMEs
Sustainable practices science resources
Renewable energy deployment case studies
EU Energy Star specifications database for office equipment
The project is a Master Thesis work of Erasmus Master Course PERCCOM student under the supervision of Leeds Beckett University, School of Computing, Creative Technologies and Engineering, Faculty of Arts, Engineering, and Technology.
Anar Bazarhanova
Email:
<EMAIL_ADDRESS>.


Animated_GIF
A library that makes creating animated GIFs easy. Everything is
client-side, using JavaScript.
Get the source
and start animating today!
Here are a few examples demonstrating what the library can do --and
serving as documentation.
-
Basic - demonstrates how to build both
single frame and multi frame GIFs
-
Basic With blobs - demonstrates how
to build both single frame and multi frame GIFs with blobs
-
Custom Palette - shows how to
use custom palettes
-
Dithering - demonstrates the
different types of dithering that can be used
-
Stress - this is a test to see how well
browsers work when creating many GIFs quickly
-
Transparent - demonstrates how to
build both single frame and multi frame GIFs with transparency


You are viewing an historical archive of past issues. Please report new issues to the appropriate project issue tracker on GitHub.
Comments
-
Greg Hurrell
Sounds like you might be using an older version of Synergy. Something changed in Snow Leopard which made the volume hot keys "stick" sometimes (see bug #1383), so a workaround was implemented in 4.0.1b (and also backported to 3.4.1 for those who don't want to upgrade to the 4.0 series yet). See the version history.
So I recommend that you upgrade to either the latest 4.1 release (currently 4.1b) or the latest 3.4.1 release. Both are available on the download page.
Will mark this as closed for now. If it turns out that my guess is wrong please feel free to add another comment.
-
Greg Hurrell
Status changed:
- From: new
- To: closed
Add a comment
Comments are now closed for this issue.


Welcome to the official Notable Entertainment Music website! You may have heard of us at a great party or event that you’ve recently attended or perhaps from a friend. We have a music library diverse enough to handle any and all of your needs and suitable for any occasion! Enjoy your stay at our website, and please e-mail us if you have any questions or would like a quote for an event.
Notable Entertainment Music
Some photos courtesy of Stephanie Perez


Each model in radmc3dPy should be named as modelname.py. The file should be located either in the radmc3dPy/models directory or in the current workging directory. When a model is set up the problemSetupDust() and problemSetupGas() methods first try to import the model from the current working directory. If the model can’t be imported from the current directory, then the radmc3dPy model library will be checked for the model.
To add a model to the radmc3dPy model library, we need write permissions to the directory where radmc3dPy was installed. First we need to copy the model file to the radmc3dPy/models directory. Then the updateModelList() function in the models class needs to be called. It will update the list of available models in the package. Note, that for the update to take effect we need to reaload the imported modules / package or we need to quit the current python session and restart it again.
However, it is not necessary to add the model to the library to be able to use it. The setup functions look for the model source file in the current working directory first and if such file is present it will use it otherwise they will look for the model in the library. Note, if the current working directory contains a file with the same name as one of the models in the model library the file in the current working directory will be used for the setup!
Each model source file should contain functions to provide information on the current model and provide the parameters of the model with default values. Furthermore each model should contain functions to describe the dust and/or gas structure in the model and optionally to describe the distribution and spectra of continuous star-like radiation sources. The names of these functions are listed below. Apart from these functions any number and type of user-defined auxiliary functions can be implemented in the model source files.
Every model source file should contain the following functions:
- getModelDesc() - Returns the brief description of the model.
- getDefaultParams() - Returns the default parameters of the model. This function should return a list with default parameter values. Each element of the list should contain another at least three element list: 1) name of the parameter, 2) parameter value, 3) Explanatory comment, 4) Block name (to which this parameter should be placed in the master parameter file). All parameter values should be given as strings as they should be written to the master parameter file.
This function must be implemented for all dust continuum models to describe the dust density structure:
- getDustDensity(ppar=None, grid=None) - Calculates the dust density. It takes two parameters :
ppar - Dictionary containing all parameters of the models with the parameter names as keys
- grid - An instance of the radmc3dGrid class containing the spatial
and wavelength/frequency grid of the model
Returns an ndarray with [nx,ny,nz,ndust] dimensions
The following functions must be implemented for a gas line model:
- getGasDensity(ppar=None, grid=None) - Calculates the gas density. It takes two parameters :
ppar - Dictionary containing all parameters of the models with the parameter names as keys
- grid - An instance of the radmc3dGrid class containing the spatial
and wavelength/frequency grid of the model
Returns an ndarray with [nx,ny,nz] dimensions
- getGasAbundance(ppar=None, grid=None) - Calculates the gas abundance. It takes two parameters :
ppar - Dictionary containing all parameters of the models with the parameter names as keys
- grid - An instance of the radmc3dGrid class containing the spatial
and wavelength/frequency grid of the model
Returns an ndarray with [nx,ny,nz] dimensions
- getVTurb(ppar=None, grid=None) - Calculates the microturbulent velocity field. It takes two parameters :
ppar - Dictionary containing all parameters of the models with the parameter names as keys
- grid - An instance of the radmc3dGrid class containing the spatial
and wavelength/frequency grid of the model
Returns an ndarray with [nx,ny,nz] dimensions
- getVelocity(ppar=None, grid=None) - Calculates the gas velocity. It takes two parameters :
ppar - Dictionary containing all parameters of the models with the parameter names as keys
- grid - An instance of the radmc3dGrid class containing the spatial
and wavelength/frequency grid of the model
Returns an ndarray with [nx,ny,nz,3] dimensions, with [i,j,k,:] containing the three velocity component (vx,vy,vz) for cartesian and (vr,vtheta,vphi) for spherical coordinate system.
These functions should be implemented if a continuous star-like radiation source is added to the model. These functions describe the “density” distribution of the continuous starlike sources as well as their spectra.
- getStellarsrcDensity(ppar=None, grid=None) - Calculates the stellar density for continuous star-like radiation sources
ppar - Dictionary containing all parameters of the models with the parameter names as keys
- grid - An instance of the radmc3dGrid class containing the spatial
and wavelength/frequency grid of the model
Returns an ndarray with [nx,ny,nz] dimensions
- getStellarsrcTemplates() - Calculates the stellar templates for continuous star-like radiation sources
ppar - Dictionary containing all parameters of the models with the parameter names as keys
- grid - An instance of the radmc3dGrid class containing the spatial
and wavelength/frequency grid of the model
Returns an ndarray with [ntemplate,3] or [ntemplate,nwavelength] dimensions. If the returned array has [ntemplate,3] dimension, the [:,0], [:,1], [:,2] elements of the array should contain the stellar effective temperature (as negative numbers!), stellar radius and mass, respectively. If the returned dimension is [ntemplate, nwavelenght] the array should contain the frequency dependent spectrum of each stellar template. The setup functions will check the [0,0] element of the array. If it is negative, it assumes the template is defined as stellar temperature, radius and mass, if the [0,0] element is positive it assumes the array contains the full frequency dependent spectrum of each template.


Introduction
*Theory Behind Principal Component Analysis
*Residual Standard Deviation (RSD or Real Error RE)
*Chi-square
*Target Factor Analysis
*Target Testing
*Principal Component Analysis by Example
*Principal Component Analysis and Real Data
*PCA and CasaXPS
*Viewing the Data in Factor Space
*
XPS is a technique that provides chemical information about a sample that sets it apart from other analytical tools. However, the key information sought by the analyst is locked into a data envelope and as a consequence the need for powerful algorithms is paramount when reducing the data to chemically meaningful quantities. Two approaches have been employed on XPS data:
Curve synthesis is probably the most widely used method for data analysis practised by XPS researchers. Unfortunately, statistically good curve fits are not always physically meaningful and, in many cases, great care must be exercised when choosing the model to describe the data. Any assistance in understanding the model is therefore of great value and it is with this end that Principal Component Analysis is offered as a supplementary tool.
Factor analysis is a field that is as broad as it is deep. It is a mathematically challenging tool that requires knowledge of matrix algebra coupled with a feel for a statistical approach to data interpretation. A true understanding for the subject can only be obtained by studying the literature and through practical experience. Therefore the material presented here is only an introduction rather than a complete set of works.
Component Analysis
Factor analysis is a multivariate technique for reducing matrices of data to their lowest dimensionality by use of orthogonal factor space. The challenge is to identify the number of significant factors (principal components) and use this information to model the data using techniques such as Target Transformations or curve fitting.
In XPS the data matrix is composed of spectra where each acquisition channel is viewed as a co-ordinate in an r-dimensional space; r is equal to the number of acquisition channels per spectrum. The problem addressed by PCA is that of determining the number of distinct spectroscopic features present in a particular set of c spectra.
The following example tries to illustrate the nature of the problem. Consider a set of three spectra; each spectrum has three acquisition channels:
|
s1 = ( 4, 3, 6) , s2 = (2, 3, 2) , s3 = (2, 0, 4) |
The data matrix is given by
These three vectors belong to a 3-dimensional space, however they do not span 3-dimensional space for the following reason. If a linear combination of the vectors s1, s2 and s3 is used to construct a new vector v, then v always lies in a plane (a 2-dimensional sub-space of 3-dimensional space). The fact that v lies in a plane is a consequence of the following relationships between the three spectra.
|
s3 = s1 – s2, so v = a s1 + b s2 + c s3 = a s1 + b s2 + c (s1 – s2) = (a + c) s1 + (b – c) s2. |
Thus, two principal components exist for the set of three spectra.
The analysis of the data matrix in the above simple example has been performed by observation. Unfortunately real spectra are not so simple and spotting the linear relationships between the columns of the data matrix requires a more sophisticated approach.
PCA, also known as Eigenanalysis, provides a method for identifying the underlying spectra that form the building blocks for the entire set of spectra. The data matrix is transformed into a new set of r-dimensional vectors. These new vectors span the same subspace as the original columns of the data matrix, however they are now characterised by a set of eigenvalues and eigenvectors. The eigenvalues provide a measure for the significance of the abstract factors with respect to the original data. Various statistics can be computed from these values that aid in identifying the dimensionality of the subspace spanned by the spectra.
The procedure for calculating the abstract factors has its roots in linear least square theory. In fact the preferred method is to form a Singular Value Decomposition (SVD) for the data matrix.
Where D is the data matrix formed from c spectra, each containing r channels. U is the same dimension as D, while S and V are c by c matrices. S is a diagonal matrix; the diagonal elements are the square root of the eigenvalues of the correlation matrix
The abstract factors are computed from US. The rows of V are the corresponding eigenvectors of Z; the co-ordinates of the eigenvectors represent the loading for the abstract factors and specify how linear combinations of these factors can be used to reproduce the original data. Including all of the abstract factors with the appropriate loading enables the data to be reproduced to an accuracy only limited by the precision characteristic of the Eigenanalysis procedure.
The essential feature of the SVD procedure is to compute the abstract factors so that the factor corresponding to the largest eigenvalue accounts for a maximum of the variation in the data. Subsequent abstract factors are generated such that 1) as much variance as possible is accounted for by each new factor and 2) the newest axis is mutually orthogonal to the set of axes already located. The procedure therefore computes an orthogonal basis set for the subspace spanned by the original data matrix that is oriented with respect to the data in a linear least square sense.
In principle, the number of non-zero eigenvalues is equal to the number of linearly independent vectors in the original data matrix. This is true for well posed problems, but even the presence of errors due to numerical operations will result in small eigenvalues that theoretically should be zero. Numerical errors are an insignificant problem compared to the one presented by the inclusion of experimental error in the calculation. Noise in the data changes the underlying vectors so that almost every data matrix of c spectra with r acquisition channels, where c <= r, will span a c-dimensional subspace. This is true even though the underlying vectors should only span fewer than c dimensions.
Various statistics are available for identifying the mostly likely dimensionality of a data matrix. These statistics are designed to aid partitioning the abstract factors into primary and secondary factors. The primary factors are those corresponding to the largest n eigenvalues and represent the set of abstract factors that span the true subspace for the data. The secondary factors are those factors that can be associated with the noise and, in principle, can be omitted from subsequent calculations. It is not possible to completely disassociate the true data from the error within the measured data, however the statistics guide the analyst in choosing the most appropriate number of abstract factors that describe the data and therefore the "best guess" dimensionality for the data matrix.
In the case of XPS spectra the experimental error is known to be the square root of the number of counts in an acquisition channel. Under these circumstances where the experimental error is known, a number of statistics have been proposed for determining the size of the true factor space.
Residual Standard Deviation (RSD or Real Error RE)
An alternative name for the RSD (used by Malinowski) is the Real Error (RE).
The RSD is defined to be:
where Ej is the jth largest eigenvalue, n is the number of abstract factors used to reproduce the data; c spectra each with r channels are used to construct the data matrix.
RSDn must be compared against the estimated experimental error. If the value computed for RSDn is approximately equal to the estimated error then the first n abstract factors span the factor space. The dimensionality of the original data matrix is therefore n.
Two further statistics may be derived from RSDn, namely, IEn (Imbedded Error) and INDn (Indicator Function) given by:
And
IEn and INDn are statistics that should decrease as the number of primary abstract factors is increased. Once all the primary factors have been included, these statistics should begin to increase since at this point factors from the noise subspace start to interfere with the accuracy of the data description. This minimum is therefore an indicator of the dimensionality of the data subspace.
Bartlett proposed using the chi-square criterion for situations similar to XPS data, where the standard deviation varies from one data channel to the next.
The procedure involves reproducing the data matrix using the abstract factors. Each abstract factor is progressively included in a linear combination in the order defined by the size of the eigenvalues and weighted by the co-ordinates of the corresponding eigenvectors. The chi-square value for a set of n abstract factors is computed using:
where dij is an element of the data matrix, dij is the corresponding approximation to the data point constructed from the first n abstract factors with the largest eigenvalues. The standard deviation for XPS data sij is the square root of dij.
The expected value for each n is given by cn2 (expected) = (r-n)(c-n). A comparison between the expected value and the computed value is the basis for determining the number of principal components. Both cn2 and its expected value decrease as n increases. cn2 initially is larger than cn2 (expected) but as n increases a crossover occurs. The true dimensionality of the data matrix is chosen to be the value of n for which cn2 is closest to its expected value.
Note that smoothing the data will alter the characteristics of the noise. Performing such pre-processing therefore invalidates the cn2 statistic.
Principal Component Analysis provides a set of basis vectors that describe the original set of spectra. Although useful as a means of characterising the data, these abstract factors are in general not physically meaningful. Target Factor Analysis is concerned with identifying vectors that can also describe the data, but with the additional property that they are recognisable as spectra rather than simply abstract vectors in an r-dimensional space.
There are numerous methods for transforming the PCA abstract factors to provide vectors that are more open to chemical interpretation. These involve constructing abstract rotation transformations that map the abstract factors into one of the infinite number of alternative basis sets for the factor space. Fortunately there is a technique which when coupled with curve synthesis, lends itself to the analysis of XPS data, namely, Target Testing.
Once a Principal Component Analysis has been performed, the mathematical bridge between abstract and real solutions is Target Testing. Individual spectra can be evaluated to assess whether the corresponding vector lies in the subspace spanned by the chosen primary abstract factors. The essential feature of Target Testing is to form the projection of the target vector onto the subspace spanned by the primary factors, then compute the predicted target vector using this projection. Statistical tests applied to the predicted and test vectors determine whether these two vectors are one and the same. These tests serve as a mean of accepting or rejecting possible fundamental components of the sample.
Ultimately, the goal of target testing is to identify a set of spectra that span the same subspace as the primary abstract factors. Complete models of real factors are tested in the target-combination step. In the combination step the data matrix is reproduced from the real factors (spectra) rather than from abstract factors and by comparing the results for different sets of real factors, the best TFA solution to a problem can be determined.
Testing a target vector x with respect to the chosen set of primary abstract factors involves forming the projection t onto the subspace spanned by the PCA primary abstract factors. The predicted vector x, calculated using the co-ordinate values of t to load the corresponding abstract factors, is compared to the original target vector. A target vector that belongs to the subspace spanned by the primary abstract factors should result in a predicted vector that is identical to the initial target vector. Errors in the original data matrix and similar errors in the measured target vector mean that the predicted and target vector differ form each other as well as from the pure target vector x* (x but without error). Estimates for these differences allow a comparison to be made between the predicted and target vector and a decision as to which targets to include in the target combination step.
The apparent error in the test vector (AET) measures the difference between the test and predicted vectors in a root mean square (RMS) sense. Similarly two other RMS quantities estimate the real error in the target vector (RET) and the real error in the predicted vector (REP). These error estimates form the basis for the SPOIL function defined to be approximately equal to the ratio RET/REP.
Principal Component Analysis by Example
The first example illustrating the characteristics of PCA uses a set of artificial data.
Three sets of spectra prepared from synthetic components are used in the PCA. The structure of the artificial data derives from Carbon 1s states within three compounds, namely, PMMA, PVA and PVC (Figure 1.). The proportion of each compound varies throughout each set of ten VAMAS blocks. The data is located in the files c1stest1.vms, c1stest2.vms and c1stest3.vms. The underlying trends introduced into each file are as follows: peaks corresponding to PMMA and PVC obey quadratic adjustments in intensity over the set of ten spectra (PMMA decreases while PVC increases). The difference between the three files is the proportion of PVA in each data envelope. The first file (c1test1.vms) has a constant level of PVA (Figure 2); the second file (c1stest2.vms) varies linearly, first increasing then decreasing; the third file (c1stest3.vms) includes a linear increase in the level of PVA.
The objective is to show how the statistics used in PCA behave for a known problem. Data matrices constructed from the three sets of spectra should have a dimensionality of three.
|
Figure 1: Artificial C 1s Data |
Note that, although each compound is constructed from a number of C 1s peaks (PMMA 4, PVA 4 and PVC 2), the stoichiometry of these compounds masks the true number of synthetic components actually present in the data. Hence the dimensionality of the data should be three not ten (4+4+2). An additional twist to this example is that two of the underlying envelopes are similar in shape to each other, though not identical (see Figure 1).
The trend throughout the first data set may be seen in Figure 2.
|
Figure 2: c1s_test1.vms C 1s Spectra |
No noise is present in the data; therefore eigenvalues belonging to the primary set of three abstract factors should be non-zero, while the remaining seven eigenvalues should be zero. The results of applying PCA to these data sets (Table 1) illustrate the uncertainty associated in estimating the dimensionality of the data matrix from the statistics. The fourth largest eigenvalue in each case is small but non-zero. Also the statistics for IE and IND indicate a minimum at eigenvalues other than the expected result. Chi-square is not a valid statistic since no noise is present in the data, however it does show that three abstract factors are sufficient to reproduce the data to within reason.
Table 1: PCA report for file c1stest.vms
|
FactorC 1s/1 |
10861690000 |
266.7944 |
615.8053 |
194.7347 |
7602.534 |
29055.89 |
1800 | |||
|
C 1s/2 |
684568100 |
13.0963 |
29.86145 |
13.35445 |
466.5852 |
172.5176 |
1592 | |||
|
C 1s/3 |
1433862 |
0.01064209 |
0.02964045 |
0.01623474 |
0.6049071 |
0.000190564 |
1386 | |||
|
C 1s/4 |
1.230771 |
0.000391784 |
0.002107629 |
0.001332982 |
0.05854525 |
9.86356E-08 |
1182 | |||
|
C 1s/5 |
0.003712633 |
0.000385433 |
0.001279202 |
0.000904532 |
0.05116807 |
1.20367E-07 |
980 | |||
|
C 1s/6 |
0.000545838 |
0.000230365 |
0.001168993 |
0.000905498 |
0.07306205 |
4.86336E-08 |
780 | |||
|
C 1s/7 |
0.000473059 |
0.000240069 |
0.001018602 |
0.000852223 |
0.113178 |
5.18512E-08 |
582 | |||
|
C 1s/8 |
0.000306354 |
0.000155331 |
0.000891207 |
0.000797119 |
0.2228016 |
2.20338E-08 |
386 | |||
|
C 1s/9 |
0.000200465 |
0.00012725 |
0.00076887 |
0.000729414 |
0.7688698 |
1.91008E-08 |
192 | |||
|
C 1s/10 |
0.000118823 |
4.68061E-13 |
0 |
0 |
0 |
6.13259E-23 |
0 |
It is interesting to see how the eigenvalues change with respect to the three data sets (Figure 3 and Figure 4). The same spectra varied in different ways results in slightly different orientations for the principal component axes and hence different eigenvalues.
The PCA statistics IE and IND have implied a dimensionality other than three (Table 1). The clue to the correct dimensionality of the data lies in the relative size of the eigenvalues. The fourth eigenvalue is in two cases better than five orders of magnitude smaller than the third eigenvalue. This statement has been made with the benefit of a good understanding of what is present in the data. In real situations such statements are themselves suspect and so require support from other data reduction techniques. For example curve fitting using three sets of synthetic peaks all linked with the appropriate stoichiometric relationships would lend support to the hypothesis. Curve fitting such structures is not an exact science and such fits themselves should be supported by statistics gathered from the fitting parameters.
|
Figure 3: Abstract Factors and Eigenvalues. |
|
Figure 4. Eigenvalues for c1s_test2.vms Abstract Factors |
The second example illustrates the effects of experimental error on a PCA calculation.
Table 2: PCA Applied to Artificial Data with Simulated Noise.
|
Factor |
Eigenvalue |
RMS |
RE (RSD) |
IE |
IND * 1000 |
Chi-sq Calc. |
Chi-sq Expected |
|
C 1s/1 |
10883620000 |
267.626 |
617.9728 |
195.4202 |
7629.294 |
50489.63 |
1800 |
|
C 1s/2 |
687172800 |
18.93302 |
47.75373 |
21.35612 |
746.152 |
3572.687 |
1592 |
|
C 1s/3 |
2714766 |
6.90718 |
26.01386 |
14.24838 |
530.8951 |
483.7729 |
1386 |
|
C 1s/4 |
946794.7 |
0.1649431 |
2.106561 |
1.332306 |
58.51557 |
0.5688374 |
1182 |
|
C 1s/5 |
5095.574 |
0.0622169 |
0.5048702 |
0.3569971 |
20.19481 |
1.247441 |
980 |
|
C 1s/6 |
226.9936 |
0.01656361 |
0.1904914 |
0.147554 |
11.90571 |
0.002773735 |
780 |
|
C 1s/7 |
29.13143 |
0.002688086 |
0.00847462 |
0.007090376 |
0.9416245 |
5.0833E-05 |
582 |
|
C 1s/8 |
0.03943089 |
0.000339289 |
0.003105158 |
0.002777337 |
0.7762894 |
3.05649E-07 |
386 |
|
C 1s/9 |
0.003409306 |
0.000206314 |
0.001523904 |
0.001445703 |
1.523904 |
9.22657E-08 |
192 |
|
C 1s/10 |
0.000466779 |
1.26006E-12 |
0 |
0 |
0 |
7.4912E-22 |
0 |
Real data includes noise. The effect of noise on a PCA calculation can be see from Figure 5 together with the report in Table 2. The data in the file c1stest1.vms has been used together with a pseudorandom number generator to simulate noise that would typically be found in XPS data. The consequence of including a random element in the data is that the eigenvalues increase in size and lead to further uncertainty with regard to which eigenvalues belong to the set of primary abstract factors. Note that the abstract factors in Figure 5 are plotted in the reverse order to the ones in Figure 3 and Figure 4.
|
Figure 5: c1stest1.vms data plus artificial noise. |
Fortunately, the chi-square statistic becomes more meaningful when noise is introduced into the problem. A comparison between the computed chi-square and its expected values do seem to point to a 3-dimensional subspace. The crossover between the two quantities suggests the need for three abstract factors when approximating the data matrix using the results of PCA.
Principal Component Analysis and Real Data
XPS depth profiles generate sets of spectra that are idea for examination via PCA. The spectra are produced by repeatedly performing etch cycles followed by measuring the count rate over an identical energy region. The resulting data set therefore varies in chemical composition with respect to etch time and the common acquisition conditions provide data in a form that is well suited to PCA.
An aluminium foil, when profiled using a Kratos Analytical Axis Ultra, provides a good example of a data set that can be analysed using some of the features on offer in CasaXPS. The data is not chemically or structurally interesting, but does show how trends can be identified and anomalies isolated.
Figure 6 shows a plot of the Al 2p energy-region profiled against etch time. The data envelopes change in shape as the surface oxide layer is removed by the etch cycles to reveal the homogeneous bulk aluminium metal.
It should also be noted from Figure 6 that the data contains an imperfection. One of the energy scans includes data acquired during an instrumental event. Noise spikes are superimposed on the true data and these should be removed before techniques such as curve synthesis are applied. In this case the spikes appear in the background and are therefore obvious to the eye, however similar non-physical structure that occurs on the side of a peak is less obvious and could be missed.
The first step in performing the Principal Component Analysis is to define a quantification region for each of the spectra to be used in the analysis. These regions specify the acquisition channels that will be used in the data matrix. Also any shifts in the data due to charging can be removed from the calculation by using an offset in the energy region for those spectra affected.
Next, select the set of spectra in the Browser View and display the data in the active tile. The processing property page labelled "PCA" offers a button labelled "PCA Apply". On pressing this button, those spectra displayed in the active tile are transformed into abstract factors. Figure 7 displays the spectra before the PCA transformation while Figure 8 shows the abstract factors generated from the eigenanalysis.
Note that the abstract factors are truly abstract. The first factor (Figure 8) looks like an Al 2p metal doublet, however this is because the Al 2p metal envelope dominates the data set and therefore a vector having a similar shape accounts for most of the variation in the overall set of spectra. A more even weighting between the underlying line-shapes would produce abstract factors that are less physically meaningful in appearance.
|
|
The only real use for the abstract factors is judging their significance with respect to the original data. Abstract vectors that derive from noise look like noise, factors that contribute to the description of the data contain structure. The dividing line between the primary and secondary abstract factors can sometimes be assessed based on the appearance of the abstract factors.
Analysing the Al 2p spectra generates abstract factors and eigenvalues that represent the PCA fingerprint for the data. Table 3 is a report of the Al 2p data set generated by CasaXPS and formatted using a spreadsheet program. Each row of the report is labelled by the VAMAS block name that contains the abstract factor corresponding to the listed eigenvalue.
Table 3: Report generated by a PCA for Al 2p Profile.
|
Factors |
Eigenvalue |
RMS |
RE (RSD) |
IE |
IND * 1000 |
Chi-sq Calc. |
Chi-sq Expected |
|
Al 2p/3 |
4727872000 |
82.5236 |
159.3106 |
34.76442 |
398.2765 |
26032.99 |
2600 |
|
Al 2p/8 |
65086870 |
3.784555 |
23.78739 |
7.340948 |
65.89305 |
136.4193 |
2451 |
|
Al 2p/13 |
393178.7 |
5.875731 |
20.74929 |
7.842494 |
64.04102 |
133.7949 |
2304 |
|
Al 2p/18 |
305001.5 |
3.48073 |
17.85783 |
7.793798 |
61.79182 |
78.0949 |
2159 |
|
Al 2p/23 |
156694.8 |
3.249367 |
16.25038 |
7.929371 |
63.47803 |
59.6866 |
2016 |
|
Al 2p/28 |
98359.06 |
2.757161 |
15.2192 |
8.135007 |
67.64091 |
51.1035 |
1875 |
|
Al 2p/33 |
86168.29 |
2.48836 |
14.18397 |
8.189118 |
72.36718 |
41.82519 |
1736 |
|
Al 2p/38 |
65267.54 |
2.22333 |
13.35424 |
8.242415 |
79.01916 |
37.98182 |
1599 |
|
Al 2p/43 |
53613.14 |
2.247765 |
12.61316 |
8.257255 |
87.59142 |
42.46731 |
1464 |
|
Al 2p/48 |
43569.08 |
0.1744253 |
11.97161 |
8.261198 |
98.93895 |
0.1869893 |
1331 |
|
Al 2p/53 |
32387.23 |
1.710532 |
11.52946 |
8.344409 |
115.2946 |
29.01139 |
1200 |
|
Al 2p/58 |
28174.98 |
2.021671 |
11.12658 |
8.410907 |
137.3652 |
33.42906 |
1071 |
|
Al 2p/63 |
24742 |
1.261896 |
10.75487 |
8.461885 |
168.0448 |
15.17705 |
944 |
|
Al 2p/68 |
23980.27 |
0.40768 |
10.29759 |
8.407944 |
210.1548 |
1.649807 |
819 |
|
Al 2p/73 |
20710.42 |
1.113217 |
9.867347 |
8.33943 |
274.093 |
10.69842 |
696 |
|
Al 2p/78 |
18345.12 |
1.155456 |
9.424948 |
8.226769 |
376.9979 |
15.75993 |
575 |
|
Al 2p/83 |
16109.71 |
0.7358818 |
8.960655 |
8.062218 |
560.0409 |
5.605129 |
456 |
|
Al 2p/88 |
13003.76 |
0.7303461 |
8.600543 |
7.962556 |
955.6159 |
5.882052 |
339 |
|
Al 2p/93 |
12307.15 |
0.7049177 |
7.99876 |
7.608339 |
1999.69 |
6.193881 |
224 |
|
Al 2p/98 |
9285.948 |
0.000443667 |
7.554815 |
7.372745 |
7554.815 |
2.12747E-06 |
111 |
|
Al 2p/103 |
7476.855 |
1.90305E-13 |
0 |
0 |
0 |
2.03675E-25 |
0 |
The chi-square indicates that the data matrix can be reproduced to within experimental error using two abstract factors. This is a result that is consistent with the physical nature of the sample. It is also interesting (from a mathematical standpoint) to note that using all the abstract factors to reproduce the data matrix returns a chi-square of zero (allowing for round-off errors in the computation). This should always be the case and provides an easy check to see that the calculation has been performed correctly.
All the statistics expect the Indicator Function point to two abstract factors being sufficient to span the factor space for the data matrix.
It is worth examining the data set using a subset of the spectra and Target Testing the spectra not used in the PCA. This allows anomalies to be identified such as spikes in the data. Selecting a representative subset of spectra for the PCA then target testing the remainder is particularly useful for large sets of data.
Table 4: Target Test Report for a Subset of Al 2p Data Set.
|
Target |
AET |
REP |
RET |
SPOIL |
Al 2p/3 |
Al 2p/8 |
|
Al 2p/23 |
20.93032 |
10.38374 |
18.17295 |
1.750135 |
0.39033 |
-0.04947 |
|
Al 2p/28 |
23.83028 |
11.05117 |
21.11288 |
1.910467 |
0.41839 |
0.017257 |
|
Al 2p/33 |
19.83736 |
11.47927 |
16.17861 |
1.409376 |
0.42997 |
0.065749 |
|
Al 2p/38 |
19.8507 |
12.01348 |
15.80274 |
1.315418 |
0.44268 |
0.10609 |
|
Al 2p/43 |
19.9069 |
12.46508 |
15.52116 |
1.245171 |
0.4531 |
0.133366 |
|
Al 2p/48 |
57.16561 |
12.70691 |
55.73546 |
4.386233 |
0.45854 |
0.14688 |
|
Al 2p/53 |
15.37333 |
13.18052 |
7.912861 |
0.600345 |
0.46791 |
0.174614 |
|
Al 2p/58 |
21.39836 |
13.30379 |
16.76004 |
1.259795 |
0.46901 |
0.184805 |
|
Al 2p/63 |
19.92528 |
13.5238 |
14.63296 |
1.082016 |
0.47386 |
0.195062 |
|
Al 2p/68 |
27.73522 |
13.78354 |
24.06775 |
1.746122 |
0.48087 |
0.203826 |
|
Al 2p/73 |
19.10189 |
13.88023 |
13.12332 |
0.945469 |
0.48192 |
0.210646 |
|
Al 2p/78 |
20.9575 |
13.98145 |
15.61204 |
1.116625 |
0.48264 |
0.218455 |
|
Al 2p/83 |
19.03813 |
14.15492 |
12.7314 |
0.899433 |
0.48483 |
0.229382 |
|
Al 2p/88 |
18.38591 |
14.11378 |
11.78317 |
0.83487 |
0.48374 |
0.228046 |
The SPOIL function and AET statistics (Table 4) show that Al 2p/48 differs in some respect from the other spectra in the list tested. The spectrum in question corresponds to the trace displaying the spikes seen in Figure 6. Also, another spectrum that could be looked at is Al 2p/68. The AET value is high compared to the other spectra. Such spectra may highlight interfaces where either new chemical states appear (either directly from features in the data or indirectly through changes in the background due features outside the acquisition region) or energy shifts due to sample charging have altered the characteristics of the data.
The PCA report in Table 3 includes the spectrum labelled Al 2p/48 in the data matrix. The consequence of not removing the spikes is apparent in the 3-D factor space shown in Figure 9, where the abstract factor with third largest eigenvalue clearly contains spikes and the projection point number 10 derived from the Al 2p/48 spectrum is obviously a statistical outlier.
Principal Component Analysis is offered on the "processing" window. The options on the property page labelled "PCA" allow spectra to be transformed into abstract factors according to a number of regimes. These include covariance about the origin and correlation about the origin. Each of these pre-processing methods may be applied with and without background subtraction.
Quantification regions must be defined for each spectrum included in the factor analysis. In addition, each spectrum must have the same number of acquisition channels as the others in the set of spectra to be analysed. The first step in the calculation replaces the values in each spectrum by the result of interpolating the data within the defined quantification region for the spectrum. This is designed to allow energy shifts to be removed from the data used in the factor analysis.
The quantification region also provides the type of background to the spectrum. Performing the analysis on background subtracted data attempts to remove artifacts in the spectrum that derive from other peaks within the vicinity of the energy region. Background contributions can be significant in PCA. Additional primary abstract factors are often introduced as a consequence of changes in the background rather than the underlying peaks within the region of interest. The presence of such abstract factors can be viewed as information extracted from the data, although in many circumstances they can lead to incorrect synthetic models if background contributions are misunderstood.
A factor analysis is performed on the set of spectra displayed in the active tile. Although PCA is offered as a processing option, it is the only processing option that acts on a collection of spectra. Any other option from the processing window would only act upon the first VAMAS block in a selection when that selection is displayed in a single tile.
The principal component analysis is performed when the "Apply" button is pressed. Each spectrum displayed in the active tile is replaced by the computed abstract factors. The order of the VAMAS blocks containing the spectra is used as the order for the abstract factors. The factor corresponding to the largest eigenvalue is entered first. Subsequent blocks receive the abstract factors in descending order defined by the size of the corresponding eigenvalues. A report showing the statistics for understanding the dimensionality of the factor space appears in a dialog window.
A button labelled "PCA Report" allows the current PCA report to be re-displayed. Care should be exercised since the values are subject to any additional processing (including PCA) that may subsequently be applied to any of the spectra included in the original analysis.
The PCA property page includes a button to reset the processing operations for every spectrum displayed in the active tile. This allows a PCA calculation to be undone in one stroke. It will also undo any processing previously performed on the data. PCA is aimed at the raw data; the chi-square statistic is referenced to the raw data and has an undefined meaning when the data have been processed prior to performing factor analysis.
Target Factor Analysis in the form of target testing is also available on the PCA property page. Following a PCA, candidates for the physically meaningful components may be assessed individually or collectively. Choose an abstract factor from the PCA and entering this factor into the active tile. Then select the number of primary abstract factors for use in the target test procedure. A text field is offered on the PCA property page for this purpose and is found in the section headed "Target FA". Next, select the target test spectra in the Browser view and press the button labelled "TFA Apply". A report detailing the statistics calculated from the TFA procedure will appear in a dialog window.
The TFA report may be written to file in an ASCII format with TAB separated columns. When pressed, any of the buttons above the columns on the report will display a file dialog window from which the output text-file can be specified. This method for saving a report to file is used by the PCA report (above) and the Linear Regression Report described below.
Once a set of target spectra has been identified, these spectra can be used to reproduce the original set of spectra through a linear regression step. Enter the set of target spectra into the active tile; then select the original spectra in the Browser view. Press the button labelled "Linear Regression". A report shows the RMS differences between each of the original spectra and the predicted spectra calculated from a linear combination of the set of target spectra displayed in the active tile. The loading used to compute the predicted spectra are listed in the report. The report may be written to file using a similar procedure to the TFA report described above.
Viewing the Data in Factor Space
CasaXPS offers an option on the "Geometry" property page on the "Tile Display" dialog window labelled "Factor Space". If selected, the VAMAS blocks displayed in a tile are used to define the axes for a subspace and the original data are plotted, if possible, as a set of co-ordinates with respect to these axes. The plot represents a projection of the data space onto the subspace defined by a set of two or three abstract factors.
The abstract factors defining the axes are graphed together with a list of the co-ordinate values for each of the spectra projected onto the subspace spanned by the chosen abstract factors (Figure 9). A 3-dimensional plot provides a visual interpretation for the spectra. Patterns formed by the spectra highlight trends within the data set and the relative importance of the abstract factors can be examined. A plot in which the axes are defined by unimportant factors generally appear random, while factors that are significant when describing the data typically produce plots containing recognisable structure.


{% extends "base.html" %} {% block content %}
The shared secret address does no longer exist, maybe you have already clicked on it, or the link has expired. If not please call your contact in order to be sure that nobody has intercepted the link.


FilterValuesReturns a text result containing only the values that were provided in filterValues, in the order they were originally entered in textToFilter.FilterValues(textToFilter; filterValues)filterValues - values that you want to preserve in the specified textIf filterValues doesn’t have any values, an empty string is returned.When the textToFilter or the filterValues parameter is a literal string, you must insert a paragraph character (¶) between each item in the string. To insert a carriage return character, click the ¶ button in the Specify Calculation dialog box.The FilterValues function is not case-sensitive.when a database file named Database has a value list Sizes that contains Small¶Medium¶Large.


| I l@ve RuBoard |
15.4 JPython ( Jython): Python for JavaJPython (recently renamed "Jython") is an entirely distinct implementation of the Python programming language that allows programmers to use Python as a scripting component in Java-based applications. In short, JPython makes Python code look like Java, and consequently offers a variety of technology options inherited from the Java world. With JPython, Python code may be run as client-side applets in web browsers, as server-side scripts, and in a variety of other roles. JPython is distinct from other systems mentioned in this section in terms of its scope: while it is based on the core Python language we've seen in this book, it actually replaces the underlying implementation of that language rather than augmenting it.[2]
This section briefly explores JPython and highlights some of the reasons you may or may not want to use it instead of the standard Python implementation. Although JPython is primarily of interest to programmers writing Java-based applications, it underscores integration possibilities and language definition issues that merit the attention of all Python users. Because JPython is Java-centric, you need to know something about Java development to make the most sense of JPython, and this book doesn't pretend to teach that in the next few pages. For more details, interested readers should consult other materials, including JPython documentation at http://www.jython.org.
15.4.1 A Quick Introduction to JPythonFunctionally speaking, JPython is a collection of Java classes that run Python code. It consists of a Python compiler, written in Java, that translates Python scripts to Java bytecodes so they can be executed by a Java virtual machine -- the runtime component that executes Java programs and is used by major web browsers. Moreover, JPython automatically exposes all Java class libraries for use in Python scripts. In a nutshell, here's what comes with the JPython system:
The net effect of all this is that JPython allows us to write Python programs that can run on any Java-aware machine -- in particular, in the context of most web browsers. More importantly, because Python programs are translated into Java bytecodes, JPython provides an incredibly seamless and natural integration between the two languages. Both walk and talk in terms of the Java model, so calls across language boundaries are trivial. With JPython's approach, it's even possible to subclass a Java class in Python and vice versa. So why go to all this trouble to mix Python into Java environments? The most obvious answer is that JPython makes Java components easier to use: JPython scripts are typically a fraction of the size of their Java equivalents, and much less complex. More generally, the answer is really the same as it is for C and C++ environments: Python, as an easy-to-use, object-oriented scripting language, naturally complements the Java programming language. By now, it is clear to most people that Java is too complex to serve as a scripting or rapid-development tool. But this is exactly where Python excels; by adding Python to the mix with JPython, we add a scripting component to Java systems, exactly as we do when integrating Python with C or C++. For instance, we can use JPython to quickly prototype Java systems, test Java classes interactively, and open up Java systems for end-user customization. In general, adding Python to Java development can significantly boost programmer productivity, just as it does for C and C++ systems. 15.4.2 A Simple JPython ExampleOnce a Python program is compiled with JPython, it is all Java: the program is translated to Java bytecodes, it uses Java classes to do its work, and there is no Python left except for the original source code. Because the compiler tool itself is also written in Java, JPython is sometimes called "100% pure Java." That label may be more profound to marketeers than programmers, though, because JPython scripts are still written using standard Python syntax. For instance, Example 15-4 is a legal JPython program, derived from an example originally written by Guido van Rossum. Example 15-4. PP2E\Internet\Other\jpython.py############################################ # implement a simple calculator in JPython; # evaluation runs a full expression all at # once using the Python eval( ) built-in-- # JPython's compiler is present at run-time ############################################ from java import awt # get access to Java class libraries from pawt import swing # they look like Python modules here labels = ['0', '1', '2', '+', # labels for calculator buttons '3', '4', '5', '-', # will be used for a 4x4 grid '6', '7', '8', '*', '9', '.', '=', '/' ] keys = swing.JPanel(awt.GridLayout(4, 4)) # do Java class library magic display = swing.JTextField( ) # Python data auto-mapped to Java def push(event): # callback for regular keys display.replaceSelection(event.actionCommand) def enter(event): # callback for the '=' key display.text = str(eval(display.text)) # use Python eval( ) to run expr display.selectAll( ) for label in labels: # build up button widget grid key = swing.JButton(label) # on press, invoke Python funcs if label == '=': key.actionPerformed = enter else: key.actionPerformed = push keys.add(key) panel = swing.JPanel(awt.BorderLayout( )) # make a swing panel panel.add("North", display) # text plus key grid in middle panel.add("Center", keys) swing.test(panel) # start in a GUI viewer The first thing you should notice is that this is genuine Python code -- JPython scripts use the same core language that we've been using all along in this book. That's good news, both because Python is such an easy language to use and because you don't need to learn a new, proprietary scripting language to use JPython. It also means that all of Python's high-level language syntax and tools are available. For example, in this script, the Python eval built-in function is used to parse and evaluate constructed expressions all at once, saving us from having to write an expression evaluator from scratch. 15.4.3 Interface Automation TricksThe previous calculator example also illustrates two interface automations performed by JPython: function callback and attribute mappings. Java programmers may have already noticed that this example doesn't use classes. Like standard Python and unlike Java, JPython supports but does not impose OOP. Simple Python functions work fine as callback handlers. In Example 15-4, assigning key.actionPerformed to a Python function object has the same effect as registering an instance of a class that defines a callback handler method: def push(event): ... key = swing.JButton(label) key.actionPerformed = push This is noticeably simpler than the more Java-like: class handler(awt.event.ActionListener): def actionPerformed(self, event): ... key = swing.JButton(label) key.addActionListener(handler( )) JPython automatically maps Python functions to the Java class method callback model. Java programmers may now be wondering why we can assign to something named key.actionPerformed in the first place. JPython's second magic feat is to make Java data members look like simple object attributes in Python code. In abstract terms, JPython code of the form: X = Object(argument) X.property = value + X.property is equivalent to the more traditional and complex Java style: X = Object(argument) X.setProperty(value + X.getProperty( )) That is, JPython automatically maps attribute assignments and references to Java accessor method calls by inspecting Java class signatures (and possibly Java BeanInfo files if used). Moreover, properties can be assigned with keyword arguments in object constructor calls, such that: X = Object(argument, property=value) is equivalent to both this more traditional form: X = Object(argument) X.setProperty(value) as well as the following, which relies on attribute name mapping: X = Object(argument) X.property = value We can combine both callback and property automation for an even simpler version of the callback code snippet: def push(event): ... key = swing.JButton(label, actionPerformed=push) You don't need to use these automation tricks, but again, they make JPython scripts simpler, and that's most of the point behind mixing Python with Java. 15.4.4 Writing Java Applets in JPythonI would be remiss if I didn't include a brief example of JPython code that more directly masquerades as a Java applet: code that lives on a server machine but is downloaded to and run on the client machine when its Internet address is referenced. Most of the magic behind this is subclassing the appropriate Java class in a JPython script, demonstrated in Example 15-5. Example 15-5. PP2E\Internet\Other\jpython-applet.py####################################### # a simple java applet coded in Python ####################################### from java.applet import Applet # get java superclass class Hello(Applet): def paint(self, gc): # on paint callback gc.drawString("Hello applet world", 20, 30) # draw text message if __name__ == '__main__': # if run standalone import pawt # get java awt lib pawt.test(Hello( )) # run under awt loop The Python class in this code inherits all the necessary applet protocol from the standard Java Applet superclass, so there is not much new to see here. Under JPython, Python classes can always subclass Java classes, because Python objects really are Java objects when compiled and run. The Python-coded paint method in this script will be automatically run from the Java AWT event loop as needed; it simply uses the passed-in gc user-interface handle object to draw a text message. If we use JPython's jpythonc command-line tool to compile this into a Java .class file and properly store that file on a web server, it can then be used exactly like applets written in Java. Because most web browsers include a JVM, this means that such Python scripts may be used as client-side programs that create sophisticated user-interface devices within the browser, and so on. 15.4.5 JPython Trade-offsDepending on your background, though, the somewhat less good news about JPython is that even though the calculator and applet scripts discussed here are straight Python code, the libraries they use are different than what we've seen so far. In fact, the library calls employed are radically different. The calculator, for example, relies primarily on imported Java class libraries, not standard Python libraries. You really need to understand Java's awt and swing libraries to make sense of its code, and this library skew between language implementations becomes more acute as programs grow larger. The applet example is even more Java-bound: it depends both on Java user-interface libraries and Java applet protocols. If you are already familiar with Java libraries, this isn't an issue at all, of course. But because most of the work performed by realistic programs is done by using libraries, the fact that most JPython code relies on very different libraries makes compatibility with standard Python less potent than it may seem at first glance. To put that more strongly, apart from very trivial core language examples, many JPython programs won't run on the standard Python interpreter, and many standard Python programs won't work under JPython. Generally, JPython presents a number of trade-offs, partly due to its relative immaturity as of this writing. I want to point out up front that JPython is indeed an excellent Java scripting tool -- arguably the best one available, and most of its trade-offs are probably of little or no concern to Java developers. For instance, if you are coming to JPython from the Java world, the fact that Java libraries are at the heart of JPython scripts may be more asset than downside. But if you are presented with a choice between the standard and Java-based Python language implementations, some of JPython's implications are worth knowing about:
Some incompatibilities between JPython and standard Python can be very subtle. For instance, JPython inherits all of the Java runtime engine's behavior, including Java security constraints and garbage collection. Java garbage collection is not based on standard Python's reference count scheme, and therefore can automatically collect cyclic objects.[5] It also means that some common Python programming idioms won't work. For example, it's typical in Python to code file-processing loops in this form:
for filename in bigfilenamelist: text = open(filename).read( ) dostuffwith(text) That works because files are automatically closed when garbage-collected in standard Python, and we can be sure that the file object returned by the open call will be immediately garbage collected (it's a temporary, so there are no more references as soon as we call read). It won't work in JPython, though, because we can't be sure when the temporary file object will be reclaimed. To avoid running out of file descriptors, we usually need to code this differently for JPython: for filename in bigfilenamelist: file = open(filename) text = file.read( ) dostuffwith(text) file.close( ) You may face a similar implementation mismatch if you assume that output files are immediately closed: open(name,'w').write(bytes) collects and closes the temporary file object and hence flushes the bytes out to the file under the standard C implementation of Python only, while JPython instead collects the file object at some arbitrary time in the future. In addition to such file-closing concerns, Python __del__ class destructors are never called in JPython, due to complications associated with object termination. 15.4.6 Picking Your PythonBecause of concerns such as those just mentioned, the JPython implementation of the Python language is probably best used only in contexts where Java integration or web browser interoperability are crucial design concerns. You should always be the judge, of course, but the standard C implementation seems better suited to most other Python applications. Still, that leaves a very substantial domain to JPython -- almost all Java systems and programmers can benefit from adding JPython to their tool sets. JPython allows programmers to write programs that use Java class libraries in a fraction of the code and complexity required by Java-coded equivalents. Hence, JPython excels as an extension language for Java-based systems, especially those that will run in the context of web browsers. Because Java is a standard component of most web browsers, JPython scripts will often run automatically without extra install steps on client machines. Furthermore, even Java-coded applications that have nothing to do with the Web can benefit from JPython's ease of use; its seamless integration with Java class libraries makes JPython simply the best Java scripting and testing tool available today. For most other applications, though, the standard Python implementation, possibly integrated with C and C++ components, is probably a better design choice. The resulting system will likely run faster, cost less to ship, have access to all Python extension modules, be more robust and portable, and be more easily maintained by people familiar with standard Python. On the other hand, I want to point out again that the trade-offs listed here are mostly written from the Python perspective; if you are a Java developer looking for a scripting tool for Java-based systems, many of these detriments may be of minor concern. And to be fair, some of JPython's problems may be addressed in future releases; for instance, its speed will probably improve over time. Yet even as it exists today, JPython clearly makes an ideal extension-language solution for Java-based applications, and offers a much more complete Java scripting solution than those currently available for other scripting languages.[6]
For more details, see the JPython package included on this book's CD (see http://examples.oreilly.com/python2), and consult the JPython home page, currently maintained at http://www.jython.org. At least one rumor has leaked concerning an upcoming JPython book as well, so check http://www.python.org for developments on this front. See also the sidebar later in this chapter about the new Python implementation for the C#/.NET environment on Windows. It seems likely that there will be three Pythons to choose from very soon (not just two), and perhaps more in the future. All will likely implement the same core Python language we've used in this text, but may emphasize alternative integration schemes, application domains, development environments, and so on. |
| I l@ve RuBoard |


Here are female artists where we bring awarness to female artisits who don't get the recognition they should be accredited for.
Beyonce was first recognized when she was the lead singer of her childhood group, Destiny’s Child. She started her individual career releasing her first album Dangerously in Love, and with that, became one of music’s top selling artist Her no.1 hits were Perfect, Check on It, Independent Women, Baby Boy, Crazy in Love, Bills, Bills Bills, Bootylicious, Single Ladies, Say My Name, and Irreplaceable. Click On her Name!
Cardi got her attention through the media initially as a stripper. She started off appearing on Love & His Hop: New York in 2015 leaving in 2017 to proceed at starting music full time. She then released her no.1 single Bodak Yellow in 2017 Her no.1 hits were Bodak Yellow, and I Like It. Click On her Name!
Rihanna started her career when she was only 16, signing with Def Jam records and releasing her first Album in 2005 Her no.1 hits were Umbrella, SOS, Take a Bow, Only Girl, Diamonds, and Work. Click On her Name!
Here is out Fact Page. This is where we give facts about how women are less represented in music.
This page is how any up-coming artist can become more know, along with words of encouragment.
This page is all about us, and why we choose to represent awarness in this topic.


Links
Human Language Intelligence Lab. @ SKKU
Paper submission deadline is usually in May.
The conference is usually held in November.
Paper submission deadline is usually in March.
The conference is usually held in August.
Paper submission deadline is usually in September.
The conference is usually held in January.
Paper submission deadline is usually in May.
The conference is usually held in December.
Paper submission deadline is usually in February.
The conference is usually held in August.
Paper submission deadline is usually in September.
The conference is usually held in June.
Paper submission deadline is usually in January.
The conference is usually held in June.
Paper submission deadline is usually in February.
The conference is usually held in August.


{% extends "base.html" %} {% block page_title %}Privacy{% endblock %} {% block content %}
The demoQRacy website (the "Website") is hosted and maintained by Google and, as such, for the purposes of personal information, the Website operates as any other Google service. Google's Privacy Policy is available at http://www.google.com/privacy.html
{% endblock content %}


Use JPA named queries to perform database operations safely. JPA named queries provide a data access and manipulation mechanism that closely ties the query content to the Java code defining the objects that the query is executing against. It also removes the actual query language from Java code, which is a common tactic and creates certain maintainability issues. A security related advantage to named queries is that dynamic data must be bound, which prevents SQL injection attacks. The code below shows how to both define and use named queries in JPA.
To use named queries with Java Persistence API:
Define the entity class and named queries. Define your entity class and use the @NamedQuery (or @NamedQueries with multiple @NamedQuery's) annotation to define each named query.
@Entity
@NamedQuery(
name="Product.findAllProductsByProductName",queryString="SELECT pro FROM Product pro WHERE pro.name = :productName"
)
public class Product {
...

}
Use the defined named queries in code. If there is a need for dynamic data, use the parameter binding mechanism included in the query implementation.
Untyped results example:
//get dynamic data
//request parameters should be validated before use - this is a simple example
String productName = request.getParameter("product_name");
//use entity manager to retrieve named query
Query queryProductsByName = em.createNamedQuery("Product.findAllProductsByProductName");
//set dynamic data for query
queryProductsByName.setParameter("productName", productName);
//execute query and get results
Collection products = queryProductsByName.getResultList();
Typed results example:
//get dynamic data
//request parameters should be validated before use - this is a simple example
String productName = request.getParameter("product_name");
//use entity manager to retrieve named query
TypedQuery<Product> queryProductsByName = em.createNamedQuery("Product.findAllProductsByProductName", Product.class);
//set dynamic data for query
queryProductsByName.setParameter("productName", productName);
//execute query and get results
List<Product> products = queryProductsByName.getResultList();
Example without using dynamic data
//use entity manager to retrieve named query
TypedQuery<Product> queryProducts = em.createNamedQuery("Product.findAllProducts", Product.class);
//execute query and get results
List<Product> products = queryProducts.getResultList();


Morning digest: SC to hear Congress-Shiv Sena-NCP combine's plea today, voting begins in Hong Kong district council elections, and more
A select list of stories to read before you start your day
by The Hindu Net DeskSupreme Court to hear Congress-Shiv Sena-NCP combine's plea at 11.30 a.m
A political combine of the Congress, Nationalist Congress Party (NCP) and Shiv Sena on Saturday moved the Supreme Court urgently in a joint petition against the “illegal usurpation of power” by the BJP in Maharashtra, leading to a “hurried and makeshift” swearing-in ceremony which installed Devendra Fadnavis as Chief Minister.
Maharashtra government formation | BJP never gave up, kept back channels open
The swearing-in of Devendra Fadnavis as Maharashtra Chief Minister and Nationalist Congress Party (NCP) leader Ajit Pawar as his deputy on Saturday morning was the result of continuous back-channel efforts by the BJP once it was clear that the Shiv Sena was determined to break the three-decade-long alliance.
Maharashtra government formation | To prevent poaching, NCP moves it’s MLAs to a hotel
The Nationalist Congress Party (NCP) moved its MLAs to Hotel Renaissance in Powai on Saturday night to avoid poaching of its elected representatives. In a meeting in the evening, where 43 party MLAs were present party chief spokesperson Nawab Malik said six were on their way to Mumbai and the party was in continuous touch with them.
Hong Kong elections: voters queue up early over fears of clashes
Hong Kong voters at some polling stations for district council elections were queuing up by the hundreds on November 24 morning, citing concerns voting could be halted later in the day after six months of sometimes violent unrest in the Chinese-controlled city.
Italian coast guard rescues 149 migrants from capsized boat
A crowded boat filled with migrants capsized in wind-whipped seas near a tiny Mediterranean island on Saturday, sending them tumbling into the water, said the Italian coast guard, which pulled 149 of them to safety.
Premier League | Manchester City battle back for crucial 2-1 win over Chelsea
Manchester City returned to winning ways with a 2-1 success over Chelsea at the Etihad Stadium on Saturday, ending the Londoners' run of six straight victories and keeping Pep Guardiola's side nine points behind leaders Liverpool.
BJP-JJP compromised on ideologies to grab power: Selja
As Congress workers and leaders held protests against the alleged “anti-people” policies of the Bharatiya Janata Party-led government at the Centre and in Haryana, the Congress’s State president Kumari Selja on Saturday asserted that the BJP and the Jannayak Janta Party (JJP) had both compromised on their ideologies in a bid to grab power.
Supreme Court favours quick floor tests
The time given to Maharashtra Chief Minister Devendra Fadnavis till November 30 to prove his majority in the House contradicts the Supreme Court’s orders passed in over the last two decades.
IND vs BAN second Test: Kohli, Ishant push Bangladesh further towards its doom
Placed second behind the Australian legend Don Bradman in the conversion rate of 50 to 100, India captain Virat Kohli scored his 27th Century against Bangladesh in the second Test of the series at the Eden Gardens on Saturday.
Beyond faith: The contentious issue of temple lands in Tamil Nadu
With the Madras High Court staying implementation of the order to regularise encroachments on temple lands, contrasting narratives have come to the fore. While one school of thought calls for handing over such lands to poor farmers, the other says legalising encroachments will only serve to embolden squatters


About chart:
1. Use the dataset "Texas road network " from SNAP.
2. Since there are too many links for web browsing, extract the first 300 nodes appear in the dataset as my subset.
3. Use d3.js force function to implement force-directed algorithm.
4. Each circle reprecent a node of road (either start and end).
5. Each link reprecent a road between two nodes.
6. Use number of roads no matter start or end at the node as its degree, which affect circle size.
7. If node degree is over threshold (for this case, 7) , paint it orange ; it might be an important place, eg: town or city.
8. Hover on each node, then it would show its degree, in-degree and out-degree.


{% extends "base.html" %} {% block title %}Multipartite Result Page{% endblock title %} {% block content %} {% load goldenbraid_extras %}
You have assembled in the GoldenBraid destiny vector {{used_parts.Vector}} the following parts:
{% for key, value in used_parts.items %} {% if key != 'Vector' %}{{ key|capfirst|replaceunderscore }}:{{ value}}
{% endif %} {% endfor %} {{genbank_url}} {% if user.is_authenticated %} +Add part {%else%}If you wish to use this construct in a new assembly you should incorporate it into the GBDB through the following link:
Add GB_Element (you will need to log in)


About me
My name is Michael Koppmann and I am an IT Security Consultant at SBA Research. I received a master’s degree in “Software Engineering and Internet Computing” at the TU Wien. I am also an Offensive Security Certified Professional (OSCP), a Certified Information Systems Security Professional (CISSP), and a Certified Secure Software Lifecycle Professional (CSSLP).
My main interests are secure software engineering, functional programming, cryptography, privacy enhancing technologies, cryptocurrencies, and everything open source. Besides technology, I am also interested in environmental protection, Japan, and human rights.
Talks and publications
Here is a list of public talks I gave and my publications:
Talks
- 2023-05-09: “Secure Software Development – A Short Introduction of the OWASP SAMM”. Talk at B2B Software Days. (Slides)
- 2022-12-11: “The Era of Green Software”. Talk at TEDxTUWien. (Slides, Video)
- 2022-10-05: “Type-Driven Domain Design: Use the Types, Luke!”. Talk at heise devSec(), in German. (Slides)
- 2022-09-15: “Object Capabilities and Their Benefits for Web Application Security”. Lightning talk at IKT-Sicherheitskonferenz, in German. (Slides)
- 2022-09-09: “Typed Security – Preventing Vulnerabilities By Design”. Talk at sec4dev Conference & Bootcamp. (Slides, Video)
- 2022-03-25: “Type-Driven Domain Design – Security in the Fabric of Your Code”. Talk for Domain-Driven Design Vienna group, in German. (Slides)
- 2022-01-26: “Type-Driven Domain Design – Security in the Fabric of Your Code”. Talk for Security Meetup by SBA Research group. (Slides, Video)
Publications
For verification
You can verify my identity with these services:
My PGP fingerprint:
E9B3 3326 8618 0E5E 498C 6C97 63CA B0C7 75EB 9C80
My Signal “safety numbers”:
88630 72114 80083 44420 49604 09486


{% include head.html %} {% include navigation.html %} {% include 00_about.html %}
{% capture my_include %}{% include 01_data.md %}{% endcapture %} {{ my_include | markdownify }}
{% capture my_include %}{% include 02_models.md %}{% endcapture %} {{ my_include | markdownify }}
{% include 03_visualizations.html %}
{% include js.html %}