Merge pull request #33 from nyee/databaseTest

Database test
Remove history fields permanently and clean up empty reference and referenceType fields.
Remove `recommended` field in databases since they have no functionality.
Remove rogue git conflict lines in R_Recombination/NIST.py
Add a list of recommended families for setting the 'default' option in RMG.

Use a dict rather than a function call to do so.
This corresponds to a commit in RMG-Py
Merge pull request #35 from connie/universalDatabase

Add list of recommended families for setting the 'default' option in RMG
Minor fixes to intra_H_migration family

Found using checkWellFormed

-Cs_H_out_Cs2 adjList in rules changed to match group.py. group.py
adjList was more consistent with siblings.

-in R3H_SS_S, some atoms changed from R to R!H. The atoms had two bonds or
a radical, so they had to be by definition

-Cs_H_out_H/OneDe LogicOr was replaced with an AdjList. This was a strange
case where the parent and children were both Groups (Usually I would
expect a given LogicOr group to have LogicOr parent. With the new
flexibility that we have we have programmed into AdjList, I'm not even
sure we need LogicOr anymore). I'm not sure if we should never have this
weird sandwiched LogicOr, but in this case I found I could come up with an
AdjList that fulfills all the correct relationships.
Fix bug with Leave one out test

Previously was calculating Q using natural log, but I want to use log base
10 so that I get orders of magnitude for my comparisons.

Also I was using an averaged temperature of the rule's range for
calculating k. This was when I wanted to calculated the Leave-one-out
value vs the rule's value. Now, I'm pretty sure I want to compare node to
node for future things, so I've just simplified it so that I calculate
everything at 1000K.
Minor corrections to in 1,2 Insertion family

A few children errors:

-Changed C to Cs in Cs_H and all its (numerous) descendants
-Changed C to Cd in Cd_H and all its descedents
Added suggested solutions to name errors in checkWellFormed

Additional lines of output given for checkWellFormed family.

One error we check for is if a label in rules.py is misnamed, i.e. if any
part of the label is not a group in group.py. There a decent amount of
these errors due to the recent Java/Py database merge. To make my life
database debugging life easier, I added a new feature which tells me if
there is a group which matches the misnamed label.

For example, let's say we have a rule label, A;B. Somebody changed the
name of A to C in groups.py, but left it unchanged in rules.py. The new
feature would suggest C as the correct name for A, by comparing adj lists
of the rule and those in groups.py

Unfortunately, there is a bug I can't figure out. If somebody changed A to C
AND B to D, it suggest C for A and C for B. The manual work around
is to visually verify which one adjList C matches, make the fix, and run
checkWellFormed again. It will then suggest D for B. I feel like this
isn't worth fixing because it will be unable to suggest groups with the
upgrade to universal database (once all adjlists are removed from
rules.py)
Fixes to R_Addition_MultipleBond family

These were found by the checkWellFormed function.

Changes to rule labels rules.py.
For template A-->B (x occurences). 'A' did not exist in groups.py, so the
name was changed to the group 'B' with a matching adjList. 'x' is the
number of rules which used 'A'.

-O_sec_rad --> OJ_sec (1 occurance)
-H_rad does --> HJ (5 occurrences)
-N3t_Ct/H --> N3t_Ct-H (1 occurrence)
-O_pri_rad --> OJ_pri (6 occurrences)
-O_rad/NonDeO --> OJ-Os (13 occurrences)
-Ct/H_N3t --> Ct-H_N3t (2 occurrences)
-N3d/H_N3d/H --> N3d-H_N3d-H (1 occurrence)
-N3d/H_Cds/H2 --> N3d-H_Cds-HH (1 occurrence)
-Cds/H2_N3d --> Cds-HH_N3d (1 occurrence)
-N3t_CtH --> N3t_Ct-H (1 occurrence)

Change to adj lists in rules.py
-Changed radical from 3 to 3Q in "N3t_N3t;CH_quartet" to match group
definition. (CH_quartet only appears in one rule by bbuesser).
-For the top node R_R;YJ, the definitions of R_R and YJ? were both updated
to the more inclusive definition in groups.py (effects top node)
-Ct-Ct_Ct-Cs was found to be wrongly defined in groups.py and rules.py, so
changed all occurrences to the correct definition (19 occurrences)
-Ct-Ct_Ct-H was found to be wrongly defined in groups.py and rules.py, so
changed all occurrences to the correct definition (19 occurrences)

Change to adjlist in groups.py
-CH2_triplet changed to only allow 2T instead of 2S in N3t_N3t;CH2_triplet
(effects 1 rule by bbuesser)
-Ct-Ct_Ct-Cs adj list was definitely wrong. Found because it was a
duplicate of Ct-Cd_Ct-Cs. Changed the Cd in the adj list to a Ct. (appears
in 19 rules)
-Ct-Ct_Ct-H adj list was definitely wrong. Found because it was a
duplicate of Ct-Cd_Ct-H. Changed the Cd in the adj list to a Ct. (appears
in 19 rules)
-Changed Ss atom to more general S atom in SJ. It had the same adj list as
it's only child SsJ. (no rules use Ss)