Gas station without pumps

2019 June 30

Hip osteoarthritis is a pain in the butt

Filed under: Uncategorized — gasstationwithoutpumps @ 13:44
Tags: , , ,

As many of you know I stopped running in April after getting a diagnosis of hip osteoarthritis.  This week I went to see a physical therapist to see what I could do

  • to prevent further deterioration of the hip joint and
  • to learn to run without doing further damage.

The half-hour appointment cost me $503, which counts toward my insurance deductible, but no fraction of which is otherwise covered.  I was prescribed five stretching exercises to do daily to prevent further deterioration, but not given even a hint about whether I could run without doing further damage.  I’ll do the stretching exercises, but I’m considering not bothering with the followup appointments (one of which is already scheduled)—the price seems a bit too high for the small amount of information gained.

If I were on the UC Care health plan, rather than the UC Health Savings Plan, some of the physical therapy would probably be covered, but that plan would cost me an extra $337 a month (an extra $1101 a month while on leave without pay), so I’m still better off with the low-price plan that lets me save money in an HSA account.

So far, the best advice on running with hip osteoarthritis seems to be from https://nirunning.co.uk/should-you-run-with-hip-arthritis/:

If you have been diagnosed with mild to moderate hip OA, Apex Clinic recommends the following tips to help prolong your running life:

1) Reduce your land based running frequency to two or three times weekly and reduce the distance.

2) Substitute road running with running on a softer surface such as grass, bark, sand or treadmill where possible. The higher shock absorption of these surfaces is kinder to joints.

3) Change your running style to a forefoot to midfoot strike, to reduce the load coming upwards to the hip and reduce your stride length to reduce load.

4) Change to a maximally shock absorbing shoe and consider a shock absorbing insole. Whether shock absorbing insoles are effective or not is debatable, but we hear from runners that they appear to help.

(They have eight points to their recommendations—go to their site for the whole story.)

The big questions are

  • whether I can change my running style to a shorter stride and a forefoot strike and
  • whether that is enough to avoid further damage.

I suppose I can practice changing running style on a treadmill at OPERS, since I want to learn how to run on treadmill anyway—the only treadmill running I’ve done is a few minutes for my stress electrocardiogram test last December, and I felt unsteady on the treadmill, even when I had not gotten up to full speed.  I’d like to get more familiar with treadmill running so that the next stress electrocardiogram I get will be one where I can put out full effort without worrying so much about balance.

Thirty-seventh weight progress report

Filed under: Uncategorized — gasstationwithoutpumps @ 12:59
Tags: , , , , , , , ,

This post is yet another weight progress report, continuing the previous one, part of a long series since I started in January 2015.

Except for weeks when I’m making a deliberate effort to diet, my weight seems to increase about 7 pounds a year.

I’m now back to about the same weight as I was a year ago, but I’m going to try not to repeat last summer’s and last fall’s weight gains.

Because of the days (weeks!) I spent staying home grading, I only averaged 3.03 miles/day of cycling in June, and I’ve had to stop running (at least for a while, see Running hiatus), so my exercise level has been low.

As I said in last month’s report “The end of Spring quarter and the beginning of summer seem to be bad times for weight gain—I think that the heavy grading load results in less physical activity and more snacking. Then the lack of bike commuting kicks in and my level of physical activity drops even further.”

I’m still thinking of paying UCSC $22.84 a month to use the OPERS “Wellness Center”, so that I can do low-impact running-like motions (treadmill and elliptical machine).  (The rates go up to $30/month in September.)  I’ll probably check that out tomorrow.

 

2019 June 24

Readings about charity

Filed under: Uncategorized — gasstationwithoutpumps @ 19:33
Tags: ,
In Thinking about charity, I listed some references that my son sent that influenced his thoughts on charitable giving.  Now that my grading is done, I finally have time to read them.
This one is a fairly simple plea for doing expected-value calculations, but it does not provide any insight into the relative values of different outcomes, assuming that everything is trivial to quantify.

This argues that money is the unit of caring, and that professionals should give money rather than time to organizations (under the assumption that the division of labor with specialists doing what they do best is most efficient).  The post does not preclude volunteering time, but sees it as a pleasure for the donor that should be bought with hard currency.

There is some validity to the thought that a highly paid professional will do more good by working an extra hour at their profession and donating the extra income, rather than volunteering to do something less skilled that someone could be hired to do more cheaply. The author misses a few points though: 1) Salaried professionals do not generally earn more by working longer hours, so volunteering time may provide working hours that would otherwise be wasted on unpaid effort for some corporation. 2) For many people in semi-skilled trades and low-level office work, the extra income from working longer (after taxes and other deductions) is less valuable than their direct labor (thanks in part to underpayment in those fields). 3) Working continuously on the same things can lead to burnout and a shortened career, hence to less total money to give—a change of pace can be valuable for maximizing the total value of a person’s labor.

