30 October 2018

655. Linux for Edu -- creating lecture videos on linux

We're 'encouraged' to save money on teaching. The easiest (laziest?) way of doing this is to reduce teacher-led time. The ultimate time-saver (in terms of creation of content) is to simply record your lectures using screen-casting.

It's not a very good solution though.

From the point of the lecturer it is not very inspiring, recording 40 minutes of voice-over without mistakes in one take is hard, and updating the slides in the future is hard or impossible. Some solve the voice-over and update issue by using synthetic voices, but they are even more monotonous and uninspiring than most lecturers.

From the point of the student it can be hard to focus for 40 minutes, especially if all you're seeing is a series of slides with a droning voice over. There are other aspects that are bad too: you don't get to interact with the lecturer or your peers, and the lecture content/pace etc. can't be adjusted based on the dynamics of the class.

Some of these aspects can be solved or at least amended by using video editing software. The key is to not simply take a lecture and make a video, but to try to make the most of the medium, without having to become an expert at editing.

Key to making videos is to:
* make them short
...so that students don't need set aside a lot of time to watch them, and can maintain their concentration. It also helps you as a lecturer stay enthusiastic about the video project until it's finished. A long video will make you sick of it before you're done.

* cut everything up into small chunks
...so that you can replace slides and sections, and so you can (re-)record the narration is small chunks. This way you can do as many takes as you need to make sure that the voice over is punchy. No droning!

* to make them engaging
...so that it's fun to watch. This latter bit I haven't cracked. I have decided on a gimmick  though, where I put a countdown timer in the videos. I think/hope that it makes the student feel that the video is moving along quickly and feels 'dynamic'.

Received wisdom dictates that you should include a video of yourself lecturing. There's nothing precluding you from doing that in snippets too and using short Dissolve transitions between the video snippets.


Software:
One should use different tools for different purposes, so I use
* EasyScreenCast or OBSStudio for capturing the desktop if necessary
Make sure to record as webm. Note: You need to transcode the VP8 webm files using the following command or they may show up as black when you render the video in kdenlive:
avconv -i in.webm -c:v libvpx -c:a vorbis -quality best -f webm out.webm

* Audacity for recording audio

* Cheese for recording videos of myself

* Synfig for making simple animation

* kdenlive for video editing

So, here's a quick overview of how to make a simple video using static slides (no screen casting):

1. I made slides in google slides, and then exported each one as a PNG file

2. I recorded the narration using audacity. One recording for each slide. Cut and export.

3. I put it together in kdenlive 
Just drag the length of the slide images to match the lengths of the narration. I also put in a countdown timer as video 2, and overlayed it with the 'composite and transform' transition. I could easily have done the same with a video/videos of myself recorded in cheese.

Either way, the point is that it's very easy to do this.


I also tried to make a simple animation in synfig, but it didn't really pan out. Might be a post in the future -- the students are struggling with visualising 3D objects like orbitals and molecules, and creating animations might help here.


26 October 2018

654. Screen-casting on linux (debian 9)

Minipost:
I'm interested in making course videos where I show my desktop (I might have a full-screen presentation going), but where I also want to show my face.

I'm using debian.

Solution:
To screen-cast the desktop I'm using EasyScreenCast, which is a Gnome Extension: https://extensions.gnome.org/extension/690/easyscreencast/

Not much to say about it really, other than that it works very well.

To get my face on the desktop I use guvcview, which is in the repos.

To make guvcview stay on top even during a full-screen presentation I followed this: https://www.linuxquestions.org/questions/linux-general-1/how-to-make-guvcview-stay-always-on-top-4175541777/

My son's orca lecturing on the importance of experiments in formulating new theories
kdenlive seems like an interesting editor for post-production, but I haven't got that far yet.

20 August 2018

653. Energy decomposition analysis the manual/multiwfn way -- nwchem

I have a very large system (390 atoms, 3918 functions, 6474 primitives) where I want to analyse the bonding. Whereas I can reduce the size of the system a little bit, there's a large conjugated ad charged system in the middle which I can't really reduce. Either way, when I use GAMESS US to do NEDA, the calc seems to hang for days without ever progressing, and LMOEDA/CMOEDA keep running out of memory.

I recently had a look at Multiwfn, and section 4.100.8 in the manual shows how to do simple EDA as a multistep computation. The example uses multiwfn to input initial fragment wavefunctions to compute the DE_orb with Gaussian. Incidentally, this is something which is very easy to do with nwchem without using multiwfn.

I'll use NH3..BH3 as the example at RHF/6-31G*.


Nwchem:

1. Optimise NH3..BH3
scratch_dir /home/me/scratch Title "NH3BH3-nw" Start NH3BH3-nw charge 0 geometry noautosym noautoz units angstrom N 0.0720500 -0.00961700 -0.336156 H 0.871540 0.292859 -0.862886 H -0.685935 0.618297 -0.534511 H -0.187686 -0.922713 -0.663436 B 0.415920 -0.0366410 1.31774 H 0.709693 1.10584 1.58004 H -0.612009 -0.411733 1.83072 H 1.33214 -0.818018 1.41958 end basis "ao basis" cartesian print B library "6-31G*" H library "6-31G*" N library "6-31G*" END scf RHF nopen 0 end task scf optimize
Energy=-82.61181818

