Imitating human playing styles in Super Mario Bros We describe and compare several methods for generating game character controllers that mimic the playing style of a particular human player, or of a population of human players, across video game levels. Similarity in playing style is measured through an evaluation framework, that compares the play trace of one or several human players with the punctuated play trace of an AI player. The methods that are compared are either hand-coded, direct (based on supervised learning) or indirect (based on maximising a similarity measure). We find that a method based on neuroevolution performs best both in terms of the instrumental similarity measure and in phenomenological evaluation by human spectators. A version of the classic platform game "Super Mario Bros" is used as the testbed game in this study but the methods are applicable to other games that are based on character movement in space. There are several reasons one might want to develop AI that can play a particular game in a human-like manner, or even in the manner of a particular human. To begin with, there is a commonly held assumption that having believable non-player characters (NPCs) in a game, for example as opponents or team mates, makes the game more fun and/or engaging. An NPC can be said to be believable when it would be plausible, given the in-game behaviour of the character, that it was controlled by a human. While there is no conclusive empirical evidence that believable NPCs improve games, this topic has attracted some attention from the research community in recent years and there have even been a few competitions about believable agents organised [1, 2] .. Another reason for having AI that can play in a human-like manner is that it can help demonstrate how to play the game -either in general or a particular level. For example, Nintendo's recent New Super Mario Bros Wii has a feature called Super Guide that can show a player which gets stuck on a level how to play the rest of that level. Being able to demonstrate how to solve the level in the style of that particular player might mean that the advice is more useful or more easily accepted.. A third reason is that it might be useful to understand how a particular player would have played some game content, for example a level, without having the player taking the time to play through that game content. In particular, this is very useful in search-based procedural content generation, where a simulation-based evaluation function uses an AI to play through the candidate game content, assigning a numerical fitness value (partly) depending on how playable the content is. For example, when evolving a platform game level, the fitness of the level might depend on whether an AI can play through the level or not and how fast. As the evolutionary process might need to evaluate tens of thousands of candidate levels when evolving a single level, it is typically not feasible to use human play testers for this. Using an AI that can play the content in a human-like manner can substantially improve the content evaluation, as compared to using an AI that plays the game in a non-humanlike manner. This argument holds even when not generating new content, but merely selecting among already generated content for content that suits a particular player.. It is worth pointing out that not all AI plays games in a human-like manner; quite the opposite. Both controllers that are hand-coded to play a particular game, and controllers that are trained to play a game using some sort of machine learning mechanism, frequently display behaviour that strikes observers as "unnatural" or "mechanical". When Garry Kasparov lost to the IBM software/hardware Deep Blue, he famously complained that the computer played in an implausibly human-like manner, given that all other chess computers played in a distinctly machine-like fashion [3] . A similar tendency is true for the game that is used as a testbed in this article, Infinite Mario Bros: the AI that won the first annual Mario AI Competition played some levels in the game extremely well, but it's playing style looked so unnatural that a video of the winning controller playing a level became an Internet phenomenon [4] . Even when researchers set out specifically to create human-like controllers rather than well-playing ones, success is far from guaranteed. In the 2k BotPrize, which has been organised annually since 2008, competitors submit controllers for the first-person shooter game Unreal Tournament 2004 with the goal of fooling human judges (who also play the game) that the bots are controlled by humans. So far, the humans have had higher humanness ratings than the bots by a comfortable margin [1, 5] .. It is also worth pointing out that human-like behaviour is not the same as artificial general intelligence. The original Turing test has been interpreted as many as a test of "real AI", even though Turing's own view on this was remarkably complex [6] . One common idea of "general intelligence" is a capacity for performing well over a distribution of different problems, or in a distribution of different environments [7] . It has been suggested that games, especially games which can be expressed in a generative language, could serve as good testbeds for artificial general intelligence [8] . However, there is no guarantee that an agent that performs well over a range of games does this in a human-like fashion at all. Creating an agent that performs in a human-like fashion in a particular game might or might not be a step towards creating an agent that performs well over a range of games.. In sum, we believe that creating human-like game character controllers is an important unsolved problem in game AI research. We also believe that a useful way of attacking this problem is to develop methods to imitate humans from gameplay traces. We have presented a method for assessing the behavioural similarity of different agents playing a platform game to humans (or to other agents). Using this method, we have evaluated the similarity of a number of agents, some of which were trained on human gameplay data and some which were simple or sophisticated attempts at developing well-performing agents, to recorded data of ten human players. We found significant differences among the agents, with those agents that were trained on human data coming out as most human-like. None of the agents were judged to be as human-like as the human. Among the trained agents, those trained with indirect imitation performed much better than the agent trained with direct imitation, but did not perform as well on the game itself than those agents optimised only for playing well. These results might or might not generalise to other domains and other controller architectures. Returning to the research questions posed in section 1.2, we can answer them as follows:. 1. Can we create controllers that appear to be as human-like as actual humans to external observers? Not yet. The methods proposed here appear promising, but there are apparently still aspects of the displayed behaviour that give the bots away as non-human, even for this relatively simple game.. 2. Are controllers trained to imitate humans perceived as more humanlike than controllers simply trained to play the game well? Yes, if the controller performs well enough. The controller trained with neuroevolution was judged the most humanlike of all controllers, whereas the controller trained with backpropagation was judged the least humanlike, even though it was trained to imitate the same humans. The likely explanation is that the insufficient performance gave the controller away by making errors that a human would be very unlikely make, such as running in place against a wall. 3. When imitating human behaviour, which controller architecture and training method (direct or indirect) gives the best results? Indirect methods. The decisive victory of the neuroevolution-based and dynamic scripting-based controllers over all other controllers show that for the problem and method range considered, indirect methods solve the problem best. We believe these results are promising and might contribute to the development of more human-like agents, for the purposes of more immersive gameplay, personalised game demonstration, and automatic content evaluation. Some recent work in automatically generating levels for Super Mario Bros already use artificial agents to automatically test the playability of generated levels [32, 33] and having more human-like controllers at their disposal could improve the quality of these content generator.. The most important line of future work would be to create more reliable and higher performing indirect imitation methods, preferably methods that use less data, so that models of the playing style of a particular player can be quickly learned. One way of improving indirect imitation would to be complement the trace-based human-likeness evaluation method used in this paper with other measures of human-likeness. For example, other metrics could be identified by identifying the main parameters of variation between numerous examples of human-and non-human gameplay using unsupervised learning methods such as deep networks of frequent subsequence mining; these parameters could then form the basis of new features used to model the particular playing style that should be imitated. Another way of achieving better indirect imitation could be to provide a library of common primitive or "molecular" in-game behaviours (stomping an enemy, collecting all coins from a question mark block) and use these to compose "ensemble controllers" that match the observed playing style.. Ultimately, these techniques need to be verified on games that have higher dimensions of control and/or a larger number of common in-game atomic game mechanics. Where Super Mario Bros five binary dimensions of control yielding 32 possible atomic actions, a first-person shooter played with the XBox controller has six to eight binary dimensions of control (buttons), and four continuous dimensions (two control sticks). This yields a literally infinite number of possible atomic actions, but there are reasons to believe the number of frequently occurring actions is much lower. Unsupervised learning techniques could be very useful in analysing which actions to build into a repertoire of output classes for a controller based on indirect imitation. There were a number of encouraging outcomes of the present study. In particular, all of the agents that were trained to imitate human players, achieved higher imitation scores than those that were simply created in order to gain a high score in the game. Those two agents that implemented indirect imitation (neuroevolution and dynamic scripting) also managed to convince human observers of their human-likeness significantly more often than the other agents. (The backpropagation-trained agent, which was the only one implementing direct imitation, attained dismal human-likeness scores in the phenomenological evaluation.) These results largely confirm the trends observed in [9] and [14] , though in a different domain (and with more methodological rigour).. The two indirect imitation methods also outperformed the direct imitation method in terms of raw score, with neuroevolution almost always outperforming backpropagation, and dynamic scripting outperforming backpropagation by a large margin. However, all the trained controllers performed much worse than the players whose data they had been trained on. It seems that our use of indirect imitation has not completely solved the problem with performance drop between original human and imitation that is so apparent when using direct imitation. As the two more sophisticated non-imitating controllers (REALM and GEBT) are capable of clearing almost all levels of the difficulty used in these experiments, we can truthfully say that with current techniques, there is a tradeoff between performance and human-likeness. This is a serious problem for most of the envisioned uses of behaviour imitation listed in the introduction, and we would argue that this problem deserves further study. One possible angle of attack could be to combine the multiobjective approach from [14] with the more sophisticated evaluation framework used in this study.. We have not investigated to what extent a model trained on player X replicates the playing style of player Y, or indeed the average playing style of a population of players. These would be interesting investigations to which the current methodology would be well suited, but which we will have to defer until a future paper.. A key question is to what extent the methods and finding from this study apply to other domains than platform games, in particular to other genres of video games. We have discussed the general problem of behaviour imitation in games elsewhere, where we have also tried to delimit this problem against those aspects of believability which are more the domain of computer graphics [2] . In the following discussion, we will confine ourselves to the difficulty of imitating player behaviour in Super Mario Bros as compared to other games, for example racing games, where behaviour imitation has been studied previously (see the introduction).. The number of separate action outputs (5 buttons, yielding 32 possible actions each time step) is larger than in most racing games, and it can be argued that the navigation problem is more complex for platform games than in racing games as they occasionally require the player stop and wait (e.g. for a flower to recede into its pipe) or even move backwards (e.g. to collect a coin). There is also a larger number of qualitatively different actions that need to be taken by the player in a platform game (run, shoot, jump etc.) as compared to a racing game. On the other hand, the action space is discrete, which might be argued makes it easier to imitate actions. Previous attempts to evolve well-performing controllers for Super Mario Bros indicate that it is a slightly harder task than evolving controllers for racing games, suggesting that something similar goes for imitating human playing behaviour [30, 31] .. Compared to some other games, Super Mario Bros could be said to be significantly simpler to imitate human playing behaviour in. Unreal Tournament 2004, which is the game used for the annual 2k BotPrize (a competition for human-like bots) is a first-person shooter game which features continues state and action space, movement in three dimensions, and multiple bots moving on the same map simultaneously. The complexity of movement in three dimensions together with the continuous action space implies that any function approximator would need to differentiate among a large number of meaningfully different actions, posing challenges from learning behaviour from a limited-size training set. In order to successfully use the methods presented here for such a game, one would probably need to define relevant and quite complex macro actions in order to limit the action space. Such ac-tions could themselves perhaps be extracted from human playing data using clustering or frequent sequence mining.. There is a significant number of instances in the training data with the same observation but different actions, especially in situations where the player was standing still while hesitating. In other words, we have a significant incidence of perceptual aliasing. This is in principle a problem for all reactive controllers (all of the trainable controllers in this study were reactive), and might necessitate a move to stateful controllers such as recurrent neural neural nets, or evolutionary behaviour trees, in order to achieve higher imitation performance.. The crowd-sourcing method used for gathering the ground truth about the human-likeness of our controllers worked well for the current experiment, but for future experiments comparing a larger number of controllers and players of different skill levels, we will need to find new methods of gathering the opinions of a larger and perhaps more representative set of spectators. In this section, we describe the results of the training the controllers and evaluating their performance in playing the game, and their human-likeness as judged by similarity behaviour similarity to the human gameplay traces used to train them.

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


