SNPParser{ var =tmp[2].asFloat)),{//skip empty SNPs and make sure it's either a single base or a base pair and ignore out-of-range SNPs (yes, science is unclear!) if(SNPInfo.isBasePair(tmp[3]),{//if it's a base pair, set it up snp = SNP.new(tmp[1], tmp[2], tmp[0], tmp[3], SNPInfo.createResolverForPair(tmp[3])); },{ if(SNPInfo.isBase(tmp[3]), {//if it's a single base, set it up snp = SNP.new(tmp[1], tmp[2], tmp[0], tmp[3], \none); }); }); newSameCounter = newSameCounter + comboDict.storeSNP(snp, SNPInfo.calcPosition(snp.chromosome, snp.position)); switch(newSameCounter, 1.0,{"Storing SNPs now: \n==========".postln;}, 100000.0,{"=".post;}, 200000.0,{"=".post;}, 300000.0,{"=".post;}, 400000.0,{"=".post;}, 500000.0,{"=".post;}, 600000.0,{"=".post;}, 700000.0,{"=".post;}, 800000.0,{"=".post;}, 900000.0,{"=".post;}, ); }); }); counter = counter + 1; }; }{ snpFile.close; }; },{ ("Couldn't open file for reading: "++file).warn; }); "=".postln; "Sorting lookup tables. This will also take some time!".postln; comboDict.orderLookup(2); "Done sorting lookup tables.".postln; ^comboDict; } }