Exemple #1
0
	socket.on("connect", function(){
		reader = LineInputStream(socket);
		reader.on("line", function(line){
			var s = line.trim();
			// Erste zwei vom Server gesendete Zeilen ignorieren
			if(status < 0){
				status++;
				if(status == 0) checkQueue();
				return;
			}
			// Antwort besteht aus ein bis zwei Zeilen: Zuletzt kommt immer error
			var response = undefined;
			if(s.indexOf("error") == 0){
				response = parseResponse(s.substr("error ".length).trim());
				executing.error = response;
				if(executing.error.id == 0) delete executing.error;
				if(executing.cb) executing.cb.call(executing, executing.result, executing.response);
				executing = null;
				checkQueue();
			} else if(s.indexOf("notify") == 0){
				s = s.substr("notify".length);
				response = parseResponse(s);
				self.emit(s.substr(0, s.indexOf(" ")), response);
			} else {
				response = parseResponse(s); 
				executing.response = response;
			}
		});
		self.emit("connect");
	}); 
Exemple #2
0
User.prototype.initStream = function(code, str, optConsumer) {
    //console.log('initStream: consumer=', optConsumer);
    var user = this;
    var ls = lins(str);
    user.stdio[code] = new StreamLineHistory(str, ls);
    ls.setEncoding('utf8');
    ls.setDelimiter('\n');
    ls.on('error', function(err) {
        console.log(err + ', user ' + user.name);
    });
    ls.on('line', function(line) {
        var ch = code == 0 ?   '=>' :   code == 1 ?   '<=' :   '):';
        console.log('%s@equares %s %s', user.name, ch, line);
        user.addStreamLine(code, line);
        if(optConsumer !== undefined)
            optConsumer.write(line+'\n');
    });
}
Exemple #3
0
function processFile(){
    
    var timestamp = (new Date()).getTime();
   
    if(dolineInputStream === true){
        var LineInputStream = require('line-input-stream');
        var stream = LineInputStream(fs.createReadStream(fileToRead, {flags:'r'}));
        stream.setEncoding(encoding);
        stream.setDelimiter('$$$$\n');
        stream.on("error", function(err) {
            fs.appendFileSync(errorFile, "\r\n"+JSON.stringify(err)+"\r\n");
        });
        stream.on('line', processLine);
        stream.on("end", function() {processEnd();});
        stream.on("close", function() {processEnd();});
    }else{
        var LineByLineReader = require('line-by-line');
        var lr = new LineByLineReader(fileToRead, {encoding: encoding});
        lr.on('error', function (err) {
            fs.appendFileSync(errorFile, "\r\n"+JSON.stringify(err)+"\r\n");
        });
        lr.on('end', function () {processEnd();});
        var data="";
        lr.on('line', function (line) {
            data = data + line +"\r\n";
            if(line.indexOf("$$$$") !== -1){
                processLine(data);
                data = "";
           }
        });
    }
 
 
    var i=1;
    var stepper=stepToShow;
    var nbsuccess = 0;
    var nberror = 0;
    function processLine(line) {
       
        if(i >= stepper){
            monitor("#step "+i);
            stepper+=stepToShow;
        }
 
        if(i >= start){//define point for start
          // try {

/*                var Lines = line.split('\n');
                goodlines = Lines[0]+"\n";
                cscart = false;
                for (ij=1;ij<Lines.length;ij++)
                {   
                    if (Lines[ij].indexOf("CsCart") !==-1) cscart = true;
                    if (ij!=1 & cscart) goodlines+=Lines[ij]+"\n";
                }
*/
                var result = parse(line);
                line = result.molecules[0].molfile.value;
                console.log(line);

                var mol= rdk.Molecule.MolBlockToMol(line);
                var smile = mol.molToSmiles();
                var binarymol = mol.pickleMol();

                // this is the folded example (AllChem.GetHashedMorganFingerprint(mol, radius=self.radius, nBits = self.length))
                // the unfolded (faster method is based on : AllChem.GetMorganFingerprint(mol, radius=self.radius) 
                // the bits are sorted using sorted(GetNonZeroElement().keys())
                var mpf2 = mol.getMorganFingerprintsKeys(2);   // unfolded keys storage using getMorganFingerprintsKeys   // folded =  mol.getMorganFingerprints_getOnBbits(2,2048); 
                var mpf = [];
                var mpflen = mpf2.size();
                for(var j=0;j < mpflen;j++){
                    mpf.push(mpf2.get(j));
                }             

                moleculesCollection.insert(
                    {
                       'smiles': smile,
                       'chembl_id': i,
                       'rdmol': Binary(binarymol),
                       'mfp': {'bits': mpf, 'count': mpflen}
                    }
                );
                mol.delete();
                nbsuccess++;         
         /* }catch (err) {
                fs.appendFileSync(errorFile, "i="+i+"\r\n"+JSON.stringify(err)+"\r\n");
                nberror++;
                return;
            }
*/
        }
 
        if (i >= end) {
            processEnd();
        }
        i++;
    }
 
    function processEnd(){
        var date1 = new Date(timestamp);
        var date2 = new Date();
        var timeDiff = Math.abs(date2.getTime() - date1.getTime());
        var diffSec = parseInt(timeDiff / (1000 ));
        var diffMin = parseInt(diffSec/60);
        diffSec = diffSec - (diffMin*60);
        var time = diffMin + "m" + diffSec + "s";
        resumeTime("###i=" + i + " success: "+(nbsuccess-nberror)+" failed: "+nberror+" in "+time);
        databaseMongo.close();
        process.exit();
    }
}
function create(params) {
	var bridge = new events.EventEmitter();

	// bake unique key to filter messages from stdout
	var messageKey = crypto.createHash('md5')
		.update('magic' + Date.now() + '|' + Math.random())
		.digest('hex');

	var messageScan = '["' + messageKey + '",';
	var messageScanL = messageScan.length;

	params.key = messageKey;

	var spawnOpts = {
		cwd: process.cwd(),
		stdio: ['ignore', 'pipe', 'pipe']
	};

	var args = [];
	args.push(path.resolve(__dirname, '..', 'slimer', 'main.js'));
	args.push(JSON.stringify(params));

	var cp;

	if (params.xvfb) {
		args.unshift(binPath);
		cp = childProcess.spawn('xvfb-run', args, spawnOpts);
	}
	else {
		cp = childProcess.spawn(binPath, args, spawnOpts);
	}

	var stream;
	// parse console by lines
	stream = lineInputStream(cp.stdout).on('line', function (line) {
		if (line.substr(0, messageScanL) === messageScan) {
			var data;
			try {
				data = JSON.parse(line);
			}
			catch (e) {
				bridge.emit('error', e);
				return;
			}

			if (data.length < 3 || data.length > 4) {
				bridge.emit('error', new Error('bad message length ' + data.length));
			}
			data.shift();

			var type = data[0];

			switch (type) {
				case 'mocha':
				case 'error':
				case 'exit':
					bridge.emit(type, data[1]);
					break;
				default:
					bridge.emit('log', data[1]);
			}
		}
		else {
			bridge.emit('log', line);
		}
	});
	stream.setEncoding('utf8');

	stream = lineInputStream(cp.stderr).on('line', function (line) {
		bridge.emit('error', line);
	});
	stream.setEncoding('utf8');

	// exit code is always null as slimer doesn't support it
	cp.on('exit', function () {
		bridge.emit('close');
	});

	return bridge;
}
function processFile(){
    
var timestamp = (new Date()).getTime();

var parser = require('sdf-parser')


//var result = parser('/Users/guilllaumegodin/Downloads/chembl_18.sdf');

var LineInputStream = require('line-input-stream')

var stream = LineInputStream(fs.createReadStream('/Users/guilllaumegodin/Downloads/chembl_18.sdf', {flags:'r'}));
stream.setEncoding('ascii');
stream.setDelimiter('$$$$\n');


stream.on("error", function(err) {
          console.log(err);
          });

stream.on('line', processLine);

stream.on("end", function() {
          // No more data, all line events emitted before this event
          });

stream.on("close", function() {
          // Same as ReadableStream's close event
          });

var smiles = [];
    var i=0;
function processLine(line) {
    ++i;
    //console.log(line);
    try {
        var mol= rdk.Molecule.MolBlockToMol(line);
        
    
    var smile = mol.smilewrite();
    var binarymol = mol.pickleMol();
    var mpf2 = mol.getMorganFingerprints_getOnBbits(2,2048);
    
        var mpf = [];
        var mpflen = mpf2.size();
        for(var j=0;j < mpflen;j++){
            mpf.push(mpf2.get(j));
        }
        

        
        
        
        
    //console.log(mpf2.size());
    
    moleculesCollection.insert({
                               'smiles': smile,
                               'chembl_id': i,
                               'rdmol': Binary(binarymol),
                               'mfp': {'bits': mpf, 'count': mpflen}
                               });
    
    
    mol.delete();
    
        
    }catch (err) {
        console.log('err');
        return;
    }

    
    smiles.push(smile)
    if (smiles.length>100000) {
        //console.log(smiles);
        //console.log('done');
        var date1 = new Date(timestamp);
        var date2 = new Date();
        var timeDiff = Math.abs(date2.getTime() - date1.getTime());
        var diffSec = parseInt(timeDiff / (1000 ));
        var diffMin = parseInt(diffSec/60);
        diffSec = diffSec - (diffMin*60);
        var time = diffMin + "m" + diffSec + "s";
        console.log("success in: "+time);
       
        monitor("end");
        
        databaseMongo.close();

        process.exit();
    }
}
}