https://www.lesswrong.com/posts/3p3CYauiX8oLjmwRF/purchase-fuzzies-and-utilons-separately

This post suggests “I recommend that you purchase warm fuzzies and utilons separately.  Not at the same time.  Trying to do both at the same time just means that neither ends up done well.  If status matters to you, purchase status separately too!”

I think that this post had the main point that my son was trying to make—that it is more efficient to buy the different benefits of charitable giving separately.  The post identifies three benefits: warm fuzzies, status, and utility (though again it gives no real guidance in determining utility).  I identified a few other reasons for giving in Why charitable giving, but the basic notion that the different benefits are separable and may be most efficiently purchased separately is probably a good one.

This post makes a good argument for giving 10% of income more or less continuously, rather than delaying donations to the “wealth-distributing years” as university development officers refer to the post-retirement time of life.  They make a good argument for 10% being a reasonable target.

They do point out reasonable exceptions to the rule, but do not take into consideration reserves people should set aside for emergencies and for retirement (they are more focused on student debt and mortgages).  For people like me, whose salaries are much larger than living expenses and who have good insurance and liquid investments for unexpected expenses, the 10% guideline is a good one, but for people with little in savings, it may be better for them to delay charitable giving until they have adequate reserves—it is not efficient to give money and then need to have others give to you in order to survive.

Their guideline for retired people is also unclear: “People who have retired or partially retired (which we roughly define as having started to draw a pension) can join Giving What We Can and remain members for as long as they continue to donate at least 10% of their spending money.”  Their definition of spending money assumes an externally determined income (like a pension or annuity) rather than drawing down invested money.  Once one reaches 70½, the required minimum distributions from tax-deferred retirement investments may provide a reasonable definition of income, but there should probably be also a wealth-based, and not just an income-based component.

Overall, I felt that this post made a better case for effective altruism than the “lesswrong” posts.

This one argues for charitable giving over political action as being much more efficient use of time and money, and provides a rationale for the rather arbitrary 10% of income giving level recommended in the effective altruism community.

This post presents (and rejects) a utilitarian argument that animal rights are more worth funding than alleviating human suffering (because of the very much larger number of animals killed than humans).  It presents a bit of a reductio ad absurdum for utilitarian arguments about charitable giving, and those utilitarian arguments are the main basis of the effective altruism movement.

Some of the discussion in the comments of the post is also interesting.

This article discusses some rather silly arguments about “existential risk”—the risk of human beings going extinct—and points out the absurdity of calculating expected values of extremely high value events with extremely low probabilities.  Humans are extremely bad at dealing with very large and very small numbers, and our ability to estimate either large or small numbers is terrible.  As a result, the expected value (the product the badly estimated high value and the badly estimated low probability) can be almost anything.  Using this essentially arbitrary number as an input to a decision-making process is absurd.

The comments were again interesting, and I particularly liked one by Murphy:

Keep in mind that the “become a hedge fund manager” advice is based on the current situation where many charities have volunteers lining up to help while being strapped for cash.

In a world that already has many hedge fund managers channeling their money to the most effective charities but a lack of volunteers the most effective choice might be to volunteer.

If you imagine it as a market where the options all have some expected return, the rational thing is to invest in the cheapest item. This moves the price and the guy walking in the door behind you might look at the same market and see that the most effective choice is to invest in the next option which is now the cheapest.

I’m going to agree that I don’t buy arguments based on numbers of future people, I don’t believe in there being a moral incentive to maximize numbers of future people though future-suffering of people who have yet to exist I would attach some weight to. I don’t care if there could be a trillion people on earth, that’s not a goal in my mind but I do care if the grandkids of the current generation might live in misery.

This post argues against investing in politics, particularly for large-scale systemic change (man-vs-man instead of man-vs-nature problems).  The basic argument is that people, even intelligent people, have been historically very bad at making or attempting large-scale changes (the disastrous communist states resulting from Marxism are brought up as an example, as is the eugenics movement).  Focusing on smaller-scale incremental changes, where results are more predictable, is more likely to result in the desired net positive effect.

One comment on the post that I liked is

In some cases, I think it’s pretty obvious that there’s a market inefficiency in morality. The general reason for this is that I’m utilitarian and most people aren’t. Most humans have revealed preferences to care more about people close to them in time and space and mind-shape, all of which I reject. So it’s totally plausible that given my values, the most important interventions are massively underfunded.

