-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgene_seq.c
126 lines (97 loc) · 2.67 KB
/
gene_seq.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <ctype.h>
#include "fonction_gene_seq.h"
#include "fonction_aleatoire.h"
#include "fonction_lecture.h"
int main(int argc, char const *argv[])
{
srand(time(NULL));
int i;
//char taille[BUFFERMAX];
char motif[150] ; //Motif entré par l'utilisateur
char nom[20]; //Nom du fichier que l'utilisateur veut générer
char filename[20];
char fastaname[20];
float** PSSM = NULL;
int subst = 0 ; //Nombre de substitutions max
int nbMotifs = 0; // Nombre de Motifs au total (nécessaire pour le calcul de la PSSM)
printf("Nom du fichier à générer :\n");
LireChaine(nom,20);
printf("Motif :\n");
LireChaine(motif,150);
int tailleMotif = strlen(motif);
printf("tailleMotif : %i\n",tailleMotif );
printf("Nombre de substitutions autorisées : \n");
subst = LireNombreEntier();
/*
PSSM = (int*) calloc(tailleMotif * 4, sizeof(int));
for(size_t hop = 0; hop < (tailleMotif * 4); hop++)
{
PSSM[hop] = 0.0;
}
*/
PSSM = (float**) calloc(tailleMotif, sizeof(float*));
for(size_t hop = 0; hop < tailleMotif; hop++)
{
PSSM[hop] = (float*) calloc(4, sizeof(float));
}
//PSSM= *adr_PSSM;
// initialisation des colonnes de la PSSM
//for ( i = 0; i < tailleMotif; i++)
//{
// PSSM[i] = (float*) calloc(4, sizeof(float));
//}
//Motifs* listeMotifs = NULL;
FILE* Seqfile = NULL;
//FILE* Fastafile = NULL;
sprintf(filename,"%s.txt",nom);
if((Seqfile = fopen(filename,"w+")) != NULL){
sprintf(fastaname,"%s.fasta",nom);
fprintf(Seqfile, "Motif : %s\n\n",motif);
int choixSeq=0;
printf("Combien de séquences voulez vous générer ?\n");
do
{
//printf(">");
choixSeq = LireNombreEntier();
} while(choixSeq == 0);
char** sequences = (char**)malloc(sizeof(char*) * choixSeq);
for(int i = 0; i < choixSeq; i++)
{
sequences[i] = NULL;
}
for (i = 0; i < choixSeq; i++)
{
//fprintf(Seqfile, "Seq %d\n", i+1);
//fprintf(Fastafile, ">seq%i\n", i+1);
int choixTaille = 200; //rand()%250+10;
fprintf(Seqfile, "Taille : %d\n", choixTaille);
sequences[i] = genSeq(choixTaille, tailleMotif, subst, motif, Seqfile, PSSM, &nbMotifs);
}
// Permet de donnée la fréquence de l'apparition des bases à la PSSM
freqPSSM(PSSM, nbMotifs, tailleMotif);
// Affichage de la PSSM
for (int i = 0; i < tailleMotif; i++)
{
printf("\nPosition %d\n", i);
printf("A : %f\n", PSSM[i][0]);
printf("T : %f\n", PSSM[i][1]);
printf("G : %f\n", PSSM[i][2]);
printf("C : %f\n", PSSM[i][3]);
}
//ecritureFasta(nom,sequences,choixSeq);
fclose(Seqfile);
for ( i = 0; i < choixSeq; ++i)
{
free(sequences[i]);
}
return 0;
}
else
{
return 1;
}
}