def _updatedirstats(self, directory, directorystring, size, files, subdirs, extensions): iter = self.sharelist.get_iter_root() while iter is not None: if directory == self.sharelist.get_value(iter, 5): self.sharelist.insert_after(iter, [recode(directory), HumanSize(size), files, subdirs, extensions, directory]) self.sharelist.remove(iter) return iter = self.sharelist.iter_next(iter)
def addshareddir(self, directory): iter = self.sharelist.get_iter_root() while iter is not None: if directory == self.sharelist.get_value(iter, 5): return iter = self.sharelist.iter_next(iter) self.sharelist.append([recode(directory), "", "", "", _("Counting files..."), directory]) thread.start_new_thread(self._addsharedir, (directory,))
def _addsharedir(self, directory): subdirs, files, size, extensions = dirstats(directory) exts = [] for ext, count in extensions.iteritems(): exts.append((count, ext)) exts.sort(reverse=True) extstring = ", ".join(["%s %s" % (count, ext) for count, ext in exts[:5]]) if len(exts) > 5: extstring += ", ..." gobject.idle_add(self._updatedirstats, directory, recode(directory), HumanSize(size), files, subdirs, extstring)
def _work_on_workstate(ind): ''' On code en s'inspirant de destinie et de PENSIPP ici. Il faudrait voir à modifier pour avoir des temps partiel ''' # inactif <- 1 # chomeur <- 2 # non_cadre <- 3 # cadre <- 4 # fonct_a <- 5 # fonct_s <- 6 # indep <- 7 # avpf <- 8 # preret <- 9 #on travaille avec situa puis avec statut puis avec classif list_situa_work = [ [[1,2],3], [[4],2], [[5,6,7],1], [[1,2],3] ] recode(ind,'situa','workstate', list_situa_work ,'isin') # Note: ind['workstate'][ ind['situa']==3] = 0 : etudiant -> NA #precision inactif ind['workstate'][ind['preret']==1] = 9 # precision AVPF #TODO: "vous pouver bénéficier de l'AVPF si vous n'exercer aucune activité # professionnelle (ou seulement à temps partiel) et avez # la charge d'une personne handicapée (enfant de moins de 20 ans ou adulte). # Pour l'instant, on fait ça parce que ça colle avec PensIPP mais il faudrait faire mieux. #en particulier c'est de la législation l'avpf finalement. cond = (men['paje']==1) | (men['complfam']==1) | (men['allocpar']==1) | (men['asf']==1) avpf = men.ix[cond,:].index.values + 1 ind['workstate'][(ind['men'].isin(avpf)) & (ind['workstate'].isin([1,2]))] = 8 # public, privé, indépendant ind['workstate'][ ind['statut'].isin([1,2])] = 5 ind['workstate'][ ind['statut']==7] = 7 # cadre, non cadre ind['workstate'][ (ind['classif']==6) & (ind['workstate']==5)] = 6 ind['workstate'][ (ind['classif']==7) & (ind['workstate']==3)] = 4 #retraite ind['workstate'][ (ind['anais'] < 2009-64) & (ind['workstate']==1)] = 10 return ind['workstate']
def _updatedirstats(self, directory, size, files, subdirs, extensions): iter = self.sharelist.get_iter_first() while iter is not None: if directory[1] == self.sharelist.get_value(iter, 6): self.sharelist.insert_after(iter, [ directory[0], recode(directory[1]), HumanSize(size), files, subdirs, extensions, directory[1] ]) self.sharelist.remove(iter) return iter = self.sharelist.iter_next(iter)
def addshareddir(self, directory): iter = self.sharelist.get_iter_first() while iter is not None: if directory[1] == self.sharelist.get_value(iter, 6): return iter = self.sharelist.iter_next(iter) self.sharelist.append([ directory[0], recode(directory[1]), "", "", "", _("Counting files..."), directory[1] ]) thread.start_new_thread(self._addsharedir, (directory, ))
def matching_par_enf(self): ''' Matching des parents et des enfants hors du domicile ''' ind = self.ind par_look_enf = self.par_look_enf ## info sur les parents hors du domicile des enfants cond_enf_look_par = (ind['per1e']==2) | (ind['mer1e']==2) enf_look_par = ind[cond_enf_look_par] # Remarque: avant on mettait à zéro les valeurs quand on ne cherche pas le parent, maintenant # on part du principe qu'on fait les choses assez minutieusement recode(enf_look_par, 'dip14', 'dip6', [[30,5], [41,4], [43,3], [50,2], [60,1]] , method='geq') recode(enf_look_par, 'classif', 'classif2', [ [[1,2,3],4], [[4,5],2], [[6,7],1], [[8,9], 3], [[10],0]], method='isin') enf_look_par['classif'] = enf_look_par['classif2'] ## nb d'enfant nb_enf_mere_dom = ind.groupby('mere').size() nb_enf_pere_dom = ind.groupby('pere').size() nb_enf_mere_hdom = par_look_enf.groupby('mere').size() nb_enf_pere_hdom = par_look_enf.groupby('pere').size() enf_tot = pd.concat([nb_enf_mere_dom, nb_enf_pere_dom, nb_enf_mere_hdom, nb_enf_pere_hdom], axis=1) enf_tot = enf_tot.sum(axis=1) #comme enf_tot a le bon index on fait enf_look_par['nb_enf'] = enf_tot enf_look_par['nb_enf'] = enf_look_par['nb_enf'].fillna(0) #Note: Attention le score ne peut pas avoir n'importe quelle forme, il faut des espaces devant les mots, à la limite une parenthèse var_match = ['jepnais','situa','nb_enf','anais','classif','couple','dip6', 'jemnais','jemprof','sexe'] #TODO: gerer les valeurs nulles, pour l'instant c'est très moche #TODO: avoir une bonne distance score = "- 1 * (other.anais - anais) **2 - 1.0 * (other.situa - situa) **2 - 0.5 * (other.sexe - sexe) **2 - 1.0 * (other.dip6 - dip6) \ **2 - 1.0 * (other.nb_enf - nb_enf) **2" # etape1 : deux parents vivants cond1_enf = (enf_look_par['per1e'] == 2) & (enf_look_par['mer1e'] == 2) cond1_par = notnull(par_look_enf['pere']) & notnull(par_look_enf['mere']) # TODO: si on fait les modif de variables plus tôt, on peut mettre directement par_look_enf1 #à cause du append plus haut, on prend en fait ici les premiers de par_look_enf match1 = Matching(enf_look_par.ix[cond1_enf, var_match], par_look_enf.ix[cond1_par, var_match], score) parent_found = match1.evaluate(orderby=None, method='cells') ind.ix[parent_found.index, ['pere','mere']] = par_look_enf.ix[parent_found, ['pere','mere']] enf_look_par.ix[parent_found.index, ['pere','mere']] = par_look_enf.ix[parent_found, ['pere','mere']] cond2_enf = (~notnull(enf_look_par['mere'])) & (enf_look_par['mer1e'] == 2) cond2_par = ~par_look_enf.index.isin(parent_found) & notnull(par_look_enf['mere']) match2 = Matching(enf_look_par.ix[cond2_enf, var_match], par_look_enf.ix[cond2_par, var_match], score) parent_found2 = match2.evaluate(orderby=None, method='cells') ind.ix[parent_found2.index, ['mere']] = par_look_enf.ix[parent_found2, ['mere']] enf_look_par.ix[parent_found2.index, ['pere','mere']] = par_look_enf.ix[parent_found2, ['pere','mere']] cond3_enf = (~notnull(enf_look_par['pere'])) & (enf_look_par['per1e'] == 2) cond3_par = ~par_look_enf.index.isin(parent_found) & notnull(par_look_enf['pere']) # TODO: changer le score pour avoir un lien entre pere et mere plus évident match3 = Matching(enf_look_par.ix[cond3_enf, var_match], par_look_enf.ix[cond3_par, var_match], score) parent_found3 = match3.evaluate(orderby=None, method='cells') ind.ix[parent_found3.index, ['pere']] = par_look_enf.ix[parent_found3, ['pere']] self.ind = ind self.drop_variable({'ind':['enf','per1e','mer1e','gpar'] + ['jepnais','jemnais','jemprof']})