There’s good evidence for this. Most Americans happily (or unknowingly) torture and kill dozens of animals every year. The total spending on existential risk reduction is a tiny, tiny proportion of what it would be if the world cared about humans a thousand years in the future as much as we cared about humans now. And the ratio of spending on local versus international charities speaks for itself.

That’s the more polite reason that I believe that there’s an inefficient market in morality. The less polite version is that most people aren’t strategic or selfless, and their implicit main motivation in morality is demonstrating that they’re trustworthy and generous. I think it’s pretty obvious that very few people are actually trying to help others in a cause-neutral way. So I think it’s very likely that I can “beat the market”, as it were.

I’m not a pure utilitarian, and I do care more about people close to me physically, genetically, or in terms of what they value.  I could probably cast my beliefs into the expected-value computations preferred by the effective altruism movement by assigning numeric values to different benefits for different people, but I’m not going to do that, because I don’t really accept the underlying utilitarian ethics.  (Also, the numbers would argue against almost all the local charitable giving I do, unless you consider the life of child at risk of malaria to be much less than a week of theater summer camp for a kid whose parents can’t quite afford it.)

Like Buck, I find So it’s totally plausible that given my values, the most important interventions are massively underfunded.”    I end up, however with a different set of charitable investments, because I have different values and a different basis for figuring out how to spend my money.  (Note: I still haven’t made up my mind what charities I’ll support this year, much less on an on-going basis, nor am I at complete odds with Buck—I’ll probably assign some portion of my giving to the sorts of charities Buck would support, but I’ll also be giving locally and to organizations that support culture and not just life.)

I noticed (after the fact) that the author of the post called out the same comment by Buck as particularly interesting.

This post argues for the value of having a community set a standard for how good one has to be to be considered a good person, and the economic argument for setting this level to try to maximize the goodness actually achieved.  The basic theory is that if most people are being good in order to meet society’s expectations, then setting the expectation too low results in little goodness, but setting the level too high results in many (most?) people not giving because they see the goal as unobtainable.  Setting a threshold somewhere where people are willing to strive to achieve it maximizes the goodness obtained.  Different thresholds (perhaps self-imposed) may apply to different people.
The post seems to be about letting people feel good about being “less bad” without requiring them to be saints in order to feel good.  It seems reasonable in principle, though the examples given did not resonate with me.  The discussion in the comments seem to wander off into random topics with little connection to the post itself.
This post presents two arguments: one in favor of diversifying charitable contributions (at least to some extent) and one that presents a simplistic utilitarian argument in favor of individuals finding the most effective charity for their values and donating everything that they are going to donate to that organization.
I don’t have a constant and consistent way of valuing charities—some I value for one thing some for another.  There is no one-dimensional scale (“utilons” is the term used in the effective altruism posts) that makes them comparable.  Multidimensional spaces are inherently unorderable.  Of course, if I am trying to decide on dollar amounts to give, the dollar scale is a simple one-dimensional scale, and so I need to make decisions on mapping incomparable benefits onto a linear scale.  But I don’t have a linear scale of “utilons” to work with (some effective altruists like to use quality-adjusted life years), and the optimal assignment of dollars is quite likely to be a mixture of different charities, each of which is aiming at a different dimension of the space.
This describes some of the groups at an effective altruism conference.  Some of them seem pretty weird to me (which is a strong statement from someone who has lived in Santa Cruz for 33 years).
This post explains why Giving What We Can recommends giving money to Against Malaria Foundation as the most cost-effective charity for reducing death of children and preventing suffering. Givewell also list Against Malaria Foundation as one of their top charities.
My post today is not intended to reach any conclusions—merely to provide some knee-jerk reactions to the effective altruism posts that my son sent me.  I don’t think I accept the premises of the effective altruism movement, and I still plan to give to a diverse range of charities, but I will take advantage of research done by organizations like Givewell and Giving What We Can to send some of my charitable contributions towards organizations they see as effective.

2019 June 18

Comparing fullgenomes.com with Dante Labs

Filed under: Uncategorized — gasstationwithoutpumps @ 23:58
Tags: , , , , ,

Now that my grading is done, I finally had some time to look at the whole-genome sequencing data I got from fullgenomes.com. I ordered the sequencing on 7 March 2019, shipped the spit kit on 13 March 2019, and got all the data by 3 May 2019.  Their price, $1175, for 30× whole-genome sequencing, is fairly typical of the direct-to-consumer sequencing outfits.  (Dante Labs is much cheaper, but a number of people have been unhappy with the slow or non-delivery of data.)

Here is a summary of what I saw in the fullgenomes snpeff.vep.vcf file:

