{"cells":[{"metadata":{"_uuid":"051d70d956493feee0c6d64651c6a088724dca2a","_execution_state":"idle","trusted":true},"cell_type":"code","source":"library(plyr)\nlibrary(tidyverse)\n\ntrain<-read.csv(\"../input/train.csv\", stringsAsFactors = FALSE)\ntest<-read.csv(\"../input/test.csv\", stringsAsFactors = FALSE)\nstructures<-read.csv(\"../input/structures.csv\", stringsAsFactors = FALSE)\nhead(train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"head(structures)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"table(structures$atom)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_kg_hide-output":true},"cell_type":"code","source":"# Create data frame with properties of individual molecules\nlibrary(geometry)\n\nmolecules<-data.frame(molecule_name=unique(structures$molecule_name))\nzeros<-rep(0,length(molecules))\nmolecules<-molecules %>% mutate(C=zeros, H=zeros,F=zeros,N=zeros,O=zeros, vol=zeros)\n\n# Number of C, H, F, N, O atoms in molecule and 3d volume of convex hull\nrow_num=1\nfor (i in molecules$molecule_name){\n    df<-structures %>% filter(molecule_name==i)\n    tab<-as.data.frame(table(df$atom))\n    for (j in 1:nrow(tab)){\n        atom<-as.character(tab$Var1[j])\n        molecules[row_num,atom]<-tab[j,2]        \n    }\n    \n    # leave volume at 0 if points are coplanar or molecule consists of <4 atoms\n    try({ \n    convHull<-convhulln(df %>% select(x,y,z),output.options=TRUE)\n    molecules[row_num,\"vol\"]<-convHull$vol\n        })\n    \n    row_num=row_num+1\n}\n\n# Number of atoms in molecule\nmolecules<-molecules %>% mutate(numAtoms=rowSums(molecules[,2:6]))\n\n# Number of different atoms in molecule\ndiffAtoms<-ifelse(molecules[,2:6]==0,0,1)\nmolecules<-molecules %>% mutate(numDiffAtoms=rowSums(diffAtoms))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"head(molecules)\nwrite.csv(molecules, file=\"molecules.csv\", row.names=FALSE)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Merging different data frames\n\njoin1<-merge(train,structures,type=\"left\",by.x=c(\"molecule_name\",\"atom_index_0\"), by.y=c(\"molecule_name\",\"atom_index\"))\nnames(join1)<-c(names(join1[1:6]),c(\"atom0\",\"x_0\",\"y_0\",\"z_0\"))\nhead(join1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"join2<-merge(train,structures,type=\"left\",by.x=c(\"molecule_name\",\"atom_index_1\"), by.y=c(\"molecule_name\",\"atom_index\"))\nnames(join2)<-c(names(join1[1:6]),c(\"atom1\",\"x_1\",\"y_1\",\"z_1\"))\njoin2<-join2 %>% select(-c(scalar_coupling_constant,type,molecule_name, atom_index_0,atom_index_1))\nhead(join2)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"join3<-merge(join1,join2,by=\"id\")\nhead(join3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"completeDF<-merge(join3,molecules,type=\"left\",by=\"molecule_name\")\n\n# Euclidean distance\ncompleteDF<-completeDF %>% mutate(distance= sqrt((x_0-x_1)^2+ (y_0-y_1)^2+ (z_0-z_1)^2))\ndim(completeDF)\nhead(completeDF)\n\nwrite.csv(completeDF, file=\"completeDF.csv\", row.names=FALSE)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Create data frame for every type\nunique(completeDF$type)\ncompleteDF_1JHC<-completeDF %>% filter(type==\"1JHC\")\ncompleteDF_2JHH<-completeDF %>% filter(type==\"2JHH\")\ncompleteDF_1JHN<-completeDF %>% filter(type==\"1JHN\")\ncompleteDF_2JHN<-completeDF %>% filter(type==\"2JHN\")\ncompleteDF_2JHC<-completeDF %>% filter(type==\"2JHC\")\ncompleteDF_3JHH<-completeDF %>% filter(type==\"3JHH\")\ncompleteDF_3JHC<-completeDF %>% filter(type==\"3JHC\")\ncompleteDF_3JHN<-completeDF %>% filter(type==\"3JHN\")\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"for (i in unique(completeDF$type)){\n    df<-completeDF %>% filter(type==i)\n    print(df %>%  ggplot(aes(y=scalar_coupling_constant,x=distance))+\n          geom_point()+geom_bin2d()+ggtitle(paste(\"Type\",i)))\n}","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"R","language":"R","name":"ir"},"language_info":{"mimetype":"text/x-r-source","name":"R","pygments_lexer":"r","version":"3.4.2","file_extension":".r","codemirror_mode":"r"}},"nbformat":4,"nbformat_minor":1}