text:
In this page we will learn how to construct neuron and network models in xolotl from scratch. The first step to constructing any model in xolotl is to create a container for everything we create in it. In this section (and anywhere else), we will use the variable x to hold the xolotl object.

% create a xolotl object
x = xolotl;

xolotl is a component-oriented simulation environment, which means that all "things" that can exist in the model are pre-defined components; and models are created by linking this components together like building blocks.

xolotl has 4 fundamental types of components:

1. compartment Objects of this type are used to represent compartments. Compartments can model entire neurons or parts of neurons. Compartments contain all other component types.
2. conductance Objects of this type represent populations of ion channels. They are contained within compartments.
3. synapse Objects of this type represent populations of synapses. They connect two different compartments together.
4. mechanism Objects of this type can represent any arbitrary (typically intracellular) mechanism. For example, Calcium buffering is represented as a mechanism.

The first thing we want to do is create a compartment. A compartment is a piece of neural tissue that shares a common voltage. A compartment can represent a whole neuron, or a small part of one.

To create a compartment, we use:

x.add('compartment','exampleNeuron','A',.01)

What we're doing here is creating a compartment and adding it to our xolotl object. This neuron is called exampleNeuron, and we are specifying that it has a surface area of 0.1 mm^2.

We get a prompt that looks like this:

xolotl object with
---------------------
+ exampleNeuron
---------------------

This tells us that our xolotl object has one compartment, and its name is exampleNeuron.

To inspect your xolotl object at any time, simply type its name. Here, since we used a variable called x, we type

x

### Compartments

Compartments represent three-dimensional sections of membrane. A neuron can consist of one or more compartments. In multi-compartment neurons, axial synapses with very fast kinetics connect compartments. Compartments in different neurons can be connected with chemical or electrical synapses.

You can create a compartment (independent of a xolotl object) using cpplab.

% create a compartment with a specified volume
AB = cpplab('compartment', 'vol', 0.01)

AB is a free-floating object. You can inspect it like you would any other MATLAB object.

>>  AB

AB =

compartment object with:

hash : 44c3772
Cm : 10
A : 0.01
vol : NaN
Ca_average : NaN
shell_thickness : NaN
tree_idx : NaN
V : -60
neuron_idx : NaN
Ca_target : NaN
Ca : NaN
Ca_out : 3000
len : NaN

You can add it to your xolotl object.

% add compartment AB to the xolotl object tree

A handy shortcut for this is

% add a compartment named AB with a specified volume

We will use this shortcut extensively in the documentation, but remember that you can always do things the "long" way.

There are many useful properties of each compartment object: The hash is an alphanumeric MD5 hash unique to the structure of this compartment. The specific membrane capacitance is Cm in $\mathrm{nF/mm^2}$. * The membrane potential is V in $\mathrm{mV}$.

#### Size and shape of compartments

Compartments are assumed to be specified by their size or shape. In the case of size, compartments have a defined surface area A ($\mathrm{mm^2}$). If shape is instead defined, the compartment is assumed to be cylindrical with a radius and len (length). The surface area is then computed to be $2 \pi (r ^2 + rh)$ in single-compartment cases (and potentially lacking the cylindrical surface areas in the case of multi-compartment models). If the radius and length are defined (which they must be in multi-compartment cases), then the A property is ignored. Similarly, the compartment volume is contained within the vol property. In the case of a cylindrical compartment with defined radius and length, the volume is defined to be $\pi r^2 h$.

#### Calcium properties

• Ca contains the intracellular calcium concentration in $\mu$M.
• Ca_out contains the extracellular calcium concentration in $\mu$M.
• Calcium is buffered very rapidly upon passing through the cell membrane. Many models compute intracellular calcium concentration with respect to the volume of an interior "shell." This value is stored in shell_thickness in mm.
• In homeostatic tuning models, it is sometimes important to keep track of an average intracellular calcium concentration, Ca_average in $\mu$M.
• In homeostatic tuning models, it is sometimes important to keep track of a target intracellular calcium concentration, Ca_target in $\mu$M.

### Conductances

A conductance object can be created using cpplab.

% instantiate the fast sodium conductance from Prinz et al. 2003
>> NaV = cpplab('prinz/NaV', 'gbar', 1000, 'E', 50)
NaV =

NaV object with:

hash : a85ae87
gbar : 1000
E : 50
m : NaN
h : NaN

There are a few useful properties in each conductance object: The MD5 hash of this object. gbar contains the specific maximal conductance in $\mathrm{\mu S / mm^2}$. E contains the reversal potential in $\mathrm{mV}$. m contains the activation gating variable (unitless). * h contains the (de)inactivation gating variable (unitless).

#### What conductances are available?

All C++ header files which define the conductances used in xolotl are contained in the c++/conductances folder in the xolotl directory. If you are unsure where this is, type this into your MATLAB prompt:

fileparts(fileparts(which('xolotl')))

You can also list all conductances with

cpplab.search('conductances')

### Synapses

Synapses connect compartments together. Synapses are stored in a vector of cpplab objects. Synapse objects contain the following properties:

• The MD5 hash of this object.
• gbar contains the maximal conductance in $\mathrm{\mu S}$.
• s contains the synaptic gating variable (unitless).

Synapses are created between two compartments using the connect function:

% connect compartments AB and PD with an electrical synapse
x.connect('AB', 'PD')
% connect two compartments with an electrical synapse
% and specify properties
x.connect('AB', 'PD', 'gbar', 100)
% connect two compartments with a glutamatergic synapse
% kinetics from Prinz et al. 2004
x.connect('AB', 'LP', 'prinz/Glut')
% connect two compartments with a glutamatergic synapse
% and specify properties
x.connect('AB', 'LP', 'prinz/Glut', 'gbar', 100)

#### What synapses are available?

All C++ header files which define the synapses used in xolotl are contained in the c++/synapses folder in the xolotl directory. If you are unsure where this is, type this into your MATLAB prompt:

fileparts(fileparts(which('xolotl')))

You can also list all synapses with

cpplab.search('synapses')

## The add function and the object tree

The general-purpose add function adds cpplab objects to the xolotl tree. In brief, a cpplab object is a special type of MATLAB data structure that secretly binds MATLAB code to C++ code. The advantage of this is that the user gets to work entirely in MATLAB but simulations run with the full power and speed of C++.

xolotl itself is a framework for creating and integrating neuronal and network models using cpplab.

### What can be added to what?

compartments are added directly to the xolotl object. conductances are added to compartments. synapses connect two compartments together but themselves are properties of the xolotl object. mechanisms are special types of cpplab objects that affect how xolotl performs computations. They include stochastic noise, calcium integration, homeostatic tuning, and so on. As such, they can be added to compartments or conductances.

### Exploring constructed models in the command line

xolotl objects are bona fide MATLAB objects and can be readily manipulated in the command line. Here is an example of a xolotl object, representing the structure of a stomatogastric ganglion model from crustacea published in Prinz et al. 2004. The code to produce this model can be found in examples/demo_stg.m.

>> x

xolotl object with
---------------------
+ AB
> ACurrent (g=500, E=-80)
> CaS (g=60, E=26.173778091544)
> CaT (g=25, E=26.173778091544)
> HCurrent (g=0.1, E=-20)
> KCa (g=50, E=-80)
> Kd (g=1000, E=-80)
> NaV (g=1000, E=50)
---------------------
+ LP
> ACurrent (g=200, E=-80)
> CaS (g=40, E=76.6764125879106)
> CaT (g=0, E=76.6764125879106)
> HCurrent (g=0.5, E=-20)
> KCa (g=0, E=-80)
> Kd (g=250, E=-80)
> Leak (g=0.3, E=-50)
> NaV (g=1000, E=50)
---------------------
+ PY
> ACurrent (g=500, E=-80)
> CaS (g=20, E=62.3932795257928)
> CaT (g=24, E=62.3932795257928)
> HCurrent (g=0.5, E=-20)
> KCa (g=0, E=-80)
> Kd (g=1250, E=-80)
> Leak (g=0.1, E=-50)
> NaV (g=1000, E=50)
---------------------

Displaying the xolotl object shows select properties of each conductance within each compartment. We can see that there are three compartments each with 7-8 conductances with varied maximal conductances. In addition, we can infer that the sodium channels have reversal potentials of $50~\mathrm{mV}$ and the potassium channels of $-80~\mathrm{mV}$.

In MATLAB, all compartments and conductances in this view are hyperlinked and can be clicked on to view that particular object. We can also access this view through the command line. Let's look at the first compartment.

>> x.AB

ans =

compartment object with:

hash : bba3847
Cm : 10
A : 0.0628
shell_thickness : NaN
tree_idx : NaN
vol : NaN
V : -48.7425773412141
Ca_target : NaN
Ca_average : 97.5752632857105
neuron_idx : NaN
len : NaN
Ca : 354.000031181001
Ca_out : 3000
NaV : NaV object
HCurrent : HCurrent object
CalciumMech1 : CalciumMech1 object
CaS : CaS object
KCa : KCa object
ACurrent : ACurrent object
Kd : Kd object
CaT : CaT object

We see all the properties of a standard compartment object plus each of the conductances added to the xolotl tree (using the add function). We can look closer at a conductance.

>> x.AB.NaV

ans =

NaV object with:

hash : a85ae87
gbar : 1000
m : 0.0107532302761698
h : 0.64304369213413
E : 50

Since these are MATLAB objects, we can edit the properties in-situ.

% set AB's NaV maximal conductance to zero
>> x.AB.NaV.gbar = 0

xolotl object with
---------------------
+ AB
> ACurrent (g=500, E=-80)
> CaS (g=60, E=26.173778091544)
> CaT (g=25, E=26.173778091544)
> HCurrent (g=0.1, E=-20)
> KCa (g=50, E=-80)
> Kd (g=1000, E=-80)
> NaV (g=0, E=50)
---------------------
+ LP
> ACurrent (g=200, E=-80)
> CaS (g=40, E=76.6764125879106)
> CaT (g=0, E=76.6764125879106)
> HCurrent (g=0.5, E=-20)
> KCa (g=0, E=-80)
> Kd (g=250, E=-80)
> Leak (g=0.3, E=-50)
> NaV (g=1000, E=50)
---------------------
+ PY
> ACurrent (g=500, E=-80)
> CaS (g=20, E=62.3932795257928)
> CaT (g=24, E=62.3932795257928)
> HCurrent (g=0.5, E=-20)
> KCa (g=0, E=-80)
> Kd (g=1250, E=-80)
> Leak (g=0.1, E=-50)
> NaV (g=1000, E=50)
---------------------

## Hashing a model