There are 4906211 genotype sites.
Count by filter values:
	 . 	 4906211
By chromosome, the number of no-call, haploid, and diploid genotypes:
	 chr1 	 0 	 0 	 383857
	 chr2 	 0 	 0 	 390198
	 chr3 	 0 	 0 	 323097
	 chr4 	 0 	 0 	 348597
	 chr5 	 0 	 0 	 286416
	 chr6 	 0 	 0 	 297452
	 chr7 	 0 	 0 	 279633
	 chr8 	 0 	 0 	 240326
	 chr9 	 0 	 0 	 216318
	 chr10 	 0 	 0 	 247472
	 chr11 	 0 	 0 	 233892
	 chr12 	 0 	 0 	 224952
	 chr13 	 0 	 0 	 189629
	 chr14 	 0 	 0 	 150472
	 chr15 	 0 	 0 	 143682
	 chr16 	 0 	 0 	 146914
	 chr17 	 0 	 0 	 136966
	 chr18 	 0 	 0 	 136431
	 chr19 	 0 	 0 	 109775
	 chr20 	 0 	 0 	 125200
	 chr21 	 0 	 0 	 87210
	 chr22 	 0 	 0 	 83531
	 chrX 	 0 	 105204 	 12991
	 chrY 	 0 	 5979 	 0
	 chrM 	 0 	 17 	 0

By type of genotype, there are
	 CT 	 854737
	 AG 	 828712
	 AA 	 416556
	 TT 	 414670
	 CC 	 401031
	 GG 	 400383
	 DI 	 269235
	 AC 	 266527
	 AT 	 245779
	 GT 	 239801
	 CG 	 225762
	 II 	 176278
	 DD 	 46625
	 A 	 26598
	 T 	 26573
	 G 	 23312
	 C 	 23061
	 I 	 11656
	 *T 	 2890
	 *A 	 2522
	 *G 	 1757
	 *C 	 1746

I don’t know what the *T, *A, *G, and *C sites are.  The diploid sites on the X chromosome may be sites that have close homologs on the Y chromosome—close enough that mapping algorithms see them as being the same.

What I wanted to do first was to compare the fullgenomes data with the 23andme genotyping, like I had done with the Dante Labs data.  That turned out to be somewhat difficult, as fullgenomes called variants relative to the latest reference genome (gRCH38), while 23andme and Dante Labs both used the older (gRCH37 =hg19) reference genome.  That difference means that all the coordinates are different, so simple comparisons are difficult.

I have variant calls for the Dante Labs data on both the references using Google’s DeepVariant, so I could compare the Dante Labs calls (which I believe are done with the GATK pipeline) with the DeepVariant calls on the same data, and I could compare the fullgenomes calls with the DeepVariant calls on the Dante Labs data.

I can compare the Dante Labs data with the two variant callers, to see how much difference variant calling makes, and then compare the fullgenomes data with the DeepVariant calls on the Dante Labs data, where both the variant caller and the sequencing method differ.

