精华内容
下载资源
问答
  • 傲飞数据整合平台 OracleCDC 插件实施参考手册+傲飞数据整合工具&Oracle;&CDC;实施手册
  • 不动产登记数据整合技术方案
  • 以下配置 以下配置 过程 基于傲飞数据整合 基于傲飞数据整合 基于傲飞数据整合 基于傲飞数据整合 平台 (AKettleKettle KettleKettleKettle)。 傲飞数据整合 傲飞数据整合 傲飞数据整合 平台 (AKettleKettle ...
  • 20.数据集成、数据整合、数据融合

    千次阅读 2019-07-19 09:35:56
    定义:数据集成是要将互相关联的分布式异构数据源集成到一起, 使用户能够以透明的方式访问这些数据源。 集成是指维护数据源整体上的数据一致性、提高信息共享利用的效率; 透明的方式是指用户无...

    这是我的博士研究课题,其实研究内容和方向我是有概念的,但是总找不到合适的术语。

    数据集成是指

    数据集成已经发展很久了,虽然仍然有很多值得研究的问题。但是百度上都是应用步骤,应用方法,甚至有阿里、微软的广告

    定义:数据集成是要将互相关联的分布式异构数据源集成到一起, 使用户能够以透明的方式访问这些数据源。

    集成是指维护数据源整体上的数据一致性、提高信息共享利用的效率;

    透明的方式是指用户无需关心如何实现对异构数据源数据的访问,只关心以何种方式访问何种数据。

    数据集成难点:

    ( 1 ) 异构性: 被集成的数据源通常是独立开发的, 数据模型异构, 给集成带来很大困难。这些异构性主要表现在: 数据语义、相同语义数据的表达形式、数据源的使用环境等。

    ( 2 ) 分布性: 数据源是异地分布的, 依赖网络传输数据, 这就存在网络传输的性能和安全性等问题。

    ( 3 ) 自治性: 各个数据源有很强的自治性, 它们可以在不通知集成系统的前提下改变自身的结构和数据, 给数据集成系统的鲁棒性提出挑战。
    --------------------- 
    作者:raymond_lan 
    来源:CSDN 
    原文:https://blog.csdn.net/raymond_lan/article/details/80302870 
    版权声明:本文为博主原创文章,转载请附上博文链接!

    在数据预处理的过程当中往往需要将多个数据集合中的数据整合到一个数据仓库中,即:需要对数据库进行集成。与此同时,为了更好地对数据仓库中的数据进行挖掘,对数据仓库中的数据进行变换也在所难免。本文主要针对数据集成以及数据变化两个问题展开论述。

    数据集成在将多个数据库整合为一个数据库过程中存在需要着重解决三个问题:模式匹配、数据冗余以及数据值冲突。来自多个数据集合的数据由于在命名上存在差异导致等价的实体具有不同的名称,这给数据集成带来了挑战。怎样才能更好地对来源不同的多个实体进行匹配是摆在数据集成面前的第一个问题,涉及到实体识别问题,主要利用元数据来进行区分。

      数据冗余可能来源于数据属性命名的不一致,在解决数据冗余的过程中对于数值属性可以利用皮尔逊积矩Ra,b来衡量,它是一个位于[-1,1]之间的数值,大于零那么属性之间呈现正相关,否则为反相关。绝对值越大表明两者之间相关性越强。对于离散数据可以利用卡方检验来检测两个属性之间的关联。

      在数据集成中最后一个重要问题便是数据值冲突问题,主要表现为来源不同的统一实体具有不同的数据值。

    数据整合是指

    数据整合是共享或者合并来自于两个或者更多应用的数据,创建一个具有更多功能的企业应用的过程。传统的商业应用有很强的面向对象性——即他们依靠持续的数据结构为商业实体和过程建模。当这种情况发生时,逻辑方式是通过数据共享或合并进行整合,而其他情况下,来自于一个应用的数据可能是重新构造才能和另一个应用的数据结构匹配,然后被直接写进另一个数据库。 [2] 

    1、数据和信息系统分散

    我国信息化经过多年的发展 [4]  ,已开发了众多计算机信息系统和数据库系统,并积累了大量的基础数据。然而,丰富的数据资源由于建设时期不同,开发部门不同、使用设备不同、技术发展阶段不同和能力水平的不同等,数据存储管理极为分散,造成了过量的数据冗余和数据不一致性,使得数据资源难于查询访问,管理层无法获得有效的决策数据支持。往往管理者要了解所管辖不同部门的信息,需要进入众多不同的系统,而且数据不能直接比较分析。

    2、信息资源利用程度较低

    一些信息系统集成度低、互联性差、信息管理分散,数据的完整性、准确性、及时性等方面存在较大差距 [1]  。有些单位已经建立了内部网和互联网,但多年来分散开发或引进的信息系统,对于大量的数据不能提供一个统一的数据接口,不能采用一种通用的标准和规范,无法获得共享通用的数据源,于是不同的应用系统之间必然会形成彼此隔离的信息孤岛。缺乏共享的、网络化的可用度高的信息资源体系。

    3、支持管理决策能力较低

    同时,随着计算机业务数量的增加,管理人员的操作也越来越多,越来越复杂 [4]  ,许多日趋复杂的中间业务处理环节依然或多或少地依靠手工处理进行流转;信息加工分析手段差,无法直接从各级各类业务信息系统采集数据并加以综合利用,无法对外部信息进行及时、准确的收集反馈,业务系统产生的大量数据无法提炼升华为有用的信息,并及时提供给管理决策部门;已有的业务信息系统平台及开发工具互不兼容,无法在大范围内应用等。

    数据的共享度达不到单位对信息资源的整体开发利用的要求。简单的应用多,交叉重复也多,能支持管理和决策的应用少,能利用网络开展经营活动的应用更少。数据中蕴藏着巨大信息资源,但是没有通过有效工具充分挖掘利用,信息资源的增值作用还没有在管理决策过程中充分发挥。

    数据融合是指

    二、 为什么需要数据融合?

    其中最重要原因是用户数据的割裂性,无法全面勾勒用户全貌。比如你的购物数据在京东天猫、通话数据在移动电信、交易数据在银行金融、社交数据在腾讯微信、搜索数据在百度等等。

    数据的割裂性导致对用户的认识比较片面,可能做出错误的决策。比如:现在京东与头条的“京条计划”就是数据合作的一个案例,就是你在京东搜索的物品,会不定时在浏览今日头条中呈现,增加购买率。这里有个缺陷是如果已经在淘宝购买的物品,但还是会出现页面,导致用户体验感知下降。

    数据融合的另一个价值就是新规律新价值的发现。比如以前用户信用主要基于是否有历史借贷违约,但很多人无借贷关系数据,如何评定。芝麻信用就创新的融合上网数据、身份特征、行为偏好、社交关系等生活属性数据,来侧面刻画用户的信用。这就是数据融合价值。

    不同行业数据的融合,具有互补性和完整性,将有效提升数据内涵价值。

    引用:https://baijiahao.baidu.com/s?id=1569437547573684&wfr=spider&for=pc

    数据融合技术,包括对各种信息源给出的有用信息的采集、传输、综合、过滤、相关及合成,以便辅助人们进行态势/环境判定、规划、探测、验证、诊断。这对战场上及时准确地获取各种有用的信息,对战场情况和威胁及其重要程度进行适时的完整评价,实施战术、战略辅助决策与对作战部队的指挥控制,是极其重要的。未来战场瞬息万变,且影响决策的因素更多更复杂,要求指挥员在最短的时间内,对战场态势作出最准确的判断,对作战部队实施最有效的指挥控制。而这一系列“最”的实现,必须有最先进的数据处理技术做基本保证。否则再高明的军事领导人和指挥官也会被浩如烟海的数据所淹没,或导致判断失误,或延误决策丧失战机而造成灾难性后果。

    数据层融合

    它是直接在采集到的原始数据层上进行的融合,在各种传感器的原始测报未经预处理之前就进行数据的综合与分析。数据层融合一般采用集中式融合体系进行融合处理过程。这是低层次的融合,如成像传感器中通过对包含若一像素的模糊图像进行图像处理来确认目标属性的过程就属于数据层融合。

    特征层融合

    特征层融合属于中间层次的融合,它先对来自传感器的原始信息进行特征提取(特征可以是目标的边缘、方向、速度等),然后对特征信息进行综合分析和处理。特征层融合的优点在于实现了可观的信息压缩,有利于实时处理,并且由于所提取的特征直接与决策分析有关,因而融合结果能最大限度的给出决策分析所需要的特征信息。特征层融合一般采用分布式或集中式的融合体系。特征层融合可分为两大类:一类是目标状态融合;另一类是目标特性融合。

    决策层融合

    决策层融合通过不同类型的传感器观测同一个目标,每个传感器在本地完成基本的处理,其中包括预处理、特征抽取、识别或判决,以建立对所观察目标的初步结论。然后通过关联处理进行决策层融合判决,最终获得联合推断结果。

    数据融合概念来源于军事领域,目前是传感器数据融合应用最多。但是我想做的并不是这个。

     

    而且百度出来的内容都是偏应用方向,对于科学研究这个方向是不能靠百度来帮忙了,反正博士学习和硕士学习也不一样,还是靠自己.

    堆砌了概念之后,最后说说我要研究的,应该是在数据集成基础上深入的数据融合,以提升数据价值为目的,以社交网络或管理数据等静态数据为处理对象,主要解决数据异构、数据映射、实体识别、特征识别、可信度判断等问题。

    先拼凑这些吧,我得赶紧把博士入学考试准备下。

    展开全文
  • 冲突及解决办法、查询处理、数据集成及数据管理等相关问题,提出了中间件体系结构的异构多源数据库整合系统 解决方法,模式映射方案采用GAV,系统采用JAVA语言设计,使用JBc~4.2设计,算法采用类JAvA语法描述,模 ...
  • 首先明确高校信息建设过程中数据整合的必要性,探讨数据整合的基本概念,并结合高等学校的管理说明了数据整合需要遵循的原则,最后从信息技术层面提出数据整合的基本思路,从不同侧面探讨了高校信息建设过程中的数据整合...
  • 两种整合方法详解 NGS系列文章包括NGS基础、转录组分析(Nature重磅综述|关于RNA-seq你想知道的全在这)、ChIP-seq分析(ChIP-seq基本分析流程)、单细胞测序分析(重磅综述:三万字长文读懂单细胞RNA测序分析的最佳...

    两种整合方法详解

    NGS系列文章包括NGS基础、转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这)、ChIP-seq分析 (ChIP-seq基本分析流程)、单细胞测序分析 (重磅综述:三万字长文读懂单细胞RNA测序分析的最佳实践教程 (原理、代码和评述))、DNA甲基化分析、重测序分析、GEO数据挖掘(典型医学设计实验GEO数据分析 (step-by-step) - Limma差异分析、火山图、功能富集)等内容。

    单细胞转录组数据整合的方法多种多样,当然软件也是层出不穷,有的感觉矫正效应过强,导致不是一种细胞类型的细胞也会整合在一起,让人难以评判。前段时间有同学问我她有不同人相同肿瘤的样本,问我应该使用Merge还是使用CCA(单细胞分析Seurat使用相关的10个问题答疑精选!),我只能说实话我是不知道的,如果是我我都会试一试。由于肿瘤细胞的异质性过强,并且具有极大的样本差异性,如果使用CCA等进行整合,不知道会不会影响分析结果。并且在文章中我看的往往肿瘤样本会因为异质性导致无法重合,但其微环境如T、B等细胞还是可以有效的整合在一起,所以,保险起见,try a lot,select one!

    本次接着上两节进行的芬兰CSC-IT科学中心主讲的生物信息课程(https://www.csc.fi/web/training/-/scrnaseq)视频,官网上还提供了练习素材以及详细代码,今天就来练习一下单细胞数据整合的过程。

    在本教程中将探讨不同的整合多个单细胞RNA-seq数据集方法。我们将探索两种不同方法的校正整个数据集批次效应的效果并定量评估整合数据的质量。

    数据集

    在本教程中,我们将使用来自四种技术的3种不同的人类胰岛细胞数据集:CelSeq(GSE81076)CelSeq2(GSE85241)Fluidigm C1(GSE86469)SMART-Seq2(E-MTAB-5061)

    原始数据矩阵和metadata下载链接:

    https://www.dropbox.com/s/1zxbn92y5du9pu0/pancreas_v3_files.tar.gz?dl=1

    加载所需R包

    suppressMessages(require(Seurat))
    suppressMessages(require(ggplot2))
    suppressMessages(require(cowplot))
    suppressMessages(require(scater))
    suppressMessages(require(scran))
    suppressMessages(require(BiocParallel))suppressMessages(require(BiocNeighbors))

    Seurat (anchors and CCA)

    我们将使用在文章Comprehensive Integration of Single Cell Data[1]中所提到的数据整合方法。

    数据处理

    加载表达式矩阵和metadata。metadata文件包含四个数据集中每个细胞所用技术平台和细胞类型注释。

    pancreas.data <- readRDS(file = "session-integration_files/pancreas_expression_matrix.rds")metadata <- readRDS(file = "session-integration_files/pancreas_metadata.rds")

    创建具有所有数据集的Seurat对象。

    pancreas <- CreateSeuratObject(pancreas.data, meta.data = metadata)

    在应用任何批次校正之前先看一下数据集。我们先执行标准预处理(log-normalization)并基于方差稳定化转换(“vst”)识别变量特征,接下来对集成数据进行归一化、运行PCA并使用UMAP可视化结果。集成数据集是按细胞类型而不是测序平台进行聚类。

    # 标准化并查找可变基因
    pancreas <- NormalizeData(pancreas, verbose = FALSE)
    pancreas <- FindVariableFeatures(pancreas, selection.method = "vst", nfeatures = 2000, verbose = FALSE)
    
    # 运行标准流程并进行可视化
    pancreas <- ScaleData(pancreas, verbose = FALSE)
    pancreas <- RunPCA(pancreas, npcs = 30, verbose = FALSE)
    pancreas <- RunUMAP(pancreas, reduction = "pca", dims = 1:30)
    p1 <- DimPlot(pancreas, reduction = "umap", group.by = "tech")
    p2 <- DimPlot(pancreas, reduction = "umap", group.by = "celltype", label = TRUE, repel = TRUE) +
        NoLegend()plot_grid(p1, p2)

    将合并的对象分成一个列表,每个数据集都作为一个元素。通过执行标准预处理(log-normalization)并基于方差稳定化转换(“vst”)分别为每个数据集查找变化的基因。

    pancreas.list <- SplitObject(pancreas, split.by = "tech")
    
    for (i in 1:length(pancreas.list)) {
        pancreas.list[[i]] <- NormalizeData(pancreas.list[[i]], verbose = FALSE)
        pancreas.list[[i]] <- FindVariableFeatures(pancreas.list[[i]], selection.method = "vst", nfeatures = 2000,
            verbose = FALSE)}

    4个胰岛细胞数据集的整合

    使用FindIntegrationAnchors函数来识别锚点(anchors),该函数的输入数据是Seurat对象的列表。

    reference.list <- pancreas.list[c("celseq", "celseq2", "smartseq2", "fluidigmc1")]pancreas.anchors <- FindIntegrationAnchors(object.list = reference.list, dims = 1:30)
    ## Computing 2000 integration features
    
    ## Scaling features for provided objects
    
    ## Finding all pairwise anchors
    
    ## Running CCA
    
    ## Merging objects
    
    ## Finding neighborhoods
    
    ## Finding anchors
    
    ##  Found 3499 anchors
    
    ## Filtering anchors
    
    ##  Retained 2821 anchors
    
    ## Extracting within-dataset neighbors
    
    ## Running CCA
    
    ## Merging objects
    
    ## Finding neighborhoods
    
    ## Finding anchors
    
    ##  Found 3515 anchors
    
    ## Filtering anchors
    
    ##  Retained 2701 anchors
    
    ## Extracting within-dataset neighbors
    
    ## Running CCA
    
    ## Merging objects
    
    ## Finding neighborhoods
    
    ## Finding anchors
    
    ##  Found 6173 anchors
    
    ## Filtering anchors
    
    ##  Retained 4634 anchors
    
    ## Extracting within-dataset neighbors
    
    ## Running CCA
    
    ## Merging objects
    
    ## Finding neighborhoods
    
    ## Finding anchors
    
    ##  Found 2176 anchors
    
    ## Filtering anchors
    
    ##  Retained 1841 anchors
    
    ## Extracting within-dataset neighbors
    
    ## Running CCA
    
    ## Merging objects
    
    ## Finding neighborhoods
    
    ## Finding anchors
    
    ##  Found 2774 anchors
    
    ## Filtering anchors
    
    ##  Retained 2478 anchors
    
    ## Extracting within-dataset neighbors
    
    ## Running CCA
    
    ## Merging objects
    
    ## Finding neighborhoods
    
    ## Finding anchors
    
    ##  Found 2723 anchors
    
    ## Filtering anchors
    
    ##  Retained 2410 anchors
    ## Extracting within-dataset neighbors

    然后将这些锚(anchors)传递给IntegrateData函数,该函数返回Seurat对象。

    pancreas.integrated <- IntegrateData(anchorset = pancreas.anchors, dims = 1:30)
    ## Merging dataset 4 into 2
    
    ## Extracting anchors for merged samples
    
    ## Finding integration vectors
    
    ## Finding integration vector weights
    
    ## Integrating data
    
    ## Merging dataset 1 into 2 4
    
    ## Extracting anchors for merged samples
    
    ## Finding integration vectors
    
    ## Finding integration vector weights
    
    ## Integrating data
    
    ## Merging dataset 3 into 2 4 1
    
    ## Extracting anchors for merged samples
    
    ## Finding integration vectors
    
    ## Finding integration vector weights
    ## Integrating data

    运行IntegrateData之后,Seurat对象将包含一个具有整合(或“批次校正”)表达矩阵的新Assay。请注意,原始值(未校正的值)仍存储在“RNA”分析的对象中,因此可以来回切换。

    然后可以使用这个新的整合矩阵进行下游分析和可视化,我们在这里做了整合数据标准化、运行PCA并使用UMAP可视化结果。

    # switch to integrated assay. The variable features of this assay are automatically set during
    # IntegrateData
    DefaultAssay(pancreas.integrated) <- "integrated"
    
    # 运行标准流程并进行可视化
    pancreas.integrated <- ScaleData(pancreas.integrated, verbose = FALSE)
    pancreas.integrated <- RunPCA(pancreas.integrated, npcs = 30, verbose = FALSE)
    pancreas.integrated <- RunUMAP(pancreas.integrated, reduction = "pca", dims = 1:30)
    p1 <- DimPlot(pancreas.integrated, reduction = "umap", group.by = "tech")
    p2 <- DimPlot(pancreas.integrated, reduction = "umap", group.by = "celltype", label = TRUE, repel = TRUE) +
        NoLegend()plot_grid(p1, p2)

    Mutual Nearest Neighbor (MNN)

    整合单细胞RNA-seq数据的另一种方法是使用相互最近邻(MNN)批次校正方法,可参考Haghverdi et al[2]。

    首先可以直接从计数矩阵创建SingleCellExperiment(SCE)对象,也可以直接从Seurat转换为SCE。

    celseq.data <- as.SingleCellExperiment(pancreas.list$celseq)
    celseq2.data <- as.SingleCellExperiment(pancreas.list$celseq2)
    fluidigmc1.data <- as.SingleCellExperiment(pancreas.list$fluidigmc1)smartseq2.data <- as.SingleCellExperiment(pancreas.list$smartseq2)

    数据处理

    查找共同基因并将每个数据集简化为那些共同基因:

    keep_genes <- Reduce(intersect, list(rownames(celseq.data),rownames(celseq2.data),
                                         rownames(fluidigmc1.data),rownames(smartseq2.data)))
    celseq.data <- celseq.data[match(keep_genes, rownames(celseq.data)), ]
    celseq2.data <- celseq2.data[match(keep_genes, rownames(celseq2.data)), ]
    fluidigmc1.data <- fluidigmc1.data[match(keep_genes, rownames(fluidigmc1.data)), ]smartseq2.data <- smartseq2.data[match(keep_genes, rownames(smartseq2.data)), ]

    通过查找具有异常低的总计数特征(基因)总数的异常值,使用calculateQCMetrics()计算QC来确定低质量细胞(对一篇单细胞RNA综述的评述:细胞和基因质控参数的选择)。

    ## celseq.data
    celseq.data <- calculateQCMetrics(celseq.data)
    low_lib_celseq.data <- isOutlier(celseq.data$log10_total_counts, type="lower", nmad=3)
    low_genes_celseq.data <- isOutlier(celseq.data$log10_total_features_by_counts, type="lower", nmad=3)
    celseq.data <- celseq.data[, !(low_lib_celseq.data | low_genes_celseq.data)]
    ## celseq2.data
    celseq2.data <- calculateQCMetrics(celseq2.data)
    low_lib_celseq2.data <- isOutlier(celseq2.data$log10_total_counts, type="lower", nmad=3)
    low_genes_celseq2.data <- isOutlier(celseq2.data$log10_total_features_by_counts, type="lower", nmad=3)
    celseq2.data <- celseq2.data[, !(low_lib_celseq2.data | low_genes_celseq2.data)]
    ## fluidigmc1.data
    fluidigmc1.data <- calculateQCMetrics(fluidigmc1.data)
    low_lib_fluidigmc1.data <- isOutlier(fluidigmc1.data$log10_total_counts, type="lower", nmad=3)
    low_genes_fluidigmc1.data <- isOutlier(fluidigmc1.data$log10_total_features_by_counts, type="lower", nmad=3)
    fluidigmc1.data <- fluidigmc1.data[, !(low_lib_fluidigmc1.data | low_genes_fluidigmc1.data)]
    ## smartseq2.data
    smartseq2.data <- calculateQCMetrics(smartseq2.data)
    low_lib_smartseq2.data <- isOutlier(smartseq2.data$log10_total_counts, type="lower", nmad=3)
    low_genes_smartseq2.data <- isOutlier(smartseq2.data$log10_total_features_by_counts, type="lower", nmad=3)smartseq2.data <- smartseq2.data[, !(low_lib_smartseq2.data | low_genes_smartseq2.data)]

    使用scran包的computeSumFactors()normalize()函数计算大小(size)并对数据进行标准化:

    # 计算尺寸因子(sizefactors)
    celseq.data <- computeSumFactors(celseq.data)
    celseq2.data <- computeSumFactors(celseq2.data)
    fluidigmc1.data <- computeSumFactors(fluidigmc1.data)
    smartseq2.data <- computeSumFactors(smartseq2.data)
    
    # 标准化
    celseq.data <- normalize(celseq.data)
    celseq2.data <- normalize(celseq2.data)
    fluidigmc1.data <- normalize(fluidigmc1.data)smartseq2.data <- normalize(smartseq2.data)

    特征选择:我们使用TrendVar()decomposeVar()函数来计算每个基因的变异(variance),并将其分为技术平台和生物两个部分的差异。

    ## celseq.data
    fit_celseq.data <- trendVar(celseq.data, use.spikes=FALSE)
    dec_celseq.data <- decomposeVar(celseq.data, fit_celseq.data)
    dec_celseq.data$Symbol_TENx <- rowData(celseq.data)$Symbol_TENx
    dec_celseq.data <- dec_celseq.data[order(dec_celseq.data$bio, decreasing = TRUE), ]
    
    ## celseq2.data
    fit_celseq2.data <- trendVar(celseq2.data, use.spikes=FALSE)
    dec_celseq2.data <- decomposeVar(celseq2.data, fit_celseq2.data)
    dec_celseq2.data$Symbol_TENx <- rowData(celseq2.data)$Symbol_TENx
    dec_celseq2.data <- dec_celseq2.data[order(dec_celseq2.data$bio, decreasing = TRUE), ]
    
    ## fluidigmc1.data
    fit_fluidigmc1.data <- trendVar(fluidigmc1.data, use.spikes=FALSE)
    dec_fluidigmc1.data <- decomposeVar(fluidigmc1.data, fit_fluidigmc1.data)
    dec_fluidigmc1.data$Symbol_TENx <- rowData(fluidigmc1.data)$Symbol_TENx
    dec_fluidigmc1.data <- dec_fluidigmc1.data[order(dec_fluidigmc1.data$bio, decreasing = TRUE), ]
    
    ## smartseq2.data
    fit_smartseq2.data <- trendVar(smartseq2.data, use.spikes=FALSE)
    dec_smartseq2.data <- decomposeVar(smartseq2.data, fit_smartseq2.data)
    dec_smartseq2.data$Symbol_TENx <- rowData(smartseq2.data)$Symbol_TENx
    dec_smartseq2.data <- dec_smartseq2.data[order(dec_smartseq2.data$bio, decreasing = TRUE), ]
    
    #选择在所有数据集中共有的且信息最丰富的基因:
    universe <- Reduce(intersect, list(rownames(dec_celseq.data),rownames(dec_celseq2.data),
                                       rownames(dec_fluidigmc1.data),rownames(dec_smartseq2.data)))
    mean.bio <- (dec_celseq.data[universe,"bio"] + dec_celseq2.data[universe,"bio"] +
                   dec_fluidigmc1.data[universe,"bio"] + dec_smartseq2.data[universe,"bio"])/4hvg_genes <- universe[mean.bio > 0]

    将数据集合并到SingleCellExperiment中:

    # 总原始counts的整合
    counts_pancreas <- cbind(counts(celseq.data), counts(celseq2.data),
                             counts(fluidigmc1.data), counts(smartseq2.data))
    
    # 总的标准化后的counts整合 (with multibatch normalization)
    logcounts_pancreas <- cbind(logcounts(celseq.data), logcounts(celseq2.data),
                                logcounts(fluidigmc1.data), logcounts(smartseq2.data))
    
    # 构建整合数据的sce对象
    sce <- SingleCellExperiment(
        assays = list(counts = counts_pancreas, logcounts = logcounts_pancreas),
        rowData = rowData(celseq.data), # same as rowData(pbmc4k)
        colData = rbind(colData(celseq.data), colData(celseq2.data),
                        colData(fluidigmc1.data), colData(smartseq2.data))
    )
    
    # 将前面的hvg_genes存储到sce对象的metadata slot中:metadata(sce)$hvg_genes <- hvg_genes

    用MNN处理批次效应之前先看一下这些datasets:

    sce <- runPCA(sce,
                  ncomponents = 20,
                  feature_set = hvg_genes,
                  method = "irlba")
    
    names(reducedDims(sce)) <- "PCA_naive"
    
    p1 <- plotReducedDim(sce, use_dimred = "PCA_naive", colour_by = "tech") +
        ggtitle("PCA Without batch correction")
    p2 <- plotReducedDim(sce, use_dimred = "PCA_naive", colour_by = "celltype") +
        ggtitle("PCA Without batch correction")plot_grid(p1, p2)

    使用MNN进行数据整合

    scran软件包中的MNN方法利用一种新方法来调整批次效应-fastMNN()

     

    fastMNN()函数返回的是降维数据表示形式,该表示形式的使用与其他较低维度的表示形式(例如PCA)类似。

     

    跑fastMNN()之前,我们需要先rescale每一个批次,来调整不同批次之间的测序深度。用scran包里的multiBatchNorm()函数对size factor进行调整后,重新计算log标准化的表达值以适应不同SingleCellExperiment对象的系统差异。之前的size factors仅能移除单个批次里细胞之间的bias。现在我们通过消除批次之间技术差异来提高校正的质量。

    rescaled <- multiBatchNorm(celseq.data, celseq2.data, fluidigmc1.data, smartseq2.data)
    celseq.data_rescaled <- rescaled[[1]]
    celseq2.data_rescaled <- rescaled[[2]]
    fluidigmc1.data_rescaled <- rescaled[[3]]smartseq2.data_rescaled <- rescaled[[4]]

     

    跑fastMNN,把降维的MNN representation存在sce对象的reducedDimsslot里:

    mnn_out <- fastMNN(celseq.data_rescaled,
                       celseq2.data_rescaled,
                       fluidigmc1.data_rescaled,
                       smartseq2.data_rescaled,
                       subset.row = metadata(sce)$hvg_genes,
                       k = 20, d = 50, approximate = TRUE,
                       # BPPARAM = BiocParallel::MulticoreParam(8),
                       BNPARAM = BiocNeighbors::AnnoyParam())
    reducedDim(sce, "MNN") <- mnn_out$correct

    注意:fastMNN()不会生成批次校正的表达矩阵。因此,fastMNN()的结果应仅被视为降维表示,适合直接绘图,如TSNE/ UMAP、聚类和依赖于此类结果的轨迹分析(NBT|45种单细胞轨迹推断方法比较,110个实际数据集和229个合成数据集)。

    p1 <- plotReducedDim(sce, use_dimred = "MNN", colour_by = "tech") + ggtitle("MNN Ouput Reduced Dimensions")
    p2 <- plotReducedDim(sce, use_dimred = "MNN", colour_by = "celltype") + ggtitle("MNN Ouput Reduced Dimensions")plot_grid(p1, p2)

    Session info

    sessionInfo()
    ## R version 3.5.3 (2019-03-11)
    ## Platform: x86_64-w64-mingw32/x64 (64-bit)
    ## Running under: Windows 10 x64 (build 17763)
    ##
    ## Matrix products: default
    ##
    ## locale:
    ## [1] LC_COLLATE=English_United States.1252
    ## [2] LC_CTYPE=English_United States.1252
    ## [3] LC_MONETARY=English_United States.1252
    ## [4] LC_NUMERIC=C
    ## [5] LC_TIME=English_United States.1252
    ##
    ## attached base packages:
    ## [1] parallel  stats4    stats     graphics  grDevices utils     datasets## [8] methods   base

    [1]:https://www.biorxiv.org/content/10.1101/460147v1[2]:https://www.nature.com/articles/nbt.4091

    撰文:Tiger校对:生信宝典

    你可能还想看

     

    “harmony”整合不同平台的单细胞数据之旅

     

    Cell 深度 一套普遍适用于各类单细胞测序数据集的锚定整合方案

     

    重磅综述:三万字长文读懂单细胞RNA测序分析的最佳实践教程 (原理、代码和评述)

     

    如何使用Bioconductor进行单细胞分析?

     

    如何火眼金睛鉴定那些单细胞转录组中的混杂因素

     

    什么?你做的差异基因方法不合适?

    展开全文
  • 数据库数据整合

    千次阅读 2019-02-28 13:39:41
    系统开发一段时间上线之后,由于功能业务复杂,数据量较大,为了监控也是运维一部分,需要对数据库的数据进行检查,整合。一般会对一些关键数据进行定期检查,对于库存之类的,基本是每天都需要检查整合。每天可以...

    系统开发一段时间上线之后,由于功能业务复杂,数据量较大,为了监控也是运维一部分,需要对数据库的数据进行检查,整合。一般会对一些关键数据进行定期检查,对于库存之类的,基本是每天都需要检查整合。每天可以人工执行一些SQL,但是就会很麻烦。不够自动化。手里拿着一台电脑,竟然还要自己每天去手动。于是调查了一下想设置些东西,让sql 每天自己运行,并且把运行结果以文件形式输出。要达到的大致目标找到了,于是就开启了学习之路。下面记录一些这过程中的学习关键点。

    1:MySQL执行Select语句将结果导出到文件的方法

    看了下语句写法不复杂,于是自己写了个

    SELECT SUM(CommNum)as s from t_stock into outfile 'H://yhhsDataBack/1.sql'; ;

    运行报错:The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

    猜测是数据库安全参数设置什么的导致不能导出文件,百度这个错误,的确实是的。 也就是说,导出到什么路径,数据库已经默认了。 不能随便导出。当然也就两种方法,一种是查看默认路径是什么

    show variables like '%secure%';

    第三个参数就是允许默认的导出路径。所以改为

    SELECT SUM(CommNum)as s from t_stock into outfile 'C:\ProgramData\MySQL\MySQL Server 5.7\Uploads/1.sql'; 

    就可以正常运行。或者自己去修改MySQL的安装配置,修改这个路径参数就行。但是很麻烦,下次你换个文件,又要修改配置重启mysql .所以推荐方法2

    2:上面是运行mysql 自带的方法来实现。进一步来看,写个bat文件制定输出文件也可以实现.

    @echo off 
    cd C:/Program Files/MySQL/MySQL Server 5.7/bin
    set year=%date:~0,4%
    set month=%date:~5,2%
    set day=%date:~8,2%
    set file=%year%%month%%day%
    set filename=%year%%month%%day%.txt
    set character_set_database=GBK
    md "E:/Yhhs/StockBackups/%file%"
    mysql.exe -h localhost  -uroot -ptest123 -e"SELECT SUM(CommNum)as s from t_stock" yhhs  > E:/Yhhs/StockBackups/%file%/%filename%
    pause

    实现了按照日期时间自动创建文件。实现了输出文件的任意性。 

    cd  set  md pause 这些都是简单的cmd 命令不解释了。解释下倒数第二行参数数据库连接信息

    -h 数据库服务器地址(不是你的客户端地址)

    -u 用户名

    -p 密码

    -e 要执行的sql 语句

     yhhs 数据库名称

    > 输出的文件

    以上bat 文件写好。将bat 文件加入到系统的定时计划就行。 那天都是执行一次那个sql语句输出一个新的文件。

    在查找这个功能的时候,感觉到bat里面的命令和cmd 很想 就去百度了下bat 和cmd 的区别。 目前我的理解是,bat 和cmd 没什么区别,只是执行不同。 双击bat 文件,系统就直接运行这个bat .也是一行一行的运行里面的cmd命令。理解为cmd 要打开dos 界面实时写实时运行 ,但是bat 可以把cmd命令存起来,要用的时候,双击就好了。

    好了,再提供一个数据库备份的bat 吧,用的是mysql 自带的mysqldump.exe 这个程序。 

    @echo off 
    cd C:/Program Files/MySQL/MySQL Server 5.7/bin
    set year=%date:~0,4%
    set month=%date:~5,2%
    set day=%date:~8,2%
    set file=%year%%month%%day%
    set filename=%year%%month%%day%.sql
    set character_set_database=GBK
    md "E:/Shhs/Backups/%file%"
    mysqldump.exe --opt -Q shhs -uroot -ptest123 > E:/Shhs/Backups/%file%/%filename%
    
    

    你发现,除了mysql.exe  和mysqldump.exe之外没什么区别,只是mysqldump 没有写sql语句,select * from。。。。。 的却是的,其实你可以理解为,mysqldump已经写好了这个语句。 同样的输出就OK了。

    回来更新下。 在windos 系统下面有个很坑的东西。关于盘符。 原因是我把写的bat 由桌面放到其他E盘,点击运行,一直运行失败找不到mysql.exe  可是不是cd c:/ 这可是绝对路径哇 。 唉  cd 这个命令 的确是进去某个文件,但是只限于同一个盘符,意思是,你当前在E盘 不能直接用cd c:进C盘的文件  必须要先C:切换盘符  然后 cd ... 坑哇。  

    展开全文
  • 从零开始Tableau | 2.数据整合

    千次阅读 2018-08-24 13:07:49
    完成与数据源的连接后,需要对来自不同数据源、多个数据表的数据进行融合、联接等操作,同时还要选择适合的数据整合方式,本节内容包括: 数据联接 数据合并 数据加载 数据联接 联接字段 当需要从多个数据表...

     

    完成与数据源的连接后,需要对来自不同数据源、多个数据表的数据进行融合、联接等操作,同时还要选择适合的数据整合方式,本节内容包括:

    • 数据联接
    • 数据合并
    • 数据加载

    数据联接

    联接字段

    当需要从多个数据表中获取数据,则要用到数据联接操作。为了操作直观、简单,继续使用自制的数据集demo,包括“书籍”和“作者”两张数据表,其中,“书籍”数据表包含书名、作者、作者ID、出版社4个字段,“作者” 数据表包含作者、作者ID、国籍3个字段”。

    图:数据集demo数据表

                                                                                           图:数据集demo数据表

    如果打算分析书名、作者以及作者国籍的有关情况,就要将两张表连接在一起,这两张表有两个相同字段,分别是“作者”和“作者ID”,一般在进行数据连接时,如果既有名称又有ID,通常会选择与ID有关的字段作为连接字段,因此,上面两张表就通过“作者ID”进行联接。

    联接方式

    目前,tableau中的数据联接方式分为四种,分别是内联接、左联接、右联接和完全外部联接。通常情况,tableau会自动判断两张表的同类字段并进行关联,如果关联不正确,可以通过手动方式进行关联。

    图:tableau中的四种联接方式

                                                                                           图:tableau中的四种联接方式

    • 内联接

    使用内联接合并数据表时,生成的新表仅保留两张数据表中具有相同关键字段的行。

    对上面数据集demo的两张数据表使用内连接,生成的新表将两张数据表中,具有相同“作者ID”的行合并在一起,其余行则被剔除在外(作者ID从A015-A022被剔除在外,红色虚线框部分)。

    图:内连接示例

                                                                                           图:内连接示例

    • 左联接

    使用左联接时,生成的新表包含左侧表中所有值以及右侧表中相对应的匹配值。

    使用左联接后,生成的新表包含了“书籍”数据表中的所有行,并与“作者”数据表中,具有相同作者ID的行合并在了一起。需要注意的是,如果右侧表(“作者”数据表)中,没有与左侧表(“书籍”数据表)相匹配的项,合并后的新表中,对应数据网格则会显示null。

    图:左联接示例

                                                                                                图:左联接示例

    • 右联接

    使用右联接时,生成的新表包含右侧表中所有值以及左侧表中相对应的匹配值。

    与左联接正好相反,使用右联接后,生成的新表包含了“作者”数据表中的所有行,并与“书籍”数据表中,具有相同作者ID的行合并在了一起。需要注意的是,如果左侧表(“书籍”数据表)中,没有与右侧表(“作者”数据表)相匹配的项,合并后的新表中,对应数据网格则会显示null。

    图:右联接示例

                                                                                             图:右联接示例

    • 完全外部联接

    使用完全外部连接时,生成的新表将包含两个表中的所有值。采取这种方式时,如果一张表的值在另一张表中没有匹配项,则在对应数据网格中显示为null。

    使用完全外部联接后,生成的新表包含了“作者”数据表中的所有行,以及“书籍”数据表中的所有行,同时将两个数据表中,作者ID相同的行合并在了一起。在“书籍”或“作者”数据表的任一行中,如果以作者ID为关键字段匹配不到任何项,则会在对应数据网格中显示为null。

    图:完全外部联接示例

                                                                                         图:完全外部联接示例

    数据合并

    当需要将有多张数据结构一致的表格整合汇总在一起时,则可以使用数据合并。对于数据联接和数据合并的简单理解,数据联接是横向扩展数据表的字段,纵向的数据行数不会变得更多,而数据合并正好相反,它是纵向增加数据行数,横向的数据表字段不会变得更多。

    要进行数据合并操作,每个表必须具有相同的字段数,并且相关字段必须具有匹配的字段名称和数据类型

    手动数据合并

    为简单并且直观体验数据合并操作,先建立“书籍1”和“书籍2”两张数据表,这两张表的数据结构完全一致,均包括书名、作者、作者ID、出版社4个字段,同时数据类型也一致。

    图:手动数据合并数据表demo

                                                                                  图:手动数据合并数据表demo

     

    手动数据合并操作步骤:

    1. 在tableau工作表区“新建并集”,并将需要合并的数据表——“书籍1”和“书籍2”拖入弹出的并集(手动)对话框;
    2. tableau生成合并后的新数据表,该表包含“书籍1”和“书籍2”的所有数据,并且各字段一一对应。需要注意的是,生成的新表中,新增了sheet和table name两个字段,用于说明并集中的值的来源信息。

    图:手动数据合并操作步骤

                                                                                  图:手动数据合并操作步骤

    自动数据合并

    如果需要合并的数据并不是来自同一数据源,比如来自多个excel表,就可以使用数据合并中的“通配符搜索”完成合并工作。新建三张excel数据表,分别是“合并测试3demo”、“合并测试4demo”、“合并测试5demo”,3张数据表均包含书名、作者、作者ID、出版社4个字段。

    图:自动数据合并数据表demo

                                                                                       图:自动数据合并数据表demo

     

    自动数据合并操作步骤:

          1.将准备合并的Excel数据表放置到同一个文件夹,在工作表区执行“新建并集”操作。

    • 在弹出的“并集”对话框中选择“通配符(自动)”;

    • 在“工作簿”位置,将匹配内容改写为“合并数据*”,其中“合并数据”是共有的名称,星号是通配符,这里用于匹配3、4、5三个数字。

          2.tableau生成合并后的新数据表,该表包含“合并测试3demo”、“合并测试4demo”、“合并测试5demo”的所有数据。生成的新表新增path、sheet两个字段,用于说明并集中的值的来源路径及表名称。

    图:自动数据合并操作步骤

                                                                                图:自动数据合并操作步骤

    数据加载

    tableau中的数据载入有两种方式,分别是实时连接和数据提取。与数据源完成连接后,将某工作表拖拽至画布区,就可以在画布区看到“连接”方式的选择,分别是“实时”和“数据提取”。

    图:数据连接方式

                                                                                             图:数据连接方式

     

    “实时连接”:直接从数据源实时查询获取数据信息,tableau不对源数据进行存储。

    “数据提取”:将数据源的数据保存到本地计算机,大幅缩短tableau查询载入源数据的时间。

    选择数据提取后,可以在弹出窗口继续设定数据提取的有关细节,如通过筛选器确定要提取哪一部分数据。这里将“出版社”字段添加到了筛选器,可以在弹出的对话框中确定需要筛选的具体出版社,以进一步缩小数据提取范围;还可以确定提取的数据是所有行,还是增量部分,又或是前多少行数据;也可以通过通配符、条件等方式选择需要提取的数据。

    图:数据提取示例

                                                                                         图:数据提取示例

    “实时”和“数据提取”的选择

    在实际运用中,可结合实际选择最适合的数据加载方式确保高效完成数据分析工作。

    何时选择“数据提取”:

    • 不便于实时连接数据源,如数据是通过本地服务器获取,但又需要在别的电脑进行分析时,可以通过”数据提取“将所需分析的数据保存到本地电脑。
    • 分析的数据量较大,需要提高数据载入效率,降低源数据库的访问压力时,可以通过数据提取将数据转移到本地计算机。

    何时选择“实时连接”:

    • 源数据的保密性要求较高,处于安全考虑不希望保存到本地时,可以采取实时连接的方式。
    • 要实时更新源数据信息,并且对实时性的要求较高,可以选择实时连接的方式。

    展开全文
  • 自2013年11月20日不动产统一登记制度正式实行以来,各地持续推进不动产存量数据整合工作,将现有的分散存放在国土、住建等部门的多源异构的不动产登记数据进行规范采集、抽取、转换、补录、整合,依据《不动产登记...
  • 一、什么是多源异构数据 解释一: bonlog在博文《什么是多源异构数据》(https://blog.csdn.net/bonlog/article/details/84308418)中提到 在企业信息化建设过程中,由于各业务系统建设和实施数据管理系统的...
  • 摘要:在跟很多客户的沟通过程中,用户常常提出这样的问题:目前我们的数据库中已经存储了大量的数据,包括结构化的和非结构化的,但是分布在不同的系统,各个业务系统从这些数据库中取数据的需求和情况越来越多,...
  • 在数据仓库领域里,的一个重要概念就是数据整合(data intergration)。数据整合它就是把不同数据库中的数据整合到一起,对外提供统一的数据视图。  数据整合最典型的案例就是整合存货数据和订单数据。数据整合的另...
  • 产品需求只有直戳用户痛点才能很好的被用户所接受,获得产品的成功。而作为数据分析师则要懂得根据不同部门的需求制定不同的分析报告,从而实现部门之间的有效沟通,提高效率。
  • R语言 整合数据

    千次阅读 2020-04-15 10:19:03
    R语言中提供了许多用来整合和重塑数据的强大方法 在整合数据时,往往将多组观测值替换为根据这些观测值计算的描叙性统计量 在重塑数据时,则会通过修改数据的结构(行和列)来决定数据的组织方式 使用SQL语句操作...
  • 首先想要用一个循环读取txt数据,假设txt数据保存的名字为'8-1.txt','8-2.txt',...,并将数据保存在一个数组中,以读取4组数据为例,实现数组的纵向拼接,程序实现如下: data=[]; for i=1:4 fileName = ['8-' num2...
  • 数据仓库EDW层数据整合集成的思考

    千次阅读 2013-01-22 09:07:41
    今天单就数据仓库的集成整合特性进行思考,我想数据仓库的集成性大致主要体现在如下几个方面。 1、将企业相关IT系统经过面向主题的处理,本身就是一种集成 1.1、不同系统、不同业务逻辑的相关数据在各主题的统一 ...
  • 数据整合与BI应用的元数据标准化

    千次阅读 2008-11-19 17:00:00
    数据是各类信息化应用的核心,如何有效的利用数据,提供由价值的信息、促进共享是目前信息化应用的...正是有了元数据,才使得数据整合与BI应用的最终用户可以随心所欲地使用数据仓库(数据整合与BI应用的载体),利用数
  • 大概有100个左右的webservice接口,需要将这些接口整合,提供统一的接口,但是这些接口入参和出参都不一样,整合的话,工作量巨大。求解决思路!
  • 数据整合基础知识介绍

    千次阅读 2009-10-20 21:14:00
    数据整合作为一种资源整合的理念和方式,缘起于20世纪90年代初,是随着企业信息化集成需求出现而逐步发展完善。在企业初期信息化建设过程中,由于缺乏信息化建设统一规划,而建立了由不同核心技术构建的信息系统,这...
  • 数据整合(Data Consolidation) 数据整合(Data Consolidation)的概念数据整合是把在不同数据源的数据收集、整理、清洗,转换后(有点像ETL)加载到一个新的数据源,为数据消费者提供统一数据视图的数据集成方式...
  • 数据清洗 Chapter04 | 数据整合

    千次阅读 多人点赞 2020-04-22 10:47:11
    这篇文章讲述的是以数据可视化的方式对数据集进行初步探索包括数据的分布...Chapter04 | 数据整合一、数据库风格的DataFrame合并二、索引上的合并三、轴向连接12 一、数据库风格的DataFrame合并 使用Pandas库中...
  • 数据共享与整合技术-总结01

    千次阅读 2019-05-28 08:46:43
    大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 大数据可以...
  • 水务信息化数据整合系统方案分析

    千次阅读 2009-01-05 15:42:00
    本文从水务信息化整合可能要设及到的整合内容入手,设计了整合的方案,并指出系统整合中的难点及解决方法,给出了水务信息化数据整合系统实现模拟图。 文章来源:信息化建设 作者:张效刚 马中文 
  • 数据整合需要注意的问题

    千次阅读 2009-10-20 21:45:00
    数据整合工作量随着该投资管理公司信息化建设的持续,即将有多个信息系统投入建设,为了实现各个系统的数据流通,如果按照传统的系统集成进行数据整合建设,那么数据整合工作量将以N(n-1)/2的方式增加(图3-3),...
  • 2、读取指定文件夹里多个excel表,并将所有excel表数据整合到一个excel中 注: 该方法是用xlwt来生成excel的,生成的后缀名为xls,当数据太多(>65536时)就会报错:ValueError: row index (65536)not an ...
  • 数据采集:又称数据获取,是利用工具或者技术,从系统外部获取数据并输入到系统内部的一个过程。 数据传输:数据传输是按照一定的规程,通过一条或多条数据链路,将数据从数据源传输到...数据整合数据整合是把不同

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 589,869
精华内容 235,947
关键字:

数据整合