xml地图|网站地图|网站标签 [设为首页] [加入收藏]
文件操作总结,武道之路
分类:编程

  文件操作对于编程语言的重要性不言而喻,如果数据不能持久保存,信息技术也就失去了意义。

  • TCGA数据源

  • 查看有多少不同的癌症数据集

  • 查看任意数据集的样本列表方式

  • 查看任意数据集的数据形式

  • 选定数据形式及样本列表后获取感兴趣基因的信息

  • 选定样本列表获取临床信息

  • 综合性获取

  • 从cBioPortal下载点突变信息

  • 从cBioPortal下载拷贝数变异数据

  • 把拷贝数及点突变信息结合画热图

  • 同理还可以下载所有其它TCGA的数据进行后续分析。

一些内置函数:

  文件操作的内容包括打开文件,操作文件,关闭文件

 

将十进制   bin()转二进制,oct()转八进制,hex()转十六进制,

一,打开文件

  python中打开文件的函数为open('filename',mode='r',encode='None'),open函数默认返回文件的句柄,我们可以根据句柄来对文件进行增,删,改,查的操作。将句柄赋给我们定义的变量,假设我们定义变量为f,则f=open('filename',mode='r',encode='utf-8') 或者with open('filename') as f。

注意点:

  1.python解释器打开文件时,是对硬盘进行操作,需要内核态才可以操作硬盘,故此时python解释器是调用操作系统的文件读取接口。windows中文版本默认使用GBK编码表,linux默认使用utf-8,所有如果操作的文件在windows下,非GBK编码的,需要在open函数中声明编码类型,使操作系统运用相应的编码规则进行解码读取,防止串码,乱码现象。

  2.open主要有三种模式,读(r),写(w),追加(a),其中,默认为读模式。各个模式的详解,见下文。

 

divmod(a,b)返回a/b的商和余数的元组。

二,关闭文件

关闭文件有两组方式:

  1.使用f.close()  ,f为open返回的句柄赋值的变量名。

   2.程序结束后,自动关闭。第一个方法容易造成文件写操作时,数据的丢失。原因是写数据时,数据会先保存在内存中,文件关闭时才会写入硬盘,此时如果文件未关闭,软件因为异常崩溃,导致内存中的数据丢失,且未写入硬盘中。作为第一种关闭方法的优化,是使用:with open('filename') as f 。with会创建一个程序块,将文件操作置于with程序块下,这样with控制块结束,文件也会自动关闭。

语法如下:

with open('f1.txt') as f1 , open('f2.txt') as f2:
    ......

  

TCGA数据源

众所周知,TCGA数据库是目前最综合全面的癌症病人相关组学数据库,包括的测序数据有:

  • DNA Sequencing

  • miRNA Sequencing

  • Protein Expression

  • mRNA Sequencing

  • Total RNA Sequencing

  • Array-based Expression

  • DNA Methylation

  • Copy Number

知名的肿瘤研究机构都有着自己的TCGA数据库探索工具,比如:

  • Broad Institute FireBrowse portal, The Broad Institute

  • cBioPortal for Cancer Genomics, Memorial Sloan-Kettering Cancer Center

  • TCGA Batch Effects, MD Anderson Cancer Center

  • Regulome Explorer, Institute for Systems Biology

  • Next-Generation Clustered Heat Maps, MD Anderson Cancer Center

其中cBioPortal更是被包装到R包里面:

这里就介绍如何使用R语言的cgdsr包来获取任意TCGA数据吧。

pow(x,y) 计算x的y次方

三,操作文件

查看有多少不同的癌症数据集

cBioPortal是按照发表文章的方式来组织TCGA数据的,当然,里面也还有很多非TCGA的数据集,所有的数据集如下所示:

library(cgdsr)library(DT)

# Get list of cancer studies at server## 获取有哪些数据集

mycgds <- CGDS("http://www.cbioportal.org/public-portal/")
all_TCGA_studies <- getCancerStudies(mycgds)

#all_TCGA_studies[1:3, 1:2]#write.csv(all_TCGA_studies,paste0(Sys.time(),"all_TCGA_studies.csv"),row.names = F) 

DT::datatable(all_TCGA_studies)

图片 1

也可以去网站上面查看这些数据集的详细信息:

round(a,b)对a进行保留b位小数

3.1 file的基本方法

方法

功能

F.read([size])  

size为读取的长度,以byte为单位

F.readline([size]) 

如果定义了size,有可能返回的只是一行的一部分 

F.readlines([size]) 

把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分

F.write(str) 

把str写到文件中,write()并不会在str后加上一个换行符

F.writelines(seq) 

把seq的内容全部写到文件中。这个函数也只是忠实地写入,不会在每行后面加上任何东西

F.close() 

关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。如果一个文件在关闭后还对其进行操作会产生ValueError 

F.flush()

把缓冲区的内容写入硬盘 ,即将内存中的数据刷新到银盘上

F.fileno() 

返回一个长整型的”文件标签“ 

F.isatty()

文件是否是一个终端设备文件(unix系统中的)

F.tell() 

返回文件操作标记的当前位置,以文件的开头为原点 

F.next()

返回下一行,并将文件操作标记位移到下一行。把一个file用于for ... in file这样的语句时,就是调用next()函数来实现遍历的。 

F.seek(offset[,whence]) 

将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾

F.truncate([size]) 