dantelabs GATK                         |dantelabs-deepvariant
3499617 genotype_sites                 |5884795 genotype_sites                 
  chr   no-call haploid diploid matches|  chr   no-call haploid diploid mismatches
  chrM      0      21       0      0   |  chrM      0       0       0      0   
  chr1      0       0  267787 262884   |  chr1      0       0  446877   4556   
  chr2      0       0  287274 282806   |  chr2      0       0  459298   4145   
  chr3      0       0  240607 237530   |  chr3      0       0  367320   2822   
  chr4      0       0  261070 257783   |  chr4      0       0  400640   2868   
  chr5      0       0  212325 210325   |  chr5      0       0  327319   1827   
  chr6      0       0  204102 201254   |  chr6      0       0  318344   2616   
  chr7      0       0  203647 199384   |  chr7      0       0  350292   3857   
  chr8      0       0  183159 181044   |  chr8      0       0  280030   1902   
  chr9      0       0  148637 143697   |  chr9      0       0  257715   4696   
  chr10     0       0  177729 174246   |  chr10     0       0  295033   3087   
  chr11     0       0  174926 172444   |  chr11     0       0  275753   2256   
  chr12     0       0  165987 163409   |  chr12     0       0  269918   2286   
  chr13     0       0  133928 132587   |  chr13     0       0  199795   1215   
  chr14     0       0  111553 109462   |  chr14     0       0  178071   1979   
  chr15     0       0  103635 101314   |  chr15     0       0  169214   2201   
  chr16     0       0  107064 104448   |  chr16     0       0  194206   2398   
  chr17     0       0   89744  88302   |  chr17     0       0  166728   1300   
  chr18     0       0  100640  99358   |  chr18     0       0  154510   1143   
  chr19     0       0   75073  73488   |  chr19     0       0  146076   1415   
  chr20     0       0   73566  71604   |  chr20     0       0  131282   1844   
  chr21     0       0   52060  50356   |  chr21     0       0  101284   1595   
  chr22     0       0   45153  43796   |  chr22     0       0   84522   1248   
  chrX      0   74099    1801  73134   |  chrX      0   88863   84484   2496   
  chrY      0    1393    2637   1709   |  chrY      0    3098   43760   2020   
  chr1_gl000191_random     0       0       0      0   |  chr1_gl000191_random     0       0      99      0   
  chr1_gl000192_random     0       0       0      0   |  chr1_gl000192_random     0       0     976      0   
  chr4_ctg9_hap1     0       0       0      0   |  chr4_ctg9_hap1     0       0     263      0   
  chr4_gl000193_random     0       0       0      0   |  chr4_gl000193_random     0       0    1887      0   
  chr4_gl000194_random     0       0       0      0   |  chr4_gl000194_random     0       0    2374      0   
  chr6_apd_hap1     0       0       0      0   |  chr6_apd_hap1     0       0      24      0   
  chr6_cox_hap2     0       0       0      0   |  chr6_cox_hap2     0       0     383      0   
  chr6_dbb_hap3     0       0       0      0   |  chr6_dbb_hap3     0       0     284      0   
  chr6_mann_hap4     0       0       0      0   |  chr6_mann_hap4     0       0     798      0   
  chr6_mcf_hap5     0       0       0      0   |  chr6_mcf_hap5     0       0     132      0   
  chr6_qbl_hap6     0       0       0      0   |  chr6_qbl_hap6     0       0     960      0   
  chr6_ssto_hap7     0       0       0      0   |  chr6_ssto_hap7     0       0     812      0   
  chr7_gl000195_random     0       0       0      0   |  chr7_gl000195_random     0       0    3267      0   
  chr8_gl000196_random     0       0       0      0   |  chr8_gl000196_random     0       0      11      0   
  chr8_gl000197_random     0       0       0      0   |  chr8_gl000197_random     0       0       1      0   
  chr9_gl000198_random     0       0       0      0   |  chr9_gl000198_random     0       0    1866      0   
  chr9_gl000199_random     0       0       0      0   |  chr9_gl000199_random     0       0    7465      0   
  chr9_gl000200_random     0       0       0      0   |  chr9_gl000200_random     0       0       1      0   
  chr9_gl000201_random     0       0       0      0   |  chr9_gl000201_random     0       0      12      0   
  chr11_gl000202_random     0       0       0      0   |  chr11_gl000202_random     0       0      78      0   
  chr17_ctg5_hap1     0       0       0      0   |  chr17_ctg5_hap1     0       0     608      0   
  chr17_gl000203_random     0       0       0      0   |  chr17_gl000203_random     0       0     444      0   
  chr17_gl000204_random     0       0       0      0   |  chr17_gl000204_random     0       0      92      0   
  chr17_gl000205_random     0       0       0      0   |  chr17_gl000205_random     0       0    2874      0   
  chr17_gl000206_random     0       0       0      0   |  chr17_gl000206_random     0       0      13      0   
  chr18_gl000207_random     0       0       0      0   |  chr18_gl000207_random     0       0     100      0   
  chr19_gl000208_random     0       0       0      0   |  chr19_gl000208_random     0       0    2216      0   
  chr19_gl000209_random     0       0       0      0   |  chr19_gl000209_random     0       0     371      0   
  chr21_gl000210_random     0       0       0      0   |  chr21_gl000210_random     0       0      21      0   
  chrUn_gl000211     0       0       0      0   |  chrUn_gl000211     0       0    1967      0   
  chrUn_gl000212     0       0       0      0   |  chrUn_gl000212     0       0    1316      0   
  chrUn_gl000213     0       0       0      0   |  chrUn_gl000213     0       0     266      0   
  chrUn_gl000214     0       0       0      0   |  chrUn_gl000214     0       0    2159      0   
  chrUn_gl000215     0       0       0      0   |  chrUn_gl000215     0       0     129      0   
  chrUn_gl000216     0       0       0      0   |  chrUn_gl000216     0       0    8530      0   
  chrUn_gl000217     0       0       0      0   |  chrUn_gl000217     0       0    2138      0   
  chrUn_gl000218     0       0       0      0   |  chrUn_gl000218     0       0    1480      0   
  chrUn_gl000219     0       0       0      0   |  chrUn_gl000219     0       0    5820      0   
  chrUn_gl000220     0       0       0      0   |  chrUn_gl000220     0       0    1730      0   
  chrUn_gl000221     0       0       0      0   |  chrUn_gl000221     0       0     958      0   
  chrUn_gl000222     0       0       0      0   |  chrUn_gl000222     0       0    2193      0   
  chrUn_gl000223     0       0       0      0   |  chrUn_gl000223     0       0      12      0   
  chrUn_gl000224     0       0       0      0   |  chrUn_gl000224     0       0    3738      0   
  chrUn_gl000225     0       0       0      0   |  chrUn_gl000225     0       0   15234      0   
  chrUn_gl000226     0       0       0      0   |  chrUn_gl000226     0       0     257      0   
  chrUn_gl000227     0       0       0      0   |  chrUn_gl000227     0       0      80      0   
  chrUn_gl000228     0       0       0      0   |  chrUn_gl000228     0       0    1299      0   
  chrUn_gl000229     0       0       0      0   |  chrUn_gl000229     0       0    1080      0   
  chrUn_gl000230     0       0       0      0   |  chrUn_gl000230     0       0     409      0   
  chrUn_gl000231     0       0       0      0   |  chrUn_gl000231     0       0    1118      0   
  chrUn_gl000232     0       0       0      0   |  chrUn_gl000232     0       0    2148      0   
  chrUn_gl000233     0       0       0      0   |  chrUn_gl000233     0       0     433      0   
  chrUn_gl000234     0       0       0      0   |  chrUn_gl000234     0       0    2281      0   
  chrUn_gl000235     0       0       0      0   |  chrUn_gl000235     0       0    1224      0   
  chrUn_gl000236     0       0       0      0   |  chrUn_gl000236     0       0     131      0   
  chrUn_gl000237     0       0       0      0   |  chrUn_gl000237     0       0     493      0   
  chrUn_gl000238     0       0       0      0   |  chrUn_gl000238     0       0      19      0   
  chrUn_gl000239     0       0       0      0   |  chrUn_gl000239     0       0      80      0   
  chrUn_gl000240     0       0       0      0   |  chrUn_gl000240     0       0     696      0   
  chrUn_gl000241     0       0       0      0   |  chrUn_gl000241     0       0    1665      0   
  chrUn_gl000242     0       0       0      0   |  chrUn_gl000242     0       0      32      0   
  chrUn_gl000243     0       0       0      0   |  chrUn_gl000243     0       0     328      0   
  chrUn_gl000244     0       0       0      0   |  chrUn_gl000244     0       0      83      0   
  chrUn_gl000245     0       0       0      0   |  chrUn_gl000245     0       0     110      0   
  chrUn_gl000246     0       0       0      0   |  chrUn_gl000246     0       0      73      0   
  chrUn_gl000247     0       0       0      0   |  chrUn_gl000247     0       0     196      0   
  chrUn_gl000248     0       0       0      0   |  chrUn_gl000248     0       0      26      0   

  total     0   75513 3424104 3436364   |  total     0   91961 5792834  57772   