2. Run SE calcs on the BH3 and NH3 fragments:
scratch_dir /home/me/scratch Title "BH3-nw" Start BH3-nw charge 0 geometry noautosym noautoz units angstrom B 0.192902 -0.0151808 0.928551 H 0.486935 1.12724 1.19093 H -0.834959 -0.390362 1.44154 H 1.10930 -0.796437 1.03042 end basis "ao basis" cartesian print B library "6-31G*" H library "6-31G*" END scf RHF nopen 0 vectors output bh3.movecs end task scf energy
Energy=-26.368337779376
and
scratch_dir /home/me/scratch Title "NH3-nw" Start NH3-nw charge 0 geometry noautosym noautoz units angstrom N -0.150737 0.0117141 -0.725185 H 0.648571 0.314333 -1.25225 H -0.908696 0.639770 -0.923690 H -0.410582 -0.901249 -1.05260 end basis "ao basis" cartesian print N library "6-31G*" H library "6-31G*" END scf RHF nopen 0 vectors output nh3.movecs end task scf energy
Energy=-56.184296916045

3. Finally, use the two movecs created in step 2:
scratch_dir /home/andy/scratch Title "NH3BH3-nw" Start NH3BH3-nw charge 0 geometry noautosym noautoz units angstrom N 0.0720500 -0.00961700 -0.336156 H 0.871540 0.292859 -0.862886 H -0.685935 0.618297 -0.534511 H -0.187686 -0.922713 -0.663436 B 0.415920 -0.0366410 1.31774 H 0.709693 1.10584 1.58004 H -0.612009 -0.411733 1.83072 H 1.33214 -0.818018 1.41958 end basis "ao basis" cartesian print B library "6-31G*" H library "6-31G*" N library "6-31G*" END scf RHF nopen 0 vectors fragment nh3.movecs bh3.movecs output nh3bh3.movecs end task scf
4. Parse the output from step 4:
iter energy gnorm gmax time ----- ------------------- --------- --------- -------- 1 -82.5357150919 7.36D-01 2.88D-01 0.1 2 -82.6078664771 2.30D-01 5.23D-02 0.1 3 -82.6117699706 2.03D-02 7.47D-03 0.1 4 -82.6118181287 2.23D-04 5.79D-05 0.1 5 -82.6118181326 2.51D-06 7.28D-07 0.1 Final RHF results ------------------ Total SCF energy = -82.611818132574 One-electron energy = -190.292457149391 Two-electron energy = 67.248334359392 Nuclear repulsion energy = 40.432304657425 Time for solution = 0.1s
So, according to the Multiwfn Manual at 4.100.8, using the values from above:
DEtot=-82.61181818-(-26.368337779376-56.184296916045)= -37 kcal/mol (-155 kJ/mol)
DEorb=-82.611818132574-(-82.5357150919)= -48 kcal/mol (-200 kJ/mol)
DEsteric=DEtot-DEorb= 11 kcal/mol (45 kJ/mol)

This is essentially the Kitaura-Morokuma method.

See e.g. Frenking et al.in Energy Decomposition Analysis on page 44. Eq 2 defines Eint in the same way DEtot is defined above, and Eq 7 is the same Eorb as here.

DEstruc here is then DEelstat + DEPauli.

How to resolve these two factors from one another, is a problem for another day.
You can also run the calcs using a single input file:
scratch_dir /home/me/scratch Title "NH3BH3-nw-eda" Start NH3BH3-nw-eda echo charge 0 geometry molecule noautosym noautoz units angstrom N -0.150737 0.0117141 -0.725185 H 0.648571 0.314333 -1.25225 H -0.908696 0.639770 -0.923690 H -0.410582 -0.901249 -1.05260 B 0.192902 -0.0151808 0.928551 H 0.486935 1.12724 1.19093 H -0.834959 -0.390362 1.44154 H 1.10930 -0.796437 1.03042 end geometry ammonia noautosym noautoz units angstrom N -0.150737 0.0117141 -0.725185 H 0.648571 0.314333 -1.25225 H -0.908696 0.639770 -0.923690 H -0.410582 -0.901249 -1.05260 end geometry borohydride noautosym noautoz units angstrom B 0.192902 -0.0151808 0.928551 H 0.486935 1.12724 1.19093 H -0.834959 -0.390362 1.44154 H 1.10930 -0.796437 1.03042 end basis "ao basis" cartesian print N library "6-31G*" B library "6-31G*" H library "6-31G*" END set geometry ammonia scf vectors output ammonia.movecs end task scf set geometry borohydride scf vectors output borohydride.movecs end task scf set geometry molecule scf vectors input fragment ammonia.movecs borohydride.movecs output molecule.movecs end task scf