Treating myalgic encephalomyelitis with little information

Myalgic encephalomyelitis is a complex disease, likely the most complex known by several magnitudes. The symptom list is massive. Looking for clustering at the patient level finds a vast array of sensitivities that makes one plan for everyone impossible, but even a dozen plans are improbable to be sufficient. Typically, A helps one, A hurts another and A does nothing (except reduce the pocket book) for a third person.

A reader wrote with a concern for the person she is caring for.

“she’s doing so badly, she’s so weak, I must change something. I think I’ll keep her on triphala (she’s still herxing) but slowly bring back some of her natural antibiotics which I’d taken her off completely – berberine, turmeric rosehip tea, neem, star anise etc and judge what’s right by if she’s still herxing. Would you do that? “

I want to answer it by describing major subsets of issues that ME patients may have – and possible strategies for each:

  • Histamine Issues
  • Salicylates issues
  • Thick blood issues
  • D-Lactic acid issues
  • Gluten issues – which can occur with supplement fillers

The Gotchas – doing the wrong thing…

I’ve been involved with the ME community for about 20 years and seen a lot of fads, trends and a few successes. Too often the same concept gets tried, retried and retried again in the community with the same result — no result.

The following are from interactions that I have had with various people over these years

Histamines

Many probiotics are histamine producers. Taking an random probiotic may make things worst. For more reading:


https://histaminentzug.de/die-10-besten-probiotika-bei-histaminintoleranz/

Real example: a reader asked why with my flare that I was taking Enterogermina instead of MegaSporeBiotic which contains the same species and several more. The reason was simple: my ubiome results showed an 50% increase of histamine producing bacteria, so I wanted to avoid adding any more histamine producers.

Histamine issue may be due to over population of:

  • Proteus mirabilis, [ref]
  • Streptococcus pneumoniae [ref]
  • Klebsiella pneumoniae (also produces lactic acid) [ref]

This of course suggests reducing them — with anise and other herbs (see ref above for each)

Salicylates issues

See Salicylate sensitivity for some background. This can mean that something like aspirin that could assist with thick blood, may make things worst. This applies to many herbs and spices that are effective against some bacteria or blood thinning.

This deselects a lot of items and tend to increase the importance of probiotics, minerals and non-herbal supplements.

Thick Blood Issues

First, thick blood issues can be tricky because there can be many different coagulation mechanism involved. Doing too much of the wrong thing can result in easy bleeding and bruising (I have gone there). Coagulation: Thick Blood Supplements for CFS. Possible actions can be split into three types:

  • Prescription: Heparin (sublingual — under the tongue, seems to work as well as injection for ME)
  • Salicylate free supplements (not plant based):
  • Salicylate risk
    • Aspirin
    • Grape Seed Extract
    • Turmeric
    • Cucumin
    • Boswelia Gum
    • Bromelain

D-Lactic acid issues

This is usually impacted by probiotics as well as dairy consumption. Lactic acid is not produced only by lactobacillus, but other species.

Overgrowth of  Lactobacillus, Leuconostoc, Pediococcus, Lactococcus and Streptococcus, Carnobacterium, Enterococcus, Oenococcus, Tetragenococcus, Vagococcus, and Weisella. [src] can contribute.

What to do?

The key factor is not to create fog on what is happening by ingesting the kitchen’ supplement cabinet at one time. I would start by assuming histamine issues, lactic acid issues and salicylates issues. This leads to two sets of things to test for response (ideally one at a time for 2 weeks):

What to try next? Hopefully, you have uBiome results by the time you are done above and can then use the microbiome prescription site to see suggestions. I would divide the items suggested into similar groups and do things from one group at a time. You may not be aware of some of the issues until you isolate yourself from the triggers for a week or two (i.e. eliminate all salicylates for two week – do you feel better).

Remember, every person’s path to remission and relief is likely unique.

Data Science: Tax Rank and Symptoms

This is another one of my series of post dealing with using R and the microbiome samples submitted at http://microbiomeprescription.com/

and available for download at: http://lassesen.com/ubiome/ .  The intent is show process (“boot strap”) individuals to explore more. There is a lot to be explore (and I have a day job and heavy family obligations).