Count of types of genotype
   CT  696904                          |   CT  777273                          
   AG  696669                          |   AG  757560                          
   CC  358678                          |   CC  686562                          
   AA  319335                          |   AA  715299                          
   TT  320081                          |   TT  713424                          
   GG  358891                          |   GG  633290                          
   AC  172678                          |   AC  228469                          
   GT  173342                          |   GT  208315                          
   CG  178718                          |   CG  196041                          
   AT  148808                          |   AT  212648                          
   DD       0                          |   DD  249895                          
   DI       0                          |   DI  237611                          
   II       0                          |   II  176447                          
   T    18873                          |   T    22689                          
   A    18752                          |   A    22586                          
   G    19064                          |   G    20696                          
   C    18824                          |   C    20492                          
   I        0                          |   I     5271                          
   D        0                          |   D      227                          

DeepVariant makes a lot more calls (mainly because it also reports places where it decides that the genotype is homozygous reference, which GATK doesn’t report), but also because the GATK calls were filtered to remove the low-evidence calls, while DeepVariant was set up to report everything.
DeepVariant does a huge number of diploid calls on X and Y, which is a little suspicious.
The ratio of mismatches to matches is 0.01681, about a 1.65% discrepancy rate. I don’t know which of the genome callers is better on this data, but DeepVariant was supposedly better on some recent tests on autosomal chromosomes (I’ve not looked up the paper yet).

Comparing the Dante Labs DeepVariant calls with the fullgenomes calls (on gRCH38) shows a bigger difference:


