如何将本地文件以CRAM格式上传至Google Cloud Storage并关联名称标签?
本地CRAM文件上传至Google Cloud Storage并触发分析的实现方案
嘿,我来帮你搞定这个测试任务的核心问题!先给你捋清楚步骤,顺便修正原代码里的小细节,再一步步教你上传带名称标签的CRAM文件,最后说说怎么触发分析处理函数。
首先,先修正你给出的代码里的两个小问题:
client.get_bucket()的参数不能带gs://前缀,只需要传桶的名称就行- 获取
manifest.json内容时,原代码少了download_as_text()方法,不然没法读取文件内容
修正后的基础代码如下:
import json from google.cloud import storage # 初始化GCS客户端 client = storage.Client() # 正确传入桶名(去掉gs://前缀) bucket = client.get_bucket('hmf-dr-123') # 获取并解析manifest.json manifest_blob = bucket.get_blob('manifest.json') if manifest_blob: data = json.loads(manifest_blob.download_as_text()) print("manifest.json内容加载成功") else: print("未找到manifest.json文件")
接下来就是上传本地CRAM文件并添加名称标签的核心步骤:
1. 上传本地CRAM文件到GCS
你可以自定义GCS上的对象路径,比如把标签信息(比如患者ID、样本类型)包含在路径里,方便后续识别;也可以单独给GCS对象设置标签属性。
# 本地CRAM文件的绝对路径 local_cram_file = '/Users/you/local_data/sample_001.cram' # GCS上的对象名称(这里把标签信息融入路径,方便分类) gcs_target_path = 'labeled_cram/patient_001/tumor_sample.cram' # 创建Blob对象,代表GCS上的文件 cram_blob = bucket.blob(gcs_target_path) # 上传本地文件到GCS cram_blob.upload_from_filename(local_cram_file) print(f"CRAM文件已成功上传到:gs://{bucket.name}/{gcs_target_path}")
2. 给CRAM文件添加名称标签(GCS对象标签)
如果需要给文件设置独立的名称标签(不是路径里的,而是GCS对象的元数据标签),可以用set_labels()方法:
# 定义你需要的名称标签,比如患者ID、样本类型等 name_labels = { 'patient_id': '001', 'sample_type': 'tumor', 'file_format': 'CRAM' } # 给上传的CRAM文件设置标签 cram_blob.set_labels(name_labels) # 验证标签是否设置成功 print("当前CRAM文件的标签:", cram_blob.labels)
3. 触发对应的分析处理函数
如果你的分析函数是Google Cloud Functions(最常用的场景),通常可以直接在GCS存储桶上设置最终创建事件触发器——只要有新的CRAM文件上传完成,就会自动触发函数执行。
如果需要手动触发(比如测试阶段),可以通过HTTP请求调用函数的API:
import requests # 替换成你的Cloud Function的URL function_endpoint = 'https://us-central1-your-project-id.cloudfunctions.net/your-analysis-function' # 传递必要的参数给分析函数,比如存储桶名和文件路径 trigger_payload = { 'bucket': bucket.name, 'cram_file_path': gcs_target_path } # 发送请求触发函数 response = requests.post(function_endpoint, json=trigger_payload) if response.status_code == 200: print("分析处理函数已成功触发!") else: print(f"触发失败,状态码:{response.status_code},错误信息:{response.text}")
内容的提问来源于stack exchange,提问作者shaharnakash
相关产品推荐
相关产品推荐