Getting data into your R workspace

The code below will download and save the data to your local computer. WARNING: WordPress does some funky things with the quotes(“), you may have to correct if you copy and paste.

library(tidyverse)
samplesymptom <-read_csv(“http://lassesen.com/ubiome/SampleSymptom.csv&#8221;)
samplesWithSymptoms <- samplesymptom %>% group_by(sampleId) %>% summarize(peopleWith=n()) %>% arrange(desc(peopleWith)) %>% select(sampleId)
load all tax rank sets with reasonable amount of data and then filter to those observations with symptoms
byPhylum <-inner_join(read_csv(“http://lassesen.com/ubiome/TaxonomyByPhylum.csv&#8221;),samplesWithSymptoms,by=”sampleId”)
byClass <-inner_join(read_csv(“http://lassesen.com/ubiome/TaxonomyByclass.csv&#8221;),samplesWithSymptoms,by=”sampleId”)
byFamily <-inner_join(read_csv(“http://lassesen.com/ubiome/TaxonomyByfamily.csv&#8221;),samplesWithSymptoms,by=”sampleId”)
byGenus <-inner_join(read_csv(“http://lassesen.com/ubiome/TaxonomyBygenus.csv&#8221;),samplesWithSymptoms,by=”sampleId”)
byKingdom <-inner_join(read_csv(“http://lassesen.com/ubiome/TaxonomyBykingdom.csv&#8221;),samplesWithSymptoms,by=”sampleId”)
byNoRank <-inner_join(read_csv(“http://lassesen.com/ubiome/TaxonomyByno_rank.csv&#8221;),samplesWithSymptoms,by=”sampleId”)
byOrder <-inner_join(read_csv(“http://lassesen.com/ubiome/TaxonomyByorder.csv&#8221;),samplesWithSymptoms,by=”sampleId”)
bySpecies <-inner_join(read_csv(“http://lassesen.com/ubiome/TaxonomyByspecies.csv&#8221;),samplesWithSymptoms,by=”sampleId”)
bySubClass <-inner_join(read_csv(“http://lassesen.com/ubiome/TaxonomyBysubclass.csv&#8221;),samplesWithSymptoms,by=”sampleId”)
bySubOrder <-inner_join(read_csv(“http://lassesen.com/ubiome/TaxonomyBysuborder.csv&#8221;),samplesWithSymptoms,by=”sampleId”)
bySubPhylum <-inner_join(read_csv(“http://lassesen.com/ubiome/TaxonomyBysubphylum.csv&#8221;),samplesWithSymptoms,by=”sampleId”)
bySuperKingdom <-inner_join(read_csv(“http://lassesen.com/ubiome/TaxonomyBysuperkingdom.csv&#8221;),samplesWithSymptoms,by=”sampleId”)
bySuperPhylum <-inner_join(read_csv(“http://lassesen.com/ubiome/TaxonomyBysuperphylum.csv&#8221;),samplesWithSymptoms,by=”sampleId”)
create lists/vectors with labels so we can walk over each later
TaxRankCount <-13
TaxRankList <- c(byClass,byFamily,byGenus,byKingdom,byNoRank,byOrder,byPhylum,bySpecies,bySubClass,bySubOrder,bySubPhylum,bySuperKingdom,bySuperPhylum)
TaxRankLabel <- c(“byClass”,”byFamily”,”byGenus”,”byKingdom”,”byNoRank”,”byOrder”,”byPhylum”,”bySpecies”,”bySubClass”,”bySubOrder”,”bySubPhylum”,”bySuperKingdom”,”bySuperPhylum”)
read in symptom names
symptoms <-read_csv(“http://lassesen.com/ubiome/Symptoms.csv&#8221; )
save.image(“~/Microbiome.RData”)

Above as image

If you are using R-Studio, you will see a nice report on your right

The following code will generate a listing of symptom frequency.

SymptomsWithCount % group_by(symptomId,symptom_name) %>% group_by(symptomId,symptom_name) %>% summarize(peopleWith=n()) %>% arrange(desc(peopleWith)) head(SymptomsWithCount)

In my prior post,Building a model of Symptoms and Symptoms Analysis with R, I showed the basic process. I will try to reduce the amount of typing by adding a bit of code.

One Line of Code After …

The code below loads the “broom” library to bewitch the data and creates a function (using linear model – lm) that cleans up the data and then see if we use everything in one level of taxonomy rank, is there any significance.

canexplain <- function(x,onesymptomId){
sampWithSymptom <- samplesymptom %>% filter(symptomId==onesymptomId) %>% group_by(sampleId) %>% summarize(symptom=n())
regData1 <-left_join(samplesWithSymptoms,sampWithSymptom,by=”sampleId”) regData2<-inner_join(x,regData1,by=”sampleId”) regData2[is.na(regData2)] <-0 #Fix NA regData3 <- regData2[,colSums(regData2 > 0) > 2]
regModel <- lm(symptom ~. -sampleId,regData3) r2 <-glance(regModel)$adj.r.squared prob <-glance(regModel)$p.value symptomName=symptoms%>%filter(symptomId==onesymptomId) %>% select(symptom_name)
print(paste(deparse(substitute(x)),” for “,onesymptomId,” “,symptomName,” r2=”,r2,”, p-value=”,prob))
return(regModel)
}

The above code as an image (WP format issues)

Then if I type canexplain(byPhylum,1), we get a short report (followed by more details)

Suppose you want to test the symptoms above, we can do it with code like below:

test<-canexplain(byPhylum,1) test<-canexplain(byClass,1) test<-canexplain(byFamily,1) test<-canexplain(byGenus,1) test<-canexplain(byNoRank,1) test<-canexplain(byOrder,1) test<-canexplain(bySpecies,1) test<-canexplain(bySubClass,1) test<-canexplain(bySubPhylum,1)

The results are interesting and shown below

General fatigue is explained only 38% at the genus level (genus means lactobacillus, bifidobacteria) , but appears to be well explained by specific species.

We can look at which bacteria being present has the greatest risk of fatigue.

And those which decrease risk

A word of warning: a linear model is not the best for predicting fatigue or no fatigue. A better model is logistic, which I will be covering in a future post.

Additionally, at the species level — a lot of people will have ZERO of the specific species, so we need to do a little extra caution in reading what the above mean.

A few more Runs

For IBS, we see that there is a significant association with the genus (57% explained)

We will look at them, but instead of by value, by the probability of them being significant players! (done by tidy(test) %>% arrange(p.value) )

Postive values means having this genus increases your odds, negative values decreases the odds.

Bottom Line

This was intended as a “show how to do”. There are some problems at the species level, we have 2000 bacteria (columns) and only 100 observations. This too-many choices and not enough observations can result in misleading conclusions with a linear model. This also applies to the genus level where we have 900 bacteria. I will be working through these issues in subsequent posts.

Osteomyelitis and the microbiome

A reader asked me to research and give speculation on Chronic recurrent multifocal osteomyelitis (CRMO). The reader has been seeing an increasing number of patients referred to her with this diagnosis. ( “a prevalence of around one in a million patients” [2018]) There are some 450+ studies on PubMed.

The relationship of inflammatory bowel disease (IBD) and chronic recurrent multifocal osteomyelitis (CRMO) is understood as extraintestinal rheumatic manifestations. CRMO is a chronic, relapsing, inflammatory, noninfectious disorder of the skeletal system of unknown origin. The disease course is not always recurrent. The association of CRMO and ulcerative colitis (UC) is very rarely reported. [2019]

“Chronic non-bacterial osteomyelitis (CNO) or chronic recurrent multifocal osteomyelitis (CRMO) is an autoinflammatory disorder characterized by sterile bone osteolytic lesions…  More frequent manifestations not directly related to bone involvement were myalgia (12%), …and gastrointestinal symptoms (8%). ” [2018]

  • “that predominantly affects children… Laboratory studies can be normal,” [2018]
  • “, the potential for direct infectious causation or indirect causation by infectious stimulation of immunity cannot be entirely excluded.” [2011]
  • “Other disease associations with chronic multifocal osteomyelitis….. Inflammatory bowel disease, especially Crohn’s” [2011]

My initial probe was pub med where I found just over 400 studies of CRMO. What I noticed reviewing these was a number of studies citing “Chronic nonbacterial osteomyelitis”. This caused me to ask the question, is CRMO actually osteomyelitis with multiple bacteria involved (my “bacteria consortium” model) — and no single known bacteria cause identified?

Bacteria Associated?

Osteomyelitis has been reported to be associated with the following:

  • Mycobacterium fortuitum [2012]
  • Coxiella burnetti — Q Fever [2011] [1998]
  • Staphylococcus aureus, Staphylococcus epidermidis [2008]
  • Corynebacterium [2016]
  • “The total positive rate of culture for bacterial OM was 81.82%, with Staphylococcus aureus being the most frequently detected pathogen (44.70%). ” [2019]

A Single Strong Candidate Gut Bacteria

“A recent paper in the journal Nature discusses experiments that provide a link between a certain gut bacteria, diet, and osteomyeltis (an autoinflammatory bone disease).  Osteomyelitis occurs when there is a bacterial infection of the bone marrow.  It is often treated with antibiotics but sometimes surgery and amputation are necessary.

The discovery that diet could alter the progression of the disease led the researchers to investigate the microbiome of these mice.  The mice with low fat diets had higher amounts of Prevotella and lower amounts of Lactobacillus when compared to normal mice.  The reverse was true for the high fat diet mice, they had much less Prevotella and much more Lactobacillus in their guts, which better represents the composition in normal mice.

To further investigate if Prevotella may be causing the disease, the researchers gave antibiotics to the low fat diet mice, which destroyed the Prevotella population, and decreased the symptoms of the disease.

Finally, the researchers performed microbiome transplants into germ-free mice that were susceptible for osteomyeltis.  Any germ-free mouse that received a transplant high in Prevotella and then was fed a low fat diet developed the disease.  However, any mouse that received a transplant that was low in Prevotella, even if that mouse was on a low fat diet, did not develop the disease. ” [2014]

This appears to have additional evidence:

Bottom Line

There is an absence of microbiome studies for CRMO. I have added this official diagnosis to the symptoms list in the hope that we may as citizen scientists may slowly build up data on this.

If we run with the Prevotella hypothesis — then looking at our database for Prevotella (which is seen in only 54% of the samples) we have:

With the following to be avoided:

Notes from a reader

Sometime a reader sends a long email that provide very useful experience, and often encouragement for the approach/model that I am advocating. For my posts, I prefer to keep strictly to PubMed studies and not mix in personal experiences etc. I also like to read of people success in finding their own paths towards health.

I  just wanted to write and thank you for a couple of things, first, getting back to me a few months ago and suggesting zinc and vitamin A. I think that helped.

Meanwhile, the second thing I wanted to thank you for is that I recently had a relapse or flare-up, whatever you want to call it, such that I had not felt as bad since 2015. I took a fresh look at your materials and changed a few things and instantly felt better.
So much better, in fact, that I wonder if it would be worth while for you to add another lens to the way you look at the microbiome. 

Specifically, I am wondering if you might want to look at how various foods, bacteria, prebiotics etc. affect neurotransmitters. I ask because the transformation I experienced the other day upon eating a quarter of a cup of sesame seeds, two apples, and a package of candied pineapple) after having some beef was transformative within minutes and hours, and I can’t think of anything that could work that quickly except maybe the impact of neurotransmitters on neurons in the gut.

I’ll outline what happened to me the other day so you know what I mean. It’s not particularly methodical  but that’s just not how my brain is working right now.

I took another look at your front page, noticed the emphasis on bifido bacteria, and the suggestion to eat sesame.

1) I also noticed the suggestion to eat two apples a day.

2) One thing I have known for a couple of years is that I feel better if I eat a lot of beef. Because it is supposedly not good to eat too much and especially because it is very expensive, I try to get around it by eating fish, eggs, lamb (weirdly, lamb is less expensive than beef currently) etc.

On this particular day, last week, I could not walk a block, or upstairs in my house, without feeling out of breath. This came on several days of needing to rest, etc., and probably an insidious onset for several months. There was some family stress, plus I was sick with three different viruses between the end of December and February and  I was panicked that I was going to go back to my 2015 level of being sick.

I didn’t think I could  physically make it to the store to buy the sesame and apples so I called a friend to help me but she was leaving town. So…

After not having  beef much at all for a few weeks, I ate a couple of large beef Polish sausages and that perked me up mentally and physically  enough to go to a couple of different stores for what I needed.

Then because I was hungry, I did something impulsive which is buy a bag of candied pineapple at the produce store and eat the whole thing. I instantly felt energized and euphoric and figured it was the sugar.

When I got home I ate a quarter cup of organic sesame seeds and an apple. 

I continued to feel energetic and euphoric all evening without a crash.

That was about three days ago. Since then I have reverted to what I was doing food-wise when I felt my best, a couple of years ago. For breakfast, every day for now, stir-fried beef w/ sesame seeds, a huge serving of purple cabbage cole slaw, broccoli, and an apple. Later in the day, dark chocolate, almonds, more apples, coleslaw, and broccoli.

Meanwhile I am also taking (and have been) turmeric, bromelain, nattokinase, and NAC, plus meds for allergies / asthma and an antidepressant, plus dark chocolate and almonds. 

What I have read since then is that

* pineapple is one of the foods highest in seratonin, though of course dietary seratonin does not cross the blood-brain barrier.  
* Sesame is one of the foods highest in precursors to glutamate and seratonin.
*Apples help with acetylcholine.

I can’t explain the beef. I know it’s high in B12 but I’ve been supplementing that anyway, so eating beef shouldn’t make a dramatic instant difference.  I know it’s high in iron but I have had my iron tested again and again and it’s always good.  What I will say is I often feel extraordinarily well after I eat it, sometimes like…this will sound weird…my blood is singing.

Thinking about this reminds me of a time when I was about 30, I had been eating a pretty much vegetarian diet and not much pasta, and I went home to visit my parents and had a huge dinner of spaghetti with meat sauce. My drive on the way home was the first time I had experienced the “singing blood” and I attributed it to the carbs in the pasta but now I think it was probably the beef in the sauce, since I hadn’t had beef in a long time. 

There is something with those things that make me feel better *immediately*. For the past several days I have had a TBS of sesame seeds a few times a day and I always feel better after — specifically, happier and more alert.
About 20 years ago, I went through a period where my health was really good – no allergy pills needed, no asthma meds, no antidepressants. As it happens, at that time, I lived in the part of the country I do now so I attributed it to different allergens than the former place. But it is also true that at that time, just because I like sesame and my husband was often out in the evening, I would sometimes just have a quarter of a cup of sesame for dinner, just because I liked it. Weird, I know, but now I wonder if that is the real reason why I felt so good during that period of my life.

Anyway, in closing, I want to say I think of you often with appreciation and have told a lot of people about you and I hope you feel better soon. And I am in the process of finally looking for a full time job after stopping work at the end of 2015…I will let you know how it turns out.

With much gratitude,

Bottom Line — some Research for me to do

This email definitely intrigued me. This lense will be explored in research over the next weeks. For the moment, you have a user’s experience to work from.

Data Science – Hunting for bacteria related to Symptoms

Some smart readers wrote saying that they are familiar with R but not the microbiome. This post is intended to kickstart them on a simple desired goal:

Which bacteria (or combination of bacteria) are associated with certain symptoms.

We have 240 symptoms and thousands of bacteria … oops, a big problem. We do not have a lot of microbiomes with symptoms list — so we are likely forced to deal with only the most common symptoms at present.

Information about bacteria is layered

A quick read on wikipedia on bacteria taxonomy may help. If you just grab the Taxonomy file, you will see the species counted in with it’s parent genus, who is counted in with family, etc… not the best scenario for analysis.

To simplify out matters, I have done extracts on each layer and dropped them at http://lassesen.com/ubiome/

So to load one layer, it’s just a few lines

library(tidyverse)
Species <-read_csv(“http://lassesen.com/ubiome/TaxonomyByspecies.csv&#8221;)
symptoms <-read_csv(“http://lassesen.com/ubiome/Symptoms.csv&#8221; )
samplesymptom <-read_csv(“http://lassesen.com/ubiome/SampleSymptom.csv&#8221;)
samplesWithTitle <- inner_join(samplesymptom, symptoms, by=”symptomId” )

Looking at this one, we find some 2,181 columns (species) and a sampleId (that matches that in symptoms).

From my prior post, you can see how we can get the most common symptom (symptomId=1,”General: Fatigue”) and then a list of sampleId with:

HasFatigue <-samplesWithTitle %>% filter(symptomId==1)

We need to only include observations that reported ANY symptoms, which is easy to do:

PeopleWithSymptoms <- samplesymptom %>% group_by(sampleId) %>% summarize(peopleWith=n()) %>% arrange(peopleWith)

Next we joins this with the level of taxonomy we wish to explore.

SpeciesWithSymptoms <-merge(PeopleWithSymptoms ,Species, by=”sampleId”)

We next put the sets together and set symptomId to 0 for those without fatigue. We have 47.5% of the records with Fatigue.

fulldata <- left_join(SpeciesWithSymptoms,HasFatigue,by=”sampleId”)
fulldata$symptomId =ifelse(is.na(fulldata$symptomId),0,fulldata$symptomId)
#We need to remove the symptom_name
drops <- c(“symptom_name”)
regdata <-fulldata[, !(names(fulldata) %in% drops)]

Picking the Model

I went with a simple linear model for the sake of illustration and toss everything at it!

test <- lm(symptomId ~ .,regdata)

We end up getting a rather long report back:

Where there is a + sign, it indicates increased risk of fatigue as the numbers of bacteria increases, -sign decreased risk of fatigue as the numbers of bacteria increases.

I can now redo it, picking just a few bacteria:

and then looking at the statistics, we see that there is no statistical significance for this relationship (we want to see a p-value < 0.001)

That’s it. No revelations — just an illustration of walking the path. All of the code for above is below.

library(tidyverse)
Species <-read_csv(“http://lassesen.com/ubiome/TaxonomyByspecies.csv&#8221;) symptoms <-read_csv(“http://lassesen.com/ubiome/Symptoms.csv&#8221; ) samplesymptom <-read_csv(“http://lassesen.com/ubiome/SampleSymptom.csv&#8221;) samplesWithTitle <- inner_join(samplesymptom, symptoms, by=”symptomId” ) HasFatigue <-samplesWithTitle %>% filter(symptomId==1)
PeopleWithSymptoms <- samplesymptom %>% group_by(sampleId) %>% summarize(peopleWith=n()) %>% arrange(peopleWith)
SpeciesWithSymptoms <-merge(PeopleWithSymptoms ,Species, by=”sampleId”)

fulldata <- left_join(SpeciesWithSymptoms,HasFatigue,by=”sampleId”)
fulldata$symptomId =ifelse(is.na(fulldata$symptomId),0,fulldata$symptomId)
drops <- c(“symptom_name”)
regdata <-fulldata[, !(names(fulldata) %in% drops)]
test <- lm(symptomId ~ .,regdata)

Doing a run with Phylum,

Phylum <-read_csv(“http://lassesen.com/ubiome/TaxonomyByPhylum.csv&#8221;) symptoms <-read_csv(“http://lassesen.com/ubiome/Symptoms.csv&#8221; ) samplesymptom <-read_csv(“http://lassesen.com/ubiome/SampleSymptom.csv&#8221;) samplesWithTitle <- inner_join(samplesymptom, symptoms, by=”symptomId” ) HasFatigue <-samplesWithTitle %>% filter(symptomId==1)
PeopleWithSymptoms <- samplesymptom %>% group_by(sampleId) %>% summarize(peopleWith=n()) %>% arrange(peopleWith)
PhylumWithSymptoms <-merge(PeopleWithSymptoms ,Phylum, by=”sampleId”)
fulldata <- left_join(PhylumWithSymptoms,HasFatigue,by=”sampleId”)
fulldata$symptomId =ifelse(is.na(fulldata$symptomId),0,fulldata$symptomId)
drops <- c(“symptom_name”)
regdata <-fulldata[, !(names(fulldata) %in% drops)]
test <- lm(symptomId ~ .,regdata)

We find statistical significance with 45% explained by the phylum.