Forum d'entraide à la création de jeux d'aventure
 
PortailAccueilFAQRechercherS'enregistrerMembresConnexion

Partagez | 
 

 Topic blabla

Aller en bas 
Aller à la page : Précédent  1, 2, 3, 4, 5  Suivant
AuteurMessage
valoulef
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 1542

Date d'inscription : 01/08/2011


MessageSujet: Re: Topic blabla   Jeu 13 Fév 2014 - 20:33

Bon alors je suis vraiment désolé, mais j'aime pas Facebook, je n'ai presque pas d'abonnés sur Twitter, et je ne pouvais vraiment pas garder ça pour moi...

J'ai reçu cette pub dans ma boîte aux lettres. Et je suis sidéré de voir à quel point certains ne reculent devant rien.

Alerte mauvais goût de niveau 10:
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue


Nombre de messages : 1321

Date d'inscription : 10/05/2012


MessageSujet: Re: Topic blabla   Jeu 13 Fév 2014 - 20:42

grand sourire 
Ce soir, j'ai mangé une pizza.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 2637

Date d'inscription : 01/08/2006


MessageSujet: Re: Topic blabla   Jeu 13 Fév 2014 - 21:29

J'ai mis du temps à la comprendre... Maintenant, je regrette clin d'oeil

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
avatar

Nombre de messages : 1321

Date d'inscription : 10/05/2012


MessageSujet: Re: Topic blabla   Jeu 13 Fév 2014 - 21:43

Voilà voilà.
Ce soir, j'ai fait des blagues pourris sur le tchat.
J'ai aussi fait ça.

Je n'en suis que moyennement satisfait, mais le temps presse alors elle restera comme ça.
C'est la maman du joueur.
Spoiler:
 

Les anglophones aussi s'amusent bien.

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
valoulef
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 1542

Age : 29

Localisation : Condate

Date d'inscription : 01/08/2011


MessageSujet: Re: Topic blabla   Jeu 13 Fév 2014 - 21:55

Ben elle fonctionne pas mal du tout cette anim, je trouve...

Edit : n'oublie pas de garder un peu de temps pour le bilan du mois de février, parce que j'ai l'impression qu'il y aura un peu plus de boulot que d'habitude ce mois-ci ^^

_________________
"Je ne suis point cet assemblage de membres que l’on appelle le corps humain ; je ne suis point un air délié et pénétrant répandu dans tous ces membres ; je ne suis point un vent, un souffle, une vapeur, ni rien de tout ce que je puis feindre et m’imaginer, puisque j’ai supposé que tout cela n’était rien, et que, sans changer cette supposition, je trouve que je ne laisse pas d’être certain que je suis quelque chose."

René Descartes
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Atavismus
Grand Cliqueur Royal
Grand Cliqueur Royal
avatar

Nombre de messages : 1814

Localisation : France

Date d'inscription : 27/01/2014


MessageSujet: Re: Topic blabla   Jeu 13 Fév 2014 - 22:07

Chouette ! J'aime beaucoup le style.

MAGS !
MAGS !
MAGS !

Pour le bilan du mois de février, on peut lui accorder une dérogation, MAGS oblige.
Pour se faire, Valoulef va t'envoyer les formulaires Billbis grand sourire

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://store.steampowered.com/app/367110/
valoulef
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 1542

Age : 29

Localisation : Condate

Date d'inscription : 01/08/2011


MessageSujet: Re: Topic blabla   Jeu 13 Fév 2014 - 22:13

S'il le fait pas faut que quelqu'un le remplace, on ne peut pas louper le bilan de ce mois, on est en train d'exploser tous les records d'activité là ! Bon c'est vrai, ça tient aussi du fait qu'on blablate beaucoup, mais pas seulement.

_________________
"Je ne suis point cet assemblage de membres que l’on appelle le corps humain ; je ne suis point un air délié et pénétrant répandu dans tous ces membres ; je ne suis point un vent, un souffle, une vapeur, ni rien de tout ce que je puis feindre et m’imaginer, puisque j’ai supposé que tout cela n’était rien, et que, sans changer cette supposition, je trouve que je ne laisse pas d’être certain que je suis quelque chose."