把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除。

查看任意数据集的样本列表方式

上表的cancer_study_id其实就是数据集的名字,我们任意选择一个数据集,比如stad_tcga_pub ,可以查看它里面有多少种样本列表方式。

stad2014 <- "stad_tcga_pub"

## 获取在stad2014数据集中有哪些表格(每个表格都是一个样本列表)

all_tables <- getCaseLists(mycgds, stad2014)
dim(all_tables) ## 共11种样本列表方式

## [1] 11  5

DT::datatable(all_tables[,1:3])

图片 2

dir(a),返回a的属性和方法

 

查看任意数据集的数据形式

## 而后获取可以下载哪几种数据,一般是mutation,CNV和表达量数据all_dataset <- getGeneticProfiles(mycgds, stad2014)
DT::datatable(all_dataset,
                  extensions = 'FixedColumns',
                  options = list(                    #dom = 't',
                    scrollX = TRUE,
                    fixedColumns = TRUE
                  ))

一般来说,TCGA的一个项目数据就几种,如下:

图片 3

format()格式化输出

3.2 文件的读取、创建、追加、删除、清空

选定数据形式及样本列表后获取感兴趣基因的信息

my_dataset <- 'stad_tcga_pub_rna_seq_v2_mrna'

my_table <- "stad_tcga_pub_rna_seq_v2_mrna" 

BRCA1 <- getProfileData(mycgds, "BRCA1", my_dataset, my_table)
dim(BRCA1)

## [1] 265   1

DT::datatable(BRCA1)

样本个数差异很大,不同癌症热度不一样。

 

eval(),执行字符串表达式,并返回

一,用python创建一个新文件,内容是0到9的整数,每个数字占一行

f = open('f.txt','w')
for i in range(0,10):
    f.write(str(i)+'n')

f.close()

选定样本列表获取临床信息

## 如果我们需要绘制survival curve,那么需要获取clinical数据clinicaldata <- getClinicalData(mycgds, my_table)
DT::datatable(clinicaldata,
                  extensions = 'FixedColumns',
                  options = list(                    #dom = 't',
                    scrollX = TRUE,
                    fixedColumns = TRUE
                  ))

 

 

exec()执行被字符包围的代码

二,文件内容追加,从0到9的10个随机整数

import random
f = open('f.txt','a')
for i in range(0,10):
    f.write(str(random.randint(0,9)))
f.write('n')
f.close()

综合性获取

只需要根据癌症列表选择自己感兴趣的研究数据集即可,然后选择好感兴趣的数据形式及对应的样本量。就可以获取对应的信息:

library(cgdsr)

library(DT)
 mycgds <- CGDS("http://www.cbioportal.org/public-portal/")
 ##  mycancerstudy = getCancerStudies(mycgds)[25,1]

mycancerstudy = 'brca_tcga' 

 getCaseLists(mycgds,mycancerstudy)[,1]

##  [1] "brca_tcga_3way_complete"          "brca_tcga_all"                   
##  [3] "brca_tcga_protein_quantification" "brca_tcga_sequenced"             
##  [5] "brca_tcga_cna"                    "brca_tcga_methylation_hm27"      
##  [7] "brca_tcga_methylation_hm450"      "brca_tcga_mrna"                  
##  [9] "brca_tcga_rna_seq_v2_mrna"        "brca_tcga_rppa"                  
## [11] "brca_tcga_cnaseq"

getGeneticProfiles(mycgds,mycancerstudy)[,1]

##  [1] "brca_tcga_rppa"                          
##  [2] "brca_tcga_rppa_Zscores"                  
##  [3] "brca_tcga_protein_quantification"        
##  [4] "brca_tcga_protein_quantification_zscores"
##  [5] "brca_tcga_gistic"                        
##  [6] "brca_tcga_mrna"                          
##  [7] "brca_tcga_mrna_median_Zscores"           
##  [8] "brca_tcga_rna_seq_v2_mrna"               
##  [9] "brca_tcga_rna_seq_v2_mrna_median_Zscores"
## [10] "brca_tcga_linear_CNA"                    
## [11] "brca_tcga_methylation_hm450"             
## [12] "brca_tcga_mutations"

mycaselist ='brca_tcga_rna_seq_v2_mrna'  

mygeneticprofile = 'brca_tcga_rna_seq_v2_mrna'  

# Get data slices for a specified list of genes, genetic profile and case liste

xpr=getProfileData(mycgds,c('BRCA1','BRCA2'),mygeneticprofile,mycaselist)

DT::datatable(expr)

 

是不是很简单就得到了指定基因在指定癌症的表达量哦

 

# Get clinical data for the case listmyclinicaldata = getClinicalData(mycgds,mycaselist)
DT::datatable(myclinicaldata,
                  extensions = 'FixedColumns',
                  options = list(                    #dom = 't',
                    scrollX = TRUE,
                    fixedColumns = TRUE
                  ))

## Warning in instance$preRenderHook(instance): It seems your data is too
## big for client-side DataTables. You may consider server-side processing:
## http://rstudio.github.io/DT/server.html

frozenset(Iterable),变成不可变集合

本文由澳门新葡亰手机版发布于编程,转载请注明出处:文件操作总结,武道之路

上一篇:检测本机是否联网,2上编译安装Swift 下一篇:TXT文本存储
猜你喜欢
热门排行
精彩图文