Added variables for the chek of the job status in lsf. Added some comments and small code rearrangement.
Combined sub_sge and sub_lsf in a more generic function. Combined get_jobs_status_sge and get_jobs_status_lsf in a more generic function. Removed the dependency on gridtk.
Started implementing lsf jobs
Simplified and made more pythonic the random selection of configurations when the number of generated ones is larger than the 'max_structures' value.
Corrected log messages.
Reduced the molecule name length in the job_name.
Included extra arguments for the proper working of special atoms.
Added logging entries at the beginning and end of each section.
Modified documentation
Implemented refinement.py
Add a warning when identical structures appear as a bug tester.
Prevent identical configurations in Euler rotations
Allow the user to choose a maximum number of structures to generate for the screening.
Moved adorption height to be a function argument.
Implemented the possibility to dissociatie H atoms
Corrected bug, evaluation of surface alone neighbors and molecule alone neighbors is done when no collision height is specified.
Implemented add_special_atoms which Allows to use custom elements with symbols not in the periodic table.
Added punctuation marks at the end of every log messages.
Changed variable name cart_coords to cart_axes. Simplified the check if surface normal vector is a a pure cartesian axis.
Corrected bug: When the same coordinate of the surface normal vector and the position of the atom had different signs was leading to no collision while it should.
Implemented function to select conformers according to the value of passed magnitudes. Acceptable magnitudes are 'moi' and 'energy'. Added log register for the number of generated structures.
Allow 'surf_norm_vect' to accept the shortcut values '-x' '-y' '-z' equivalent to [-1, 0, 0] [0, -1, 0] [0, 0, -1] respectively. Changed When min_coll_height is not False collision is checked only by checking the height of the atoms.
Enabled the creation of calculation subdirectories and files when carrying out a dry run (batch_q_sys = None)
Read the number of conformers per magnitude from input file
Restructured 'get_surf_norm_vect' function to prevent recording an error to the log when 'x', 'y' or 'z' is passed as option value.
Added TODO. Added comments for visually separating functions belonging to different sections inside code.
Added 'euler' as default value for the ads_algo option in input.
Reordered the calling of functions.
Moved cluster_magns from Isolated to Screening section
Added log register for reading coordinates
Calculate the surface and molecule neighbors necessary for the collision check
Implemented the function that corrects collisions
Implemented the function to check for collisions between the adsorbate and the surface
Implemented the adsorption of conformers using euler angles to sample de orientational space.
Using a copy of the molecule to adsorb this way preventing successive translations when correcting adsorptions.
Included the ads_algo option in the input file. Fixed the default value of surface normal vector.
get_atom_coords function called without ctrs_list argument returns the coordinates of all atoms. It also allows ctrs_list to be an integer, thus returning the coordinate of index
Check for options 'code', 'subm_script' is consistent with dry runs and running locally.
Minor changes in variable names, order in functions, documentation and TODOS
Implemented function to compute the angle between two vectors.
Function get_surf_norm_vect returns a numpy.ndarray instead of a list. Function get_pts_per_angle checks that the number of points per angle to be positive. Added TODO on get_moments_of_inertia
Changed input option from collision_bottom_z to collision_bottom
Implement add_adsorbate function which extends the functionality of ase.build.add_adsorbate by enabling to change the z coordinate and the axis perpendicular to the surface.
Added surf_file and molec_neigh_ctrs options to the input reading. Added hematite surface file to tests.
Reformatting files, added documentation and getting rid of useless pieces of code.
Implemented get_atom_coords and vect_avg
Designed structure of screening.py
Included surf_file, molec_neigh_ctrs and surf_norm_vect as input parameters
str2list accepts float numbers if it is called with the func=float argument.
Updated documentation
When clustering does not converge return every point as exemplar.
When a SDF mol file has no explicit hydrogen atoms it adds them before converting it to the adequate format.
Correct indentation for all submitted jobs
Corrected the extraction of MOI from a list of mol objects. For the plotting of graphs in clustering.py renamed boolean var debug to plot and added a check-backup on the plot file. Removed useless chunk on isolated.py.
Changed the import statement of internal libraries. Added logging to utilities.py
Moved check_bak from calculation.py to utilities.py and try_command from dos_input.py to utilities.py
Implemented function to read energies of a set of finished calculations. Implemented auxiliary function equivalent to bash tail. Reformat blank spaces and add TODO lines
Carry out the screening of adsorbate coordinates on a surface
Moved get_rmsd from isolated.py to clustering.py and changed its functionality, now it expects a list of mol objects instead of a single mol object with multiple conformers in it.
Added read_coords function to read coordinates resulting from finished calculations.
Added 'local' and 'none' as possible batch queuing systems, to run calculations on the local computer and to not carry out the calculation at all (for debugging purposes).
Allow to convert, to rdkit.Mol object, xyz files containing multiple geometries, taking into consideration only the last one.
Reorganized job submission, every batch_q_sys submitting function is directly called from run_calc. Updated requirements.txt
Add hydrogen atoms before the conformer generation.
check_bak function checks if the target file_name is a directory or a file instead of checking if the name is present on the cwd. prep_cp2k works with the filename instead of the whole absolute filepath. Changed the warning message accordingly
Added hidden files to .gitignore and Changed Information displayed on the log for the MMFF Opt.
Unified all run_types inside the same function
Added fallback value for project_name in dos_input.py. Included log messages for submitted jobs on calculation.py, added TODO tasks and changed documentation on all three files.
Fix: the number of the submitted jobs now matches the number of conforemer id.
Wait for all jobs to finish.
Changed get_queued_jobs_sge to get_jobs_status_sge which now returns a list of job status instead of a list that were in qw status.
Added init_dir variable
Changed the number of conformers for which to warn the user to be greater than 1 and not 0
Check if 'COORD_FILE_NAME' is defined in CP2K input file, and if not set to a default value. Fixed forgotten change of directory back to the initial directory.
Added a warning when a mol object with more than one conformer is parsed to the rdkit_mol_to_ase_atoms function. Extended confs_to_mol_list documentation
Removed 'project_name' from the mandatory options
The former create_bak_calc_dir function, now called check_bak, has generalized its behavior by checking if a file or directory exists and if so backs it up to a .bakX where X is a number such that bakX does not already exist.
Check if the input file of the code used for calculations is readable by the relevant library. Removed project_name from the mandatory options in Global.
Removed non used options from input and added new option on tests
Included 'project_name' on global mandatory options, corrected missing parentheses on str.capitalize method.
Added the submission of jobs to the SGE batch queuing system
Moved confs_to_mol_list function from isolated.py to formats.py module and generalised the calculations functions to be able to work with no matter which kind of calculation
Changed logging of formats.py from info to debug severity level.
Corrected argument of prep_iso and improved code documentation
Raise an error if clustering does not converge
Created calculation.py module and moved prep_run from isolated.py to it
Included printing the number of conformers generated and reformat documentation in isolated.py
Removed redundant UFF optimization, corrected type on conformer index in the writing of XYZ file and added debugging functionality for clustering.
Changed import statements and added shebang to increase portability
Extended documentation of run_isolated and prep_run
Implemented function to prepare the runs and reorganized the checks for using or not energy minima as conformers
Implemented clustering for Affinity matrices
Moved adapt_format to be available in all module and catching an error on get_rmsd when its argument is not valid.
Retrieve relevant magnitudes for clustering by calling the relative functions
mmff_opt_confs function allows to carry out single point energy calculations if max_iters is set to 0.
Split the generation of conformers and computation of their rmsd in two different functions. Added new functions to obtain the conformers moment of inertia and to optimize them using MMFF force field.
Changes rms to rmsd of new files
Revert "Changed rmsd for rms"
This reverts commit 5571316d
Extended gen_confs documentation and incorporated the possibility to choose whether molecule conformers should be minimum energy conformers or not.
Changed the way RMS between two conformers gets calculated. Now the RMS is performed by not considering hydrogens bonded to carbons but it does consider hydrogens bonded to all other atoms or not bonded at all.