PROKARYO:

an

illustrative

and

interactive

computational

model

of

the

lactose

operon

in

the

bacterium

Escherichia

coli

Background:

We

are

creating

software

for

agent-based

simulation

and

visualization

of

bio-molecular

processes

in

bacterial

and

eukaryotic

cells.

As

a

first

example,

we

have

built

a

interactive

computer

model

of

an

Escherichia

coli

bacterium

and

its

associated

biomolecular

processes.

Our

illustrative

model

focuses

on

the

gene

regulatory

processes

that

control

the

expression

of

genes

involved

in

the

lactose

operon.

Prokaryo,

our

agent-based

cell

simulator,

incorporates

cellular

structures,

such

as

plasma

membranes

and

cytoplasm,

as

well

as

elements

of

the

molecular

machinery,

including

RNA

polymerase,

messenger

RNA,

lactose

permease,

and

ribosomes.

Results:

The

dynamics

of

cellular

'agents'

are

defined

by

their

rules

of

interaction,

implemented

as

finite

state

machines.

The

agents

are

embedded

within

a

virtual

environment

with

simulated

physical

and

electrochemical

properties.

The

hybrid

model

is

driven

by

a

combination

of

mathematical

equations

(DEQs)

to

capture

higher-scale

phenomena

and

agent-based

rules

to

implement

localized

interactions

among

a

small

number

of

molecular

elements.

Consequently,

our

model

is

able

to

capture

phenomena

across

multiple

spatial

scales,

from

changing

concentration

gradients

to

one-on-one

molecular

interactions.

We

use

the

classic

gene

regulatory

mechanism

of

the

lactose

operon

to

demonstrate

our

model's

resolution,

visual

presentation,

and

real-time

interactivity.

Our

agent-based

model

expands

on

a

sophisticated

mathematical

E.

coli

metabolism

model,

through

which

we

highlight

our

model's

scientific

validity.

Conclusion:

We

believe

that

through

illustration

and

interactive

exploratory

learning

a

model

system

like

Prokaryo

can

enhance

the

general

understanding

and

perception

of

biomolecular

processes.

Our

agent-DEQ

hybrid

modeling

approach

can

also

be

of

value

to

conceptualize,

illustrate,

and-eventually-validate

cell