Each xolotl object is hashed by the MD5 algorithm to determine a unit alphanumeric identifier. Two xolotl objects are different only if their underlying structure (compartments, types of conductances, synapses) are different -- not if parameters are different.

% hash a xolotl object
>> x

xolotl object with
---------------------
+ AB
> ACurrent (g=5, E=-80)
> CaS (g=0.113, E=30)
> CaT (g=0.191, E=30)
> HCurrent (g=0.128, E=-20)
> KCa (g=0.163, E=-80)
> Kd (g=0.11, E=-80)
> Leak (g=0.099, E=-50)
> NaV (g=0.181, E=30)
---------------------
>> x.hash

ans =

'6b3a55344dbd63074cfd703061f9ae4d'
>> % the hash doesn't change when you change the parameters

>> x.AB.ACurrent.gbar = 0;

>> x.hash

ans =
'6b3a55344dbd63074cfd703061f9ae4d'

# Creating new conductances

## Where should I put them?

All conductances (and any other network component) are defined by an .hpp header file and live in the xolotl directory under xolotl/c++/conductances/. Within that directory, conductances are grouped by the surname of the first author on the paper from where they were sourced. For example, conductances from Liu et al. 1998 can be found in xolotl/c++/conductances/liu/.

If an author, such as Farzan Nadim or Cristina Soto-Trevino happens to have papers over multiple years, the last two digits of the paper publishing year are appended to the author name (e.g. ../nadim98). If there are multiple papers in a single year, lowercase alphabetical indices are used (e.g. ../golowasch01a).

If a paper, such as Soplata et al. 2017 describes multiple channels of a single type in different cell types (e.g. thalamocortical relay and thalamic reticular cells), then full-word descriptions can be used, such as (../soplata/thalamocortical).

# Troubleshooting

## Controlling Verbosity

x.verbosity = 99;

Need a table to tell the user what each value of verbosity does.

## Resetting the cpplab path cache

You can rebuild the cache with:

cpplab.rebuildCache()

If that doesn't work, you can forcibly delete the cache with:

delete(which('paths.cpplab'))


text:
# Customize the primary sidebar#

The primary sidebar generally contains the site navigation and logo. By default it is on the left side of the site. This page describes ways that you can control and customize the primary sidebar.

## Control the left sidebar items#

You can control what kind of content goes underneath the logo and name of your website in the top left.

To do so, use the html_sidebars variable in your conf.py file. This takes a dictionary of filename patterns as keys, and a list of sidebar elements as values. Any files that match a key will have the corresponding sidebar elements placed in that page’s sidebar.

For example, the following configuration would include only the footer on pages under the posts/ folder:

html_sidebars = {
"posts/*": ["sbt-sidebar-nav.html"]
}

You can also use ** to apply a set of sidebars to all pages of your book. For example:

html_sidebars = {
"**": ["sbt-sidebar-nav.html"]
}

### Default sidebar elements#

By default, this theme comes with these three theme-specific sidebar elements enabled on all pages:

• sidebar-logo.html: Displays the logo and site title.

• search-field.html: A bootstrap-based search bar (from the PyData Sphinx Theme)

• sbt-sidebar-nav.html: A bootstrap-based navigation menu for your book.

• sbt-sidebar-footer: A configurable snippet of HTML to add to the sidebar (by default it is placed at the bottom).

If you’d like to add a header above a section of TOC links, use :caption: My header text in your toctree directive for that section.

## Customize the logo, title, and favicon#

You can customize the logo, title, and favicon of your site with the following Sphinx configuration in conf.py:

html_title = "Your title"
html_logo = "path/to/logo.png"
html_favicon = "path/to/favicon.ico"

These will be placed in the top-left of your page.

To remove the site title below the logo, add this line in conf.py:

html_theme_options = {
...
"logo_only": True,
...
}

By default, your table of contents will begin with the first file that you add to a toctree. You can also configure the theme to show the landing page of the theme in your navigation bar as well.

html_theme_options = {
...
"home_page_in_toc": True
...
}

## Control the depth of the left sidebar lists to expand#

You can control the level of toc items in the left sidebar to remain expanded, using the following configuration in conf.py:

html_theme_options = {
...
"show_navbar_depth": <level>,
...
}

The default value is 1, which shows only top-level sections of the documentation (and is used in this documentation).

format: plain


text:
# Temperature rise and fall

On Friday, the temperature was 82°F. The temperature changed by –2°F on Saturday, and then it changed by 5°F on Sunday. What was the temperature on Sunday? How did the temperature change?

Note we consider the mathematical problem formulated in this way to be inaccurate. The change in temperature does not yet say how direction it occurred, whether it rose or fell. The weather can both drop -2 degrees and rise +2 degrees. In this case, a change means a temperature rise.

t =  85 °F

### Step-by-step explanation:

$t=82-2+5=85\text{°F}$

Did you find an error or inaccuracy? Feel free to write us. Thank you!

## Related math problems and questions:

• Temperature 2
Sunday's high temperature was 3 degrees higher than Saturday's. On Monday, the temperature fell 5 degrees, then rose 7 degrees on Tuesday and 4 more on Wednesday. Then it fell 17 degrees to a record low of 31 on Thursday. What was the temperature on Satur
• Weather
Weather. At 5:00 am, the temperature was 28°C, and at noontime, it rose by 9°C. By 4:00 pm, it dropped 3°C, and by nighttime, it was 4°C less. What is the room temperature this time?
• Temperature change
The mean temperature change is -3.2°F per day for five days. What is the total change over the five day period?
• The temperature 6
The temperature was 47°F on Thursday and 60°F on Friday. How much did the temperature rise?
• The temperature 3
The temperature is -12 degrees Fahrenheit. During the following 5 hours, the temperature decrease by 23 degrees Fahrenheit. What is the weather at 11 pm?
• Change in temperature
Starting temperature is 21°C, the highest temperature is 32°C. What is the change in temperature?
• The temperature
The temperature is 0 degrees. It drops 5 degrees after 1 hour and then drops 3 degrees more the next hour. What is the temperature after 6 hours?
• Temperature change 3
At 2 PM, The temperature was 76 degrees Fahrenheit. At 8 PM, the temperature was 58 degrees Fahrenheit. What was the change in temperature?
• Noontime
In the morning temperature was 110°F. By noontime, it has gone up by 15°F. What was the noon temperature? (Give your answer in °F)
In about 12 hours in North Dakota the temperature rose from -33 degrees farenheit to 50 degrees farenheit. By how much did the temperature change?
• Temperature change 2
The outside temperature changed -14F over 4 hours. If the temperature changed the same amount each hour, what was the change in temperature each hour?
• Average temperature
The average temperature from Monday to Sunday was 40.5°F and the average temperature from Monday to Saturday was 42.8°F. What was the temperature on Sunday?
• Laboratory
Mang Elio went to his laboratory at 7:00am And recorded that the temperature was 11.07°C. At lunchtime, the temperature rose by 27.9°C but dropped by 8.05°C at 5:00 PM. What was the temperature at 5:00 PM?
• Temperature variations
Today's temperature was 80 degrees, and then the temperature dropped 10 degrees. Then it dropped 15 degrees again, then the next day, the temperature went up 2 degrees. What would the temperature be?
• Change per hour
On Sunday, the temperature was 63 degrees at 2 pm. The temperature was then 72 degrees at 5 pm. What is the rate of change per hour?
• Degrees 2
The temperature was 3°F and fell four degrees Fahrenheit. What is actually temperature?
• The temperature 11
The temperature on Sunday was 4°C. The temperature dropped 8°C on Monday and twice as much on Tuesday. What is the temperature on Tuesday?


text:
Chute Release close call - airholes?

Help Support The Rocketry Forum:

billdz

Got my new Chute Release yesterday, it's available for $130 with free shipping on Amazon. Tried it at today's launch on my Estes Vagabond. Set it to deploy at 300'. Did not deploy at 300' and it looked like a crash landing was imminent. However, the chute deployed at the last possible moment, with the rocket only about 60' off the ground, and all was well, a perfect landing. We were trying to figure out why it deployed so late. One guy said it was because we were on a small hill and the device was fooled about the distance. Another said it was because I did not punch an airhole into the rocket. I recall reading that altimeters require airholes, but there's nothing in the Chute Release instructions about a need for airholes. Any thoughts on what might have happened? Nytrunner Pop lugs, not drugs TRF Supporter Chute release shouldn't need a vent hole. The "landed on a hill" theory may have some merit. The chute release will base it's Ground Level datum on where you launch from. May have something to do with how/where it was tethered or how the chute was packed. Where did you get her the CAR? ksaves2 Lifetime Supporter TRF Lifetime Supporter Got my new Chute Release yesterday, it's available for$130 with free shipping on Amazon.

Tried it at today's launch on my Estes Vagabond. Set it to deploy at 300'. Did not deploy at 300' and it looked like a crash landing was imminent. However, the chute deployed at the last possible moment, with the rocket only about 60' off the ground, and all was well, a perfect landing.

We were trying to figure out why it deployed so late. One guy said it was because we were on a small hill and the device was fooled about the distance. Another said it was because I did not punch an airhole into the rocket. I recall reading that altimeters require airholes, but there's nothing in the Chute Release instructions about a need for airholes.

Any thoughts on what might have happened?
Unless you could see the descending rocket closely enough the behavior of the parachute in the slipstream can vary. If the chute has been packed tightly, it can develop a lot of creases and quite frankly that sometimes delays the filling. The harness can tangle and foul the chute release. Always put the chute release on the parachute and follow Mr. Beans technique for packing on his website. Do not put the chute release around the chute protector. Attach the chute protector securely to the harness so the chute pack and JLCR are pulled free right when they are blown out at apogee. Have the chute protector far enough away from the chute pack so it can't foul the chute opening once the CR releases it. One doesn't need the chute protector anymore after it has been blown out of the rocket. Get it out of the way. Set the chute release to deploy at a higher altitude. If you are at a large enough venue to allow this, do it. It gives more time for the vagaries of canopy filling to work themselves out and allow the chute to fill. If you're stuck doing a very low deployment, try to do it with fiberglass rockets that can better handle tumble recovery otherwise there is increased risk of failure.

I had a plastic chute display a "pulled taut" configuration in a MPR flight. It was shirtsleeve weather and rocket was not quite out of sight. Chute came out at apogee and the rocket was coming down fast enough for those to ask, "Is it dual deploy?" It wasn't, but as it got lower in a worrisome fashion, it was seen the chute was out, is wasn't broken or streamering
and it was above the rocket with the rocket dangling below in a good position. It appeared the chute was being "held" in a "pulled tight" condition! As it got lower, the canopy shook from side to side and then slowly filled successfully. I couldn't explain it as the temp was warm and I never saw this behavior with this rocket again. It opened at an estimated 500 feet which was fine but not knowing it was going to open in time was scary. Kurt

