VB u otro lenguaje de programación, hay muchos puntos.
'A--1
'C--2
'G--3
'T--4 p> p>
'Parece que solo existen estas cuatro letras, ¿por qué se sienten como pares de bases de genes?
Opción explícita
Subcomando privado1_Click()
Atenuar i mientras, j mientras, k mientras
Atenuar S como Cadena, SS como cadena
Dim M() como entero, N como largo
Dim Fc() como entero, Fg() como entero, Fcpg() como entero, Fgpc( ) Como entero, P() como doble, R() como doble, FN como largo
Dim DTa como doble, DTb como doble
S = Text1.Text 'Leer datos, También se puede cambiar para leer desde un archivo TXT.
N = Len(S)
ReDim M(1 a N)
Para i = 1 a N
SS = Medio (S, i, 1)
Seleccione Caso SS
Caso "A"
M(i) = 1
Caso " C"
M(i) = 2
Caso "G"
M(i) = 3
Caso "T"
M(i) = 4
Caso Else
MsgBox "Hay datos anormales en la fuente de datos. Los datos " & CStr(i) & " no es ACGT, salga ", , ","
Salir Sub
Fin Seleccionar
Siguiente i
S = "" p >
Si N < 51 Entonces
MsgBox "Hay menos de 51 datos en la fuente de datos, salga.
", , ""
Salir Sub
Finalizar si
FN = N - 49
ReDim Fc(1 a FN)
ReDim Fg(1 a FN)
ReDim Fcpg(1 a FN)
ReDim Fgpc(1 a FN)
ReDim P (1 a FN)
ReDim R(1 a FN)
Para i = 1 a 50
Si M(i) = 2 Entonces Fc(1 ) = Fc(1) + 1
Si M(i) = 3 Entonces Fg(1) = Fg(1) + 1
Siguiente i
Para i = 1 a 49
Si M(i) = 2 y M(i + 1) = 3 Entonces Fcpg(1) = Fcpg(1) + 1
Si M (i) = 3 Y M(i + 1) = 2 Entonces Fgpc(1) = Fgpc(1) + 1
Siguiente i
j = Fc(1) + Fg (1)
Si j > 0 Entonces
P(1) = 4 * Fcpg(1) / (j * j)
Si no
P(1) = -1
Fin si
Si Fgpc(1) > 0 Entonces
R(1) = Fcpg(1 ) / Fgpc(1)
Else
R(1) = -1
Finalizar si
Para i = 2 a FN
Fc(i) = Fc(i - 1)
Fg(i) = Fg(i - 1)
Fcpg(i) = Fcpg( i - 1)
Fgpc(i) = Fgpc(i - 1)
Si M(i - 1) = 2 Entonces
Fc(i) = Fc(i) - 1
Si M(i) = 3 Entonces Fcpg(i) = Fcpg(i) - 1
Fin si
Si M(i - 1) = 3 Entonces
Fg(i) = Fg(i) - 1
Si M(i) = 2 Entonces Fgpc(i) = Fgpc(i ) - 1
Fin si
Si M(i + 49) = 2 Entonces
Fc(i) = Fc(i) + 1
Si M(i + 48) = 3 Entonces Fgpc(i) = Fgpc(i) + 1
Fin si
Si M(i + 49) = 3 Entonces
Fg(i) = Fg(i) + 1
Si M(i + 48) = 2 Entonces Fcpg(i) = Fcpg(i) + 1
Fin Si
j = Fc(i) + Fg(i)
Si j > 0 Entonces
P(i) = 4 * Fcpg(i) / (j * j)
De lo contrario
P(i) = -1
Fin si
Si Fgpc(i) > 0 Entonces
R(i) = Fcpg(i) / Fgpc(i)
Si no
R(i) = -1
Finalizar si
Siguiente i
'La siguiente es la salida, que también se puede cambiar para enviarla a un archivo TXT. Donde -1 significa que el divisor es 0.
S = "P" & Chr(9) & Chr(9) & "R" & vbCrLf
Para i = 1 a FN
'S = S & CStr(P(i)) & Chr(9) & CStr(R(i)) & vbCrLf
S = S & Formato(P(i), "0.000000") & Chr( 9) & CStr(R(i)) & vbCrLf
Siguiente i
Texto2.Text = S
End Sub