def create_feedforwardnet(civ_dim, hparams, compound_model, protein_profile): if hparams["prot"]["model_type"] == "pcnna": p = 2 * hparams["prot"]["dim"] base_model = ProtCnnForward(*create_prot_net(hparams, protein_profile), nn.Sequential(compound_model, nn.Linear(*civ_dim))) else: base_model = PairSequential(mod1=(compound_model,), mod2=(create_prot_net(hparams, protein_profile),)) p = np.sum(civ_dim) fcn_args = [] fcn_layers = hparams["hdims"] if not isinstance(fcn_layers, list): fcn_layers = [fcn_layers] for dim in fcn_layers: conf = FcnArgs(in_features=p, out_features=dim, activation='relu', batch_norm=True, dropout=hparams["dprob"]) fcn_args.append(conf) p = dim fcn_args.append(FcnArgs(in_features=p, out_features=hparams["output_dim"])) fcn_layers = create_fcn_layers(fcn_args) model = nn.Sequential(base_model, *fcn_layers) return model
def create_ecfp_net(hparams): fcn_args = [] for i in range(len(hparams["ecfp"]["ecfp_hdims"]) - 1): conf = FcnArgs(in_features=hparams["ecfp"]["ecfp_hdims"][i], out_features=hparams["ecfp"]["ecfp_hdims"][i + 1], activation='relu', batch_norm=True, dropout=hparams["dprob"]) fcn_args.append(conf) fcn_args.append(FcnArgs(in_features=hparams["ecfp"]["ecfp_hdims"][-1], out_features=hparams["latent_dim"])) fcn_args.append(FcnArgs(in_features=hparams["latent_dim"], out_features=1)) model = nn.Sequential(*create_fcn_layers(fcn_args)) return model
def create_discriminator_net(hparams): fcn_args = [] p = hparams["neigh_dist"] layers = hparams["disc_hdims"] if not isinstance(layers, list): layers = [layers] for dim in layers: conf = FcnArgs(in_features=p, out_features=dim, activation='relu', batch_norm=True, dropout=hparams["dprob"]) fcn_args.append(conf) p = dim fcn_args.append( FcnArgs(in_features=p, out_features=hparams['output_dim'], activation="sigmoid")) layers = create_fcn_layers(fcn_args) model = nn.Sequential(*layers) return model
def create_integrated_net(hparams): # segment 1 - graphconv gconv_model = GraphConvSequential( GraphConvLayer(in_dim=75, out_dim=64), nn.BatchNorm1d(64), nn.ReLU(), GraphPool(), GraphConvLayer(in_dim=64, out_dim=64), nn.BatchNorm1d(64), nn.ReLU(), GraphPool(), nn.Linear(in_features=64, out_features=hparams["gconv_dim"]), nn.BatchNorm1d(hparams["gconv_dim"]), nn.ReLU(), nn.Dropout(hparams["dprob"]), GraphGather()) # segment 2 - fingerprint fp_net = nn.Identity() # segment 3 - protein prot_net = nn.Identity() civ_net = PairSequential( (PairSequential(mod1=(gconv_model, ), mod2=(fp_net, )), ), (prot_net, )) civ_dim = hparams["prot_dim"] + hparams["gconv_dim"] * 2 + hparams["fp_dim"] fcn_args = [] p = civ_dim layers = hparams["hdims"] if not isinstance(layers, list): layers = [layers] for dim in layers: conf = FcnArgs(in_features=p, out_features=dim, activation='relu', batch_norm=True, dropout=hparams["dprob"]) fcn_args.append(conf) p = dim fcn_args.append(FcnArgs(in_features=p, out_features=hparams['output_dim'])) fcn_layers = create_fcn_layers(fcn_args) model = nn.Sequential(civ_net, *fcn_layers) return model