rstaff3

Oddroc-eteer
I have never flown mine with vent holes. On dozens of flights, I had one that was way late/JIT. The field was totally flat. I blamed it on some sort of snag that rectified itself. I have had more than one rocket land with the chute still folded only to find no obvious tangle/snag when the rocket was recovered.

MALBAR 70

More Rockets Than Room
TRF Supporter
I too had a late opening with my JLCR. The hilly area where we launch may have been the culprit, but I'm not 100% sure. It only happened the one time.

Handeman

Well-Known Member
TRF Supporter
I don't have many flights with my JLCR, but my chutes seem to pop open as soon as the release lets go. I moved the release point down to 30m/100ft. On a "relatively" calm day or one where I don't mind taking a walk, I'll set it to 200 or 300 but only because I don't mind it opening high and having a little longer walk.

Am I doing something that avoids the late opening, or have I just been getting lucky?

billdz

Well-Known Member
Thanks for the replies. Still unclear to me what caused the late deployment. It did not appear that anything was tangled.
@nytrunner: "Where did you get her the CAR?" What's a CAR?

Why does the JLCR only work with motor ejection?

timbucktoo

Well-Known Member
Staff member
TRF Supporter
Global Mod
Why does the JLCR only work with motor ejection?
Who says that? I know lots of people who use it with dual deploy & 2 staging.

billdz

Well-Known Member
"[FONT=&quot]Requires the use of motor ejection"
[/FONT]
https://www.jollylogic.com/products/chuterelease/

noffie79

Well-Known Member
"[FONT=&quot]Requires the use of motor ejection"
[/FONT]
https://www.jollylogic.com/products/chuterelease/
That means that the Chute Release doesn't control any ejection events of the recovery system from the rocket. You still need either the motor ejection or if using it in a dual deploy setup, the ejection that is altimeter based.

markkoelsch

Well-Known Member
I personally have seen more failures of the device than success. Saw four flights today using them, and 1 appeared to have worked correctly. Seems to be a touchy device to get correct.

dhkaiser

Well-Known Member
I personally have seen more failures of the device than success. Saw four flights today using them, and 1 appeared to have worked correctly. Seems to be a touchy device to get correct.
Please explain the failures. Were they the same person? Personally I have seen many deployments and no failures.

rstaff3

Oddroc-eteer
I have flown mine a lot and seen a lot and I have only had one complete failure. That was on a rocket with a heavy cone that fell cone first. The CR was right at the cone and the body flew into the opening chute. Next time I put the CR on it's own leader so it would not be under the falling body.

noffie79

Well-Known Member
I've had many more successes than failures. And I can say that 100% of my failures were from user error. If you follow John's videos on his website, it'll work. No need to reinvent the wheel so to speak.

ksaves2

I've seen and had tangled harnesses that fouled the deployment and sometimes I can't tell because I walk up to the rocket and the chute is lying packed on the ground with the open CR
beside it. Technique of course is not the devices fault. I deploy the chute release up high too so I can get a fix on the trackers. In that case, I like some hang time and am not doing low level deployments like I've seen too many folks do. If there is room to be had at the launch site, no reason to do low level deployments. I've seen many rockets hit the ground with the
JLCR because the fliers set them for 200 - 300 feet.

Another thing is not to pre-prep the chute and have it sitting in the rocket for long periods of time in a tightly packed state. I'm convinced the creases in the canopy can "set"
and delay the opening of it. Even if just sitting overnight. I have been guilty of this in the past and am going to pack a thoroughly talcum powdered chute from here on out
just before launching onsite.

Do not put a "leader line" on a chute protector. That is a piece of kevlar thread with a loop to hold the chute protector and a loop to slide on the harness on the other end. More often than not the kevlar line wraps around the harness and anything else that gets in the way. Thread the harness through the chute protector hole or secure it in one place with a loop in the harness itself (or duct tape). Make sure the chute pack with the JLCR gets clear of the chute protector. Once the charge has blown, no need for the protector to be anywhere near the JLCR chute pack
to interfere with the canopy filling once the CR opens the pack.

All this improves the chances of success. If one has flown a lot of rockets I bet they'll have one that "twists around" the harness on descent. Swivels can help but I've seen some mighty
twisted up harnesses even with swivels inline. I've seen descent videos of some of my rockets that are nauseating. Once the main is out and deployed, then the harness (without swivels) wants to "untwist" in the opposite direction. Kurt

Last edited:

jd2cylman

Still not Carl... ;-)
TRF Supporter
The one failure I had was user error. I didn't use the shorter rubber band and the shroud lines pulled out of the canopy (still held by the CR) and essentially reefed the chute. As it fell, the shroud lines twisted until the CR let go. By then the lines were twisted enough, the canopy couldn't open.

crossfire

I put in a post in another section but will post it here to. Anyone else having problems with the bands breaking? A friend has had 2 flight with his JLCR and both times band has broke. Today on my flight I had the band break. mine was the 1st flight on the band. Temps were about 30 and my chute and JLCR were protected by nomex chute protector.

rstaff3

Oddroc-eteer
I have had no such issue, although I have only flown it above 50 degrees.

EXPjawa

Well-Known Member
I've had the bands on mine deteriorate after around a half-dozen uses. They developed little cuts and nicks on the edges and eventually failed. At this point, I've used up all of the small bands that were included with the CR and have to get replacements before flying season starts here.

crossfire

Like I said I have had very good luck with JLCR and really like it. For the flight today I installed device last night so all I had to do was turn it on. Maybe being stretched for to all of a time caused the failure. I will try it again in 2 weeks.

John Beans

Founder, Jolly Logic
TRF Supporter
You do NOT need vents.

Chute Release very reliably releases at the set altitude (relative to the ground level where you turned it on, so keep that in mind for hills and valleys).

Of course, if you walk up to it and it's NOT released, and you're SURE you turned it on, then something is up, and send it to me to be checked in our vacuum chamber. But we don't see this problem ever for a unit that's not crashed and broken.

There are a number of reasons your chute may not pop open the instant that Chute Release triggers:

1. Your chute bundle might be a little puffy rather than firm and smooth (the bands get caught in them instead of springing free)
2. Your shroud lines are wrapped around your parachute (put them inside)
3. You blanket stays wrapped around the bundle on the way down

Hope that helps?

HHaase

Siegecraft Electronics
+1 on not prepping the chute TOO far ahead. I've had a few that just seem to stick to themselves if I don't fluff them out if they've been packed for too long. Particularly Estes plastic chutes but seen it a few times with ripstop and other types of nylon. I'm considering maybe starting to give them a light dusting of talc or chalk to keep from sticking.

-Hans

Nathan

☢
TRF Supporter
My JLCR experience :
- Bought one. Didn't work. John Beans sent me a replacement for free.
- Lost it along with the rocket when it came down in a big pond.
- Bought another one.
- Lost it when I forgot to attach the tether.
- Bought another one.
- This one is still working fine. But now I have rockets that I only fly with JLCR, so just to be safe I . . .
- Bought another one.

Nathan,


text:
Gitolite and Gitweb

This article is for self, so that I don’t again forget the specifics. The last time I did the same setup, it wasn’t very important in terms of security. gitolite(3) + gitweb can give an impressive git tool with very simple user acls. After you setup gitolite, ensure that the umask value in gitolite is approriate, i.e. the gitolite group has r-x privilege. This is needed for the web view. Add your apache user to the gitolite group. With the umask changes, and the group association, apache’s user will now be able to read gitolite repos.

Now, imagine a repo setting like the following:

repo virtualbox
rrs@chutzpah:~$sudo ls -l /var/lib/gitolite3/repositories/ [sudo] password for rrs: total 20 drwxr-x--- 7 gitolite3 gitolite3 4096 May 12 17:13 foo.git drwx------ 8 gitolite3 gitolite3 4096 May 13 12:06 gitolite-admin.git drwxr-x--- 7 gitolite3 gitolite3 4096 May 13 12:06 linux.git drwx------ 7 gitolite3 gitolite3 4096 May 12 16:38 testing.git drwxr-x--- 7 gitolite3 gitolite3 4096 May 12 17:20 virtualbox.git 13:10 ♒♒♒ ☺ But just www-data. No other users. Because for ‘O’, there is no ‘rwx’. And below shows gitolite’s ACL in picture… test@chutzpah:~$ git clone gitolite3@chutzpah:virtualbox


text:
You are currently browsing the category archive for the ‘Various research material’ category.

In this post, I review the book Partial Differential Equations in General Relativity, recently published by A.D. Rendall, in: Graduate Texts in Mathematics, vol. 16, Oxford University Press, 2008. I recommend it as an excellent source of inspiration for problems arising in general relativity. The text below has appeared in the “Gazette des Mathématiciens” of the SMF (Sociéte Française de Mathématiques) and is, therefore,… in French.

Ce livre est consacré aux aspects mathématiques de la relativité générale et en présente les développements les plus récents de manière concise. Il porte une attention particulière à la formulation des équations d’Einstein en un système hyperbolique symétrique avec contraintes couplé avec les équations d’évolution de la matière. Il est destiné aux étudiants de Mastère, tant mathématiciens que physiciens, mais sera aussi apprécié des spécialistes de la relativité générale.

Rappelons que l’inconnue principale de la théorie est une variété lorentzienne de dimension quatre, ${(M,g)}$, satisfaisant aux équations

$\displaystyle G_{\alpha \beta} + \Lambda \, g_{\alpha \beta} = 8 \pi \, T_{\alpha\beta},$

reliant le tenseur de courbure d’Einstein ${G_{\alpha \beta}}$ au tenseur de moment-énergie de la matière ${T_{\alpha\beta}}$. Le scalaire ${\Lambda}$ représente la constante cosmologique de l’espace-temps, et les indices ${\alpha, \beta}$ varient de ${0}$ à ${3}$. (Par exemple, dans le vide le tenseur de courbure de Ricci d’une telle variété est identiquement nul.) Pour formuler le problème, on se donne une variété riemannienne de dimension trois ${(N,h)}$ munie d’un champ de ${2}$-tenseurs symétriques ${K}$. On cherche alors une variété lorentzienne (un développement maximal) satisfaisant aux équations d’Einstein avec la contrainte que ${(N,h)}$ est isométriquement plongée dans ${(M,g)}$ et admet ${K}$ comme deuxième forme fondamentale.

Les deux premiers chapitres présentent les bases incontournables de la relativité générale d’un point de vue à la fois physique et mathématique: notions de géométrie lorentzienne, théorèmes d’incomplétude de Penrose et de Hawking, feuilletages ${3+1}$, et décompositions des équations d’Einstein.