dantelabs-deepvariant                  |fullgenomes snpeff.vep.vcf.gz
5508932 genotype_sites                 |4906211 genotype_sites                 
  chr   no-call haploid diploid matches|  chr   no-call haploid diploid mismatches
  chr1      0       0  443442 336398   |  chr1      0       0  383857  23983   
  chr2      0       0  434888 356031   |  chr2      0       0  390198  17928   
  chr3      0       0  355613 296731   |  chr3      0       0  323097  12684   
  chr4      0       0  380259 320989   |  chr4      0       0  348597  13450   
  chr5      0       0  316748 262579   |  chr5      0       0  286416  11314   
  chr6      0       0  299986 253300   |  chr6      0       0  297452   8599   
  chr7      0       0  314759 252073   |  chr7      0       0  279633  14099   
  chr8      0       0  259602 217907   |  chr8      0       0  240326   8761   
  chr9      0       0  242579 183556   |  chr9      0       0  216318  19382   
  chr10     0       0  280582 224653   |  chr10     0       0  247472  12447   
  chr11     0       0  256993 214312   |  chr11     0       0  233892   8491   
  chr12     0       0  252220 205678   |  chr12     0       0  224952   8601   
  chr13     0       0  209801 165921   |  chr13     0       0  189629  11023   
  chr14     0       0  161466 132483   |  chr14     0       0  150472   6803   
  chr15     0       0  154740 123209   |  chr15     0       0  143682   8381   
  chr16     0       0  169234 128717   |  chr16     0       0  146914   9197   
  chr17     0       0  158498 111002   |  chr17     0       0  136966  12128   
  chr18     0       0  150941 123100   |  chr18     0       0  136431   5881   
  chr19     0       0  129958  94953   |  chr19     0       0  109775   6398   
  chr20     0       0  147206  95398   |  chr20     0       0  125200  20597   
  chr21     0       0   94029  64558   |  chr21     0       0   87210  14591   
  chr22     0       0   93982  58824   |  chr22     0       0   83531  14887   
  chrX      0   93759   70714  96500   |  chrX      0  105204   12991  14629   
  chrY      0    2818   34115   2134   |  chrY      0    5979       0   3321   
  chrM      0       0       0      0   |  chrM      0      17       0      0   

  total     0   96577 5412355 4321006   |  total     0  111200 4795011 287575   

Count of types of genotype
   CT  761277                          |   CT  854737                          
   AG  741910                          |   AG  828712                          
   AA  636195                          |   AA  416556                          
   TT  635850                          |   TT  414670                          
   CC  609922                          |   CC  401031                          
   GG  557555                          |   GG  400383                          
   DI  234030                          |   DI  269235                          
   AC  224266                          |   AC  266527                          
   AT  209513                          |   AT  245779                          
   GT  204389                          |   GT  239801                          
   CG  192211                          |   CG  225762                          
   II  173913                          |   II  176278                          
   DD  231324                          |   DD   46625                          
   A    23799                          |   A    26598                          
   T    23687                          |   T    26573                          
   G    21821                          |   G    23312                          
   C    21561                          |   C    23061                          
   I     5438                          |   I    11656                          
   *T       0                          |   *T    2890                          
   *A       0                          |   *A    2522                          
   *G       0                          |   *G    1757                          
   *C       0                          |   *C    1746                          
   D      271                          |   D        0                          

Now the ratio of mismatches to matches is 0.06655, a 6.2% discrepancy rate. A few of the discrepancies were haploid/diploid differences on chromosome X, but that is only about 1100 differences. None of the mismatches involve the weird *A,*C,*G, *T genotype calls.

I do have 4,321,006 genotype calls that I am now pretty confident of, as they were called by two different variant callers from two different sequencing runs using different sequencing technology.

But I’m not sure which data set or variant caller to favor on the 287,575 disagreements, nor what to do about the locations where one variant caller made a call for a site and the other didn’t. The fullgenomes data includes a gVCF file, which has calls for every base that got reads mapped to it, but I’ve not tried extracting data from that format yet (it’s bad enough having to try to extract data from the two different vcf formats).

I was planning to compare the 23andme data with each of the whole-genome vcf calls, making the assumption that the sequencing and variant caller that agrees most with the hybridization-based genotyping by 23andme would be the most accurate. (I also want to make a revised “23andme” data set that replaces any genotyping calls where both whole-genome sequences agreed with each other, but disagreed with 23andme.)

To make this all work, I need to have all the variant calling be relative to the same reference genome, which means either lifting Dante Labs and 23andme to gRCH38 or reversing that and moving the fullgenomes vcf files to gRCH37. I could also try having Kishwar do the DeepVariant calls on both reference genomes for the fullgenomes data.

