---
# System prepended metadata

title: 'Análise de transcritôma - P. vulgaris exercícios aula '

---

(tem mais coisas antes. O que está descrito aqui é da aula do dia 01/11/23)

limpar o genome.fa, tirando os títulos dos >.

Seguir as instruções para instalação do e-direct.

Caso precise atualizar o conjunto de programas do e-direct, remova primeiro a pasta correspontende

```

```


Sequenciamento

é bem comum encontrar contaminação por adaptador na porção 3' de adaptador em R1 e R2, isso acontece porque não é sequenciado por completo o inserto. Isso é bem comum, um erro da máquina que tem que ser considerado.

avaliação do RNA -> eletroforese das bandas do 28S/18S (razão de 2:1) em eucarioto e 23S/16S. O bioanalyzer faz eletroforese capilar, que é bem mais precisa.Os picos de sinal são correspondentes às bandas do gel de agarose.

rRNA = problema para sequenciamento, pela quantidade.

Tem como enriquecer a amostra com RNAs mais raros usando a ideia de melting. Os mais abunantes vão encontrar seu parceiro mais rápido, então coloca uma enz de restrição para cortar os RNAs mais abundantes e os mais raros são enriquecidos.

POr questões da máquina e processo, a porção 3' tem qualidade menor e R2 tenha sua porção 3' ainda mais prejudicada. Mas isso pode ser arrumado com R1 e R2 sendo sobreposto até certo nivel. Quando a qualidade da base é igual e as bases são diferentes/divergentes é melhor deixar um N (indetermidado) a colocar uma base que não seja a real.

RiN - RNA integrity. Essa classificação é fruto de um algoritmo de aprendizado de máquinas que mostra o que é íntegro do que não é íntegro. Varia de 0 a 10, sendo que 7 é minimamente bom para o sequenciamento.

É feita uma qPCR para avaliar a quantidade de moléculas antes de ser sequenciada.


fasta:

@nome da máquina + detalahmentos do sequenciamento
bases nitrogenadas
+(informações sobre)
caracteres de qualidade (referidos na tabela ascii), que varia de 33 ou 64 de codificação. Hoje se usa só o 33, programas mais antigos era 64.

em que saber qual a versão da illumina phred que você está usando!! o fastq precisa de menos bytes para passar a mesma informação do fasta com o (qual) - índice de qualidade.
metadados - dados que explicam os dados. isso é bastante comum no depósito dos dados no ncbi ou outras bases de dados.
![tela.PNG](https://hackmd.io/_uploads/BkcS4ZYQp.png)

Onde ficam as sequências de RNA-seq => SRA no NCBI

PROCESSAMENTO E ANÁLISE DE DADOS 

alinhamento = princípio fundamental da bioinformática

matrizes de substituíção de nucleotídeos: I)jukes-Kantor (mesma probabilidade de troca de nucleotpides, sem levar em consideração a natureza da base) ou II) Kimura (leva em consideração a natureza de transversão, da natureza das bases)
PAM = global e Blossum = local
Alinhamentos PAM com valores menores = menor divergência entre elas, mais próximo evolutivamente.

e-value - número de chances de encontrar um match igual ou melhor do que eu encontrei ao acaso, para o tamanho do banco de dados naquele momento.

MATRIX DE PONTOS - identifica o match de bases idênticas, análise qualitativa de estrutura. A diagonal mostra as regiões similares/idênticas. Indica assinaturas de inversão e repetições 

ALINHAMENTOS CONSIDERANDO AS NOVAS GERAÇÕES DE SEQUENCIAMENTO

o Bowtie usa algoritmos de Árvores de prefixos e sufixos que busca a maior profundidade. Ele segmenta todas as letras e dá um valor para ela, por exemplo de matches e mismatches, e "soma" esses valores.  No final, ele verifica quem foi mais profundo. Ele também inicia de trás pra frente na sequência.

    Transformação de Burrows-Wheeler - ele maximiza a compressão de dados, por meio de ordernações diferenciais.
    
O bowtie necessita de um índice para trabalhar


Prática de alinhamento:

Fizemos uma nova pasta index pra trabalhar nela. Detalhe importante: criamos um link "de referência" acessar o genome.fa da outra pasta

```
mkdir index
cd index
ln -s ../ref/genome.fa
bowtie2-build -f genome.fa genome
```

o inspect volta o que era antes, sem o  index (o less é só pra aparecer a última página)

```
bowtie2-inspect genome | less
```

Depois para fazer o alinhamento de uma sequência aleatória no arquivo genome e exportar para o arquivo test.sam

```
bowtie2 -c "GTTCCCAGCGAGAGCGTTACGCATGGATCTCGCATGAGCACGCCTCAG" -x genome -S test.sam

```

Para alinhar sequências pair-ended, isso com sequências feitas à mão. Para arquivos fasta é o próximo passo.

```
bowtie2 -c -1 "GTGTAACTACGAAACATTTGCCAGCATTTTATTATTCATCTCCTGATTTCTATTTTGGTAGAGACCAGGA" -2 "GCAGGGACTGCCAACCGTCGAAATCTGGTACTAAGCTTCAAAGTTTTTGAAAGCCTTTGACTTCTATCAA" -x genome -S test.sam --maxins 1000

```
> 1 reads; of these:
  1 (100.00%) were paired; of these:
    0 (0.00%) aligned concordantly 0 times
    1 (100.00%) aligned concordantly exactly 1 time
    0 (0.00%) aligned concordantly >1 times
    ----
    0 pairs aligned concordantly 0 times; of these:
      0 (0.00%) aligned discordantly 1 time
    ----
    0 pairs aligned 0 times concordantly or discordantly; of these:
      0 mates make up the pairs; of these:
        0 (0.00%) aligned 0 times
        0 (0.00%) aligned exactly 1 time
        0 (0.00%) aligned >1 times
100.00% overall alignment rate


Alinhando arquivos inteiros:

>  bmoreno@spiderman:/data/bioaat/bmoreno/pvulgaris/index$ bowtie2 -1 ../raw/SAMPLEC1_R1.fastq -2 ../raw/SAMPLEC1_R2.fastq -x genome -S test.sam --maxins 600
974 reads; of these:
  974 (100.00%) were paired; of these:
    878 (90.14%) aligned concordantly 0 times
    96 (9.86%) aligned concordantly exactly 1 time
    0 (0.00%) aligned concordantly >1 times
    ----
    878 pairs aligned concordantly 0 times; of these:
      327 (37.24%) aligned discordantly 1 time
    ----
    551 pairs aligned 0 times concordantly or discordantly; of these:
      1102 mates make up the pairs; of these:
        681 (61.80%) aligned 0 times
        421 (38.20%) aligned exactly 1 time
        0 (0.00%) aligned >1 times
65.04% overall alignment rate


 **O bowtie não entende splicing**, ele acha que é genoma com genoma por isso que deu só 96 reads que alinham 1 vez só. não funciona direito para eucariotos. Se for alinhamento rna-rna é de boa, é uma boa ferramenta. Ele não consegue alinhar de forma descontínua, por exemplo uma read que pega a região de união de exon. Ele não é capaz de "dividir" a fração de cada éxon. Daí, neste caso elas são classificadas como reads inicialmente não mapeadas. Ele também é capaz de predizer regiões de introns e "faz" o splicing e tenta alinhar essas inicialmente não mapeadas. Se der certo, boa, ele alinha. Caso não, a read é perdida. 

Fazendo com o bwa

```
bwa index genome.fa

```
> [bwa_index] Pack FASTA... 0.37 sec
[bwa_index] Construct BWT for the packed sequence...
[BWTIncCreate] textLength=86550302, availableWord=18089684
[BWTIncConstructFromPacked] 10 iterations done. 29839102 characters processed.
[BWTIncConstructFromPacked] 20 iterations done. 55123726 characters processed.
[BWTIncConstructFromPacked] 30 iterations done. 77592734 characters processed.
[bwt_gen] Finished constructing BWT in 35 iterations.
[bwa_index] 24.96 seconds elapse.
[bwa_index] Update BWT... 0.22 sec
[bwa_index] Pack forward-only FASTA... 0.23 sec
[bwa_index] Construct SA from BWT and Occ... 10.10 sec
[main] Version: 0.7.17-r1188
[main] CMD: bwa index genome.fa
[main] Real time: 35.982 sec; CPU: 35.872 sec

vendo com o bwa agora
```
bwa mem genome.fa ../raw/SAMPLEC1_R1.fastq ../raw/SAMPLEC1_R2.fastq > bwa_sampleC1.sam
```

o **samtools** é um programa que te permite trabalhar com arquivos sam. Para organizar o arquivo sam por nome para ser comparável:

```
samtools sort -n -o bwa_SAMPLEC1_sorted.sam bwa_sampleC1.sam
samtools sort -n -o test_sorted.sam test.sam
```

Para ver os resultados 
        *o SAM_nameSorted_to_uniq_counts_stats.pl já está no path, então é só rodar

```
SAM_nameSorted_to_uniq_count_stats.pl bwa_SAMPLEC1_sorted.sam > bwa_SAMPLEC1_sorted_results.txt

SAM_nameSorted_to_uniq_count_stats.pl test_sorted.sam > test_sorted_results.txt


```

Resultado do bwa_SAMPLEC1_sorted_results.txt
>496 aligned fragments; of these:
  496 were paired; of these:
    1 aligned concordantly 0 times
    197 aligned concordantly exactly 1 time
    298 aligned concordantly >1 times
    ----
    1 pairs aligned concordantly 0 times; of these:
    0 aligned as improper pairs
    1 pairs had only one fragment end align to one or more contigs; of these:
       1 fragments had only the left /1 read aligned; of these:
            1 left reads mapped uniquely
            0 left reads mapped >1 times
       0 fragments had only the right /2 read aligned; of these:
            0 right reads mapped uniquely
            0 right reads mapped >1 times
Overall,  99.80% of aligned fragments aligned as proper pairs