L’auteur entre dans le vif de son sujet en mettant en parallèle différents modèles de matière: équations d’ondes pour les champs scalaires (à valeurs réelles ou à valeurs dans une variété), équations de Maxwell de l’électro\-magné\-tisme, équations de Yang-Mills, équations d’Euler des fluides compressibles et équation de Vlasov de la théorie cinétique des fluides raréfiés. Pour chacun de ces modèles, un Lagrangien détermine l’expression du tenseur de moment-énergie ${T_{\alpha \beta}}$ en fonction de la métrique lorentzienne et des variables physiques décrivant l’état de la matière.

Peu de résultats sont disponibles dans la littérature à ce niveau de généralité, et, le plus souvent, des hypothèses sur les symétries de l’espace-temps sont nécessaires. L’auteur introduit ici les espaces-temps admettant un ou plusieurs champs de Killing: statiques, stationnaires, spatialement homogènes, etc.

Il consacre ensuite un chapitre à l’étude des espaces spatialement homogènes pour lesquels les équations d’Einstein se réduisent à des équations différentielles non-linéaires. En dépit de leur simplicité apparente, ces modèles sont intéressants pour l’interprétation physique de la théorie. Par ailleurs, leur étude mathé\-matique est très délicate et fait appel à toutes les facettes de la théorie des équations différentielles: variété centrale, systèmes dynamiques, théorie des bifurcations, etc.

La deuxième moitié de l’ouvrage traite directement la résolution du problème de Cauchy pour les équations d’Einstein. L’auteur présente d’abord les résultats principaux d’existence sans hypothèse de symétrie; ceux-ci sont centrés sur le théorème de Christodoulou et de Klainerman (stabilité de l’espace-temps de Minkowski). Il explique aussi les techniques d’analyse (harmonique) intervenant dans les démonstrations. Les derniers chapitres concernent les modèles possédant deux champs de Killing et l’auteur étudie en détail l’existence globale des solutions des équations d’Einstein et la nature géométrique de leurs singularités, ce qui lui permet de déterminer le comportement asymptotique des espace-temps construits.

En conclusion, il s’agit d’un ouvrage particulièrement bien organisé et documenté, dont la lecture est vivement recommandéee et permet d’accéder à l’état de l’art sur le sujet.

Philippe G. LeFloch (Paris).

In this post, I want to review the book The formation of shocks in 3-dimensional ßuids” by D. Christodoulou, EMS Monographs in Mathematics, 2007.

The author studies here the maximally defined, smooth solutions to the relativistic Euler equations of motion for a perfect fluid in Minkowsky spacetime ${M^{3+1}}$. The discussion begins with a review of earlier works, including pioneering work on shock formation by Riemann on isentropic fluid flows with plane symmetry and, more generally, on nonlinear hyperbolic systems of two conservation laws in one space variable: smooth solutions develop singularities in finite time. The formulation of the physically correct jump relations was later found by Rankine and Hugoniot. Further fundamental work was done by Friedrichs and Lax, and the general problem of shock formation for hyperbolic systems of conservation laws in one space dimension was solved by Lax in 1964 (genuinely nonlinear systems) and John in 1974 (general systems). The strategy in the above works was to deduce an ordinary differential inequality for a quantity constructed from the first-order derivatives of the solution, and to show that this quantity must blow-up in finite time, at least under certain assumptions on the structure of the hyperbolic system.

More recently, for the Euler equations of perfect compressible fluids, an entirely different approach was introduced by Sideris in 1985 which, instead, used integral quantities associated with the solution. The main drawback of this method is that it tells us nothing about the nature of the breakdown. Moreover, it requires the pressure of the fluid to be strictly convex in terms of the density. In another direction, in 1983, Majda began an ambitious program on the stability of shock fronts for nonlinear hyperbolic systems in several space dimensions; this was continued and expanded by Gues, Metivier, and followers.

In the present work, the author considers the relativistic Euler equations for a perfect fluid with an arbitrary equation of state. Initial data are imposed on a given spacelike hyperplane and are constant outside a compact set. Attention is restricted to the evolution of the solution within a region limited by two concentric spheres. Given a smooth solution to the Euler equations, the main objective of the author is to investigate the geometry of the boundary of its domain of definition, that is, the locus where shock waves may form.

At the end of this book, under certain smallness assumptions on the size of the initial data, a remarkable and complete picture of the formation of shock waves in three dimensions is obtained. In addition, sharp sufficient conditions on the initial data for the formation of shocks in the evolution are established, and sharp lower and upper bounds for the time of existence of a smooth solution are derived.

The main strategy proposed in this book is as follows. Given an arbitrary initial data that is constant outside a sphere and under suitable smallness conditions on this initial data, the author controls first the solution for a time interval of order ${1/\eta}$, where ${\eta}$ is a reference sound speed. He shows that at the end ${T}$ of this time interval the flow is irrotational and isentropic within an annular region limited by two concentric spheres. Then, he proceeds by studying the maximal development of the restriction of the data at the time ${T}$ to the exterior of the inner sphere. Next, he relies on the property that for irrotational and isentropic flows, the exists a function ${\phi}$ which suffices to characterize the fluid and satisfies a wave equation which is the main equation studied here.

This book represents an amazing “tour de force” by the author. The analysis relies heavily on differential geometric concepts and methods; one key unknown of the Euler equations is the one-form velocity field, denoted here by ${\beta}$, suitably multiplied by the relativistic enthalpy of the fluid; in the irrotational case, ${\beta}$ coincides with the exterior differential of the potential ${\phi}$ mentioned earlier. The estimates derived in this work are based on the natural action principle associated with the fluid equations and on the construction of vector fields adapted to the geometry of the solution. High-order energy-type estimates are derived which yield a sharp control of a geometric foliation of the solution.

The book is structured as follows. The first four chapters provide notation and set up the general framework. Chapters 5 to 13 restrict attention to irrotational and isentropic fluids and culminate with the shock formation result in Theorem 13.1. Chapter 5 contains the fundamental energy estimate. Chapter 6 contains a discussion of the properties of several vector fields of interest. Chapter 7 deals with source-terms arising in higher-order estimates and present a recursion formula for these terms. Chapters 8 and 9 contain the crucial technical part of the present work, and establish the higher-order estimates. In particular, in Chapter 9 the evolution of the second fundamental form of the leaves of the foliation is discussed and the key structure of the problem (elliptic equations on two-dimensional submanifolds of the foliation, ordinary differential equations along the generators of the foliation) is uncovered.

Theorem 14.1 provides sharp sufficient conditions on the initial data for shock wave to form during the evolution. The rest of Chapter 14, is devoted to the general problem of shock formation for flow that need be irrotational and isentropic. The connection is made here with Theorem 14.1, since the author finds conditions at the beginning of the time interval of definition of the solution which guarantee that the solution at the end of the time interval will satisfy the assumptions of Theorem 14.1. This analysis leads to the main result stated in Theorem 14.2.

Next, Chapter 15 is devoted to the investigation of the geometry of the boundary of the domain of definition of the solution. Another main result of this book is that the boundary of the domain of definition of a solution consists of a singular part ${S= \partial_- UH \bigcup H}$ and a regular part ${C}$. Here, ${\partial_- H}$ denotes the past boundary of ${H}$. Each component of ${C}$ is an incoming characteristic hypersurface having a singular past boundary, while ${S}$ is the locus where the inverse density vanishes.

In so-called acoustical coordinates (associated with a metric taking into account the acoustic part of the relativistic Euler equations), the solution extends smoothly up to the boundary, but a particular function associated with the solution and denoted by ${\mu}$ vanishes on the singular part ${S}$. On the other hand, the function ${\mu}$ is positive on the regular part of the boundary, and the solution is smooth in this part even in the original coordinates. In addition, the author shows that each connected component of the boundary ${\partial_- H}$ is a smooth two-dimensional embedded submanifold in Minkowsky spacetime hich is spacelike with respect to the acoustical metric. On the other hand, the corresponding component of ${H}$ is a smooth embedded three-dimensional submanifold ruled by invariant curves of vanishing arc length with respect to the acoustical metric, having past end points on the component of ${\partial_- H}$. The corresponding component of ${C}$ is precisely the incoming null hypersurface associated with the component of ${\partial_- H}$. It is ruled by incoming null geodesics of the acoustical metric with past end points on the component of ${\partial_- H}$.

The author also points out that the limit toward the non-relativistic Euler equation does not involve any singular behavior and, therefore, from his results one can deduce similar results about shock formation in non-relativistic fluids.

Finally, the author discusses the physical continuation of the solution. He observes that the standard notion of maximal development is not appropriate up to ${H}$. In order to determine the physically correct hypersurface of discontinuity (denoted by ${K}$ below), the author then defines a shock development problem, as follows,

Given a component ${A}$ of ${\partial_- H}$ and the corresponding components ${C^A}$ and ${H^A}$ of ${C}$ and ${H}$, respectively, the physically relevant problem associated with ${A}$ is as follows: Find a hypersurface ${K \subset M^{3+1}}$ lying in the past of ${H^A}$ and with the same past boundary (namely ${A}$) and the same tangent hyperplane at each point along ${A}$, together with a solution of the Euler equations defined on the domain of ${M^{3+1}}$ bounded in the past by ${C}$ and ${K}$ and such that on the regular part ${C^A}$ the solution coincides with the data induced by the maximal solution; on the other hand, across ${K}$, the solution must suffer a jump with respect to the prescribed data (given the maximal solution).

Of course, the jump relations under consideration are those associated with the integral form of the Euler equations. Moreover, the hypersurface ${K}$ must be spacelike for the acoustical metric induced by the maximal solution (in the past of ${K}$), but timelike with respect to the new solution (in the future of ${K}$). The author then proceeds with a rigorous derivation of the jump conditions and justifies that his construction is consistent with the second law of thermodynamics and provides the physically relevant discontinuous solution.

Following questions raised at a (very interesting) conference I attended at Bilbao in September 2009 on hyperbolic systems with source-terms and non-conservative form, I want to emphasize here a fact of importance in numerical computations for such problems.

Consider the issue of computing shock waves to nonconservative hyperbolic systems, as well as to hyperbolic conservation laws generated by zero diffusive-dispersive limits,  In these two instance, an additional selection criterion beyond an entropy inequality is necessary, that is, a kinetic relation for the latter and a family of paths (or one or several kinetic functions) for the former. The shocks under consideration turn out to strongly depend on small scales that are represented by higher-order terms (viscosity, heat conduction, capillarity, etc) that must be included in an associated augmented model. No universal selection criterion should be sought for, but rather a different theory of shock waves is necessary in each physical context.

