自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(234)
  • 收藏
  • 关注

原创 Python 入门 —— 描述器

OneOf:验证值是一组受约束的选项之一。value!r } ')!rvalue!r } ')!rvalue!r } ')Number:验证值是否为int或float。根据可选参数,它还可以验证值在给定的最小值或最大值之间。value!value!value!r } ')!value!value!r } ')!rvalue!value!value!value!value!r } ')

2024-06-23 11:06:49 612

原创 Python 入门 —— 面向对象编程

在Python中,使用class关键字来定义类,我们定义一个不具有任何功能Person类其中,pass是空语句,作为一个占位符,不执行任何操作,同时保持程序结构的完整性,可以在后续为其添加功能。创建一个Person类的实例对象p类的属性和方法都是使用运算符来访问,相当于访问实例对象命名空间内的变量。类和实例对象的命名空间以动态数据结构(字典)的方式实现,可以使用内置属性__dict__来访问。vars函数可以访问任何对象的__dict__属性值,如果对象没有该属性,则会引发异常或者使用dir。

2024-06-22 11:24:04 1007

原创 Python 入门 —— 字符串

函数来打开一个文件对象,然后对该对象进行操作,打开文件可以指定不同的模式,虽然模式非常多,主要可以分为读、写和追加三种模式以及文本和二进制两种文件格式。字符串本质上也是一种序列数据结构,因此对于序列所支持的操作,基本上都可以应用于字符串上,当然,对字符串的修改操作将会被禁止,强行修改只会引发异常。中最常用的数据类型,其未不可变类型,无法对一个字符串变量进行修改,只能创建一个新的字符串,字符串使用单引号(方法有一个问题,当占位符所对应的参数没有被传递,将会抛出一个异常,这时,可以使用另一个方法。

2024-06-21 10:56:27 790

原创 Python 入门 —— 基本数据结构

变量值的是存储在内存中的,解释器会根据变量的数据类型来分配内存空间,不同类型的数据具有不同的存储方式。Python中的基本数据类型包括6种,使用type函数返回变量的类型,使用isinstance函数来判断变量的类型,intfloatcomplexbool字符串(strPython中字符串可以用单引号和双引号包裹来创建,两种方式创建的字符串没有任何区别,还可以使用三个单引号或双引号来创建字符串,三重引号的字符串可以跨越多行,其所有的空白字符都将包含在该字符串字面值当中,通常用于文档注释。

2024-06-21 10:37:27 1106

原创 Python 入门 —— 基本语法

Python使用def关键字来定义函数,我们可以将上面的斐波那契数列封装为函数a, b = 0, 1 # 以解包的方式赋值给多个变量print()# 调用函数fib(5)如果函数没有使用return显式地返回值,默认无返回值。虽然定义函数的语法与R略有不同,但是函数的结构是一致的,都含有函数名、参数、函数体及返回值。而且函数参数的使用方式类似f(1)# 1f(1, 2)# 3f(1, c=2)# 2但是由于数据结构的差别,对于可变参数的使用方式存在较大差异可变参数在Python。

2024-06-20 10:13:02 1000 1

原创 网络爬虫 —— 配置文件解析

ini格式的变种非常多,默认的解析器只具备一些常用的功能,我们可以在创建解析器是指定一些行为。例如参数可用于指明是否接受不带值的属性delimiters用于指定分隔键和值的子字符串注释的前缀用于指定插值方式,可以使用类指定更高级的语法,或使用None来禁用插值语法扩展插值插值可以跨越多个层级,使用方式形如,如果省略,则表示作用于当前小节。例如,对如下配置文件进行解析[default][Paths][Others]# '$80'

2024-06-20 09:59:34 978

原创 网络爬虫 —— xml2 和 lxml

从这些函数名称可以看出,操作结点看起来像是在操作一个列表,即将所有的子结点归结为一个列表,可以不断为其添加新的结点,并给每个节点添加了顺序索引,方便访问。例如,结点的添加和删除。函数来创建对应的结点对象,该对象相当于一个容器,能够不断为其添加不同的子结点,子结点也可以是另一个结点。对于单个结点来说,它就是一个根结点,不存在其父结点或子结点,我们可以使用不同的函数为其添加各种关系,如添加或删除子结点、兄弟结点等。来访问标签的属性,其返回的是结点自身的属性,在修改其值时,也会影响结点对应的属性值。

2024-06-19 11:19:35 1365

原创 单细胞转录组 —— 原始数据处理

文章参考中原始数据处理部分。我们这里所说的原始数据处理涉及多个步骤,从测序仪下机产生的BCL文件到原始的FASTQ文件,再到序列比对,最后以reads计数矩阵结束。计数矩阵代表了每个细胞中每个基因所产生的不同分子数量的估计值,并可以根据每个分子推测的剪接状态对数据进行分层。整体流程如下图这个计数矩阵是所有下游分析的起点,包括数据归一化、整合和过滤方法,以及推断细胞类型、发育轨迹和表达动态的方法等。因此对该计数矩阵进行稳健而准确的评估,是实现准确可靠的后续分析的基础和关键步骤。

2024-06-19 11:14:57 772

原创 单细胞转录组 —— 测序介绍

RNA测序主要有两种方法:一种是对来自不同细胞的混合RNA进行测序(),另一种是对单个细胞的转录组进行测序(在大多数情况下,混合细胞的RNA-seq比复杂的单细胞测序更便宜、更容易。得到的是所有细胞的平均表达谱,这通常更容易分析,但也会隐藏很多信息,如细胞表达的异质性。有些药物或扰动可能只会影响特定的细胞类型或细胞类型之间的相互作用。例如,耐药的肿瘤细胞会导致癌症复发,即使是在培养的细胞上也很难通过简单的来识别。所以,需要在单细胞水平上研究基因的表达,来揭示这种关系。但是,scRNA-seq。

2024-06-18 09:34:23 446

原创 R 语言入门 —— tidyverse

是 语言中专为数据科学而设计的集成包,其内所有的包具有相同的设计理念、语法以及数据结构。大名鼎鼎的画图包 便是其中之一,其管道操作让代码看起来更加简洁。既然提到了管道操作,那就让我们先来介绍一下什么是管道操作,在这之前先把包给装了我们只需一键安装 ,就可以使用其下的所有包导入 包默认会将上面打钩的包一并导入,其他包则需要手动导入, 下面的函数表示存在冲突,需要使用包名加函数名的方式访问管道操作,顾名思义就是让数据看起来像流水一样从管道一头流向另一头,或者说链式调用,数据没通过一层函数就进行了一次加

2024-06-18 09:31:32 1627

原创 网络爬虫 —— XPath 与 CSSSelect

超文本标记语言(HTML)和可扩展标记语言(XML)是两种结构相似的标记语言,其中HTML主要用于展示数据,专注于数据的外观,且标签固定;而XML主要被设计用于传输和携带数据信息,专注于数据的内容,没有预定义的标签,需要自行定义。这两种标记语言所定义的内容结构是大致相同的,都是以一种树结构的形式存储。例如,对于XML文件,我们可以简单具有自我描述性的语法来定义数据

2024-06-17 11:31:29 1075

原创 R 语言入门 —— 字符串

虽然R的字符串并不是它的强项,看起来也不是那么的优雅,但是R中数据处理和清洗过程中字符串处理还是占有较大比重的。R提供了多种基础和高级功能来处理字符串,这些功能主要集中在几个包中,如基础的R函数、stringr包等。

2024-06-17 11:07:58 308

原创 R 语言入门 —— 面向对象

我们可以在定义类时添加方法# [1] 19tom$age# [1] 20注意,我们使用了

2024-06-15 09:53:12 947

原创 R 语言入门 —— 基本数据结构

变量值的是存储在内存中的,解释器会根据变量的数据类型来分配内存空间,不同类型的数据具有不同的存储方式。R中的基本数据类型包括6种,可以使用typeof查看变量数据元素的类型,class可以查看变量的数据结构类型,所有类型都有对应的类型判断函数(is.xxx)和类型转换函数(as.xxxL。

2024-06-15 09:43:19 474

原创 R 语言入门 —— 基础语法

R是一种用于统计分析、图形展示和报告的编程语言。由Ross Ihaka和在1990年代早期在新西兰奥克兰大学开发,设计之初就作为统计数据分析和图形表示的工具。R语言的灵感来自于S语言,后者是在贝尔实验室开发的一种先进的统计编程语言。R继承了S语言的多种特性,并且以其开源的特点,在全球范围内迅速获得了广泛的应用和发展。函数是具有特定功能的代码块,我们通过将完成某一功能,或需要重复执行的代码封装起来,并为这些代码取一个函数名,函数包含函数名、输入参数、函数体以及返回值。R中的函数可以显式的使用return。

2024-06-14 21:45:42 606

原创 Mojo —— 版本更新 v24.4

Mojov24.4于2024-06-07更新,主要更新了改进了def的性能并更容易使用继续围绕类型统一标准库API改进了许多集合类型改进了Dict的插入性能新的替代了早期(不太可靠的)@unroll装饰器下面我们介绍一下具体做了哪些更新。

2024-06-10 20:30:35 711

原创 Mojo 学习 —— 导入外部函数

Mojo支持从动态链接库中导入函数,可以很方便地使用其他编程语言来对Mojo功能进行扩展。这一功能主要通过sys标准库中的ffi模块中的结构体和函数实现的。

2024-06-07 17:49:05 857

原创 Mojo 学习 —— buffer

我们接下去学习内置的buffer包,这个模块主要是对指针进行封装,其底层还是对指针进行操作。它还提供了一种NDBuffer类,可以将指针封装为多维数据,便于以矩阵的方式访问数据。还有一个需要注意的是,内置的reduction模块提供的聚集函数都是基于buffer类型的。所以还是有必要学习一下buffer模块的使用。buffer包中包含两个模块buffer:实现了Buffer类list:提供处理静态和可变列表的实用程序。

2024-06-06 18:47:30 1001 1

原创 单基因分析 —— 在线数据库使用

对于单个基因,我们可以分析些什么呢?是癌与正常的差异表达,还是高低表达的生存差异,亦或是与某些特征基因之间的表达相关性呢?不只,我们能做的不仅仅只有这些。下面我们将通过一系列的文章来详细的介绍一下单个基因可以做哪些分析。首先要选择一个兴趣基因,选用哪个基因呢?选一个研究比较多,非常著名的癌症相关基因TP53,这个基因涉及的数据比较多,分析起来比较方便。首先来介绍点简单的,使用数据库检索单基因的信息。

2024-06-02 08:53:48 1088

原创 TCGA 数据分析实战 —— 干性指数(mRNAsi、mDNAsi)

干细胞(stem cellsSC)是人体内具有自我复制和多向分化潜能的原始细胞,而这种自我更新和分化为成熟细胞的能力称为干性肿瘤干细胞 (CSCs) 是指拥有与正常干细胞相关特征的癌细胞,能在特定癌症样本中产生所有细胞类型。通常这类的细胞被认为有形成肿瘤、发展成癌症的潜力,特别是随着癌症的转移,能产生新型的癌症与不具有干性的肿瘤细胞相比,CSCs通过DNA损伤修复、抑制凋亡通路和产生耐药蛋白等自我保护机制,会导致肿瘤的进展、转移、耐药并增强了自我更新能力我们要介绍的是一篇发表在Cell。

2024-06-01 10:00:00 1682 1

原创 TCGA 数据分析实战 —— WGCNA

加权基因共表达网络分析(WGCNA)是一种用来描述不同基因在样本中的表达关联模式的系统生物学方法。通过将表达高度相关的基因聚集成不同的模块,并探究不同模块与样本表型之间的关联。还可以探究模块内的关键基因的功能,作为潜在的生物标志物或治疗靶点进行后续分析WGCNA数据预处理构建加权相关性邻接矩阵计算拓扑重叠矩阵(TOM对基因进行层次聚类,划分模块。

2024-06-01 10:00:00 1063

原创 TCGA 数据分析实战 —— TMB 与免疫浸润联合分析

近年来,随着免疫检查点抑制剂的兴起,大大改变了传统的肿瘤治疗策略,尽管PD-L1和dMMR的检测都获得了FDA的批准,提高了免疫药物的响应和获益,但它们都有自身的不足。各种检测方法判定的PD-L1水平不一致率较高,dMMR在各种不同的癌种中的携带比例差异较大而免疫治疗的效果主要是免疫细胞对癌细胞特异性抗原的识别,那么从理论上来说,那些携带基因突变越多的癌症患者,癌细胞产生的新抗原越多,被免疫细胞识别的可能性更高。也就是说,肿瘤组织的突变负荷(TMB)越高,患者或许能从免疫治疗中获得更多的收益。TMB。

2024-05-31 09:30:00 1190

原创 TCGA 数据分析实战 —— GSVA、ssGSEA 和单基因富集分析

前面,我们介绍过了差异基因的功能富集分析,今天,我们对这部分的内容作一些补充主要介绍一下GEVAssGSEA和单基因的富集分析。

2024-05-31 09:30:00 3847

原创 TCGA 数据分析实战 —— 差异甲基化区域模体分析

DNA甲基化在许多细胞进程中扮演重要的角色,例如胚胎发育、基因印迹、X染色体失活和维持染色体稳定性。在哺乳动物中,DNA甲基化很少见,其产生位置分布在整个基因组中的确定的CpG序列中,但是却很少在CpG岛上发生甲基化。CpG岛(CGI)是富含GC碱基的短间隔DNA序列。这些CpG岛通常位于转录起始位置,它们的甲基化会导致基因沉默。DNA甲基化会抑制转录,因此,对DNA甲基化的研究对于理解癌症中调控基因网络至关重要。所以,差异甲基化区域(DMR)的检测有助于我们研究调控基因网路。

2024-05-30 09:13:19 973

原创 TCGA 数据分析实战 —— 富集分析

通常,在识别完了差异基因之后,都会对差异基因进行功能富集,来获取差异基因参与的潜在生物学功能通路或生物学进程,有助于理解基因之间的作用关系以及发现基因在癌症发生发展过程中发挥的作用。通路,通常是一些已知的功能相关的基因集合,而我们常说的基因集合,一般是忽略了基因之间互作关系的通路。最常见的通路富集,是使用GO和KEGG数据库中预定义的生物学通路。

2024-05-30 09:12:31 1160

原创 TCGA 数据分析实战 —— 差异基因

数据进行差异表达分析的包,它的线性模型和差异表达函数可以应用于任何基因表达定量技术,也包括定量。包集成了很多功能,包括数据的读取、预处理(如背景矫正、组内或组件标准化等)和差异表达分析。不仅可以应用在基因水平,也可以在外显子、转录本水平进行差异分析,我们以基因水平为例。数据进行差异表达分析,也可以对其他芯片类型的数据进行分析,如。该算法的核心是使用负二项广义线性模型来检验基因表达的差异。等数据进行差异表达分析,任何从基因组特征上产生的。的几个函数来过滤低表达的基因,然后进行。来进行差异表达分析。

2024-05-29 10:37:09 1796

原创 TCGA 数据分析实战 —— 突变及拷贝数分析

在介绍完的查询下载和数据分析功能之后,我们简单展示几个示例,来练练手,加深对这个包的理解和使用我们主要从基因组、转录组和表观组3个维度分别举例来进行说明。

2024-05-29 10:10:48 2006

原创 TCGA 数据下载 —— TCGAbiolinks 数据分析

前面,我们介绍了如何获取TCGA的各种数据。在获取到数据之后,我们就可以进行数据分析及分析结果的可视化了也提供了一些列的函数,通过封装一些常用的算法来简化分析的流程。例如差异基因、富集分析、生存分析等先导入依赖包。

2024-05-28 19:05:41 1167

原创 TCGA 数据下载 —— TCGAbiolinks 临床数据下载

患者与临床信息是一对多的关系,即一个患者可能会接受多次化疗,因此,只能对单个表进行解析,使用。使用下面的代码可以获取所有 TCGA 项目的临床数据。还提供了一些用于查询、下载和解析临床数据的函数,查看具体包含的临床信息,有药物、随访、化疗等信息。由于这两个患者没有放疗信息,返回了。还有一些函数用过筛选临床样本,例如。我觉得还是直接从一些数据库中(如。),下载整理好的临床数据即可。如果我们想获取乳腺癌患者的。还可以获取其他临床信息,如。查看所包含的所有信息种类。获取其他项目的临床信息。

2024-05-27 11:39:13 1273

原创 TCGA 数据下载 —— TCGAbiolinks 简单使用

前言数据查询harmonized 数据库1. 甲基化数据:复发肿瘤样本2. 查询甲基化和表达数据3. 查询原始数据获取 manifest 文件获取 ATAC-seq 数据数据下载与处理查询和下载数据GDCprepare下载 CNV 数据下载转录组数据下载 DNA 甲基化数据下载蛋白质组数据下载临床数据下载 SNV 数据下载单细胞数据是一个利用GDC API接口来查询、下载和分析TCGA数据库的数据的R包数据查询和下载数据的常规分析可视化该包可以从上安装稳定版本if (!或者从GitHub。

2024-05-27 11:00:16 1813

原创 血浆MSI(bMSI)算法介绍

前言1. bMSISEA构建 baseline1. 计算分布2. 识别覆盖模式3. 构建 baseline预测2. 思路迪方法算法原理1. 计算阈值2. 位点不稳定性1. 数据描述2. 算法原理2.1 位点过滤2.2 位点模型2.3 状态预测在这之前,我们介绍了一个在组织中常用的MSI检测方法,如MSIsensorMANTIS等今天,我们要介绍几种应用于血浆cfDNA样本的MSI状态预测算法。

2024-05-26 10:27:56 642

原创 测序数据处理 —— 比对数据处理(Python)

前面详细介绍了比对数据的存储格式,下面我们介绍一下如何在Python中读取或修改比对结果。pysam是一个Python模块,它可以很容易地读取和操作存储在SAM/BAM文件中的比对结果。它是htslibC-API的封装,提供对SAMBAMVCFBCFBEDGFFGTFFASTAFASTQ文件的读写功能,以及访问samtools和bcftools软件包的命令行功能。当前版本封装了和。使用pip进行安装。

2024-05-26 09:44:36 445

原创 用 tidyverse 的方式玩转 Python 数据处理

今天,我们要介绍一个用于数据操作的Python第三方库 ——plydata,这个库是基于R中的dplyrtidyr和forcats包,许多函数名称都是直接借用过来的plydata使用>>作为管道操作符,用于替代函数,目前只支持 pandas 的DataFrame数据结构,后续可能还会添加对数据库的支持下面我们来看看怎么使用plydata来玩转数据操作吧plydata还提供了很多函数用于处理分类变量,我们就不再一一说明了,感兴趣的可以通过查阅下面的文档来学习,每个函数都有对应的例子,清晰易懂。

2024-05-25 10:52:02 629

原创 测序数据处理 —— 注释文件

基因组注释文件主要标注了基因组特征信息,包含基因及转录本在基因组上的位置信息,比如编码区、外显子内含子以及UTR等。我们可以根据这些文件来提取基因组对应的信息,常见的文件格式包括GFFGTF和BED。还有一种变异注释文件,用于记录和描述基因组中变异(如单核苷酸多态性(SNP)、插入和缺失(Indel)等)的详细信息及其功能注释。如VCF或GVF等。

2024-05-25 10:44:00 548

原创 MSI 检测方法概述

MSIsensor是通过MS位点两端各5bp的侧翼序列来定位的,算法原理为对于在肿瘤和正常样本中测序深度都≥20的微卫星位点, 统计其每种重复(repeat)长度的reads数目分布情况;其次, 使用卡方检验对微卫星位点上的分布进行统计检验, 若存在显著差异, 则认为该位点是不稳定的;最后统计不稳定位点的比例, 如果该比例超过指定的阈值, 则认为该样本为MSI-H。

2024-05-24 09:47:22 831

原创 Mojo 学习 —— 并行化

Mojo标准库algorithm模块中提供了很多并行化操作函数。包括functionalmemory这些函数可以直接从algorithm中导入,例如我们首先定义一个矩阵结构,用于后续并行化分析然后定义一个基准测试函数(矩阵乘法),用于测试不同版本的函数执行效率的区别。使用嵌套循环计算矩阵乘法以Python的计算结果为基准,测试Mojo运行结果。

2024-05-24 09:39:04 619

原创 RNA-seq 分析流程 —— 概述

接下来我们要介绍的是RNA-seq数据的处理分析流程,根据RNA-seqshort-readlong-read而我们一般的RNA-seq测序数据分析流程算法

2024-05-23 09:39:52 1354

原创 Mojo 学习 ——指针

这一节我们学习一下Mojo内存管理模块,这个包里面包含4个子模块。包括memoryreferenceReferenceunsafe。

2024-05-23 09:25:04 1313

原创 免疫浸润分析

肿瘤组织不是单纯的只包含肿瘤细胞,它是由各种不同类型的细胞组成的,其中就包含基质细胞,成纤维细胞,还有免疫细胞等,这些细胞就构成了肿瘤的微环境。我们比较关注的是免疫细胞在这微环境中的作用。免疫细胞又包括很多种,如B细胞,T细胞等。不同的免疫细胞在肿瘤发生过程中发挥不同的作用,而不同肿瘤的免疫细胞组成也各有特点。因此在研究肿瘤发生,治疗等机制时,常常会对不同肿瘤类型的免疫细胞进行定量研究。所谓的定量研究就是研究不同免疫细胞的比例。为了准确的评估肿瘤微环境中免疫细胞的构成,我们可以通过很多方法从RNA。

2024-05-22 09:33:13 1229

原创 Mojo 学习 —— SIMD

SIMD(单指令多数据)是一种处理器技术,它允许您一次对整个操作数集执行操作。为了支持高性能的数字处理,Mojo专门定义了SIMD结构体,并为其添加了很多操作函数及方法。Mojo使用SIMD类型作为其数字类型的基础。一个SIMD对象表示一个由硬件向量元素支持的小的向量,也就是一个固定大小的值数组,可以放入处理器的寄存器中。

2024-05-22 09:26:34 1231

Qt5 开发及实例学习源码

Qt5 模块学习源码,包含各种示例源码,比如表单,图片绘制,网络模块,多媒体,文件操作,数据库连接等

2024-05-13

anaconda 介绍、安装及使用

anaconda配置python环境

2023-11-18

吴恩达深度学习课程课后习题

吴恩达深度学习课程课后习题代码,包含练习代码,可以自己填写对应的代码来运行。也有旧版运行成功的代码

2023-11-17

获取基因芯片的基因表达信号

使用 R 的 oligo 包获取并分析基因水平或外显子水平的基因表达信号

2023-11-17

ggplot 绘制任意多坐标轴图

使用 ggplot 绘制任意多坐标轴图,理论上可以绘制很多个 y 轴,更多的 y 轴会平均分配在左右两侧

2023-11-17

ggplot 绘制弯曲阈值线的火山图

使用 ggplot 绘制漂亮的火山图,未 top 基因添加文本标注。阈值线可选直线或者曲线

2023-11-17

ggplot 绘制配对抖动点图

使用 ggplot 绘制配对的抖动点图,同时添加线段连接以及可选的箱线图和小提琴图。解决 position_dodge 点与线之间的位置不匹配的问题。

2023-11-17

Beautiful-Visualization-with-R-master.zip

R 语言数据可视化之美,绘图代码大全

2023-11-17

生物信息学+基因表达+基因对分析

C++ 版计算基因之间两两配对,在肿瘤和正常样本中的出现反转的配对基因

2023-11-16

longest-common-subsequence.py

最长公共子序列问题,动态规划法

2023-11-16

下载 HPA 数据库蛋白质荧光染色图片

Python 使用多线程线程池的方式,下载 The Human Protein Atlas(HPA) 数据库的蛋白质荧光染色图片

2023-11-16

R 绘制环状富集分析结果图

使用 R 的 clusterProfiler 进行富集分析,然后使用 circlize 包绘制环状的富集分析结果展示图

2023-10-26

AI 科研绘图矢量素材库

AI科研绘图矢量素材合集(原价9999元的),包含小鼠大鼠、细胞分子通路、各种细胞细菌病毒、人体组织、蛋白受体配体、化学、医疗设备等素材

2023-10-25

NCBI 数据上传指南.pdf

NCBI 数据上传指南.pdf

2023-10-24

Python 异步分析流程

Python 异步分析流程 asyncio

2023-10-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除