René Descartes
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
avatar

Nombre de messages : 1321

Date d'inscription : 10/05/2012


MessageSujet: Re: Topic blabla   Ven 14 Fév 2014 - 14:45

Je veux bien me charger du compte rendu du mois de février (je veux bien délégué aussi, hein !), il sera juste sans doute un peu en retard, vers le 3 mars ou un truc comme ça.
Atavismus est bien plus enthousiaste que moi concernant mon MAGS. ^^
N'en attends pas trop, ou tu sera sacrément déçu.

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
valoulef
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 1542

Age : 29

Localisation : Condate

Date d'inscription : 01/08/2011


MessageSujet: Re: Topic blabla   Ven 14 Fév 2014 - 15:20

Il n'a jamais été dit que le bilan du mois devait être posté le 1er du mois suivant hein clin d'oeil
Donc le 3 mars c'est très bien aussi.

_________________
"Je ne suis point cet assemblage de membres que l’on appelle le corps humain ; je ne suis point un air délié et pénétrant répandu dans tous ces membres ; je ne suis point un vent, un souffle, une vapeur, ni rien de tout ce que je puis feindre et m’imaginer, puisque j’ai supposé que tout cela n’était rien, et que, sans changer cette supposition, je trouve que je ne laisse pas d’être certain que je suis quelque chose."

René Descartes
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 2637

Date d'inscription : 01/08/2006


MessageSujet: Re: Topic blabla   Ven 14 Fév 2014 - 16:55

Pauvre Billbis, maintenant il a une échéance fixe au 3 mars langue

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
valoulef
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 1542

Age : 29

Localisation : Condate

Date d'inscription : 01/08/2011


MessageSujet: Re: Topic blabla   Ven 14 Fév 2014 - 16:59

Jusqu'au 10 on tolèrera, s'il s'excuse pour le retard clin d'oeil

_________________
"Je ne suis point cet assemblage de membres que l’on appelle le corps humain ; je ne suis point un air délié et pénétrant répandu dans tous ces membres ; je ne suis point un vent, un souffle, une vapeur, ni rien de tout ce que je puis feindre et m’imaginer, puisque j’ai supposé que tout cela n’était rien, et que, sans changer cette supposition, je trouve que je ne laisse pas d’être certain que je suis quelque chose."

René Descartes
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
avatar

Nombre de messages : 1321

Date d'inscription : 10/05/2012


MessageSujet: Re: Topic blabla   Ven 14 Fév 2014 - 18:22

Sinon, il y a Dungeon Keeper gratuit sur gog pendant quelques heures.

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
Atavismus
Grand Cliqueur Royal
Grand Cliqueur Royal
avatar

Nombre de messages : 1814

Localisation : France

Date d'inscription : 27/01/2014


MessageSujet: Re: Topic blabla   Ven 14 Fév 2014 - 21:09

@Billbis a écrit:
Atavismus est bien plus enthousiaste que moi concernant mon MAGS. ^^
N'en attends pas trop, ou tu sera sacrément déçu.

J'aime beaucoup le style graphique et je trouve que ça se prête assez au sujet.
Je suis vraiment curieux de voir ce que ça va donner et je sens qu'il va y avoir du fond.
Eh ! Oh ! Il faut y croire ! clin d'oeil

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://store.steampowered.com/app/367110/
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
avatar

Nombre de messages : 1321

Date d'inscription : 10/05/2012


MessageSujet: Re: Topic blabla   Mer 5 Mar 2014 - 22:21

Ça avance, valoulef, ça avance.

Pour l'instant, ça ne concerne que les persos à 4 directions. Demain, j'attaque les huit directions.
/!\ code non commenté et non testé (mais il compile) /!\
N'essayez pas de le comprendre sans avoir :

  1. de solides connaissances en trigo.
  2. une boite de dolipranne.

En fait, il vaux mieux que vous attendiez quelques jours mes explications. ^^