I’ll need to think a bit about what would be most useful.

2019 June 17

Grading done!

Filed under: Uncategorized — gasstationwithoutpumps @ 16:04
Tags: ,

I’ve just finished about 3 weeks of all-day 7-days-a-week grading, and I’ve filed my grades for the quarter.  I’m now ready for a 6-month break before I start grading again.

This past week has been particularly stressful, as our water heater failed (again) on Tuesday, and I had to find a decent plumber as well as making doing with cold showers for a week.  The new water heater should be installed tomorrow.

I now have time to think about what I’ll try to get done this summer and fall, both personally and professionally.  Here is a partial to-do list, in no particular order:

  • Review senior portfolios for about 50 graduating seniors.
  • Rewrite the Applied Analog Electronics textbook.  I have about 161 to-do notes left in the book from teaching the last two quarters—some from student comments, some from observations made while grading.
  • Read the Student Evaluation of Teaching forms for both quarters and think about how to improve the class based on them.  This will probably require a beer or two, as I know that some of the students really hated the class (based on anonymous comments on Piazza).  I’ll wait on that until my stress level has gone down a bit, or I won’t be receptive to even the good ideas.
  • Design a senior project involving testing hearing aids—perhaps contacting faculty at the hearing-aid research center at DTU.  Maybe visit DTU in Copenhagen?
  • Visit my dad in Boulder.
  • Get a new range hood installed (I promised this to my wife last summer).
  • Get a new refrigerator (the old one is rusty and the interior light doesn’t work)
  • Get a new desktop computer and monitor—perhaps a Mac mini?
  • Remove the ivy and blackberry vines in the backyard (that is a never-ending project, as the vines have covered about 50′ by 20′ to almost head height)
  • Clean solar panels
  • Fix my desk lamp (the one I made)—the copper tubing has suffered from metal fatigue, partly as a result of the cat playing with it and bending it over.  I’m trying to decide between remaking the copper supports (out of copper tubing again) or soldering on copper pieces to splint the fatigued part.
  • Mow the front lawn (easy! I can do it in an hour or two next weekend)
  • Mow the back lawn (probably impossible)
  • Sort all my old screws, bolts, and nuts by size and put them in accessible storage boxes.
  • Clear the breakfast-room floor of electronics, magazines, catalogs, … that have accumulated while I was grading.
  • Clear the bedroom floor of hardware, books, magazines, and stuff that has accumulated over the last decade.  But where will I put it all?
  • Replace the soap dishes in the bathroom (I like the design of one that has cracked, but I can’t find another like it).
  • Hire someone to haul the truck load of debris on my driveway to the dump.
  • Get an architect to design wheelchair access to my house (I don’t need it, and hope I never will, but I’d rather it were in place before I need it).
  • Get a new gate designed, built, and installed on the driveway.  The old one rotted away, so I’m thinking of going with concrete pillars and a steel gate this time, instead of redwood.
  • Clean solar panels.
  • Clear leaves, twigs, and dirt out of gutters.
  • Install path lights, if I can find any that look decent.
  • Get my annual eye exam (6 months overdue).
  • Get a physical therapist or sports-medicine specialist to advise me how to run without exacerbating my hip osteoarthritis.
  • Join a gym and learn to use fitness equipment (for example, I’d like to learn to run on a tilted treadmill, so that I can do a stress echocardiogram test without fearing for my balance).
  • Repaint the garage door (scrape, sand, prime, paint)
  • Paint the book room door.
  • Fix or replace garage-door opener.
  • Spot sand and apply Danish oil to wood floor where old finish has worn away.
  • Do some robotics—perhaps continuing work on the bot I started for the mechatronics class, perhaps a balance bot, perhaps making a board for precisely positioning the gear motors that I have, perhaps a drawbot, perhaps a true digital clock with mechanical digits.
  • Find something useful to make with my 3D printer.
  • Do some weaving—I’ve not woven in over a decade, but I still have a lot of yarn and looms taking up a big chunk of the house.
  • Figure out what charities (or political organizations) to give more money to.
  • Look for something interesting to do with other people once I retire (most of my hobbies are solitary).
  • Brew a batch of mead (I’ve not made any since the Loma Prieta earthquake in 1989).
  • Improve documentation for PteroDAQ.
  • Port PteroDAQ to new processors?
  • Temperature-compensated VCO.
  • VCO using one op amp and one FET (is it even possible?)
  • Torque-measuring rig for small gear motors.  Both stall torque and torque vs. speed.

I’m sure I’ve left a dozen things off that list, but there is no way I’ll get even half of it done in the next six months anyway.

Next Page »

%d bloggers like this: