The following exercises are part of the the course Molecular and Materials Modelling held at ETH Zürich during the spring semester 2018.
Remember that the Quantum Mobile VM is a Linux environment. As such, copy/paste operations are sometimes application-dependent.
We have programmed in the virtual machine some useful bash functions. They all start with m_ and can be called from the command line. To see the usage of one of them, use the -h flag. Here the list and usage of all of them:
================================================================== m_addcolumn Description: add a column at the left of a file, the same string in every line. Usage: m_addcolumn string < file > file.out ================================================================== ================================================================== m_cutlines Description: Cuts lines l1..l2, l3..l4, l5..l6 away from a file Usage: m_cutlines l1 l2 l3 l4 l5 l6 ... < file > modified_file ================================================================== ================================================================== m_domyslab Description: starting from a unit cell file with Element x y z columns, generate a nx ny nz cell. The parameter d is the nearest neighbor distance, and the cell lengths Lx, Ly, Lz are in the same units as in the unit cell file. Since d is used to multiply all coordinates, the unit cell coordinates are meant to be in nearest neighbor units. Usage: m_domyslab Lx Ly Lz d nx ny nz < unitcell > slab.xyz ================================================================== ================================================================== m_interpolate Description: Returns a list of real numbers that interpolates two given extremes A and B with n+1 points (from A=0 to B=n) Usage: m_interpolate xa xb n ================================================================== ================================================================== m_multiply Description: Returns the product of two numbers Usage: m_multiply num1 num2 ================================================================== ================================================================== m_overlayer Description: Replaces the 4th column (z coordinate) of a file with a user-given new z coordinate. Usage: m_overlayer newz < overlayer.xyz > newoverlayer.xyz ================================================================== ================================================================== m_replace Description: Replaces all occurrencies of an "oldstring" in a file with a "newstring" string Usage: m_replace "oldstring" "newstring" < oldfile > newfile ================================================================== ================================================================== m_trimlines Description: trims around lines l1..l2, l3..l4, l5..l6 of Usage: m_trimlines l1 l2 l3 l4 l5 l6 ... < file > modified_file ================================================================== ================================================================== m_xyzcenter Description: Centers a sample in the directions specified by a 1, and not in those specified by a 0 Usage: m_xyzcenter flagx flagy flagz < cell.xyz > cell_center.xyz ================================================================== ================================================================== m_xyzminmax Description: This function returns the maximum and minimum X (or Y, or Z) value from a XYZ file Usage: m_xyzminmax x|y|z < file.xyz ================================================================== ================================================================== m_xyzrefold Description: Refolds a sample according to periodic boundary conditions in all directions marked by 1 The cell is defined by a,b,c in the second line of the xyz file Usage: m_xyzrefold markx marky markz < filein.xyz > fileout.xyz ================================================================== ================================================================== m_xyztranslate Description: Translates all coordinates of a xyz file by a given vector. Usage: m_xyztranslate tx ty tz < filein.xyz > fileout.xyz ================================================================== ================================================================== m_atan2 Description: Returns the angle in degrees between the positive X-axis of a plane and the point given by the coordinates (x,y) on it: \ \ * (x,y) \ \ \_______ \ | \angle| --\----------------------> \ X Usage: m_atan2 x y ================================================================== ================================================================== m_distance Description: Computes the distance between two points Usage: m_distance x1 y1 z1 x2 y2 z2 ================================================================== ================================================================== m_lattice Description: Replicates a cell in 3 directions and generates a sample with the cell lengths a b c in the second line IT ONLY READS THE LINES WITH EXACTLY 4 COLUMNS (atomic index, x, y, z) Usage: m_lattice [Atom] cellx celly cellz nx ny nz < cell > sample.xyz ================================================================== ================================================================== m_norm Please specify three arguments Description: Returns the norm of a vector Usage: m_norm x y z ================================================================== ================================================================== m_pdbtorsion Description: Returns torsion defined by 4 atoms in a pdb file Atom4 / <-. / angle\ / Atom2-------|-----Atom3 / \__/ / / Atom1 Usage: m_pdbtorsion n1 n2 n3 n4 file ================================================================== ================================================================== m_scalar Description: Returns scalar product of two vectos Usage: m_scalar x1 y1 z1 x2 y2 z2 ================================================================== ================================================================== m_unitvec Description: Returns a normalized input vector Usage: m_unitvec x y z ================================================================== ================================================================== m_xyzcountframes Description: This function counts the number of frames in a trajectory Usage: m_xyzcountframes file.xyz ================================================================== ================================================================== m_xyznatoms Description: This function returns the number of atoms in a given XYZ file Usage: m_xyznatoms < file.xyz ================================================================== ================================================================== m_xyzrescale Description: Rescales all coordinates of a xyz file by a given factor. If the cell is given in the second line it is multiplied by the same factor Usage: m_xyzrescale factor < filein.xyz > fileout.xyz ================================================================== ================================================================== m_xyzzhistogram Description: This function makes a z histogram of a trajectory Usage: m_xyzzhistogram n_intervals n_atoms z_min z_max ================================================================== ================================================================== m_change Please specify three arguments Description: Adds a delta times an integer to a central value Usage: m_change x0 n delta ================================================================== ================================================================== m_divide Description: Returns the ratio of two numbers Usage: m_ratio num1 num2 ================================================================== ================================================================== m_getcolumn Description: Greps a string from a file and gets the last instance; then takes the nth column Usage: m_getcolumn "STRING" column < file ================================================================== ================================================================== m_list Please specify two arguments Description: Creates an ordered list of numbers between two integers Usage: m_list nmin nmax ================================================================== ================================================================== m_onecolumn Description: parse a file and write all words as a single column Usage: m_onecolumn < file ================================================================== ================================================================== m_pdbvecjoin Description: Returns a vector joining two atoms in a pdb file Usage: m_pdbvecjoin at1 at2 pdbfile ================================================================== ================================================================== m_sum Description: Returns the sum of two numbers Usage: m_sum num1 num2 ================================================================== ================================================================== m_vecprod Description: Returns vector product of two vectors Usage: m_vecprod x1 y1 z1 x2 y2 z2 ================================================================== ================================================================== m_xyzframes Description: This function takes frames from a xyz file Usage: m_takeslides first_frame last_frame file.xyz (with last_frame=all, until the end) ================================================================== ================================================================== m_xyzrand Description: Randomizes a file xyz from -delta/2 to delta/2 Usage: m_xyzrand delta < file.xyz ================================================================== ================================================================== m_xyzsort Description: Sorts a xyz file according to z, y, x coordinates (z is inverted) Usage: m_xyzsort < file.xyz > filesorted.xyz ==================================================================