Header
Code:
// FaceIsoLocation header
enum SpecifyDirection {
  eUp,
  eLeft,
  eRight,
  eDown,
  eNone
};

import float FIL_Applatissement;
import void FaceIsoDirection(this Character*, SpecifyDirection=eNone, BlockingStyle=eBlock);
import void FaceIsoLocation(this Character*, int x, int y, BlockingStyle BStyle = eBlock);
import void FaceIsoCharacter(this Character*, Character* toFace, BlockingStyle BStyle = eBlock);
import void FaceIsoObject(this Character*, Object* toFace, BlockingStyle BStyle = eBlock);
import void FIL_SetApplatissment(int horizonY);
Script
Code:
// FaceIsoLocation script

float FIL_Applatissement = 0.5;
float FIL_TheAngle;


float FIL_Abs(float x) {
 if (x >= 0.0) return x;
  else return -1.0*x;
}

void FaceIsoDirection(this Character*, SpecifyDirection Dir, BlockingStyle BStyle)
{
    if(Dir == eUp) this.FaceLocation(this.x, this.y-1, BStyle);
    else if(Dir == eLeft) this.FaceLocation(this.x-1, this.y, BStyle);
    else if(Dir == eRight) this.FaceLocation(this.x+1, this.y, BStyle);
    else if(Dir == eDown) this.FaceLocation(this.x, this.y+1, BStyle);
}

void FaceIsoLocation(this Character*, int x, int y, BlockingStyle BStyle)
{
    FIL_TheAngle = Maths.ArcCos(FIL_Applatissement)/2.0;
    
    int x0 = this.x;
    int y0 = this.y;
    int deltaX = x - x0;
    int deltaY = y0 - y; //AGS Y axes is pointing down
    
    float deltaXf = IntToFloat(deltaX);
    float deltaYf = IntToFloat(deltaY);
    
    float alpha = Maths.ArcTan2(deltaYf, deltaXf);
    
    if (deltaXf >= 0.0 && FIL_Abs(alpha) <= FIL_Abs(FIL_TheAngle)) {
        this.FaceIsoDirection(eRight, BStyle);
    } else if (deltaXf < 0.0 && FIL_Abs(alpha) <= FIL_Abs(FIL_TheAngle)) {
        this.FaceIsoDirection(eLeft, BStyle);
    } else if (deltaYf >=0.0) {
        this.FaceIsoDirection(eUp, BStyle);
    } else {
        this.FaceIsoDirection(eDown, BStyle);
    }
}

void FaceIsoCharacter(this Character*, Character* toFace, BlockingStyle BStyle)
{
    this.FaceIsoLocation(toFace.x, toFace.y, BStyle);
}

void FaceIsoObject(this Character*, Object* toFace, BlockingStyle BStyle)
{
    int x,  y;
    x = toFace.X + Game.SpriteWidth[toFace.Graphic]/2;
    y = toFace.Y - Game.SpriteHeight[toFace.Graphic]/2;
    this.FaceIsoLocation( x, y, BStyle);
}

void FIL_SetApplatissment(int horizonY) {
    if (horizonY >= 0 && horizonY <= Room.Height) {
        float horizonYf;
        horizonYf = IntToFloat(horizonY);
        int RoomHeight = Room.Height;
        float RoomHeightf = IntToFloat(RoomHeight);
    
        FIL_Applatissement = -1.0 *(horizonYf / RoomHeightf) + 1.0;
    }
}

export FIL_Applatissement;

_________________
Mon petit DevBlog