experiments

in

the

wet

lab.

The

hybrid

approach

produces

results

that

are

in

good

alignment

with

the

results

from

the

continuous

Santillan

model

Comparing

mRNA

predicted

by

the

differential

equations

and

the

hybrid

model,

the

trend

of

mRNA

generation

and

degradation

is

very

similar

(Figs.

and

On

average,

permeases

are

generated

to

transport

lactose

into

the

cell

as

shown

by

both

the

differential

equations

and

the

hybrid

model

(Figs.

and

Both

models

predict

the

same

rate

of

lactose

metabolism

(in

orders

of

as

illustrated

in

Figs.

and

We

have

presented

a

hybrid

model

of

E.

coli

metabolism

related

to

the

lactose

operon.

The

dynamics

of

cellular

'agents'

are

defined

by

their

rules

of

interaction,

implemented

as

finite

state

machines.

The

agents

are

embedded

within

a

virtual

environment

with

simulated

physical

and

electrochemical

properties.

The

hybrid

model

is

driven

by

a

combination

of

mathematical

equations

(DEQs)

to

capture

higher-scale

phenomena

and

agent-based

rules

to

implement

localized

interactions

among

a

small

number

of

molecular

elements.

By

reproducing

results

from

in

silico

experiments

reported

in

the

literature,

we

have

demonstrated

that

our

hybrid

model

is

able

to

capture

phenomena

across

multiple

spatial

scales,

from

changing

concentration

gradients

to

one-on-one

molecular

interactions..

Our

article

also

demonstrates

how

interactivity

and

illustrations,

in

the

form

of

detailed

graphical

representations

in

scenes,

can

enhance

the

understanding

of

biological

systems

through

exploration

and

visualization.

We

have

implemented

our

Prokaryo

model

on

desktop

computers,

but

also

on

mobile

devices

with

touch

interfaces

(Fig.

Mobile

computing

devices

make

such

models

more

accessible.

Touch

interfaces

greatly

facilitate

navigation

through

and

exploration

of

such

models..

Prokaryo

is

only

our

first

interactive

model

of

a

larger

biomolecular

system.

We

will

extend

Prokaryo

by

including

other

pathways

(such

as

chemotaxis)

and

embed

Prokaryo

into

a

colony

of

interacting

cells.

Prokaryo

is

part

of

the

Lindsay

Virtual

Human

(LINDSAY

a

multi-scale

computational

physiology

simulation

environment

in

which

we

can

place

E.

coli

cells

inside

the

LINDSAY

intestinal

tract.

Any

cell

can

be

selected,

and

one

can

navigate

into

its

'cellular

universe'

which

is

what

we

have

described

here

as

Prokaryo.

More

information

on

the

Lindsay

Virtual

Human

can

be

found

at

including

a

video

demonstration

and

executable

download

Computational

modeling

and

analysis

provide

insights

into

complex

systems

and

can

be

used

in

education

and

research.

Two

common

approaches

for

developing

complex

system

abstractions

are

Differential

Equation

(DE)

models

and

multi-agent

(MA)

models

Both

modeling

paradigms

have

their

own

strengths

and

weaknesses.

The

main

challenge

in

building

a

bacterium

model

in

silico

is

to

capture

emergent

properties

that

of

the

constituent

parts

alone

possesses.

Two

general

modeling

approaches

are

explored

in

order

to

model

and

simulate

a

bacterium

and

to

view

the

cellular

processes

from

a

holistic

perspective.

First,

we

use

parameterized

systems

of

DEs

that

describe

the

lac

operon

dynamics

(Table

Second,

a

hybrid

agent-based

approach

models

the

lac

operon's

heterogeneous

entities

(agents)

in

an

evolving

network

of

interactions

(Figs.

and

Other

whole

cell

in-silico

simulation

systems

have

been

developed,

most

notably

Virtual

Cell

and

Smoldyn

Virtual

Cell

converts

mathematical

descriptions

of

reaction

networks

into

differential

equations

handed

to

numerical

solvers.

The

output

is

software

code

that

can

be

used

for

further

simulation

analysis.

Virtual

Cell

offers

graphical

interfaces

to

define

reactions

and

to

access

shared

simulations.

In

contrast

to

Prokaryo,

no

user

interaction

is

possible

during

the

simulations.

Smoldyn,

on

the

other

hand,

simulates

molecules

as

individual

units,

leads

to

the

folding

which

diffuse

and

react,

and

captures

natural

stochasticity

in

cell

scale

environments.

Although

various

forms

of

output

are

possible

(data

files,

image

sequences,

movies),

Smoldyn

only

offers

a

command

line

interface,

and

is

not

built

for

realtime

interaction

during

simulations.

In

contract

to

both

Virtual

Cell

and

Smoldyn,

Prokaryo's

focus

is

on

real-time

interaction

in

simulated

cell

spaces,

with

emphasis

on

illustrative

and

educational

presentation

of

its

simulations.

Prokaryo's

code

base

can

handle

Table

Mathematical

model

to

capture

counts

of

intercellular

mRNA

(M),

LacZ

(E)

and

lactose

(L)

as

reproduced

from

A

summary

of

key

symbols

is

listed

in

Table

with

constants

explained

in

Table

general

cell

simulations,

such

as

Virtual

Cell

and

Smoldyn

but

is

here

primarily

presented

as

a

simulator

to

capture

molecular

reactions

related

to

the

lactose

operon.

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Packet Delay Metrics for IEEE 802.11 Distributed Coordination Function Abstract In this paper, we introduce a comprehensive packet delay analysis for wireless networks based on IEEE 802.11 Distributed Coordination Function (DCF). We develop mathematical models that calculate a set of packet delay metrics, namely a) the average packet delay for successfully transmitted packets, b) the average packet delay of successfully transmitted packets experiencing a specific number of collisions, c) the average packet drop time, d) the delay jitter and e) the delay distribution by computing the probability of a packet to be successfully transmitted experiencing delay time lower than a given value. All the developed models are based on calculating station's delay time at the transmission slot(s) plus the average time that station defers at backoff slots before successful transmission. The mathematical models are simple, computationally fast and can be used to build admission control algorithms. Simulation results show that our proposed mathematical analysis is highly accurate. Wireless Local Area Networks (WLANs) are gaining great popularity and are getting rapidly deployed all over the world. The WLANs are flexible and easy to implement as no cables are required. The dominating protocol utilized by WLANs is the IEEE 802.11. IEEE 802.11 defines Medium Access Control (MAC) and Physical Layer (PHY) specifications for WLANs [1] . IEEE 802.11 MAC protocol is based on the carrier sense multiple access with collision avoidance (CSMA/CA) scheme and includes two modes for channel access i.e. the mandatory Distributed Coordination Function (DCF) and the optional Point Coordination Function (PCF). In DCF, there is no differentiation mechanism between delay sensitive real-time traffic (e.g. voice over IP, video) and delay insensitive traffic (e.g. ftp, e-mail); all stations compete for the channel with the same priority. PCF is a polling-based contention free access scheme that uses an Access Point (AP) as point coordinator; it is designed to support multimedia applications. DCF describes two techniques to transmit data packets; a two-way handshaking (DATA-ACK) called basic access and an optional four-way handshaking (RTS-CTS-DATA-ACK) called Request-To-Send/Clear-To-Send (RTS/CTS) access method. In the basic access, the transmitter sends a data packet (DATA) and the receiver responds with an acknowledgement (ACK) after the successful reception of the data packet. The RTS/CTS mode requires first the exchange of short frames between the transmitter (sends a RTS frame) and the receiver (answers with a CTS frame) in order to reserve the medium before the long data packet transmission.. For real time applications, packet delay is a key issue that has to be considered when addressing performance in WLANs. Real-time applications over WLANs require that each packet arrives at the destination within a specific time period. If the packets do not arrive on time and some packets have high delay times, then the quality of the provided services will degrade. Packet delay metrics such as average delay, jitter and delay distribution can be computed and utilized to manage the resources and to guarantee quality of services (QoS) in a WLAN.. In this paper we present a comprehensive packet delay analysis that develops models for the following metrics a) average packet delay, b) average packet delay per stage, c) average packet drop time, d) delay jitter, and e) delay distribution. The main contributions of this paper is that (a) we present a complete set of packet delay metrics which are good indicators for the performance of IEEE 802.11 WLANs, (b) all models are accurate and simple based on station's delay time at the transmission slot plus the average time that the station defers at backoff slots before successful transmission, (c) the computational efficiency of all models is remarkable, especially the delay distribution model that involves computation of many delay values provides results in tenths of milliseconds.. The paper is organized as follows. Section 2 reviews the related work and Section 3 briefly describes the DCF access scheme of the IEEE 802.11 MAC protocol. Section 4 presents the mathematical modeling for DCF and the delay metrics analysis. Section 5 validates the accuracy of the developed models by comparing analytical with simulation results. Section 6 presents analytical results that evaluate the WLAN performance under different network scenarios and parameter settings, and, finally, Section 7 presents the conclusions and future research directions. In this paper we present a complete delay analysis that computes the average packet delay per stage, the average packet drop time, the average packet delay, the packet delay jitter, and the packet delay distribution of IEEE 802.11 DCF WLANs. The delay distribution model computes the probability of a packet to be successfully transmitted with delay time lower than a given value. In order to calculate the defer time of a station in jitter and delay distribution models, we assume that delay variation mainly originates from different backoff values selected at different stages and not from different time variations of backoff slots. This approximation increases computational efficiency and provides accurate analytical results.. The developed analytical models are simple, efficient and fairly accurate since they are validated by comparing analytical against simulation results. Results show that delay jitter (a) highly depends on collisions the packets suffer, and (b) it does not always follow average delay's increases and decreases, (c) very lower (W=4, 8) and very higher (W=256, 512) values than standard value (W=32) of initial contention window result in low jitter values. Results demonstrate that high number of different contention Delay jitter: + n=5 n=25 n=50 Figure 10 Average delay and jitter versus initial contention window window sizes (for ex. m=6) provide high jitter values which suggest that smaller values of m may be more appropriate specially if real-time stations are to be used. Average delay increases as number of stations, and packet length increase and decreases as the number of contention window sizes increase. Jitter increases as number of stations, packet length, and number of contention window sizes increase. Finally, the proposed jitter model gives results that are closer to simulation results compared to the jitter model presented in [13] that computes the average defer time at each backoff stage. Future work could include the application of the proposed models to guarantee Quality of Service (QoS) for real-time applications in WLANs. More specifically, the presented performance metrics could be applied to develop admission control algorithms for admitting voice, video and data calls over WLANs. Another possible direction for future work could be the extension of the proposed analysis to IEEE 802.11e and 802.11n protocols. A considerable number of researchers worldwide show a growing interest in optimizing WLAN performance by modeling the IEEE 802.11 DCF and study performance indicators such as throughput [2] [3] [4] [5] [6] [7] , average packet delay [7] [8] [9] [10] [11] , delay jitter [9, 13] , packet delay distribution [14] [15] [16] [17] [18] , average packet drop time [8, 11] , and average packet delay per stage [12] . Bianchi [2] proposed a Markov chain model to evaluate the performance of the DCF under an error-free channel. The key assumption of the model in [2] is that at each transmission attempt and regardless of the number of retransmissions suffered, the packet collides with a constant probability. Wu [3] modified Bianchi's Markov chain to calculate the throughput taking into account the packet's retransmission limit as specified in the standard. Chatzimisios [8] employed Wu's Markov chain to develop a simple mathematical model that calculates the average packet delay but his model has an inaccuracy as the transmission slot(s) time duration is considered equal to the average time duration of defer slots. Vukovic identified this inaccuracy in Chatzimisios model at the transmission slot of a station and proposed in [10] an analytical model for calculation of the average packet delay that makes a distinction between the defer slots and the transmission slot. However, Vukovic model has an inaccuracy in the calculation of the average time duration of defer slots. Defer slot duration is calculated for n contending stations and includes the station that defers i.e. the average defer slot time is computed with an additional station (n instead of n-1). Vukovic model gives accurate results when the number of stations n in a network is more than 20. For networks with a small number of stations the results are overestimated, as the average defer slot time is calculated with an additional station. In [9] a jitter analysis is presented for saturated ad hoc wireless networks using the first two moments (average and variance) of the service time for a linearized model of [2] . In [13] a packet delay variance (jitter squared) analysis based on the average packet delay per stage and the probability of successful transmission per stage is used to measure the effective capacity and the achievable throughput of wireless networks. In [14] and [15] the delay distribution was studied using z-transform of the packet delay. The method employed in [14] and [15] requires long computer run times. A less complex method than [14, 15] is proposed in [16] that computes the probability of a packet to be successfully transmitted with delay time lower than a given value. The method in [16] still involves a number of computationally expensive operations. An effective, accurate and less complex model than [14] [15] [16] [17] is presented in [18] that calculates the probability that a packet is successfully transmitted with a delay time equal to a given value.. In this paper a new method is introduced that calculates analytically DCF delays based on a station's delay time at the transmission attempt(s) plus the average time that station defers at backoff slots before successful transmission. Defer slot time calculation enables the development of accurate, simple, and computationally fast models, and at the same time, allows the development of analytical models that calculate a complete set of packet time delay metrics. We present simple and accurate average packet delay per stage [12] and average packet delay [11] models and we extend these models to develop (a) a novel model that computes the delay jitter and (b) a novel and simpler than [14] [15] [16] [17] [18] delay distribution model that computes the probability that a successfully transmitted packet experiences delay lower than a given value. A comparison of analytical results of our jitter model to that of [13] shows that our model produces results which are closer to simulation results. The jitter model developed in [13] calculates the average delay at each backoff stage while our jitter model calculates the average delay that a packet experiences at each backoff slot. Moreover, our model that calculates the average packet delay eliminates the inaccuracy of the model in [10] .

O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


The hidden injuries of overloading 'ADT' The most commonly stated definition of abstract data type (ADT) is that it is a domain of values and the operations over that domain. So, for example, a language's built-in types, like int are seen to be ADTs. It is our opinion that a pure interpretation of this definition yields a semantics in which using an ADT is the same as using built-in types: the operations are side effect free and there is no concern over alias, shallow copy or synchronization problems. Unfortunately, the term abstract data type has over time been associated with at least three distinct meanings, and those incompatible definitions have often been conflated, causing confusion to students and textbook authors alike. We believe that this has resulted in a loss of appreciation for the value-based semantics of ADTs. One of the inevitable consequences of growth and progress within any discipline, particularly one as young as computer science, is the corruption of terminology. As a concept evolves and is fleshed out (or as a technology changes) it will often retain its earliest designation, even when it develops well beyond the literal semantic connotation of this label. In many cases, this is Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. immaterial. For example, modern machine execution models don't follow the simplistic description fetch-execute cycle; yet the term continues to prevail without ill effect. Occasionally however, it becomes necessary to recognize a particular use of language as abusive and bring to the community's attention its harmful effects.. The term Abstract Data Type has a long history, intertwined with the parallel developments of data representation, programming languages, data algebras, and object-oriented concepts. We do not intend to recapitulate that history here. However, we do feel that the current broad uses to which this term is applied are untenable, inconsistent, and ultimately damaging to students' understanding of best software practices.. In order to simplify our discussion, we would like to identify three broad genres that have been described as Abstract Data Types. First, in its purest usage, an ADT is defined to be a set of values along with the operations on those values. For the time being, let us call these Platonic Types. Secondly, it has become standard practice to denote classical data structures (stacks, list, trees, etc.) as ADTs. We will use the more recent label, Containers. From a theoretical perspective Containers can be subsumed under the first genre. However, for pragmatic reasons implementations usually utilize mutable objects so we will treat them separately. Finally, many authors have begun to use the term ADT more generally to describe classes that present a public interface and private implementation. This case represents such a diversity of application (e.g., interfaces in Java, packages in Ada, classes or user-defined types in language neutral texts, etc.) that there is not a uniform term we can identify, so we will use the term interface in its broad sense. There are three popular uses of the term ADT. The most often quoted, and we think the correct one, is that an ADT is a set of values and the operations on those values. The second usage identifies Containers as ADTs. That is somewhat understandable because indeed, there are such structured platonic values and operations. However, using the term ADT for Containers is problematic because for efficiency reasons Containers are most often mutable and therefore the representation is no longer value based; the "operations" have side effects that complicate the semantics. Finally, the third usage calls any interface with a private implementation an ADT. In this guise, ADTs are claimed to model real world entities in addition to platonic ones.. In his excellent programming languages text [9] Kenneth Louden recognizes the historical/developmental problems that have arisen from the varied uses of the term ADT. Although his motivation is in the context of language design, and his discussion is aimed at a somewhat different audience, some of the observations we have made here were anticipated even as far back as his 1 st edition more than a decade ago. Louden stops short, however, of identifying the injuries caused when the overloaded definitions are conflated. During the intervening 14 years, the misuse of ADT has continued unabated.. In many ways the object-oriented approach to software construction followed a parallel evolutionary path to that of the structured programming movement, out of which the phrase abstract data type was coined. It is our belief that the vocabulary that has emerged from the object-oriented sector (e.g., interface) more appropriately characterizes the kind of modeling that occurs for real-world, physical entities. Further, the adoption of the label container is also an improvement for those data structures (e.g., list, stack, queue, map, set, etc.) that have historically been called ADTs. We therefore recommend that the term ADT be reserved for those Platonic Types that legitimately can be defined as a domain of values with a set of operations over the domain, and which are represented as values (i.e., immutable objects).

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O B O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


On the identification of piston slap events in internal combustion engines using tribodynamic analysis Piston slap is a major source of vibration and noise in internal combustion engines. Therefore, better understanding of the conditions favouring piston slap can be beneficial for the reduction of engine Noise, Vibration and Harshness (NVH). Past research has attempted to determine the exact position of piston slap events during the engine cycle and correlate them to the engine block vibration response. Validated numerical/analytical models of the piston assembly can be very useful towards this aim, since extracting the relevant information from experimental measurements can be a tedious and complicated process.In the present work, a coupled simulation of piston dynamics and engine tribology (tribodynamics) has been performed using quasi-static and transient numerical codes. Thus, the inertia and reaction forces developed in the piston are calculated. The occurrence of piston slap events in the engine cycle is monitored by introducing six alternative concepts: (i) the quasi-static lateral force, (ii) the transient lateral force, (iii) the minimum film thickness occurrence, (iv) the maximum energy transfer, (v) the lubricant squeeze velocity and (vi) the piston-impact angular duration.The validation of the proposed methods is achieved using experimental measurements taken from a single cylinder petrol engine in laboratory conditions. The surface acceleration of the engine block is measured at the thrust-and anti-thrust side locations. The correlation between the theoretically predicted events and the measured acceleration signals has been satisfactory in determining piston slap incidents, using the aforementioned concepts. The results also exhibit good repeatability throughout the set of measurements obtained in terms of the number of events occurring and their locations during the engine cycle. The ever increasing importance of fuel efficiency, noise reduction and engine performance is forcing researchers to better understand the mechanism and effective parameters of piston dynamics. The piston assembly plays a key role in the generation of engine mechanical losses, including noise [1] . The latter is well known as piston impact (also slap) noise. In order to better study the occurrence of slap noise events, one should carefully monitor the piston's secondary motion, which are different experimental set-up arrangements, depending on the measurement purposes. Chiollaz and Favre have studied noise transfer mechanisms inside the engine using several transducers [13] . Geng and Chen [4] used three accelerometers to position piston events more accurately. Richmond [14] used only one accelerometer on the engine block to capture surface vibrations. The measured acceleration contains contributions from the piston secondary motion, as well as other sources; therefore, signal processing is required to filter out the irrelevant signal content. Combustion and piston impact are difficult to separate, since their noise levels are of the same order. Moreover, they occur almost at the same time in the vicinity of the top dead centre (TDC) and are highly correlated. Pruvost et al. introduced a spectrofilter to implement the impact-source separation [15] . Geng and Chen [4] used wavelet decomposition and a fast reconstruction algorithm for this purpose. Another identification method is the blind source separation (BSS) of vibration components. The principles of this method are explained by Antoni [16] . Liu and Randall used the BSS method for the separation of internal combustion engine piston slap from other measured vibration signals [17] . Badaoui et al. [18] and Serviere et al. [19] compared Wiener filtering and BSS techniques to isolate mechanical and combustion noises. They also established a comparison between the two methods. Chen and Randall [20] have exploited the "pseudo angular acceleration" of the block to extract mechanical signals. A further study of the phase variation and frequency behaviour was applied to separate piston slap events from other mechanical sources by the same authors.. In the present study, the six aforementioned concepts will be applied in a single-cylinder engine case study for different engine speeds and loads. The surface vibration acceleration is recorded on both TS and ATS sides of the engine block. The accuracy of each method will be discussed in terms of the number and position of the mechanical events predicted, including piston slap events. The predictions are verified with experimental measurements, revealing the potential of each method for identifying piston slap events. In this paper, six concepts have been used to study potential piston slap events in internal combustion engines. In the available literature, identification methods for piston-liner impacts have been proposed based on the quasi-static contribution of forces in the lateral direction of piston motion, on sign change of the transient lateral force and on occurrence of the minimum film thickness. Three additional concepts were introduced in this study, which are the maximum transferred energy, the lubricant squeeze velocity and the piston-impact angular duration. A single cylinder petrol engine experimental rig was employed to validate the concepts studied. It is shown that the quasi-static and transient lateral force concepts are successful in the prediction of angular position and location of events at lower engine speeds and loads. At higher engine speed/load combinations (with larger inertia contributions), the transient mechanism of the minimum film thickness occurrence proves to be a more successful criterion. The piston-impact angular duration and maximum energy methods are those techniques sustaining their effectiveness in estimating impact events through all the engine tests. The angular duration method suggests an interval for the occurrence of each event, while the maximum energy method points out the accurate event position. It is also shown that the number of events increases in theory as the engine speed increases. The examined concepts reveal that transient tribodynamic analysis is a very useful technique to identify the number of piston slap events, as well as their severity as a result of the engine speed/load conditions (particularly at higher speeds necessitating capture of faster impact events). As future work, the accuracy of the examined methods may be investigated in different engine configurations (higher number of cylinders) and various speed/load ranges. In addition, the effects of connecting rod inertia and friction force can be added in the systems modelled. The experimental measurements to verify the theoretical findings were made on a Honda CRF 450 R single-cylinder, four-stroke petrol engine. The engine specifications are given in Table 1 . The cylinder pressure, engine speed and time-based crank angle are recorded to be used in the theoretical calculations. Surface accelerations at TS and ATS are measured by two accelerometers, which are attached to the engine block. The optical shaft encoder correlates measured acceleration with crank angle and in-cylinder pressure. The data are captured and stored using LABVIEW. The experimental setup schematic is given in Fig. 4 . The gas force is calculated by multiplying the in-cylinder pressure by the piston-crown area.

O O O O B I O O B I I O O O B I O O O O O O O O O B I I O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O B I O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Treelet kernel incorporating cyclic, stereo and inter pattern information in chemoinformatics Chemoinformatics is a research field concerned with the study of physical or biological molecular properties through computer science's research fields such as machine learning and graph theory. From this point of view, graph kernels provide a nice framework which allows to naturally combine machine learning and graph theory techniques. Graph kernels based on bags of patterns have proven their efficiency on several problems both in terms of accuracy and computational time. Treelet kernel is a graph kernel based on a bag of small subtrees. We propose in this paper several extensions of this kernel devoted to chemoinformatics problems. These extensions aim to weight each pattern according to its influence, to include the comparison of non-isomorphic patterns, to include stereo information and finally to explicitly encode cyclic information into kernel computation. Chemoinformatics is a science field lying at the edge of chemical and computer science which aims to study, analyze, store and predict chemical data through informational techniques. Two problematics addressed by chemoinformatics correspond to Quantitative Structure-Activity Relationship (QSAR) and Quantitative Structure-Property Relationship (QSPR) problems. QSAR and QSPR are based on the similarity principle [1] which states that two structurally similar molecules should have similar activities and properties. A molecule is usually encoded by its molecular graph. A molecular graph is defined as a labeled graph G = (V, E, µ, ν), where the unlabeled graph (V, E) encodes the structure of the molecule while µ maps each vertex to an atom's label corresponding to atom's chemical element. Labeling function ν characterizes each edge by a type of bond between two atoms (single, double, triple or aromatic). Considering this molecular representation and the similarity principle, QSAR/QSPR problems rely on defining a similarity measure between molecular graphs.. A first family of methods introduced within QSAR/QSPR field is based on the correlation between a set of molecular descriptors and a given molecular property (e.g. molecule's boiling point). Descriptor sets are encoded by vectors and may be computed from structural information [2] , physical properties or biological activities. These vectors may be used within any statistical machine learning algorithm in order to predict molecule's properties. Such a scheme allows to benefit from the large set of tools available within the statistical machine learning framework. However, the definition of a fixed size vector from a molecule, i.e. a molecular graph, induces a loss of information. Moreover, for each application, the definition of a vectorial description of each molecule is based on chemical expert's heuristics. A slightly different approach is based on graph embedding. Within this framework, a vectorial description of a graph is automatically built from its encoding using, for example, the spectral analysis of graphs [3] . In this last case, the embedding is deduced from the analysis of the eigenvectors and eigenvalues of the adjacency matrix.. A second family of methods, based on graph theory [4] , may be decomposed in two subfamilies. The first subfamily [5] , related to the data mining field, aims to discover subgraphs having a large difference of frequencies between sets of positive and negative examples. We can note that this first subfamily is mainly restricted to classification problems. The second subfamily [6] , bases molecular graph similarity measures on graph edit distance. However, since graph edit distance does not define an euclidean distance [7] , similarity measures based on graph edit distance do not correspond to a direct explicit nor implicit embedding. An embedding may nevertheless be obtained by regularizing the edit distance or by using distances to a set of prototype graphs [6] . Graph edit distance can also be directly combined with a restricted set of machine learning methods such as k-nearest neighbors or k-medians algorithms.. Graph kernels can be understood as symmetric graph similarity measures. Using a positive definite kernel k, the value k(G, G ′ ), where G and G ′ encode two graphs, corresponds to a scalar product between two vectors ψ(G) and ψ(G ′ ) in a Hilbert space. Therefore, such a similarity measure may be used in conjunction with machine learning methods which may access to input data only through scalar products (such as SVM). Graph kernel framework provides thus a natural connection between structural pattern recognition and graph theory on one hand and statistical pattern recognition on the other hand.. A large family of graph kernels used in chemoinformatics is based on the definition of a bag of patterns for each graph and deduces graph similarity from similarity between bags. Some bags of patterns are defined by linear patterns. For example, marginalized kernel [8] defines a graph kernel based on a comparison between sets of random walks extracted from each graph. Tree pattern kernel [9] defines a graph kernel using a set of tree patterns instead of walks. This last kernel allows to encode more structural information than 2 kernels based on linear patterns such as random walks.. A common drawback of kernels based on random walks and tree patterns is that the global similarity between two graphs is based on an implicit enumeration of their common patterns. An implicit enumeration does not allow to analyze the relevance of each pattern according to a given dataset and a particular property. Weisfeiler-Lehman kernel [10] corresponds to a kernel based on a subset of tree patterns, computable in linear time, which provides an explicit distribution of each pattern within a graph. However, authors do not propose a method to weight each pattern. Treelet kernel [11] defines a graph kernel based on a explicit set of patterns, called treelets, defined as all labeled subtrees having at most 6 nodes. This kernel can be used with a treelet selection step which aims to select relevant treelets according to a given property.. Kernels based on bags of patterns compute a similarity between two molecular graphs by comparing the number of occurrences of a given set of patterns in each graph. This approach only compares strictly isomorphic patterns. However, similarity principle established between molecular graphs can be transposed to patterns, i.e. similar patterns may have a similar influence on molecular properties. Considering this hypothesis, the shingled Weisfeiler-Lehman subtree kernel [12] consists in including the comparison of similar tree patterns into kernel computation. However, this kernel is limited to the comparison of structurally isomorphic patterns and the set of patterns is restricted to balanced trees.. However, kernels based on linear or tree patterns do not encode any cyclic information. Molecular cycles correspond to an important molecular characteristic since they reduce the atom's degrees of freedom and hence influence molecular properties. Based on this last point, cyclic systems are used by chemical experts in order to classify molecules into several distinct molecular families, each family having similar chemical and biological properties. Cyclic pattern kernel [13] aims to encode cyclic similarity between molecular graphs. This kernel is defined as a sum of two subkernels, a first one encoding acyclic similarity and a second one encoding cyclic similarity. However, the cyclic information captured by this kernel is restricted to the number of common cycles of two graphs and hence does not encode adjacency relationships between molecular cycles.. Finally, most of existing graph kernels do not take into account stereoisomerism. Stereoisomerism is a molecular property which distinguishes two molecules, called stereoisomers, encoded by a same molecular graph but which differs by the relative positioning of their atoms. Stereoisomers can have different properties which can not be accurately predicted by usual graph kernels which consider these molecules as identical. The adaptation of the tree pattern kernel [14] in order to encode stereo information constitutes a noticeable exception. However, this method does not provide a clear separation between patterns encoding stereoisomerism and patterns which do not.. This article is an extension of two previous papers [15, 16] which extend treelet kernel by explicitly taking into account cyclic and chiral information of molecules. In this article, we propose a unified presentation of treelet kernel in-cluding a detailed description of the extensions proposed in [15, 16] . In addition, we propose an original extension of treelet kernel which includes the contribution of similar patterns. Moreover, we propose to explain in detail a pattern weighting scheme based on multiple kernel learning and more complete experiments. Our paper is organized as follows: First, the treelet kernel construction scheme is described in section 2 together with a weighting scheme based on multiple kernel learning [17] which allows to compute an optimal weight for each pattern according to a given property. Second, section 3 aims to define a kernel which includes the comparison of similar patterns. Then, section 4 aims to include stereo information into graph kernel. Finally, we propose to encode cyclic information in two different ways. The first one consists in encoding the cyclic system of a molecule by its relevant cycle graph (section 5.2) which allows to encode relationships between cycles of a molecule. The second representation, called relevant cycle hypergraph (section 5.3), allows to encode relationships between cyclic and acyclic parts into an unique molecular representation. Treelet kernel has been adapted to the comparison of these two new molecular representations. Finally, all proposed extensions are evaluated in section 6 on several chemical data sets. In this article, we have presented several extensions to treelet kernel which take into account chemical relevant characteristics such as pattern weighting, the contribution of non-isomorphic sub structures, stereoisomerism and cyclic information. As shown in experiments, these extensions allow to enhance prediction results obtained on several chemoinformatics datasets. In order to achieve a better prediction accuracy, we aim to encode the substituents' relative positioning around a cycle in order to encode a finer cyclic information. Another outlook consists in using optimal solvers such as MKL to define an inter treelet kernel based on a training set instead of using an a priori treelet edit distance. Finally, our next work regarding stereo information will focus on extending stereo treelet 27 kernel to cyclic molecules in order to enlarge its application domain. We proposed several extensions of the treelet kernel in order to define a more accurate similarity measure for QSAR/QSPR problems. Table 1 summarizes the different informations took into account by each proposed extension. The first line corresponds to the treelet kernel k T [11] which only takes into account acyclic information. Based on the hypothesis that similar sub structures should have a similar influence, the first extension (line 2) aims to include the comparison of non-isomorphic treelets into kernel computation. Similarity between treelets is deduced from graph edit distance. Second, the next extension (line 3) consists in encoding stereo information which is crucial for predicting certain molecular properties. Finally, the last three extensions (lines 4 to 6) consist in encoding cyclic information into graph kernels. First, we have proposed to apply the treelet kernel on the relevant cycle graphs (line 4) which allows us to encode the cyclic system of a molecule. However, considering such a kernel does not allow us to take into account acyclic parts. This drawback can be tackled by computing a kernel as a combination of a treelet kernel and a treelet kernel on relevant cycle graph (line 5). The parameter λ allows to weight the influence of the cyclic information and is choosen by cross-validation. However, this combination dissociates cyclic and acyclic parts and can't thus encode relationships between cyclic and acyclic parts of a molecule. Therefore, we proposed the relevant cycle hypergraph as a new molecular representation. This hypergraph representation allows us to encode the whole molecular graph and to explicitly encode cyclic information. We adapted the treelet kernel (line 6) in order to compare relevant cycle hypergraphs which defines thus a similarity measure We also consider linear, gaussian, intersection and binary kernels as basic kernel between treelet's frequencies.

O O O O O O O O O O B B O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Modeling and experimental methods to predict oxygen distribution in bone defects following cell transplantation Abstract We have developed a mathematical model that allows simulation of oxygen distribution in a bone defect as a tool to explore the likely effects of local changes in cell concentration, defect size or geometry, local oxygen delivery with oxygen-generating biomaterials (OGBs), and changes in the rate of oxygen consumption by cells within a defect. Experimental data for the oxygen release rate from an OGB and the oxygen consumption rate of a transplanted cell population are incorporated into the model. With these data, model simulations allow prediction of spatiotemporal oxygen concentration within a given defect and the sensitivity of oxygen tension to changes in critical variables. This information may help to minimize the number of experiments in animal models that determine the optimal combinations of cells, scaffolds, and OGBs in the design of current and future bone regeneration strategies. Bone marrow-derived nucleated cell data suggest that oxygen consumption is dependent on oxygen concentration. OGB oxygen release is shown to be a time-dependent function that must be measured for accurate simulation. Simulations quantify the dependency of oxygen gradients in an avascular defect on cell concentration, cell oxygen consumption rate, OGB oxygen generation rate, and OGB geometry. Effective tissue regeneration in a bone defect is clinically essential in many settings of high-energy trauma in order to return patients to full mobility and productive life. Bone formation requires the contribution of osteogenic (bone forming) connective tissue progenitors (CTP-Os). CTP-Os represent a heterogeneous population of cells resident in bone marrow, periosteum, and other tissues that are capable of proliferating and differentiating into one or more connective tissues [13, 14] . In many clinical settings, such as fracture nonunion and bone defects, the local population of CTP-Os is suboptimal [3] . In these settings, transplantation of bone marrow-derived osteoblastic stem and progenitor cells is a promising therapeutic strategy. However, oxygen tension within a site where CTP-Os are transplanted is a critical determinant of cell survival and cell fate.. CTP-Os can be readily harvested from bone and marrow tissues. In clinical practice, they are transplanted in the form of cancellous autograft bone or bone marrow aspirates and are often combined with biocompatible scaffolds [2, 16] . However, the environments in which these grafts are placed are often characterized by profound hypoxia, which limits the likely survival of transplanted cells. As a result, optimization of the effectiveness of such cell transplantation in the setting of bone defects and other tissue engineering constructs must be informed by a keen awareness and understanding of the biological environment into which CTP-Os and other cells are placed, particularly with respect to hypoxia [13, 23] .. In theory, the oxygen tension environment within a bone defect can be modulated by many interacting factors, including the vascularity of surrounding tissues, the local concentration of cells in the defect, the rate of oxygen consumption by cells within a defect, defect size or geometry, and the diffusion or convection path that is available for fluid and therefore dissolved oxygen transport through the defect. Several studies have suggested that oxygen tension and the outcome of tissue formation can also be influenced by local oxygen delivery within the defect, using oxygen-generating biomaterials (OGBs) [1, 6, 17, 18, 24] .. The goal of this project was to develop a mathematical model to simulate oxygen distribution in an established in vivo bone defect [15, 22] as a tool to inform and accelerate the optimization of cell therapy strategies and possible use of OGBs. This model is used to explore the relative effects of variation in defect size and OGB geometry, the number of cells, the oxygen consumption rate of transplanted cells, and the oxygen release rate from an OGB. This information is essential to minimize the number of experiments in an animal model that determine the optimal combinations of scaffold, OGB, and cell concentration, thus shortening the amount of time from bench to bedside in developing new therapies.. Previous models have defined oxygen consumption [7-10, 25, 28] and oxygen transport [9, 12, 14, 28] in tissues, but these models are not designed to inform the sensitivity to variables that may be manipulated in an established preclinical animal model to enhance clinical success. In the following sections, we first describe the design and development of the mathematical model, followed by experimental studies that were performed to provide objective data on the oxygen consumption rates of the progeny of human bone marrow-derived CTP-Os and oxygen generation rates for gas-foamed cylinders of OGB. These experimental data provide a clinically relevant set of parameters that enable examination of the effect of cell number and other parameters, which are presented in subsequent sections. The mathematical model developed in this study can predict the oxygen distribution for tissue regeneration in a bone defect. This model allows systematic exploration of the likely sensitivity of local oxygen tension to changes in the concentration of cells transplanted, the defect size and geometry, the rate of oxygen delivery in the defect, and the mean oxygen consumption per cell. Simulations highlight the critical parameter of cell concentration N in determining the oxygen concentration throughout the defect. Although changing a has the same effect as changing N, the value of a is an intrinsic property of the system and cannot be externally modulated as can be done with N. Oxygen consumption of bone marrow-derived nucleated cells is dependent on oxygen concentration and decreases as oxygen tension falls below 0.05 lmol ml -1 . Oxygen release from OGBs may be considered as a means of modulation of local oxygen tension in a defect site, recognizing that oxygen release is a time-dependent function that must be measured for accurate simulation.

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O B I O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O


Implementing Remote procedure calls Remote procedure calls (RpC) are a useful paradigm for providing communication across a network between programs written in a high level language. This paper describes a package, written as part of the Cedar project, providing a remote procedure call facility. The paper describes the options that face a designer of such a package, and the decisions we made. We describe the overall structure of our RPC mechanism, our facilities for binding RPC clients, the transport level communication protocol, and some performance measurements.We include descriptions of some optimisations we used to achieve high performance and to minimize the load on server machines that have many clients.Our primary aim in building an RPC package was to make the building of distributed systems easier. Previous protocols were sufficiently hard to use that only members of a select group of communication experts were willing to undertake the construction of distributed systems. We hoped to overcome this by providing a communication paradigm as close as possible to the familiar facilities of our high level languages. To achieve this aim, we concentrated on making remote calls efficient, and on making the semantics of remote calls as close as possible to those of local calls.To use the package, a programmer designs an interface module (just as he would for a single-machine program), then uses a translator called Lupine to produce stub program modules which are responsible for converting local calls into calls on a package which provides node-to-node packet transport. A program wishing to make a remote call just makes a local rail to the appropriate stub module. The stub module causes the RPC runtime system to transport the appropriate packets Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice is given that copying is by permission of the Association for Computing Machinery. To copy otherwise, or to republish, requires a fee and/or specific permission.© 1983 ACM 0-89791-115-6/83/010/0003 $00.75to the corresponding stub module on the destination machine, where the packets are unpacked and a local call is made to the programmer's module implementing the desired procedure.We provide facilities for binding the parts of a distributed computation together at runtime. These facilities use the Grapevine distributed database to locate the appropriate nodes on our internet, then make an RPC call to the appropriate node to obtain the binding information. The binding is performed at the level of an interface module.Our packet transport protocol concentrates on two techniques to achieve efficiency. Firstly, we are careful to minimize the number of packets transmitted for simple calls. The simplest calls take just one packet in each direction. Secondly, we designed our connnection management to ensure that connection establishment and take down are cheap, and that maintenance of large numbers of connections does not impose an undue load on the server nodes. When a connection is idle, the only state maintained by a caller is the binding information and a machine-wide sequence number; the state maintained by a callee is just the identity and last sequence number of the caller. Furthermore, the callee (which we expect to be typically a server machine shared amongst many users) can discard the state information on a connection after a suitable interval.The package is fully implemented, and we are in the early stages of acquiring experience with its use. The paper includes some measurements of the performance of the system on test cases. We believe the parts of our RPC package that we discuss are of general interest in several ways. They represent a particular point in the design spectrum of RPC. We believe that we have achieved very good performance without adopting extreme measures, and without sacrificing useful call and parameter semantics. The techniques for managing transport level connections so as to minimize the communication costs and the state that must be maintained by a server are important in our experience of servers dealing with large numbers of users. Our binding semantics are quite powerful, but conceptually simple to a programmer familiar with single machine binding. They were easy and efficient to implement.

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O