Resultado do test_sorted_results.txt

>461 aligned fragments; of these:
  461 were paired; of these:
    371 aligned concordantly 0 times
    84 aligned concordantly exactly 1 time
    6 aligned concordantly >1 times
    ----
    371 pairs aligned concordantly 0 times; of these:
    234 aligned as improper pairs
    137 pairs had only one fragment end align to one or more contigs; of these:
       73 fragments had only the left /1 read aligned; of these:
            61 left reads mapped uniquely
            12 left reads mapped >1 times
       64 fragments had only the right /2 read aligned; of these:
            54 right reads mapped uniquely
            10 right reads mapped >1 times
Overall,  19.52% of aligned fragments aligned as proper pairs

no bowtie, não colocamos parametros de sensibilidade. Isso pode ter contribuido para que o alinhamento tenha dado pior

Fazendo com --very-sensitive não mudou nada

> 461 aligned fragments; of these:
  461 were paired; of these:
    371 aligned concordantly 0 times
    84 aligned concordantly exactly 1 time
    6 aligned concordantly >1 times
    ----
    371 pairs aligned concordantly 0 times; of these:
    237 aligned as improper pairs
    134 pairs had only one fragment end align to one or more contigs; of these:
       71 fragments had only the left /1 read aligned; of these:
            59 left reads mapped uniquely
            12 left reads mapped >1 times
       63 fragments had only the right /2 read aligned; of these:
            53 right reads mapped uniquely
            10 right reads mapped >1 times
Overall,  19.52% of aligned fragments aligned as proper pairs


ALINHAMENTO DE SEQUÊNCIAS DE TRANSCRIPTOMAS (RNA-seq)

TopHat

Tem como avaliar onde estão as uniões/junções de éxons. È mais díficil, porque tem que ter evidências como parte da sequência dos dois lados dos exons e com múltiplas cópias para aumentar a confiabilidade de que ali é mesmo uma união de exon.
    * ele está no path, agora
    o tophat precisa do python 2, e agora ele está no 3. Então tem que entrar nesse ambiente
    cd
    
```
bmoreno@spiderman:/data/bioaat/bmoreno/pvulgaris/index$ source /usr/local/bioinfo/anaconda3/etc/profile.d/conda.sh

bmoreno@spiderman:/data/bioaat/bmoreno/pvulgaris/index$ conda activate python2
(python2) bmoreno@spiderman:/data/bioaat/bmoreno/pvulgaris/index$
```

o (python2) mostra que deu certo!!

o tophat usa o mesmo indice do bowtie2

para rodar o tophat

```
tophat2 genome ../raw/SAMPLEC1_R1.fastq ../raw/SAMPLEC1_R2.fastq

```

            *para procariotos tem que colocar --no-novel-junc e --max-intron-length 5000000 (valores absurdos!! justamente para que não haja problemas e que não exista na realidade) -> tudo iso para garantir que ele não busque junções de introns.

ele cria um novo diretório tophat_out com arquivo .bam. Permite identificação de inserção e deleção nos arquivos deletions.bed ou insertions.bed.

junctions.bed mostra onde ele prediz que tenha união de éxons. 

Ele só mostra o que alinhou no formato bam. Como é um formato 'ruim', vamos transformar em sam

```
samtools view -h accepted_hits.bam > accepted_hits.sam

```

> (python2) bmoreno@spiderman:/data/bioaat/bmoreno/pvulgaris/index/tophat_out$ samtools view -h accepted_hits.bam > accepted_hits.sam
(python2) bmoreno@spiderman:/data/bioaat/bmoreno/pvulgaris/index/tophat_out$ ls
accepted_hits.bam  align_summary.txt  insertions.bed  logs             unmapped.bam
accepted_hits.sam  deletions.bed      junctions.bed   prep_reads.info

```
more accepted_hits.sam
```