The key point to stress is that no finite difference schemes (say expressed as smooth algebraic expressions of the coefficients of the conservative or nonconservative equations) has never been found to converge to correct weak solutions ! This difficulty was observed in Hou and LeFloch in 1993 for nonconservative systems and in Hayes and LeFloch in 1994 for diffusive-dispersive limits.

The point is that in both the continuous model and the discrete scheme, small scale features are critical to the selection of shocks. The balance between diusive and dispersive features determines which shocks are selected. In nonconservative systems, the competition takes place between the (hyperbolic) propagation part and the (viscous) regularization. These small scale features cannot be quite the same at the continuous and at the discrete levels, since a continuous dynamical system of ordinary dierential equations cannot be exactly represented by a discrete dynamical system of ﬁnite dierence equations. Strictly speaking, finite difference schemes do not converge to the correct weak solution when small-scaled are the driving factor for the selection of shock waves.

Still, the good news is that schemes can be developed that approach the exact solutions as much as one requests. The design of suitable schemes is achieved via an analysis of the equivalent equation associated with a scheme by formal Taylor expanding its coefficients. The accuracy of the numerical solution improves as the equivalent equation coincides with the augmented model at a higher and higher order of approximation. For recent developments, we refer the interested reader to the following two papers.

P.G. LeFloch and M. Mohamadian, Why many shock wave theories are necessary. Fourth-order models, kinetic functions, and equivalent equations, J. Comput. Phys. 227 (2008), 4162–4189.

Abstract. We consider several systems of nonlinear hyperbolic conservation laws describing the dynamics of nonlinear waves in presence of phase transition phenomena. These models admit under-compressive shock waves which are not uniquely determined by a standard entropy criterion but must be characterized by a kinetic relation. Building on earlier work by LeFloch and collaborators, we investigate the numerical approximation of these models by high-order ﬁnite diﬀerence schemes, and uncover several new features of the kinetic function associated with physically motivated second and third-order regularization terms, especially viscosity and capillarity terms. On one hand, the role of the equivalent equation associated with a ﬁnite diﬀerence scheme is discussed. We conjecture here and demonstrate numerically that the (numerical) kinetic function associated with a scheme approaches the (analytic) kinetic function associated with the given model – especially since its equivalent equation approaches the regularized model at a higher order. On the other hand, we demonstrate numerically that a kinetic function can be associated with the thin liquid ﬁlm model and the generalized Camassa–Holm model. Finally, we investigate to what extent a kinetic function can be associated with the equations of van der Waals ﬂuids, whose ﬂux-function admits two inﬂection points.

M.J. Castro, P.G. LeFloch, M.L. Munoz-Ruiz, and C. Pares, Why many theories of shock waves are necessary. Convergence error in formally path-consistent schemes, J. Comput. Phys. 227 (2008), 8107–8129.

Abstract. We are interested in nonlinear hyperbolic systems in nonconservative form arising in fluid dynamics,and, for solutions containing shock waves, we investigate the convergence of finite difference schemes applied to such systems. According to Dal Maso, LeFloch, and Murat’s theory, a shock wave theory for a given nonconservative system requires prescribing a~priori a family of paths in the phase space. In the present paper, we consider schemes that are formally consistent with a given family of paths, and we investigate their limiting behavior as the mesh is refined. We first generalize to systems a property established earlier by Hou and LeFloch for scalar conservation laws, and we prove that nonconservative schemes generate, at the level of the limiting hyperbolic system, an {\sl convergence error source-term} which, provided the total variation of the approximations remains uniformly bounded, is a locally bounded measure. This convergence error measure is supported on the shock trajectories and, as we demonstrate here, is usually “small”. In the special case that the scheme converges in the sense of graphs —a rather strong convergence property often violated in practice— then this measure source-term vanishes. We also discuss the role of the equivalent equation associated with a difference scheme; here, the distinction between scalar equations and systems appears most clearly since, for systems, the equivalent equation of a scheme that is formally path-consistent depends upon the prescribed family of paths. The core of this paper is devoted to investigate numerically the approximation of several (simplified or full) hyperbolic models arising in fluid dynamics. This leads us to the conclusion that for systems having nonconservative products associated with linearly degenerate characteristic fields, the convergence error vanishes. For more general models, this measure is evaluated very accurately, especially by plotting the shock curves associated with each scheme under consideration; as we demonstrate, plotting the shock curves provide a convenient approach for evaluating the range of validity of a given scheme.


text:
# demonstration

## Learning Python as an R user

Below, I’ve embedded a Python Jupyter Notebook hosted on Kyso, which is a hub where you, “can publish Jupyter notebooks, charts, code, datasets and write articles in our custom markdown editor.” This is a work in progress while I teach myself Python.

## Testing Conditional Indirect Effects/Mediation in R

This post builds on a previous post on Testing Indirect Effects/Mediation in R. What is mediation? There are many ways to define mediation and mediators. Here’s one way: Mediation is the process by which one variable transmits an effect onto another through one or more mediating variables. For example, as room temperature increases, people get thirstier, and then they drink more water. In this case, thirst transmits the effect of room temperature on water drinking.

## Using Principal Components or Common Factor Analysis in Social Psychology

Multidimensional Scaling, the precursor to Principal Components Analysis, Common Factor Analysis, and related techniques Multidimensional scaling is an exploratory technique that uses distances or disimilarities between objects to create a multidimensional representation of those objects in metric space. In other words, multidimensional scaling uses data about the distance (e.g., miles between cities) or disimilarity (e.g., how (dis)similar are apples and tomatoes?) among a set of objects to “search” for some metric space that represents those objects and their relations to each other.

## Learn R for Psychology Research: A Crash Course

Introduction I wrote this for psychologists who want to learn how to use R in their research right now. What does a psychologist need to know to use R to import, wrangle, plot, and model their data today? Here we go. Foundations: People and their resources that inspired me. Dan Robinson [.html] convinced me that beginneRs should learn tidyverse first, not Base R. This tutorial uses tidyverse.

## Plotting Adjusted Associations in R

What is a correlation? A correlation quantifies the linear association between two variables. From one perspective, a correlation has two parts: one part quantifies the association, and the other part sets the scale of that association. The first part—the covariance, also the correlation numerator—equates to a sort of “average sum of squares” of two variables: $$cov_{(X, Y)} = \frac{\sum(X - \bar X)(Y - \bar Y)}{N - 1}$$ It could be easier to interpret the covariance as an “average of the X-Y matches”: Deviations of X scores above the X mean multipled by deviations of Y scores below the Y mean will be negative, and deviations of X scores above the X mean multipled by deviations of Y scores above the Y mean will be positive.

## Testing indirect effects/mediation in R

What is mediation? There are many ways to define mediation and mediators. Here’s one way: Mediation is the process by which one variable transmits an effect onto another through one or more mediating variables. For example, as room temperature increases, people get thirstier, and then they drink more water. In this case, thirst transmits the effect of room temperature on water drinking. What is an indirect effect?

## Testing Within-Subjects Contrasts (Repeated Measures) in R

Within-Subjects Design In a within-subjects design, subjects give responses across multiple conditions or across time. In other words, measures are repeated across levels of some condition or across time points. For example, subjects can report how happy they feel when they see a sequence of positive pictures and another sequence of negative pictures. In this case, we’d observe each subjects’ happiness in both positive and negative conditions. As another example, we could measure subjects’ job satisifcation every month for 3 months.


text:
# Converting LaTeX into Unicode for email

My standard procedure for writing mathematical email has been to use pidgin-LaTeX for some time now, and many of those I communicate with do the same. However, someone I know has recently started a few Unicode symbols for standard operations (arrows, etc) into the mix and this seems to greatly improve the readability.

When I've tried to do this, I spent a lot of time opening webpages looking for appropriate Unicode symbols and copy-pasting them. This roughly doubles my writing time. In an ideal world I could hit some kind of conversion button, or in a less ideal world I could put together a toolbar of commonly-used symbols.

Are there any methods for easily looking up some standard LaTeX symbols as Unicode, and further for doing so in an easily-accessible manner?

-
This is one of the reason why I use the Neo keyboard layout which has Greek letters and all kinds of mathematical symbols on it (e.g. →,∞,⊗,∫,ℝ, etc.). – Caramdir Feb 19 '11 at 22:02
One might perhaps write a short search-replace script for doing so. – ipavlic Feb 19 '11 at 22:04

You may hit M-x describe-input-method RET TeX RET in Emacs. Here is a fragment of what you get:

\"x ẍ    \^h ĥ    \~e  ẽ    \=\AE Ǣ    \euro €    \doteq ≐    \square  □    \spadesuit  ♠    \vartriangleleft     ⊲
\"y ÿ    \^i î    \~i  ĩ    \=\ae ǣ    \e{e} ė    \equiv ≡    \subset  ⊂    \subseteqq  ⊆    \circlearrowright    ↻
\'A Á    \^j ĵ    \~n  ñ    \={A} Ā    \flat ♭    \frac1 ⅟    \succeq  ≽    \subsetneq  ⊊    \downrightharpoon    ⇂
\'C Ć    \^o ô    \~o  õ    \={E} Ē    \flqq «    \frown ⌢    \supset  ⊃    \supseteqq  ⊇    \ntrianglerighteq    ⋭

(By the way, this input method might be a nice way to actually type your emails - you type the TeX way, Emacs converts it to Unicode on the fly. And you don't have to use Emacs as your email client - even though it's a reasonable option - since you may configure it as an external editor in your MUA)

-

Here's another Unicode <-> LaTeX conversion tool

http://www.johndcook.com/unicode_latex.html

Courtesy of John D. Cook

-

A tool for converting LaTeX to Unicode is available at

http://vikhyat.net/stuff/latex_to_unicode/

I’m guessing it’s similar to the script mentioned in Andrew Stacey's answer. However, in case you’re using Chrome, you can also download an extension from said site that lets you convert LaTeX to Unicode using just the context menu.

-

Following on from ipavlic's comment to the main question, here's a script that I threw together for almost exactly this purpose:

http://www.math.ntnu.no/~stacey/code/latexToUTF/utf.php

