예제 #1
0
    def get_data(self, dbnames, dbkeys, src_smiles, return_count,
                 similarity_cutoff, request_num):
        global socket
        fp_binary, canon_smile = gpusim_utils.smiles_to_fingerprint_bin(src_smiles)
        fp_qba = QtCore.QByteArray(fp_binary)

        output_qba = QtCore.QByteArray()
        output_qds = QtCore.QDataStream(output_qba, QtCore.QIODevice.WriteOnly)

        output_qds.writeInt(len(dbnames))
        for name, key in zip(dbnames, dbkeys):
            output_qds.writeString(name.encode())
            output_qds.writeString(key.encode())

        output_qds.writeInt(request_num)
        output_qds.writeInt(return_count)
        output_qds.writeFloat(similarity_cutoff)
        output_qds << fp_qba

        socket.write(output_qba)
        socket.flush()
        socket.waitForReadyRead(30000)

        output_qba = socket.readAll()
        return output_qba
예제 #2
0
def main():
    args = parse_args()
    app = QtCore.QCoreApplication([])

    socket = QtNetwork.QLocalSocket(app)
    smiles = input("Smiles: ")
    dbcount = 1
    dbname = args.dbname
    dbkey = args.dbkey
    socket.connectToServer('gpusimilarity')

    while smiles and smiles.lower() not in ('quit', 'exit'):
        return_count = 20
        similarity_cutoff = 0

        fp_binary, _ = smiles_to_fingerprint_bin(smiles)
        fp_qba = QtCore.QByteArray(fp_binary)

        output_qba = QtCore.QByteArray()
        output_qds = QtCore.QDataStream(output_qba, QtCore.QIODevice.WriteOnly)

        output_qds.writeInt(dbcount)
        output_qds.writeString(dbname.encode())
        output_qds.writeString(dbkey.encode())

        request_num = random.randint(0, 2**31)
        output_qds.writeInt(request_num)
        output_qds.writeInt(return_count)
        output_qds.writeFloat(similarity_cutoff)
        output_qds << fp_qba

        socket.write(output_qba)
        socket.flush()
        socket.waitForReadyRead(30000)
        output_qba = socket.readAll()

        smiles = []
        scores = []
        ids = []

        data_reader = QtCore.QDataStream(output_qba)
        returned_request = data_reader.readInt()
        if request_num != returned_request:
            raise RuntimeError("Incorrect result ID returned!")

        return_count = data_reader.readInt()
        approximate_matches = data_reader.readUInt64()

        for i in range(return_count):
            smiles.append(data_reader.readString())
        for i in range(return_count):
            ids.append(data_reader.readString())
        for i in range(return_count):
            scores.append(data_reader.readFloat())

        print("Approximate total matches: {0}, returning {1}".format(
            approximate_matches, return_count))
        for cid, smi, score in zip(ids, smiles, scores):
            print("{0} {1}: {2}".format(cid, smi, score))
        smiles = input("Smiles: ")
예제 #3
0
    def get_data(self, socket_name, src_smiles, return_count):
        fp_binary = gpusim_utils.smiles_to_fingerprint_bin(src_smiles)
        fp_qba = QtCore.QByteArray(fp_binary)

        output_qba = QtCore.QByteArray()
        output_qds = QtCore.QDataStream(output_qba, QtCore.QIODevice.WriteOnly)

        output_qds.writeInt(return_count)
        output_qds << fp_qba

        socket = sockets[socket_name]
        socket.write(output_qba)
        socket.flush()
        socket.waitForReadyRead(30000)

        output_qba = socket.readAll()
        return output_qba
예제 #4
0
def main():
    app = QtCore.QCoreApplication([])

    socket = QtNetwork.QLocalSocket(app)
    smiles = input("Smiles: ")
    db_name = sys.argv[1]
    socket.connectToServer(db_name)

    while smiles and smiles.lower() not in ('quit', 'exit'):
        return_count = 20

        fp_binary = smiles_to_fingerprint_bin(smiles)
        fp_qba = QtCore.QByteArray(fp_binary)

        output_qba = QtCore.QByteArray()
        output_qds = QtCore.QDataStream(output_qba, QtCore.QIODevice.WriteOnly)

        output_qds.writeInt(return_count)
        output_qds << fp_qba

        socket.write(output_qba)
        socket.flush()
        socket.waitForReadyRead(30000)
        output_qba = socket.readAll()

        smiles = []
        scores = []
        ids = []

        data_reader = QtCore.QDataStream(output_qba)

        for i in range(return_count):
            smiles.append(data_reader.readString())
        for i in range(return_count):
            ids.append(data_reader.readString().decode("utf-8"))
        for i in range(return_count):
            scores.append(data_reader.readFloat())

        for cid, smi, score in zip(ids, smiles, scores):
            print("{0} {1}: {2}".format(cid, smi, score))
        smiles = input("Smiles: ")