2021.04.09丨使用featurecount进行定量处理

  • 摘要
    • 接到一个个性化分析,客户发了一个文档,明确了分析流程以及使用工具。其中定量环节要求使用featurecount工具。平时我都是使用htseq-count进行定量,因此,在这里记录一下新工具的使用步骤和遇到的一些小问题。
  • 软件版本
    • featureCounts(subread) v2.0.1
  • 使用说明
    • 安装featureCounts
      • 该工具属于Subread软件中的定量工具,另外subread还可以进行比对和寻找SNP位点,在这里就不详述了。我们要做的就是安装Subread
      • conda install subread

         

    • -t:指定feature的类型,默认是exon,当然熟悉gtf格式的小伙伴知道一般还有gen
if (!fs.existsSync(file)) { fs.mkdirSync(file, { recursive: true }); const dataset = await gdal.openAsync(input, 'r', VECTOR_TYPE_GDAL_DRIVERS); const layerCount = await dataset.layers.countAsync(); const target = gdal.SpatialReference.fromEPSG(targetCoordinate); const projectionApp = async (geom: gdal.Geometry) => { if (geom.srs?.toWKT() !== target.toWKT()) await geom.transformToAsync(target); }; for (let i = 0; i < layerCount; i++) { const layer = await dataset.layers.getAsync(i); const featureCount = await layer.features.countAsync(); const sourceSrs = layer.srs; // 从源文件中读取原始坐标系 const outputFilePath = path.join(file, `transformed_layer_${i + 1}.shp`); const driver = gdal.drivers.get('ESRI Shapefile'); const outputDataset = await driver.createAsync(outputFilePath, 0, 0, 0, gdal.GDT_Unknown, ['OVERWRITE=YES']); const outputLayer = await outputDataset.layers.createAsync(layer.name, target, layer.geomType); // 复制图层字段 const layerFields = layer.fields; for (let j = 0; j < layerFields.count(); j++) { const fieldDefn = layerFields.get(j); outputLayer.fields.add(fieldDefn); } for (let j = 0; j < featureCount; j++) { const feature = await layer.features.getAsync(j); const geometry = feature.getGeometry(); const props = feature.fields.toObject(); // 多部件转单部件 if (geometry instanceof gdal.GeometryCollection) { for (let m = 0; m < geometry.children.count(); m++) { const geom = geometry.children.get(m); await projectionApp(geom); const newFeature = new gdal.Feature(outputLayer); for (const [key, value] of Object.entries(props)) { newFeature.fields.set(key, value); } newFeature.setGeometry(geom); await outputLayer.features.addAsync(newFeature); } } else { await projectionApp(geometry); const newFeature = new gdal.Feature(outputLayer); for (const [key, value] of Object.entries(props)) { newFeature.fields.set(key, value); } newFeature.setGeometry(geometry); await outputLayer.features.addAsync(newFeature); } } await outputDataset.flushAsync(); } } } };我想转换一个shp文件的坐标系 补充完整
最新发布
04-02
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穆易青

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值