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
Exemple #4
0
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