> @HD     VN:1.0  SO:coordinate
@SQ     SN:NC_023750.1  LN:43275151
@PG     ID:TopHat       VN:2.1.1        CL:/usr/local/bioinfo/tophat-2.1.1.Linux_x86_64/tophat ge
nome ../raw/SAMPLEC1_R1.fastq ../raw/SAMPLEC1_R2.fastq
@PG     ID:samtools     PN:samtools     PP:TopHat       VN:1.16.1       CL:samtools view -h accep
ted_hits.bam
Frag_1  161     NC_023750.1     41452501        50      151M    =       41454868        2929    G
CTTCTTCTTGTTAACAGATTCGTTCACAGAACTCCCCACCAACTTTCTAGATGCTGCCAAGAAGCCTGAGGTATCTGACTGGATGGTCAGAATCAGA
AGGAAGATTCACCAGAATCCAGAATTGGGTTATGAGGAATTTGAGACCAGTAA   FECGGCCG=GFGGEF@<GGF/GFBGEGG?9FGF@FFCFGG@
G2EFGEGG9GAGFDEGCEA@AFGBG4GG1GFAFG'B=F4@FEDEFDD;/1/EC?EF>CCFD>FCD><ACB0FD=7B@$E@43B=&E:0<>D=2?/&2
A<:66252;?8,&   AS:i:-2 XN:i:0  XM:i:1  XO:i:0  XG:i:0  NM:i:1  MD:Z:75T75      YT:Z:UU NH:i:1
Frag_9  161     NC_023750.1     41452502        50      151M    =       41452766        2439    C
TTCTTCTTGTTAACAGATTCGTTCACAGAACTCCCCACCAACTTTCTAGATGCTGCCAAGAAGCCTGAGGTATTTGACTGGATGGTCAGAATCAGAA
GGAAGATTCACCAGAATCCAGAATTGGGTTATGAGGAATTGGAGCCCAGTAAA   >DFFFG&FGFEG@EE8GGGFGGGGGFGEGGGGGEFGGFG@?
GEEGEEGGG9F<FFEGG@FG<CA31GCAGFF4GFG(@<=GGBGG>FF<GCGF-FFC86G>FFBD8DE7.=+E5D@@@>:?>8FD7DDA6DA793=%/
%&=A(?3:=7..%   AS:i:-4 XN:i:0  XM:i:2  XO:i:0  XG:i:0  NM:i:2  MD:Z:138T3A8    YT:Z:UU NH:i:1
Frag_4  161     NC_023750.1     41452525        50      151M    =       41455439        3065    T
CACAGAACTCCCCACCAACTTTCTAGATGCTGCCAAGAAGCCTGAGGTATTTGACTGGATGGTCAGAATCAGAAGGAAGATTCACCAGAATCCAGAA
TTGGGTTATGAGGAATTTGAGACCAGTAAAGTCATTAGAGAGAAATTGGATCA   EFGGGGGGGFCGGEGGG;GGFD?FGDGGGCDGGFG?GGGFE
GG8GF@EGFG;GGFGGGGGF7GGGGGGEGGDFFCGFGG-EG0GFEGFEGGD4GFGFGAFDFC/ECFGDFGBD:;=GFFFF%DEE@?CBA?>BF?E0D
4F<D4EF1>;D70   AS:i:0  XN:i:0  XM:i:0  XO:i:0  XG:i:0  NM:i:0  MD:Z:151        YT:Z:UU NH:i:1
Frag_6  161     NC_023750.1     41452633        50      151M    =       41457270        4788    A
GGAATTTGAGACCAGTAAAGTCATTAGAGAGAAATTGGATCAACTGGGCATACCCTATAAACACCCTGTTGCAATCACTGGTGTAATTGGCTTCATT
GGGACTGGAAGATCGCCTTTTGTTGCTATAAGAGCTGATATGGATGCTCTTCC   @GFGGFB?FG*GEGGGG<BGFG@FFGG>GGFGGDGGGGGGG
FDD>GGGG(EGG=GGCGFFBGFFG>GGGGGBADGGG@;@GGGB@GGF:FBF=GGACEGFGFDGGBEFFCG>-%:F@@FG?;0/F@F@BC&@A>EAE4
3DD<AE399A0=.   AS:i:-2 XN:i:0  XM:i:1  XO:i:0  XG:i:0  NM:i:1  MD:Z:49T101     YT:Z:UU NH:i:1
Frag_9  81      NC_023750.1     41452766        50      25M2024N126M    =       41452502        -
2439    TGATATGGATGCTCTTCCCATGCAGGAAATGGTGGAGTGGGAGCACAAGAGTAAAGTACCTGGAAAGATGCATGCTTGTGGTCATGATG
CTCATGTGGCTATGCTTCTTGGTGCTGCGAAGATTCTTAAACAGCATGAAAAAGAGATACAA  %2>D5?AAE8A,@@7DGEFEF6F3CCG>E5EC7
F:C:EF@<GDEDC*FF?DGFGEGDFFGEGFBFFFGF;GGBGG+GGD?GFCG<GG=G4GGEFFEGG@EBGFGGFEGGGGG?CEGGEGGGGGFFGGGFG
GGDGGBGGGDGAGGCGF$GDG   AS:i:-8 XM:i:0  XO:i:0  XG:i:0  MD:Z:151        NM:i:0  XS:A:+  NH:i:1
Frag_1  81      NC_023750.1     41454868        50      73M411N78M      =       41452501        -
2929    TGGTCATGATGCTCATGTGGCTATGCTTCTTGGTGCTGCGAAGATTCTTAAACAGCATGAAAAAGAGATACAAGGAACTGTAGTTCTTG
TTTTCCAACCAGCAGAGGAAGGAGGTGGGGGAGCCAAGAAAATTTTAGATGCTGGAGCCTTA  2>A=<*??B=C57FCD,CABD?C=BFBBCEAB)
B9F:FGFGF9FCGFCGGGAGFAEFGGGF@GEGAFG*GFECGGFGG0EGGEGGG?G.FGFEGFGFGGEGEFGGGFGFGFFGGEDF6GEFGGGBGGGGG
GFEFFGG1BGEGGGAGDFGAG   AS:i:-8 XM:i:0  XO:i:0  XG:i:0  MD:Z:151        NM:i:0  XS:A:+  NH:i:1
q
                                                                   
                                                                          
                                                            
                                                                          Isso é pra usar as referências do gft que já foram mapeadas dos introns para facilitar a identificação dos introns
                                                                          ```
tophat2 --GTF ../../ref/genome.gtf genome ../raw/SAMPLEC1_R1.fastq ../raw/SAMPLEC1_R2.fastq
                                                                                                                                  
                                                                          tophat2 --b2-very-sensitive --transcriptome-index ./transcriptome --GTF ../ref/genome.gtf genome ../raw/SAMPLEC1_R1.fastq ../raw/SAMPLEC1_R2.fastq
                                                                          
tophat2 --b2-very-sensitive --transcriptome-index ./transcriptome --library-type fr-firststrand --GTF ../ref/genome.gtf genome ../raw/SAMPLEC1_R1.fastq ../raw/SAMPLEC1_R2.fastq     -> aqui não fez muita diferença. Ver de novo, rodar para ver o que dá.
    
o fr-firststrand só dá certo se for a biblioteca TruSeq da Illumina, senão ele lê errado.
    
    Quando é o tophat, o alinhamento é em relação à fita senso, quando comparado no transcriptoma. No genoma isso não funciona, porque nao tem senso e antisenso.
    
    rf no bowtie <- ->
    fr -> <- (eu vou usar essa aqui, que é pair-ended da illumina)
             
o bedtools é interessante para selecionar coisas específicas em arquivos bed, por exemplo a expressão de genes específicos usando as coordenadas do arquivo gff ou gtf

O tophat verifica a predição de introns quando uma parte da read se alinha parcialmente e a outra se alinha em dois pedaços diferentes
             
introntab.pl -> script para ver introns. Ele não é tããão bom
    
    o outro que vamos usar -> checkMinMaxIntronSize.sh
    
ele dá algumas informações do genoma como saída também.
    
```
checkMinMaxIntronSize.sh genome.gff .
```
    
> (python2) bmoreno@spiderman:/data/bioaat/bmoreno/pvulgaris/ref$ checkMinMaxIntronSize.sh genome.gff .
* Gene structure statistics from current genome reference annotation (introntab.pl)
   Running introntab.pl based on gff
13,7102
    
No caso o intron mínimo é 13 e o tamanho máximo é 7102 nt. Não existe certo e errado.
    
    COm esse script dá para fazer uma descrição básica de genoma.
    
> (python2) bmoreno@spiderman:/data/bioaat/bmoreno/pvulgaris/ref$ checkMinMaxIntronSize.sh genome.gff . 0.05 0.9
* Gene structure statistics from current genome reference annotation (introntab.pl)
79,1108

    Dá pra mudar os critérios o 0.05 e 0.9 são os percentis do tamanho dos introns encontrados no meu gff e espécie.
    
    Para tirar a redundância a lista tem que estar em ordem SEMPRE!! por isso sempre usar o sort numa lista para ver valores únicos. Na lista é pra ter no máximo dois fragmentos que se alinham, quando o seq é pair-ended.
    
    
    
    
# FORMATO SAM
    
    inicia por @ também e tem um cabeçalho

samtools view -h aparece o cabeçalho
samtools view -H aparece SÓ o cabeçalho

R1 e R2 tem o mesmo nome.                                                                                                                   

4ª coluna – onde inicia o pareamento com a referência, tipo 7, é o inicio do pareamento da read com a 7ª base da sequência de referência.

Existe um phred de alinhamento/mapeamento. Tem a mesma ideia do sequenciamento. Valor de 30 é um numero bom, cada programa tem o seu valor bom, sempre ver isso.

Soft clipping – se desconsidera uma parte das bases, não as exclui
Hard clipping – exclui as bases não pareadas.

N – splicing. Foram ignoradas no mapeamento por parecerem introns, sempre aparecem no meio da read.
O tamanho do fragmento é da primeira base do R1 até a última base do R2. A 12ª coluna é opcional

No plieup é que a gente tira as informações de SNPs.

Bitwise flag  - por meio de numeros binários a gente tem informações de como foi feita o alinhamento, tipo se alinhou, se alinhou corretamente, se é forward ou reverse, alinhamentos primários (aqueles com maior score, ou mais confiável), duplicata PCR. 0 indica falso, não é verdadeiro e 1 é verdadeiro.

Tem um site que decifra isso .

Pacote do trinity
    
Programa IGV ajuda a visualizar o alinhamento feito.
    
o bam é a versão binária do Sam
    
    
Mexendo no IGV
    
carregar o genoma com genoma.fa na aba genome
    
depois colocar o bam e o index bam. Ainda para ver certinho no nosso caso tem que pegar o nome do gene para "filtrar"
    
![genome XM_007135533.1.jpg](https://hackmd.io/_uploads/ByLdFDqQT.jpg)

![Uploading file..._ay6w8ze5h]()
    
![Uploading file..._5l9tch0w1]()
    
    (falta um pedaço no libre office)
    
Distribuição dos dados
    
rna-seq normalmente é uma variável discontínua
    
expressão gênica diferencial (DEG genes diferentemente expressos)
    
Repetição biológica!!! Te dá margem para calcular a variância e média com mais precisão.
O tamanho do transcrito importa - viés de tamanho
    
NOrmalização dos dados
fator de normalização dos dados tem problemas com amostras com diferenças de profundidade muito significativas. N/T (N- fator de normalização tipo a soma total deu 25, e eu quero transformar num total de 100 ou 1000).
Ajuste também deve ser feito pelo tamanho do read, porque um transcrito maior vai precisar de mais reads para juntar e formar 1. então o RPKM é uma união do F/T + # de reads/tamanho do mRNA.
FPKM = RPKM a diferença é que o FPKM é para single end, 1 leitura só do fragmento. Isso muda a amostragem do mRNA. 
    
    
Cufflink - ele já não é o melhor programa. Existe o Cuftie? (não entendi o nome)
ele pode fazer tudo do zero
usar o gff e o que tem de dados do experimento
restringir só a gff
    
o star é muito bom. hisat2 tem é bom e parece o tophat.
    
    
grafos de sobreposição - cada nó representa uma read e a aresta conectando ela indica que elas são alinhadas (indica que elas são mutualmente exclusivas. Os diferentes caminhos que pode se formar são as isoformas.
    
As reads em comum são distribuídas de forma estatística (modelo de máxima verossimilhança) para as isoformas mais abundantes. Porque é o esperado, que as mais abundantes tenham mais desses éxons.
    
Ele também pode fazer a montagem de novo - isso é possível porque ele cria falsas reads a partir do gff para ajudar a criar profundidade suficiente para que seja identificados os exons de forma correta.
    
    
rPKM é diferente do TMP porque ele cria a medida por milhão primeiro, depois ele normaliza por tamanho. O TPM, por sua vez, divide o tamanho do gene por reads.
    
o DESeq e o edgeR fazem a normalização Log Geometric Mean (calcular a média dos loges, que não é igual a tirar a média dos valores normais, sem o loge) que não leva em consideração o tamanho das reads, porque não faz muito sentido uma vez que eu comparo tamanho de reads e sim genes. O DESeq assume que os dados não estão normalizados, é importante ver isso antes de fazer qualquer análise. É uma normalização por gene não total de genes de um sample.
    
    https://www.youtube.com/@statquest -> assistir mais vídeos dele.
        
--library-type é igual ao tophat!!
    
o cuff norm normaliza os dados de maneira default. Tem como desnormalizar para usar no DESeq
cuff merge = une diferentes transcriptomas ele cria uma referência unindo as reads das diferentes replicas.isso para um gene.
    
cuffdiff - é um teste parecido com o teste -t e tem a distribuição do log2fold change
-> false discovery rate - múltiplos testes de hipótese. correção por Bonferroni (aula de biometria)
    
ele mostra os diferentes TSSs das diferentes isoformas. Ele dá também a expressão do cds, uso de isoformas.
    
o p-ajustado é a aplicação da correção de falsos positivos igual a correção de bonferroni nos SNPs. A diferença é que o FDR é um método mais brando que o bonferroni. Na tabela da Nicole a quantidade de genes diferentemente expressos na verdade é aqueles que o p-ajds é menor ou igual à 0,05.
    
saídas do cufflink
    
o transcriptoma tem um código para cada isoforma:
    
class code = códigos das isoformas, mostra o quanto de match deu de introns em quantidade e qualidade e outras características.
    
colocar as bases em minúsculo mostra regiões repetitivas (isso também se chama de soft-masking).

string tie = igual ao cufflink, o que muda é o algoritmo que monta as isoformas.
    
Illumina iGenome - tem espécies boas com bastante informações sobre o genoma de referência. Deixa tudo bonitinho, como nós deixamos os dados arrumados para trabalhar.

    
**Pre-processamento dos dados
    
sempre fazer uma análise exploratória dos dados para ver se a facility não trocou as amostras. Principalmente uma análise hierárquica.
     
estrutura de diretórios
    
- [ ]         -> colocar numero na sequencia dos programas que foram usados e as pastas com os nomes dos programas utilizados para cada etapa.
     
     raw = dados exatamente do jeito que veio da facility
    
    input = colocar todos os dados preparados para rodar.
        dados alfanuméricos (nome igual é um grupo de amostras e o número a réplica biológica) para rodar o pipeline do professor. Ele também só roda paired-end. SEMPRE salvar os arquivos intermediários até a publicação pelo menos, para evitar problemas no momento da publicação.
    
    output -> processed (melhor nome seria pre-process) e analysis.
        para tirar adaptador - atropos (mais recente)
        qualidade de reads - prinseq
     
    
    -> repositórios bons
    
    SRA - NCBI
    ENA - EBI
    DAR - DDBJ
    
    para transformar sra em fastq fastq-dump ou sff-dump (quando é dado ROche 454)
    `fastq-dump --slit3 nomedoaquivo.sra - separa os arquivos em R1 e R2 e transforma .sra em .fastq`
    
    tem como fazer reamostragem, criar um subconjunto de dados reduzido
    
    análise de qualidade no fastq - tem vários programas que fazem isso.
    
    FASTX-Toolkit
    FastQC
    Prinseq
    assemblystats
    
    
            k-mer -> subsequencias 
    
    o fastqc é bom para sequenciamento genômicos, o RNA-seq normalmente não segue a distribuição normal da porcentagem de GC. Então GC a gente não leva em consideração. A análise de k-mers indica se há ou não a presença de adaptadores. Vendo os k-mers se espera que sua distribuição seja regular, se não for tem algo errado.
    
    remoção de cauda poli-A -> prinseq-lite.pl
    
    fita 1 tem o poli-T, porque é complementar do DNA
    se faz trimagem na read do lado direito porque normalmente é o lugar que as bases tem valor menor.
    
    a complexidade é inversamente proporcional. Valores altos, baixa complexidade, ou seja, só um nucleotídeo (TTTTT, AAAAA). Quanto mais complexo, menor o valor (TAGCCCGAT) tem valores baixos tipo 30, 20. Acima de 7 nt é de baixa complexidade.
    
    Algoritmos de trimagem de adaptador 
    
        Scythe - trima só 3'.ele vai classificar do match com base na qualidade de bases para decidir se é adaptador ou não.
        
        Cutadapt parece o atropos. tira adaptador de qualquer lugar da read. Mais sensível.
    
        https://pt.slideshare.net/dgpinheiro/illuminatruseqpairedend
    
    
    (gunzip -c é um descompactamento temporário para fazer uma análise rápida)
    
    o atropos é um pouco diferente. ele funciona igual ao trimmomatic. Correção de bases no atropos dá um pouco de problema
    
    
    atropos -> fastqc 
    trimagem -> avaliação de qualidade.
    
    **ctrl +a esc - deixa a gente caminhar pra cima e pra baixo**
    
    o problema do nextseq é que por usar duas cores de fluoroforo o G, que não tem cor, ser erroneamente medido, porque lugares mal mapeado também ficam sem cor.  Sendo que pode ser erro mesmo ou Gs que não foram mapeados.
    
    
    
    
    
    
    
    
    
    Por fim, vamos começar tudo de novo pra poder rodar o script de maneira completa!!
    
    levamos tudo o que fizemos pro test e comecei uma nova pasta de pvulgaris
    
    
    criamos o raw e copiamos tudo de abundância e script de pegar as sequências do ncbi.
    
    todo script tem que colocar uma validação, tipo mostrar uma mensagem se tem erro, ou se tá faltando alguma coisa para o script.
    
    o readlink parece o pwd, ele mostra por meio do link relativo (. ou ..) o absoluto (todo o caminho que leva até lá)
    
    
    git clone link do github   -> como faz para pegar um rpograma no github
    
    #! indicador para quem vai executar esse script
    a validação ajuda bastante para gente quando depois de um tempo se esquecemos alguma coisa.
    
    ./rnaseq-ref.sh star ./input ./output 3 ./ref/genome.gtf ./ref/genome.fa stringtie
    
Para ver as mensagens de erro, os logs em geral do processamento.
    
    
```
cat ./output/star_index/STAR.genomeGenerate.log.*txt
```
    
    
    
    checkminandmaxintronsize = rodar ele também para saber 

    min anchor= minimo de bases que vai ancorar no exon à esquerda e o resto tem que alinhar à direita
     
    o segundo tophat fica unstranded, porque é o alinhamento dos singletons que pode ser R1 ou R2. Por isso não pode ter sentido correto.
    
    alt + u = desfazer (undo)
     alt + e = refazer
    
    tag XS é a última coluna no arquivo sam, aquelas quesão opcionais.
    
    Caso os alinhamentos não funcionem direito, é importante ir opção por opção verificar o que pode ser adicionado ou retirado dependendo da situação.
    
    --alignSJDBoverhangMin = esse aqui funciona quando se conhece os introns e tem que alinhar pelo menos 1 nem um exon e o resto no outro exon.
    
    --pre-mrna-fraction - o quanto de reads que alinham dentro dos introns que pode ser "deixada" lá.
    
    o que é transfrag ????
    
    --intron-overhang-tolerance não considera que haja introns no meio dos exons no mRNA.
    
    
    cuffcmp.combined.gtf - mostra o código e classe das isoformas. e tem um script getTransFragInfo.pl
    
     --st=${outdir}/${aligner}_${assembler}_cuffnorm/samples.table - é aqui que tem o fator de normalização, para poder fazer a desnormalização.
    
    
    deu erro, daí ele precisa ser compilado de novo. Ele foi e tem que usar python2
    
    
```
conda run -n python2 no cuffnorm, cuffdiff, tophat (nos dois) -> atualização para dar certo a "rodagem"
    
     ./rnaseq-ref.sh star ./input/ ./output/ 3 ./ref/genome.gtf ./ref/genome.fa stringtie
```
    
samtools view arquivo.
    
depois retiramos o conda porque o professor fez um arquivo tipo script que ativava o conda e usava os parametros da linha de comando 
    
gene_exp.diff é o arquivo que tem a diferença de expressão.
    
o q_value é o p_value corrigido pelo FDR , o padrão é 0,05 global.
   
No cuffdiff há um problema de isoforma para calcular o fpkr. No exemplo do professor deu errado.
    
programa tipo iDR (programa que te ajuda a trabalhar com uma linguagem específica).
    
para acessar o Rstudio do servidor
    
http://200.145.102.33:8787/
    
![image](https://hackmd.io/_uploads/HJNA8IMDp.png)

    
![r no servidor](https://hackmd.io/_uploads/Sk-xLE94a.png)
    
modo slave do R no terminal do linux ele executa apenas o comando, se ter que abrir o R e deixar ele aberto no terminal
    
modo slave --slave.
    
para chamar um script em R no linux
    
#!/usr/bin/env Rscript no heading do script, igual o do bash!!
    
objetos podem ter atributos ou ações associadas a eles.
complexos 1. matrix só armazena um tipo de variável, 2. data.frame armazena mais de um tipo de variável 3. factor - são vetores categóricos 4. array tem mais dimensões do que linhas e colunas 5. function - é uma função 
    
simples/básicos - 1. vetor atômico (1 valor - escalares ou vetores - vários valores em uma só coluna, ou de verdadeiro e falso) 2. lista - tem propriedade de ter uma chave e um valor e onsegue misturar tipos de dados, tipo caracter e números. Indexado por caracetres e números 3.Null - tem valor nulo.
    
    `l <- list ("Daniel" =43, "Luis" = 50)`       
    
          <<- atribui não só naquele script como em outros

             
Tem como atribuir nomes aos elementos de uma matrix ou de vetores
não é possível transformar um factor em numeric, porque ele funciona de maneira diferente.
             
table() - faz a contagem de cada nível no R.
             
as.matrix - também existe, transforma tabelas em matrizes.
            
df[[]] é igual ao df$col. Existem essas duas maneiras de acessar as colunas.
             
o sep é diferente do collapse porque o sep são vetores escalares. Para juntar vetores normais é collapse.
             
O scan também serve para abrir files no R.
             
             `gene.df <- read.delim(file = "/data/bioaat/bmoreno/pvulgaris/output/star_stringtie_cuffdiff/gene_exp.diff",
                      header = TRUE,
                      sep= "\t",
                      dec =".",
                      stringsAsFactors = FALSE)
dim (gene.df)
`
    
>     > gene.df <- read.delim(file = "/data/bioaat/bmoreno/pvulgaris/output/star_stringtie_cuffdiff/gene_exp.diff",
+                       header = TRUE,
+                       sep= "\t",
+                       dec =".",
+                       stringsAsFactors = FALSE)
> View(gene.df)
> dim (gene.df)
[1] 1721   14
    
    `colnames(gene.df)

signif.gene.df <- subset(gene.df, q_value <= 0.05)`
    
>     > colnames(gene.df)
 [1] "test_id"           "gene_id"           "gene"              "locus"             "sample_1"         
 [6] "sample_2"          "status"            "value_1"           "value_2"           "log2.fold_change."
[11] "test_stat"         "p_value"           "q_value"           "significant"      
> signif.gene.df <- subset(gene.df, q_value <= 0.05)
    
    `signif.gene.df[,c("gene", "log2.fold_change.", "q_value")]`
    
>     > signif.gene.df[,c("gene", "log2.fold_change.", "q_value")]
  gene log2.fold_change. q_value
1    -          5.912350 7.5e-05
3    -          1.679970 7.5e-05
4    -         -0.594616 6.1e-03
    
    
    
    `iris.df <- read.delim(file = "/tmp/iris.data",
                                 header = FALSE,
                                 sep= ",",
                                 dec =".",
                                 stringsAsFactors = FALSE)

colnames(iris.df) <- c("sepal.length", "sepal.width", "petal.length", "petal.width", "class")

iris.df$class <- as.factor(iris.df$class)

table(iris.df$class)`
                 
>                  > iris.df <- read.delim(file = "/tmp/iris.data",
+                                  header = FALSE,
+                                  sep= ",",
+                                  dec =".",
+                                  stringsAsFactors = FALSE)
> colnames(iris.df) <- c("sepal.length", "sepal.width", "petal.length", "petal.width", "class")
> View(iris.df)
> iris.df$class <- as.factor(iris.df$class)
> table(iris.df$class)

    Iris-setosa Iris-versicolor  Iris-virginica 
             50              50              50 
    
    AS DUAS BARRAS NO CAMINHO É PRA PROTEGER AS BARRAS!!! NÃO SABIA DISSO.
    
    
    `library("xlsx")

write.xlsx(gene.df, "/data/bioaat/bmoreno/pvulgaris/gene_exp_diff.xlsx", "gene_exp_diff.xlsx")`
    
>     
    
    delim, subset e write.xlsx = mais importante.!!!
    
    `write.table(signif.gene.df, /data/bioaat/bmoreno/pvulgaris/signif_gene_exp_diff.txt, sep = "\t", quote=FALSE)`
    
    
    
>     ##### Testando sozinha

dados.df <- read.delim(file = "/data/bioaat/bmoreno/pvulgaris/output/star_stringtie_cuffdiff/gene_exp.diff",
                                  header = TRUE,
                                  sep= "\t",
                                  dec =".",
                                  stringsAsFactors = FALSE)
diff.exp <- subset (dados.df, dados.df$log2.fold_change. >= 2)

write.xlsx (diff.exp, "/data/bioaat/bmoreno/pvulgaris/teste_gene_exp.xlsx", "teste_gene_exp.xlsx")
    
>     
lalala
    deu certo: 
    
[planilha certa](https://hackmd.io/_uploads/r1X1t_qEa.png)
    
    apply() - função que quase não exite em outras linguagens. Aplicação de uma função em um conjunto de dados.
    
apply (iris.df[,c("sepal.width", "sepal.length", "petal.width", "petal.length")], 2, mean)
    
> apply (iris.df[,c("sepal.width", "sepal.length", "petal.width", "petal.length")], 2, mean)
 sepal.width sepal.length  petal.width petal.length 
    3.054000     5.843333     1.198667     3.758667 
    
    ###exercício aula slides

golub <- read.delim("http://www.bioinf.ucd.ie/people/ian/Golub.txt", sep="\t")
head(golub)
colnames(golub)
library(limma)
golub[,c(samples.AML,samples.ALL)] <- normalizeQuantiles(golub[,c(samples.AML,samples.ALL)])
samples.AML <- colnames(golub)[ grep("^AML\\.", colnames(golub)) ]
samples.ALL <- colnames(golub)[ grep("^ALL\\.", colnames(golub)) ]
golub$ALL.mean <- apply(golub[, samples.ALL], 1, mean)
golub$AML.mean <- apply(golub[, samples.AML], 1, mean)
golub$logFC <- log2(golub$AML.mean/golub$ALL.mean)

calc.p.value <- function(v, x, y) {
  if ( sd(v[c(x,y)]) == 0 ) {
    return(1)
  } else {
    return(t.test(v[x], v[y])$p.value)
  }
}

golub$p.value <- apply(golub[,c(samples.AML,samples.ALL)], 1, calc.p.value, samples.AML, samples.ALL)
golub$q.value <- p.adjust( golub$p.value , method="fdr" )


signif.golub.df <- subset(golub, q.value<= 0.05 & abs(logFC) >= log2(1.5))

signif.golub.df[, c("Golubtemplate", "AML.mean", "ALL.mean", "logFC", "q.value")]
    
>     > golub <- read.delim("http://www.bioinf.ucd.ie/people/ian/Golub.txt", sep="\t")
> head(golub)
    Golubtemplate      ALL    ALL.1    ALL.2    ALL.3    ALL.4    ALL.5    ALL.6    ALL.7    ALL.8    ALL.9
1  AFFX-BioB-5_at 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
2  AFFX-BioB-M_at 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
3  AFFX-BioB-3_at 6.643856 8.033423 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 7.409391 8.285402
4  AFFX-BioC-5_at 8.357552 8.204571 8.108524 7.507795 8.055282 6.643856 7.149747 7.977280 7.442943 7.149747
5  AFFX-BioC-3_at 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.832890
6 AFFX-BioDn-5_at 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
    ALL.10   ALL.11   ALL.12   ALL.13   ALL.14   ALL.15   ALL.16   ALL.17   ALL.18   ALL.19      AML    AML.1
1 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
2 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
3 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
4 7.467606 7.011227 7.189825 7.721099 7.491853 6.643856 7.888743 7.247928 8.076816 7.426265 6.643856 8.271463
5 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
6 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
     AML.2    AML.3    AML.4    AML.5    AML.6    AML.7    AML.8    AML.9   AML.10   AML.11   AML.12   AML.13
1 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
2 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
3 6.643856 7.727920 6.672425 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
4 7.409391 8.294621 8.317413 7.475733 8.409391 6.643856 8.629357 7.139551 6.643856 7.189825 8.751544 6.643856
5 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
6 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
    ALL.20   ALL.21   ALL.22   ALL.23   ALL.24   ALL.25   ALL.26   ALL.27   ALL.28   ALL.29   ALL.30   ALL.31
1 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
2 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
3 6.643856 6.643856 6.643856 8.049849 6.643856 7.748193 7.894818 6.643856 6.727920 6.643856 6.643856 6.643856
4 6.643856 8.144658 8.271463 6.643856 7.392317 6.643856 6.643856 6.643856 8.066089 7.774787 6.643856 6.643856
5 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
6 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
    ALL.32   ALL.33   ALL.34   ALL.35   ALL.36   ALL.37   ALL.38   ALL.39   ALL.40   ALL.41   ALL.42   ALL.43
1 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
2 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
3 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
4 7.434628 7.924813 7.219169 8.005625 8.233620 6.643856 7.693487 7.768184 7.044394 6.643856 6.643856 7.994353
5 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
6 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
    ALL.44   ALL.45   ALL.46   AML.14   AML.15   AML.16   AML.17   AML.18   AML.19   AML.20   AML.21   AML.22
1 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
2 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
3 6.643856 6.643856 6.643856 6.643856 6.643856 7.087463 6.954196 6.643856 6.643856 6.643856 6.643856 6.643856
4 8.303781 6.643856 6.643856 6.658211 7.044394 8.312883 8.344296 8.614710 7.912889 7.592457 8.285402 7.845490
5 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
6 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856 6.643856
    AML.23   AML.24
1 6.643856 6.643856
2 6.643856 6.643856
3 6.643856 6.643856
4 8.366322 8.396605
5 6.643856 6.643856
6 6.643856 6.643856
> colnames(golub)
 [1] "Golubtemplate" "ALL"           "ALL.1"         "ALL.2"         "ALL.3"         "ALL.4"        
 [7] "ALL.5"         "ALL.6"         "ALL.7"         "ALL.8"         "ALL.9"         "ALL.10"       
[13] "ALL.11"        "ALL.12"        "ALL.13"        "ALL.14"        "ALL.15"        "ALL.16"       
[19] "ALL.17"        "ALL.18"        "ALL.19"        "AML"           "AML.1"         "AML.2"        
[25] "AML.3"         "AML.4"         "AML.5"         "AML.6"         "AML.7"         "AML.8"        
[31] "AML.9"         "AML.10"        "AML.11"        "AML.12"        "AML.13"        "ALL.20"       
[37] "ALL.21"        "ALL.22"        "ALL.23"        "ALL.24"        "ALL.25"        "ALL.26"       
[43] "ALL.27"        "ALL.28"        "ALL.29"        "ALL.30"        "ALL.31"        "ALL.32"       
[49] "ALL.33"        "ALL.34"        "ALL.35"        "ALL.36"        "ALL.37"        "ALL.38"       
[55] "ALL.39"        "ALL.40"        "ALL.41"        "ALL.42"        "ALL.43"        "ALL.44"       
[61] "ALL.45"        "ALL.46"        "AML.14"        "AML.15"        "AML.16"        "AML.17"       
[67] "AML.18"        "AML.19"        "AML.20"        "AML.21"        "AML.22"        "AML.23"       
[73] "AML.24"       
> library(limma)
> samples.AML <- colnames(golub)[ grep("^AML", colnames(golub)) ]
> samples.ALL <- colnames(golub)[ grep("^ALL", colnames(golub)) ]
> samples.AML <- colnames(golub)[ grep("^AML\.", colnames(golub)) ]
Error: '\.' is an unrecognized escape in character string (<input>:1:44)
> samples.ALL <- colnames(golub)[ grep("^ALL\.", colnames(golub)) ]
Error: '\.' is an unrecognized escape in character string (<input>:1:44)
> samples.AML <- colnames(golub)[ grep("^AML\\.", colnames(golub)) ]
> samples.ALL <- colnames(golub)[ grep("^ALL\.", colnames(golub)) ]
Error: '\.' is an unrecognized escape in character string (<input>:1:44)
> samples.ALL <- colnames(golub)[ grep("^ALL\\.", colnames(golub)) ]
> golub$ALL.mean <- apply(golub[, samples.ALL], 1, mean)
> golub$AML.mean <- apply(golub[, samples.AML], 1, mean)
> golub$logFC <- log2(golub$AML.mean/golub$ALL.mean)
> golub$ALL.mean <- apply(golub[, samples.ALL], 1, mean)
> golub$AML.mean <- apply(golub[, samples.AML], 1, mean)
> golub$logFC <- log2(golub$AML.mean/golub$ALL.mean)
> calc.p.value <- function(v, x, y) {
+   if ( sd(v[c(x,y)]) == 0 ) {
+     return(1)
+   } else {
+     return(t.test(v[x], v[y])$p.value)
+   }
+ }
> golub$p.value <- apply(golub[,c(samples.AML,samples.ALL)], 1, calc.p.value, samples.AML, samples.ALL)
> golub$q.value <- p.adjust( golub$p.value , method="fdr" )
> View(golub)
> subset(golub, q.value<= 0.05)
               Golubtemplate       ALL     ALL.1     ALL.2    ALL.3     ALL.4     ALL.5     ALL.6     ALL.7
48  AFFX-HUMTFRR/M11507_5_at  7.219169  7.768184  8.957102 7.988685  7.761551  8.515700  7.312883  9.403012
50  AFFX-HUMTFRR/M11507_3_at  7.839204  6.643856  9.746514 7.754888  7.794416  7.108524  6.643856  9.634811
65               AB000449_at  7.219169  6.643856  8.144658 8.154818  9.702173  7.569856  8.463524  8.539159
88               AB002559_at 10.245553 10.076816 10.040290 9.396605  9.467606 10.299208 10.037547 10.770664
92               AB003698_at  6.845490  7.451211  7.562242 7.312883  9.461479  8.124121  8.219169  7.636625
98          AC000064_cds1_at  7.820179  9.303781  7.982994 7.965784  8.651052  9.041659  7.098032  8.159871
119              AF000231_at  6.643856  6.643856  6.643856 7.022368  7.707359  6.643856  7.199672  6.643856
131              AF002700_at  7.807355  8.607330  8.791163 8.361944  8.154818  9.483816  6.643856  8.900867
134              AF005043_at  6.643856  6.643856  6.643856 6.977280  7.761551  6.643856  6.643856  6.643856
136              AF005775_at  9.299208 10.779719  8.169925 8.479780  8.344296  9.544964  8.011227  9.211888
149              AF009426_at  6.643856  6.643856  6.643856 6.643856  7.266787  6.643856  6.930737  7.303781
155              AF015913_at  9.419960  8.577429  9.144658 9.052568 10.483816  9.850187  9.881114  8.370687
        ALL.8    ALL.9   ALL.10    ALL.11   ALL.12   ALL.13    ALL.14    ALL.15   ALL.16   ALL.17    ALL.18
48   6.882643 7.129283 6.643856  7.266787 7.483816 7.851749  7.924813  7.622052 8.060696 7.247928  8.257388
50   6.643856 6.643856 7.276124  7.011227 8.252665 7.768184  7.189825  7.864186 8.787903 8.033423  7.988685
65   7.960002 8.103288 6.845490  6.643856 6.643856 6.643856  8.438792  8.577429 6.845490 6.643856  8.005625
88  10.366322 9.511753 9.688250 10.066089 9.596190 9.430453 10.127994  9.758223 9.139551 9.903882 10.427313
92   7.851749 7.209453 6.643856  6.643856 6.643856 6.643856  8.066089  7.247928 6.643856 7.266787  8.294621
98   7.179909 6.988685 7.523562  6.965784 7.507795 7.219169  8.832890  8.471675 8.321928 8.087463  7.629357
119  6.643856 6.643856 6.643856  6.643856 6.643856 7.339850  8.049849  7.592457 7.209453 6.643856  6.643856
131  8.842350 8.614710 7.546894  8.164907 8.647458 8.596190  9.505812  7.199672 7.515700 8.438792  8.640245
134  6.643856 6.643856 6.643856  6.643856 6.643856 6.643856  6.930737  6.700440 6.643856 6.643856  6.643856
136  7.033423 8.658211 8.149747  7.366322 9.370687 9.438792  8.546894  8.665336 9.507795 8.826548  8.693487
149  7.434628 6.643856 6.643856  6.643856 6.643856 6.643856  7.357552  6.643856 6.643856 6.643856  6.643856
155  9.405141 9.507795 9.893302  8.577429 8.991522 8.562242 10.716819 11.046442 7.826548 9.831307  8.870365
       ALL.19      AML     AML.1     AML.2     AML.3     AML.4     AML.5     AML.6     AML.7     AML.8
48   6.700440 7.118941  8.693487  8.876517  8.507795  7.483816  7.118941  7.813781  7.714246  8.294621
50   6.643856 6.643856  9.926296  9.592457  9.479780  7.754888  6.643856  8.939579  7.614710  8.252665
65   7.607330 6.643856  6.643856  6.643856  6.643856  7.491853  6.643856  6.643856  7.651052  6.643856
88  10.406205 9.743151 10.870365 10.637531 10.952013 11.381543 10.139551 11.814182 11.072133 10.646559
92   7.679480 6.643856  7.400879  6.643856  6.643856  8.224002  6.965784  6.832890  7.055282  6.643856
98   7.515700 7.139551  9.413628  9.182394  9.187352  9.098032  8.357552  8.581201  8.417853  9.579316
119  7.199672 6.643856  6.643856  6.643856  6.643856  6.643856  6.643856  6.643856  6.643856  6.643856
131  7.607330 7.330917  9.014020  9.255029  9.152285  8.447083  8.238405  8.603626  8.897845  9.121534
134  6.643856 6.643856  6.643856  6.643856  6.643856  6.643856  6.643856  6.643856  6.643856  6.643856
136  8.700440 8.455327  9.890264 10.393390  9.794416  9.537218  8.848623  7.948367  8.413628  9.688250
149  6.643856 6.643856  6.643856  6.643856  6.643856  6.643856  6.643856  6.643856  6.643856  6.643856
155  8.299208 7.339850  9.027906  7.971544  8.836050  9.670656  9.060696  8.592457  8.038919  8.463524
       AML.9   AML.10    AML.11    AML.12    AML.13   ALL.20    ALL.21    ALL.22    ALL.23    ALL.24   ALL.25
48  7.748193 6.643856  8.238405  8.731319  8.417853 8.044394  9.002815  9.250298  7.515700  8.184875 7.936638
50  7.247928 7.434628  7.741467  7.894818  6.643856 8.219169  8.154818  7.546894  8.022368  8.164907 7.794416
65  6.643856 7.139551  8.016808  7.392317  6.643856 6.643856  7.400879  8.487840  8.098032  8.280771 7.857981
88  9.586840 9.802516 11.295195 11.503329 11.068106 9.567956 10.693487 10.142107 10.052568  9.682995 9.994353
92  6.794416 7.118941  7.754888  7.607330  6.643856 7.011227  7.507795  8.724514  7.199672  7.924813 7.087463
98  8.531381 7.882643  8.807355 10.060696  8.388017 8.082149  9.216746  8.836050  8.693487  8.632995 7.179909
119 6.643856 7.000000  7.209453  6.643856  6.643856 7.400879  6.643856  6.643856  6.643856  7.614710 6.643856
131 8.396605 7.936638  9.836050  9.060696  7.864186 8.543032  8.906891  9.741467  8.982994  7.734710 8.693487
134 6.643856 6.643856  6.643856  6.643856  6.643856 6.643856  6.643856  7.348728  7.118941  6.741467 6.643856
136 9.157347 8.845490  9.396605  9.972980 10.250298 8.816984  9.337622  9.717676  9.052568  9.005625 8.927778
149 6.643856 6.643856  6.643856  6.643856  6.643856 6.643856  6.643856  6.643856  6.643856  6.906891 6.643856
155 8.071462 8.977280  9.440869  8.686501  7.599913 8.894818  9.255029  9.731319  9.432542 10.348728 8.434628
       ALL.26    ALL.27    ALL.28    ALL.29   ALL.30   ALL.31    ALL.32   ALL.33   ALL.34   ALL.35    ALL.36
48   7.417853  8.927778  8.535275  6.643856 8.044394 7.888743  7.523562 7.312883 7.434628 7.066089  8.936638
50   7.139551  6.845490  8.335390  8.321928 7.707359 7.607330  7.366322 8.700440 8.144658 7.257388  8.154818
65   7.033423  6.643856  8.290019  7.672425 8.262095 7.303781  9.923327 8.299208 8.960002 6.965784  8.515700
88  10.060696 10.506803 10.101976 10.184875 9.370687 9.556506  9.507795 9.842350 9.881114 9.330917 11.400346
92   6.781360  6.643856  8.554589  7.686501 8.348728 6.643856  8.873444 8.543032 7.774787 7.108524  9.022368
98   8.962896  9.049849  8.262095  8.252665 7.636625 8.463524  8.209453 9.236014 8.592457 8.224002  8.479780
119  7.189825  6.643856  7.044394  6.643856 6.672425 6.643856  8.194757 6.643856 6.714246 8.000000  6.643856
131  9.592457  9.707359  8.810572  7.000000 7.247928 8.503826  7.651052 8.113742 7.129283 7.076816  9.974415
134  6.643856  6.643856  6.643856  6.643856 6.643856 6.643856  7.238405 6.643856 6.643856 6.643856  6.781360
136  8.654636  9.390169  8.942515  8.721099 8.455327 8.459432  8.839204 8.994353 8.727920 9.036174  9.147205
149  6.643856  7.400879  6.643856  6.643856 6.643856 6.643856  6.942515 6.643856 8.066089 7.417853  6.643856
155  9.350939  9.103288  9.689998  8.882643 8.778077 7.900867 10.605480 9.461479 9.879583 9.129283 10.415742
       ALL.37   ALL.38    ALL.39    ALL.40    ALL.41   ALL.42    ALL.43   ALL.44   ALL.45    ALL.46    AML.14
48   8.247928 7.348728  8.199672  6.643856  8.154818 8.409391  7.960002 8.348728 7.426265  7.238405  8.417853
50   8.894818 7.266787  8.044394  7.523562  7.357552 7.665336  6.643856 9.252665 7.303781  7.651052  8.519636
65   7.366322 8.154818  9.667112  9.060696  6.643856 7.066089  8.569856 7.700440 8.154818  7.622052  6.643856
88   9.839204 9.403012 10.288866  7.108524 10.604553 9.550747  9.668885 9.381543 9.266787 10.213104 10.814582
92   7.475733 7.011227  8.710806  8.455327  6.643856 7.491853  8.700440 6.643856 6.882643  7.228819  6.918863
98   8.174926 7.832890  8.820179  8.087463  8.321928 8.413628  9.808964 7.977280 7.643856  9.771489  9.219169
119  6.643856 7.339850  9.459432  7.665336  6.643856 6.643856  7.936638 6.643856 7.228819  6.643856  6.643856
131  8.285402 8.134426  8.703904  7.577429  8.438792 8.829723  8.499846 8.483816 8.447083  9.927778  9.030667
134  6.643856 6.643856  7.459432  7.614710  6.643856 6.643856  6.643856 6.643856 6.643856  6.643856  6.643856
136 10.278449 8.209453  9.306062 10.016808  8.842350 8.873444  9.442943 8.357552 8.679480  9.627534  9.552669
149  6.643856 6.643856  8.060696  7.686501  6.643856 6.643856  7.076816 6.643856 6.643856  6.643856  6.643856
155  8.527477 9.189825 11.264443  6.643856  7.686501 9.068778 10.234817 8.396605 8.588715  9.066089  8.727920
       AML.15    AML.16    AML.17    AML.18    AML.19   AML.20    AML.21    AML.22    AML.23    AML.24
48   8.754888  8.071462  9.656425 10.650154  9.453271 9.126704  8.675957  8.409391  8.636625  9.552669
50   8.370687  8.189825 10.741467 11.565578  9.497852 9.665336  8.764872  8.413628  8.330917 10.525521
65   6.781360  6.643856  7.055282  6.794416  7.475733 7.499846  6.643856  6.906891  6.643856  7.994353
88  10.000000 11.590587 10.946906 10.082149 10.090112 9.826548 11.272630 10.675075 10.635718 10.369597
92   7.768184  7.434628  7.247928  6.643856  6.714246 6.643856  6.930737  6.643856  6.643856  6.643856
98   9.596190  8.487840  9.002815  9.243174  8.826548 8.326429  9.066089  9.142107  9.019591  9.219169
119  6.643856  6.643856  6.643856  6.643856  6.643856 6.643856  6.643856  6.643856  7.033423  6.643856
131  8.731319  9.105909  8.596190  8.554589  9.483816 8.038919  9.415742  9.113742  9.686501 10.062046
134  6.643856  6.643856  6.643856  6.643856  6.643856 6.643856  6.643856  6.643856  6.643856  6.643856
136  9.224002 10.286558 10.176173  8.829723  8.977280 9.592457  9.611025 10.288866  9.317413  9.539159
149  6.643856  6.643856  6.643856  6.643856  6.643856 6.643856  6.643856  6.643856  6.643856  6.643856
155  8.228819  8.686501  8.076816  7.982994  8.731319 8.434628  8.459432  8.888743  8.945444  8.679480
    ALL.mean  AML.mean       logFC      p.value      q.value
48  7.835278  8.487009  0.11527185 2.762802e-03 2.777999e-02
50  7.750385  8.656344  0.15948980 2.981440e-03 2.911601e-02
65  7.843955  6.996906 -0.16486430 1.500405e-06 8.291771e-05
88  9.863342 10.711407  0.11899959 1.845546e-06 9.892405e-05
92  7.593135  7.023488 -0.11250803 2.449189e-04 4.523386e-03
98  8.245878  8.943189  0.11711628 1.104133e-05 3.987625e-04
119 7.040835  6.698494 -0.07190969 5.449118e-04 8.109972e-03
131 8.413089  8.901810  0.08146316 5.147477e-03 4.252186e-02
134 6.765392  6.643856 -0.02615261 4.831756e-03 4.081231e-02
136 8.899127  9.480508  0.09130059 7.214263e-04 9.947869e-03
149 6.849978  6.643856 -0.04407846 7.498680e-04 1.024726e-02
155 9.235872  8.594995 -0.10375149 3.155276e-04 5.355706e-03
 [ reached 'max' / getOption("max.print") -- omitted 900 rows ]
> subset(golub, q.value<= 0.01 & abs(logFC) >= 2)
 [1] Golubtemplate ALL           ALL.1         ALL.2         ALL.3         ALL.4         ALL.5        
 [8] ALL.6         ALL.7         ALL.8         ALL.9         ALL.10        ALL.11        ALL.12       
[15] ALL.13        ALL.14        ALL.15        ALL.16        ALL.17        ALL.18        ALL.19       
[22] AML           AML.1         AML.2         AML.3         AML.4         AML.5         AML.6        
[29] AML.7         AML.8         AML.9         AML.10        AML.11        AML.12        AML.13       
[36] ALL.20        ALL.21        ALL.22        ALL.23        ALL.24        ALL.25        ALL.26       
[43] ALL.27        ALL.28        ALL.29        ALL.30        ALL.31        ALL.32        ALL.33       
[50] ALL.34        ALL.35        ALL.36        ALL.37        ALL.38        ALL.39        ALL.40       
[57] ALL.41        ALL.42        ALL.43        ALL.44        ALL.45        ALL.46        AML.14       
[64] AML.15        AML.16        AML.17        AML.18        AML.19        AML.20        AML.21       
[71] AML.22        AML.23        AML.24        ALL.mean      AML.mean      logFC         p.value      
[78] q.value      
<0 rows> (or 0-length row.names)
> subset(golub, q.value<= 0.01 & abs(logFC) > 1)
 [1] Golubtemplate ALL           ALL.1         ALL.2         ALL.3         ALL.4         ALL.5        
 [8] ALL.6         ALL.7         ALL.8         ALL.9         ALL.10        ALL.11        ALL.12       
[15] ALL.13        ALL.14        ALL.15        ALL.16        ALL.17        ALL.18        ALL.19       
[22] AML           AML.1         AML.2         AML.3         AML.4         AML.5         AML.6        
[29] AML.7         AML.8         AML.9         AML.10        AML.11        AML.12        AML.13       
[36] ALL.20        ALL.21        ALL.22        ALL.23        ALL.24        ALL.25        ALL.26       
[43] ALL.27        ALL.28        ALL.29        ALL.30        ALL.31        ALL.32        ALL.33       
[50] ALL.34        ALL.35        ALL.36        ALL.37        ALL.38        ALL.39        ALL.40       
[57] ALL.41        ALL.42        ALL.43        ALL.44        ALL.45        ALL.46        AML.14       
[64] AML.15        AML.16        AML.17        AML.18        AML.19        AML.20        AML.21       
[71] AML.22        AML.23        AML.24        ALL.mean      AML.mean      logFC         p.value      
[78] q.value      
<0 rows> (or 0-length row.names)
> subset(golub, q.value<= 0.05 & abs(logFC) > 1)
 [1] Golubtemplate ALL           ALL.1         ALL.2         ALL.3         ALL.4         ALL.5        
 [8] ALL.6         ALL.7         ALL.8         ALL.9         ALL.10        ALL.11        ALL.12       
[15] ALL.13        ALL.14        ALL.15        ALL.16        ALL.17        ALL.18        ALL.19       
[22] AML           AML.1         AML.2         AML.3         AML.4         AML.5         AML.6        
[29] AML.7         AML.8         AML.9         AML.10        AML.11        AML.12        AML.13       
[36] ALL.20        ALL.21        ALL.22        ALL.23        ALL.24        ALL.25        ALL.26       
[43] ALL.27        ALL.28        ALL.29        ALL.30        ALL.31        ALL.32        ALL.33       
[50] ALL.34        ALL.35        ALL.36        ALL.37        ALL.38        ALL.39        ALL.40       
[57] ALL.41        ALL.42        ALL.43        ALL.44        ALL.45        ALL.46        AML.14       
[64] AML.15        AML.16        AML.17        AML.18        AML.19        AML.20        AML.21       
[71] AML.22        AML.23        AML.24        ALL.mean      AML.mean      logFC         p.value      
[78] q.value      
<0 rows> (or 0-length row.names)
> subset(golub, q.value<= 0.05 & abs(logFC) >= log2(1.5))
      Golubtemplate       ALL     ALL.1     ALL.2     ALL.3     ALL.4     ALL.5     ALL.6     ALL.7     ALL.8
758       D88270_at 10.970106 10.816184 11.602699 10.909893 13.310187 12.914572 11.922956 11.986909 11.943614
1779      M19507_at  8.936638  6.643856  9.949827  9.463524  7.636625 10.336507  6.643856 10.244364  6.643856
1882      M27891_at  6.643856  6.643856  7.965784  6.741467  6.643856  8.622052  6.643856  6.643856  8.971544
2288      M84526_at  6.643856  6.643856  6.643856  7.665336  6.643856  6.643856  6.643856  6.643856  6.643856
4680 X82240_rna1_at 11.168672  6.643856  6.857981  7.727920 13.965784 12.826548 10.424166 12.735768 12.816184
         ALL.9    ALL.10    ALL.11   ALL.12    ALL.13    ALL.14    ALL.15    ALL.16    ALL.17    ALL.18
758  12.763835 11.772315 11.689124 8.276124 10.999295 12.942698 12.667112  7.219169 10.516685 11.827740
1779  6.643856  6.643856  9.840778 6.643856  8.280771  6.643856  9.601771  6.643856 11.147841  8.209453
1882  6.643856  6.643856  7.900867 6.643856  8.823367  7.348728  6.643856 11.029287  8.487840  9.111136
2288  6.643856  6.643856  6.643856 6.643856  6.643856  6.845490  6.643856  7.219169  6.643856  6.643856
4680 12.749031 13.384379 11.942148 8.546894 12.319954 11.027906 13.815583  6.643856 11.583083 13.854576
        ALL.19       AML     AML.1     AML.2     AML.3     AML.4     AML.5     AML.6     AML.7     AML.8
758  13.002288  6.643856  6.643856  6.643856  6.643856  7.139551  6.643856  6.643856  6.643856  6.643856
1779 11.388556  9.544964 13.136671 13.312174 13.157663 13.965784 13.285691 13.796648 13.965784 13.965784
1882  7.491853 13.965784 13.965784 11.422590 13.512494 13.390303 11.629357 13.792892 11.264443  6.942515
2288  6.643856 12.816384 13.965784 13.266054 12.687157 12.092096 13.304922 12.527233 11.859923 11.056638
4680 13.707790  6.643856  6.643856  6.643856  6.643856  6.643856  6.643856  7.599913  6.643856  6.643856
         AML.9    AML.10    AML.11    AML.12    AML.13    ALL.20    ALL.21   ALL.22    ALL.23    ALL.24
758   6.643856  7.748193  7.584963  7.700440  6.643856 10.940314  7.629357 9.177420 12.252961 11.724087
1779 13.965784  7.832890 12.525276 11.935533 11.347621  6.643856  6.643856 6.643856  6.643856  9.873444
1882 13.636511 11.038233 13.965784 11.685187 13.965784  8.243174 10.407268 7.988685  6.643856  6.643856
2288 12.188280  6.643856 12.952013 11.401413 12.357827  6.643856  6.643856 6.643856  6.643856  8.179909
4680  6.643856  6.643856  6.643856  6.643856  7.936638 13.824859  6.643856 6.643856 12.346237 12.549303
        ALL.25    ALL.26    ALL.27   ALL.28   ALL.29   ALL.30    ALL.31    ALL.32   ALL.33    ALL.34    ALL.35
758   6.643856 10.557464 10.285402 6.643856 8.511753 6.643856  9.475733 12.874405 6.643856 12.397140 11.895197
1779  6.643856  6.643856  6.643856 6.643856 8.614710 6.643856 10.503826  6.643856 6.643856  8.379378 11.798472
1882 10.189825  6.643856  6.643856 8.392317 8.960002 6.643856  6.741467  6.643856 9.679480  6.643856  6.643856
2288  6.643856  6.643856  6.643856 6.643856 6.643856 6.643856  6.643856  6.643856 6.643856  6.643856  6.643856
4680  6.643856  6.643856 13.241089 6.643856 6.643856 6.643856  8.118941 12.700006 6.643856 13.854479  9.663558
        ALL.36    ALL.37    ALL.38    ALL.39    ALL.40    ALL.41   ALL.42    ALL.43    ALL.44    ALL.45
758   6.643856  6.643856  6.643856 10.109831 13.206557 12.079485 6.643856 12.004923 12.321646 12.891784
1779 10.492855  7.523562  8.900867  8.566054  6.643856  6.643856 6.643856  6.643856  7.076816  7.614710
1882  8.550747  6.643856  6.643856  7.679480  6.643856  6.643856 8.731319  6.643856  6.643856  6.643856
2288  6.643856  6.643856  6.643856  6.643856  6.643856  6.643856 6.643856  6.643856  6.643856  6.643856
4680  6.643856 11.606868 11.706496 13.965784 10.049849 11.680799 6.643856 11.771902 11.234817 13.369734
        ALL.46    AML.14    AML.15    AML.16    AML.17    AML.18    AML.19    AML.20    AML.21    AML.22
758  11.884171  6.832890  6.643856  6.643856  7.022368  6.643856  7.392317  6.643856  6.643856  7.409391
1779  6.643856 12.764872 13.946815 10.969387  9.970106 12.477252  8.744834 11.105909  8.463524 13.451855
1882  6.643856 10.585901 10.532356 13.965784 13.698705 10.697836 10.067434 12.765286 13.829227 12.821375
2288  6.643856 12.237807  6.643856 12.158925 12.722594 10.615630  6.643856 12.681458 12.847840 12.238703
4680 12.890454  6.643856  6.643856  6.643856  6.643856  6.643856  6.643856  6.643856  6.643856  6.643856
        AML.23    AML.24  ALL.mean  AML.mean      logFC      p.value      q.value
758   7.189825  7.546894 10.531606  6.940867 -0.6015376 5.651072e-14 6.714415e-11
1779  7.707359 12.978710  7.932549 12.032247  0.6010496 2.716821e-10 8.420963e-08
1882 13.590938 11.835261  7.554570 12.275083  0.7003111 1.065609e-13 1.085247e-10
2288  7.139551 10.965784  6.716345 11.383300  0.7611706 4.819829e-10 1.227163e-07
4680  6.643856  6.643856 10.534503  6.737558 -0.6448246 1.024434e-11 4.564495e-09
> dim (subset(golub, q.value<= 0.05 & abs(logFC) >= log2(1.5)))
[1]  5 78
> signif.golub.df <- subset(golub, q.value<= 0.05 & abs(logFC) >= log2(1.5))
> signif.golub.df[, c("Golubtemplate")]
[1] "D88270_at"      "M19507_at"      "M27891_at"      "M84526_at"      "X82240_rna1_at"
> signif.golub.df[, c("Golubtemplate", "AML.mean", "ALL.mean", "LogFC", "q.value")]
Error in `[.data.frame`(signif.golub.df, , c("Golubtemplate", "AML.mean",  : 
  undefined columns selected
> signif.golub.df[, c("Golubtemplate", "AML.mean", "ALL.mean", "logFC", "q.value")]
      Golubtemplate  AML.mean  ALL.mean      logFC      q.value
758       D88270_at  6.940867 10.531606 -0.6015376 6.714415e-11
1779      M19507_at 12.032247  7.932549  0.6010496 8.420963e-08
1882      M27891_at 12.275083  7.554570  0.7003111 1.085247e-10
2288      M84526_at 11.383300  6.716345  0.7611706 1.227163e-07
4680 X82240_rna1_at  6.737558 10.534503 -0.6448246 4.564495e-09
    
    merge() é bom pra melhorar a anotação dos genes nos datas frames já existentes.
    
    svg é vetorial, melhor tipo de extensão para gerar uma imagem.
    
    inkscape é ótimo pra trabalhar com imagens svg no linux.
    
    ggsave também funciona para baixar o gráfico no R.
    
    escala Z score padroniza os resultados quando eles são muito próximos. Maiores que a média é uma cor e menores que a média terão outro valor.
    
    heatdiff<-heatmap.2(
  as.matrix(signif.golub.df[,golub.samps]),  ##golub.samples são os dados puros 
  na.rm=TRUE,
  *scale="row"*, #aqui é que muda a escala para se tornar z score.
  col=greenred,
  breaks=100,
  key=TRUE,
  symkey=FALSE,
  symbreaks=TRUE,
  density.info="none",
  trace="none",
  Rowv=T,
  Colv=T,
  cexRow=0.45,
  cexCol=1,
  keysize=1,
  margins = c(10,10),
  dendrogram=c("both"),
  main = "HeatMap"
)
                         
                         
                         metodos de ligação em distância euclediana.
                         
                         o dendodragrama é uma representação da ligação entre os genes em grupos pela distância. Existem diversas maneiras programar isso e escolher. Em geral se usa a distância euclediana.
                         
                         
                         aheatmap - anotação do heatmap, tem o pheatmap que é legal.
                         
                         regexpr - pesquisar mais sobre
                         
                         
![de novo](https://hackmd.io/_uploads/H1V692_8p.png)
aqui dá pra alterar deixar o # de threads fixos, mas aí tem que alterar os parâmetros pra frente na sequencia do input depois.
                         
arquivos .bad no prinseq - são as reads que não passam nos critério definidos antes. No nosso acabou que não gerou, mas pode na vida real.
                         
                         ![2](https://hackmd.io/_uploads/B1gR03_8T.png)
                         
aqui indica que tem que utilizar os arquivos pre processados que tem _1 e _2 para indicar o foward e reverse. E se o padrão que eu estou usando de dados é diferente eu tenho que mudar aqui.
o -s nessa parte testa para ver se tem ou não. Caso não tenha, ele cria.
                         
**caminhos = caminhos no grafo**, para a construção de um transcrito.
--min_kmer_cov 3 = parâmetro que determina do threshold, o mínimo para considerar o crescimento do transcrito.
                         
                         rf r1 é reverse do senso e r2 é foward pro senso. do RNA, do transcrito.
                         
./rnaseq-denovo.sh output/processed/cleaned ./output/ 8 20  (8threads e 20G de ram para rodar)
                         
                         
in silico??
                         não é necessário usar todos os conjuntos de dados, é uma normalização mínima suficiente para que sejam feita as contas. - distribuição de kmers, se n~ão está dentro do esperado é deletado. Isso é, esses dados a mais não vai ser usado na montagem, ele não apaga, só não usa.
                         
dentro do raw
makeblastdb -title 
                         
                         
                         
            Indice para o blast com base no transcritoma que a gente fez.             
                         
                         "RefTrans" \
			-dbtype nucl \
			-out RefTrans \
			-in transcriptoma.fa \
			 > makebleastdb.log.out.txt \
			2> makeblastdb.log.err.txt
                         
    
    fora do raw
    
    blastn         -max_hsps 1 \
        -max_target_seqs 1 \
        -num_threads 8 \
        -query ./output/trinity_assembled/Trinity.fasta \
        -task blastn \
        -db ./raw/RefTrans \
        -out ./Trinity_x_RefTrans.txt \
        -evalue 1e-5 \
        -outfmt "6 qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore" \
         > ./Trinity_x_RefTrans.log.out.txt \
        2> ./Trinity_x_RefTrans.log.err.txt

    
    hsps  - match quase que exato od transcrito com a base de dados. (procurar, não ficou super claro)
    
    -max_target_seqs 1 1 hit - ou seja que seja específico.
    
    -outfmt "6 qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore" \ - formato tabular com as seguintes informações..
    
    O script do detonator tá certo, só a versão dele compilada que está problemática.
    
    crbb - é o melhor hit de uma é igual a da outra, tipo os homólogos do exercício de blast da Claudia.
                         TransDecoder.LongOrfs -t ./output/trinity_assembled/Trinity.fasta.gene_trans_map -S -- complete_orfs_only --output_dir ./output/

    
    PWM (position weight matrix ou PSSM - position specific scoring matrix.
    
    mergeR.R - une coisas, tabelas no R.
    
    o exepmlo do script trinity abundance funciona só pro trinity, porque tem a sequência certa das colunas.
    
    ![image](https://hackmd.io/_uploads/rJmjtlYL6.png)
    
jeito certo do input
    
o id tem que ficar o que sai o nome sim pode mudar.
    
RSEM é um normalizador da estimativa de abundância.
    
o kalisto gera arquivos tsv. POr algum motivo as versões do Salmon não estão batendo, no trinity não vai direito no novo e o outro não vai bem no velho.
    
cpm - counts per million
    
    
    
    
    
# Para fazer o heatmap:
    
```
data <- read.delim(file = "/data/bioaat/bmoreno/pvulgaris/output/star_stringtie_cuffdiff/gene_exp.diff",
                                  header = TRUE,
                                  sep= "\t",
                                  dec =".",
                                  stringsAsFactors = FALSE)
```