Skip to content

MooersLab/MooersLab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation

Version License: MIT

MooersLab

Quick Links

Introduction

This site contains the public repositories of the Dr. Blaine Mooers Lab, Department of Biochemistry and Physiology, College of Medicine, University of Oklahoma Health Sciences, Oklahoma City, Oklahoma, USA. My lab determines the structures of biological macromolecules and their complexes with drugs, mainly using X-ray crystallography and sometimes small-angle X-ray scattering](https://en.wikipedia.org/wiki/Small-angle_X-ray_scattering), a method that does not require crystals. We grow crystals using advanced experimental design methods and collect X-ray diffraction data in-house and frequently at the Stanford Synchrotron Radiation LightSource and sometimes at the four other significant light sources in the US. We also do structure-based drug design using supercomputers.

We are not computer scientists; we leave the heavy-duty coding to the professionals. However, we write code occasionally to help advance our science and the science of others. We have developed software tools to ease the writing of PyMOL scripts to make molecular images. These tools are available for the top 19 text editors and the Jupyter, Colab, and R Markdown notebooks. These text editors can make your work lighter and have many wonderful features, but Emacs is our favorite because, thanks to Emacs Lisp, it is the most customizable text editor. However, we caution that one must take a disciplined approach to Emacs, a tinker's paradise.

We often use the web service called Overleaf to write manuscripts, grant applications, slideshows, posters, and lab notebooks in LaTeX. We spent five years trying the alternative Markup languages. This was before I became aware of Overleaf, which made working with LaTeX much easier. Some of our LaTeX templates are in the repositories found here (see the section on LaTeX below).

Overleaf is a great way to get started with LaTeX. However, Emacs provides access to more powerful editing features. You can use GhostText to send a page from Overleaf to Emacs for editing. Nonetheless, Overleaf is great for collaborative writing. When using Chrome or Microsoft Edge, you can use the Voice In plugin for Google Chrome to dictate prose in Overleaf.

We are also fans of Jupyter Notebooks. Something inexplicable about Jupyter Notebooks makes coding in them fun. We have developed tools for working on Jupyter with PyMOL and CCTBX. Jupyter Notebooks may be frustrating for those without at least some formal training in computing. You must always be aware of your computer's state, or at least the state you expected it to be in. Those who lack this awareness will run into a lot of trouble.

We also like R Markdown notebooks. Although somewhat less interactive than Jupyter notebooks, these are simpler to put under version control, and they support custom libraries of code snippets with tab triggers and tab stops. The RStudio IDE provides excellent support for R Markdown notebooks. You can have the best of both worlds by editing R Markdown notebooks in Emacs and using the reticulate package to harness Jupyter kernels to run Python inside the notebook.

We code in mainly in Python but sometimes in Bash, R, Clojure, Elisp, Julia, Fortran, and C/C++. It is hard to be a polyglot programmer due to limitations on mental bandwidth.

Our repositories are grouped by category. Some repositories are listed in several categories. This listing is still a work in progress. Some repositories still need to be added to this page. Seventeen repos are forks to other people's repositories. Visit the repositories tab to see the complete list of repositories.

In the spring of 2023, I started a MooersLab site on Codeberg. A foundation runs Codeberg and has 13 years of funding. Some repositories on GitHub get mirrored on Codeberg.

If you like a repository, please click on the star in the upper right.

Index of repositories

ACA talks

Bash related

Bayesian Data Analysis

Blog

Clojure

Crystallographic computing

CCTBX related

For use in notebooks

  • Jupyterlab cctbx snippets CCTBX snippets for JupyterLab with the jupyterlab-snippets extension or the jupyterlab-snippets-mutlimenus extension.
  • Jupyterlab cctbx plus snippets The variant of the jupyterlabcctbxsnips library with comments to guide editing of the snippets.
  • Tagged cctbx snippets The variant for the Elyra-snippet extension for Jupyterlab. The snippets have tags in their metadata that can be used to retrieve code snippets.
  • Tagged cctbx plus snippets The variant for the Elyra-snippet extension for Jupyterlab. The tab stops in a comment block to guide the editing of the live snippet. The snippets have tags in their metadata that can be used to retrieve snippets.
  • Colab cctbx snippets Colab snippets.

For use in text editors

Curve-fitting software

Design of Experiments (DoE) [See Experimental Design below]

Emacs related

Today's Emacs is not your grandfather's Emacs. The median age of an Emacs user is 32, not 77, as you might expect for users of an editor that is about 40 years old. This is due to a very active community of young users centered around several YouTube channels, Emacs Lisp being well-designed to customize Emacs, an online annual conference, the popularity of org-mode, and a welcoming community of developers. Elisp was first used in Emacs 19 in 1985, with the GNU Emacs 19.3, about ten years after the project's start.

It should be noted that Emacs is single-threaded. This is a significant limitation. One group has started a project called lem that uses Common Lisp to build a multithreaded text editor similar to Emacs. Unfortunately, lem is not really user-ready in our experience. Perhaps, Emacs users will migrate to lem someday. In the meantime, it is worth continuing to use Emacs, knowing that a multithreading alternative is under development.

The Emacs project is open-source and run by several hundred volunteer core developers. The project runs by consensus. There is no succession issue. The project's benevolent dictator for life stepped down about 15 years ago. After doing so, an explosion of creativity occurred.

According to the Lindy effect, it is likely that Emacs will remain in use for another 50 years. Exposure to elisp coding in Emacs leads some to pick up other languages in the Lisp family, including Clojure. This, in turn, leads them to understand programming more deeply.

Jupyter and Colab related

Jupyter and PyMOL

PyMOL can be run in Jupyter via PyMOL's Python API.

Snippet libraries for direct use in Jupyter

Multiple extensions for Jupyter support the use of snippets. However, the support does not include tab stops nor tab triggers, two standard features of snippet support in modern text editors. The libraries with plus at the end of their name have a second copy of the code in a comment. This copy is marked with the sites of the tab stops where you might want to change the parameter value from its default value.

Classics Notebook

PyMOL Python snippets for use in the Classic Jupyter Notebook with the snippets_menu notebook extension.

JupyterLab

PyMOL Python snippets for use in JupyterLab with the jupyterlab-snippets extension.

PyMOL Python snippets for use with the elyra-snippets extension and with PyMOL. These snippets can be retrieved with tags in the elyra-snippet GUI.

Snippet libraries for using external editors of Jupyter notebooks

These editors work in Jupyter Notebooks via the GhostText browser plugin.

Demo of GhostText with Jupyter and Emacs

Colab and PyMOL

CCTBX specific

Experimental design

Experimental designs for crystal growth

We provide easy and fast-to-deploy experimental designs for crystallization setups in Excel workbooks. These designs take three minutes to customize for your experimental needs. Plots of the results against factor level for each factor are automatically generated, thereby saving the users many hours of tedious coding of the plots of the data for each crystallization tray. These workbooks could be adapted to other kinds of experiments.

The OFAT experiments are often used to screen for active factors. The active factors can then be used in DSD designs to find the optimal conditions to return large crystals. OFAT experiments are inappropriate for this objective because they do not measure interactions between factors. Factor interactions are quite common in the crystallization of proteins.

The DSDs tend to be limited to three active factors because of their small size and weaker statistical power. Larger traditional response surface method designs (RSM) should be used if more factors are suspected of being active or if two or more interactions are expected. DSD can be thought of as a subset of RSMs. Their small size is attractive for protein crystallization where the sample is expensive and scarce. The small size of DSD experiments opens up the possibility of replicating these experiments to get a measure of the variance.

Voice In Plus voice-triggered snippets

LaTeX related

Until recently, I wrote a lot in Emacs on 750words.com via GhostText. I configured the atomic-chrome package for Emacs to go into LaTeX mode when GhostText connects to 750words. I can also use Emacs to write and edit text in Overleaf via atomic-chrome and GhostText. This is a very cool way to extend Emacs to websites that have weaker support for editing text.

Now I use voice-to-text to dictate in 750words.com or Overleaf. I use voice commands to insert snippets containing LaTeX code. See the section below.

If you do not have extensive experience writing in a markup language like HTML or Markdown, you should probably start with one of the flavors of Markdown to become productive as fast as possible. Many of the ideas behind the typesetting program markdown will transfer over to LaTeX. Markdown is easy to use and highly intuitive. Mastery of Markdown will provide you with a fallback system to utilize should you get stuck when compiling a LaTeX document. The latter is a common experience for beginning users of LaTeX.

What about MyST?

MyST expands to Markedly Structured Text. MyST is an enhanced version of Markdown being developed to interface with Jupyter notebooks and support their utilization in scientific publishing. You can export files to LaTeX, MS Word, and PDF.

MyST is part of the dream of converting Jupyter into a literate programming platform and supporting the conversion of scientific Publications into highly extensible documents. You can edit MyST files in the newer versions of Jupyter Lab and any text editor.

It provides a preview in your default browser that is updated each time you save the main.md file. The lovers of HTML are wowed by this feature.

There are live preview extensions available for Emacs, Vim, and VS Code. It feels like an underdeveloped version of org-mode, which had all the export capabilities over a decade ago. It may be more analogous to the well-planned, lean, and efficient R Markdown for the R programming world.

What about RestructuredText and Typst?

These markup languages are more powerful than markdown. However, very few publishers will accept the source files for these markup languages. You may be able to submit the PDF generated by one of these systems on your first submission. However, you will be stuck transferring the contents of your file to MS Word or LaTeX.

Typst is the new shiny object. It compiles many times faster than LaTeX. It essentially provides a live preview. It also utilizes a more computer programmer-oriented approach to typesetting. The syntax that it uses is more modern and somewhat more compact.

I think that it might still be easier for computer programmers to adopt typst than nonprogrammers. Writers who are not computer programmers are still going to have a much easier time mastering Common Markdown. The next step in markup systems will probably still be the LyX editor, which offers a what you see is what you get approach to using LaTeX. Typst is an exciting project that is worth watching, but that is too early for me to adopt it for all of my writing workflows

Links to LaTeX-related repositories

  • LaTeX bare-bones template file This template is for people who want to make a simple document without a lot of bells and whistles.
  • LaTeX tips
  • Configuration for Emacs30 to support structured editing
  • latex-emacs29 configuration A configuration file enhancing the use of LaTeX in Gnu Emacs version 29. This is the current release version of Gnu Emacs. Includes org-mode configuration.
  • latex-emacs28 configuration Similar to above but for Gnu Emacs version 28.
  • latex-emacs30 configuration Similar to above but for Gnu Emacs version 30.
  • Slides about workflow in LaTeX presented to the Berlin Emacs Meetup August 2022. Not recorded. It was a 90-minute lecture.
  • slideshowTemplateInLaTeX Slideshow template with use with the LaTeX package Beamer that supports the making of slides. Our templates make slides that do not look like they were made in LaTeX because we hide the navigation icons that no one ever uses and replace the triangles in bulleted lists with round bullets. Our slides look like they were made in PowerPoint.
  • posterInLaTeX Uses beamer to make a poster via a simple design. Enables whipping together a poster in a few hours. It is much easier than using a gaint slide in PowerPoint. Our approach is also saner than the default approach to making a poster with Beamer.
  • LaTeX manuscript template Generic template for the first submission as a PDF.
  • Writing log template in LaTeX Place to track progress and plans behind a manuscript.
  • Annotated bibliography template in LaTeX Every writing project needs one of these. These are grossly underutilized. They are good for recalling the relevant features of a paper.
  • Diary for 2024 in LaTeX Designed for use on Overleaf.com but can compile locally. Each day is a section. Each month is a chapter. Has an automatically generated index (most markdowns cannot generate indices). Very feature-rich and ready to use. Makes a great electronic scientific notebook because it is searchable and indexed. > 1000-page document at the end of the year compiles to PDF in under a minute on Overleaf.
  • snippets for latex-mode in Emacs My LaTeX code snippets for yasnippets.
  • The writer's creed Guidelines for greater productivity as a writer.
  • bib2item3 Python script to convert bibtex.bib file to bibitems in tex file format. Bibitems are required by some publishers. They are a pain to create manually.
  • LaTeX Voice In Plus library Speech-to-text commands for inserting LaTeX markup.

Literate Programming

See the sections on Org-mode and Jupyter and Colab.

Molecular Graphics Related

Collection of links for a 15-hour course on Molecular Graphics

PyMOL

  • pymolrc My pymolrc file.
  • pymolsnips A large collection of PyMOL macro language (pml) code snippets. It contains a link to a webpage with extensive instructions on installing 19 text editors.
  • pymolshortcuts A large collection of functions mapped to aliases or shortcuts. This collection of functions is very useful for non-coders.
  • EasyPyMOL Support for horizontal scripting in PyMOL.
  • orgpymolpysnips Support for generating computational narratives (literate programming plus interactive computing) in org-mode with PyMOL.
  • rstudiopymolpysnips Support for literate programming in Rstuido with PyMOL.
  • taggedpymolpysnips Support for literate programming in JuptyerLab with tagged snippets with the elyra-snippets extension and with PyMOL.
  • jupyterlabpymolpysnips PyMOL Python snippets for use in JupyterLab with the jupyterlab-snippets extension.
  • jupyternbclassicpymolpysnips PyMOL Python snippets for use in the Classic Jupyter Notebook (invoked with jupyter nbclassic with Jupyter Notebook version 7).
  • colabOpenSourcePyMOLpySnips PyMOL Python snippets for use in Colab with open source PyMOL.
  • colabPyMOLpySnips PyMOL Python snippets for use in Colab with the incentive version of PyMOL.
  • PyMOL wall hangings Protocol for making oversized images to be framed and hung on a wall.

Python

See the sections on PyMOL, CCTBX, and Jupyter and Colab. Python is in many repositories.

R statistical program

Small Angle Scattering

Time management

  • TimeBlocks Form for daily scheduling with time blocks.
  • TimeSpent Time tracking by project with Google Sheets.

Supercomputing related

Includes high performance computing (HPC), cluster computing, and cloud computing.

Vim (and Neovim)

Voice Computing

Voice computing can be divided into three activities:

  • speech-to-text (dictation)
  • speech-to-commands
  • speech-to-code

Speech-to-text is the easiest to master, the most widely applicable, and the most effective way of enhancing academic productivity.

The video below is an example of using a voice trigger to insert a chunk of LaTeX code that I use to plan each day. It is inserted after saying insert start day. You can easily make your own markdown variant customized to be meet your needs. I am using the Voice In Plus software in Google Chrome. It also works in Microsoft Edge. It uses the built-in Speech-to-text software in the web browser on your local machine so latency is not much of an issue.

Index of subsections

Review of the software that I have used

My sampling of the available -related software is highly skewed towards the Mac operating system and Google Chrome. I have yet to complete a comprehensive survey of the software available for Windows, Linux, and other browsers. If you are a user of such systems, then the review below will give you a taste of what may be available for these other operating systems

Voice Typing is widely available through Google Docs. It is more accurate than the Voice Control that comes with the Mac and MS Word. Voice Typing supports almost 100 voice commands but does not support custom commands.

Voice In Plus has similar accuracy to Voice Typing with the addition of custom commands. I use the latter every day for dictation for first drafts. I do the rewriting using the keyboard.

OpenAI's Whisper may be an order of magnitude more accurate. It has a latency issue, so live transcription and interactive editing is difficult. It is also not easy to fine-tune with custom commands.

My primary use of Whisper is for transcribing audio files. I provide Python scripts to correct the initial transcript. These corrections include expanding contractions. This code also supports inserting simple commands like new paragraph during dictation because whisper does not know how to break up a transcript into paragraphs.

A very new use of Whisper for me is inside Emacs. I had been aware of its availability for four months. After my third attempt, I finally figured out how to run Whisper in Emacs via the whisper.el package. The package automates compiling the whisper.cpp software and downloading the Whisper LLM. You record a local audio file of your dictation, and then you transcribe that audio file into text that appears in the current buffer in Emacs. The M-H r keybinding starts the audio recording, and the C-u M-x r keybinding transcribes the audio file. Here, H is for the Hyper key; I have it mapped to the righthand command key (alt-key) on a non-Mac keyboard.

The natural unit of dictation with whisper.el seems to be the paragraph. This form of dictation is less interactive than Voice In Plus where you can use the keyboard to edit the currently dictated sentence. I have yet to figure out the elisp code to apply my text replacements in the transcription step.

The Superwhisper. app for the Mac is interesting. It supports dictation in e-mail and elsewhere. Its support for custom commands is limited; it still needs to support bulk uploading of text replacements before it will interest me. You have to pay a subscription fee to access all its features. Its features may appeal to people with numerous electronic devices that need to be synced with their main computer.

Talon Voice supports all three activities, but speech-to-text accuracy needs to catch up to Voice Typing and Voice In Plus in my experience. I am currently using Talon Voice for the last two activities. I plan to increase my use of Talon Voice for dictation.

The Talon Voice software is designed to be used by non-coders. It can be configured with Talonscript files that have a simple syntax that is a subset of Python. You can customize Talon Voice extensively using the Talonscript files without writing any Python code.

Voice computing supports extending your productivity when you get tired of typing. Voice computing also supports issuing commands and dictating text while standing. Voice computing could be a cure for the envy of those colleagues who have standing desks. You can speak commands to your computer while standing 20 feet away from it and looking out the window. You can give your body and eyes a break from sitting and staring at the computer screen while remaining productive.

Word Counts before and after adopting Voice Computing

I have seen a three-fold increase in the total number of words captured in September and October 2023 compared to June and July 2023 before I took up speech-to-text in mid-August 2023. I have had the same amount of out-of-town travel during the first two periods. I did not make a conscious effort to capture more words per day.

HTML5 Icon

On the day after Thanksgiving in 2023, I generated almost 12,000 words. I made a concerted effort to generate at least 5,000 words a day from that point to just before Christmas. Then family obligations reduced my daily word generation. Nonetheless, I had a five-fold increase in the total word count for November and December. A six-sevenfold increase may be possible. A five-fold increase in word count may be more sustainable if you consciously try. A three-fold increase is more realistic with all of the disruptions from doing experiments, administration, teaching, service, and work-related travel.

The slight decrease in word count after the new year may reflect a shift in my focus toward turning more of my writing into publishable products. This decrease may reflect more effort focused on editing text.

I was surprised that there was not a more significant decrease. I may have compensated by using a digital voice recorder (DVR) in mid-January 2024 during my 25-minute commutes to my office. Much of my mutterings are rubbish that I wind up deleting. I occasionally harvest useful thoughts that I retain. I also use the DVR to paraphrase some technical documents that otherwise might be quite tedious to read. The DVR has extended my generative writing time by 30-60 minutes daily.

Spending more time on rewriting will lead to fewer new words generated if the time spent on writing is constant. Rewriting is very time-consuming; it can take as much or more time as generating the text initially. Text written for grant applications and articles will take even more time because it needs to be highly polished. Sufficient time has to be scheduled for it. I plan to spend more time rewriting, so you can expect the new words generated in the next bimonthly reports to be further reduced.

What about Mac's Dictation and Voice Control software?

One alternative is to use the built-in Dictation software for Mac. Four months ago, the Mac dictation software was worse than the alternatives, like Voice In. I tried it again on March 22, 2024, The error rate is now reduced enough to make it very competitive.

Its advantage is that it can operate anywhere. It works inside Emacs and on webpages, including webmail applications like Outlook and Gmail. Its disadvantage is that it cannot be customized with text replacement libraries.

The Dictation software relies on an internet connection for older Intel chip-based Macs. The generated sound waves are sent to a server run by Apple and then returned as text. I found the delay caused by this transfer to be unnoticeable.

Sadly, the Voice Control software provided by the Mac OS has not improved its performance since I last tried it. Its error rate is too high to use for dictation. The advantage of this software is that it supports customized commands.

Whisper and a Digitial Voice Recorder

We use open-AI's whisper software to transcribe my audio recordings recorded with the DVR. The software is wrapped with Python. I wrote some Python code that reformats the transcript to make it easier for me to edit. I programmed a text replacement called a new paragraph to introduce breaks between paragraphs because the Whisper software does not automatically identify these breaks. I am using Python to make my own text replacement software. I use this to add commands like the one above and to replace frequently misinterpreted words. The approach I am taking with this software is a little more cumbersome than the very easy approach taken by Voice In Plus.

In addition, I reformat the text such that each sentence is written on its own line. This greatly eases the subsequent deletion of lines containing rubbish. You can advance to the next line with the down arrow key in most text editors. If the line is one to be deleted, you enter control k.

I did carry out dictation for much of an eight-hour drive that I took from Oklahoma City to Austin, Texas, to attend the PyTexas annual meeting. I spent part of this time rehearsing various portions of my talk from memory.

The traffic on Interstate 35 in Texas is worse than in Los Angeles. People are tailgating each other at 75 to 80 miles an hour. There were also some crazy people who weaved between the three lanes. There are electronic billboards every mile, even in very rural settings, that warn you of the potential death if you are tempted to talk on your cell phone or text while driving. This was the most stressful five hours of driving I have ever done. It was a white-knuckle experience. On my return trip, I took peaceful secondary highways through the Hill Country northwest of Austin up to Wichita Falls, and past the Wichita Mountains west of Lawton, Oklahoma. This trip took an equivalent amount of time as the outbound journey, although it covered a greater distance.

The battery in the digital voice recorder was sufficient for each trip. The battery is supposed to be good for up to 30 hours of recording. Each audio file took over an hour for whisper to transcribe. The resulting transcripts require a lot of editing; I had yet to complete these tasks. There were some tidbits that I have extracted from the transcript that were worth recycling. These partly edited transcripts from this trip were not included in the word counts for March and April.

The favorable experience with dictation while long-distance driving is a definite advantage of driving over flying. It is generally not worth the trouble to go to the airport to fly if you can drive to your destination in less than 6 hours. I can see the value of preferring to drive over flying for distances of up to a 12-hour drive because of the opportunity to carry out long bouts of dictation that are socially awkward to do in an airport waiting area, on an airplane, and in a taxi cab. The time spent while trying to work while doing air travel is of lower value, unless perhaps you are able to travel in business class. You can use a Steno mask to dictate without others hearing your voice, but holding this mask over your mouth looks strange. I bought such a mask but have yet to dare to use it publicly.

The mask might be useful when forced to work in cramped quarters in the presence of others or when you wish to carry out dictation while working in a noisy environment. I could see using this mask at a National Laboratory while collecting data at a synchrotron beamline where there is often much white noise. The mask can be used to dampen that external white noise.

I have used the dictated text transcribed by Whisper to a lesser extent. There is often a lot of garbage text that Whisper inserts during long pauses. It generally takes a lot of effort to parse the transcribed text. It is easier to redo the dictation via Voice In and make corrections as you go. The exercise of carrying out the dictation initially during the commute is analogous to generating a verbal rough draft in my mind. Once the initial draft has been composed, it is easier to redo it with better word choices.

On several occasions, my digital voice recorder turned off accidentally when placed in my shirt pocket at the start of my commute. To my dismay, upon arriving at my office, I discovered that I needed to repeat what I had dictated. Nonetheless, I could recapitulate much of what I had dictated just a half hour earlier. The text transcribed by Whisper is more valuable as a backup to trigger my memory rather than as a rough draft. I have yet to try to feed the transcribed text from Whisper to ChatGPT with the instructions to parse it.

Below are links to programming tools to aid the adoption of voice computing.

Talon Voice-related

Voice In Plus related

This browser plugin works in Google Chrome and Microsoft's Edge. It depends on the browser's Speech-to-Text API. Interactive sessions with it persist for up to 5 to 10 paragraphs, depending on your activity and speed of dictation. If you dictate too quickly, you will get ahead of the software, which will hang. You might lose text for some of the words you dictated. Nonetheless, this software is superior to Mac dictation software, which will only persist for an average of three sentences because it sends the sound waves to a language model located on a remote server.

markdown.mov

Generic

Structural biology

Design of Experiments

Data analysis

Funding Agency related

Serenade

This is a standalone application that supports speech-to-commands and speech-to-code. It depends on the presence of an internet connection because it uses remote servers to convert sound waves into text and commands. Serenade runs in web browsers as well as in the terminal and at command prompts. It is more versatile than Voice In plus but less than Talon Voice. It seems to be a good bridge between Voice In Plus and Talon Voice.

Voice Typing in Google Docs related

Whisper related

Voice computing-related talks

I have given three talks on this topic: two at the regional level and one at the international level.

Writing productivity tools

These are some programming tools designed to support greater writing productivity. There are three elements: progress tracking, support for manuscript writing in LaTeX, and the writing log. The last might be essential for organizing and managing a writing project. It is analogous to a project-specific laboratory notebook.

Books about writing

Progress tracking

For writing tasks that cannot be completed in one sitting, progress tracking can support momentum and enthusiasm for the project.

  • Track writing progress in 2024 and 2025
  • The writer's creed Guidelines for greater productivity.
  • Writing contract template This contract is in Microsoft Word, Markdown, LaTeX, and org-mode. This accountability system works only if your partner is similarly committed to daily writing. I had a good run of four years with one person from out of state. I would consider doing this again.
  • TimeSpent Hourly time tracking by project with Google Sheets. This is useful for making monthly time reports and learning how much various writing projects actually take.

Manuscript writing support

Writing log for planning manuscripts

  • Writing Log template in LaTeX. This is the favored format. LaTeX beginning users can easily use this document on Overleaf without any configuration.

  • Writing log template in Org-mode Has all of the features of the LaTeX variant. Favored by many Emacs users. Org-mode is a powerful analog of markdown that can interpret LaTeX code blocks.

  • Org-mode is vastly more capable than markdown. The most remarkable feature is the tables that act like spreadsheets. If you are already comfortable with LaTeX, org-mode will be a step backward for writing documents. Nonetheless, it is still useful for literate programming (or interactive computational narratives), but the interactive display of large images has to be done in separate buffers. Org-roam is useful for knowledge base management, although Obsidian provides a cleaner experience. I still have trouble with org-agenda. Few people have mastered it.

  • Writing log template in reStructuredText reStructuredText is used by programmers for documentation.

  • Writing log template in Markdown Markdown variant. Rendered to PDF by most good text editors.

  • Writing log template in ODT ODT can be read by Open Office, LibreOffice, and MS Word.

  • Writing log template in DOCX for MS Word MS Word variant--the least suitable format for this task, in my opinion.

Videos related to these repositories

Update History

Version Changes Date
Version 0.5 Fixed typos in README.md 2024 April 11
Version 0.6 Added sections on Python and Literate programming 2024 April 22
Version 0.7 Added sections on other markup languages other than LaTeX 2024 May 5

Sources of funding

  • NIH: R01 CA242845
  • NIH: R01 AI088011
  • NIH: P30 CA225520 (PI: R. Mannel)
  • NIH P20GM103640 and P30GM145423 (PI: A. West)

MooersLab/MooersLab is a ✨ special ✨ repository because its README.md (this file) appears on his GitHub profile 👋.