It was actually for typing unicode into webpage text boxes rather than email. The link there goes to a working implementation (the difference between "submit" and "ajax" is that the ajax method builds up a list of all the ones that you've done, useful if you do the same one over and over again, whereas submit starts afresh each time). If you drop the '/utf.php' from the web address then you're left with the location of a BZR repository for the code so you can get it and mess around with it as you like.

There is allegedly an extension to detexify that will give you the unicode instead of the LaTeX symbol, but I haven't seen a working version of it so can't comment further.

-
 Thanks! One minor thing: I get an XML parse error for certain elements. It looks like the code on line 2248 should maybe end in symbols_one[\$i] rather than symbols_one? – coarsemoduli Feb 20 '11 at 2:23 @coarsemoduli: Absolutely correct - thanks for the bug report. Just shows how often I use that for things like \nabla! (I use it mainly for accented characters) (Fixed now) – Andrew Stacey Feb 20 '11 at 14:39


text:
## Monday, May 4, 2009

### Easy TeX parsing (or: TeXpp and plain.tex)

Some time ago I have blogged about TeXpp. Today it have reached a stage when it loads plain.tex (i.e. the source of the plainTeX format) with only one warning (about unimplemented \input command which is not fatal in this case).

But what do I mean by "loads" ? That is: "parses the file and executes each command in it gathering information about all macro definitions, variable assignments, etc.". With this information TeXpp is able to parse any document typed in plain.tex format (yes, I know, you don't have such documents, neither do I - LaTeX support is coming in a near future).

To check correctness of parsing, I have enabled all possible trance information in TeX, parsed the document using TeXpp and Knuth's TeX and compared the log files. Actually I have 55 unit tests that works exactly the same and proves the TeXpp compatibility with TeX in many corner cases. Another 1437 unit tests are based on real-life documents from arxiv.org (but currently is this case a test scenario is a bit different).

That's all for today. Later I will probably blog about TeXpp abilities and how could it be useful for KDE-related projects.

Anonymous said...

That sounds like a nice library to make a strigi analyzer out of.
Reading author name and document title should be possible with it.

Good idea. I will try to implement it as soon as LaTeX parsing will be usable.

Anonymous said...

Does this mean that it also could be used in the long run as a C++ implementation of TeX?

Currently TeXpp is only a parser and an interpreter of "the TeX language". It does not do any formatting work. In other words, when executing a document with TeXpp you will get everything except a .dvi file.

I have no plans (nor time) to change it myself. Of course if anyone wants to help...

Anonymous said...

What is missing for a complete TeX?

Do you now this texpp:
http://www.aei.mpg.de/~peekas/tex++/

Anonymous said...

Also a nice book about TeX internals:
http://www.eijkhout.net/texbytopic/texbytopic.html

Hm, I have not heard about that TeX++. Otherwise I would have chosen another name for my project :)

Thanks for a link. I will read a about it in detail, probably I will be able to take something useful from it. Right now I can say that TeX++ does not solve my original problem (i.e. to build a document tree without loosing any parts of a document source). And the last version of it is dated 2003-09-14.

Yes, I know about texbytopic. It is better structured then TeXbook and usable to quickly grasp new topics. Or as a reference. On the other hand TeXbook contains a formal description of TeX syntax which is very important in my case. Generally I use both these books equally frequently.

Anonymous said...

What do you think, how long is the way to a C++/Qt based TeX implementation?
I dream of a library for displaying text as svg or pixel based in an application perfectly typeset by TeX/LaTeX.

Anonymous said...

In the summary you write "parsing TeX documents into a document tree", but what does "document tree" mean? XML? A simple example or one or two sentences in your summary will help a lot.

> What do you think, how long is the way
> to a C++/Qt based TeX implementation?
Based on my assumptions, currently TeXpp implements approx. 2/3 of all TeX features. That is, adding typesetting capabilities to TeXpp is quite possible, especially if someone will help.

> I dream of a library for displaying
> text as svg or pixel based in an
> application perfectly typeset by
> TeX/LaTeX.
Yes, such a library is a good idea. I would use it in Step instead of current out-of-process LaTeX formula processing, and I know many other places where it could help as well.

> In the summary you write "parsing TeX
> documents into a document tree", but
> what does "document tree" mean? XML? A
> simple example or one or two sentences
> in your summary will help a lot.
That is a tree-like representation of the document, much like DOM tree in HTML. It can be easily serialized as XML. I am going to blog about it in detail a bit later.

BTW, a documentation for TeXpp is also planned and, I hope, will be available soon.

Anonymous said...

Wow, this sounds really awesome, can't wait to read the next blog posts your planning. What exactly is needed to make LaTeX parsing work?

> What exactly is needed to make LaTeX
> parsing work?
All required features is already implemented. Currently I am working on fixing two bugs which stops LaTeX format from loading. Of course there will probably be a bit more bugs :)

Anonymous said...

Does that mean that it may be possible to implement autocompletion with your library?

Anonymous said...

Does it mean it may be possible to implement autocompletion for (La)TeX with your library?

> Does it mean it may be possible to
> implement autocompletion for (La)TeX

Yes, but still only partly. It is very easy to autocomplete command names (even for user-defined macros), and even to show its definitions as tooltips. While autocompetion of macro arguments can be done in many cases, in general case its almost imposible (there are zillions of ways to handle macro arguments in TeX).

However even with this shortcoming, autocompletion using TeXpp could be much better then existing solutions.

Anonymous said...

I wonder what would be necessary to implement the Qt TeX renderer you mentioned on top of your parser? Could you elaborate on that? I can see a _lot_ of ways this could be useful, e.q. a koffice shape for real LaTeX formulas...

> I wonder what would be necessary to
> implement the Qt TeX renderer you
> mentioned on top of your parser?
The Knuth's TeX program consists of four parts chained together:

1. Input processor
2. Expansion processor
3. Execution processor
4. Visual processor

Currently TeXpp fully implements parts 1 and 2 and, almost fully, part 3. Part 4, the visual processor which does all the typesetting work, is not implemented at all.

> I can see a _lot_ of ways this could
> be useful, e.q. a koffice shape for
> real LaTeX formulas...
Yes, that would be cool. Unfortunately all my free time is already scheduled for at least half a year, so any help with implementing the visual processor is very appreciated.

cialis said...

In principle, a good happen, support the views of the author


text:
# 3D Plot with the Manipulate Command

I'm trying to make a 3D Plot using the Manipulate command. The code is:

ClearAll["Global*"]

G = 0.01;
β = 1;
ωc = 50;
J = 1;
ϕ = 0;
θ = π/2;
η = Exp[I ϕ]*Tan[θ/2];

integralgamma[ω_, τ_] :=
4 G ω Exp[-ω/ωc] ((1 -
Cos[ω τ])/ω^(2)) Coth[β ω/2];

integraldelta[ω_, τ_] :=
4 G ω Exp[-ω/ωc] (Sin[ω τ] - \
ω τ)/ω^2;

ψ = Exp[I α] * Tan[χ/2];

old[τ_] :=    (Abs[η]/(1 + Abs[η]^2) )^(4 J) *
Sum[Binomial[2 J, J + m] * Binomial[2 J, J + p] *
Abs[η]^(2 m + 2 p) *
Exp[-NIntegrate[
integralgamma[ω, τ], {ω, 0, 70000},
Method -> "LocalAdaptive", MaxRecursion -> 15]* (m - p)^2] *
Exp[- I *
NIntegrate[
integraldelta[ω, τ], {ω, 0, 70000},
MaxRecursion -> 15]* (m^2 - p^2)]  , {m, -1, 1, 1}, {p, -1,
1, 1}];

new[\[Alpha]_, \[Chi]_, \[Tau]_] := (Abs[ψ]/(1 +
Abs[ψ]^2) )^(2 J)*(Abs[η]/(1 +
Abs[η]^2) )^(2 J) *
Sum[Binomial[2 J, J + m] * Binomial[2 J, J + p] *
Abs[ψ]^(2 m + 2 p) * Abs[η]^(2 m + 2 p) *
Exp[-NIntegrate[
integralgamma[ω, τ], {ω, 0, 70000},
Method -> "LocalAdaptive", MaxRecursion -> 15]* (m - p)^2] *
Exp[- I *
NIntegrate[
integraldelta[ω, τ], {ω, 0, 70000},
MaxRecursion -> 15]* (m^2 - p^2)]  , {m, -1, 1, 1}, {p, -1,
1, 1}];

Manipulate[
Plot3D[Evaluate[new[\[Alpha], \[Chi], \[Tau]]] -
Evaluate[old[\[Tau]]], {\[Alpha], 0, 2 \[Pi]}, {\[Chi],
0, \[Pi]}], {\[Tau], 0, 1}]

I get the result:

• Remove the underscores from new[...] and old[...] in your plot to start – J_Nat Jul 21 '16 at 19:58
• Rendering any Plot3D[] will take a long time here, Manipulate[] isn't the way to go. – Feyre Jul 21 '16 at 20:09
• @J_Nat Edited. Check the code. I get a similar error. See the edited post. – Junaid Aftab Jul 21 '16 at 20:14
• @Feyre Any suggestions? – Junaid Aftab Jul 21 '16 at 20:14
• I got no errors, just $Aborted in place of the plot which backs up Feyre's comment that it takes too long in the current state. – J_Nat Jul 21 '16 at 20:18 ## 3 Answers Updated using mem: as suggested by Simon Woods. Perhaps using Plot3D at a couple of intervals of tau will be enlightening. The results seems plausible based on the fact that old is a 1D function. ClearAll["Global*"] G = 0.01; β = 1; ωc = 50; j = 1; ϕ = 0; θ = π/2; η = Exp[I ϕ] Tan[θ/2]; Clear[ψ] ψ[α_, χ_] := Exp[I α]*Tan[χ/2]; integralgamma[ω_, τ_] := 4 G ω Exp[-ω/ωc] ((1 - Cos[ω τ])/ω^(2)) Coth[β ω/2] integraldelta[ω_, τ_] := 4 G ω Exp[-ω/ωc] (Sin[ω τ] - ω τ)/ω^2 mem :δ[τ_]:= mem=NIntegrate[integraldelta[ω, τ], {ω, 0, Infinity}, PrecisionGoal -> 3] mem :γ[τ_]:= mem=NIntegrate[integralgamma[ω, τ], {ω, 0, Infinity}, PrecisionGoal -> 3] old[τ_] := -(1/τ) Log[ (Abs[η]/(1 + Abs[η]^2))^(4 j) Sum[Abs[η]^(2 m + 2 p) Binomial[2 j, j + m] Binomial[2 j, j + p] Exp[-I δ[τ] (m^2 - p^2)] Exp[-γ[τ] (m - p)^2], {m, -j, j, 1}, {p, -j, j, 1}]] new[α_, χ_, τ_] := -(1/τ) Log[ (Abs[ψ[α, χ]]/(1 + Abs[ψ[α, χ]]^2))^(4 j) (Abs[η]/(1 + Abs[η]^2))^(2 j) Sum[Abs[η]^(2 m + 2 p) Abs[ψ[α, χ]]^(2 m + 2 p) Binomial[2 j, j + m] Binomial[2 j,j + p] Exp[-I δ[τ] (m^2 - p^2)] Exp[-γ[τ] (m - p)^2], {m, -j, j, 1}, {p, -j, j, 1}]]  Table Plots: Table[Plot3D[ Re[new[α, χ, τ] - old[τ]], {α, 0, 2 π}, {χ, 0, π}, PlotPoints -> 20, MaxRecursion -> 0, ColorFunction -> (ColorData["Rainbow"][Rescale[#3, {-2, 8}]] &), ColorFunctionScaling -> False, PlotRange -> {-2, 8}], {τ, 0.2, 2.0, 0.1}] $j=2\$

• What about the other graphs for the other times, tau? I'm assuming this graph is for one fixed time, tau. Also, why are there two branches/surfaces in the graph. I want to calculate the difference of the two functions -- so shouldn't there be one surface? – Junaid Aftab Jul 22 '16 at 7:16
• I ran the command with {\[Tau], 0.5, 1}. I got one graph. Shouldn't I be getting two graphs -- one that computes the difference, new - old, for \[Tau] = 0.5 and the other that does the same for \[Tau] = 1? – Junaid Aftab Jul 22 '16 at 8:27
• @JunaidAftab As you can see here, alpha does nog affect the graph. – Feyre Jul 22 '16 at 9:11
• @Feyre I'm not sure what's on the axes then - Cho which is till 2pi. What about the other axes? I expect the axes representing the difference to be between - 1 and 1. :/ – Junaid Aftab Jul 22 '16 at 9:24
• You can see from the fact he is using {α, 0, 2 π}, {χ, 0, π}. The z axis is the value for the functions of two different values of τ. – Feyre Jul 22 '16 at 9:27

One way of plotting 4d data is with:

DensityPlot3D[
Re[new[α, χ, τ] - old[τ]], {χ,
0, π}, {α, 0, 2 π}, {τ, 0.1, 1},
PlotPoints -> 11]

To do this with manipulate, it is wise to do all the calculations first, and storing the values in a dataset.

data = Table[
Table[{α, χ,
Re[new[α, χ, τ] - old[τ]]}, {χ, π/
16, π, π/8}, {α, 0, 2 π, π/4}], {τ,
0.1, 1, 0.1}];

This creates a file for values and coordinates α, χ. Note, this takes a while to create.

Manipulate[
ListPlot3D[Flatten[data[[τ, All, All, All]], 1]], {τ, 1,
Length[data[[All, 1, 1, 1]]], 1}]

This plots the data where you can change τ like you requested as a Manipulate[]

• Can you please share the interpretation of this graph? I'm looking at it for the first time. I can identify which axis is which -- and the difference between new and old is between 0 and 1 so that's good. – Junaid Aftab Jul 22 '16 at 9:52
• @JunaidAftab This is a Densityplot, that means every point in the space here has a value, this is the value of the function new[α, χ, τ] - old[τ] at the triplet {χ,α,τ} – Feyre Jul 22 '16 at 10:55
• So the axes represent chi and alpha. At each point, what is the value of tau? I don't get it. Also, at each triplet, how do I interpret the value of new - old? What do the different colours in the plot represent? – Junaid Aftab Jul 22 '16 at 10:59
• In this case τ is the vertical-axis. You can add , PlotLegends -> Automatic to show a numerical value for the various colours. I can think of one way to actually plot this in the original way you intended, I'll add it soon. – Feyre Jul 22 '16 at 11:04
• So the horizontal axes represent chi and alpha and the veto ticks axis represents tau. My question still is: 1) how is tau modelled in the graph? Is tau discrete or does it take a continuum of values between 0 and 1? 2) how do I interpret the value of new - old at each triplet -- what do the colours represent? – Junaid Aftab Jul 22 '16 at 11:34

The command given before editing the question and before my answer was:

Manipulate[
Plot3D[new[α_, χ_, τ_] - old[τ_], {α, 0, 2 π}, {χ, 0, π}], {τ, 0, 1}]

Manipulate[

• You can format inline code and code blocks by selecting the code and clicking the {} button above the edit window. The edit window help button ? is also useful for learning how to format your questions and answers. You may also find this meta Q&A helpful – Michael E2 Jul 21 '16 at 21:38


text:
From: <jhd@csd.uwo.ca>
Date: Thu, 9 Mar 2000 19:29:32 -0500
Message-Id: <200003100029.TAA17313@wallace.csd.uwo.ca>

\documentclass{article}
\def\arccot{\mathop{\rm arccot}\nolimits}
\begin{document}
Version 2U306 --- Stephen Watt's copy\\
edition of 9 March 2000}
\author{James Davenport
\tt jhd@maths.bath.ac.uk\\
jhd@csd.uwo.ca}
\maketitle
Stephen very kindly lent me his copy: here are my observations.
\begin{description}
\item[p. 113; Line 10 of 4.1.2.] BA-level or Baccealaureate''. Would
it be sensible to add etc.'', or name, say Abitur''?
\item[p. 116; line 5]This says that the default is that a {\tt ci}
comes from a commutative field. Apart from the pedantic point that all
fields are commutative, is this really necessary? After all, variables
often stand for integers. Maybe all you ned is a commutative ring. I
also note that page 125, at line 2 after {\tt ci} says no default is
specified''.
\item[p. 120]Ath the bottom, it is stated that the definition of
inverse trigs can differ sligtly. A stronger statement is true: the definition of
$\arccot(-1)$.

\begin{tabular}{llrl}
\cite{AS}&1st printing&$\frac{3\pi}4$&inconsistent\\
\cite{AS}&9th printing&$\frac{-\pi}4$\\
\cite{CRC}&30th edition&$\frac{3\pi}4$&inconsistent\\
Maple&V release 5&$\frac{3\pi}4$\\
Axiom&2.1&$\frac{3\pi}4$\\
Mathematica&\cite{Mma}&$\frac{-\pi}4$\\
Reduce&3.4.1&$\frac{-\pi}4$&in floating point\\
Matlab&5.3.0&$\frac{-\pi}4$&in floating point\\
\end{tabular}
\item[p. 121; top]No doubt the definition of {\tt inverse} has already
been fought over, but mightn't it be better to say for some $x$ in
$D$''. Otherwise, since $\arcsin(\sin(3\pi))\ne3\pi$ (normally), one
might have problems saying what $\arcsin(-1)$ is.
\item[p. 121; 13 lines up]What is the scope of the declare''? See
similar unspecified phrases on p. 128.
\item[p. 126]It is not stated that {\tt type=normal} is the default
for {\tt set}: I assume that it is.
\item[p. 126; {\tt set and list} +9]the order defaults to a numeric
or lexicographic ordering''. Does this mean that $(z,y,x)$ renders as
$(x,y,z)$?, or does this only apply to lists generated via constructors?
\item[p. 271]This described {\tt and} as $n$-ary, but {\tt or} and
{\tt xor} as binary. This is certainly inconsistent, and is
inconsistent with p. 129, which declares all three to be $n$-ary ---
DPC says that p. 129 is consistent with the DTD
\begin{verbatim}
<!ENTITY  % clogicopnary             '%MathML.and.qname; |
%MathML.or.qname; |
%MathML.xor.qname;' >
\end{verbatim}
OpenMath defines all three as $n$-ary, which seems like the correct answer.
\item [p. 338; third point in chapter 4]. Classifical''.
\end{description}
\begin{thebibliography}{9}
\bibitem{AS}
Abramowitz,M. \& Stegun,I.,
Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical
Tables.
US Government Printing Office, 1964.
10th Printing December 1972.
\bibitem{Mma}
Wolfram,S.,
The Mathematica Book.
Wolfram Media/C.U.P., 1999.
\bibitem{CRC}
Zwillinger,D. (ed.),
CRC Standard Mathematical Tables and Formulae.
30th. ed., CRC Press, Boca Raton, 1996.
\end{thebibliography}
\end{document}

Received on Thursday, 9 March 2000 19:29:45 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:27:29 UTC


text:
Article Text

Original research article
Murmur clinic: validation of a new model for detecting heart valve disease
1. Jane Draper,
2. Sheila Subbiah,
3. Rikki Bailey,
4. John B Chambers
1. Cardiothoracic Centre, Guy’s and St Thomas’ Hospitals, London, UK
1. Correspondence to Professor John B Chambers, Cardiothoracic Centre, St Thomas’ Hospital, London SE1 7EH, UK; john.chambers{at}gstt.nhs.uk

## Abstract

Objectives We aimed to determine if auscultation or a point-of-care scan could reduce the need for standard echocardiography (transthoracic echocardiogram (TTE)) in community patients with asymptomatic murmurs.

Methods Requests from general practitioners were directed to a new murmur clinic. Auscultation and a point-of-care scan were performed by a cardiologist between 1 October 2013 and 31 December 2014 and by a scientist between 21 July 2015 and 9 May 2017.

Results In the first phase (cardiologist), there were 75 patients, mean age 54 (56 women), and in the second phase there were 100 patients, mean age 60 (76 women). In the total population of 175, abnormalities were shown on TTE in 52 (30%), on point-of-care scan in 52 (30%) and predicted on auscultation in 45 (26%) (p=0.125; 95% CI −0.02 to 0.29). The sensitivity of auscultation was not significantly different for the cardiologist (91%) as for the scientist (83%) (p=0.18; 95% CI −0.22 to 0.175) and the specificity was 100% for both. Accuracy was 97% for the cardiologist and 95% for the scientist. For the point-of-care scan, the sensitivity, specificity, positive and negative predictive values and accuracy were 100% for both cardiologist and scientist.

Conclusion Most patients in a specialist murmur clinic had normal auscultation and point-of-care scans and no additional valve disease was detected by standard echocardiography. This suggests that a murmur clinic is a valid model for reducing demand on hospital echocardiography services.

• murmur
• echocardiography
• point of care scan
• auscultation
• general practice

This is an open access article distributed in accordance with the Creative Commons Attribution Non Commercial (CC BY-NC 4.0) license, which permits others to distribute, remix, adapt, build upon this work non-commercially, and license their derivative works on different terms, provided the original work is properly cited, appropriate credit is given, any changes made indicated, and the use is non-commercial. See: http://creativecommons.org/licenses/by-nc/4.0/.

## Introduction

Heart valve disease is increasingly prevalent and a major cause of morbidity and premature death in all countries.1 2 Early identification and specialist follow-up allows timely referral for intervention and improves outcomes.3 4

Auscultating a murmur followed by echocardiography is the principle pathway for detecting valve disease in the community and is the second most common indication for open access echocardiography after suspected heart failure.5 6 However, auscultation by general practitioners has recently been confirmed to be both insensitive and non-specific for the detection of heart valve disease.7 8 Valve disease of any grade is found on echocardiography in less than one-third of patients referred from the community because of a murmur.5 6 Furthermore, standard echocardiograms (transthoracic echocardiogram (TTE)) take about 45 min to perform and are a relatively scarce resource. It has been suggested that a more limited ‘point-of-care scan’ taking 10–15 min can screen out patients not requiring TTE.8 9 This has not previously been investigated.

At our hospital, we developed a specialist murmur clinic for open access general practitioner requests indicated by a murmur. In a first feasibility phase, a consultant cardiologist performed both auscultation and the point-of-care scan, and in a subsequent phase these were performed by clinical scientists. This study compares results of auscultation and a point-of-care scan performed by a scientist or a cardiologist against TTE as the ‘gold standard’.

## Method

Patients referred for open access echocardiography by their general practitioner because of an asymptomatic murmur were booked into a once weekly afternoon session at Guy’s and St Thomas’ Hospitals. The first phase (consultant cardiologist) study was conducted as a feasibility exercise from 1 October 2013 to 31 December 2014 and the second phase (scientist) between 21 July 2015 and 9 May 2017. All patients had a standard study (TTE)10 performed by a scientist (first phase JD, second phase RB) using a Vivid-7 system (GE Medical, Milwaukee, Wisconsin, USA). A point-of-care scan with the Vivid-7 system and auscultation were performed either before or after the TTE with no knowledge of the results of the TTE, in the first phase by a consultant cardiologist (JC) and in the second phase, when rostering permitted, by a clinical scientist (SS or JD). The point-of-care scan consisted of four views (parasternal long-axis and short-axis, apical 4-chamber and 5-chamber and subcostal) with imaging alone then added colour Doppler mapping.11 Auscultation was conducted in the four standard points and in intermediate positions with the patient at 45o then at the left sternal edge with the patient sitting forward and at the apex and axilla lying on the left side. The clinical scientists had received training in auscultation with a cardiologist (JC) in a specialist valve clinic and at an MSc course run by Swansea University.

### Analysis

Auscultation was classed as normal if there was no murmur heard or a likely benign systolic flow murmur (soft, short ejection systolic murmur with a well-heard second sound). Auscultation was classed as abnormal if there was a loud, long ejection systolic murmur or a soft, or absent second sound or a pansystolic or diastolic murmur. The point-of-care scan was classed as normal if there was no more than minimal thickening or trivial regurgitation. It was classed as abnormal if there was anything more than mild thickening or trivial regurgitation. The TTE was classed as: normal, mildly abnormal (advised to have serial TTE after 3 years as per international guidelines),12 moderately abnormal (offered follow-up in a specialist valve clinic) and severely abnormal (requiring an immediate cardiology opinion). For the purposes of comparison with auscultation or point-of-care echocardiography, the three grades of abnormal (mild, moderate and severe) were combined.

Mean age was calculated. The sensitivity, specificity, positive and negative predictive values, accuracy and positive and negative likelihood of auscultation and point-of-care scans against standard echocardiography were calculated. Comparison of results for auscultation and point-of-care scans against standard TTE was with a two-tailed exact McNemar’s test. The results of auscultation between scientist and cardiologist was with a two-sided Fisher’s exact test. Calculations were performed using Stata V.14.2. Costs were estimated using the current National Health Service tariff of £81.73 for a standard simple echocardiogram in an adult. An estimate of £27.24 was made for a point-of-care scan since three can be performed in the time taken for one standard study.

## Results

In the first phase (cardiologist), there were 75 patients (56 women and 21 men) mean age 54 (range 20–94) years. In the second phase (scientist), there were 100 patients (76 women and 24 men) mean age 60 (range 22–92) years. Recruitment was slow because 91 patients failed to attend appointments and two scientists could not be released for every murmur clinic because of general departmental demands (figure 1).

Figure 1

Consort diagram for the second, scientist phase of the study.

### Results of TTE, auscultation and point-of-care scan

Results were similar in both phases. In phase 1, abnormalities were detected on TTE in 23 (31%), on the point-of-care scan in 23 (31%) and on auscultation in 21 (28%). In the second phase, abnormalities were detected on TTE in 29 (29%), on the point-of-care scan in 29 (29%) and on auscultation in 24 (24%). By comparison with TTE (30%), the proportions for the total population detected by point-of-care scan (30%) or auscultation (26%) were not statistically significantly different (p=0.125; 95% CI −0.021 to 0.288).

Comparisons of auscultation and point-of-care echocardiography against standard echocardiography are given in table 1. Auscultation by the cardiologist was slightly more sensitive than by the scientists (91% vs 83%). This difference was not statistically significant (p=0.184; 95% CI −0.022 to 0.175), although the wide 95% CI indicated that equivalence of cardiologist and scientist auscultation was not proved. There were no differences for point-of-care echocardiography performed by cardiologist or scientist (table 1).

Table 1

Comparison of auscultation and point-of-care echocardiography against standard transthoracic study as % (95% CI) performed by a scientist or consultant cardiologist

For both phases combined, the severe abnormalities detected were severe aortic stenosis (n=4); the moderate abnormalities were moderate aortic stenosis (n=10), moderate aortic (n=3), mitral (n=3) or tricuspid regurgitation (n=3), left ventricular (LV) hypertrophy (n=7) and LV systolic dysfunction (n=1) and the mild abnormalities were mild aortic stenosis (n=9), mild aortic (n=6) or mitral regurgitation (n=5) or a subaortic membrane (n=1).

The murmur clinic model with 52 TTE and 123 point-of-care scans would have cost £7600 (Euro 8637, US$10 185) compared with the conventional model involving 175 TTE which cost £14 303 (Euro 16253, US$19 166). This represents a saving of 82 hours of scanning time and £6703 (Euro 7616 or US\$8981) based on current National Health Service tariffs.

## Discussion

This is the first published description of a specialist murmur clinic. The majority (70%) of patients referred from the community with a murmur had structurally normal hearts and could safely have been screened using the limited views of a point-of-care scan.

The sensitivity of auscultation by the scientist was 83% compared with 91% by the cardiologist, a difference that was not statistically significant although with wide 95% CIs reflecting the small population size. We estimate that a sample size of 580 would be necessary to investigate equivalence between scientist and cardiologist with 80% power and assuming an acceptable difference in performance of <5%. By contrast, the point-of-care scan had a sensitivity of 100% when performed by either scientist or cardiologist showing its superiority over auscultation for the detection of valve disease.8 We believe that auscultation should still be included in the assessment at a murmur clinic since a number of uncommon abnormalities (eg, muscular ventricular septal defect, aortic coarctation or pulmonary stenosis) would usually be associated with obvious systolic murmurs but might not be detected by a point-of-care scan. Conversely, diastolic murmurs as a result of mitral stenosis or pulmonary or aortic regurgitation may be hard to hear but should be obvious on a point-of-care echocardiogram. An abnormal murmur or point-of-care scan should prompt a TTE.

National workforce and organisational differences mean that the disciplines running a murmur clinic may vary. Often a cardiologist will run a murmur clinic either separately or within a specialist valve clinic,3 but in some countries, a specialist senior nurse might be trained for the role. In the UK, the cardiac physiologist career structure is now expanding with a Higher Specialist Scientific Training programme designed to produce a new class of consultant clinical scientists. A murmur clinic is consistent with the extended clinical role expected of this discipline.

### Comparison with existing literature

Point-of-care scans have been shown to be safe and effective in acute medical presentations13–15 but have not previously been examined in patients with a murmur, although their use has been suggested in an international opinion paper.9 We found that only 30% of patients with an asymptomatic murmur had any grade of valve disease which is similar to the 29% and 31% frequencies shown in large series of open access echocardiograms in the UK5 and Holland.6 This is also consistent with recently published work7 showing that auscultation by general practitioners has a sensitivity of only 44% and specificity of 69% for the detection of significant valve disease on TTE. In an analysis of open access echocardiography,5 we detected significant valve disease in 127 (18%) of 706 patients referred because of a murmur but in 267 (15%) of 1745 patients when we extended the indications for echocardiography to include a potentially cardiac symptom, or atrial fibrillation. Furthermore, descriptive surveys16 17 suggest that general practitioners may not have time to auscultate. A murmur auscultated by a general practitioner will remain important but echocardiography is the ‘gold standard’ for detection. A point-of-care scan would allow basic echocardiography to be more widely available to patients with any risk factor for valve disease including abnormalities on the history, examination or ECG or potentially age >75.7–9

### Clinical implications

A point-of-care scan can be seen as an ‘ultrasonic stethoscope’13 and is useful primarily as an extension of the clinical examination to reduce the need for relatively time-consuming and costly TTEs. The organisation of our clinic means that a TTE can be performed immediately if clinically indicated. Furthermore, not all clinicians requesting echocardiography may have competencies in the management of valve disease and the murmur clinic allows protocol-led application of agreed standards of care.12 Patients with moderate or severe valve disease are referred directly to a specialist valve clinic.

However, a community setting may be geographically more convenient for patients. This might increase the attendance rate since 91 (40%) of 225 people invited to our clinic failed to attend. Those with normal scans would not need to travel to hospital and those with minor abnormalities requiring periodic follow-up could have this within the community. It would be possible to run community clinics with portable or hand-held devices14 18 which compare well against high-end machines for detection of valve disease.13 14 However, it is essential that community-based systems have robust processes to deal with abnormalities including quick access to comprehensive TTE within a hospital-based specialist valve clinic.

### Key messages

• A murmur is a non-specific guide to the presence of heart valve disease but is one of the most common indications for echocardiography. This has significant resource implications.

#### What does this study add?

• A normal standard echocardiogram can be accurately predicted by a point-of-care scan in a specialist ’murmur clinic'.

#### How might this impact on clinical practice?

• Triage with a point-of-care scan could greatly reduce the need for standard echocardiography. A murmur clinic could apply evidence-based standards at local hospitals or within the community and refer only patients with significant valve disease to a specialist valve clinic.

## Acknowledgments

We thank Paul Seed, Senior Lecturer in Medical Statistics, Womens Health Academic Centre, KCL for statistical advice.

## Footnotes

• Contributors JD collected data in the first phase and wrote the first draft. SS collected data in the second phase, contributed to data analysis and contributed to revisions of the article. RB collected data in the second phase and contributed to the revision of the paper. JBC designed the study, collected data in the first phase and contributed significantly to the analysis of the data and to writing the finished draft.

• Funding The authors have not declared a specific grant for this research from any funding agency in the public, commercial or not-for-profit sectors.

• Competing interests None declared.

• Patient consent Not required.

• Ethics approval Trust audit office (number 5077).

• Provenance and peer review Not commissioned; externally peer reviewed.

• Data sharing statement There is no additional information.

## Request Permissions

If you wish to reuse any or all of this article please use the link below which will take you to the Copyright Clearance Center’s RightsLink service. You will be able to get a quick price and instant permission to reuse the content in many different ways.