Dernière édition par Billbis le Jeu 6 Mar 2014 - 21:47, édité 2 fois (Raison : Edition en douce d'une vulgaire erreure de Trigo. Il fallait bien evidement faire FIL_TheAngle = Maths.ArcCos(FIL_Applatissement)/2; et non FIL_TheAngle = Maths.ArcTan(FIL_Applatissement);)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
avatar

Nombre de messages : 1321

Date d'inscription : 10/05/2012


MessageSujet: FaceSideViewLocations   Dim 9 Mar 2014 - 16:51

Et maintenant, place aux tests et à la documentation :
Header
Code:
// FaceIsoLocation header

enum SpecifyDirection {
  eUp,
  eLeft,
  eRight,
  eDown,
  eUpRight,
  eUpLeft,
  eDownRight,
  eDownLeft,
 eNone
};

struct SideViewFL {
    
    import static attribute float Angle4Dir;
    import static float get_Angle4Dir();// $AUTOCOMPLETEIGNORE$
    import static void set_Angle4Dir(float input);// $AUTOCOMPLETEIGNORE$
    
    import static attribute float Angle8Dir1;
    import static float get_Angle8Dir1();// $AUTOCOMPLETEIGNORE$
    import static void set_Angle8Dir1(float input);
    import static attribute float Angle8Dir2;
    import static float get_Angle8Dir2();// $AUTOCOMPLETEIGNORE$
    import static void set_Angle8Dir2(float input);// $AUTOCOMPLETEIGNORE$
    
    import static attribute float Flatness;
    import static float get_Flatness();// $AUTOCOMPLETEIGNORE$
    import static void set_Flatness(float input);// $AUTOCOMPLETEIGNORE$
    
    import static attribute int HorizonLevel;
    import static int get_HorizonLevel();// $AUTOCOMPLETEIGNORE$
    import static void set_HorizonLevel(int input);// $AUTOCOMPLETEIGNORE$
    
    import static void CharacterWithDiagonalLoops(Character *chara,  bool boule);
};

import void FaceSVDirection(this Character*, SpecifyDirection=eNone, BlockingStyle=eBlock);
import void FaceSVLocation(this Character*, int x, int y, BlockingStyle BStyle = eBlock);
import void FaceSVCharacter(this Character*, Character* toFace, BlockingStyle BStyle = eBlock);
import void FaceSVObject(this Character*, Object* toFace, BlockingStyle BStyle = eBlock);
Script
Code:
// FaceIsoLocation script

float Angle4Dir;
float Angle8Dir1;
float Angle8Dir2;
float Flatness;
int HorizonLevel;
bool IsCharacterWithDiagonalLoops[];

// Utilitary function
float SideView_Abs(float x) // return absolute value
{
 if (x >= 0.0) return x;
  else return -1.0*x;
}

// struct static definitions
static float SideViewFL::get_Angle4Dir()
{
    return Angle4Dir;
}

static void SideViewFL::set_Angle4Dir(float input)
{
    if (input >= 0.0 && input <= Maths.Pi/2.0) {
        Angle4Dir = input;
    }
}

static float SideViewFL::get_Angle8Dir1()
{
    return Angle8Dir1;
}

static void SideViewFL::set_Angle8Dir1(float input)
{
    if (input >= 0.0 && input <= Maths.Pi/2.0 && input <= Angle8Dir2) {
        Angle8Dir1 = input;
    }
}

static float SideViewFL::get_Angle8Dir2()
{
    return Angle8Dir2;
}

static void SideViewFL::set_Angle8Dir2(float input)
{
    if (input >= 0.0 && input <= Maths.Pi/2.0 && input >= Angle8Dir1) {
        Angle8Dir2 = input;
    }
}

static float SideViewFL::get_Flatness()
{
    return Flatness;
}

static void SideViewFL::set_Flatness(float input)
{
    if (input >= 0.0 && input <= 1.0) {
        Flatness = input;
        Angle4Dir = Maths.ArcCos(Flatness)/2.0;
        Angle8Dir1 = Maths.ArcCos(Flatness)/6.0;
        Angle8Dir2 = Maths.ArcCos(Flatness)/3.0;
    }
}

static int SideViewFL::get_HorizonLevel()
{
    return HorizonLevel;
}

static void SideViewFL::set_HorizonLevel(int input)
{
    if (input >= 0 && input <= Room.Height) {
        float horizonYf;
        horizonYf = IntToFloat(input);
        int RoomHeight = Room.Height;
        float RoomHeightf = IntToFloat(RoomHeight);
        SideViewFL.Flatness = -1.0 *(horizonYf / RoomHeightf) + 1.0; //Linear decrease of flatness. Probably not the best model. Arctan ?
   }
}

static void SideViewFL::CharacterWithDiagonalLoops(Character *chara,  bool boule)
{
    IsCharacterWithDiagonalLoops[chara.ID] = boule;
}

// Module core functions
void FaceSVDirection(this Character*, SpecifyDirection Dir, BlockingStyle BStyle)
{
    if(Dir == eUp) this.FaceLocation(this.x, this.y-1, BStyle);
    else if(Dir == eLeft) this.FaceLocation(this.x-1, this.y, BStyle);
    else if(Dir == eRight) this.FaceLocation(this.x+1, this.y, BStyle);
    else if(Dir == eDown) this.FaceLocation(this.x, this.y+1, BStyle);
    else if(Dir == eUpRight) this.FaceLocation(this.x+1, this.y-1, BStyle);
    else if(Dir == eUpLeft) this.FaceLocation(this.x-1, this.y-1, BStyle);
    else if(Dir == eDownRight) this.FaceLocation(this.x+1, this.y+1, BStyle);
    else if(Dir == eDownLeft) this.FaceLocation(this.x-1, this.y+1, BStyle);
}

void FaceSVLocation(this Character*, int x, int y, BlockingStyle BStyle)
{
    int deltaX = x - this.x;
    int deltaY = this.y - y; //AGS Y axes is pointing down
    float deltaXf = IntToFloat(deltaX);
    float deltaYf = IntToFloat(deltaY);
    float alpha = Maths.ArcTan2(deltaYf, deltaXf);
    if (!IsCharacterWithDiagonalLoops[this.ID]) { // Four loops character
        if (deltaX >= 0 && SideView_Abs(alpha) <= SideViewFL.Angle4Dir) {
            this.FaceSVDirection(eRight, BStyle);
        } else if (deltaX < 0 && SideView_Abs(alpha) <= SideViewFL.Angle4Dir) {
            this.FaceSVDirection(eLeft, BStyle);
        } else if (deltaY >0) {
            this.FaceSVDirection(eUp, BStyle);
        } else {
            this.FaceSVDirection(eDown, BStyle);
        }
    } else { // Eight loops character
        if (deltaX >= 0 && SideView_Abs(alpha) <= SideViewFL.Angle8Dir1) {
            this.FaceSVDirection(eRight, BStyle);
        } else if (deltaX >= 0 && SideView_Abs(alpha) <= SideViewFL.Angle8Dir2) {
            if (deltaY >=0) {
                this.FaceSVDirection(eUpRight, BStyle);
            } else {
                this.FaceSVDirection(eDownRight, BStyle);
            }
        } else if (deltaX < 0 && SideView_Abs(alpha) <= SideViewFL.Angle8Dir1) {
            this.FaceSVDirection(eLeft, BStyle);
        } else if (deltaX < 0 && SideView_Abs(alpha) <= SideViewFL.Angle8Dir2) {
            if (deltaY >=0) {
                this.FaceSVDirection(eUpLeft, BStyle);
            } else {
                this.FaceSVDirection(eDownRight, BStyle);
            }
        } else if (deltaY >=0) {
            this.FaceSVDirection(eUp, BStyle);
        } else {
            this.FaceSVDirection(eDown, BStyle);
        }
    }
}

void FaceSVCharacter(this Character*, Character* toFace, BlockingStyle BStyle)
{
    this.FaceSVLocation(toFace.x, toFace.y, BStyle);
}

void FaceSVObject(this Character*, Object* toFace, BlockingStyle BStyle)
{
    int x, y;
    x = toFace.X + Game.SpriteWidth[toFace.Graphic]/2;
    y = toFace.Y - Game.SpriteHeight[toFace.Graphic]/2;
    this.FaceSVLocation( x, y, BStyle);
}

function game_start () {
    IsCharacterWithDiagonalLoops = new bool[Game.CharacterCount];
    int i = 0;
    while (i < Game.CharacterCount) {
        IsCharacterWithDiagonalLoops[i] = false;
        i++;
    }
    SideViewFL.set_Flatness(0.5);
}

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
avatar

Nombre de messages : 1321

Date d'inscription : 10/05/2012


MessageSujet: Re: Topic blabla   Mar 29 Avr 2014 - 18:43

J'ai un petit problème de RegExp avec R. Si une personne, une chèvre ou un pan pouvait m'aider, ce serai cool !
 grand sourire 
J'ai un tableau de type :
gene_id                 RPKM
ENSG000000001.1 10.53
ENSG000000042.5 0
2018                   1.2
ENSG000000787.3 4
etc.

J'ai un vecteur de type :
ENSG000000042 ENSG000000787
Je cherche à récupérer pour chaque élément du vecteur le "RPKM" associé. Probléme, les gene_id finissent par un .N plutôt gênant.
Pour l'instant, mon code fonctionne pas trop mal, il ressemble à ça:
Rscript a écrit:
t<-data.frame("gene_id"=c("ENSG000000001.1","ENSG000000042.5","2018","ENSG000000787.3"), "RPKM"=c(10.53,0,1.2,4), stringsAsFactors =FALSE)
v<-c("ENSG000000042", "ENSG000000787")

Connaissez-vous une méthode plus élégante ?

l<-strsplit(t$gene_id, ".", fixed = TRUE)
for (i in 1:length(l)) {
     l[i]<-l[[i]][1]
}
l<-unlist(l)
rownames(t)<-l #il n'y a bien que des uniques

v<-data.frame("ensembl"=v, stringsAsFactors =FALSE)
v$RPKM<-t[v$ensembl,  "RPKM"]
Ça fonctionne, mais ce n'est pas très beau.  confus

Connaissez-vous une méthode plus élégante ?

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
Atavismus
Grand Cliqueur Royal
Grand Cliqueur Royal
avatar

Nombre de messages : 1814

Localisation : France

Date d'inscription : 27/01/2014


MessageSujet: Re: Topic blabla   Mar 29 Avr 2014 - 21:08

[23:01:37 29/04/14] Atavismus : yo bill
[23:01:56 29/04/14] Atavismus : tu devrais essayer ça comme regex
[23:01:44 29/04/14] Atavismus : /[^.]*/
(Un peu de pub pour le tchat grand sourire)

Je n'étais pas sûr du fonctionnement des regex dans R, mais un rapide googlage semble assez encourageant.
http://www.regular-expressions.info/rlanguage.html
http://ciam.inra.fr/r4ciam/node/148

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://store.steampowered.com/app/367110/
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 2637

Date d'inscription : 01/08/2006


MessageSujet: Re: Topic blabla   Mar 29 Avr 2014 - 22:15

Je ne suis pas très à l'aise avec R mais tu n'es pas sans savoir que c'est un langage assez puissant en termes de manipulation de données. Si vraiment tu veux garder le format des entrées dans ta colonne gene_id et passer par une expression régulière sur un vecteur, voici une solution :
Code:
t <- data.frame("gene_id"=c("ENSG000000001.1","ENSG000000042.5","2018","ENSG000000787.3"), "RPKM"=c(10.53,0,1.2,4), stringsAsFactors =FALSE)
v <- c("ENSG000000042", "ENSG000000787")
subset(t, grepl(paste("^(",paste(v, collapse='|'),")\\.\\d$", sep=''), gene_id))$RPKM
Je ne trouve pas ça particulièrement plus élégant, mais c'est plus court et ça fait le travail clin d'oeil

Petites explications :
  • subset te retourne un tableau contenant les lignes qui satisfont la condition booléenne que tu passes.
  • grepl est une version booléenne de grep qui teste le modèle d'expression régulière en premier argument sur la chaîne passée en second argument.
  • Ce que j'ai fait, c'est concaténer toutes les entrées de ton vecteur avec un | qui est le caractère disjonctif en expressions rationnelles : ab|cd cherche du texte qui correspond soit à "ab" soit à "cd". Pour plus de précision, on veut que les entrées apparaissent en tout début de texte (caractère ^) et soient suivies de .N (\\.\\d, double échappement) et c'est la fin du texte ($). Sur le vecteur de l'exemple, on se retrouve avec ^(ENSG000000042|ENSG000000787)\\.\\d$ !

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
avatar

Nombre de messages : 1321

Date d'inscription : 10/05/2012


MessageSujet: Re: Topic blabla   Mer 30 Avr 2014 - 10:03

Merci Atavismus et Kitai !
La solution de Kitai fonctionne presque, et est un poil plus rapide que ma solution d'origine (il faut dire que les for sous R ne sont pas son fort !). Presque seulement car elle ne retiens pas certaines lignes de types "ENSG00000166710.11". Hé oui, parfois le .N final est en fait un .NN, et peut-être dans des cas extrêmes des points .NNN. ^^
Bon, tu ne pouvais pas deviner. J'ai un peu du mal à implémenter la RegExp d'Atavismus, il faudrait que je lise un bon tutoriel sur ces machins un jour.

@Kitai a écrit:
Si vraiment tu veux garder le format des entrées dans ta colonne gene_id et passer par une expression régulière sur un vecteur
Non non, toutes les solutions me vont parfaitement.
En particulier, si tu connais l'astuce pour récupérer le premier élément de chaque vecteur d'une liste de vecteurs sans avoir à passer par mon affreuse boucle for, je suis preneur.
Encore merci.

_________________
Mon petit DevBlog


Dernière édition par Billbis le Mer 30 Avr 2014 - 11:03, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
Atavismus
Grand Cliqueur Royal
Grand Cliqueur Royal
avatar

Nombre de messages : 1814

Localisation : France

Date d'inscription : 27/01/2014


MessageSujet: Re: Topic blabla   Mer 30 Avr 2014 - 10:18

De rien Bill. clin d'oeil

grep("/[^.]*/", tonstring)
Ou un truc du genre ?
Je ne connais pas du tout R, juste un peu les regex.

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://store.steampowered.com/app/367110/
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 2637

Date d'inscription : 01/08/2006


MessageSujet: Re: Topic blabla   Mer 30 Avr 2014 - 12:21

@Billbis a écrit:
Hé oui, parfois le .N final est en fait un .NN, et peut-être dans des cas extrêmes des points .NNN. ^^
Libre à toi de modifier le modèle de façon à le rendre plus souple (il est très contraint ici). Si tu ne sais pas le nombre de N que tu as après le ., alors tu prendras simplement un modèle du genre ^(ENSG000000042|ENSG000000787)\\.\\d+$ (j'ai juste rajouté le + après \\d).
L'expression régulière que propose Atavismus est simple et efficace, mais elle ne permet pas à elle seule de prendre en compte les entrées du vecteur (tu ne veux que deux ENSG... spécifiques sur les trois).

@Billbis a écrit:
En particulier, si tu connais l'astuce pour récupérer le premier élément de chaque vecteur d'une liste de vecteurs sans avoir à passer par mon affreuse boucle for, je suis preneur.
Encore merci.
Je suis certain que ça doit se trouver sur stackoverflow avec les bons mots-clés.
En attendant je peux te proposer une solution un peu complexe (on imbrique plein de fonctions), mais en une seule ligne :
rownames(t)<-sapply(t$gene_id, function(x) unlist(strsplit(x,".",fixed=T))[1])
En gros sapply fait le boulot de la boucle for, et ne vectorise qu'à la fin.

EDIT : Une autre version de ma RegExp. Il y a une ligne de plus et à mon avis cela demande plus de calculs à la machine, mais ça évite de créer une expression régulière à rallonge. En cela, je la trouve plus élégante.
Code:
c <- sapply(v, function(x) grepl(paste("^",x,"\\.\\d+$",sep=""),t$gene_id))
t$RPKM[sapply(as.data.frame(t(c)), any)]

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Atavismus
Grand Cliqueur Royal
Grand Cliqueur Royal
avatar

Nombre de messages : 1814

Localisation : France

Date d'inscription : 27/01/2014


MessageSujet: Re: Topic blabla   Jeu 1 Mai 2014 - 22:13

@Kitai a écrit:
L'expression régulière que propose Atavismus est simple et efficace, mais elle ne permet pas à elle seule de prendre en compte les entrées du vecteur (tu ne veux que deux ENSG... spécifiques sur les trois).
Je ne vais pas faire tout le boulot à la place de Bill ! grand sourire

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://store.steampowered.com/app/367110/
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
avatar

Nombre de messages : 1321

Date d'inscription : 10/05/2012


MessageSujet: Re: Topic blabla   Sam 2 Aoû 2014 - 6:28

Connaissez-vous l'activité/concours Coloring the ball (littéralement : colorier la balle) du forum anglophone ? Il s'agit de remplir une forme prédéfinie en respectant un thème donné.
Ce mois ci, on doit dessiner une forme mystérieuse dans une piscine. Voici la forme :

On a le droit de la retourner dans tout les sens.
J'ai participé pour la première fois, et comme je suis fier du résultat...  grand sourire

...et bien je le poste ici aussi !

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 2637

Date d'inscription : 01/08/2006


MessageSujet: Re: Topic blabla   Sam 2 Aoû 2014 - 13:36

Très belle interprétation Billbis. Tu l'avais vu dans la forme dès le départ, ou bien c'est en tâtonnant que tu en es arrivé à dessiner le tentacule pourpre ?

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
avatar

Nombre de messages : 1321

Date d'inscription : 10/05/2012


MessageSujet: Re: Topic blabla   Sam 2 Aoû 2014 - 14:05

Merci. ^^
J'ai d'abord eu le pot de cactus, puis quand j'ai retourné la forme pour pouvoir dessiner le pot dans le bon sens, Tentacule Pourpre m'a semblé évident - tout du moins en lui rajoutant un couvre-chef approprié.

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
avatar

Nombre de messages : 1321

Date d'inscription : 10/05/2012


MessageSujet: Re: Topic blabla   Mar 9 Sep 2014 - 7:45

Vous l'avez peut-être remarqué, je ne suis plus très présent en ce moment. Et Nothing About The Dog semble être à l'abandon. Tout va bien, c'est juste une pause.
Si je ne désespère pas pouvoir m'y consacrer un peu de temps en temps, cette absence relative d'activité risque de se prolonger jusqu’en Février. Pour ceux que ça intéresse, j'ai une thèse à finir d'écrire, puis à soutenir, et un déménagement et une nouvelle installation à préparer.
Mais ensuite, je reviendrai avec plein de nouveau projets !
Normalement, je ferai un compte rendu d'activité du forum des mois Août Septembre groupé à la fin du mois.

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
valoulef
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 1542

Age : 29

Localisation : Condate

Date d'inscription : 01/08/2011


MessageSujet: Re: Topic blabla   Mer 10 Sep 2014 - 10:03

De toute façon je crois qu'on entre doucement dans la traversée du désert automnale, qu'on avait aussi connu l'année dernière. Et d'ailleurs au final, ça n'avait pas empêché au forum d'être très actif quelques mois plus tard. C'est comme ça : des fois on a la tête à autre chose, ou pas beaucoup de temps. Bonne chance pour ta thèse !

_________________
"Je ne suis point cet assemblage de membres que l’on appelle le corps humain ; je ne suis point un air délié et pénétrant répandu dans tous ces membres ; je ne suis point un vent, un souffle, une vapeur, ni rien de tout ce que je puis feindre et m’imaginer, puisque j’ai supposé que tout cela n’était rien, et que, sans changer cette supposition, je trouve que je ne laisse pas d’être certain que je suis quelque chose."

René Descartes
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Topic blabla   

Revenir en haut Aller en bas
 
Topic blabla
Revenir en haut 
Page 2 sur 5Aller à la page : Précédent  1, 2, 3, 4, 5  Suivant
 Sujets similaires
-
» Topic inutile.
» Baby-blabla
» Topic des parties, comment le rendre clair ....
» [Blabla+Photos] Foire de Lyon, Japonissime
» Le topic des photos des copines d'interflo

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: FORUM DE LA GRANDE TASSE BLEUE :: Divers-
Sauter vers: