diff --git a/docs/.vuepress/.cache/markdown/auto-frontmatter.json b/docs/.vuepress/.cache/markdown/auto-frontmatter.json index 88f8abab..14e01ed7 100644 --- a/docs/.vuepress/.cache/markdown/auto-frontmatter.json +++ b/docs/.vuepress/.cache/markdown/auto-frontmatter.json @@ -1 +1 @@ -{"/Users/hughes/docs/WDL_Tools_docs/docs/README.md":"1731032419531.3145","/Users/hughes/docs/WDL_Tools_docs/docs/quickstart.md":"1731032419535.6238","/Users/hughes/docs/WDL_Tools_docs/docs/en/README.md":"1731032419531.4114","/Users/hughes/docs/WDL_Tools_docs/docs/preview/custom-component.example.md":"1731032419535.5134","/Users/hughes/docs/WDL_Tools_docs/docs/preview/markdown.md":"1731032419535.5667","/Users/hughes/docs/WDL_Tools_docs/docs/notes/intruction.md":"1731032419535.3533","/Users/hughes/docs/WDL_Tools_docs/docs/notes/onProgress.md":"1731036333208.258","/Users/hughes/docs/WDL_Tools_docs/docs/en/preview/custom-component.example.md":"1731032419531.734","/Users/hughes/docs/WDL_Tools_docs/docs/en/preview/markdown.md":"1731032419531.8218","/Users/hughes/docs/WDL_Tools_docs/docs/notes/01_10X_Genomics/README.md":"1731032419534.3516","/Users/hughes/docs/WDL_Tools_docs/docs/notes/01_10X_Genomics/scRNA-seq.md":"1731032419534.447","/Users/hughes/docs/WDL_Tools_docs/docs/notes/02_othersNot10XGenomics/README.md":"1731036604199.0923","/Users/hughes/docs/WDL_Tools_docs/docs/notes/03_dataArrangement/README.md":"1731032419534.9148","/Users/hughes/docs/WDL_Tools_docs/docs/notes/04_codeStyle/README.md":"1731032746992.298","/Users/hughes/docs/WDL_Tools_docs/docs/notes/04_codeStyle/meandAI.md":"1731060359253.3975","/Users/hughes/docs/WDL_Tools_docs/docs/notes/demo/README.md":"1731032419535.124","/Users/hughes/docs/WDL_Tools_docs/docs/notes/demo/bar.md":"1731032419535.221","/Users/hughes/docs/WDL_Tools_docs/docs/notes/demo/foo.md":"1731032419535.2754","/Users/hughes/docs/WDL_Tools_docs/docs/en/notes/demo/README.md":"1731032419531.532","/Users/hughes/docs/WDL_Tools_docs/docs/en/notes/demo/bar.md":"1731032419531.608","/Users/hughes/docs/WDL_Tools_docs/docs/en/notes/demo/foo.md":"1731032419531.658"} \ No newline at end of file +{"/Users/hughes/docs/WDL_Tools_docs/docs/README.md":"1731321122041.9927","/Users/hughes/docs/WDL_Tools_docs/docs/quickstart.md":"1731321122043.7888","/Users/hughes/docs/WDL_Tools_docs/docs/en/README.md":"1731321122042.1094","/Users/hughes/docs/WDL_Tools_docs/docs/notes/intruction.md":"1731321122043.505","/Users/hughes/docs/WDL_Tools_docs/docs/notes/onProgress.md":"1731321122043.593","/Users/hughes/docs/WDL_Tools_docs/docs/preview/custom-component.example.md":"1731321122043.6702","/Users/hughes/docs/WDL_Tools_docs/docs/preview/markdown.md":"1731321122043.7256","/Users/hughes/docs/WDL_Tools_docs/docs/en/preview/custom-component.example.md":"1731321122042.415","/Users/hughes/docs/WDL_Tools_docs/docs/en/preview/markdown.md":"1731321122042.4993","/Users/hughes/docs/WDL_Tools_docs/docs/notes/01_10X_Genomics/README.md":"1731321122042.6746","/Users/hughes/docs/WDL_Tools_docs/docs/notes/01_10X_Genomics/scRNA-seq.md":"1731321728191.347","/Users/hughes/docs/WDL_Tools_docs/docs/notes/02_othersNot10XGenomics/README.md":"1731321122042.8682","/Users/hughes/docs/WDL_Tools_docs/docs/notes/03_dataArrangement/README.md":"1731321122042.9434","/Users/hughes/docs/WDL_Tools_docs/docs/notes/04_codeStyle/README.md":"1731321122043.0251","/Users/hughes/docs/WDL_Tools_docs/docs/notes/04_codeStyle/meandAI.md":"1731321122043.2349","/Users/hughes/docs/WDL_Tools_docs/docs/notes/demo/README.md":"1731321122043.332","/Users/hughes/docs/WDL_Tools_docs/docs/notes/demo/bar.md":"1731321122043.3794","/Users/hughes/docs/WDL_Tools_docs/docs/notes/demo/foo.md":"1731321122043.4397","/Users/hughes/docs/WDL_Tools_docs/docs/en/notes/demo/README.md":"1731321122042.2234","/Users/hughes/docs/WDL_Tools_docs/docs/en/notes/demo/bar.md":"1731321122042.287","/Users/hughes/docs/WDL_Tools_docs/docs/en/notes/demo/foo.md":"1731321122042.336"} \ No newline at end of file diff --git a/docs/.vuepress/.cache/markdown/rendered/36c83715 b/docs/.vuepress/.cache/markdown/rendered/36c83715 index 057e19aa..73b5b020 100644 --- a/docs/.vuepress/.cache/markdown/rendered/36c83715 +++ b/docs/.vuepress/.cache/markdown/rendered/36c83715 @@ -1 +1 @@ -{"content":"

Sorry, we are still on progress.

\n

正在更新 Still On Progress

\n

\"Typing

\n

视频嵌入

\n
\n\n
\n

标题 2

\n

标题 3

\n

标题 4

\n
标题 5
\n
标题 6
\n

加粗:加粗文字

\n

斜体: 斜体文字

\n

删除文字

\n

内容 标记

\n

数学表达式: (2n1)-(2^{n-1})(2n1) ~ 2n112^{n-1} -12n11

\n

rωr(yωω)=(yωω){(logy)r+i=1r(1)Ir(ri+1)(logy)riωi}\\frac {\\partial^r} {\\partial \\omega^r} \\left(\\frac {y^{\\omega}} {\\omega}\\right)\n= \\left(\\frac {y^{\\omega}} {\\omega}\\right) \\left\\{(\\log y)^r + \\sum_{i=1}^r \\frac {(-1)^ Ir \\cdots (r-i+1) (\\log y)^{ri}} {\\omega^i} \\right\\}ωrr(ωyω)=(ωyω){(logy)r+i=1rωi(1)Ir(ri+1)(logy)ri}

\n

19th

\n

H2O

\n

内容居中

\n

内容右对齐

\n
\n
    \n
  1. 有序列表1
  2. \n
  3. 有序列表2
  4. \n
  5. 有序列表3
  6. \n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TablesAreCool
col 3 isright-aligned$1600
col 2 iscentered$12
zebra stripesare neat$1
\n
\n

引用内容

\n

引用内容

\n
\n

链接

\n

外部链接

\n

Badge:

\n\n

图标:

\n\n

demo wrapper:

\n
\n
\n
\n

示例

\n
\n
\n
\n
main
\n
aside
\n
\n

代码:

\n
const a = 1\nconst b = 2\nconst c = a + b\n\nconst obj = {\n  toLong: {\n    deep: {\n      deep: {\n        deep: {\n          value: 'this is to long text. this is to long text. this is to long text. this is to long text.',\n        }\n      }\n    }\n  }\n}
\n\n

代码分组:

\n

代码块高亮:

\n
function foo() {\n  const a = 1\n\n  console.log(a)\n\n  const b = 2\n  const c = 3\n\n  console.log(a + b + c)\n  console.log(a + b)\n}
\n\n

代码块聚焦:

\n
function foo() {\n  const a = 1\n}
\n\n
\n

注释

\n

注释内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

信息

\n

信息内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

提示

\n

提示内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

警告

\n

警告内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

错误

\n

错误内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

重要

\n

重要内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n

GFM alert:

\n
\n

\n

note

\n
\n
\n

相关信息

\n

info

\n
\n
\n

提示

\n

tip

\n
\n
\n

注意

\n

warning

\n
\n
\n

警告

\n

caution

\n
\n
\n

重要

\n

important

\n
\n

代码演示:

\n\n
<h1>Hello Word!</h1>\n<p><span id=\"very\">非常</span>强大!</p>
\n\n
document.querySelector('#very').addEventListener('click', () => {\n  alert('非常强大')\n})
\n\n
span {\n  color: red;\n}
\n\n
\n

选项卡:

\n\n
\n

注意

\n\n
\n

脚注:

\n

脚注 1 链接[1]

\n

脚注 2 链接[2]

\n

行内的脚注[3] 定义。

\n

重复的页脚定义[2:1]

\n

online notebook, based on marimo.app

\n
\n
\n
    \n
  1. 脚注 可以包含特殊标记

    \n

    也可以由多个段落组成 ↩︎

    \n
  2. \n
  3. 脚注文字。 ↩︎ ↩︎

    \n
  4. \n
  5. 行内脚注文本 ↩︎

    \n
  6. \n
\n
\n","env":{"base":"/WDL_Tools_docs/","filePath":"/Users/hughes/docs/WDL_Tools_docs/docs/notes/onProgress.md","filePathRelative":"notes/onProgress.md","frontmatter":{"title":"onPress","createTime":"2024/11/07 10:35:59","permalink":"/notes/onProgress/"},"sfcBlocks":{"template":{"type":"template","content":"","contentStripped":"

Sorry, we are still on progress.

\n

正在更新 Still On Progress

\n

\"Typing

\n

视频嵌入

\n
\n\n
\n

标题 2

\n

标题 3

\n

标题 4

\n
标题 5
\n
标题 6
\n

加粗:加粗文字

\n

斜体: 斜体文字

\n

删除文字

\n

内容 标记

\n

数学表达式: (2n1)-(2^{n-1})(2n1) ~ 2n112^{n-1} -12n11

\n

rωr(yωω)=(yωω){(logy)r+i=1r(1)Ir(ri+1)(logy)riωi}\\frac {\\partial^r} {\\partial \\omega^r} \\left(\\frac {y^{\\omega}} {\\omega}\\right)\n= \\left(\\frac {y^{\\omega}} {\\omega}\\right) \\left\\{(\\log y)^r + \\sum_{i=1}^r \\frac {(-1)^ Ir \\cdots (r-i+1) (\\log y)^{ri}} {\\omega^i} \\right\\}ωrr(ωyω)=(ωyω){(logy)r+i=1rωi(1)Ir(ri+1)(logy)ri}

\n

19th

\n

H2O

\n

内容居中

\n

内容右对齐

\n
\n
    \n
  1. 有序列表1
  2. \n
  3. 有序列表2
  4. \n
  5. 有序列表3
  6. \n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TablesAreCool
col 3 isright-aligned$1600
col 2 iscentered$12
zebra stripesare neat$1
\n
\n

引用内容

\n

引用内容

\n
\n

链接

\n

外部链接

\n

Badge:

\n\n

图标:

\n\n

demo wrapper:

\n
\n
\n
\n

示例

\n
\n
\n
\n
main
\n
aside
\n
\n

代码:

\n
const a = 1\nconst b = 2\nconst c = a + b\n\nconst obj = {\n  toLong: {\n    deep: {\n      deep: {\n        deep: {\n          value: 'this is to long text. this is to long text. this is to long text. this is to long text.',\n        }\n      }\n    }\n  }\n}
\n\n

代码分组:

\n

代码块高亮:

\n
function foo() {\n  const a = 1\n\n  console.log(a)\n\n  const b = 2\n  const c = 3\n\n  console.log(a + b + c)\n  console.log(a + b)\n}
\n\n

代码块聚焦:

\n
function foo() {\n  const a = 1\n}
\n\n
\n

注释

\n

注释内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

信息

\n

信息内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

提示

\n

提示内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

警告

\n

警告内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

错误

\n

错误内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

重要

\n

重要内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n

GFM alert:

\n
\n

\n

note

\n
\n
\n

相关信息

\n

info

\n
\n
\n

提示

\n

tip

\n
\n
\n

注意

\n

warning

\n
\n
\n

警告

\n

caution

\n
\n
\n

重要

\n

important

\n
\n

代码演示:

\n\n
<h1>Hello Word!</h1>\n<p><span id=\"very\">非常</span>强大!</p>
\n\n
document.querySelector('#very').addEventListener('click', () => {\n  alert('非常强大')\n})
\n\n
span {\n  color: red;\n}
\n\n
\n

选项卡:

\n\n
\n

注意

\n\n
\n

脚注:

\n

脚注 1 链接[1]

\n

脚注 2 链接[2]

\n

行内的脚注[3] 定义。

\n

重复的页脚定义[2:1]

\n

online notebook, based on marimo.app

\n
\n
\n
    \n
  1. 脚注 可以包含特殊标记

    \n

    也可以由多个段落组成 ↩︎

    \n
  2. \n
  3. 脚注文字。 ↩︎ ↩︎

    \n
  4. \n
  5. 行内脚注文本 ↩︎

    \n
  6. \n
\n
\n","tagOpen":""},"script":null,"scriptSetup":null,"scripts":[],"styles":[{"content":"","tagOpen":""}],"customBlocks":[]},"content":"## Sorry, we are still on progress.\n\n## 正在更新 Still On Progress\n\n[![Typing SVG](https://readme-typing-svg.demolab.com?font=Fira+Code&pause=1000&color=C16E12&width=435&lines=%E6%B0%B8%E8%BF%9C%E7%9B%B8%E4%BF%A1%E7%BE%8E%E5%A5%BD%E7%9A%84%E4%BA%8B%E6%83%85%E5%8D%B3%E5%B0%86%E5%8F%91%E7%94%9F)](https://git.io/typing-svg)\n\n\n## 视频嵌入\n\n
\n\n\n
\n\n## 标题 2\n\n### 标题 3\n\n#### 标题 4\n\n##### 标题 5\n\n###### 标题 6\n\n加粗:**加粗文字**\n\n斜体: _斜体文字_\n\n~~删除文字~~\n\n内容 ==标记==\n\n数学表达式: $-(2^{n-1})$ ~ $2^{n-1} -1$\n\n$\\frac {\\partial^r} {\\partial \\omega^r} \\left(\\frac {y^{\\omega}} {\\omega}\\right)\n= \\left(\\frac {y^{\\omega}} {\\omega}\\right) \\left\\{(\\log y)^r + \\sum_{i=1}^r \\frac {(-1)^ Ir \\cdots (r-i+1) (\\log y)^{ri}} {\\omega^i} \\right\\}$\n\n19^th^\n\nH~2~O\n\n::: center\n内容居中\n:::\n\n::: right\n内容右对齐\n:::\n\n- 无序列表1\n- 无序列表2\n- 无序列表3\n\n1. 有序列表1\n2. 有序列表2\n3. 有序列表3\n\n- [ ] 任务列表1\n- [ ] 任务列表2\n- [x] 任务列表3\n- [x] 任务列表4\n\n| Tables | Are | Cool |\n| ------------- |:-------------:| -----:|\n| col 3 is | right-aligned | $1600 |\n| col 2 is | centered | $12 |\n| zebra stripes | are neat | $1 |\n\n> 引用内容\n>\n> 引用内容\n\n[链接](/)\n\n[外部链接](https://github.com/pengzhanbo)\n\n**Badge:**\n\n- \n- \n- \n- \n\n**图标:**\n\n- home - \n- vscode - \n- twitter - \n\n**demo wrapper:**\n\n::: demo-wrapper title=\"示例\" no-padding height=\"200px\"\n\n\n
\n
main
\n
aside
\n
\n\n:::\n\n**代码:**\n\n```js whitespace\nconst a = 1\nconst b = 2\nconst c = a + b\n\n// [!code word:obj]\nconst obj = {\n toLong: {\n deep: {\n deep: {\n deep: {\n value: 'this is to long text. this is to long text. this is to long text. this is to long text.', // [!code highlight]\n }\n }\n }\n }\n}\n```\n\n**代码分组:**\n\n::: code-tabs\n@tab tab1\n\n```js\nconst a = 1\nconst b = 2\nconst c = a + b\n```\n\n@tab tab2\n\n```ts\nconst a: number = 1\nconst b: number = 2\nconst c: number = a + b\n```\n\n:::\n\n**代码块高亮:**\n\n```ts\nfunction foo() {\n const a = 1 // [!code highlight]\n\n console.log(a)\n\n const b = 2 // [!code ++]\n const c = 3 // [!code --]\n\n console.log(a + b + c) // [!code error]\n console.log(a + b) // [!code warning]\n}\n```\n\n**代码块聚焦:**\n\n```ts\nfunction foo() {\n const a = 1 // [!code focus]\n}\n```\n\n::: note 注释\n注释内容 [link](https://github.com/pengzhanbo) `inline code`\n\n```js\nconst a = 1\nconst b = 2\nconst c = a + b\n```\n\n:::\n\n::: info 信息\n信息内容 [link](https://github.com/pengzhanbo) `inline code`\n\n```js\nconst a = 1\nconst b = 2\nconst c = a + b\n```\n\n:::\n\n::: tip 提示\n提示内容 [link](https://github.com/pengzhanbo) `inline code`\n\n```js\nconst a = 1\nconst b = 2\nconst c = a + b\n```\n\n:::\n\n::: warning 警告\n警告内容 [link](https://github.com/pengzhanbo) `inline code`\n\n```js\nconst a = 1\nconst b = 2\nconst c = a + b\n```\n\n:::\n\n::: caution 错误\n错误内容 [link](https://github.com/pengzhanbo) `inline code`\n\n```js\nconst a = 1\nconst b = 2\nconst c = a + b\n```\n\n:::\n\n::: important 重要\n重要内容 [link](https://github.com/pengzhanbo) `inline code`\n\n```js\nconst a = 1\nconst b = 2\nconst c = a + b\n```\n\n:::\n\n**GFM alert:**\n\n> [!note]\n> note\n\n> [!info]\n> info\n\n> [!tip]\n> tip\n\n> [!warning]\n> warning\n\n> [!caution]\n> caution\n\n> [!important]\n> important\n\n**代码演示:**\n\n::: normal-demo Demo 演示\n\n```html\n

Hello Word!

\n

非常强大!

\n```\n\n```js\ndocument.querySelector('#very').addEventListener('click', () => {\n alert('非常强大')\n})\n```\n\n```css\nspan {\n color: red;\n}\n```\n\n:::\n\n**选项卡:**\n\n::: tabs\n@tab 标题1\n内容区块\n\n@tab 标题2\n内容区块\n:::\n\n:::: warning\n::: tabs\n@tab 标题1\n内容区块\n\n@tab 标题2\n内容区块\n:::\n::::\n\n**脚注:**\n\n脚注 1 链接[^first]。\n\n脚注 2 链接[^second]。\n\n行内的脚注^[行内脚注文本] 定义。\n\n重复的页脚定义[^second]。\n\n[^first]: 脚注 **可以包含特殊标记**\n\n 也可以由多个段落组成\n\n[^second]: 脚注文字。\n\n## online notebook, based on marimo.app\n\n","excerpt":"","includedFiles":[],"footnotes":{"refs":{":first":0,":second":1},"list":[{"label":"first","count":1},{"label":"second","count":2},{"content":"行内脚注文本","tokens":[{"type":"text","tag":"","attrs":null,"map":null,"nesting":0,"level":0,"children":null,"content":"行内脚注文本","markup":"","info":"","meta":null,"block":false,"hidden":false}]}]},"tasklists":4,"title":"","headers":[{"level":2,"title":"Sorry, we are still on progress.","slug":"sorry-we-are-still-on-progress","link":"#sorry-we-are-still-on-progress","children":[]},{"level":2,"title":"正在更新 Still On Progress","slug":"正在更新-still-on-progress","link":"#正在更新-still-on-progress","children":[]},{"level":2,"title":"视频嵌入","slug":"视频嵌入","link":"#视频嵌入","children":[]},{"level":2,"title":"标题 2","slug":"标题-2","link":"#标题-2","children":[{"level":3,"title":"标题 3","slug":"标题-3","link":"#标题-3","children":[]}]},{"level":2,"title":"online notebook, based on marimo.app","slug":"online-notebook-based-on-marimo-app","link":"#online-notebook-based-on-marimo-app","children":[]}]}} +{"content":"

Sorry, we are still on progress.

\n

正在更新 Still On Progress

\n

\"Typing

\n

视频嵌入

\n
\n\n
\n

colab 嵌入

\n
\n \n
\n

标题 2

\n

标题 3

\n

标题 4

\n
标题 5
\n
标题 6
\n

加粗:加粗文字

\n

斜体: 斜体文字

\n

删除文字

\n

内容 标记

\n

数学表达式: (2n1)-(2^{n-1})(2n1) ~ 2n112^{n-1} -12n11

\n

rωr(yωω)=(yωω){(logy)r+i=1r(1)Ir(ri+1)(logy)riωi}\\frac {\\partial^r} {\\partial \\omega^r} \\left(\\frac {y^{\\omega}} {\\omega}\\right)\n= \\left(\\frac {y^{\\omega}} {\\omega}\\right) \\left\\{(\\log y)^r + \\sum_{i=1}^r \\frac {(-1)^ Ir \\cdots (r-i+1) (\\log y)^{ri}} {\\omega^i} \\right\\}ωrr(ωyω)=(ωyω){(logy)r+i=1rωi(1)Ir(ri+1)(logy)ri}

\n

19th

\n

H2O

\n

内容居中

\n

内容右对齐

\n
    \n
  • 无序列表1
  • \n
  • 无序列表2
  • \n
  • 无序列表3
  • \n
\n
    \n
  1. 有序列表1
  2. \n
  3. 有序列表2
  4. \n
  5. 有序列表3
  6. \n
\n
    \n
  • \n
  • \n
  • \n
  • \n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TablesAreCool
col 3 isright-aligned$1600
col 2 iscentered$12
zebra stripesare neat$1
\n
\n

引用内容

\n

引用内容

\n
\n

链接

\n

外部链接

\n

Badge:

\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n

图标:

\n
    \n
  • home -
  • \n
  • vscode -
  • \n
  • twitter -
  • \n
\n

demo wrapper:

\n
\n
\n
\n

示例

\n
\n
\n
\n
main
\n
aside
\n
\n

代码:

\n
const a = 1\nconst b = 2\nconst c = a + b\n\nconst obj = {\n  toLong: {\n    deep: {\n      deep: {\n        deep: {\n          value: 'this is to long text. this is to long text. this is to long text. this is to long text.',\n        }\n      }\n    }\n  }\n}
\n\n

代码分组:

\n

代码块高亮:

\n
function foo() {\n  const a = 1\n\n  console.log(a)\n\n  const b = 2\n  const c = 3\n\n  console.log(a + b + c)\n  console.log(a + b)\n}
\n\n

代码块聚焦:

\n
function foo() {\n  const a = 1\n}
\n\n
\n

注释

\n

注释内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

信息

\n

信息内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

提示

\n

提示内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

警告

\n

警告内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

错误

\n

错误内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

重要

\n

重要内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n

GFM alert:

\n
\n

\n

note

\n
\n
\n

相关信息

\n

info

\n
\n
\n

提示

\n

tip

\n
\n
\n

注意

\n

warning

\n
\n
\n

警告

\n

caution

\n
\n
\n

重要

\n

important

\n
\n

代码演示:

\n\n
<h1>Hello Word!</h1>\n<p><span id=\"very\">非常</span>强大!</p>
\n\n
document.querySelector('#very').addEventListener('click', () => {\n  alert('非常强大')\n})
\n\n
span {\n  color: red;\n}
\n\n
\n

选项卡:

\n\n
\n

注意

\n\n
\n

脚注:

\n

脚注 1 链接[1]

\n

脚注 2 链接[2]

\n

行内的脚注[3] 定义。

\n

重复的页脚定义[2:1]

\n

online notebook, based on marimo.app

\n
\n
\n
    \n
  1. 脚注 可以包含特殊标记

    \n

    也可以由多个段落组成 ↩︎

    \n
  2. \n
  3. 脚注文字。 ↩︎ ↩︎

    \n
  4. \n
  5. 行内脚注文本 ↩︎

    \n
  6. \n
\n
\n","env":{"base":"/WDL_Tools_docs/","filePath":"/Users/hughes/docs/WDL_Tools_docs/docs/notes/onProgress.md","filePathRelative":"notes/onProgress.md","frontmatter":{"title":"onPress","createTime":"2024/11/07 10:35:59","permalink":"/notes/onProgress/"},"sfcBlocks":{"template":{"type":"template","content":"","contentStripped":"

Sorry, we are still on progress.

\n

正在更新 Still On Progress

\n

\"Typing

\n

视频嵌入

\n
\n\n
\n

colab 嵌入

\n
\n \n
\n

标题 2

\n

标题 3

\n

标题 4

\n
标题 5
\n
标题 6
\n

加粗:加粗文字

\n

斜体: 斜体文字

\n

删除文字

\n

内容 标记

\n

数学表达式: (2n1)-(2^{n-1})(2n1) ~ 2n112^{n-1} -12n11

\n

rωr(yωω)=(yωω){(logy)r+i=1r(1)Ir(ri+1)(logy)riωi}\\frac {\\partial^r} {\\partial \\omega^r} \\left(\\frac {y^{\\omega}} {\\omega}\\right)\n= \\left(\\frac {y^{\\omega}} {\\omega}\\right) \\left\\{(\\log y)^r + \\sum_{i=1}^r \\frac {(-1)^ Ir \\cdots (r-i+1) (\\log y)^{ri}} {\\omega^i} \\right\\}ωrr(ωyω)=(ωyω){(logy)r+i=1rωi(1)Ir(ri+1)(logy)ri}

\n

19th

\n

H2O

\n

内容居中

\n

内容右对齐

\n
    \n
  • 无序列表1
  • \n
  • 无序列表2
  • \n
  • 无序列表3
  • \n
\n
    \n
  1. 有序列表1
  2. \n
  3. 有序列表2
  4. \n
  5. 有序列表3
  6. \n
\n
    \n
  • \n
  • \n
  • \n
  • \n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TablesAreCool
col 3 isright-aligned$1600
col 2 iscentered$12
zebra stripesare neat$1
\n
\n

引用内容

\n

引用内容

\n
\n

链接

\n

外部链接

\n

Badge:

\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n

图标:

\n
    \n
  • home -
  • \n
  • vscode -
  • \n
  • twitter -
  • \n
\n

demo wrapper:

\n
\n
\n
\n

示例

\n
\n
\n
\n
main
\n
aside
\n
\n

代码:

\n
const a = 1\nconst b = 2\nconst c = a + b\n\nconst obj = {\n  toLong: {\n    deep: {\n      deep: {\n        deep: {\n          value: 'this is to long text. this is to long text. this is to long text. this is to long text.',\n        }\n      }\n    }\n  }\n}
\n\n

代码分组:

\n

代码块高亮:

\n
function foo() {\n  const a = 1\n\n  console.log(a)\n\n  const b = 2\n  const c = 3\n\n  console.log(a + b + c)\n  console.log(a + b)\n}
\n\n

代码块聚焦:

\n
function foo() {\n  const a = 1\n}
\n\n
\n

注释

\n

注释内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

信息

\n

信息内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

提示

\n

提示内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

警告

\n

警告内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

错误

\n

错误内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n
\n

重要

\n

重要内容 link inline code

\n
const a = 1\nconst b = 2\nconst c = a + b
\n\n
\n

GFM alert:

\n
\n

\n

note

\n
\n
\n

相关信息

\n

info

\n
\n
\n

提示

\n

tip

\n
\n
\n

注意

\n

warning

\n
\n
\n

警告

\n

caution

\n
\n
\n

重要

\n

important

\n
\n

代码演示:

\n\n
<h1>Hello Word!</h1>\n<p><span id=\"very\">非常</span>强大!</p>
\n\n
document.querySelector('#very').addEventListener('click', () => {\n  alert('非常强大')\n})
\n\n
span {\n  color: red;\n}
\n\n
\n

选项卡:

\n\n
\n

注意

\n\n
\n

脚注:

\n

脚注 1 链接[1]

\n

脚注 2 链接[2]

\n

行内的脚注[3] 定义。

\n

重复的页脚定义[2:1]

\n

online notebook, based on marimo.app

\n
\n
\n
    \n
  1. 脚注 可以包含特殊标记

    \n

    也可以由多个段落组成 ↩︎

    \n
  2. \n
  3. 脚注文字。 ↩︎ ↩︎

    \n
  4. \n
  5. 行内脚注文本 ↩︎

    \n
  6. \n
\n
\n","tagOpen":""},"script":null,"scriptSetup":null,"scripts":[],"styles":[{"content":"","tagOpen":""}],"customBlocks":[]},"content":"## Sorry, we are still on progress.\n\n## 正在更新 Still On Progress\n\n[![Typing SVG](https://readme-typing-svg.demolab.com?font=Fira+Code&pause=1000&color=C16E12&width=435&lines=%E6%B0%B8%E8%BF%9C%E7%9B%B8%E4%BF%A1%E7%BE%8E%E5%A5%BD%E7%9A%84%E4%BA%8B%E6%83%85%E5%8D%B3%E5%B0%86%E5%8F%91%E7%94%9F)](https://git.io/typing-svg)\n\n\n## 视频嵌入\n\n
\n\n\n
\n\ncolab 嵌入\n\n
\n \n
\n\n\n\n\n## 标题 2\n\n### 标题 3\n\n#### 标题 4\n\n##### 标题 5\n\n###### 标题 6\n\n加粗:**加粗文字**\n\n斜体: _斜体文字_\n\n~~删除文字~~\n\n内容 ==标记==\n\n数学表达式: $-(2^{n-1})$ ~ $2^{n-1} -1$\n\n$\\frac {\\partial^r} {\\partial \\omega^r} \\left(\\frac {y^{\\omega}} {\\omega}\\right)\n= \\left(\\frac {y^{\\omega}} {\\omega}\\right) \\left\\{(\\log y)^r + \\sum_{i=1}^r \\frac {(-1)^ Ir \\cdots (r-i+1) (\\log y)^{ri}} {\\omega^i} \\right\\}$\n\n19^th^\n\nH~2~O\n\n::: center\n内容居中\n:::\n\n::: right\n内容右对齐\n:::\n\n- 无序列表1\n- 无序列表2\n- 无序列表3\n\n1. 有序列表1\n2. 有序列表2\n3. 有序列表3\n\n- [ ] 任务列表1\n- [ ] 任务列表2\n- [x] 任务列表3\n- [x] 任务列表4\n\n| Tables | Are | Cool |\n| ------------- |:-------------:| -----:|\n| col 3 is | right-aligned | $1600 |\n| col 2 is | centered | $12 |\n| zebra stripes | are neat | $1 |\n\n> 引用内容\n>\n> 引用内容\n\n[链接](/)\n\n[外部链接](https://github.com/pengzhanbo)\n\n**Badge:**\n\n- \n- \n- \n- \n\n**图标:**\n\n- home - \n- vscode - \n- twitter - \n\n**demo wrapper:**\n\n::: demo-wrapper title=\"示例\" no-padding height=\"200px\"\n\n\n
\n
main
\n
aside
\n
\n\n:::\n\n**代码:**\n\n```js whitespace\nconst a = 1\nconst b = 2\nconst c = a + b\n\n// [!code word:obj]\nconst obj = {\n toLong: {\n deep: {\n deep: {\n deep: {\n value: 'this is to long text. this is to long text. this is to long text. this is to long text.', // [!code highlight]\n }\n }\n }\n }\n}\n```\n\n**代码分组:**\n\n::: code-tabs\n@tab tab1\n\n```js\nconst a = 1\nconst b = 2\nconst c = a + b\n```\n\n@tab tab2\n\n```ts\nconst a: number = 1\nconst b: number = 2\nconst c: number = a + b\n```\n\n:::\n\n**代码块高亮:**\n\n```ts\nfunction foo() {\n const a = 1 // [!code highlight]\n\n console.log(a)\n\n const b = 2 // [!code ++]\n const c = 3 // [!code --]\n\n console.log(a + b + c) // [!code error]\n console.log(a + b) // [!code warning]\n}\n```\n\n**代码块聚焦:**\n\n```ts\nfunction foo() {\n const a = 1 // [!code focus]\n}\n```\n\n::: note 注释\n注释内容 [link](https://github.com/pengzhanbo) `inline code`\n\n```js\nconst a = 1\nconst b = 2\nconst c = a + b\n```\n\n:::\n\n::: info 信息\n信息内容 [link](https://github.com/pengzhanbo) `inline code`\n\n```js\nconst a = 1\nconst b = 2\nconst c = a + b\n```\n\n:::\n\n::: tip 提示\n提示内容 [link](https://github.com/pengzhanbo) `inline code`\n\n```js\nconst a = 1\nconst b = 2\nconst c = a + b\n```\n\n:::\n\n::: warning 警告\n警告内容 [link](https://github.com/pengzhanbo) `inline code`\n\n```js\nconst a = 1\nconst b = 2\nconst c = a + b\n```\n\n:::\n\n::: caution 错误\n错误内容 [link](https://github.com/pengzhanbo) `inline code`\n\n```js\nconst a = 1\nconst b = 2\nconst c = a + b\n```\n\n:::\n\n::: important 重要\n重要内容 [link](https://github.com/pengzhanbo) `inline code`\n\n```js\nconst a = 1\nconst b = 2\nconst c = a + b\n```\n\n:::\n\n**GFM alert:**\n\n> [!note]\n> note\n\n> [!info]\n> info\n\n> [!tip]\n> tip\n\n> [!warning]\n> warning\n\n> [!caution]\n> caution\n\n> [!important]\n> important\n\n**代码演示:**\n\n::: normal-demo Demo 演示\n\n```html\n

Hello Word!

\n

非常强大!

\n```\n\n```js\ndocument.querySelector('#very').addEventListener('click', () => {\n alert('非常强大')\n})\n```\n\n```css\nspan {\n color: red;\n}\n```\n\n:::\n\n**选项卡:**\n\n::: tabs\n@tab 标题1\n内容区块\n\n@tab 标题2\n内容区块\n:::\n\n:::: warning\n::: tabs\n@tab 标题1\n内容区块\n\n@tab 标题2\n内容区块\n:::\n::::\n\n**脚注:**\n\n脚注 1 链接[^first]。\n\n脚注 2 链接[^second]。\n\n行内的脚注^[行内脚注文本] 定义。\n\n重复的页脚定义[^second]。\n\n[^first]: 脚注 **可以包含特殊标记**\n\n 也可以由多个段落组成\n\n[^second]: 脚注文字。\n\n## online notebook, based on marimo.app\n\n","excerpt":"","includedFiles":[],"footnotes":{"refs":{":first":0,":second":1},"list":[{"label":"first","count":1},{"label":"second","count":2},{"content":"行内脚注文本","tokens":[{"type":"text","tag":"","attrs":null,"map":null,"nesting":0,"level":0,"children":null,"content":"行内脚注文本","markup":"","info":"","meta":null,"block":false,"hidden":false}]}]},"tasklists":4,"title":"","headers":[{"level":2,"title":"Sorry, we are still on progress.","slug":"sorry-we-are-still-on-progress","link":"#sorry-we-are-still-on-progress","children":[]},{"level":2,"title":"正在更新 Still On Progress","slug":"正在更新-still-on-progress","link":"#正在更新-still-on-progress","children":[]},{"level":2,"title":"视频嵌入","slug":"视频嵌入","link":"#视频嵌入","children":[]},{"level":2,"title":"标题 2","slug":"标题-2","link":"#标题-2","children":[{"level":3,"title":"标题 3","slug":"标题-3","link":"#标题-3","children":[]}]},{"level":2,"title":"online notebook, based on marimo.app","slug":"online-notebook-based-on-marimo-app","link":"#online-notebook-based-on-marimo-app","children":[]}]}} diff --git a/docs/.vuepress/.cache/markdown/rendered/_metadata.json b/docs/.vuepress/.cache/markdown/rendered/_metadata.json index 4001fe9c..d7037486 100644 --- a/docs/.vuepress/.cache/markdown/rendered/_metadata.json +++ b/docs/.vuepress/.cache/markdown/rendered/_metadata.json @@ -1 +1 @@ -{"en/preview/markdown.md":"eaa713d8","preview/markdown.md":"3ef61bf4","README 2.md":"55d7390e","quickstart.md":"ff9a53d0","en/preview/custom-component.example.md":"62eb0e9e","notes/demo/bar.md":"54b40380","notes/demo/foo.md":"533fd271","preview/custom-component.example.md":"172fb5c4","notes/demo/README.md":"5dc994c6","README.md":"195f2454","en/notes/demo/bar.md":"6f119cc2","en/notes/demo/foo.md":"0802c33f","en/README.md":"17e12da5","en/notes/demo/README.md":"28335ead","notes/intruction.md":"0e5cb07e","notes/01_10X_Genomics/scRNA-seq.md":"0e9ca857","notes/onPress.md":"18a21352","notes/onProgress.md":"d6d028e4","notes/01_10X_Genomics/README.md":"30fe9882","notes/demo/README.md 16-48-42-535.md":"5dc994c6","notes/02_othersNot10XGenomics/README.md":"1176fa1e","notes/03_dataArrangement/README.md":"d16d5e5a","notes/04_codeStyle/meandAI.md":"264d2ecc","notes/04_codeStyle/README.md":"709e3728"} +{"en/preview/markdown.md":"eaa713d8","preview/markdown.md":"3ef61bf4","README 2.md":"55d7390e","quickstart.md":"ff9a53d0","en/preview/custom-component.example.md":"62eb0e9e","notes/demo/bar.md":"54b40380","notes/demo/foo.md":"533fd271","preview/custom-component.example.md":"172fb5c4","notes/demo/README.md":"5dc994c6","README.md":"195f2454","en/notes/demo/bar.md":"6f119cc2","en/notes/demo/foo.md":"0802c33f","en/README.md":"17e12da5","en/notes/demo/README.md":"28335ead","notes/intruction.md":"0e5cb07e","notes/01_10X_Genomics/scRNA-seq.md":"2bf09ecf","notes/onPress.md":"18a21352","notes/onProgress.md":"314a6658","notes/01_10X_Genomics/README.md":"30fe9882","notes/demo/README.md 16-48-42-535.md":"5dc994c6","notes/02_othersNot10XGenomics/README.md":"1176fa1e","notes/03_dataArrangement/README.md":"d16d5e5a","notes/04_codeStyle/meandAI.md":"f46c0234","notes/04_codeStyle/README.md":"709e3728"} diff --git a/docs/.vuepress/.cache/markdown/rendered/da1e6afc b/docs/.vuepress/.cache/markdown/rendered/da1e6afc index 6693b9fa..1f8ba6b5 100644 --- a/docs/.vuepress/.cache/markdown/rendered/da1e6afc +++ b/docs/.vuepress/.cache/markdown/rendered/da1e6afc @@ -1 +1 @@ -{"content":"

10X Genomics scRNA-seq

\n

为了便于工作流的可重复性,我们推荐您使用json文件来描述和存档您的实验参数。

\n

写在前面

\n

这里会涉及到BioOS文件管理的相关内容,请参考BioOS文件管理

\n

在这里,我们假设您已经对平台的使用有了基础的了解,并创建了必要的文件夹。如果还没有,请参考动手学BioOS计算

\n

请注意,我们不要求您对json文件、WDL文件或者云计算有深入的了解,您只需要知道如何使用json文件来描述您的实验参数。我们的目标是您只需要知道如何“复制、粘贴”就能完成您的实验。

\n

让我们开始吧!

\n

对于一个典型的10X Genomics scRNA-seq实验,我们推荐使用如下的json文件:

\n
{\n  \"cellranger_count_workflow.chemistry\": \"auto\",\n  \"cellranger_count_workflow.cpu\": 32,\n  \"cellranger_count_workflow.disk_space\": \"300 GB\",\n  \"cellranger_count_workflow.fastq_file_paths\": null,\n  \"cellranger_count_workflow.memory\": \"225 GB\",\n  \"cellranger_count_workflow.no_bam\": \"False\",\n  \"cellranger_count_workflow.reference_genome_tar_gz\": \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/RAW/refdata-cellranger-GRCh38-3.0.0.tar.gz\",\n  \"cellranger_count_workflow.run_id\": null,\n  \"cellranger_count_workflow.sample\": null,\n  \"cellranger_count_workflow.secondary\": \"False\"\n}
\n\n

看起来很复杂,但没关系。仔细观察,您会发现,这个json文件的部分参数已经自动设置好了,在大部分情况下,您只需要依次填写您自己的参数即可。

\n

(markdown格式 引用 可折叠 或者 展开上标引用)注释:作为快速上手教程,我们不对具体的参数做出解释,具体的参数的解释请参考10X Genomics官方文档,在支持文档,我们也会对一些关键参数做出解释。

\n

这里我们给出了填写示例:

\n
\n

注意这几个存在内容新增的部分

\n
\n
{\n  \"cellranger_count_workflow.chemistry\": \"auto\",\n  \"cellranger_count_workflow.cpu\": 32,\n  \"cellranger_count_workflow.disk_space\": \"300 GB\",\n  \"cellranger_count_workflow.fastq_file_paths\": [ \n    \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/ERR8048237/5891STDY8062334_S1_L001_I1_001.fastq.gz\",\n    \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/ERR8048237/5891STDY8062334_S1_L001_R1_001.fastq.gz\",\n    \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/ERR8048237/5891STDY8062334_S1_L001_R2_001.fastq.gz\"\n  ],\n  \"cellranger_count_workflow.memory\": \"225 GB\",\n  \"cellranger_count_workflow.no_bam\": \"False\",\n  \"cellranger_count_workflow.reference_genome_tar_gz\": \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/RAW/refdata-cellranger-GRCh38-3.0.0.tar.gz\",\n  \"cellranger_count_workflow.run_id\": \"ERR8048237\",\n  \"cellranger_count_workflow.sample\": \"5891STDY8062334\",\n  \"cellranger_count_workflow.secondary\": \"False\"\n}
\n\n

是的,就是这么简单。我们添加了文件路径,并填写了run_id和sample。这和您在本地计算的参数填写逻辑是一样的。我们已经准备好了,现在就提交任务吧!

\n

提交任务

\n

让我们回到BioOS平台,来到我们的cellrangerTest页面。试试看,找到页面上的"运行参数"选项卡>输入参数>"上传JSON文件",将您的json文件上传。

\n

然后,点击页面上的绿色按钮"开始分析",等待任务完成。

\n\n

查看结果

\n

任务完成后,您可以在分析历史中看到您的任务。点击任务名称,进入任务详情页面。在任务详情页面,您可以查看/下载结果。

\n\n

点击"查看",让我们来看看结果吧!所有的结果文件都会列出在这里,除了结果之外,也包括运行日志等文件,这取决于WDL文件的具体设置。

\n
# 在本例中,你的文件结构是这个样子:\n全部文件/analysis/$投递任务ID/$WDL_Task_ID/$workflow标识ID/call-$WDL_Task_ID/\n├── execution\n   ├── PRJNA693201_dlst000564_SRR13482541\n   └── outs\n       ├── PRJNA693201_dlst000564_SRR13482541_filtered_feature_bc_matrix.h5ad\n       ├── metrics_summary.csv\n       ├── possorted_genome_bam.bam\n       └── web_summary.html\n   ├── PRJNA693201_dlst000564_SRR13482541_outs.tar.gz\n   ├── log # cromwell 日志文件\n   ├── rc # cromwell 运行时文件\n   ├── script # cromwell 脚本文件\n   ├── stderr # cromwell 标准错误文件\n   └── stdout # cromwell 标准输出文件
\n\n
\n

我们在这里展示的是一个多样本的分析结果(如果您按照上图的方法点击查看结果),所以您会看到多个样本的结果文件夹。让我们逐级打开文件夹,找到我们需要的文件。所有的日志以及结果文件都会列出在这里。

\n
\n

在这个示例中,我们需要的文件在 "outs" 文件夹中,让我们逐渐深入文件夹,找到我们需要的文件。

\n\n

🤔 如果你想在本地查看结果?

\n

我们需要这里的 $ID_filtered_feature_bc_matrix.h5ad 文件,让我们点击下载。

\n\n

🎊Bravo!🎊 到此为止,您已经掌握了BioOS的基本使用方法,并成功完成了一次10X Genomics scRNA-seq的分析。👏👏👏

\n

如果我有很多数据呢?

\n

🤔好,那么好,这时候可能就会有人问了,如果我们有很多数据,也要像这样一个一个点击吗?

\n
\n

非常好的问题!当你尝试把一件简单的事情重复做上一万遍的时候,其复杂度将会指数增加📈。

\n
\n

当然不是,我们在这里只展示了BioOS的冰山一角,BioOS的真正能力将在您尝试构建数据模型/实体之后展现。下面,让我们从一个稍微复杂的例子开始,一步一步的学习如何调度BioOS强大的计算能力。

\n","env":{"base":"/WDL_Tools_docs/","filePath":"/Users/hughes/docs/WDL_Tools_docs/docs/notes/01_10X_Genomics/scRNA-seq.md","filePathRelative":"notes/01_10X_Genomics/scRNA-seq.md","frontmatter":{"title":"10X Genomics scRNA-seq 数据分析","createTime":"2024/10/30 11:20:18","permalink":"/01_10X_Genomics/scRNA-seq/"},"sfcBlocks":{"template":{"type":"template","content":"","contentStripped":"

10X Genomics scRNA-seq

\n

为了便于工作流的可重复性,我们推荐您使用json文件来描述和存档您的实验参数。

\n

写在前面

\n

这里会涉及到BioOS文件管理的相关内容,请参考BioOS文件管理

\n

在这里,我们假设您已经对平台的使用有了基础的了解,并创建了必要的文件夹。如果还没有,请参考动手学BioOS计算

\n

请注意,我们不要求您对json文件、WDL文件或者云计算有深入的了解,您只需要知道如何使用json文件来描述您的实验参数。我们的目标是您只需要知道如何“复制、粘贴”就能完成您的实验。

\n

让我们开始吧!

\n

对于一个典型的10X Genomics scRNA-seq实验,我们推荐使用如下的json文件:

\n
{\n  \"cellranger_count_workflow.chemistry\": \"auto\",\n  \"cellranger_count_workflow.cpu\": 32,\n  \"cellranger_count_workflow.disk_space\": \"300 GB\",\n  \"cellranger_count_workflow.fastq_file_paths\": null,\n  \"cellranger_count_workflow.memory\": \"225 GB\",\n  \"cellranger_count_workflow.no_bam\": \"False\",\n  \"cellranger_count_workflow.reference_genome_tar_gz\": \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/RAW/refdata-cellranger-GRCh38-3.0.0.tar.gz\",\n  \"cellranger_count_workflow.run_id\": null,\n  \"cellranger_count_workflow.sample\": null,\n  \"cellranger_count_workflow.secondary\": \"False\"\n}
\n\n

看起来很复杂,但没关系。仔细观察,您会发现,这个json文件的部分参数已经自动设置好了,在大部分情况下,您只需要依次填写您自己的参数即可。

\n

(markdown格式 引用 可折叠 或者 展开上标引用)注释:作为快速上手教程,我们不对具体的参数做出解释,具体的参数的解释请参考10X Genomics官方文档,在支持文档,我们也会对一些关键参数做出解释。

\n

这里我们给出了填写示例:

\n
\n

注意这几个存在内容新增的部分

\n
\n
{\n  \"cellranger_count_workflow.chemistry\": \"auto\",\n  \"cellranger_count_workflow.cpu\": 32,\n  \"cellranger_count_workflow.disk_space\": \"300 GB\",\n  \"cellranger_count_workflow.fastq_file_paths\": [ \n    \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/ERR8048237/5891STDY8062334_S1_L001_I1_001.fastq.gz\",\n    \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/ERR8048237/5891STDY8062334_S1_L001_R1_001.fastq.gz\",\n    \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/ERR8048237/5891STDY8062334_S1_L001_R2_001.fastq.gz\"\n  ],\n  \"cellranger_count_workflow.memory\": \"225 GB\",\n  \"cellranger_count_workflow.no_bam\": \"False\",\n  \"cellranger_count_workflow.reference_genome_tar_gz\": \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/RAW/refdata-cellranger-GRCh38-3.0.0.tar.gz\",\n  \"cellranger_count_workflow.run_id\": \"ERR8048237\",\n  \"cellranger_count_workflow.sample\": \"5891STDY8062334\",\n  \"cellranger_count_workflow.secondary\": \"False\"\n}
\n\n

是的,就是这么简单。我们添加了文件路径,并填写了run_id和sample。这和您在本地计算的参数填写逻辑是一样的。我们已经准备好了,现在就提交任务吧!

\n

提交任务

\n

让我们回到BioOS平台,来到我们的cellrangerTest页面。试试看,找到页面上的"运行参数"选项卡>输入参数>"上传JSON文件",将您的json文件上传。

\n

然后,点击页面上的绿色按钮"开始分析",等待任务完成。

\n\n

查看结果

\n

任务完成后,您可以在分析历史中看到您的任务。点击任务名称,进入任务详情页面。在任务详情页面,您可以查看/下载结果。

\n\n

点击"查看",让我们来看看结果吧!所有的结果文件都会列出在这里,除了结果之外,也包括运行日志等文件,这取决于WDL文件的具体设置。

\n
# 在本例中,你的文件结构是这个样子:\n全部文件/analysis/$投递任务ID/$WDL_Task_ID/$workflow标识ID/call-$WDL_Task_ID/\n├── execution\n   ├── PRJNA693201_dlst000564_SRR13482541\n   └── outs\n       ├── PRJNA693201_dlst000564_SRR13482541_filtered_feature_bc_matrix.h5ad\n       ├── metrics_summary.csv\n       ├── possorted_genome_bam.bam\n       └── web_summary.html\n   ├── PRJNA693201_dlst000564_SRR13482541_outs.tar.gz\n   ├── log # cromwell 日志文件\n   ├── rc # cromwell 运行时文件\n   ├── script # cromwell 脚本文件\n   ├── stderr # cromwell 标准错误文件\n   └── stdout # cromwell 标准输出文件
\n\n
\n

我们在这里展示的是一个多样本的分析结果(如果您按照上图的方法点击查看结果),所以您会看到多个样本的结果文件夹。让我们逐级打开文件夹,找到我们需要的文件。所有的日志以及结果文件都会列出在这里。

\n
\n

在这个示例中,我们需要的文件在 "outs" 文件夹中,让我们逐渐深入文件夹,找到我们需要的文件。

\n\n

🤔 如果你想在本地查看结果?

\n

我们需要这里的 $ID_filtered_feature_bc_matrix.h5ad 文件,让我们点击下载。

\n\n

🎊Bravo!🎊 到此为止,您已经掌握了BioOS的基本使用方法,并成功完成了一次10X Genomics scRNA-seq的分析。👏👏👏

\n

如果我有很多数据呢?

\n

🤔好,那么好,这时候可能就会有人问了,如果我们有很多数据,也要像这样一个一个点击吗?

\n
\n

非常好的问题!当你尝试把一件简单的事情重复做上一万遍的时候,其复杂度将会指数增加📈。

\n
\n

当然不是,我们在这里只展示了BioOS的冰山一角,BioOS的真正能力将在您尝试构建数据模型/实体之后展现。下面,让我们从一个稍微复杂的例子开始,一步一步的学习如何调度BioOS强大的计算能力。

\n","tagOpen":""},"script":null,"scriptSetup":null,"scripts":[],"styles":[],"customBlocks":[]},"content":"## 10X Genomics scRNA-seq\n\n为了便于工作流的可重复性,我们推荐您使用json文件来描述和存档您的实验参数。\n\n## 写在前面\n\n这里会涉及到BioOS文件管理的相关内容,请参考[BioOS文件管理](../BioOS/README.md)\n\n在这里,我们假设您已经对平台的使用有了基础的了解,并创建了必要的文件夹。如果还没有,请参考[动手学BioOS计算](../BioOS/README.md)\n\n请注意,我们不要求您对json文件、WDL文件或者云计算有深入的了解,您只需要知道如何使用json文件来描述您的实验参数。我们的目标是您只需要知道如何“复制、粘贴”就能完成您的实验。\n\n让我们开始吧!\n\n### 对于一个典型的10X Genomics scRNA-seq实验,我们推荐使用如下的json文件:\n\n```json\n{\n \"cellranger_count_workflow.chemistry\": \"auto\",\n \"cellranger_count_workflow.cpu\": 32,\n \"cellranger_count_workflow.disk_space\": \"300 GB\",\n \"cellranger_count_workflow.fastq_file_paths\": null,\n \"cellranger_count_workflow.memory\": \"225 GB\",\n \"cellranger_count_workflow.no_bam\": \"False\",\n \"cellranger_count_workflow.reference_genome_tar_gz\": \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/RAW/refdata-cellranger-GRCh38-3.0.0.tar.gz\",\n \"cellranger_count_workflow.run_id\": null,\n \"cellranger_count_workflow.sample\": null,\n \"cellranger_count_workflow.secondary\": \"False\"\n}\n```\n\n看起来很复杂,但没关系。仔细观察,您会发现,这个json文件的部分参数已经自动设置好了,在大部分情况下,您只需要依次填写您自己的参数即可。\n\n(markdown格式 引用 可折叠 或者 展开上标引用)注释:作为快速上手教程,我们不对具体的参数做出解释,具体的参数的解释请参考[10X Genomics官方文档](https://support.10xgenomics.com/single-cell-gene-expression/software/pipelines/latest/using/count),在支持文档,我们也会对一些关键参数做出解释。\n\n这里我们给出了填写示例:\n> **注意这几个存在内容新增的部分**\n\n```json\n{\n \"cellranger_count_workflow.chemistry\": \"auto\",\n \"cellranger_count_workflow.cpu\": 32,\n \"cellranger_count_workflow.disk_space\": \"300 GB\",\n \"cellranger_count_workflow.fastq_file_paths\": [ \n \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/ERR8048237/5891STDY8062334_S1_L001_I1_001.fastq.gz\", // [!code ++]\n \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/ERR8048237/5891STDY8062334_S1_L001_R1_001.fastq.gz\", // [!code ++]\n \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/ERR8048237/5891STDY8062334_S1_L001_R2_001.fastq.gz\" // [!code ++]\n ],\n \"cellranger_count_workflow.memory\": \"225 GB\",\n \"cellranger_count_workflow.no_bam\": \"False\",\n \"cellranger_count_workflow.reference_genome_tar_gz\": \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/RAW/refdata-cellranger-GRCh38-3.0.0.tar.gz\",\n \"cellranger_count_workflow.run_id\": \"ERR8048237\", // [!code ++]\n \"cellranger_count_workflow.sample\": \"5891STDY8062334\", // [!code ++]\n \"cellranger_count_workflow.secondary\": \"False\"\n}\n```\n\n是的,就是这么简单。我们添加了文件路径,并填写了run_id和sample。这和您在本地计算的参数填写逻辑是一样的。我们已经准备好了,现在就提交任务吧!\n\n### 提交任务\n\n让我们回到BioOS平台,来到我们的cellrangerTest页面。试试看,找到页面上的\"运行参数\"选项卡>输入参数>\"上传JSON文件\",将您的json文件上传。\n\n然后,点击页面上的绿色按钮\"开始分析\",等待任务完成。\n\n\n\n\n### 查看结果\n任务完成后,您可以在分析历史中看到您的任务。点击任务名称,进入任务详情页面。在任务详情页面,您可以查看/下载结果。\n\n\n\n点击\"查看\",让我们来看看结果吧!所有的结果文件都会列出在这里,除了结果之外,也包括运行日志等文件,这取决于WDL文件的具体设置。\n\n```bash\n# 在本例中,你的文件结构是这个样子:\n全部文件/analysis/$投递任务ID/$WDL_Task_ID/$workflow标识ID/call-$WDL_Task_ID/\n├── execution\n│ ├── PRJNA693201_dlst000564_SRR13482541\n│ │ └── outs\n│ │ ├── PRJNA693201_dlst000564_SRR13482541_filtered_feature_bc_matrix.h5ad\n│ │ ├── metrics_summary.csv\n│ │ ├── possorted_genome_bam.bam\n│ │ └── web_summary.html\n│ ├── PRJNA693201_dlst000564_SRR13482541_outs.tar.gz\n│ ├── log # cromwell 日志文件\n│ ├── rc # cromwell 运行时文件\n│ ├── script # cromwell 脚本文件\n│ ├── stderr # cromwell 标准错误文件\n│ └── stdout # cromwell 标准输出文件\n```\n\n > 我们在这里展示的是一个多样本的分析结果(如果您按照上图的方法点击查看结果),所以您会看到多个样本的结果文件夹。让我们逐级打开文件夹,找到我们需要的文件。所有的日志以及结果文件都会列出在这里。\n\n在这个示例中,我们需要的文件在 **\"outs\"** 文件夹中,让我们逐渐深入文件夹,找到我们需要的文件。\n\n\n\n## 🤔 如果你想在本地查看结果?\n\n我们需要这里的 **$ID_filtered_feature_bc_matrix.h5ad** 文件,让我们点击下载。\n\n\n\n🎊Bravo!🎊 到此为止,您已经掌握了BioOS的基本使用方法,并成功完成了一次10X Genomics scRNA-seq的分析。👏👏👏\n\n## 如果我有很多数据呢?\n\n**🤔好,那么好,这时候可能就会有人问了,如果我们有很多数据,也要像这样一个一个点击吗?**\n\n > 非常好的问题!当你尝试把一件简单的事情重复做上一万遍的时候,其复杂度将会指数增加📈。\n\n**当然不是**,我们在这里只展示了BioOS的冰山一角,BioOS的真正能力将在您尝试构建数据模型/实体之后展现。下面,让我们从一个稍微复杂的例子开始,一步一步的学习如何调度BioOS强大的计算能力。","excerpt":"","includedFiles":[],"tasklists":0,"title":"","headers":[{"level":2,"title":"10X Genomics scRNA-seq","slug":"_10x-genomics-scrna-seq","link":"#_10x-genomics-scrna-seq","children":[]},{"level":2,"title":"写在前面","slug":"写在前面","link":"#写在前面","children":[{"level":3,"title":"对于一个典型的10X Genomics scRNA-seq实验,我们推荐使用如下的json文件:","slug":"对于一个典型的10x-genomics-scrna-seq实验-我们推荐使用如下的json文件","link":"#对于一个典型的10x-genomics-scrna-seq实验-我们推荐使用如下的json文件","children":[]},{"level":3,"title":"提交任务","slug":"提交任务","link":"#提交任务","children":[]},{"level":3,"title":"查看结果","slug":"查看结果","link":"#查看结果","children":[]}]},{"level":2,"title":"🤔 如果你想在本地查看结果?","slug":"🤔-如果你想在本地查看结果","link":"#🤔-如果你想在本地查看结果","children":[]},{"level":2,"title":"如果我有很多数据呢?","slug":"如果我有很多数据呢","link":"#如果我有很多数据呢","children":[]}],"links":[{"raw":"../BioOS/README.md","relative":"notes/BioOS/README.md","absolute":"/WDL_Tools_docs/notes/BioOS/README.md"},{"raw":"../BioOS/README.md","relative":"notes/BioOS/README.md","absolute":"/WDL_Tools_docs/notes/BioOS/README.md"}]}} +{"content":"

10X Genomics scRNA-seq

\n

为了便于工作流的可重复性,我们推荐您使用json文件来描述和存档您的实验参数。

\n

写在前面

\n

这里会涉及到BioOS文件管理的相关内容,请参考BioOS文件管理

\n

在这里,我们假设您已经对平台的使用有了基础的了解,并创建了必要的文件夹。如果还没有,请参考动手学BioOS计算

\n

请注意,我们不要求您对json文件、WDL文件或者云计算有深入的了解,您只需要知道如何使用json文件来描述您的实验参数。我们的目标是您只需要知道如何“复制、粘贴”就能完成您的实验。

\n

让我们开始吧!

\n

对于一个典型的10X Genomics scRNA-seq实验,我们推荐使用如下的json文件:

\n
{\n  \"cellranger_count_workflow.chemistry\": \"auto\",\n  \"cellranger_count_workflow.cpu\": 32,\n  \"cellranger_count_workflow.disk_space\": \"300 GB\",\n  \"cellranger_count_workflow.fastq_file_paths\": null,\n  \"cellranger_count_workflow.memory\": \"225 GB\",\n  \"cellranger_count_workflow.no_bam\": \"False\",\n  \"cellranger_count_workflow.reference_genome_tar_gz\": \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/RAW/refdata-cellranger-GRCh38-3.0.0.tar.gz\",\n  \"cellranger_count_workflow.run_id\": null,\n  \"cellranger_count_workflow.sample\": null,\n  \"cellranger_count_workflow.secondary\": \"False\"\n}
\n\n

看起来很复杂,但没关系。仔细观察,您会发现,这个json文件的部分参数已经自动设置好了,在大部分情况下,您只需要依次填写您自己的参数即可。

\n

(markdown格式 引用 可折叠 或者 展开上标引用)注释:作为快速上手教程,我们不对具体的参数做出解释,具体的参数的解释请参考10X Genomics官方文档,在支持文档,我们也会对一些关键参数做出解释。

\n

这里我们给出了填写示例:

\n
\n

注意这几个存在内容新增的部分

\n
\n
{\n  \"cellranger_count_workflow.chemistry\": \"auto\",\n  \"cellranger_count_workflow.cpu\": 32,\n  \"cellranger_count_workflow.disk_space\": \"300 GB\",\n  \"cellranger_count_workflow.fastq_file_paths\": [ \n    \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/ERR8048237/5891STDY8062334_S1_L001_I1_001.fastq.gz\",\n    \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/ERR8048237/5891STDY8062334_S1_L001_R1_001.fastq.gz\",\n    \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/ERR8048237/5891STDY8062334_S1_L001_R2_001.fastq.gz\"\n  ],\n  \"cellranger_count_workflow.memory\": \"225 GB\",\n  \"cellranger_count_workflow.no_bam\": \"False\",\n  \"cellranger_count_workflow.reference_genome_tar_gz\": \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/RAW/refdata-cellranger-GRCh38-3.0.0.tar.gz\",\n  \"cellranger_count_workflow.run_id\": \"ERR8048237\",\n  \"cellranger_count_workflow.sample\": \"5891STDY8062334\",\n  \"cellranger_count_workflow.secondary\": \"False\"\n}
\n\n

是的,就是这么简单。我们添加了文件路径,并填写了run_id和sample。这和您在本地计算的参数填写逻辑是一样的。我们已经准备好了,现在就提交任务吧!

\n

提交任务

\n

让我们回到BioOS平台,来到我们的cellrangerTest页面。试试看,找到页面上的"运行参数"选项卡>输入参数>"上传JSON文件",将您的json文件上传。

\n

然后,点击页面上的绿色按钮"开始分析",等待任务完成。

\n

\"图片\"

\n\n

查看结果

\n

任务完成后,您可以在分析历史中看到您的任务。点击任务名称,进入任务详情页面。在任务详情页面,您可以查看/下载结果。

\n\n

点击"查看",让我们来看看结果吧!所有的结果文件都会列出在这里,除了结果之外,也包括运行日志等文件,这取决于WDL文件的具体设置。

\n
# 在本例中,你的文件结构是这个样子:\n全部文件/analysis/$投递任务ID/$WDL_Task_ID/$workflow标识ID/call-$WDL_Task_ID/\n├── execution\n   ├── PRJNA693201_dlst000564_SRR13482541\n   └── outs\n       ├── PRJNA693201_dlst000564_SRR13482541_filtered_feature_bc_matrix.h5ad\n       ├── metrics_summary.csv\n       ├── possorted_genome_bam.bam\n       └── web_summary.html\n   ├── PRJNA693201_dlst000564_SRR13482541_outs.tar.gz\n   ├── log # cromwell 日志文件\n   ├── rc # cromwell 运行时文件\n   ├── script # cromwell 脚本文件\n   ├── stderr # cromwell 标准错误文件\n   └── stdout # cromwell 标准输出文件
\n\n
\n

我们在这里展示的是一个多样本的分析结果(如果您按照上图的方法点击查看结果),所以您会看到多个样本的结果文件夹。让我们逐级打开文件夹,找到我们需要的文件。所有的日志以及结果文件都会列出在这里。

\n
\n

在这个示例中,我们需要的文件在 "outs" 文件夹中,让我们逐渐深入文件夹,找到我们需要的文件。

\n\n

🤔 如果你想在本地查看结果?

\n

我们需要这里的 $ID_filtered_feature_bc_matrix.h5ad 文件,让我们点击下载。

\n\n

🎊Bravo!🎊 到此为止,您已经掌握了BioOS的基本使用方法,并成功完成了一次10X Genomics scRNA-seq的分析。👏👏👏

\n

如果我有很多数据呢?

\n

🤔好,那么好,这时候可能就会有人问了,如果我们有很多数据,也要像这样一个一个点击吗?

\n
\n

非常好的问题!当你尝试把一件简单的事情重复做上一万遍的时候,其复杂度将会指数增加📈。

\n
\n

当然不是,我们在这里只展示了BioOS的冰山一角,BioOS的真正能力将在您尝试构建数据模型/实体之后展现。下面,让我们从一个稍微复杂的例子开始,一步一步的学习如何调度BioOS强大的计算能力。

\n","env":{"base":"/","filePath":"/Users/hughes/docs/WDL_Tools_docs/docs/notes/01_10X_Genomics/scRNA-seq.md","filePathRelative":"notes/01_10X_Genomics/scRNA-seq.md","frontmatter":{"title":"10X Genomics scRNA-seq 数据分析","createTime":"2024/10/30 11:20:18","permalink":"/01_10X_Genomics/scRNA-seq/"},"sfcBlocks":{"template":{"type":"template","content":"","contentStripped":"

10X Genomics scRNA-seq

\n

为了便于工作流的可重复性,我们推荐您使用json文件来描述和存档您的实验参数。

\n

写在前面

\n

这里会涉及到BioOS文件管理的相关内容,请参考BioOS文件管理

\n

在这里,我们假设您已经对平台的使用有了基础的了解,并创建了必要的文件夹。如果还没有,请参考动手学BioOS计算

\n

请注意,我们不要求您对json文件、WDL文件或者云计算有深入的了解,您只需要知道如何使用json文件来描述您的实验参数。我们的目标是您只需要知道如何“复制、粘贴”就能完成您的实验。

\n

让我们开始吧!

\n

对于一个典型的10X Genomics scRNA-seq实验,我们推荐使用如下的json文件:

\n
{\n  \"cellranger_count_workflow.chemistry\": \"auto\",\n  \"cellranger_count_workflow.cpu\": 32,\n  \"cellranger_count_workflow.disk_space\": \"300 GB\",\n  \"cellranger_count_workflow.fastq_file_paths\": null,\n  \"cellranger_count_workflow.memory\": \"225 GB\",\n  \"cellranger_count_workflow.no_bam\": \"False\",\n  \"cellranger_count_workflow.reference_genome_tar_gz\": \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/RAW/refdata-cellranger-GRCh38-3.0.0.tar.gz\",\n  \"cellranger_count_workflow.run_id\": null,\n  \"cellranger_count_workflow.sample\": null,\n  \"cellranger_count_workflow.secondary\": \"False\"\n}
\n\n

看起来很复杂,但没关系。仔细观察,您会发现,这个json文件的部分参数已经自动设置好了,在大部分情况下,您只需要依次填写您自己的参数即可。

\n

(markdown格式 引用 可折叠 或者 展开上标引用)注释:作为快速上手教程,我们不对具体的参数做出解释,具体的参数的解释请参考10X Genomics官方文档,在支持文档,我们也会对一些关键参数做出解释。

\n

这里我们给出了填写示例:

\n
\n

注意这几个存在内容新增的部分

\n
\n
{\n  \"cellranger_count_workflow.chemistry\": \"auto\",\n  \"cellranger_count_workflow.cpu\": 32,\n  \"cellranger_count_workflow.disk_space\": \"300 GB\",\n  \"cellranger_count_workflow.fastq_file_paths\": [ \n    \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/ERR8048237/5891STDY8062334_S1_L001_I1_001.fastq.gz\",\n    \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/ERR8048237/5891STDY8062334_S1_L001_R1_001.fastq.gz\",\n    \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/ERR8048237/5891STDY8062334_S1_L001_R2_001.fastq.gz\"\n  ],\n  \"cellranger_count_workflow.memory\": \"225 GB\",\n  \"cellranger_count_workflow.no_bam\": \"False\",\n  \"cellranger_count_workflow.reference_genome_tar_gz\": \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/RAW/refdata-cellranger-GRCh38-3.0.0.tar.gz\",\n  \"cellranger_count_workflow.run_id\": \"ERR8048237\",\n  \"cellranger_count_workflow.sample\": \"5891STDY8062334\",\n  \"cellranger_count_workflow.secondary\": \"False\"\n}
\n\n

是的,就是这么简单。我们添加了文件路径,并填写了run_id和sample。这和您在本地计算的参数填写逻辑是一样的。我们已经准备好了,现在就提交任务吧!

\n

提交任务

\n

让我们回到BioOS平台,来到我们的cellrangerTest页面。试试看,找到页面上的"运行参数"选项卡>输入参数>"上传JSON文件",将您的json文件上传。

\n

然后,点击页面上的绿色按钮"开始分析",等待任务完成。

\n

\"图片\"

\n\n

查看结果

\n

任务完成后,您可以在分析历史中看到您的任务。点击任务名称,进入任务详情页面。在任务详情页面,您可以查看/下载结果。

\n\n

点击"查看",让我们来看看结果吧!所有的结果文件都会列出在这里,除了结果之外,也包括运行日志等文件,这取决于WDL文件的具体设置。

\n
# 在本例中,你的文件结构是这个样子:\n全部文件/analysis/$投递任务ID/$WDL_Task_ID/$workflow标识ID/call-$WDL_Task_ID/\n├── execution\n   ├── PRJNA693201_dlst000564_SRR13482541\n   └── outs\n       ├── PRJNA693201_dlst000564_SRR13482541_filtered_feature_bc_matrix.h5ad\n       ├── metrics_summary.csv\n       ├── possorted_genome_bam.bam\n       └── web_summary.html\n   ├── PRJNA693201_dlst000564_SRR13482541_outs.tar.gz\n   ├── log # cromwell 日志文件\n   ├── rc # cromwell 运行时文件\n   ├── script # cromwell 脚本文件\n   ├── stderr # cromwell 标准错误文件\n   └── stdout # cromwell 标准输出文件
\n\n
\n

我们在这里展示的是一个多样本的分析结果(如果您按照上图的方法点击查看结果),所以您会看到多个样本的结果文件夹。让我们逐级打开文件夹,找到我们需要的文件。所有的日志以及结果文件都会列出在这里。

\n
\n

在这个示例中,我们需要的文件在 "outs" 文件夹中,让我们逐渐深入文件夹,找到我们需要的文件。

\n\n

🤔 如果你想在本地查看结果?

\n

我们需要这里的 $ID_filtered_feature_bc_matrix.h5ad 文件,让我们点击下载。

\n\n

🎊Bravo!🎊 到此为止,您已经掌握了BioOS的基本使用方法,并成功完成了一次10X Genomics scRNA-seq的分析。👏👏👏

\n

如果我有很多数据呢?

\n

🤔好,那么好,这时候可能就会有人问了,如果我们有很多数据,也要像这样一个一个点击吗?

\n
\n

非常好的问题!当你尝试把一件简单的事情重复做上一万遍的时候,其复杂度将会指数增加📈。

\n
\n

当然不是,我们在这里只展示了BioOS的冰山一角,BioOS的真正能力将在您尝试构建数据模型/实体之后展现。下面,让我们从一个稍微复杂的例子开始,一步一步的学习如何调度BioOS强大的计算能力。

\n","tagOpen":""},"script":null,"scriptSetup":null,"scripts":[],"styles":[],"customBlocks":[]},"content":"## 10X Genomics scRNA-seq\n\n为了便于工作流的可重复性,我们推荐您使用json文件来描述和存档您的实验参数。\n\n## 写在前面\n\n这里会涉及到BioOS文件管理的相关内容,请参考[BioOS文件管理](../BioOS/README.md)\n\n在这里,我们假设您已经对平台的使用有了基础的了解,并创建了必要的文件夹。如果还没有,请参考[动手学BioOS计算](../BioOS/README.md)\n\n请注意,我们不要求您对json文件、WDL文件或者云计算有深入的了解,您只需要知道如何使用json文件来描述您的实验参数。我们的目标是您只需要知道如何“复制、粘贴”就能完成您的实验。\n\n让我们开始吧!\n\n### 对于一个典型的10X Genomics scRNA-seq实验,我们推荐使用如下的json文件:\n\n```json\n{\n \"cellranger_count_workflow.chemistry\": \"auto\",\n \"cellranger_count_workflow.cpu\": 32,\n \"cellranger_count_workflow.disk_space\": \"300 GB\",\n \"cellranger_count_workflow.fastq_file_paths\": null,\n \"cellranger_count_workflow.memory\": \"225 GB\",\n \"cellranger_count_workflow.no_bam\": \"False\",\n \"cellranger_count_workflow.reference_genome_tar_gz\": \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/RAW/refdata-cellranger-GRCh38-3.0.0.tar.gz\",\n \"cellranger_count_workflow.run_id\": null,\n \"cellranger_count_workflow.sample\": null,\n \"cellranger_count_workflow.secondary\": \"False\"\n}\n```\n\n看起来很复杂,但没关系。仔细观察,您会发现,这个json文件的部分参数已经自动设置好了,在大部分情况下,您只需要依次填写您自己的参数即可。\n\n(markdown格式 引用 可折叠 或者 展开上标引用)注释:作为快速上手教程,我们不对具体的参数做出解释,具体的参数的解释请参考[10X Genomics官方文档](https://support.10xgenomics.com/single-cell-gene-expression/software/pipelines/latest/using/count),在支持文档,我们也会对一些关键参数做出解释。\n\n这里我们给出了填写示例:\n> **注意这几个存在内容新增的部分**\n\n```json\n{\n \"cellranger_count_workflow.chemistry\": \"auto\",\n \"cellranger_count_workflow.cpu\": 32,\n \"cellranger_count_workflow.disk_space\": \"300 GB\",\n \"cellranger_count_workflow.fastq_file_paths\": [ \n \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/ERR8048237/5891STDY8062334_S1_L001_I1_001.fastq.gz\", // [!code ++]\n \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/ERR8048237/5891STDY8062334_S1_L001_R1_001.fastq.gz\", // [!code ++]\n \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/ERR8048237/5891STDY8062334_S1_L001_R2_001.fastq.gz\" // [!code ++]\n ],\n \"cellranger_count_workflow.memory\": \"225 GB\",\n \"cellranger_count_workflow.no_bam\": \"False\",\n \"cellranger_count_workflow.reference_genome_tar_gz\": \"s3://bioos-wcnjupodeig44rr6t02v0/Example_10X_data/RAW/refdata-cellranger-GRCh38-3.0.0.tar.gz\",\n \"cellranger_count_workflow.run_id\": \"ERR8048237\", // [!code ++]\n \"cellranger_count_workflow.sample\": \"5891STDY8062334\", // [!code ++]\n \"cellranger_count_workflow.secondary\": \"False\"\n}\n```\n\n是的,就是这么简单。我们添加了文件路径,并填写了run_id和sample。这和您在本地计算的参数填写逻辑是一样的。我们已经准备好了,现在就提交任务吧!\n\n### 提交任务\n\n让我们回到BioOS平台,来到我们的cellrangerTest页面。试试看,找到页面上的\"运行参数\"选项卡>输入参数>\"上传JSON文件\",将您的json文件上传。\n\n然后,点击页面上的绿色按钮\"开始分析\",等待任务完成。\n\n![图片](./scfig1_gif.gif)\n\n\n\n### 查看结果\n任务完成后,您可以在分析历史中看到您的任务。点击任务名称,进入任务详情页面。在任务详情页面,您可以查看/下载结果。\n\n\n\n点击\"查看\",让我们来看看结果吧!所有的结果文件都会列出在这里,除了结果之外,也包括运行日志等文件,这取决于WDL文件的具体设置。\n\n```bash\n# 在本例中,你的文件结构是这个样子:\n全部文件/analysis/$投递任务ID/$WDL_Task_ID/$workflow标识ID/call-$WDL_Task_ID/\n├── execution\n│ ├── PRJNA693201_dlst000564_SRR13482541\n│ │ └── outs\n│ │ ├── PRJNA693201_dlst000564_SRR13482541_filtered_feature_bc_matrix.h5ad\n│ │ ├── metrics_summary.csv\n│ │ ├── possorted_genome_bam.bam\n│ │ └── web_summary.html\n│ ├── PRJNA693201_dlst000564_SRR13482541_outs.tar.gz\n│ ├── log # cromwell 日志文件\n│ ├── rc # cromwell 运行时文件\n│ ├── script # cromwell 脚本文件\n│ ├── stderr # cromwell 标准错误文件\n│ └── stdout # cromwell 标准输出文件\n```\n\n > 我们在这里展示的是一个多样本的分析结果(如果您按照上图的方法点击查看结果),所以您会看到多个样本的结果文件夹。让我们逐级打开文件夹,找到我们需要的文件。所有的日志以及结果文件都会列出在这里。\n\n在这个示例中,我们需要的文件在 **\"outs\"** 文件夹中,让我们逐渐深入文件夹,找到我们需要的文件。\n\n\n\n## 🤔 如果你想在本地查看结果?\n\n我们需要这里的 **$ID_filtered_feature_bc_matrix.h5ad** 文件,让我们点击下载。\n\n\n\n🎊Bravo!🎊 到此为止,您已经掌握了BioOS的基本使用方法,并成功完成了一次10X Genomics scRNA-seq的分析。👏👏👏\n\n## 如果我有很多数据呢?\n\n**🤔好,那么好,这时候可能就会有人问了,如果我们有很多数据,也要像这样一个一个点击吗?**\n\n > 非常好的问题!当你尝试把一件简单的事情重复做上一万遍的时候,其复杂度将会指数增加📈。\n\n**当然不是**,我们在这里只展示了BioOS的冰山一角,BioOS的真正能力将在您尝试构建数据模型/实体之后展现。下面,让我们从一个稍微复杂的例子开始,一步一步的学习如何调度BioOS强大的计算能力。","excerpt":"","includedFiles":[],"tasklists":0,"title":"","headers":[{"level":2,"title":"10X Genomics scRNA-seq","slug":"_10x-genomics-scrna-seq","link":"#_10x-genomics-scrna-seq","children":[]},{"level":2,"title":"写在前面","slug":"写在前面","link":"#写在前面","children":[{"level":3,"title":"对于一个典型的10X Genomics scRNA-seq实验,我们推荐使用如下的json文件:","slug":"对于一个典型的10x-genomics-scrna-seq实验-我们推荐使用如下的json文件","link":"#对于一个典型的10x-genomics-scrna-seq实验-我们推荐使用如下的json文件","children":[]},{"level":3,"title":"提交任务","slug":"提交任务","link":"#提交任务","children":[]},{"level":3,"title":"查看结果","slug":"查看结果","link":"#查看结果","children":[]}]},{"level":2,"title":"🤔 如果你想在本地查看结果?","slug":"🤔-如果你想在本地查看结果","link":"#🤔-如果你想在本地查看结果","children":[]},{"level":2,"title":"如果我有很多数据呢?","slug":"如果我有很多数据呢","link":"#如果我有很多数据呢","children":[]}],"links":[{"raw":"../BioOS/README.md","relative":"notes/BioOS/README.md","absolute":"/notes/BioOS/README.md"},{"raw":"../BioOS/README.md","relative":"notes/BioOS/README.md","absolute":"/notes/BioOS/README.md"}]}} diff --git a/docs/.vuepress/.cache/markdown/rendered/fdd23780 b/docs/.vuepress/.cache/markdown/rendered/fdd23780 index db9ff8e8..0d8b42b6 100644 --- a/docs/.vuepress/.cache/markdown/rendered/fdd23780 +++ b/docs/.vuepress/.cache/markdown/rendered/fdd23780 @@ -1 +1 @@ -{"content":"

快速实现公式

\n
    \n
  • \n

    1. 复制对GPT输入代码风格化的要求

    \n
  • \n
  • \n

    --->>> 2. 编写包含你所有的要求和想法的伪代码

    \n
  • \n
  • \n

    --------->>> 3. 拆分伪代码,分模块实现

    \n
  • \n
\n

引言

\n
\n

本文通过几个例子展示了用GPT敲代码的几个模式,您需要确保您的键盘具有Ctrl键、C键、V键。

\n
\n
\n

受文本长度限制,本文尽量不对任何内容的驱动原理做出解释。

\n
\n

读者应该明确

\n
\n

\n
    \n
  1. 工程控制论正在推动电子计算机技术革命的深入。这样一个现实已经来到了人类面前: 由电子计算机和机器智能装备起来的人,已经成为更有作为、更高超的人! ———钱学森 《工程控制论·序言》
  2. \n
  3. 君子不器。 ———孔子《论语·为政篇》
  4. \n
  5. “值得怀疑的是,一切已有的机械发明,是否减轻了任何人每天的辛劳。” ———约翰·斯图亚特·穆勒《政治经济学原理》
  6. \n
\n
\n
\n

重要

\n

AI放大了人类的能力边界,但社会生活的主体依然是自然人。

\n
\n

第一部分:对GPT输入代码风格化的要求

\n
\n

跟我复制

\n
\n
\n

如果你有一些类似于“整洁代码”的偏好,或者你有明确的编程习惯,请在进行代码产出时,明确告诉GPT,如同下面的文本所示。

\n
\n
You are an advanced AI model designed to solve complex programming challenges by applying a combination of sophisticated reasoning techniques. To ensure your code outputs are technically precise, secure, efficient, and well-documented, follow these structured instructions:\n\nBreak Down the Coding Task:\n\nBegin by applying Chain of Thought (CoT) reasoning to decompose the programming task into logical, manageable components. Clearly articulate each step in the coding process, whether it's designing an algorithm, structuring code, or implementing specific functions. Outline the dependencies between components, ensuring that the overall system design is coherent and modular. Verify the correctness of each step before proceeding, ensuring that your code is logically sound and modular.\n\nRationalize Each Coding Decision:\n\nAs you develop the code, use Step-by-Step Rationalization (STaR) to provide clear, logical justifications for every decision made during the coding process. Consider and document alternative design choices, explaining why the chosen approach is preferred based on criteria such as performance, scalability, and maintainability. Ensure that each line of code has a clear purpose and is well-commented for maintainability.\n\nOptimize Code for Efficiency and Reliability:\n\nIncorporate A Search principles* to evaluate and optimize the efficiency of your code. Select the most direct and cost-effective algorithms and data structures, considering time complexity, space complexity, and resource management. Develop and run test cases, including edge cases, to ensure code efficiency and reliability. Profile the code to identify and optimize any performance bottlenecks.\n\nConsider and Evaluate Multiple Code Solutions:\n\nLeverage Tree of Thoughts (ToT) to explore different coding approaches and solutions in parallel. Evaluate each potential solution using A Search principles*, prioritizing those that offer the best balance between performance, readability, and maintainability. Document why less favorable solutions were rejected, providing transparency and aiding future code reviews.\n\nSimulate Adaptive Learning in Coding:\n\nReflect on your coding decisions throughout the session as if you were learning from each outcome. Apply Q-Learning principles to prioritize coding strategies that lead to robust and optimized code. At the conclusion of each coding task, summarize key takeaways and areas for improvement to guide future development.\n\nContinuously Monitor and Refine Your Coding Process:\n\nEngage in Process Monitoring to continuously assess the progress of your coding task. Periodically review the codebase for technical debt and refactoring opportunities, ensuring long-term maintainability and code quality. Ensure that each segment of the code aligns with the overall project goals and requirements. Use real-time feedback to refine your coding approach, making necessary adjustments to maintain the quality and effectiveness of the code throughout the development process.\n\nIncorporate Security Best Practices:\n\nApply security best practices, including input validation, encryption, and secure coding techniques, to safeguard against vulnerabilities. Ensure that the code is robust against common security threats.\n\nHighlight Code Readability:\n\nPrioritize code readability by using clear variable names, consistent formatting, and logical organization. Ensure that the code is easy to understand and maintain, facilitating future development and collaboration.\n\nInclude Collaboration Considerations:\n\nConsider how the code will be used and understood by other developers. Write comprehensive documentation and follow team coding standards to facilitate collaboration and ensure that the codebase remains accessible and maintainable for all contributors.\n\nFinal Instruction:\n\nBy following these instructions, you will ensure that your coding approach is methodical, well-reasoned, and optimized for technical precision and efficiency. Your goal is to deliver the most logical, secure, efficient, and well-documented code possible by fully integrating these advanced reasoning techniques into your programming workflow.
\n\n

第二部分:把你的想法转换为伪代码或类似的逻辑描述

\n

📏范式

\n

常见的范式有:

\n
    \n
  • 命令式编程(Imperative Programming)\n程序由一系列的命令或语句组成,计算机按照这些命令执行操作。这是最早也是最基本的编程范式。典型代表:C 和 Java
  • \n
  • 声明式编程(Declarative Programming):程序员只需要描述他们想要的结果,而不需要详细说明如何达到这个结果。典型代表:SQL 和 HTML
  • \n
  • 面向对象编程(Object-Oriented Programming):程序被组织成对象,每个对象都包含数据和操作数据的方法。面向对象编程强调的是数据抽象和封装,以及对象之间的交互。典型代表:Java 和 Python
  • \n
\n

为什么需要伪代码?

\n

回想一下🤔,当我们和GPT之类的产品进行交互时,我们的交互方式大致上有两类:\n举个例子,当我需要让GPT帮我写一个算法时,我可能会:

\n

第一种交互方式

\n
\n

“我需要你写一段代码,这段代码第一行是def,然后是函数名,然后是3个参数,然后是四行函数体。函数体中需要有return。它第一行是……最后一行是……。”

\n
\n

这是一种典型的命令式交互,非常好使。

\n

第二种交互方式

\n
\n

“直接说,我需要一个算法,这个算法需要满足以下要求:……”

\n
\n

这是一种典型的声明式交互,主要关注结果的描述和需求,而不需要详细说明如何达到这个结果。

\n
\n

警告

\n

声明式交互在代码实现上具有更大的风险,尤其是你缺乏对代码的深入理解时,比如李逵和李鬼:

\n

\"Alt

\n
\n
\n

重要

\n
    \n
  • \n

    这里最核心的逻辑是,你和GPT之间的信息越一致,那么你得到的代码就越符合你的预期。

    \n
  • \n
  • \n

    正是基于这个逻辑,我们才需要在第二步进行伪代码交互

    \n
  • \n
\n
\n

伪代码的交互

\n

我提供一个比较极端的例子,假设你想要一个按照一定规则拆分矩阵的代码,并把结果存在你的类中,你和GPT的交互的伪代码如下:

\n
定义函数 ():\n\n    寻找矩阵的因数(n):\n        对于 i 从 4 到 n(包含 n):\n            如果 n 能被 i 整除:\n                返回 i\n        返回 n  # 如果没有找到因数,返回 n 本身\n\n    获取矩阵的行数和列数:\n        rows, cols = 矩阵的形状\n\n    找到大于 3 的最小因数:\n        row_factor = smallest_factor_greater_than_three(rows)\n        col_factor = smallest_factor_greater_than_three(cols)\n\n    # 第一拆分方法:按因数拆分行和列\n    将矩阵按行拆分为多个子矩阵:\n        row_split = 按 row_factor 将矩阵垂直拆分\n    将每个子矩阵按列拆分为更小的矩阵:\n        small_matrices = 对于每个 sub_matrix 在 row_split 中,按 col_factor 水平拆分\n\n    # 第二拆分方法:取相邻列的接缝区域\n    初始化 seam_matrices_cols 为一个空列表\n    对于 每个 row_matrices 在 small_matrices 中(按行遍历):\n        初始化 row_seams 为一个空列表\n        对于 j 从 0(小矩阵数量 - 2)\n            获取当前小矩阵的最后一列和下一个小矩阵的第一列\n            seam_matrix = 合并 当前小矩阵的最后一列 和 下一个小矩阵的第一列(按列合并)\n            将 seam_matrix 添加到 row_seams 中\n        将 row_seams 添加到 seam_matrices_cols 中\n\n    # 第三拆分方法:取相邻行的小矩阵进行垂直拼接\n    初始化 seam_matrices_rows 为一个空列表\n    对于 i 从 0(行的小矩阵数量 - 2)\n        初始化 row_seams 为一个空列表\n        对于 j 从 0(列的小矩阵数量 - 1)\n            获取当前行的小矩阵和下一行的小矩阵\n            top_matrix = 当前行的小矩阵[j]\n            bottom_matrix = 下一行的小矩阵[j]\n            拼接 top_matrix 的最后一行和 bottom_matrix 的第一行\n            seam_matrix = 合并 top_matrix 的最后一行 和 bottom_matrix 的第一行(按行合并)\n            将 seam_matrix 添加到 row_seams 中\n        将 row_seams 添加到 seam_matrices_rows 中\n\n    # 将拆分结果存储到对象属性中\n    self.small_matrices = small_matrices\n    self.seam_matrices_cols = seam_matrices_cols\n    self.seam_matrices_rows = seam_matrices_rows
\n\n
\n

根据我的观察,如果你写了伪代码,在GPT的帮助下,它既可以是python也可以是C++,甚至可以是Java。它既可以是面向对象的,也可以是函数式的。你可以把更多的时间花在思考上,而不是写代码上。 算法上的革新带来的进步,远比你写代码tricks带来的进步要大。

\n

再者,正如笑容不会消失,笑容只会从一个人的脸上转移到另一个人的脸上。复杂性也是一样的,复杂性不会消失,复杂性只会从这里转移到那里。在这里,我们可以尝试把复杂性转移到机器上。很多优秀的工程师都有这样的习惯,把代码写的像诗一样的优雅,充满了各种隐喻、抽象。也正是这个原因,维护自然语言的伪代码的复杂性,远比你维护代码的复杂性要低。

\n

第三部分:怎么让GPT整点复杂的东西?

\n
\n

提示

\n

诚然,大语言模型的技术一直在进步,但是,受限于其上下文能力,基于效率上的考虑,我们应该尝试把真实的工程进行模块化、结构化。

\n
\n

这一点和完成一个大型工程一摸一样

\n
\n

GPT先天的适合增量更新的模式,为了春分利用这一点,需要作为“架构师”的你首先对你的工程进行定义。

\n
\n
\n

提示

\n

确保模块间的解耦,有些时候你会想用不同的大模型来完成不同的模块。

\n
\n
\n

你可以参考下面的步骤来定义你的模块。

\n
\n

3.1 定义互相解耦的模块

\n
    \n
  1. 模块划分原则\n
      \n
    • 高内聚低耦合
    • \n
    • 明确的接口和责任
    • \n
    \n
  2. \n
  3. 识别关键功能模块\n
      \n
    • 功能分解的方法
    • \n
    • 示例:将一个Web应用划分为前端、后端、数据库等模块
    • \n
    \n
  4. \n
  5. 接口设计\n
      \n
    • 模块间通信的标准
    • \n
    • 使用API和协议确保模块独立性
    • \n
    \n
  6. \n
\n

3.2 模块化的实施步骤

\n
    \n
  1. 需求分析与功能分解\n
      \n
    • 收集和分析项目需求
    • \n
    • 将需求转化为功能模块
    • \n
    \n
  2. \n
  3. 模块设计与规划\n
      \n
    • 为每个模块制定详细设计
    • \n
    • 确定模块之间的依赖关系
    • \n
    \n
  4. \n
  5. 逐个模块的开发与测试\n
      \n
    • 按照规划顺序开发模块
    • \n
    • 独立测试每个模块的功能和性能
    • \n
    \n
  6. \n
  7. 集成与系统测试\n
      \n
    • 将各模块集成到整体系统中
    • \n
    • 进行系统级别的测试和优化
    • \n
    \n
  8. \n
\n

3.3 利用GPT进行模块化开发

\n

1. 分块粘贴伪代码

\n

作为结论

\n

实践:让我们在这里引入一个具体的例子

\n
\n

提示

\n

我利用刚刚例子中的伪代码和拆分模块的思想制作了promote,你可以在这里看到完整的上下文信息。

\n
\n

我创建了chatGPT(o1-mini模型)分享链接,点击链接,你可以在这里看到一个完整的例子。

\n
\n
\n
\n

重要

\n

我们实际上做了什么?

\n
    \n
  • \n

    1. 复制对GPT输入代码风格化的要求

    \n
  • \n
  • \n

    --->>> 2. 编写包含你所有的要求和想法的伪代码

    \n
  • \n
  • \n

    --------->>> 3. 拆分伪代码,分模块实现

    \n
  • \n
\n
\n
\n

具体的(注意代码块右侧的复制按钮):

\n
\n\n

结语

\n
\n

我必须在这里重申 “AI放大了人类的能力边界”,代码的最终结果极大的取决于 “人的思考” 的质量。

\n
\n

在这里,我推荐书籍《人月神话》wiki,虽然此书是写于1975年,但数十年来多次重印。书中对软件工程的思考,对软件开发中人的因素的思考,非常值得阅读。

\n

over

\n","env":{"base":"/WDL_Tools_docs/","filePath":"/Users/hughes/docs/WDL_Tools_docs/docs/notes/04_codeStyle/meandAI.md","filePathRelative":"notes/04_codeStyle/meandAI.md","frontmatter":{"title":"人工智能协助代码开发","createTime":"2024/11/07 14:45:46","permalink":"/04_codeStyle/meandAI/"},"sfcBlocks":{"template":{"type":"template","content":"","contentStripped":"

快速实现公式

\n
    \n
  • \n

    1. 复制对GPT输入代码风格化的要求

    \n
  • \n
  • \n

    --->>> 2. 编写包含你所有的要求和想法的伪代码

    \n
  • \n
  • \n

    --------->>> 3. 拆分伪代码,分模块实现

    \n
  • \n
\n

引言

\n
\n

本文通过几个例子展示了用GPT敲代码的几个模式,您需要确保您的键盘具有Ctrl键、C键、V键。

\n
\n
\n

受文本长度限制,本文尽量不对任何内容的驱动原理做出解释。

\n
\n

读者应该明确

\n
\n

\n
    \n
  1. 工程控制论正在推动电子计算机技术革命的深入。这样一个现实已经来到了人类面前: 由电子计算机和机器智能装备起来的人,已经成为更有作为、更高超的人! ———钱学森 《工程控制论·序言》
  2. \n
  3. 君子不器。 ———孔子《论语·为政篇》
  4. \n
  5. “值得怀疑的是,一切已有的机械发明,是否减轻了任何人每天的辛劳。” ———约翰·斯图亚特·穆勒《政治经济学原理》
  6. \n
\n
\n
\n

重要

\n

AI放大了人类的能力边界,但社会生活的主体依然是自然人。

\n
\n

第一部分:对GPT输入代码风格化的要求

\n
\n

跟我复制

\n
\n
\n

如果你有一些类似于“整洁代码”的偏好,或者你有明确的编程习惯,请在进行代码产出时,明确告诉GPT,如同下面的文本所示。

\n
\n
You are an advanced AI model designed to solve complex programming challenges by applying a combination of sophisticated reasoning techniques. To ensure your code outputs are technically precise, secure, efficient, and well-documented, follow these structured instructions:\n\nBreak Down the Coding Task:\n\nBegin by applying Chain of Thought (CoT) reasoning to decompose the programming task into logical, manageable components. Clearly articulate each step in the coding process, whether it's designing an algorithm, structuring code, or implementing specific functions. Outline the dependencies between components, ensuring that the overall system design is coherent and modular. Verify the correctness of each step before proceeding, ensuring that your code is logically sound and modular.\n\nRationalize Each Coding Decision:\n\nAs you develop the code, use Step-by-Step Rationalization (STaR) to provide clear, logical justifications for every decision made during the coding process. Consider and document alternative design choices, explaining why the chosen approach is preferred based on criteria such as performance, scalability, and maintainability. Ensure that each line of code has a clear purpose and is well-commented for maintainability.\n\nOptimize Code for Efficiency and Reliability:\n\nIncorporate A Search principles* to evaluate and optimize the efficiency of your code. Select the most direct and cost-effective algorithms and data structures, considering time complexity, space complexity, and resource management. Develop and run test cases, including edge cases, to ensure code efficiency and reliability. Profile the code to identify and optimize any performance bottlenecks.\n\nConsider and Evaluate Multiple Code Solutions:\n\nLeverage Tree of Thoughts (ToT) to explore different coding approaches and solutions in parallel. Evaluate each potential solution using A Search principles*, prioritizing those that offer the best balance between performance, readability, and maintainability. Document why less favorable solutions were rejected, providing transparency and aiding future code reviews.\n\nSimulate Adaptive Learning in Coding:\n\nReflect on your coding decisions throughout the session as if you were learning from each outcome. Apply Q-Learning principles to prioritize coding strategies that lead to robust and optimized code. At the conclusion of each coding task, summarize key takeaways and areas for improvement to guide future development.\n\nContinuously Monitor and Refine Your Coding Process:\n\nEngage in Process Monitoring to continuously assess the progress of your coding task. Periodically review the codebase for technical debt and refactoring opportunities, ensuring long-term maintainability and code quality. Ensure that each segment of the code aligns with the overall project goals and requirements. Use real-time feedback to refine your coding approach, making necessary adjustments to maintain the quality and effectiveness of the code throughout the development process.\n\nIncorporate Security Best Practices:\n\nApply security best practices, including input validation, encryption, and secure coding techniques, to safeguard against vulnerabilities. Ensure that the code is robust against common security threats.\n\nHighlight Code Readability:\n\nPrioritize code readability by using clear variable names, consistent formatting, and logical organization. Ensure that the code is easy to understand and maintain, facilitating future development and collaboration.\n\nInclude Collaboration Considerations:\n\nConsider how the code will be used and understood by other developers. Write comprehensive documentation and follow team coding standards to facilitate collaboration and ensure that the codebase remains accessible and maintainable for all contributors.\n\nFinal Instruction:\n\nBy following these instructions, you will ensure that your coding approach is methodical, well-reasoned, and optimized for technical precision and efficiency. Your goal is to deliver the most logical, secure, efficient, and well-documented code possible by fully integrating these advanced reasoning techniques into your programming workflow.
\n\n

第二部分:把你的想法转换为伪代码或类似的逻辑描述

\n

📏范式

\n

常见的范式有:

\n
    \n
  • 命令式编程(Imperative Programming)\n程序由一系列的命令或语句组成,计算机按照这些命令执行操作。这是最早也是最基本的编程范式。典型代表:C 和 Java
  • \n
  • 声明式编程(Declarative Programming):程序员只需要描述他们想要的结果,而不需要详细说明如何达到这个结果。典型代表:SQL 和 HTML
  • \n
  • 面向对象编程(Object-Oriented Programming):程序被组织成对象,每个对象都包含数据和操作数据的方法。面向对象编程强调的是数据抽象和封装,以及对象之间的交互。典型代表:Java 和 Python
  • \n
\n

为什么需要伪代码?

\n

回想一下🤔,当我们和GPT之类的产品进行交互时,我们的交互方式大致上有两类:\n举个例子,当我需要让GPT帮我写一个算法时,我可能会:

\n

第一种交互方式

\n
\n

“我需要你写一段代码,这段代码第一行是def,然后是函数名,然后是3个参数,然后是四行函数体。函数体中需要有return。它第一行是……最后一行是……。”

\n
\n

这是一种典型的命令式交互,非常好使。

\n

第二种交互方式

\n
\n

“直接说,我需要一个算法,这个算法需要满足以下要求:……”

\n
\n

这是一种典型的声明式交互,主要关注结果的描述和需求,而不需要详细说明如何达到这个结果。

\n
\n

警告

\n

声明式交互在代码实现上具有更大的风险,尤其是你缺乏对代码的深入理解时,比如李逵和李鬼:

\n

\"Alt

\n
\n
\n

重要

\n
    \n
  • \n

    这里最核心的逻辑是,你和GPT之间的信息越一致,那么你得到的代码就越符合你的预期。

    \n
  • \n
  • \n

    正是基于这个逻辑,我们才需要在第二步进行伪代码交互

    \n
  • \n
\n
\n

伪代码的交互

\n

我提供一个比较极端的例子,假设你想要一个按照一定规则拆分矩阵的代码,并把结果存在你的类中,你和GPT的交互的伪代码如下:

\n
定义函数 ():\n\n    寻找矩阵的因数(n):\n        对于 i 从 4 到 n(包含 n):\n            如果 n 能被 i 整除:\n                返回 i\n        返回 n  # 如果没有找到因数,返回 n 本身\n\n    获取矩阵的行数和列数:\n        rows, cols = 矩阵的形状\n\n    找到大于 3 的最小因数:\n        row_factor = smallest_factor_greater_than_three(rows)\n        col_factor = smallest_factor_greater_than_three(cols)\n\n    # 第一拆分方法:按因数拆分行和列\n    将矩阵按行拆分为多个子矩阵:\n        row_split = 按 row_factor 将矩阵垂直拆分\n    将每个子矩阵按列拆分为更小的矩阵:\n        small_matrices = 对于每个 sub_matrix 在 row_split 中,按 col_factor 水平拆分\n\n    # 第二拆分方法:取相邻列的接缝区域\n    初始化 seam_matrices_cols 为一个空列表\n    对于 每个 row_matrices 在 small_matrices 中(按行遍历):\n        初始化 row_seams 为一个空列表\n        对于 j 从 0(小矩阵数量 - 2)\n            获取当前小矩阵的最后一列和下一个小矩阵的第一列\n            seam_matrix = 合并 当前小矩阵的最后一列 和 下一个小矩阵的第一列(按列合并)\n            将 seam_matrix 添加到 row_seams 中\n        将 row_seams 添加到 seam_matrices_cols 中\n\n    # 第三拆分方法:取相邻行的小矩阵进行垂直拼接\n    初始化 seam_matrices_rows 为一个空列表\n    对于 i 从 0(行的小矩阵数量 - 2)\n        初始化 row_seams 为一个空列表\n        对于 j 从 0(列的小矩阵数量 - 1)\n            获取当前行的小矩阵和下一行的小矩阵\n            top_matrix = 当前行的小矩阵[j]\n            bottom_matrix = 下一行的小矩阵[j]\n            拼接 top_matrix 的最后一行和 bottom_matrix 的第一行\n            seam_matrix = 合并 top_matrix 的最后一行 和 bottom_matrix 的第一行(按行合并)\n            将 seam_matrix 添加到 row_seams 中\n        将 row_seams 添加到 seam_matrices_rows 中\n\n    # 将拆分结果存储到对象属性中\n    self.small_matrices = small_matrices\n    self.seam_matrices_cols = seam_matrices_cols\n    self.seam_matrices_rows = seam_matrices_rows
\n\n
\n

根据我的观察,如果你写了伪代码,在GPT的帮助下,它既可以是python也可以是C++,甚至可以是Java。它既可以是面向对象的,也可以是函数式的。你可以把更多的时间花在思考上,而不是写代码上。 算法上的革新带来的进步,远比你写代码tricks带来的进步要大。

\n

再者,正如笑容不会消失,笑容只会从一个人的脸上转移到另一个人的脸上。复杂性也是一样的,复杂性不会消失,复杂性只会从这里转移到那里。在这里,我们可以尝试把复杂性转移到机器上。很多优秀的工程师都有这样的习惯,把代码写的像诗一样的优雅,充满了各种隐喻、抽象。也正是这个原因,维护自然语言的伪代码的复杂性,远比你维护代码的复杂性要低。

\n

第三部分:怎么让GPT整点复杂的东西?

\n
\n

提示

\n

诚然,大语言模型的技术一直在进步,但是,受限于其上下文能力,基于效率上的考虑,我们应该尝试把真实的工程进行模块化、结构化。

\n
\n

这一点和完成一个大型工程一摸一样

\n
\n

GPT先天的适合增量更新的模式,为了春分利用这一点,需要作为“架构师”的你首先对你的工程进行定义。

\n
\n
\n

提示

\n

确保模块间的解耦,有些时候你会想用不同的大模型来完成不同的模块。

\n
\n
\n

你可以参考下面的步骤来定义你的模块。

\n
\n

3.1 定义互相解耦的模块

\n
    \n
  1. 模块划分原则\n
      \n
    • 高内聚低耦合
    • \n
    • 明确的接口和责任
    • \n
    \n
  2. \n
  3. 识别关键功能模块\n
      \n
    • 功能分解的方法
    • \n
    • 示例:将一个Web应用划分为前端、后端、数据库等模块
    • \n
    \n
  4. \n
  5. 接口设计\n
      \n
    • 模块间通信的标准
    • \n
    • 使用API和协议确保模块独立性
    • \n
    \n
  6. \n
\n

3.2 模块化的实施步骤

\n
    \n
  1. 需求分析与功能分解\n
      \n
    • 收集和分析项目需求
    • \n
    • 将需求转化为功能模块
    • \n
    \n
  2. \n
  3. 模块设计与规划\n
      \n
    • 为每个模块制定详细设计
    • \n
    • 确定模块之间的依赖关系
    • \n
    \n
  4. \n
  5. 逐个模块的开发与测试\n
      \n
    • 按照规划顺序开发模块
    • \n
    • 独立测试每个模块的功能和性能
    • \n
    \n
  6. \n
  7. 集成与系统测试\n
      \n
    • 将各模块集成到整体系统中
    • \n
    • 进行系统级别的测试和优化
    • \n
    \n
  8. \n
\n

3.3 利用GPT进行模块化开发

\n

1. 分块粘贴伪代码

\n

作为结论

\n

实践:让我们在这里引入一个具体的例子

\n
\n

提示

\n

我利用刚刚例子中的伪代码和拆分模块的思想制作了promote,你可以在这里看到完整的上下文信息。

\n
\n

我创建了chatGPT(o1-mini模型)分享链接,点击链接,你可以在这里看到一个完整的例子。

\n
\n
\n
\n

重要

\n

我们实际上做了什么?

\n
    \n
  • \n

    1. 复制对GPT输入代码风格化的要求

    \n
  • \n
  • \n

    --->>> 2. 编写包含你所有的要求和想法的伪代码

    \n
  • \n
  • \n

    --------->>> 3. 拆分伪代码,分模块实现

    \n
  • \n
\n
\n
\n

具体的(注意代码块右侧的复制按钮):

\n
\n\n

结语

\n
\n

我必须在这里重申 “AI放大了人类的能力边界”,代码的最终结果极大的取决于 “人的思考” 的质量。

\n
\n

在这里,我推荐书籍《人月神话》wiki,虽然此书是写于1975年,但数十年来多次重印。书中对软件工程的思考,对软件开发中人的因素的思考,非常值得阅读。

\n

over

\n","tagOpen":""},"script":null,"scriptSetup":null,"scripts":[],"styles":[],"customBlocks":[]},"content":"## 快速实现公式\n\n- **1. 复制对GPT输入代码风格化的要求**\n\n- **--->>> 2. 编写包含你所有的要求和想法的伪代码**\n\n- **--------->>> 3. 拆分伪代码,分模块实现**\n\n## 引言\n\n> 本文通过几个例子展示了用GPT敲代码的几个模式,您需要确保您的键盘具有Ctrl键、C键、V键。\n\n> 受文本长度限制,本文尽量不对任何内容的驱动原理做出解释。\n\n#### 读者应该明确\n> [!note]\n> 1. **工程控制论正在推动电子计算机技术革命的深入。这样一个现实已经来到了人类面前: 由电子计算机和机器智能装备起来的人,已经成为更有作为、更高超的人! ———钱学森 《工程控制论·序言》**\n> 2. **君子不器。 ———孔子《论语·为政篇》**\n> 3. **[“值得怀疑的是,一切已有的机械发明,是否减轻了任何人每天的辛劳。”](https://www.marxists.org/chinese/marx-engels-2/44/019.htm) ———约翰·斯图亚特·穆勒《政治经济学原理》**\n\n::: important 重要\nAI放大了人类的能力边界,但社会生活的主体依然是自然人。\n:::\n\n## 第一部分:对GPT输入代码风格化的要求\n\n> 跟我复制\n\n> 如果你有一些类似于“整洁代码”的偏好,或者你有明确的编程习惯,请在进行代码产出时,明确告诉GPT,如同下面的文本所示。\n\n```txt :collapsed-lines=8\nYou are an advanced AI model designed to solve complex programming challenges by applying a combination of sophisticated reasoning techniques. To ensure your code outputs are technically precise, secure, efficient, and well-documented, follow these structured instructions:\n\nBreak Down the Coding Task:\n\nBegin by applying Chain of Thought (CoT) reasoning to decompose the programming task into logical, manageable components. Clearly articulate each step in the coding process, whether it's designing an algorithm, structuring code, or implementing specific functions. Outline the dependencies between components, ensuring that the overall system design is coherent and modular. Verify the correctness of each step before proceeding, ensuring that your code is logically sound and modular.\n\nRationalize Each Coding Decision:\n\nAs you develop the code, use Step-by-Step Rationalization (STaR) to provide clear, logical justifications for every decision made during the coding process. Consider and document alternative design choices, explaining why the chosen approach is preferred based on criteria such as performance, scalability, and maintainability. Ensure that each line of code has a clear purpose and is well-commented for maintainability.\n\nOptimize Code for Efficiency and Reliability:\n\nIncorporate A Search principles* to evaluate and optimize the efficiency of your code. Select the most direct and cost-effective algorithms and data structures, considering time complexity, space complexity, and resource management. Develop and run test cases, including edge cases, to ensure code efficiency and reliability. Profile the code to identify and optimize any performance bottlenecks.\n\nConsider and Evaluate Multiple Code Solutions:\n\nLeverage Tree of Thoughts (ToT) to explore different coding approaches and solutions in parallel. Evaluate each potential solution using A Search principles*, prioritizing those that offer the best balance between performance, readability, and maintainability. Document why less favorable solutions were rejected, providing transparency and aiding future code reviews.\n\nSimulate Adaptive Learning in Coding:\n\nReflect on your coding decisions throughout the session as if you were learning from each outcome. Apply Q-Learning principles to prioritize coding strategies that lead to robust and optimized code. At the conclusion of each coding task, summarize key takeaways and areas for improvement to guide future development.\n\nContinuously Monitor and Refine Your Coding Process:\n\nEngage in Process Monitoring to continuously assess the progress of your coding task. Periodically review the codebase for technical debt and refactoring opportunities, ensuring long-term maintainability and code quality. Ensure that each segment of the code aligns with the overall project goals and requirements. Use real-time feedback to refine your coding approach, making necessary adjustments to maintain the quality and effectiveness of the code throughout the development process.\n\nIncorporate Security Best Practices:\n\nApply security best practices, including input validation, encryption, and secure coding techniques, to safeguard against vulnerabilities. Ensure that the code is robust against common security threats.\n\nHighlight Code Readability:\n\nPrioritize code readability by using clear variable names, consistent formatting, and logical organization. Ensure that the code is easy to understand and maintain, facilitating future development and collaboration.\n\nInclude Collaboration Considerations:\n\nConsider how the code will be used and understood by other developers. Write comprehensive documentation and follow team coding standards to facilitate collaboration and ensure that the codebase remains accessible and maintainable for all contributors.\n\nFinal Instruction:\n\nBy following these instructions, you will ensure that your coding approach is methodical, well-reasoned, and optimized for technical precision and efficiency. Your goal is to deliver the most logical, secure, efficient, and well-documented code possible by fully integrating these advanced reasoning techniques into your programming workflow. \n```\n\n## 第二部分:把你的想法转换为伪代码或类似的逻辑描述\n\n### 📏范式\n\n常见的范式有:\n- ==命令式编程(Imperative Programming)==\n 程序由一系列的命令或语句组成,计算机按照这些命令执行操作。这是最早也是最基本的编程范式。典型代表:C 和 Java\n - ==声明式编程(Declarative Programming)==:程序员只需要描述他们想要的结果,而不需要详细说明如何达到这个结果。典型代表:SQL 和 HTML \n - ==面向对象编程(Object-Oriented Programming)==:程序被组织成对象,每个对象都包含数据和操作数据的方法。面向对象编程强调的是数据抽象和封装,以及对象之间的交互。典型代表:Java 和 Python\n\n### 为什么需要伪代码?\n\n回想一下🤔,当我们和GPT之类的产品进行交互时,我们的交互方式大致上有两类:\n举个例子,当我需要让GPT帮我写一个算法时,我可能会:\n#### 第一种交互方式\n> “我需要你写一段代码,这段代码第一行是`def`,然后是函数名,然后是3个参数,然后是四行函数体。函数体中需要有`return`。它第一行是……最后一行是……。”\n\n这是一种典型的命令式交互,非常好使。\n\n#### 第二种交互方式\n> “直接说,我需要一个算法,这个算法需要满足以下要求:……”\n\n这是一种典型的声明式交互,主要关注结果的描述和需求,而不需要详细说明如何达到这个结果。\n\n::: warning 警告\n\n声明式交互在代码实现上具有更大的风险,尤其是==你缺乏对代码的深入理解时==,比如李逵和李鬼:\n\n![Alt text](http://k.sinaimg.cn/n/sinacn/w500h229/20180102/7226-fyqefvx1303978.jpg/w700d1q75cms.jpg?by=cms_fixed_width)\n:::\n\n::: important 重要\n\n- 这里最**核心的逻辑**是,你和GPT之间的信息越一致,那么你得到的代码就越符合你的预期。\n\n- 正是基于这个逻辑,我们才需要在第二步进行==伪代码交互==。\n\n:::\n\n#### 伪代码的交互\n\n我提供一个比较极端的例子,假设你想要一个按照一定规则拆分矩阵的代码,并把结果存在你的类中,你和GPT的交互的伪代码如下:\n\n```python\n定义函数 ():\n\n 寻找矩阵的因数(n):\n 对于 i 从 4 到 n(包含 n):\n 如果 n 能被 i 整除:\n 返回 i\n 返回 n # 如果没有找到因数,返回 n 本身\n\n 获取矩阵的行数和列数:\n rows, cols = 矩阵的形状\n\n 找到大于 3 的最小因数:\n row_factor = smallest_factor_greater_than_three(rows)\n col_factor = smallest_factor_greater_than_three(cols)\n\n # 第一拆分方法:按因数拆分行和列\n 将矩阵按行拆分为多个子矩阵:\n row_split = 按 row_factor 将矩阵垂直拆分\n 将每个子矩阵按列拆分为更小的矩阵:\n small_matrices = 对于每个 sub_matrix 在 row_split 中,按 col_factor 水平拆分\n\n # 第二拆分方法:取相邻列的接缝区域\n 初始化 seam_matrices_cols 为一个空列表\n 对于 每个 row_matrices 在 small_matrices 中(按行遍历):\n 初始化 row_seams 为一个空列表\n 对于 j 从 0 到 (小矩阵数量 - 2):\n 获取当前小矩阵的最后一列和下一个小矩阵的第一列\n seam_matrix = 合并 当前小矩阵的最后一列 和 下一个小矩阵的第一列(按列合并)\n 将 seam_matrix 添加到 row_seams 中\n 将 row_seams 添加到 seam_matrices_cols 中\n\n # 第三拆分方法:取相邻行的小矩阵进行垂直拼接\n 初始化 seam_matrices_rows 为一个空列表\n 对于 i 从 0 到 (行的小矩阵数量 - 2):\n 初始化 row_seams 为一个空列表\n 对于 j 从 0 到 (列的小矩阵数量 - 1):\n 获取当前行的小矩阵和下一行的小矩阵\n top_matrix = 当前行的小矩阵[j]\n bottom_matrix = 下一行的小矩阵[j]\n 拼接 top_matrix 的最后一行和 bottom_matrix 的第一行\n seam_matrix = 合并 top_matrix 的最后一行 和 bottom_matrix 的第一行(按行合并)\n 将 seam_matrix 添加到 row_seams 中\n 将 row_seams 添加到 seam_matrices_rows 中\n\n # 将拆分结果存储到对象属性中\n self.small_matrices = small_matrices\n self.seam_matrices_cols = seam_matrices_cols\n self.seam_matrices_rows = seam_matrices_rows\n```\n\n::: tip 提示\n### 🙋好,那么好,这时候聪明的你就要问了:\n> # “我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\n\n:::\n\n根据我的观察,如果你写了伪代码,在GPT的帮助下,它既可以是python也可以是C++,甚至可以是Java。它既可以是面向对象的,也可以是函数式的。==你可以把更多的时间花在思考上,而不是写代码上。== 算法上的革新带来的进步,远比你写代码tricks带来的进步要大。\n\n再者,正如笑容不会消失,笑容只会从一个人的脸上转移到另一个人的脸上。复杂性也是一样的,复杂性不会消失,复杂性只会从这里转移到那里。在这里,我们可以尝试把复杂性转移到机器上。很多优秀的工程师都有这样的习惯,把代码写的像诗一样的优雅,充满了各种隐喻、抽象。也正是这个原因,维护自然语言的伪代码的复杂性,远比你维护代码的复杂性要低。\n\n## 第三部分:怎么让GPT整点复杂的东西?\n\n::: tip 提示\n诚然,大语言模型的技术一直在进步,但是,受限于其上下文能力,基于效率上的考虑,我们应该尝试把真实的工程进行模块化、结构化。\n:::\n\n### 这一点和完成一个大型工程一摸一样\n\n> GPT先天的适合增量更新的模式,为了春分利用这一点,需要作为“架构师”的你首先对你的工程进行定义。\n\n::: tip 提示\n确保模块间的解耦,有些时候你会想用不同的大模型来完成不同的模块。\n:::\n\n> 你可以参考下面的步骤来定义你的模块。\n\n### **3.1 定义互相解耦的模块**\n1. **模块划分原则**\n - 高内聚低耦合\n - 明确的接口和责任\n2. **识别关键功能模块**\n - 功能分解的方法\n - 示例:将一个Web应用划分为前端、后端、数据库等模块\n3. **接口设计**\n - 模块间通信的标准\n - 使用API和协议确保模块独立性\n\n### **3.2 模块化的实施步骤**\n1. **需求分析与功能分解**\n - 收集和分析项目需求\n - 将需求转化为功能模块\n2. **模块设计与规划**\n - 为每个模块制定详细设计\n - 确定模块之间的依赖关系\n3. **逐个模块的开发与测试**\n - 按照规划顺序开发模块\n - 独立测试每个模块的功能和性能\n4. **集成与系统测试**\n - 将各模块集成到整体系统中\n - 进行系统级别的测试和优化\n\n### **3.3 利用GPT进行模块化开发**\n\n#### 1. 分块粘贴伪代码\n\n## 作为结论\n\n### 实践:让我们在这里引入一个具体的例子\n\n::: tip 提示\n我利用刚刚例子中的伪代码和拆分模块的思想制作了promote,你可以在这里看到完整的上下文信息。\n> 我创建了chatGPT(o1-mini模型)[分享链接](https://chatgpt.com/share/66e56444-484d-484d-984d-484d484d484d),点击链接,你可以在这里看到一个完整的例子。\n:::\n\n::: important 重要\n\n### 我们实际上做了什么?\n\n- **1. 复制对GPT输入代码风格化的要求**\n\n- **--->>> 2. 编写包含你所有的要求和想法的伪代码**\n\n- **--------->>> 3. 拆分伪代码,分模块实现**\n\n:::\n\n> ==具体的==(注意代码块右侧的复制按钮):\n::: tabs\n\n@tab 1/5 复制\n\n==这里同上==\n```txt :collapsed-lines=8\nYou are an advanced AI model designed to solve complex programming challenges by applying a combination of sophisticated reasoning techniques. To ensure your code outputs are technically precise, secure, efficient, and well-documented, follow these structured instructions:\n\nBreak Down the Coding Task:\n\nBegin by applying Chain of Thought (CoT) reasoning to decompose the programming task into logical, manageable components. Clearly articulate each step in the coding process, whether it's designing an algorithm, structuring code, or implementing specific functions. Outline the dependencies between components, ensuring that the overall system design is coherent and modular. Verify the correctness of each step before proceeding, ensuring that your code is logically sound and modular.\n\nRationalize Each Coding Decision:\n\nAs you develop the code, use Step-by-Step Rationalization (STaR) to provide clear, logical justifications for every decision made during the coding process. Consider and document alternative design choices, explaining why the chosen approach is preferred based on criteria such as performance, scalability, and maintainability. Ensure that each line of code has a clear purpose and is well-commented for maintainability.\n\nOptimize Code for Efficiency and Reliability:\n\nIncorporate A Search principles* to evaluate and optimize the efficiency of your code. Select the most direct and cost-effective algorithms and data structures, considering time complexity, space complexity, and resource management. Develop and run test cases, including edge cases, to ensure code efficiency and reliability. Profile the code to identify and optimize any performance bottlenecks.\n\nConsider and Evaluate Multiple Code Solutions:\n\nLeverage Tree of Thoughts (ToT) to explore different coding approaches and solutions in parallel. Evaluate each potential solution using A Search principles*, prioritizing those that offer the best balance between performance, readability, and maintainability. Document why less favorable solutions were rejected, providing transparency and aiding future code reviews.\n\nSimulate Adaptive Learning in Coding:\n\nReflect on your coding decisions throughout the session as if you were learning from each outcome. Apply Q-Learning principles to prioritize coding strategies that lead to robust and optimized code. At the conclusion of each coding task, summarize key takeaways and areas for improvement to guide future development.\n\nContinuously Monitor and Refine Your Coding Process:\n\nEngage in Process Monitoring to continuously assess the progress of your coding task. Periodically review the codebase for technical debt and refactoring opportunities, ensuring long-term maintainability and code quality. Ensure that each segment of the code aligns with the overall project goals and requirements. Use real-time feedback to refine your coding approach, making necessary adjustments to maintain the quality and effectiveness of the code throughout the development process.\n\nIncorporate Security Best Practices:\n\nApply security best practices, including input validation, encryption, and secure coding techniques, to safeguard against vulnerabilities. Ensure that the code is robust against common security threats.\n\nHighlight Code Readability:\n\nPrioritize code readability by using clear variable names, consistent formatting, and logical organization. Ensure that the code is easy to understand and maintain, facilitating future development and collaboration.\n\nInclude Collaboration Considerations:\n\nConsider how the code will be used and understood by other developers. Write comprehensive documentation and follow team coding standards to facilitate collaboration and ensure that the codebase remains accessible and maintainable for all contributors.\n\nFinal Instruction:\n\nBy following these instructions, you will ensure that your coding approach is methodical, well-reasoned, and optimized for technical precision and efficiency. Your goal is to deliver the most logical, secure, efficient, and well-documented code possible by fully integrating these advanced reasoning techniques into your programming workflow. \n```\n\n@tab 2/5 编写伪代码\n\n==这里同上==\n\n```python :collapsed-lines=10\n定义函数 ():\n\n 寻找矩阵的因数(n):\n 对于 i 从 4 到 n(包含 n):\n 如果 n 能被 i 整除:\n 返回 i\n 返回 n # 如果没有找到因数,返回 n 本身\n\n 获取矩阵的行数和列数:\n rows, cols = 矩阵的形状\n\n 找到大于 3 的最小因数:\n row_factor = smallest_factor_greater_than_three(rows)\n col_factor = smallest_factor_greater_than_three(cols)\n\n # 第一拆分方法:按因数拆分行和列\n 将矩阵按行拆分为多个子矩阵:\n row_split = 按 row_factor 将矩阵垂直拆分\n 将每个子矩阵按列拆分为更小的矩阵:\n small_matrices = 对于每个 sub_matrix 在 row_split 中,按 col_factor 水平拆分\n\n # 第二拆分方法:取相邻列的接缝区域\n 初始化 seam_matrices_cols 为一个空列表\n 对于 每个 row_matrices 在 small_matrices 中(按行遍历):\n 初始化 row_seams 为一个空列表\n 对于 j 从 0 到 (小矩阵数量 - 2):\n 获取当前小矩阵的最后一列和下一个小矩阵的第一列\n seam_matrix = 合并 当前小矩阵的最后一列 和 下一个小矩阵的第一列(按列合并)\n 将 seam_matrix 添加到 row_seams 中\n 将 row_seams 添加到 seam_matrices_cols 中\n\n # 第三拆分方法:取相邻行的小矩阵进行垂直拼接\n 初始化 seam_matrices_rows 为一个空列表\n 对于 i 从 0 到 (行的小矩阵数量 - 2):\n 初始化 row_seams 为一个空列表\n 对于 j 从 0 到 (列的小矩阵数量 - 1):\n 获取当前行的小矩阵和下一行的小矩阵\n top_matrix = 当前行的小矩阵[j]\n bottom_matrix = 下一行的小矩阵[j]\n 拼接 top_matrix 的最后一行和 bottom_matrix 的第一行\n seam_matrix = 合并 top_matrix 的最后一行 和 bottom_matrix 的第一行(按行合并)\n 将 seam_matrix 添加到 row_seams 中\n 将 row_seams 添加到 seam_matrices_rows 中\n\n # 将拆分结果存储到对象属性中\n self.small_matrices = small_matrices\n self.seam_matrices_cols = seam_matrices_cols\n self.seam_matrices_rows = seam_matrices_rows”。 最终的交付形式为可以独立运行的python脚本,捕获用户输入的两个数字作为矩阵的尺寸。\n```\n\n@tab:active 3/5 先主体\n\n==这里我们分块实现==\n\n#### **主体部分**\n\n我构思了一个矩阵拆分的算法,我定义我的模块有:0 验证用户的输入是否合适我们的拆分方法:如是否可以进行因式分解;1 生成矩阵;2 对矩阵进行拆分;3 把拆分后的矩阵和原有的矩阵在一张图片上叠加显示,着重显示拆分矩阵的边界。注意:技术选型为python3。我定义了第2部分的伪代码,代码如下“\n\n```python :collapsed-lines=5\n定义函数 ():\n\n 寻找矩阵的因数(n):\n 对于 i 从 4 到 n(包含 n):\n 如果 n 能被 i 整除:\n 返回 i\n 返回 n # 如果没有找到因数,返回 n 本身\n\n 获取矩阵的行数和列数:\n rows, cols = 矩阵的形状\n\n 找到大于 3 的最小因数:\n row_factor = smallest_factor_greater_than_three(rows)\n col_factor = smallest_factor_greater_than_three(cols)\n\n # 第一拆分方法:按因数拆分行和列\n 将矩阵按行拆分为多个子矩阵:\n row_split = 按 row_factor 将矩阵垂直拆分\n 将每个子矩阵按列拆分为更小的矩阵:\n small_matrices = 对于每个 sub_matrix 在 row_split 中,按 col_factor 水平拆分\n\n # 第二拆分方法:取相邻列的接缝区域\n 初始化 seam_matrices_cols 为一个空列表\n 对于 每个 row_matrices 在 small_matrices 中(按行遍历):\n 初始化 row_seams 为一个空列表\n 对于 j 从 0 到 (小矩阵数量 - 2):\n 获取当前小矩阵的最后一列和下一个小矩阵的第一列\n seam_matrix = 合并 当前小矩阵的最后一列 和 下一个小矩阵的第一列(按列合并)\n 将 seam_matrix 添加到 row_seams 中\n 将 row_seams 添加到 seam_matrices_cols 中\n\n # 第三拆分方法:取相邻行的小矩阵进行垂直拼接\n 初始化 seam_matrices_rows 为一个空列表\n 对于 i 从 0 到 (行的小矩阵数量 - 2):\n 初始化 row_seams 为一个空列表\n 对于 j 从 0 到 (列的小矩阵数量 - 1):\n 获取当前行的小矩阵和下一行的小矩阵\n top_matrix = 当前行的小矩阵[j]\n bottom_matrix = 下一行的小矩阵[j]\n 拼接 top_matrix 的最后一行和 bottom_matrix 的第一行\n seam_matrix = 合并 top_matrix 的最后一行 和 bottom_matrix 的第一行(按行合并)\n 将 seam_matrix 添加到 row_seams 中\n 将 row_seams 添加到 seam_matrices_rows 中\n\n # 将拆分结果存储到对象属性中\n self.small_matrices = small_matrices\n self.seam_matrices_cols = seam_matrices_cols\n self.seam_matrices_rows = seam_matrices_rows\n```\n”。最终的交付形式为可以独立运行的python脚本,捕获用户输入的两个数字作为矩阵的尺寸。\n\n@tab:active 4/5 进一步进行限定\n#### **模块1**\n\n这里上面的提示词有些问题,我没有严格的定义可视化的方式,于是出现了问题。我对可视化的部分做出限定,我希望得到一张png图像,用填写数字的表格代表矩阵,表格使用黑色实线,表格中的每个小格子都是正方形。矩阵被切分的接缝处使用红色粗实线进行区分。\n\n#### **debug**\n\n我在运行这段代码的时候遇到了问题,详细的上下文信息是“ \n```shell\n% python test.py\n```\n\n```python :collapsed-lines=5\nMatrix Splitting Algorithm with Enhanced Visualization\n------------------------------------------------------\nEnter the number of rows and columns (e.g., '8 12'): 80 12\nGenerated matrix of size 80x12.\nRow factor: 4, Column factor: 4\nMatrix split into 20 row-wise submatrices.\nTotal small matrices after horizontal split: 60\nGenerated seam matrices for columns: 20 sets.\nTraceback (most recent call last):\n File \"/Users/hughes/docs/test.py\", line 195, in \n main()\n File \"/Users/hughes/docs/test.py\", line 191, in main\n splitter.split_matrix()\n File \"/Users/hughes/docs/test.py\", line 99, in split_matrix\n seam_matrix = np.vstack((top_matrix[-1, :].reshape(1, -1), bottom_matrix[0, :].reshape(1, -1)))\n ~~~~~~~~~~^^^^^^^\nIndexError: index -1 is out of bounds for axis 0 with size 0”\n``` \n\n@tab:active 5/5 插入功能点\n\n#### **模块2**\n\n非常好👍,下面我们再对可视化的部分进行功能点的新增,刚刚我们的代码实现了对于按列拆分时的可视化,我们在最终的图像上增加按行拆分矩阵时的线,用绿色的粗实线来表示。在绘图的部分外部套一个tqdm的进度展示,便于在终端中查阅进度。\n\n#### **最终结果**\n\n```python :collapsed-lines=10\n#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\n\"\"\"\nMatrix Splitting Algorithm with Enhanced Visualization\n\nThis script captures user input for matrix dimensions, validates the input,\ngenerates a matrix, splits it based on factorization, and visualizes the\noriginal and split matrices with clearly defined grid lines and highlighted\nsplit boundaries. The final visualization is saved as a PNG image.\n\nEnhancements:\n1. Added green thick lines to represent row splits.\n2. Incorporated tqdm progress bars to monitor plotting progress.\n\nAuthor: OpenAI ChatGPT\nDate: 2024-11-08\n\"\"\"\n\nimport sys\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom matplotlib.patches import Rectangle\nfrom tqdm import tqdm # Import tqdm for progress bars\n\nclass MatrixSplitter:\n def __init__(self, rows, cols):\n \"\"\"\n Initializes the MatrixSplitter with the specified number of rows and columns.\n\n Parameters:\n rows (int): Number of rows in the matrix.\n cols (int): Number of columns in the matrix.\n \"\"\"\n self.rows = rows\n self.cols = cols\n self.matrix = None\n self.small_matrices = [] # 2D list: small_matrices[i][j]\n self.seam_matrices_cols = []\n self.seam_matrices_rows = []\n\n def smallest_factor_greater_than_three(self, n):\n \"\"\"\n Finds the smallest factor of n that is greater than three.\n\n Parameters:\n n (int): The number to find a factor for.\n\n Returns:\n int: The smallest factor greater than three, or n if no such factor exists.\n \"\"\"\n for i in range(4, n + 1):\n if n % i == 0:\n return i\n return n\n\n def generate_matrix(self):\n \"\"\"\n Generates a matrix with random integers between 0 and 99.\n \"\"\"\n self.matrix = np.random.randint(0, 100, size=(self.rows, self.cols))\n print(f\"Generated matrix of size {self.rows}x{self.cols}.\")\n\n def split_matrix(self):\n \"\"\"\n Splits the matrix into smaller matrices based on factorization.\n \"\"\"\n # Find factors\n row_factor = self.smallest_factor_greater_than_three(self.rows)\n col_factor = self.smallest_factor_greater_than_three(self.cols)\n print(f\"Row factor: {row_factor}, Column factor: {col_factor}\")\n\n # Calculate number of splits\n num_row_splits = self.rows // row_factor\n num_col_splits = self.cols // col_factor\n\n # First split: Vertical (rows)\n row_split = np.array_split(self.matrix, num_row_splits, axis=0)\n print(f\"Matrix split into {len(row_split)} row-wise submatrices.\")\n\n # Further split: Horizontal (columns)\n # Convert small_matrices to a 2D list\n for sub_matrix in row_split:\n cols_split = np.array_split(sub_matrix, num_col_splits, axis=1)\n self.small_matrices.append(cols_split)\n total_small_matrices = len(self.small_matrices) * num_col_splits\n print(f\"Total small matrices after horizontal split: {total_small_matrices}\")\n\n # Second split: Seam matrices for columns\n for sub_matrix in row_split:\n row_seams = []\n for j in range(num_col_splits - 1):\n last_col = sub_matrix[:, (j + 1) * col_factor - 1].reshape(-1, 1)\n next_col = sub_matrix[:, (j + 1) * col_factor].reshape(-1, 1)\n seam_matrix = np.hstack((last_col, next_col))\n row_seams.append(seam_matrix)\n self.seam_matrices_cols.append(row_seams)\n print(f\"Generated seam matrices for columns: {len(self.seam_matrices_cols)} sets.\")\n\n # Third split: Seam matrices for rows\n for i in range(num_row_splits - 1):\n row_seams = []\n for j in range(num_col_splits):\n # Access small_matrices as a 2D list\n top_matrix = self.small_matrices[i][j]\n bottom_matrix = self.small_matrices[i + 1][j]\n # Get the last row of top_matrix and first row of bottom_matrix\n top_last_row = top_matrix[-1, :].reshape(1, -1)\n bottom_first_row = bottom_matrix[0, :].reshape(1, -1)\n seam_matrix = np.vstack((top_last_row, bottom_first_row))\n row_seams.append(seam_matrix)\n self.seam_matrices_rows.append(row_seams)\n print(f\"Generated seam matrices for rows: {len(self.seam_matrices_rows)} sets.\")\n\n def visualize_splits(self, output_filename=\"matrix_split.png\"):\n \"\"\"\n Visualizes the original and split matrices as a numbered grid with black grid lines,\n red thick lines for column splits, and green thick lines for row splits.\n The visualization is saved as a PNG image.\n\n Parameters:\n output_filename (str): The filename for the saved PNG image.\n \"\"\"\n fig, ax = plt.subplots(figsize=(self.cols, self.rows))\n ax.set_xlim(0, self.cols)\n ax.set_ylim(0, self.rows)\n ax.set_xticks(np.arange(0, self.cols + 1, 1))\n ax.set_yticks(np.arange(0, self.rows + 1, 1))\n ax.set_xticklabels([])\n ax.set_yticklabels([])\n ax.grid(which='both', color='black', linewidth=1)\n\n # Invert y-axis to have the first row at the top\n ax.invert_yaxis()\n\n # Add numbers to each cell with a progress bar\n total_cells = self.rows * self.cols\n with tqdm(total=total_cells, desc=\"Plotting cells\", unit=\"cell\") as pbar:\n for i in range(self.rows):\n for j in range(self.cols):\n cell_value = self.matrix[i, j]\n ax.text(j + 0.5, i + 0.5, str(cell_value),\n va='center', ha='center', fontsize=8)\n pbar.update(1)\n\n # Highlight split boundaries with red thick lines (columns) and green thick lines (rows)\n row_factor = self.smallest_factor_greater_than_three(self.rows)\n col_factor = self.smallest_factor_greater_than_three(self.cols)\n\n # Horizontal split lines (rows) - Green\n with tqdm(total=self.rows // row_factor - 1, desc=\"Drawing row splits\", unit=\"split\") as pbar:\n for i in range(1, self.rows // row_factor):\n ax.axhline(i * row_factor, color='green', linewidth=2)\n pbar.update(1)\n\n # Vertical split lines (columns) - Red\n with tqdm(total=self.cols // col_factor - 1, desc=\"Drawing column splits\", unit=\"split\") as pbar:\n for j in range(1, self.cols // col_factor):\n ax.axvline(j * col_factor, color='red', linewidth=2)\n pbar.update(1)\n\n # Remove whitespace and axes\n plt.axis('off')\n plt.tight_layout()\n\n # Save the figure\n plt.savefig(output_filename, dpi=300, bbox_inches='tight')\n plt.close()\n print(f\"Visualization saved as '{output_filename}'.\")\n\ndef validate_input(input_str):\n \"\"\"\n Validates that the input string contains two integers greater than or equal to 4.\n\n Parameters:\n input_str (str): The input string containing two numbers.\n\n Returns:\n tuple: A tuple containing two integers (rows, cols).\n\n Raises:\n ValueError: If input is invalid.\n \"\"\"\n try:\n parts = input_str.strip().split()\n if len(parts) != 2:\n raise ValueError(\"Please enter exactly two numbers separated by space.\")\n rows, cols = map(int, parts)\n if rows < 4 or cols < 4:\n raise ValueError(\"Both dimensions must be at least 4.\")\n return rows, cols\n except Exception as e:\n raise ValueError(f\"Invalid input: {e}\")\n\ndef main():\n \"\"\"\n Main function to execute the matrix splitting algorithm.\n \"\"\"\n print(\"Matrix Splitting Algorithm with Enhanced Visualization\")\n print(\"------------------------------------------------------\")\n try:\n user_input = input(\"Enter the number of rows and columns (e.g., '8 12'): \")\n rows, cols = validate_input(user_input)\n except ValueError as ve:\n print(ve)\n sys.exit(1)\n\n splitter = MatrixSplitter(rows, cols)\n splitter.generate_matrix()\n splitter.split_matrix()\n splitter.visualize_splits()\n\nif __name__ == \"__main__\":\n main()\n```\n\n:::\n\n## 结语\n\n> 我必须在这里重申 ==“AI放大了人类的能力边界”==,代码的最终结果极大的取决于 ==“人的思考”== 的质量。\n\n在这里,我推荐书籍《人月神话》[wiki](https://zh.wikipedia.org/wiki/人月神话),虽然此书是写于1975年,但数十年来多次重印。书中对软件工程的思考,对软件开发中人的因素的思考,非常值得阅读。\n\nover","excerpt":"","includedFiles":[],"tasklists":0,"title":"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”","headers":[{"level":2,"title":"快速实现公式","slug":"快速实现公式","link":"#快速实现公式","children":[]},{"level":2,"title":"引言","slug":"引言","link":"#引言","children":[]},{"level":2,"title":"第一部分:对GPT输入代码风格化的要求","slug":"第一部分-对gpt输入代码风格化的要求","link":"#第一部分-对gpt输入代码风格化的要求","children":[]},{"level":2,"title":"第二部分:把你的想法转换为伪代码或类似的逻辑描述","slug":"第二部分-把你的想法转换为伪代码或类似的逻辑描述","link":"#第二部分-把你的想法转换为伪代码或类似的逻辑描述","children":[{"level":3,"title":"📏范式","slug":"📏范式","link":"#📏范式","children":[]},{"level":3,"title":"为什么需要伪代码?","slug":"为什么需要伪代码","link":"#为什么需要伪代码","children":[]}]},{"level":2,"title":"第三部分:怎么让GPT整点复杂的东西?","slug":"第三部分-怎么让gpt整点复杂的东西","link":"#第三部分-怎么让gpt整点复杂的东西","children":[{"level":3,"title":"这一点和完成一个大型工程一摸一样","slug":"这一点和完成一个大型工程一摸一样","link":"#这一点和完成一个大型工程一摸一样","children":[]},{"level":3,"title":"3.1 定义互相解耦的模块","slug":"_3-1-定义互相解耦的模块","link":"#_3-1-定义互相解耦的模块","children":[]},{"level":3,"title":"3.2 模块化的实施步骤","slug":"_3-2-模块化的实施步骤","link":"#_3-2-模块化的实施步骤","children":[]},{"level":3,"title":"3.3 利用GPT进行模块化开发","slug":"_3-3-利用gpt进行模块化开发","link":"#_3-3-利用gpt进行模块化开发","children":[]}]},{"level":2,"title":"作为结论","slug":"作为结论","link":"#作为结论","children":[{"level":3,"title":"实践:让我们在这里引入一个具体的例子","slug":"实践-让我们在这里引入一个具体的例子","link":"#实践-让我们在这里引入一个具体的例子","children":[]}]},{"level":2,"title":"结语","slug":"结语","link":"#结语","children":[]}]}} +{"content":"

快速实现

\n
    \n
  • \n

    1. 复制对GPT输入代码风格化的要求

    \n
  • \n
  • \n

    --->>> 2. 编写包含你所有的要求和想法的伪代码

    \n
  • \n
  • \n

    --------->>> 3. 拆分伪代码,分模块实现

    \n
  • \n
\n

完整示例

\n

点击看chatgpt o1-mini模型的开发示例

\n

引言

\n
\n

本文通过几个例子展示了用GPT敲代码的几个模式,您需要确保您的键盘具有Ctrl键、C键、V键。

\n
\n
\n

受文本长度限制,本文尽量不对任何内容的驱动原理做出解释。

\n
\n

读者应该明确

\n
\n

\n
    \n
  1. 工程控制论正在推动电子计算机技术革命的深入。这样一个现实已经来到了人类面前: 由电子计算机和机器智能装备起来的人,已经成为更有作为、更高超的人! ———钱学森 《工程控制论·序言》
  2. \n
  3. 君子不器。 ———孔子《论语·为政篇》
  4. \n
  5. “值得怀疑的是,一切已有的机械发明,是否减轻了任何人每天的辛劳。” ———约翰·斯图亚特·穆勒《政治经济学原理》
  6. \n
\n
\n
\n

重要

\n

AI放大了人类的能力边界,但社会生活的主体依然是自然人。

\n
\n

第一部分:对GPT输入代码风格化的要求

\n
\n

跟我复制

\n
\n
\n

如果你有一些类似于“整洁代码”的偏好,或者你有明确的编程习惯,请在进行代码产出时,明确告诉GPT,如同下面的文本所示。

\n
\n
You are an advanced AI model designed to solve complex programming challenges by applying a combination of sophisticated reasoning techniques. To ensure your code outputs are technically precise, secure, efficient, and well-documented, follow these structured instructions:\n\nBreak Down the Coding Task:\n\nBegin by applying Chain of Thought (CoT) reasoning to decompose the programming task into logical, manageable components. Clearly articulate each step in the coding process, whether it's designing an algorithm, structuring code, or implementing specific functions. Outline the dependencies between components, ensuring that the overall system design is coherent and modular. Verify the correctness of each step before proceeding, ensuring that your code is logically sound and modular.\n\nRationalize Each Coding Decision:\n\nAs you develop the code, use Step-by-Step Rationalization (STaR) to provide clear, logical justifications for every decision made during the coding process. Consider and document alternative design choices, explaining why the chosen approach is preferred based on criteria such as performance, scalability, and maintainability. Ensure that each line of code has a clear purpose and is well-commented for maintainability.\n\nOptimize Code for Efficiency and Reliability:\n\nIncorporate A Search principles* to evaluate and optimize the efficiency of your code. Select the most direct and cost-effective algorithms and data structures, considering time complexity, space complexity, and resource management. Develop and run test cases, including edge cases, to ensure code efficiency and reliability. Profile the code to identify and optimize any performance bottlenecks.\n\nConsider and Evaluate Multiple Code Solutions:\n\nLeverage Tree of Thoughts (ToT) to explore different coding approaches and solutions in parallel. Evaluate each potential solution using A Search principles*, prioritizing those that offer the best balance between performance, readability, and maintainability. Document why less favorable solutions were rejected, providing transparency and aiding future code reviews.\n\nSimulate Adaptive Learning in Coding:\n\nReflect on your coding decisions throughout the session as if you were learning from each outcome. Apply Q-Learning principles to prioritize coding strategies that lead to robust and optimized code. At the conclusion of each coding task, summarize key takeaways and areas for improvement to guide future development.\n\nContinuously Monitor and Refine Your Coding Process:\n\nEngage in Process Monitoring to continuously assess the progress of your coding task. Periodically review the codebase for technical debt and refactoring opportunities, ensuring long-term maintainability and code quality. Ensure that each segment of the code aligns with the overall project goals and requirements. Use real-time feedback to refine your coding approach, making necessary adjustments to maintain the quality and effectiveness of the code throughout the development process.\n\nIncorporate Security Best Practices:\n\nApply security best practices, including input validation, encryption, and secure coding techniques, to safeguard against vulnerabilities. Ensure that the code is robust against common security threats.\n\nHighlight Code Readability:\n\nPrioritize code readability by using clear variable names, consistent formatting, and logical organization. Ensure that the code is easy to understand and maintain, facilitating future development and collaboration.\n\nInclude Collaboration Considerations:\n\nConsider how the code will be used and understood by other developers. Write comprehensive documentation and follow team coding standards to facilitate collaboration and ensure that the codebase remains accessible and maintainable for all contributors.\n\nFinal Instruction:\n\nBy following these instructions, you will ensure that your coding approach is methodical, well-reasoned, and optimized for technical precision and efficiency. Your goal is to deliver the most logical, secure, efficient, and well-documented code possible by fully integrating these advanced reasoning techniques into your programming workflow.
\n\n

第二部分:把你的想法转换为伪代码或类似的逻辑描述

\n

📏范式

\n

常见的范式有:

\n
    \n
  • 命令式编程(Imperative Programming)\n程序由一系列的命令或语句组成,计算机按照这些命令执行操作。这是最早也是最基本的编程范式。典型代表:C 和 Java
  • \n
  • 声明式编程(Declarative Programming):程序员只需要描述他们想要的结果,而不需要详细说明如何达到这个结果。典型代表:SQL 和 HTML
  • \n
  • 面向对象编程(Object-Oriented Programming):程序被组织成对象,每个对象都包含数据和操作数据的方法。面向对象编程强调的是数据抽象和封装,以及对象之间的交互。典型代表:Java 和 Python
  • \n
\n

为什么需要伪代码?

\n

回想一下🤔,当我们和GPT之类的产品进行交互时,我们的交互方式大致上有两类:\n举个例子,当我需要让GPT帮我写一个算法时,我可能会:

\n

第一种交互方式

\n
\n

“我需要你写一段代码,这段代码第一行是def,然后是函数名,然后是3个参数,然后是四行函数体。函数体中需要有return。它第一行是……最后一行是……。”

\n
\n

这是一种典型的命令式交互,非常好使。

\n

第二种交互方式

\n
\n

“直接说,我需要一个算法,这个算法需要满足以下要求:……”

\n
\n

这是一种典型的声明式交互,主要关注结果的描述和需求,而不需要详细说明如何达到这个结果。

\n
\n

警告

\n

声明式交互在代码实现上具有更大的风险,尤其是你缺乏对代码的深入理解时,比如李逵和李鬼:

\n

\"Alt

\n
\n
\n

重要

\n
    \n
  • \n

    这里最核心的逻辑是,你和GPT之间的信息越一致,那么你得到的代码就越符合你的预期。

    \n
  • \n
  • \n

    正是基于这个逻辑,我们才需要在第二步进行伪代码交互

    \n
  • \n
\n
\n

伪代码的交互

\n

我提供一个比较极端的例子,假设你想要一个按照一定规则拆分矩阵的代码,并把结果存在你的类中,你和GPT的交互的伪代码如下:

\n
定义函数 ():\n\n    寻找矩阵的因数(n):\n        对于 i 从 4 到 n(包含 n):\n            如果 n 能被 i 整除:\n                返回 i\n        返回 n  # 如果没有找到因数,返回 n 本身\n\n    获取矩阵的行数和列数:\n        rows, cols = 矩阵的形状\n\n    找到大于 3 的最小因数:\n        row_factor = smallest_factor_greater_than_three(rows)\n        col_factor = smallest_factor_greater_than_three(cols)\n\n    # 第一拆分方法:按因数拆分行和列\n    将矩阵按行拆分为多个子矩阵:\n        row_split = 按 row_factor 将矩阵垂直拆分\n    将每个子矩阵按列拆分为更小的矩阵:\n        small_matrices = 对于每个 sub_matrix 在 row_split 中,按 col_factor 水平拆分\n\n    # 第二拆分方法:取相邻列的接缝区域\n    初始化 seam_matrices_cols 为一个空列表\n    对于 每个 row_matrices 在 small_matrices 中(按行遍历):\n        初始化 row_seams 为一个空列表\n        对于 j 从 0(小矩阵数量 - 2)\n            获取当前小矩阵的最后一列和下一个小矩阵的第一列\n            seam_matrix = 合并 当前小矩阵的最后一列 和 下一个小矩阵的第一列(按列合并)\n            将 seam_matrix 添加到 row_seams 中\n        将 row_seams 添加到 seam_matrices_cols 中\n\n    # 第三拆分方法:取相邻行的小矩阵进行垂直拼接\n    初始化 seam_matrices_rows 为一个空列表\n    对于 i 从 0(行的小矩阵数量 - 2)\n        初始化 row_seams 为一个空列表\n        对于 j 从 0(列的小矩阵数量 - 1)\n            获取当前行的小矩阵和下一行的小矩阵\n            top_matrix = 当前行的小矩阵[j]\n            bottom_matrix = 下一行的小矩阵[j]\n            拼接 top_matrix 的最后一行和 bottom_matrix 的第一行\n            seam_matrix = 合并 top_matrix 的最后一行 和 bottom_matrix 的第一行(按行合并)\n            将 seam_matrix 添加到 row_seams 中\n        将 row_seams 添加到 seam_matrices_rows 中\n\n    # 将拆分结果存储到对象属性中\n    self.small_matrices = small_matrices\n    self.seam_matrices_cols = seam_matrices_cols\n    self.seam_matrices_rows = seam_matrices_rows
\n\n
\n

根据我的观察,如果你写了伪代码,在GPT的帮助下,它既可以是python也可以是C++,甚至可以是Java。它既可以是面向对象的,也可以是函数式的。你可以把更多的时间花在思考上,而不是写代码上。 算法上的革新带来的进步,远比你写代码tricks带来的进步要大。

\n

再者,正如笑容不会消失,笑容只会从一个人的脸上转移到另一个人的脸上。复杂性也是一样的,复杂性不会消失,复杂性只会从这里转移到那里。在这里,我们可以尝试把复杂性转移到机器上。很多优秀的工程师都有这样的习惯,把代码写的像诗一样的优雅,充满了各种隐喻、抽象。也正是这个原因,维护自然语言的伪代码的复杂性,远比你维护代码的复杂性要低。

\n

第三部分:怎么让GPT整点复杂的东西?

\n
\n

提示

\n

诚然,大语言模型的技术一直在进步,但是,受限于其上下文能力,基于效率上的考虑,我们应该尝试把真实的工程进行模块化、结构化。

\n
\n

这一点和完成一个大型工程一摸一样

\n
\n

GPT先天的适合增量更新的模式,为了春分利用这一点,需要作为“架构师”的你首先对你的工程进行定义。

\n
\n
\n

提示

\n

确保模块间的解耦,有些时候你会想用不同的大模型来完成不同的模块。

\n
\n
\n

你可以参考下面的步骤来定义你的模块。

\n
\n

3.1 定义互相解耦的模块

\n
    \n
  1. 模块划分原则\n
      \n
    • 高内聚低耦合
    • \n
    • 明确的接口和责任
    • \n
    \n
  2. \n
  3. 识别关键功能模块\n
      \n
    • 功能分解的方法
    • \n
    • 示例:将一个Web应用划分为前端、后端、数据库等模块
    • \n
    \n
  4. \n
  5. 接口设计\n
      \n
    • 模块间通信的标准
    • \n
    • 使用API和协议确保模块独立性
    • \n
    \n
  6. \n
\n

3.2 模块化的实施步骤

\n
    \n
  1. 需求分析与功能分解\n
      \n
    • 收集和分析项目需求
    • \n
    • 将需求转化为功能模块
    • \n
    \n
  2. \n
  3. 模块设计与规划\n
      \n
    • 为每个模块制定详细设计
    • \n
    • 确定模块之间的依赖关系
    • \n
    \n
  4. \n
  5. 逐个模块的开发与测试\n
      \n
    • 按照规划顺序开发模块
    • \n
    • 独立测试每个模块的功能和性能
    • \n
    \n
  6. \n
  7. 集成与系统测试\n
      \n
    • 将各模块集成到整体系统中
    • \n
    • 进行系统级别的测试和优化
    • \n
    \n
  8. \n
\n

3.3 利用GPT进行模块化开发

\n

1. 分块粘贴伪代码

\n

作为结论

\n

实践:让我们在这里引入一个具体的例子

\n
\n

提示

\n

我利用刚刚例子中的伪代码和拆分模块的思想制作了promote,你可以在这里看到完整的上下文信息。

\n
\n

我创建了chatGPT(o1-mini模型)分享链接,点击链接,你可以在这里看到一个完整的例子。

\n
\n
\n
\n

重要

\n

我们实际上做了什么?

\n
    \n
  • \n

    1. 复制对GPT输入代码风格化的要求

    \n
  • \n
  • \n

    --->>> 2. 编写包含你所有的要求和想法的伪代码

    \n
  • \n
  • \n

    --------->>> 3. 拆分伪代码,分模块实现

    \n
  • \n
\n
\n
\n

具体的(注意代码块右侧的复制按钮):

\n
\n\n

代码的运行效果

\n
\n

仔细看看下面的代码,这就是你加上o1-mini的能力

\n
\n\n

结语

\n
\n

我必须在这里重申 “AI放大了人类的能力边界”,代码的最终结果极大的取决于 “人的思考” 的质量。

\n
\n

在这里,我推荐书籍《人月神话》wiki,虽然此书是写于1975年,但数十年来多次重印。书中对软件工程的思考,对软件开发中人的因素的思考,非常值得阅读。

\n

over

\n","env":{"base":"/WDL_Tools_docs/","filePath":"/Users/hughes/docs/WDL_Tools_docs/docs/notes/04_codeStyle/meandAI.md","filePathRelative":"notes/04_codeStyle/meandAI.md","frontmatter":{"title":"人工智能协助代码开发","createTime":"2024/11/07 14:45:46","permalink":"/04_codeStyle/meandAI/"},"sfcBlocks":{"template":{"type":"template","content":"","contentStripped":"

快速实现

\n
    \n
  • \n

    1. 复制对GPT输入代码风格化的要求

    \n
  • \n
  • \n

    --->>> 2. 编写包含你所有的要求和想法的伪代码

    \n
  • \n
  • \n

    --------->>> 3. 拆分伪代码,分模块实现

    \n
  • \n
\n

完整示例

\n

点击看chatgpt o1-mini模型的开发示例

\n

引言

\n
\n

本文通过几个例子展示了用GPT敲代码的几个模式,您需要确保您的键盘具有Ctrl键、C键、V键。

\n
\n
\n

受文本长度限制,本文尽量不对任何内容的驱动原理做出解释。

\n
\n

读者应该明确

\n
\n

\n
    \n
  1. 工程控制论正在推动电子计算机技术革命的深入。这样一个现实已经来到了人类面前: 由电子计算机和机器智能装备起来的人,已经成为更有作为、更高超的人! ———钱学森 《工程控制论·序言》
  2. \n
  3. 君子不器。 ———孔子《论语·为政篇》
  4. \n
  5. “值得怀疑的是,一切已有的机械发明,是否减轻了任何人每天的辛劳。” ———约翰·斯图亚特·穆勒《政治经济学原理》
  6. \n
\n
\n
\n

重要

\n

AI放大了人类的能力边界,但社会生活的主体依然是自然人。

\n
\n

第一部分:对GPT输入代码风格化的要求

\n
\n

跟我复制

\n
\n
\n

如果你有一些类似于“整洁代码”的偏好,或者你有明确的编程习惯,请在进行代码产出时,明确告诉GPT,如同下面的文本所示。

\n
\n
You are an advanced AI model designed to solve complex programming challenges by applying a combination of sophisticated reasoning techniques. To ensure your code outputs are technically precise, secure, efficient, and well-documented, follow these structured instructions:\n\nBreak Down the Coding Task:\n\nBegin by applying Chain of Thought (CoT) reasoning to decompose the programming task into logical, manageable components. Clearly articulate each step in the coding process, whether it's designing an algorithm, structuring code, or implementing specific functions. Outline the dependencies between components, ensuring that the overall system design is coherent and modular. Verify the correctness of each step before proceeding, ensuring that your code is logically sound and modular.\n\nRationalize Each Coding Decision:\n\nAs you develop the code, use Step-by-Step Rationalization (STaR) to provide clear, logical justifications for every decision made during the coding process. Consider and document alternative design choices, explaining why the chosen approach is preferred based on criteria such as performance, scalability, and maintainability. Ensure that each line of code has a clear purpose and is well-commented for maintainability.\n\nOptimize Code for Efficiency and Reliability:\n\nIncorporate A Search principles* to evaluate and optimize the efficiency of your code. Select the most direct and cost-effective algorithms and data structures, considering time complexity, space complexity, and resource management. Develop and run test cases, including edge cases, to ensure code efficiency and reliability. Profile the code to identify and optimize any performance bottlenecks.\n\nConsider and Evaluate Multiple Code Solutions:\n\nLeverage Tree of Thoughts (ToT) to explore different coding approaches and solutions in parallel. Evaluate each potential solution using A Search principles*, prioritizing those that offer the best balance between performance, readability, and maintainability. Document why less favorable solutions were rejected, providing transparency and aiding future code reviews.\n\nSimulate Adaptive Learning in Coding:\n\nReflect on your coding decisions throughout the session as if you were learning from each outcome. Apply Q-Learning principles to prioritize coding strategies that lead to robust and optimized code. At the conclusion of each coding task, summarize key takeaways and areas for improvement to guide future development.\n\nContinuously Monitor and Refine Your Coding Process:\n\nEngage in Process Monitoring to continuously assess the progress of your coding task. Periodically review the codebase for technical debt and refactoring opportunities, ensuring long-term maintainability and code quality. Ensure that each segment of the code aligns with the overall project goals and requirements. Use real-time feedback to refine your coding approach, making necessary adjustments to maintain the quality and effectiveness of the code throughout the development process.\n\nIncorporate Security Best Practices:\n\nApply security best practices, including input validation, encryption, and secure coding techniques, to safeguard against vulnerabilities. Ensure that the code is robust against common security threats.\n\nHighlight Code Readability:\n\nPrioritize code readability by using clear variable names, consistent formatting, and logical organization. Ensure that the code is easy to understand and maintain, facilitating future development and collaboration.\n\nInclude Collaboration Considerations:\n\nConsider how the code will be used and understood by other developers. Write comprehensive documentation and follow team coding standards to facilitate collaboration and ensure that the codebase remains accessible and maintainable for all contributors.\n\nFinal Instruction:\n\nBy following these instructions, you will ensure that your coding approach is methodical, well-reasoned, and optimized for technical precision and efficiency. Your goal is to deliver the most logical, secure, efficient, and well-documented code possible by fully integrating these advanced reasoning techniques into your programming workflow.
\n\n

第二部分:把你的想法转换为伪代码或类似的逻辑描述

\n

📏范式

\n

常见的范式有:

\n
    \n
  • 命令式编程(Imperative Programming)\n程序由一系列的命令或语句组成,计算机按照这些命令执行操作。这是最早也是最基本的编程范式。典型代表:C 和 Java
  • \n
  • 声明式编程(Declarative Programming):程序员只需要描述他们想要的结果,而不需要详细说明如何达到这个结果。典型代表:SQL 和 HTML
  • \n
  • 面向对象编程(Object-Oriented Programming):程序被组织成对象,每个对象都包含数据和操作数据的方法。面向对象编程强调的是数据抽象和封装,以及对象之间的交互。典型代表:Java 和 Python
  • \n
\n

为什么需要伪代码?

\n

回想一下🤔,当我们和GPT之类的产品进行交互时,我们的交互方式大致上有两类:\n举个例子,当我需要让GPT帮我写一个算法时,我可能会:

\n

第一种交互方式

\n
\n

“我需要你写一段代码,这段代码第一行是def,然后是函数名,然后是3个参数,然后是四行函数体。函数体中需要有return。它第一行是……最后一行是……。”

\n
\n

这是一种典型的命令式交互,非常好使。

\n

第二种交互方式

\n
\n

“直接说,我需要一个算法,这个算法需要满足以下要求:……”

\n
\n

这是一种典型的声明式交互,主要关注结果的描述和需求,而不需要详细说明如何达到这个结果。

\n
\n

警告

\n

声明式交互在代码实现上具有更大的风险,尤其是你缺乏对代码的深入理解时,比如李逵和李鬼:

\n

\"Alt

\n
\n
\n

重要

\n
    \n
  • \n

    这里最核心的逻辑是,你和GPT之间的信息越一致,那么你得到的代码就越符合你的预期。

    \n
  • \n
  • \n

    正是基于这个逻辑,我们才需要在第二步进行伪代码交互

    \n
  • \n
\n
\n

伪代码的交互

\n

我提供一个比较极端的例子,假设你想要一个按照一定规则拆分矩阵的代码,并把结果存在你的类中,你和GPT的交互的伪代码如下:

\n
定义函数 ():\n\n    寻找矩阵的因数(n):\n        对于 i 从 4 到 n(包含 n):\n            如果 n 能被 i 整除:\n                返回 i\n        返回 n  # 如果没有找到因数,返回 n 本身\n\n    获取矩阵的行数和列数:\n        rows, cols = 矩阵的形状\n\n    找到大于 3 的最小因数:\n        row_factor = smallest_factor_greater_than_three(rows)\n        col_factor = smallest_factor_greater_than_three(cols)\n\n    # 第一拆分方法:按因数拆分行和列\n    将矩阵按行拆分为多个子矩阵:\n        row_split = 按 row_factor 将矩阵垂直拆分\n    将每个子矩阵按列拆分为更小的矩阵:\n        small_matrices = 对于每个 sub_matrix 在 row_split 中,按 col_factor 水平拆分\n\n    # 第二拆分方法:取相邻列的接缝区域\n    初始化 seam_matrices_cols 为一个空列表\n    对于 每个 row_matrices 在 small_matrices 中(按行遍历):\n        初始化 row_seams 为一个空列表\n        对于 j 从 0(小矩阵数量 - 2)\n            获取当前小矩阵的最后一列和下一个小矩阵的第一列\n            seam_matrix = 合并 当前小矩阵的最后一列 和 下一个小矩阵的第一列(按列合并)\n            将 seam_matrix 添加到 row_seams 中\n        将 row_seams 添加到 seam_matrices_cols 中\n\n    # 第三拆分方法:取相邻行的小矩阵进行垂直拼接\n    初始化 seam_matrices_rows 为一个空列表\n    对于 i 从 0(行的小矩阵数量 - 2)\n        初始化 row_seams 为一个空列表\n        对于 j 从 0(列的小矩阵数量 - 1)\n            获取当前行的小矩阵和下一行的小矩阵\n            top_matrix = 当前行的小矩阵[j]\n            bottom_matrix = 下一行的小矩阵[j]\n            拼接 top_matrix 的最后一行和 bottom_matrix 的第一行\n            seam_matrix = 合并 top_matrix 的最后一行 和 bottom_matrix 的第一行(按行合并)\n            将 seam_matrix 添加到 row_seams 中\n        将 row_seams 添加到 seam_matrices_rows 中\n\n    # 将拆分结果存储到对象属性中\n    self.small_matrices = small_matrices\n    self.seam_matrices_cols = seam_matrices_cols\n    self.seam_matrices_rows = seam_matrices_rows
\n\n
\n

根据我的观察,如果你写了伪代码,在GPT的帮助下,它既可以是python也可以是C++,甚至可以是Java。它既可以是面向对象的,也可以是函数式的。你可以把更多的时间花在思考上,而不是写代码上。 算法上的革新带来的进步,远比你写代码tricks带来的进步要大。

\n

再者,正如笑容不会消失,笑容只会从一个人的脸上转移到另一个人的脸上。复杂性也是一样的,复杂性不会消失,复杂性只会从这里转移到那里。在这里,我们可以尝试把复杂性转移到机器上。很多优秀的工程师都有这样的习惯,把代码写的像诗一样的优雅,充满了各种隐喻、抽象。也正是这个原因,维护自然语言的伪代码的复杂性,远比你维护代码的复杂性要低。

\n

第三部分:怎么让GPT整点复杂的东西?

\n
\n

提示

\n

诚然,大语言模型的技术一直在进步,但是,受限于其上下文能力,基于效率上的考虑,我们应该尝试把真实的工程进行模块化、结构化。

\n
\n

这一点和完成一个大型工程一摸一样

\n
\n

GPT先天的适合增量更新的模式,为了春分利用这一点,需要作为“架构师”的你首先对你的工程进行定义。

\n
\n
\n

提示

\n

确保模块间的解耦,有些时候你会想用不同的大模型来完成不同的模块。

\n
\n
\n

你可以参考下面的步骤来定义你的模块。

\n
\n

3.1 定义互相解耦的模块

\n
    \n
  1. 模块划分原则\n
      \n
    • 高内聚低耦合
    • \n
    • 明确的接口和责任
    • \n
    \n
  2. \n
  3. 识别关键功能模块\n
      \n
    • 功能分解的方法
    • \n
    • 示例:将一个Web应用划分为前端、后端、数据库等模块
    • \n
    \n
  4. \n
  5. 接口设计\n
      \n
    • 模块间通信的标准
    • \n
    • 使用API和协议确保模块独立性
    • \n
    \n
  6. \n
\n

3.2 模块化的实施步骤

\n
    \n
  1. 需求分析与功能分解\n
      \n
    • 收集和分析项目需求
    • \n
    • 将需求转化为功能模块
    • \n
    \n
  2. \n
  3. 模块设计与规划\n
      \n
    • 为每个模块制定详细设计
    • \n
    • 确定模块之间的依赖关系
    • \n
    \n
  4. \n
  5. 逐个模块的开发与测试\n
      \n
    • 按照规划顺序开发模块
    • \n
    • 独立测试每个模块的功能和性能
    • \n
    \n
  6. \n
  7. 集成与系统测试\n
      \n
    • 将各模块集成到整体系统中
    • \n
    • 进行系统级别的测试和优化
    • \n
    \n
  8. \n
\n

3.3 利用GPT进行模块化开发

\n

1. 分块粘贴伪代码

\n

作为结论

\n

实践:让我们在这里引入一个具体的例子

\n
\n

提示

\n

我利用刚刚例子中的伪代码和拆分模块的思想制作了promote,你可以在这里看到完整的上下文信息。

\n
\n

我创建了chatGPT(o1-mini模型)分享链接,点击链接,你可以在这里看到一个完整的例子。

\n
\n
\n
\n

重要

\n

我们实际上做了什么?

\n
    \n
  • \n

    1. 复制对GPT输入代码风格化的要求

    \n
  • \n
  • \n

    --->>> 2. 编写包含你所有的要求和想法的伪代码

    \n
  • \n
  • \n

    --------->>> 3. 拆分伪代码,分模块实现

    \n
  • \n
\n
\n
\n

具体的(注意代码块右侧的复制按钮):

\n
\n\n

代码的运行效果

\n
\n

仔细看看下面的代码,这就是你加上o1-mini的能力

\n
\n\n

结语

\n
\n

我必须在这里重申 “AI放大了人类的能力边界”,代码的最终结果极大的取决于 “人的思考” 的质量。

\n
\n

在这里,我推荐书籍《人月神话》wiki,虽然此书是写于1975年,但数十年来多次重印。书中对软件工程的思考,对软件开发中人的因素的思考,非常值得阅读。

\n

over

\n","tagOpen":""},"script":null,"scriptSetup":null,"scripts":[],"styles":[],"customBlocks":[]},"content":"## 快速实现\n\n- **1. 复制对GPT输入代码风格化的要求**\n\n- **--->>> 2. 编写包含你所有的要求和想法的伪代码**\n\n- **--------->>> 3. 拆分伪代码,分模块实现**\n\n### 完整示例\n[点击看chatgpt o1-mini模型的开发示例](https://chatgpt.com/share/66e56444-484d-484d-984d-484d484d484d)\n\n\n## 引言\n\n> 本文通过几个例子展示了用GPT敲代码的几个模式,您需要确保您的键盘具有Ctrl键、C键、V键。\n\n> 受文本长度限制,本文尽量不对任何内容的驱动原理做出解释。\n\n#### 读者应该明确\n> [!note]\n> 1. **工程控制论正在推动电子计算机技术革命的深入。这样一个现实已经来到了人类面前: 由电子计算机和机器智能装备起来的人,已经成为更有作为、更高超的人! ———钱学森 《工程控制论·序言》**\n> 2. **君子不器。 ———孔子《论语·为政篇》**\n> 3. **[“值得怀疑的是,一切已有的机械发明,是否减轻了任何人每天的辛劳。”](https://www.marxists.org/chinese/marx-engels-2/44/019.htm) ———约翰·斯图亚特·穆勒《政治经济学原理》**\n\n::: important 重要\nAI放大了人类的能力边界,但社会生活的主体依然是自然人。\n:::\n\n## 第一部分:对GPT输入代码风格化的要求\n\n> 跟我复制\n\n> 如果你有一些类似于“整洁代码”的偏好,或者你有明确的编程习惯,请在进行代码产出时,明确告诉GPT,如同下面的文本所示。\n\n```txt :collapsed-lines=8\nYou are an advanced AI model designed to solve complex programming challenges by applying a combination of sophisticated reasoning techniques. To ensure your code outputs are technically precise, secure, efficient, and well-documented, follow these structured instructions:\n\nBreak Down the Coding Task:\n\nBegin by applying Chain of Thought (CoT) reasoning to decompose the programming task into logical, manageable components. Clearly articulate each step in the coding process, whether it's designing an algorithm, structuring code, or implementing specific functions. Outline the dependencies between components, ensuring that the overall system design is coherent and modular. Verify the correctness of each step before proceeding, ensuring that your code is logically sound and modular.\n\nRationalize Each Coding Decision:\n\nAs you develop the code, use Step-by-Step Rationalization (STaR) to provide clear, logical justifications for every decision made during the coding process. Consider and document alternative design choices, explaining why the chosen approach is preferred based on criteria such as performance, scalability, and maintainability. Ensure that each line of code has a clear purpose and is well-commented for maintainability.\n\nOptimize Code for Efficiency and Reliability:\n\nIncorporate A Search principles* to evaluate and optimize the efficiency of your code. Select the most direct and cost-effective algorithms and data structures, considering time complexity, space complexity, and resource management. Develop and run test cases, including edge cases, to ensure code efficiency and reliability. Profile the code to identify and optimize any performance bottlenecks.\n\nConsider and Evaluate Multiple Code Solutions:\n\nLeverage Tree of Thoughts (ToT) to explore different coding approaches and solutions in parallel. Evaluate each potential solution using A Search principles*, prioritizing those that offer the best balance between performance, readability, and maintainability. Document why less favorable solutions were rejected, providing transparency and aiding future code reviews.\n\nSimulate Adaptive Learning in Coding:\n\nReflect on your coding decisions throughout the session as if you were learning from each outcome. Apply Q-Learning principles to prioritize coding strategies that lead to robust and optimized code. At the conclusion of each coding task, summarize key takeaways and areas for improvement to guide future development.\n\nContinuously Monitor and Refine Your Coding Process:\n\nEngage in Process Monitoring to continuously assess the progress of your coding task. Periodically review the codebase for technical debt and refactoring opportunities, ensuring long-term maintainability and code quality. Ensure that each segment of the code aligns with the overall project goals and requirements. Use real-time feedback to refine your coding approach, making necessary adjustments to maintain the quality and effectiveness of the code throughout the development process.\n\nIncorporate Security Best Practices:\n\nApply security best practices, including input validation, encryption, and secure coding techniques, to safeguard against vulnerabilities. Ensure that the code is robust against common security threats.\n\nHighlight Code Readability:\n\nPrioritize code readability by using clear variable names, consistent formatting, and logical organization. Ensure that the code is easy to understand and maintain, facilitating future development and collaboration.\n\nInclude Collaboration Considerations:\n\nConsider how the code will be used and understood by other developers. Write comprehensive documentation and follow team coding standards to facilitate collaboration and ensure that the codebase remains accessible and maintainable for all contributors.\n\nFinal Instruction:\n\nBy following these instructions, you will ensure that your coding approach is methodical, well-reasoned, and optimized for technical precision and efficiency. Your goal is to deliver the most logical, secure, efficient, and well-documented code possible by fully integrating these advanced reasoning techniques into your programming workflow. \n```\n\n## 第二部分:把你的想法转换为伪代码或类似的逻辑描述\n\n### 📏范式\n\n常见的范式有:\n- ==命令式编程(Imperative Programming)==\n 程序由一系列的命令或语句组成,计算机按照这些命令执行操作。这是最早也是最基本的编程范式。典型代表:C 和 Java\n - ==声明式编程(Declarative Programming)==:程序员只需要描述他们想要的结果,而不需要详细说明如何达到这个结果。典型代表:SQL 和 HTML \n - ==面向对象编程(Object-Oriented Programming)==:程序被组织成对象,每个对象都包含数据和操作数据的方法。面向对象编程强调的是数据抽象和封装,以及对象之间的交互。典型代表:Java 和 Python\n\n### 为什么需要伪代码?\n\n回想一下🤔,当我们和GPT之类的产品进行交互时,我们的交互方式大致上有两类:\n举个例子,当我需要让GPT帮我写一个算法时,我可能会:\n#### 第一种交互方式\n> “我需要你写一段代码,这段代码第一行是`def`,然后是函数名,然后是3个参数,然后是四行函数体。函数体中需要有`return`。它第一行是……最后一行是……。”\n\n这是一种典型的命令式交互,非常好使。\n\n#### 第二种交互方式\n> “直接说,我需要一个算法,这个算法需要满足以下要求:……”\n\n这是一种典型的声明式交互,主要关注结果的描述和需求,而不需要详细说明如何达到这个结果。\n\n::: warning 警告\n\n声明式交互在代码实现上具有更大的风险,尤其是==你缺乏对代码的深入理解时==,比如李逵和李鬼:\n\n![Alt text](http://k.sinaimg.cn/n/sinacn/w500h229/20180102/7226-fyqefvx1303978.jpg/w700d1q75cms.jpg?by=cms_fixed_width)\n:::\n\n::: important 重要\n\n- 这里最**核心的逻辑**是,你和GPT之间的信息越一致,那么你得到的代码就越符合你的预期。\n\n- 正是基于这个逻辑,我们才需要在第二步进行==伪代码交互==。\n\n:::\n\n#### 伪代码的交互\n\n我提供一个比较极端的例子,假设你想要一个按照一定规则拆分矩阵的代码,并把结果存在你的类中,你和GPT的交互的伪代码如下:\n\n```python\n定义函数 ():\n\n 寻找矩阵的因数(n):\n 对于 i 从 4 到 n(包含 n):\n 如果 n 能被 i 整除:\n 返回 i\n 返回 n # 如果没有找到因数,返回 n 本身\n\n 获取矩阵的行数和列数:\n rows, cols = 矩阵的形状\n\n 找到大于 3 的最小因数:\n row_factor = smallest_factor_greater_than_three(rows)\n col_factor = smallest_factor_greater_than_three(cols)\n\n # 第一拆分方法:按因数拆分行和列\n 将矩阵按行拆分为多个子矩阵:\n row_split = 按 row_factor 将矩阵垂直拆分\n 将每个子矩阵按列拆分为更小的矩阵:\n small_matrices = 对于每个 sub_matrix 在 row_split 中,按 col_factor 水平拆分\n\n # 第二拆分方法:取相邻列的接缝区域\n 初始化 seam_matrices_cols 为一个空列表\n 对于 每个 row_matrices 在 small_matrices 中(按行遍历):\n 初始化 row_seams 为一个空列表\n 对于 j 从 0 到 (小矩阵数量 - 2):\n 获取当前小矩阵的最后一列和下一个小矩阵的第一列\n seam_matrix = 合并 当前小矩阵的最后一列 和 下一个小矩阵的第一列(按列合并)\n 将 seam_matrix 添加到 row_seams 中\n 将 row_seams 添加到 seam_matrices_cols 中\n\n # 第三拆分方法:取相邻行的小矩阵进行垂直拼接\n 初始化 seam_matrices_rows 为一个空列表\n 对于 i 从 0 到 (行的小矩阵数量 - 2):\n 初始化 row_seams 为一个空列表\n 对于 j 从 0 到 (列的小矩阵数量 - 1):\n 获取当前行的小矩阵和下一行的小矩阵\n top_matrix = 当前行的小矩阵[j]\n bottom_matrix = 下一行的小矩阵[j]\n 拼接 top_matrix 的最后一行和 bottom_matrix 的第一行\n seam_matrix = 合并 top_matrix 的最后一行 和 bottom_matrix 的第一行(按行合并)\n 将 seam_matrix 添加到 row_seams 中\n 将 row_seams 添加到 seam_matrices_rows 中\n\n # 将拆分结果存储到对象属性中\n self.small_matrices = small_matrices\n self.seam_matrices_cols = seam_matrices_cols\n self.seam_matrices_rows = seam_matrices_rows\n```\n\n::: tip 提示\n### 🙋好,那么好,这时候聪明的你就要问了:\n> # “我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\n\n:::\n\n根据我的观察,如果你写了伪代码,在GPT的帮助下,它既可以是python也可以是C++,甚至可以是Java。它既可以是面向对象的,也可以是函数式的。==你可以把更多的时间花在思考上,而不是写代码上。== 算法上的革新带来的进步,远比你写代码tricks带来的进步要大。\n\n再者,正如笑容不会消失,笑容只会从一个人的脸上转移到另一个人的脸上。复杂性也是一样的,复杂性不会消失,复杂性只会从这里转移到那里。在这里,我们可以尝试把复杂性转移到机器上。很多优秀的工程师都有这样的习惯,把代码写的像诗一样的优雅,充满了各种隐喻、抽象。也正是这个原因,维护自然语言的伪代码的复杂性,远比你维护代码的复杂性要低。\n\n## 第三部分:怎么让GPT整点复杂的东西?\n\n::: tip 提示\n诚然,大语言模型的技术一直在进步,但是,受限于其上下文能力,基于效率上的考虑,我们应该尝试把真实的工程进行模块化、结构化。\n:::\n\n### 这一点和完成一个大型工程一摸一样\n\n> GPT先天的适合增量更新的模式,为了春分利用这一点,需要作为“架构师”的你首先对你的工程进行定义。\n\n::: tip 提示\n确保模块间的解耦,有些时候你会想用不同的大模型来完成不同的模块。\n:::\n\n> 你可以参考下面的步骤来定义你的模块。\n\n### **3.1 定义互相解耦的模块**\n1. **模块划分原则**\n - 高内聚低耦合\n - 明确的接口和责任\n2. **识别关键功能模块**\n - 功能分解的方法\n - 示例:将一个Web应用划分为前端、后端、数据库等模块\n3. **接口设计**\n - 模块间通信的标准\n - 使用API和协议确保模块独立性\n\n### **3.2 模块化的实施步骤**\n1. **需求分析与功能分解**\n - 收集和分析项目需求\n - 将需求转化为功能模块\n2. **模块设计与规划**\n - 为每个模块制定详细设计\n - 确定模块之间的依赖关系\n3. **逐个模块的开发与测试**\n - 按照规划顺序开发模块\n - 独立测试每个模块的功能和性能\n4. **集成与系统测试**\n - 将各模块集成到整体系统中\n - 进行系统级别的测试和优化\n\n### **3.3 利用GPT进行模块化开发**\n\n#### 1. 分块粘贴伪代码\n\n## 作为结论\n\n### 实践:让我们在这里引入一个具体的例子\n\n::: tip 提示\n我利用刚刚例子中的伪代码和拆分模块的思想制作了promote,你可以在这里看到完整的上下文信息。\n> 我创建了chatGPT(o1-mini模型)[分享链接](https://chatgpt.com/share/66e56444-484d-484d-984d-484d484d484d),点击链接,你可以在这里看到一个完整的例子。\n:::\n\n::: important 重要\n\n### 我们实际上做了什么?\n\n- **1. 复制对GPT输入代码风格化的要求**\n\n- **--->>> 2. 编写包含你所有的要求和想法的伪代码**\n\n- **--------->>> 3. 拆分伪代码,分模块实现**\n\n:::\n\n> ==具体的==(注意代码块右侧的复制按钮):\n::: tabs\n\n@tab 1/5 复制\n\n==这里同上==\n```txt :collapsed-lines=8\nYou are an advanced AI model designed to solve complex programming challenges by applying a combination of sophisticated reasoning techniques. To ensure your code outputs are technically precise, secure, efficient, and well-documented, follow these structured instructions:\n\nBreak Down the Coding Task:\n\nBegin by applying Chain of Thought (CoT) reasoning to decompose the programming task into logical, manageable components. Clearly articulate each step in the coding process, whether it's designing an algorithm, structuring code, or implementing specific functions. Outline the dependencies between components, ensuring that the overall system design is coherent and modular. Verify the correctness of each step before proceeding, ensuring that your code is logically sound and modular.\n\nRationalize Each Coding Decision:\n\nAs you develop the code, use Step-by-Step Rationalization (STaR) to provide clear, logical justifications for every decision made during the coding process. Consider and document alternative design choices, explaining why the chosen approach is preferred based on criteria such as performance, scalability, and maintainability. Ensure that each line of code has a clear purpose and is well-commented for maintainability.\n\nOptimize Code for Efficiency and Reliability:\n\nIncorporate A Search principles* to evaluate and optimize the efficiency of your code. Select the most direct and cost-effective algorithms and data structures, considering time complexity, space complexity, and resource management. Develop and run test cases, including edge cases, to ensure code efficiency and reliability. Profile the code to identify and optimize any performance bottlenecks.\n\nConsider and Evaluate Multiple Code Solutions:\n\nLeverage Tree of Thoughts (ToT) to explore different coding approaches and solutions in parallel. Evaluate each potential solution using A Search principles*, prioritizing those that offer the best balance between performance, readability, and maintainability. Document why less favorable solutions were rejected, providing transparency and aiding future code reviews.\n\nSimulate Adaptive Learning in Coding:\n\nReflect on your coding decisions throughout the session as if you were learning from each outcome. Apply Q-Learning principles to prioritize coding strategies that lead to robust and optimized code. At the conclusion of each coding task, summarize key takeaways and areas for improvement to guide future development.\n\nContinuously Monitor and Refine Your Coding Process:\n\nEngage in Process Monitoring to continuously assess the progress of your coding task. Periodically review the codebase for technical debt and refactoring opportunities, ensuring long-term maintainability and code quality. Ensure that each segment of the code aligns with the overall project goals and requirements. Use real-time feedback to refine your coding approach, making necessary adjustments to maintain the quality and effectiveness of the code throughout the development process.\n\nIncorporate Security Best Practices:\n\nApply security best practices, including input validation, encryption, and secure coding techniques, to safeguard against vulnerabilities. Ensure that the code is robust against common security threats.\n\nHighlight Code Readability:\n\nPrioritize code readability by using clear variable names, consistent formatting, and logical organization. Ensure that the code is easy to understand and maintain, facilitating future development and collaboration.\n\nInclude Collaboration Considerations:\n\nConsider how the code will be used and understood by other developers. Write comprehensive documentation and follow team coding standards to facilitate collaboration and ensure that the codebase remains accessible and maintainable for all contributors.\n\nFinal Instruction:\n\nBy following these instructions, you will ensure that your coding approach is methodical, well-reasoned, and optimized for technical precision and efficiency. Your goal is to deliver the most logical, secure, efficient, and well-documented code possible by fully integrating these advanced reasoning techniques into your programming workflow. \n```\n\n@tab 2/5 编写伪代码\n\n==这里同上==\n\n```python :collapsed-lines=10\n定义函数 ():\n\n 寻找矩阵的因数(n):\n 对于 i 从 4 到 n(包含 n):\n 如果 n 能被 i 整除:\n 返回 i\n 返回 n # 如果没有找到因数,返回 n 本身\n\n 获取矩阵的行数和列数:\n rows, cols = 矩阵的形状\n\n 找到大于 3 的最小因数:\n row_factor = smallest_factor_greater_than_three(rows)\n col_factor = smallest_factor_greater_than_three(cols)\n\n # 第一拆分方法:按因数拆分行和列\n 将矩阵按行拆分为多个子矩阵:\n row_split = 按 row_factor 将矩阵垂直拆分\n 将每个子矩阵按列拆分为更小的矩阵:\n small_matrices = 对于每个 sub_matrix 在 row_split 中,按 col_factor 水平拆分\n\n # 第二拆分方法:取相邻列的接缝区域\n 初始化 seam_matrices_cols 为一个空列表\n 对于 每个 row_matrices 在 small_matrices 中(按行遍历):\n 初始化 row_seams 为一个空列表\n 对于 j 从 0 到 (小矩阵数量 - 2):\n 获取当前小矩阵的最后一列和下一个小矩阵的第一列\n seam_matrix = 合并 当前小矩阵的最后一列 和 下一个小矩阵的第一列(按列合并)\n 将 seam_matrix 添加到 row_seams 中\n 将 row_seams 添加到 seam_matrices_cols 中\n\n # 第三拆分方法:取相邻行的小矩阵进行垂直拼接\n 初始化 seam_matrices_rows 为一个空列表\n 对于 i 从 0 到 (行的小矩阵数量 - 2):\n 初始化 row_seams 为一个空列表\n 对于 j 从 0 到 (列的小矩阵数量 - 1):\n 获取当前行的小矩阵和下一行的小矩阵\n top_matrix = 当前行的小矩阵[j]\n bottom_matrix = 下一行的小矩阵[j]\n 拼接 top_matrix 的最后一行和 bottom_matrix 的第一行\n seam_matrix = 合并 top_matrix 的最后一行 和 bottom_matrix 的第一行(按行合并)\n 将 seam_matrix 添加到 row_seams 中\n 将 row_seams 添加到 seam_matrices_rows 中\n\n # 将拆分结果存储到对象属性中\n self.small_matrices = small_matrices\n self.seam_matrices_cols = seam_matrices_cols\n self.seam_matrices_rows = seam_matrices_rows”。 最终的交付形式为可以独立运行的python脚本,捕获用户输入的两个数字作为矩阵的尺寸。\n```\n\n@tab:active 3/5 先主体\n\n==这里我们分块实现==\n\n#### **主体部分**\n\n我构思了一个矩阵拆分的算法,我定义我的模块有:0 验证用户的输入是否合适我们的拆分方法:如是否可以进行因式分解;1 生成矩阵;2 对矩阵进行拆分;3 把拆分后的矩阵和原有的矩阵在一张图片上叠加显示,着重显示拆分矩阵的边界。注意:技术选型为python3。我定义了第2部分的伪代码,代码如下“\n\n```python :collapsed-lines=5\n定义函数 ():\n\n 寻找矩阵的因数(n):\n 对于 i 从 4 到 n(包含 n):\n 如果 n 能被 i 整除:\n 返回 i\n 返回 n # 如果没有找到因数,返回 n 本身\n\n 获取矩阵的行数和列数:\n rows, cols = 矩阵的形状\n\n 找到大于 3 的最小因数:\n row_factor = smallest_factor_greater_than_three(rows)\n col_factor = smallest_factor_greater_than_three(cols)\n\n # 第一拆分方法:按因数拆分行和列\n 将矩阵按行拆分为多个子矩阵:\n row_split = 按 row_factor 将矩阵垂直拆分\n 将每个子矩阵按列拆分为更小的矩阵:\n small_matrices = 对于每个 sub_matrix 在 row_split 中,按 col_factor 水平拆分\n\n # 第二拆分方法:取相邻列的接缝区域\n 初始化 seam_matrices_cols 为一个空列表\n 对于 每个 row_matrices 在 small_matrices 中(按行遍历):\n 初始化 row_seams 为一个空列表\n 对于 j 从 0 到 (小矩阵数量 - 2):\n 获取当前小矩阵的最后一列和下一个小矩阵的第一列\n seam_matrix = 合并 当前小矩阵的最后一列 和 下一个小矩阵的第一列(按列合并)\n 将 seam_matrix 添加到 row_seams 中\n 将 row_seams 添加到 seam_matrices_cols 中\n\n # 第三拆分方法:取相邻行的小矩阵进行垂直拼接\n 初始化 seam_matrices_rows 为一个空列表\n 对于 i 从 0 到 (行的小矩阵数量 - 2):\n 初始化 row_seams 为一个空列表\n 对于 j 从 0 到 (列的小矩阵数量 - 1):\n 获取当前行的小矩阵和下一行的小矩阵\n top_matrix = 当前行的小矩阵[j]\n bottom_matrix = 下一行的小矩阵[j]\n 拼接 top_matrix 的最后一行和 bottom_matrix 的第一行\n seam_matrix = 合并 top_matrix 的最后一行 和 bottom_matrix 的第一行(按行合并)\n 将 seam_matrix 添加到 row_seams 中\n 将 row_seams 添加到 seam_matrices_rows 中\n\n # 将拆分结果存储到对象属性中\n self.small_matrices = small_matrices\n self.seam_matrices_cols = seam_matrices_cols\n self.seam_matrices_rows = seam_matrices_rows\n```\n”。最终的交付形式为可以独立运行的python脚本,捕获用户输入的两个数字作为矩阵的尺寸。\n\n@tab:active 4/5 进一步进行限定\n#### **模块1**\n\n这里上面的提示词有些问题,我没有严格的定义可视化的方式,于是出现了问题。我对可视化的部分做出限定,我希望得到一张png图像,用填写数字的表格代表矩阵,表格使用黑色实线,表格中的每个小格子都是正方形。矩阵被切分的接缝处使用红色粗实线进行区分。\n\n#### **debug**\n\n我在运行这段代码的时候遇到了问题,详细的上下文信息是“ \n```shell\n% python test.py\n```\n\n```python :collapsed-lines=5\nMatrix Splitting Algorithm with Enhanced Visualization\n------------------------------------------------------\nEnter the number of rows and columns (e.g., '8 12'): 80 12\nGenerated matrix of size 80x12.\nRow factor: 4, Column factor: 4\nMatrix split into 20 row-wise submatrices.\nTotal small matrices after horizontal split: 60\nGenerated seam matrices for columns: 20 sets.\nTraceback (most recent call last):\n File \"/Users/hughes/docs/test.py\", line 195, in \n main()\n File \"/Users/hughes/docs/test.py\", line 191, in main\n splitter.split_matrix()\n File \"/Users/hughes/docs/test.py\", line 99, in split_matrix\n seam_matrix = np.vstack((top_matrix[-1, :].reshape(1, -1), bottom_matrix[0, :].reshape(1, -1)))\n ~~~~~~~~~~^^^^^^^\nIndexError: index -1 is out of bounds for axis 0 with size 0”\n``` \n\n@tab:active 5/5 插入功能点\n\n#### **模块2**\n\n非常好👍,下面我们再对可视化的部分进行功能点的新增,刚刚我们的代码实现了对于按列拆分时的可视化,我们在最终的图像上增加按行拆分矩阵时的线,用绿色的粗实线来表示。在绘图的部分外部套一个tqdm的进度展示,便于在终端中查阅进度。\n\n#### **最终结果**\n\n```python :collapsed-lines=10\n#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\n\"\"\"\nMatrix Splitting Algorithm with Enhanced Visualization\n\nThis script captures user input for matrix dimensions, validates the input,\ngenerates a matrix, splits it based on factorization, and visualizes the\noriginal and split matrices with clearly defined grid lines and highlighted\nsplit boundaries. The final visualization is saved as a PNG image.\n\nEnhancements:\n1. Added green thick lines to represent row splits.\n2. Incorporated tqdm progress bars to monitor plotting progress.\n\nAuthor: OpenAI ChatGPT\nDate: 2024-11-08\n\"\"\"\n\nimport sys\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom matplotlib.patches import Rectangle\nfrom tqdm import tqdm # Import tqdm for progress bars\n\nclass MatrixSplitter:\n def __init__(self, rows, cols):\n \"\"\"\n Initializes the MatrixSplitter with the specified number of rows and columns.\n\n Parameters:\n rows (int): Number of rows in the matrix.\n cols (int): Number of columns in the matrix.\n \"\"\"\n self.rows = rows\n self.cols = cols\n self.matrix = None\n self.small_matrices = [] # 2D list: small_matrices[i][j]\n self.seam_matrices_cols = []\n self.seam_matrices_rows = []\n\n def smallest_factor_greater_than_three(self, n):\n \"\"\"\n Finds the smallest factor of n that is greater than three.\n\n Parameters:\n n (int): The number to find a factor for.\n\n Returns:\n int: The smallest factor greater than three, or n if no such factor exists.\n \"\"\"\n for i in range(4, n + 1):\n if n % i == 0:\n return i\n return n\n\n def generate_matrix(self):\n \"\"\"\n Generates a matrix with random integers between 0 and 99.\n \"\"\"\n self.matrix = np.random.randint(0, 100, size=(self.rows, self.cols))\n print(f\"Generated matrix of size {self.rows}x{self.cols}.\")\n\n def split_matrix(self):\n \"\"\"\n Splits the matrix into smaller matrices based on factorization.\n \"\"\"\n # Find factors\n row_factor = self.smallest_factor_greater_than_three(self.rows)\n col_factor = self.smallest_factor_greater_than_three(self.cols)\n print(f\"Row factor: {row_factor}, Column factor: {col_factor}\")\n\n # Calculate number of splits\n num_row_splits = self.rows // row_factor\n num_col_splits = self.cols // col_factor\n\n # First split: Vertical (rows)\n row_split = np.array_split(self.matrix, num_row_splits, axis=0)\n print(f\"Matrix split into {len(row_split)} row-wise submatrices.\")\n\n # Further split: Horizontal (columns)\n # Convert small_matrices to a 2D list\n for sub_matrix in row_split:\n cols_split = np.array_split(sub_matrix, num_col_splits, axis=1)\n self.small_matrices.append(cols_split)\n total_small_matrices = len(self.small_matrices) * num_col_splits\n print(f\"Total small matrices after horizontal split: {total_small_matrices}\")\n\n # Second split: Seam matrices for columns\n for sub_matrix in row_split:\n row_seams = []\n for j in range(num_col_splits - 1):\n last_col = sub_matrix[:, (j + 1) * col_factor - 1].reshape(-1, 1)\n next_col = sub_matrix[:, (j + 1) * col_factor].reshape(-1, 1)\n seam_matrix = np.hstack((last_col, next_col))\n row_seams.append(seam_matrix)\n self.seam_matrices_cols.append(row_seams)\n print(f\"Generated seam matrices for columns: {len(self.seam_matrices_cols)} sets.\")\n\n # Third split: Seam matrices for rows\n for i in range(num_row_splits - 1):\n row_seams = []\n for j in range(num_col_splits):\n # Access small_matrices as a 2D list\n top_matrix = self.small_matrices[i][j]\n bottom_matrix = self.small_matrices[i + 1][j]\n # Get the last row of top_matrix and first row of bottom_matrix\n top_last_row = top_matrix[-1, :].reshape(1, -1)\n bottom_first_row = bottom_matrix[0, :].reshape(1, -1)\n seam_matrix = np.vstack((top_last_row, bottom_first_row))\n row_seams.append(seam_matrix)\n self.seam_matrices_rows.append(row_seams)\n print(f\"Generated seam matrices for rows: {len(self.seam_matrices_rows)} sets.\")\n\n def visualize_splits(self, output_filename=\"matrix_split.png\"):\n \"\"\"\n Visualizes the original and split matrices as a numbered grid with black grid lines,\n red thick lines for column splits, and green thick lines for row splits.\n The visualization is saved as a PNG image.\n\n Parameters:\n output_filename (str): The filename for the saved PNG image.\n \"\"\"\n fig, ax = plt.subplots(figsize=(self.cols, self.rows))\n ax.set_xlim(0, self.cols)\n ax.set_ylim(0, self.rows)\n ax.set_xticks(np.arange(0, self.cols + 1, 1))\n ax.set_yticks(np.arange(0, self.rows + 1, 1))\n ax.set_xticklabels([])\n ax.set_yticklabels([])\n ax.grid(which='both', color='black', linewidth=1)\n\n # Invert y-axis to have the first row at the top\n ax.invert_yaxis()\n\n # Add numbers to each cell with a progress bar\n total_cells = self.rows * self.cols\n with tqdm(total=total_cells, desc=\"Plotting cells\", unit=\"cell\") as pbar:\n for i in range(self.rows):\n for j in range(self.cols):\n cell_value = self.matrix[i, j]\n ax.text(j + 0.5, i + 0.5, str(cell_value),\n va='center', ha='center', fontsize=8)\n pbar.update(1)\n\n # Highlight split boundaries with red thick lines (columns) and green thick lines (rows)\n row_factor = self.smallest_factor_greater_than_three(self.rows)\n col_factor = self.smallest_factor_greater_than_three(self.cols)\n\n # Horizontal split lines (rows) - Green\n with tqdm(total=self.rows // row_factor - 1, desc=\"Drawing row splits\", unit=\"split\") as pbar:\n for i in range(1, self.rows // row_factor):\n ax.axhline(i * row_factor, color='green', linewidth=2)\n pbar.update(1)\n\n # Vertical split lines (columns) - Red\n with tqdm(total=self.cols // col_factor - 1, desc=\"Drawing column splits\", unit=\"split\") as pbar:\n for j in range(1, self.cols // col_factor):\n ax.axvline(j * col_factor, color='red', linewidth=2)\n pbar.update(1)\n\n # Remove whitespace and axes\n plt.axis('off')\n plt.tight_layout()\n\n # Save the figure\n plt.savefig(output_filename, dpi=300, bbox_inches='tight')\n plt.close()\n print(f\"Visualization saved as '{output_filename}'.\")\n\ndef validate_input(input_str):\n \"\"\"\n Validates that the input string contains two integers greater than or equal to 4.\n\n Parameters:\n input_str (str): The input string containing two numbers.\n\n Returns:\n tuple: A tuple containing two integers (rows, cols).\n\n Raises:\n ValueError: If input is invalid.\n \"\"\"\n try:\n parts = input_str.strip().split()\n if len(parts) != 2:\n raise ValueError(\"Please enter exactly two numbers separated by space.\")\n rows, cols = map(int, parts)\n if rows < 4 or cols < 4:\n raise ValueError(\"Both dimensions must be at least 4.\")\n return rows, cols\n except Exception as e:\n raise ValueError(f\"Invalid input: {e}\")\n\ndef main():\n \"\"\"\n Main function to execute the matrix splitting algorithm.\n \"\"\"\n print(\"Matrix Splitting Algorithm with Enhanced Visualization\")\n print(\"------------------------------------------------------\")\n try:\n user_input = input(\"Enter the number of rows and columns (e.g., '8 12'): \")\n rows, cols = validate_input(user_input)\n except ValueError as ve:\n print(ve)\n sys.exit(1)\n\n splitter = MatrixSplitter(rows, cols)\n splitter.generate_matrix()\n splitter.split_matrix()\n splitter.visualize_splits()\n\nif __name__ == \"__main__\":\n main()\n```\n\n:::\n\n#### 代码的运行效果\n\n> 仔细看看下面的代码,这就是你加上o1-mini的能力\n\n\n\n\n\n## 结语\n\n> 我必须在这里重申 ==“AI放大了人类的能力边界”==,代码的最终结果极大的取决于 ==“人的思考”== 的质量。\n\n在这里,我推荐书籍《人月神话》[wiki](https://zh.wikipedia.org/wiki/人月神话),虽然此书是写于1975年,但数十年来多次重印。书中对软件工程的思考,对软件开发中人的因素的思考,非常值得阅读。\n\nover","excerpt":"","includedFiles":[],"tasklists":0,"title":"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”","headers":[{"level":2,"title":"快速实现","slug":"快速实现","link":"#快速实现","children":[{"level":3,"title":"完整示例","slug":"完整示例","link":"#完整示例","children":[]}]},{"level":2,"title":"引言","slug":"引言","link":"#引言","children":[]},{"level":2,"title":"第一部分:对GPT输入代码风格化的要求","slug":"第一部分-对gpt输入代码风格化的要求","link":"#第一部分-对gpt输入代码风格化的要求","children":[]},{"level":2,"title":"第二部分:把你的想法转换为伪代码或类似的逻辑描述","slug":"第二部分-把你的想法转换为伪代码或类似的逻辑描述","link":"#第二部分-把你的想法转换为伪代码或类似的逻辑描述","children":[{"level":3,"title":"📏范式","slug":"📏范式","link":"#📏范式","children":[]},{"level":3,"title":"为什么需要伪代码?","slug":"为什么需要伪代码","link":"#为什么需要伪代码","children":[]}]},{"level":2,"title":"第三部分:怎么让GPT整点复杂的东西?","slug":"第三部分-怎么让gpt整点复杂的东西","link":"#第三部分-怎么让gpt整点复杂的东西","children":[{"level":3,"title":"这一点和完成一个大型工程一摸一样","slug":"这一点和完成一个大型工程一摸一样","link":"#这一点和完成一个大型工程一摸一样","children":[]},{"level":3,"title":"3.1 定义互相解耦的模块","slug":"_3-1-定义互相解耦的模块","link":"#_3-1-定义互相解耦的模块","children":[]},{"level":3,"title":"3.2 模块化的实施步骤","slug":"_3-2-模块化的实施步骤","link":"#_3-2-模块化的实施步骤","children":[]},{"level":3,"title":"3.3 利用GPT进行模块化开发","slug":"_3-3-利用gpt进行模块化开发","link":"#_3-3-利用gpt进行模块化开发","children":[]}]},{"level":2,"title":"作为结论","slug":"作为结论","link":"#作为结论","children":[{"level":3,"title":"实践:让我们在这里引入一个具体的例子","slug":"实践-让我们在这里引入一个具体的例子","link":"#实践-让我们在这里引入一个具体的例子","children":[]}]},{"level":2,"title":"结语","slug":"结语","link":"#结语","children":[]}]}} diff --git a/docs/.vuepress/.temp/internal/articleTagColors.css b/docs/.vuepress/.temp/internal/articleTagColors.css index b67c54b7..52065650 100644 --- a/docs/.vuepress/.temp/internal/articleTagColors.css +++ b/docs/.vuepress/.temp/internal/articleTagColors.css @@ -1,24 +1,24 @@ -.vp-tag-szc9 { +.vp-tag-cps4 { --vp-tag-color: #d5393e; --vp-tag-hover-color: #b8272c; --vp-tag-bg: rgba(244, 63, 94, 0.14); } -.vp-tag-5asf { +.vp-tag-f8w0 { --vp-tag-color: #cc6699; --vp-tag-hover-color: #be3f7f; --vp-tag-bg: rgba(161, 54, 107, 0.14); } -.vp-tag-fe64 { +.vp-tag-etmr { --vp-tag-color: #9966cc; --vp-tag-hover-color: #7171b8; --vp-tag-bg: rgba(83, 83, 167, 0.14); } -.vp-tag-426y { +.vp-tag-380f { --vp-tag-color: #3366cc; --vp-tag-hover-color: #5680d5; --vp-tag-bg: rgba(102, 140, 217, 0.14); } -.vp-tag-82os { +.vp-tag-cmo4 { --vp-tag-color: #a6623b; --vp-tag-hover-color: #c17950; --vp-tag-bg: rgba(199, 134, 97, 0.2411); diff --git a/docs/.vuepress/.temp/internal/articleTagColors.js b/docs/.vuepress/.temp/internal/articleTagColors.js index 1d604213..34d42af1 100644 --- a/docs/.vuepress/.temp/internal/articleTagColors.js +++ b/docs/.vuepress/.temp/internal/articleTagColors.js @@ -1,5 +1,5 @@ import './articleTagColors.css' -export const articleTagColors = {"预览":"fe64","组件":"82os","markdown":"szc9","preview":"426y","component":"5asf"} +export const articleTagColors = {"预览":"etmr","组件":"cmo4","markdown":"cps4","preview":"380f","component":"f8w0"} if (import.meta.webpackHot) { import.meta.webpackHot.accept() diff --git a/docs/.vuepress/.temp/internal/minisearchIndex/searchBox-default.js b/docs/.vuepress/.temp/internal/minisearchIndex/searchBox-default.js index 6a7beef9..2ff834e3 100644 --- a/docs/.vuepress/.temp/internal/minisearchIndex/searchBox-default.js +++ b/docs/.vuepress/.temp/internal/minisearchIndex/searchBox-default.js @@ -1 +1 @@ -export default "{\"documentCount\":96,\"nextId\":96,\"documentIds\":{\"0\":\"/quickstart/#👏欢迎来到riboc🆅\",\"1\":\"/quickstart/#写在开头\",\"2\":\"/quickstart/#您需要准备\",\"3\":\"/article/f659up3p/#标题-2\",\"4\":\"/quickstart/#主要内容\",\"5\":\"/article/f659up3p/#标题-3\",\"6\":\"/news/#what-we-need\",\"7\":\"/notes/onProgress/#sorry-we-are-still-on-progress\",\"8\":\"/quickstart/#让我们开始吧-🕺💃\",\"9\":\"/article/f659up3p/#标题-4\",\"10\":\"/news/#what-we-have-now\",\"11\":\"/notes/onProgress/#正在更新-still-on-progress\",\"12\":\"/quickstart/#⚙️-向bioos中导入工作流文件\",\"13\":\"/article/f659up3p/#标题-5\",\"14\":\"/news/#update\",\"15\":\"/02_othersNot10XGenomics/#服务于非10x-genomics的单细胞测序数据分析。\",\"16\":\"/notes/onProgress/#视频嵌入\",\"17\":\"/article/f659up3p/#标题-6\",\"18\":\"/news/#_2024-10-10-let-s-have-a-try\",\"19\":\"/01_10X_Genomics/#服务于10x-genomics的单细胞测序数据分析。\",\"20\":\"/01_10X_Genomics/scRNA-seq/#_10x-genomics-scrna-seq\",\"21\":\"/notes/onProgress/#标题-2\",\"22\":\"/news/#_2024-10-9-attenton\",\"23\":\"/03_dataArrangement/#服务于单细胞测序数据整理-关注bioos平台的数据整理和存储方式。\",\"24\":\"/01_10X_Genomics/scRNA-seq/#写在前面\",\"25\":\"/notes/onProgress/#标题-3\",\"26\":\"/news/#_2024-5-14-function-added\",\"27\":\"/04_codeStyle/#服务于代码风格-关注代码的可读性和可维护性\",\"28\":\"/01_10X_Genomics/scRNA-seq/#对于一个典型的10x-genomics-scrna-seq实验-我们推荐使用如下的json文件\",\"29\":\"/04_codeStyle/meandAI/#快速实现公式\",\"30\":\"/notes/onProgress/#标题-4\",\"31\":\"/demo/news/#wdl-tools-for-bioos\",\"32\":\"/news/#_2024-5-11-refining-code-logic\",\"33\":\"/01_10X_Genomics/scRNA-seq/#提交任务\",\"34\":\"/04_codeStyle/meandAI/#_1-复制对gpt输入代码风格化的要求\",\"35\":\"/notes/onProgress/#标题-5\",\"36\":\"/demo/news/#what-we-need\",\"37\":\"/news/#_2024-5-9-multi-need-to-set-na-as\",\"38\":\"/01_10X_Genomics/scRNA-seq/#查看结果\",\"39\":\"/04_codeStyle/meandAI/#_2-编写包含你所有的要求和想法的伪代码\",\"40\":\"/notes/onProgress/#标题-6\",\"41\":\"/demo/news/#what-we-have-now\",\"42\":\"/news/#_2024-5-4-updated-naming-logic-for-files\",\"43\":\"/01_10X_Genomics/scRNA-seq/#🤔-如果你想在本地查看结果\",\"44\":\"/04_codeStyle/meandAI/#_3-拆分伪代码-分模块实现\",\"45\":\"/notes/onProgress/#online-notebook-based-on-marimo-app\",\"46\":\"/demo/news/#update\",\"47\":\"/news/#_2024-4-28-added-unplanned-wdl-files\",\"48\":\"/01_10X_Genomics/scRNA-seq/#如果我有很多数据呢\",\"49\":\"/04_codeStyle/meandAI/#引言\",\"50\":\"/demo/news/#_2024-10-10-let-s-have-a-try\",\"51\":\"/news/#_2024-4-28-bugs-fix\",\"52\":\"/04_codeStyle/meandAI/#读者应该明确\",\"53\":\"/demo/news/#_2024-10-9-attenton\",\"54\":\"/news/#_2024-4-26-function-added\",\"55\":\"/04_codeStyle/meandAI/#第一部分-对gpt输入代码风格化的要求\",\"56\":\"/demo/news/#_2024-5-14-function-added\",\"57\":\"/news/#_2024-4-23-function-added\",\"58\":\"/04_codeStyle/meandAI/#第二部分-把你的想法转换为伪代码或类似的逻辑描述\",\"59\":\"/demo/news/#_2024-5-11-refining-code-logic\",\"60\":\"/news/#_2024-4-22-added-starsolo-wdl-files-which-could-used-in-bd-seqwell-dropseq-without-umitools\",\"61\":\"/04_codeStyle/meandAI/#📏范式\",\"62\":\"/demo/news/#_2024-5-9-multi-need-to-set-na-as\",\"63\":\"/news/#_2024-4-16-must-come-with-full-image-information-slide-number-etc\",\"64\":\"/04_codeStyle/meandAI/#为什么需要伪代码\",\"65\":\"/demo/news/#_2024-5-4-updated-naming-logic-for-files\",\"66\":\"/news/#_2024-4-12-the-technical-roadmap-has-been-updated-and-sra-files-are-now-reused-using-fasterq-dump\",\"67\":\"/04_codeStyle/meandAI/#第一种交互方式\",\"68\":\"/demo/news/#_2024-4-28-added-unplanned-wdl-files\",\"69\":\"/news/#_2024-4-11-resolving-compatibility-issues\",\"70\":\"/04_codeStyle/meandAI/#第二种交互方式\",\"71\":\"/demo/news/#_2024-4-28-bugs-fix\",\"72\":\"/04_codeStyle/meandAI/#伪代码的交互\",\"73\":\"/demo/news/#_2024-4-26-function-added\",\"74\":\"/04_codeStyle/meandAI/#🙋好-那么好-这时候聪明的你就要问了\",\"75\":\"/demo/news/#_2024-4-23-function-added\",\"76\":\"/04_codeStyle/meandAI/#我都写到这种程度了-为什么我不亲自写一遍-好像工作量是差不多的。\",\"77\":\"/demo/news/#_2024-4-22-added-starsolo-wdl-files-which-could-used-in-bd-seqwell-dropseq-without-umitools\",\"78\":\"/04_codeStyle/meandAI/#第三部分-怎么让gpt整点复杂的东西\",\"79\":\"/demo/news/#_2024-4-16-must-come-with-full-image-information-slide-number-etc\",\"80\":\"/04_codeStyle/meandAI/#这一点和完成一个大型工程一摸一样\",\"81\":\"/demo/news/#_2024-4-12-the-technical-roadmap-has-been-updated-and-sra-files-are-now-reused-using-fasterq-dump\",\"82\":\"/04_codeStyle/meandAI/#_3-1-定义互相解耦的模块\",\"83\":\"/demo/news/#_2024-4-11-resolving-compatibility-issues\",\"84\":\"/04_codeStyle/meandAI/#_3-2-模块化的实施步骤\",\"85\":\"/04_codeStyle/meandAI/#_3-3-利用gpt进行模块化开发\",\"86\":\"/04_codeStyle/meandAI/#_1-分块粘贴伪代码\",\"87\":\"/04_codeStyle/meandAI/#作为结论\",\"88\":\"/04_codeStyle/meandAI/#实践-让我们在这里引入一个具体的例子\",\"89\":\"/04_codeStyle/meandAI/#我们实际上做了什么\",\"90\":\"/04_codeStyle/meandAI/#主体部分\",\"91\":\"/04_codeStyle/meandAI/#模块1\",\"92\":\"/04_codeStyle/meandAI/#debug\",\"93\":\"/04_codeStyle/meandAI/#模块2\",\"94\":\"/04_codeStyle/meandAI/#最终结果\",\"95\":\"/04_codeStyle/meandAI/#结语\"},\"fieldIds\":{\"title\":0,\"titles\":1,\"text\":2},\"fieldLength\":{\"0\":[1,1,8],\"1\":[1,2,10],\"2\":[1,2,14],\"3\":[2,1,1],\"4\":[1,2,12],\"5\":[2,3,1],\"6\":[4,1,45],\"7\":[7,1,1],\"8\":[2,1,1],\"9\":[2,4,1],\"10\":[4,1,39],\"11\":[4,1,1],\"12\":[2,3,109],\"13\":[2,5,1],\"14\":[1,1,1],\"15\":[3,1,11],\"16\":[1,1,1],\"17\":[2,6,173],\"18\":[7,2,41],\"19\":[3,1,10],\"20\":[4,1,3],\"21\":[2,1,1],\"22\":[5,2,32],\"23\":[3,1,7],\"24\":[1,1,17],\"25\":[2,3,1],\"26\":[5,2,19],\"27\":[2,1,13],\"28\":[6,2,77],\"29\":[1,1,1],\"30\":[2,4,1],\"31\":[4,1,22],\"32\":[6,2,55],\"33\":[1,2,16],\"34\":[2,2,1],\"35\":[2,5,1],\"36\":[4,1,45],\"37\":[10,2,13],\"38\":[1,2,70],\"39\":[4,2,1],\"40\":[2,6,168],\"41\":[4,1,39],\"42\":[8,2,11],\"43\":[3,1,19],\"44\":[5,2,1],\"45\":[6,1,7],\"46\":[1,1,1],\"47\":[7,2,5],\"48\":[2,1,16],\"49\":[1,1,7],\"50\":[7,2,41],\"51\":[5,2,33],\"52\":[1,6,24],\"53\":[5,2,32],\"54\":[5,2,11],\"55\":[2,1,322],\"56\":[5,2,19],\"57\":[5,2,12],\"58\":[2,1,1],\"59\":[6,2,55],\"60\":[18,2,83],\"61\":[1,3,26],\"62\":[10,2,13],\"63\":[13,2,17],\"64\":[2,3,7],\"65\":[8,2,11],\"66\":[18,2,19],\"67\":[1,4,11],\"68\":[7,2,5],\"69\":[6,2,24],\"70\":[1,4,17],\"71\":[5,2,33],\"72\":[1,4,88],\"73\":[5,2,11],\"74\":[4,3,1],\"75\":[5,2,12],\"76\":[4,1,27],\"77\":[18,2,83],\"78\":[3,4,9],\"79\":[13,2,17],\"80\":[1,6,10],\"81\":[18,2,19],\"82\":[3,6,13],\"83\":[6,2,24],\"84\":[3,6,13],\"85\":[2,6,1],\"86\":[2,8,1],\"87\":[1,4,1],\"88\":[2,5,11],\"89\":[2,5,413],\"90\":[1,6,97],\"91\":[1,6,10],\"92\":[1,6,80],\"93\":[1,6,8],\"94\":[1,6,304],\"95\":[1,4,1]},\"averageFieldLength\":[4.062500000000001,2.624999999999999,33.55208333333333],\"storedFields\":{\"0\":{\"title\":\"👏欢迎来到Ribo🄲🆅\",\"titles\":[null]},\"1\":{\"title\":\"写在开头\",\"titles\":[null,\"👏欢迎来到Ribo🄲🆅\"]},\"2\":{\"title\":\"您需要准备\",\"titles\":[null,\"👏欢迎来到Ribo🄲🆅\"]},\"3\":{\"title\":\"标题 2\",\"titles\":[null]},\"4\":{\"title\":\"主要内容\",\"titles\":[null,\"👏欢迎来到Ribo🄲🆅\"]},\"5\":{\"title\":\"标题 3\",\"titles\":[null,\"标题 2\"]},\"6\":{\"title\":\"What we need?\",\"titles\":[null]},\"7\":{\"title\":\"Sorry, we are still on progress.\",\"titles\":[null]},\"8\":{\"title\":\"让我们开始吧!🕺💃\",\"titles\":[null]},\"9\":{\"title\":\"标题 4\",\"titles\":[null,\"标题 2\",\"标题 3\"]},\"10\":{\"title\":\"What we have,now\",\"titles\":[null]},\"11\":{\"title\":\"正在更新 Still On Progress\",\"titles\":[null]},\"12\":{\"title\":\"⚙️ 向BioOS中导入工作流文件\",\"titles\":[null,\"让我们开始吧!🕺💃\"]},\"13\":{\"title\":\"标题 5\",\"titles\":[null,\"标题 2\",\"标题 3\",\"标题 4\"]},\"14\":{\"title\":\"Update\",\"titles\":[null]},\"15\":{\"title\":\"服务于非10X Genomics的单细胞测序数据分析。\",\"titles\":[null]},\"16\":{\"title\":\"视频嵌入\",\"titles\":[null]},\"17\":{\"title\":\"标题 6\",\"titles\":[null,\"标题 2\",\"标题 3\",\"标题 4\",\"标题 5\"]},\"18\":{\"title\":\"2024.10.10 : let's have a try\",\"titles\":[null,\"Update\"]},\"19\":{\"title\":\"服务于10X Genomics的单细胞测序数据分析。\",\"titles\":[null]},\"20\":{\"title\":\"10X Genomics scRNA-seq\",\"titles\":[null]},\"21\":{\"title\":\"标题 2\",\"titles\":[null]},\"22\":{\"title\":\"2024.10.9 : ATTENTON!\",\"titles\":[null,\"Update\"]},\"23\":{\"title\":\"服务于单细胞测序数据整理,关注BioOS平台的数据整理和存储方式。\",\"titles\":[null]},\"24\":{\"title\":\"写在前面\",\"titles\":[null]},\"25\":{\"title\":\"标题 3\",\"titles\":[null,\"标题 2\"]},\"26\":{\"title\":\"2024.5.14 : Function added\",\"titles\":[null,\"Update\"]},\"27\":{\"title\":\"服务于代码风格,关注代码的可读性和可维护性\",\"titles\":[null]},\"28\":{\"title\":\"对于一个典型的10X Genomics scRNA-seq实验,我们推荐使用如下的json文件:\",\"titles\":[null,\"写在前面\"]},\"29\":{\"title\":\"快速实现公式\",\"titles\":[null]},\"30\":{\"title\":\"标题 4\",\"titles\":[null,\"标题 2\",\"标题 3\"]},\"31\":{\"title\":\"WDL Tools for BioOS\",\"titles\":[null]},\"32\":{\"title\":\"2024.5.11 : Refining Code Logic\",\"titles\":[null,\"Update\"]},\"33\":{\"title\":\"提交任务\",\"titles\":[null,\"写在前面\"]},\"34\":{\"title\":\"1. 复制对GPT输入代码风格化的要求\",\"titles\":[null,\"快速实现公式\"]},\"35\":{\"title\":\"标题 5\",\"titles\":[null,\"标题 2\",\"标题 3\",\"标题 4\"]},\"36\":{\"title\":\"What we need?\",\"titles\":[null]},\"37\":{\"title\":\"2024.5.9 : multi need to set NA as []\",\"titles\":[null,\"Update\"]},\"38\":{\"title\":\"查看结果\",\"titles\":[null,\"写在前面\"]},\"39\":{\"title\":\"--->>> 2. 编写包含你所有的要求和想法的伪代码\",\"titles\":[null,\"快速实现公式\"]},\"40\":{\"title\":\"标题 6\",\"titles\":[null,\"标题 2\",\"标题 3\",\"标题 4\",\"标题 5\"]},\"41\":{\"title\":\"What we have,now\",\"titles\":[null]},\"42\":{\"title\":\"2024.5.4 : Updated naming logic for files\",\"titles\":[null,\"Update\"]},\"43\":{\"title\":\"🤔 如果你想在本地查看结果?\",\"titles\":[null]},\"44\":{\"title\":\"--------->>> 3. 拆分伪代码,分模块实现\",\"titles\":[null,\"快速实现公式\"]},\"45\":{\"title\":\"online notebook, based on marimo.app\",\"titles\":[null]},\"46\":{\"title\":\"Update\",\"titles\":[null]},\"47\":{\"title\":\"2024.4.28 : Added unplanned WDL files\",\"titles\":[null,\"Update\"]},\"48\":{\"title\":\"如果我有很多数据呢?\",\"titles\":[null]},\"49\":{\"title\":\"引言\",\"titles\":[null]},\"50\":{\"title\":\"2024.10.10 : let's have a try\",\"titles\":[null,\"Update\"]},\"51\":{\"title\":\"2024.4.28 : Bugs fix\",\"titles\":[null,\"Update\"]},\"52\":{\"title\":\"读者应该明确\",\"titles\":[null,\"引言\",\"--------->>> 3. 拆分伪代码,分模块实现\"]},\"53\":{\"title\":\"2024.10.9 : ATTENTON!\",\"titles\":[null,\"Update\"]},\"54\":{\"title\":\"2024.4.26 : Function added\",\"titles\":[null,\"Update\"]},\"55\":{\"title\":\"第一部分:对GPT输入代码风格化的要求\",\"titles\":[null]},\"56\":{\"title\":\"2024.5.14 : Function added\",\"titles\":[null,\"Update\"]},\"57\":{\"title\":\"2024.4.23 : Function added\",\"titles\":[null,\"Update\"]},\"58\":{\"title\":\"第二部分:把你的想法转换为伪代码或类似的逻辑描述\",\"titles\":[null]},\"59\":{\"title\":\"2024.5.11 : Refining Code Logic\",\"titles\":[null,\"Update\"]},\"60\":{\"title\":\"2024.4.22 : Added STARsolo WDL files, which could used in BD&SeqWell&Dropseq, without umitools.\",\"titles\":[null,\"Update\"]},\"61\":{\"title\":\"📏范式\",\"titles\":[null,\"第二部分:把你的想法转换为伪代码或类似的逻辑描述\"]},\"62\":{\"title\":\"2024.5.9 : multi need to set NA as []\",\"titles\":[null,\"Update\"]},\"63\":{\"title\":\"2024.4.16 : Must come with full image information, slide number, etc.\",\"titles\":[null,\"Update\"]},\"64\":{\"title\":\"为什么需要伪代码?\",\"titles\":[null,\"第二部分:把你的想法转换为伪代码或类似的逻辑描述\"]},\"65\":{\"title\":\"2024.5.4 : Updated naming logic for files\",\"titles\":[null,\"Update\"]},\"66\":{\"title\":\"2024.4.12 : The technical roadmap has been updated, and sra files are now reused using fasterq-dump\",\"titles\":[null,\"Update\"]},\"67\":{\"title\":\"第一种交互方式\",\"titles\":[null,\"第二部分:把你的想法转换为伪代码或类似的逻辑描述\",\"为什么需要伪代码?\"]},\"68\":{\"title\":\"2024.4.28 : Added unplanned WDL files\",\"titles\":[null,\"Update\"]},\"69\":{\"title\":\"2024.4.11 : Resolving compatibility issues\",\"titles\":[null,\"Update\"]},\"70\":{\"title\":\"第二种交互方式\",\"titles\":[null,\"第二部分:把你的想法转换为伪代码或类似的逻辑描述\",\"为什么需要伪代码?\"]},\"71\":{\"title\":\"2024.4.28 : Bugs fix\",\"titles\":[null,\"Update\"]},\"72\":{\"title\":\"伪代码的交互\",\"titles\":[null,\"第二部分:把你的想法转换为伪代码或类似的逻辑描述\",\"为什么需要伪代码?\"]},\"73\":{\"title\":\"2024.4.26 : Function added\",\"titles\":[null,\"Update\"]},\"74\":{\"title\":\"🙋好,那么好,这时候聪明的你就要问了:\",\"titles\":[null,\"第二部分:把你的想法转换为伪代码或类似的逻辑描述\"]},\"75\":{\"title\":\"2024.4.23 : Function added\",\"titles\":[null,\"Update\"]},\"76\":{\"title\":\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"titles\":[]},\"77\":{\"title\":\"2024.4.22 : Added STARsolo WDL files, which could used in BD&SeqWell&Dropseq, without umitools.\",\"titles\":[null,\"Update\"]},\"78\":{\"title\":\"第三部分:怎么让GPT整点复杂的东西?\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\"]},\"79\":{\"title\":\"2024.4.16 : Must come with full image information, slide number, etc.\",\"titles\":[null,\"Update\"]},\"80\":{\"title\":\"这一点和完成一个大型工程一摸一样\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"第三部分:怎么让GPT整点复杂的东西?\"]},\"81\":{\"title\":\"2024.4.12 : The technical roadmap has been updated, and sra files are now reused using fasterq-dump\",\"titles\":[null,\"Update\"]},\"82\":{\"title\":\"3.1 定义互相解耦的模块\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"第三部分:怎么让GPT整点复杂的东西?\"]},\"83\":{\"title\":\"2024.4.11 : Resolving compatibility issues\",\"titles\":[null,\"Update\"]},\"84\":{\"title\":\"3.2 模块化的实施步骤\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"第三部分:怎么让GPT整点复杂的东西?\"]},\"85\":{\"title\":\"3.3 利用GPT进行模块化开发\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"第三部分:怎么让GPT整点复杂的东西?\"]},\"86\":{\"title\":\"1. 分块粘贴伪代码\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"第三部分:怎么让GPT整点复杂的东西?\",\"3.3 利用GPT进行模块化开发\"]},\"87\":{\"title\":\"作为结论\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\"]},\"88\":{\"title\":\"实践:让我们在这里引入一个具体的例子\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"作为结论\"]},\"89\":{\"title\":\"我们实际上做了什么?\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"作为结论\"]},\"90\":{\"title\":\"主体部分\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"作为结论\",\"我们实际上做了什么?\"]},\"91\":{\"title\":\"模块1\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"作为结论\",\"我们实际上做了什么?\"]},\"92\":{\"title\":\"debug\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"作为结论\",\"我们实际上做了什么?\"]},\"93\":{\"title\":\"模块2\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"作为结论\",\"我们实际上做了什么?\"]},\"94\":{\"title\":\"最终结果\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"作为结论\",\"我们实际上做了什么?\"]},\"95\":{\"title\":\"结语\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\"]}},\"dirtCount\":0,\"index\":[[\"结语\",{\"0\":{\"95\":1}}],[\"结构化\",{\"2\":{\"78\":1}}],[\"便于在终端中查阅进度\",{\"2\":{\"93\":1}}],[\"用绿色的粗实线来表示\",{\"2\":{\"93\":1}}],[\"用填写数字的表格代表矩阵\",{\"2\":{\"91\":1}}],[\"刚刚我们的代码实现了对于按列拆分时的可视化\",{\"2\":{\"93\":1}}],[\"80x12\",{\"2\":{\"92\":1}}],[\"80\",{\"2\":{\"92\":1}}],[\"8\",{\"2\":{\"92\":1,\"94\":2}}],[\"详细的上下文信息是\",{\"2\":{\"92\":1}}],[\"矩阵被切分的接缝处使用红色粗实线进行区分\",{\"2\":{\"91\":1}}],[\"矩阵的形状\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"表格中的每个小格子都是正方形\",{\"2\":{\"91\":1}}],[\"表格使用黑色实线\",{\"2\":{\"91\":1}}],[\"于是出现了问题\",{\"2\":{\"91\":1}}],[\"技术选型为python3\",{\"2\":{\"90\":1}}],[\"着重显示拆分矩阵的边界\",{\"2\":{\"90\":1}}],[\"生成矩阵\",{\"2\":{\"90\":1}}],[\"验证用户的输入是否合适我们的拆分方法\",{\"2\":{\"90\":1}}],[\"主体部分\",{\"0\":{\"90\":1}}],[\"主要关注结果的描述和需求\",{\"2\":{\"70\":1}}],[\"主要内容\",{\"0\":{\"4\":1}}],[\"捕获用户输入的两个数字作为矩阵的尺寸\",{\"2\":{\"89\":1,\"90\":1}}],[\"插入功能点这里同上\",{\"2\":{\"89\":1}}],[\"先主体4\",{\"2\":{\"89\":1}}],[\"编写伪代码3\",{\"2\":{\"89\":1}}],[\"编写包含你所有的要求和想法的伪代码\",{\"0\":{\"39\":1},\"2\":{\"89\":1}}],[\"具体的\",{\"2\":{\"89\":1}}],[\"具体的参数的解释请参考10x\",{\"2\":{\"28\":1}}],[\"实践\",{\"0\":{\"88\":1}}],[\"实体之后展现\",{\"2\":{\"48\":1}}],[\"作为结论\",{\"0\":{\"87\":1},\"1\":{\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1}}],[\"作为快速上手教程\",{\"2\":{\"28\":1}}],[\"分享链接\",{\"2\":{\"88\":1}}],[\"分块粘贴伪代码\",{\"0\":{\"86\":1}}],[\"分模块实现\",{\"0\":{\"44\":1},\"1\":{\"52\":1},\"2\":{\"89\":1}}],[\"利用gpt进行模块化开发\",{\"0\":{\"85\":1},\"1\":{\"86\":1}}],[\"利用json传递计算参数\",{\"2\":{\"4\":1}}],[\"进一步进行限定5\",{\"2\":{\"89\":1}}],[\"进行系统级别的测试和优化\",{\"2\":{\"84\":1}}],[\"进入任务详情页面\",{\"2\":{\"38\":1}}],[\"集成与系统测试\",{\"2\":{\"84\":1}}],[\"独立测试每个模块的功能和性能\",{\"2\":{\"84\":1}}],[\"逐个模块的开发与测试\",{\"2\":{\"84\":1}}],[\"确定模块之间的依赖关系\",{\"2\":{\"84\":1}}],[\"确保模块间的解耦\",{\"2\":{\"80\":1}}],[\"收集和分析项目需求\",{\"2\":{\"84\":1}}],[\"需求分析与功能分解\",{\"2\":{\"84\":1}}],[\"需要作为\",{\"2\":{\"80\":1}}],[\"使用api和协议确保模块独立性\",{\"2\":{\"82\":1}}],[\"模块2\",{\"0\":{\"93\":1}}],[\"模块1\",{\"0\":{\"91\":1}}],[\"模块设计与规划\",{\"2\":{\"84\":1}}],[\"模块化的实施步骤\",{\"0\":{\"84\":1}}],[\"模块间通信的标准\",{\"2\":{\"82\":1}}],[\"模块划分原则\",{\"2\":{\"82\":1}}],[\"接口设计\",{\"2\":{\"82\":1}}],[\"后端\",{\"2\":{\"82\":1}}],[\"功能分解的方法\",{\"2\":{\"82\":1}}],[\"识别关键功能模块\",{\"2\":{\"82\":1}}],[\"明确的接口和责任\",{\"2\":{\"82\":1}}],[\"明确告诉gpt\",{\"2\":{\"55\":1}}],[\"高内聚低耦合\",{\"2\":{\"82\":1}}],[\"有些时候你会想用不同的大模型来完成不同的模块\",{\"2\":{\"80\":1}}],[\"有序列表3\",{\"2\":{\"17\":1,\"40\":1}}],[\"有序列表2\",{\"2\":{\"17\":1,\"40\":1}}],[\"有序列表1\",{\"2\":{\"17\":1,\"40\":1}}],[\"架构师\",{\"2\":{\"80\":1}}],[\"基于效率上的考虑\",{\"2\":{\"78\":1}}],[\"受限于其上下文能力\",{\"2\":{\"78\":1}}],[\"受文本长度限制\",{\"2\":{\"49\":1}}],[\"大语言模型的技术一直在进步\",{\"2\":{\"78\":1}}],[\"诚然\",{\"2\":{\"78\":1}}],[\"怎么让gpt整点复杂的东西\",{\"0\":{\"78\":1},\"1\":{\"80\":1,\"82\":1,\"84\":1,\"85\":1,\"86\":1}}],[\"远比你维护代码的复杂性要低\",{\"2\":{\"76\":1}}],[\"远比你写代码tricks带来的进步要大\",{\"2\":{\"76\":1}}],[\"维护自然语言的伪代码的复杂性\",{\"2\":{\"76\":1}}],[\"抽象\",{\"2\":{\"76\":1}}],[\"充满了各种隐喻\",{\"2\":{\"76\":1}}],[\"把拆分后的矩阵和原有的矩阵在一张图片上叠加显示\",{\"2\":{\"90\":1}}],[\"把代码写的像诗一样的优雅\",{\"2\":{\"76\":1}}],[\"把你的想法转换为伪代码或类似的逻辑描述\",{\"0\":{\"58\":1},\"1\":{\"61\":1,\"64\":1,\"67\":1,\"70\":1,\"72\":1,\"74\":1}}],[\"很多优秀的工程师都有这样的习惯\",{\"2\":{\"76\":1}}],[\"复杂性只会从这里转移到那里\",{\"2\":{\"76\":1}}],[\"复杂性不会消失\",{\"2\":{\"76\":1}}],[\"复杂性也是一样的\",{\"2\":{\"76\":1}}],[\"复制2\",{\"2\":{\"89\":1}}],[\"复制对gpt输入代码风格化的要求\",{\"0\":{\"34\":1},\"2\":{\"89\":1}}],[\"复制\",{\"2\":{\"24\":1}}],[\"复制粘贴\",{\"2\":{\"0\":1}}],[\"笑容只会从一个人的脸上转移到另一个人的脸上\",{\"2\":{\"76\":1}}],[\"再者\",{\"2\":{\"76\":1}}],[\"算法上的革新带来的进步\",{\"2\":{\"76\":1}}],[\"而不是写代码上\",{\"2\":{\"76\":1}}],[\"而不需要详细说明如何达到这个结果\",{\"2\":{\"61\":1,\"70\":1}}],[\"甚至可以是java\",{\"2\":{\"76\":1}}],[\"它既可以是面向对象的\",{\"2\":{\"76\":1}}],[\"它既可以是python也可以是c++\",{\"2\":{\"76\":1}}],[\"它第一行是\",{\"2\":{\"67\":1}}],[\"根据我的观察\",{\"2\":{\"76\":1}}],[\"好像工作量是差不多的\",{\"0\":{\"76\":1},\"1\":{\"78\":1,\"80\":1,\"82\":1,\"84\":1,\"85\":1,\"86\":1,\"87\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1,\"95\":1}}],[\"拼接\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"列的小矩阵数量\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"行的小矩阵数量\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"行内脚注文本\",{\"2\":{\"17\":1,\"45\":1}}],[\"行内的脚注\",{\"2\":{\"17\":1,\"40\":1}}],[\"取相邻行的小矩阵进行垂直拼接\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"取相邻列的接缝区域\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"添加到\",{\"2\":{\"72\":4,\"89\":4,\"90\":4}}],[\"合并\",{\"2\":{\"72\":2,\"89\":2,\"90\":2}}],[\"获取当前行的小矩阵和下一行的小矩阵\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"获取当前小矩阵的最后一列和下一个小矩阵的第一列\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"获取矩阵的行数和列数\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"小矩阵数量\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"初始化\",{\"2\":{\"72\":4,\"89\":4,\"90\":4}}],[\"水平拆分\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"中\",{\"2\":{\"72\":6,\"89\":6,\"90\":6}}],[\"按照规划顺序开发模块\",{\"2\":{\"84\":1}}],[\"按行合并\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"按行遍历\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"按列合并\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"按\",{\"2\":{\"72\":2,\"89\":2,\"90\":2}}],[\"按因数拆分行和列\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"将各模块集成到整体系统中\",{\"2\":{\"84\":1}}],[\"将需求转化为功能模块\",{\"2\":{\"84\":1}}],[\"将一个web应用划分为前端\",{\"2\":{\"82\":1}}],[\"将拆分结果存储到对象属性中\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"将\",{\"2\":{\"72\":4,\"89\":4,\"90\":4}}],[\"将每个子矩阵按列拆分为更小的矩阵\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"将矩阵垂直拆分\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"将矩阵按行拆分为多个子矩阵\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"将您的json文件上传\",{\"2\":{\"33\":1}}],[\"本身\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"本文尽量不对任何内容的驱动原理做出解释\",{\"2\":{\"49\":1}}],[\"本文通过几个例子展示了用gpt敲代码的几个模式\",{\"2\":{\"49\":1}}],[\"本文将介绍如何通过网页操作bioos\",{\"2\":{\"1\":1}}],[\"本文的目的在于让您快速对bioos上的计算资源有初步的了解\",{\"2\":{\"1\":1}}],[\"返回\",{\"2\":{\"72\":3,\"89\":3,\"90\":3}}],[\"整除\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"整洁代码\",{\"2\":{\"55\":1}}],[\"能被\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"包含\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"包括以下几个方面\",{\"2\":{\"4\":1}}],[\"包括网页\",{\"2\":{\"1\":1}}],[\"从\",{\"2\":{\"72\":4,\"89\":4,\"90\":4}}],[\"寻找矩阵的因数\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"假设你想要一个按照一定规则拆分矩阵的代码\",{\"2\":{\"72\":1}}],[\"伪代码的交互\",{\"0\":{\"72\":1}}],[\"正如笑容不会消失\",{\"2\":{\"76\":1}}],[\"正是基于这个逻辑\",{\"2\":{\"70\":1}}],[\"正在更新\",{\"0\":{\"11\":1}}],[\"那么你得到的代码就越符合你的预期\",{\"2\":{\"70\":1}}],[\"那么好\",{\"0\":{\"74\":1},\"2\":{\"48\":1}}],[\"比如李逵和李鬼\",{\"2\":{\"70\":1}}],[\"尤其是你缺乏对代码的深入理解时\",{\"2\":{\"70\":1}}],[\"声明式交互在代码实现上具有更大的风险\",{\"2\":{\"70\":1}}],[\"声明式编程\",{\"2\":{\"61\":1}}],[\"直接说\",{\"2\":{\"70\":1}}],[\"最终结果\",{\"0\":{\"94\":1}}],[\"最终的交付形式为可以独立运行的python脚本\",{\"2\":{\"89\":1,\"90\":1}}],[\"最后一行是\",{\"2\":{\"67\":1}}],[\"最简代码模式\",{\"2\":{\"27\":1}}],[\"函数体中需要有return\",{\"2\":{\"67\":1}}],[\"我在运行这段代码的时候遇到了问题\",{\"2\":{\"92\":1}}],[\"我希望得到一张png图像\",{\"2\":{\"91\":1}}],[\"我对可视化的部分做出限定\",{\"2\":{\"91\":1}}],[\"我没有严格的定义可视化的方式\",{\"2\":{\"91\":1}}],[\"我定义了第2部分的伪代码\",{\"2\":{\"90\":1}}],[\"我定义我的模块有\",{\"2\":{\"90\":1}}],[\"我构思了一个矩阵拆分的算法\",{\"2\":{\"90\":1}}],[\"我创建了chatgpt\",{\"2\":{\"88\":1}}],[\"我利用刚刚例子中的伪代码和拆分模块的思想制作了promote\",{\"2\":{\"88\":1}}],[\"我都写到这种程度了\",{\"0\":{\"76\":1},\"1\":{\"78\":1,\"80\":1,\"82\":1,\"84\":1,\"85\":1,\"86\":1,\"87\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1,\"95\":1}}],[\"我提供一个比较极端的例子\",{\"2\":{\"72\":1}}],[\"我需要一个算法\",{\"2\":{\"70\":1}}],[\"我需要你写一段代码\",{\"2\":{\"67\":1}}],[\"我可能会\",{\"2\":{\"64\":1}}],[\"我们在最终的图像上增加按行拆分矩阵时的线\",{\"2\":{\"93\":1}}],[\"我们在这里只展示了bioos的冰山一角\",{\"2\":{\"48\":1}}],[\"我们在这里展示的是一个多样本的分析结果\",{\"2\":{\"38\":1}}],[\"我们实际上做了什么\",{\"0\":{\"89\":1},\"1\":{\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1}}],[\"我们应该尝试把真实的工程进行模块化\",{\"2\":{\"78\":1}}],[\"我们可以尝试把复杂性转移到机器上\",{\"2\":{\"76\":1}}],[\"我们才需要在第二步进行伪代码交互\",{\"2\":{\"70\":1}}],[\"我们的交互方式大致上有两类\",{\"2\":{\"64\":1}}],[\"我们的目标是您只需要知道如何\",{\"2\":{\"24\":1}}],[\"我们需要这里的\",{\"2\":{\"43\":1}}],[\"我们需要的文件在\",{\"2\":{\"38\":1}}],[\"我们已经准备好了\",{\"2\":{\"28\":1}}],[\"我们添加了文件路径\",{\"2\":{\"28\":1}}],[\"我们也会对一些关键参数做出解释\",{\"2\":{\"28\":1}}],[\"我们不对具体的参数做出解释\",{\"2\":{\"28\":1}}],[\"我们不要求您对json文件\",{\"2\":{\"24\":1}}],[\"我们推荐使用如下的json文件\",{\"0\":{\"28\":1}}],[\"我们推荐您使用json文件来描述和存档您的实验参数\",{\"2\":{\"20\":1}}],[\"我们假设您已经对平台的使用有了基础的了解\",{\"2\":{\"24\":1}}],[\"我们假设我们的用户唯一需要的前置知识是如何在计算机上熟练的使用浏览器\",{\"2\":{\"0\":1}}],[\"举个例子\",{\"2\":{\"64\":1}}],[\"回想一下🤔\",{\"2\":{\"64\":1}}],[\"以及对象之间的交互\",{\"2\":{\"61\":1}}],[\"每个\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"每个对象都包含数据和操作数据的方法\",{\"2\":{\"61\":1}}],[\"每种组学分别对应不同的工具\",{\"2\":{\"19\":1}}],[\"面向对象编程强调的是数据抽象和封装\",{\"2\":{\"61\":1}}],[\"面向对象编程\",{\"2\":{\"61\":1}}],[\"程序被组织成对象\",{\"2\":{\"61\":1}}],[\"程序员只需要描述他们想要的结果\",{\"2\":{\"61\":1}}],[\"程序由一系列的命令或语句组成\",{\"2\":{\"61\":1}}],[\"j\",{\"2\":{\"72\":4,\"89\":4,\"90\":4,\"94\":12}}],[\"java\",{\"2\":{\"61\":2}}],[\"justifications\",{\"2\":{\"55\":1,\"89\":1}}],[\"judge\",{\"2\":{\"18\":1,\"50\":1}}],[\"和\",{\"2\":{\"61\":3,\"72\":2,\"89\":2,\"90\":2}}],[\"典型代表\",{\"2\":{\"61\":3}}],[\"计算机按照这些命令执行操作\",{\"2\":{\"61\":1}}],[\"命令式编程\",{\"2\":{\"61\":1}}],[\"命令行\",{\"2\":{\"1\":2}}],[\"常见的范式有\",{\"2\":{\"61\":1}}],[\"knee\",{\"2\":{\"60\":1,\"77\":1}}],[\"key\",{\"2\":{\"55\":1,\"89\":1}}],[\"key=lambda\",{\"2\":{\"12\":1}}],[\"7\",{\"2\":{\"60\":1,\"77\":1}}],[\"第三部分\",{\"0\":{\"78\":1},\"1\":{\"80\":1,\"82\":1,\"84\":1,\"85\":1,\"86\":1}}],[\"第三拆分方法\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"第二拆分方法\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"第二种交互方式\",{\"0\":{\"70\":1}}],[\"第二部分\",{\"0\":{\"58\":1},\"1\":{\"61\":1,\"64\":1,\"67\":1,\"70\":1,\"72\":1,\"74\":1}}],[\"第一拆分方法\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"第一种交互方式\",{\"0\":{\"67\":1}}],[\"第一部分\",{\"0\":{\"55\":1}}],[\"q\",{\"2\":{\"55\":1,\"89\":1}}],[\"quality\",{\"2\":{\"55\":2,\"89\":2}}],[\"quot\",{\"2\":{\"33\":6,\"38\":4,\"42\":2,\"51\":2,\"65\":2,\"71\":2}}],[\"quickly\",{\"2\":{\"18\":1,\"50\":1}}],[\"queryselector\",{\"2\":{\"17\":1,\"40\":1}}],[\"如是否可以进行因式分解\",{\"2\":{\"90\":1}}],[\"如同下面的文本所示\",{\"2\":{\"55\":1}}],[\"如果没有找到因数\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"如果\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"如果你写了伪代码\",{\"2\":{\"76\":1}}],[\"如果你有一些类似于\",{\"2\":{\"55\":1}}],[\"如果你想在本地查看结果\",{\"0\":{\"43\":1}}],[\"如果我们有很多数据\",{\"2\":{\"48\":1}}],[\"如果我有很多数据呢\",{\"0\":{\"48\":1}}],[\"如果您按照上图的方法点击查看结果\",{\"2\":{\"38\":1}}],[\"如果还没有\",{\"2\":{\"24\":1}}],[\"的你首先对你的工程进行定义\",{\"2\":{\"80\":1}}],[\"的第一行\",{\"2\":{\"72\":2,\"89\":2,\"90\":2}}],[\"的最后一行\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"的最后一行和\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"的最小因数\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"的偏好\",{\"2\":{\"55\":1}}],[\"的加速都能带来巨大的收益\",{\"2\":{\"27\":1}}],[\"跟我复制\",{\"2\":{\"55\":1}}],[\"政治经济学原理\",{\"2\":{\"52\":1}}],[\"穆勒\",{\"2\":{\"52\":1}}],[\"斯图亚特\",{\"2\":{\"52\":1}}],[\"约翰\",{\"2\":{\"52\":1}}],[\"值得怀疑的是\",{\"2\":{\"52\":1}}],[\"为每个模块制定详细设计\",{\"2\":{\"84\":1}}],[\"为了春分利用这一点\",{\"2\":{\"80\":1}}],[\"为了便于工作流的可重复性\",{\"2\":{\"20\":1}}],[\"为什么我不亲自写一遍\",{\"0\":{\"76\":1},\"1\":{\"78\":1,\"80\":1,\"82\":1,\"84\":1,\"85\":1,\"86\":1,\"87\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1,\"95\":1}}],[\"为什么需要伪代码\",{\"0\":{\"64\":1},\"1\":{\"67\":1,\"70\":1,\"72\":1}}],[\"为一个空列表\",{\"2\":{\"72\":4,\"89\":4,\"90\":4}}],[\"为政篇\",{\"2\":{\"52\":1}}],[\"论语\",{\"2\":{\"52\":1}}],[\"孔子\",{\"2\":{\"52\":1}}],[\"君子不器\",{\"2\":{\"52\":1}}],[\"序言\",{\"2\":{\"52\":1}}],[\"工程控制论\",{\"2\":{\"52\":1}}],[\"工程控制论正在推动电子计算机技术革命的深入\",{\"2\":{\"52\":1}}],[\"钱学森\",{\"2\":{\"52\":1}}],[\"更高超的人\",{\"2\":{\"52\":1}}],[\"已经成为更有作为\",{\"2\":{\"52\":1}}],[\"由电子计算机和机器智能装备起来的人\",{\"2\":{\"52\":1}}],[\"读者应该明确\",{\"0\":{\"52\":1}}],[\"引言\",{\"0\":{\"49\":1},\"1\":{\"52\":1}}],[\"引用\",{\"2\":{\"28\":1}}],[\"引用内容\",{\"2\":{\"17\":2,\"40\":2}}],[\"一切已有的机械发明\",{\"2\":{\"52\":1}}],[\"一步一步的学习如何调度bioos强大的计算能力\",{\"2\":{\"48\":1}}],[\"一个bioos\",{\"2\":{\"2\":1}}],[\"一个bioos账号\",{\"2\":{\"2\":1}}],[\"下一行的小矩阵\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"下一个小矩阵的第一列\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"下面我们再对可视化的部分进行功能点的新增\",{\"2\":{\"93\":1}}],[\"下面\",{\"2\":{\"48\":1}}],[\"下载结果\",{\"2\":{\"38\":1}}],[\"当前行的小矩阵\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"当前小矩阵的最后一列\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"当我需要让gpt帮我写一个算法时\",{\"2\":{\"64\":1}}],[\"当我们和gpt之类的产品进行交互时\",{\"2\":{\"64\":1}}],[\"当然不是\",{\"2\":{\"48\":1}}],[\"当你尝试把一件简单的事情重复做上一万遍的时候\",{\"2\":{\"48\":1}}],[\"其复杂度将会指数增加📈\",{\"2\":{\"48\":1}}],[\"拆分伪代码\",{\"0\":{\"44\":1},\"1\":{\"52\":1},\"2\":{\"89\":1}}],[\"到\",{\"2\":{\"72\":4,\"89\":4,\"90\":4}}],[\"到此为止\",{\"2\":{\"43\":1}}],[\"到哪里去\",{\"2\":{\"27\":1}}],[\"🎊\",{\"2\":{\"43\":1}}],[\"🎊bravo\",{\"2\":{\"43\":1}}],[\"文件\",{\"2\":{\"43\":1}}],[\"文件夹中\",{\"2\":{\"38\":1}}],[\"🤔好\",{\"2\":{\"48\":1}}],[\"🤔\",{\"0\":{\"43\":1}}],[\"找到大于\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"找到我们需要的文件\",{\"2\":{\"38\":2}}],[\"找到页面上的\",{\"2\":{\"33\":1}}],[\"所有的日志以及结果文件都会列出在这里\",{\"2\":{\"38\":1}}],[\"所有的结果文件都会列出在这里\",{\"2\":{\"38\":1}}],[\"所以您会看到多个样本的结果文件夹\",{\"2\":{\"38\":1}}],[\"脚本文件\",{\"2\":{\"38\":1}}],[\"脚注文字\",{\"2\":{\"17\":1,\"45\":1}}],[\"脚注\",{\"2\":{\"17\":4,\"40\":3,\"45\":1}}],[\"日志文件\",{\"2\":{\"38\":1}}],[\"└──\",{\"2\":{\"38\":3}}],[\"│\",{\"2\":{\"38\":17}}],[\"├──\",{\"2\":{\"38\":10}}],[\"$id\",{\"2\":{\"43\":1}}],[\"$workflow标识id\",{\"2\":{\"38\":1}}],[\"$wdl\",{\"2\":{\"38\":2}}],[\"$投递任务id\",{\"2\":{\"38\":1}}],[\"$1\",{\"2\":{\"17\":1,\"40\":1}}],[\"$12\",{\"2\":{\"17\":1,\"40\":1}}],[\"$1600\",{\"2\":{\"17\":1,\"40\":1}}],[\"全部文件\",{\"2\":{\"38\":1}}],[\"你可以在这里看到一个完整的例子\",{\"2\":{\"88\":1}}],[\"你可以在这里看到完整的上下文信息\",{\"2\":{\"88\":1}}],[\"你可以参考下面的步骤来定义你的模块\",{\"2\":{\"80\":1}}],[\"你可以把更多的时间花在思考上\",{\"2\":{\"76\":1}}],[\"你可能需要内网环境\",{\"2\":{\"1\":1}}],[\"你和gpt的交互的伪代码如下\",{\"2\":{\"72\":1}}],[\"你和gpt之间的信息越一致\",{\"2\":{\"70\":1}}],[\"你的文件结构是这个样子\",{\"2\":{\"38\":1}}],[\"也正是这个原因\",{\"2\":{\"76\":1}}],[\"也可以是函数式的\",{\"2\":{\"76\":1}}],[\"也可以由多个段落组成\",{\"2\":{\"17\":1,\"45\":1}}],[\"也要像这样一个一个点击吗\",{\"2\":{\"48\":1}}],[\"也包括运行日志等文件\",{\"2\":{\"38\":1}}],[\"除了结果之外\",{\"2\":{\"38\":1}}],[\"查看\",{\"2\":{\"38\":1}}],[\"查看结果\",{\"0\":{\"38\":1}}],[\"任务完成后\",{\"2\":{\"38\":1}}],[\"任务列表4\",{\"2\":{\"17\":1,\"40\":1}}],[\"任务列表3\",{\"2\":{\"17\":1,\"40\":1}}],[\"任务列表2\",{\"2\":{\"17\":1,\"40\":1}}],[\"任务列表1\",{\"2\":{\"17\":1,\"40\":1}}],[\"等待任务完成\",{\"2\":{\"33\":1}}],[\"开始分析\",{\"2\":{\"33\":1}}],[\"点击链接\",{\"2\":{\"88\":1}}],[\"点击\",{\"2\":{\"38\":1}}],[\"点击任务名称\",{\"2\":{\"38\":1}}],[\"点击页面上的绿色按钮\",{\"2\":{\"33\":1}}],[\"点击鼠标\",{\"2\":{\"0\":1}}],[\"然后是四行函数体\",{\"2\":{\"67\":1}}],[\"然后是3个参数\",{\"2\":{\"67\":1}}],[\"然后是函数名\",{\"2\":{\"67\":1}}],[\"然后\",{\"2\":{\"33\":1}}],[\"上传json文件\",{\"2\":{\"33\":1}}],[\"上传和下载\",{\"2\":{\"23\":1}}],[\"输入参数\",{\"2\":{\"33\":1}}],[\"运行时文件\",{\"2\":{\"38\":1}}],[\"运行参数\",{\"2\":{\"33\":1}}],[\"运行工作流并查看运行结果\",{\"2\":{\"4\":1}}],[\"试试看\",{\"2\":{\"33\":1}}],[\"来到我们的cellrangertest页面\",{\"2\":{\"33\":1}}],[\"让我们在这里引入一个具体的例子\",{\"0\":{\"88\":1}}],[\"让我们从一个稍微复杂的例子开始\",{\"2\":{\"48\":1}}],[\"让我们点击下载\",{\"2\":{\"43\":1}}],[\"让我们逐渐深入文件夹\",{\"2\":{\"38\":1}}],[\"让我们逐级打开文件夹\",{\"2\":{\"38\":1}}],[\"让我们来看看结果吧\",{\"2\":{\"38\":1}}],[\"让我们回到bioos平台\",{\"2\":{\"33\":1}}],[\"让我们开始吧\",{\"0\":{\"8\":1},\"1\":{\"12\":1},\"2\":{\"24\":1}}],[\"提交任务\",{\"0\":{\"33\":1}}],[\"提示内容\",{\"2\":{\"17\":1,\"40\":1}}],[\"提示\",{\"2\":{\"2\":1,\"17\":2,\"40\":2,\"72\":1,\"78\":1,\"80\":1,\"88\":1}}],[\"快速实现公式\",{\"0\":{\"29\":1},\"1\":{\"34\":1,\"39\":1,\"44\":1}}],[\"现在就提交任务吧\",{\"2\":{\"28\":1}}],[\"是否减轻了任何人每天的辛劳\",{\"2\":{\"52\":1}}],[\"是的\",{\"2\":{\"28\":1}}],[\"是你的代码和数据存储的抽象概念\",{\"2\":{\"2\":1}}],[\"展开上标引用\",{\"2\":{\"28\":1}}],[\"或者你有明确的编程习惯\",{\"2\":{\"55\":1}}],[\"或者\",{\"2\":{\"28\":1}}],[\"或者联系管理员\",{\"2\":{\"2\":1}}],[\"可折叠\",{\"2\":{\"28\":1}}],[\"可以包含特殊标记\",{\"2\":{\"17\":1,\"45\":1}}],[\"在绘图的部分外部套一个tqdm的进度展示\",{\"2\":{\"93\":1}}],[\"在gpt的帮助下\",{\"2\":{\"76\":1}}],[\"在\",{\"2\":{\"72\":2,\"89\":2,\"90\":2}}],[\"在这个示例中\",{\"2\":{\"38\":1}}],[\"在这里\",{\"2\":{\"24\":1,\"76\":1}}],[\"在这里我们将展示如何使用bioos上的计算资源\",{\"2\":{\"0\":1}}],[\"在本例中\",{\"2\":{\"38\":1}}],[\"在任务详情页面\",{\"2\":{\"38\":1}}],[\"在支持文档\",{\"2\":{\"28\":1}}],[\"在大部分情况下\",{\"2\":{\"28\":1}}],[\"仔细观察\",{\"2\":{\"28\":1}}],[\"但是\",{\"2\":{\"78\":1}}],[\"但社会生活的主体依然是自然人\",{\"2\":{\"52\":1}}],[\"但没关系\",{\"2\":{\"28\":1}}],[\"但每种组学分别对应不同的参数文件\",{\"2\":{\"15\":1}}],[\"看起来很复杂\",{\"2\":{\"28\":1}}],[\"看看您的邮箱\",{\"2\":{\"2\":1}}],[\"对矩阵进行拆分\",{\"2\":{\"90\":1}}],[\"对于每个\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"对于\",{\"2\":{\"72\":5,\"89\":5,\"90\":5}}],[\"对于一个典型的10x\",{\"0\":{\"28\":1}}],[\"对gpt输入代码风格化的要求\",{\"0\":{\"55\":1}}],[\"对吧\",{\"2\":{\"0\":1}}],[\"人工智能协助代码开发\",{\"2\":{\"27\":1}}],[\"镜像从哪里来\",{\"2\":{\"27\":1}}],[\"加速\",{\"2\":{\"27\":1}}],[\"加粗文字\",{\"2\":{\"17\":1,\"40\":1}}],[\"加粗\",{\"2\":{\"17\":1,\"40\":1}}],[\"仅供参考\",{\"2\":{\"27\":1}}],[\"非常好👍\",{\"2\":{\"93\":1}}],[\"非常好使\",{\"2\":{\"67\":1}}],[\"非常好的问题\",{\"2\":{\"48\":1}}],[\"非常多的个人经验的引入\",{\"2\":{\"27\":1}}],[\"非常强大\",{\"2\":{\"17\":1,\"40\":1}}],[\"关注代码的可读性和可维护性\",{\"0\":{\"27\":1}}],[\"关注bioos平台的数据整理和存储方式\",{\"0\":{\"23\":1}}],[\"就是这么简单\",{\"2\":{\"28\":1}}],[\"就能完成您的实验\",{\"2\":{\"24\":1}}],[\"就像是一个文件夹\",{\"2\":{\"2\":1}}],[\"粘贴\",{\"2\":{\"24\":1}}],[\"请在进行代码产出时\",{\"2\":{\"55\":1}}],[\"请注意\",{\"2\":{\"24\":1}}],[\"请参考动手学bioos计算\",{\"2\":{\"24\":1}}],[\"请参考bioos文件管理\",{\"2\":{\"24\":1}}],[\"并把结果存在你的类中\",{\"2\":{\"72\":1}}],[\"并成功完成了一次10x\",{\"2\":{\"43\":1}}],[\"并填写了run\",{\"2\":{\"28\":1}}],[\"并创建了必要的文件夹\",{\"2\":{\"24\":1}}],[\"并进行一些简单的操作\",{\"2\":{\"1\":1}}],[\"写在前面\",{\"0\":{\"24\":1},\"1\":{\"28\":1,\"33\":1,\"38\":1}}],[\"写在开头\",{\"0\":{\"1\":1}}],[\"桶\",{\"2\":{\"23\":1}}],[\"数据库等模块\",{\"2\":{\"82\":1}}],[\"数据共享\",{\"2\":{\"23\":1}}],[\"数据存储\",{\"2\":{\"23\":1}}],[\"数据模型\",{\"2\":{\"23\":1}}],[\"数学表达式\",{\"2\":{\"17\":1,\"40\":1}}],[\"服务于代码风格\",{\"0\":{\"27\":1}}],[\"服务于单细胞测序数据整理\",{\"0\":{\"23\":1}}],[\"服务于10x\",{\"0\":{\"19\":1}}],[\"服务于非10x\",{\"0\":{\"15\":1}}],[\"↩︎\",{\"2\":{\"17\":4,\"45\":4}}],[\"重复的页脚定义\",{\"2\":{\"17\":1,\"40\":1}}],[\"重要内容\",{\"2\":{\"17\":1,\"40\":1}}],[\"重要\",{\"2\":{\"17\":2,\"40\":2,\"52\":1,\"70\":1,\"88\":1}}],[\"定义互相解耦的模块\",{\"0\":{\"82\":1}}],[\"定义函数\",{\"2\":{\"72\":1,\"89\":1,\"90\":1}}],[\"定义\",{\"2\":{\"17\":1,\"40\":1}}],[\"选项卡\",{\"2\":{\"17\":1,\"33\":1,\"40\":1}}],[\">非常\",{\"2\":{\"17\":1,\"40\":1}}],[\">>>\",{\"2\":{\"12\":1}}],[\"相关信息\",{\"2\":{\"17\":1,\"40\":1}}],[\"注意代码块右侧的复制按钮\",{\"2\":{\"89\":1}}],[\"注意这几个存在内容新增的部分\",{\"2\":{\"28\":1}}],[\"注意\",{\"2\":{\"17\":2,\"40\":2,\"90\":1}}],[\"注\",{\"2\":{\"17\":1,\"40\":1,\"52\":1}}],[\"注释内容\",{\"2\":{\"17\":1,\"40\":1}}],[\"注释\",{\"2\":{\"17\":1,\"28\":1,\"40\":1}}],[\"错误内容\",{\"2\":{\"17\":1,\"40\":1}}],[\"错误\",{\"2\":{\"17\":1,\"40\":1}}],[\"警告内容\",{\"2\":{\"17\":1,\"40\":1}}],[\"警告\",{\"2\":{\"17\":2,\"40\":2,\"70\":1}}],[\"信息内容\",{\"2\":{\"17\":1,\"40\":1}}],[\"信息\",{\"2\":{\"17\":1,\"40\":1}}],[\"代码如下\",{\"2\":{\"90\":1}}],[\"代码模式\",{\"2\":{\"27\":1}}],[\"代码演示\",{\"2\":{\"17\":1,\"40\":1}}],[\"代码块聚焦\",{\"2\":{\"17\":1,\"40\":1}}],[\"代码块高亮\",{\"2\":{\"17\":1,\"40\":1}}],[\"代码分组\",{\"2\":{\"17\":1,\"40\":1}}],[\"代码\",{\"2\":{\"17\":1,\"40\":1}}],[\"mini模型\",{\"2\":{\"88\":1}}],[\"miracle\",{\"2\":{\"22\":6,\"53\":6}}],[\"must\",{\"0\":{\"63\":1,\"79\":1},\"2\":{\"63\":1,\"79\":1,\"94\":1}}],[\"much\",{\"2\":{\"57\":1,\"75\":1}}],[\"multiple\",{\"2\":{\"55\":1,\"89\":1}}],[\"multi\",{\"0\":{\"37\":1,\"62\":1},\"2\":{\"10\":1,\"19\":1,\"41\":1,\"47\":1,\"68\":1}}],[\"more\",{\"2\":{\"60\":1,\"77\":1}}],[\"monitoring\",{\"2\":{\"55\":1,\"89\":1}}],[\"monitor\",{\"2\":{\"55\":1,\"89\":1,\"94\":1}}],[\"most\",{\"2\":{\"55\":2,\"89\":2,\"92\":1}}],[\"module>\",{\"2\":{\"92\":1}}],[\"modular\",{\"2\":{\"55\":2,\"89\":2}}],[\"model\",{\"2\":{\"55\":1,\"89\":1}}],[\"methodical\",{\"2\":{\"55\":1,\"89\":1}}],[\"metrics\",{\"2\":{\"38\":1}}],[\"meet\",{\"2\":{\"31\":1,\"66\":1,\"81\":1}}],[\"memory\",{\"2\":{\"28\":2}}],[\"map\",{\"2\":{\"94\":1}}],[\"matplotlib\",{\"2\":{\"94\":2}}],[\"matrices\",{\"2\":{\"72\":13,\"89\":13,\"90\":13,\"92\":2,\"94\":24}}],[\"matrixsplitter\",{\"2\":{\"94\":3}}],[\"matrix\",{\"2\":{\"26\":2,\"38\":1,\"43\":1,\"56\":2,\"72\":11,\"89\":11,\"90\":11,\"92\":8,\"94\":35}}],[\"make\",{\"2\":{\"60\":1,\"77\":1}}],[\"making\",{\"2\":{\"32\":1,\"55\":1,\"59\":1,\"89\":1}}],[\"management\",{\"2\":{\"55\":1,\"89\":1}}],[\"manageable\",{\"2\":{\"55\":1,\"89\":1}}],[\"made\",{\"2\":{\"55\":1,\"89\":1}}],[\"marimo\",{\"0\":{\"45\":1}}],[\"markdown格式\",{\"2\":{\"28\":1}}],[\"maintainable\",{\"2\":{\"55\":1,\"89\":1}}],[\"maintainability\",{\"2\":{\"55\":4,\"89\":4}}],[\"maintain\",{\"2\":{\"55\":2,\"89\":2}}],[\"main\",{\"2\":{\"17\":1,\"40\":1,\"92\":2,\"94\":4}}],[\"m\",{\"2\":{\"18\":1,\"50\":1}}],[\"示例\",{\"2\":{\"17\":1,\"40\":1,\"82\":1}}],[\"图标\",{\"2\":{\"17\":1,\"40\":1}}],[\"外部链接\",{\"2\":{\"17\":1,\"40\":1}}],[\"链接\",{\"2\":{\"17\":3,\"40\":3}}],[\"zebra\",{\"2\":{\"17\":1,\"40\":1}}],[\"无序列表3\",{\"2\":{\"17\":1,\"40\":1}}],[\"无序列表2\",{\"2\":{\"17\":1,\"40\":1}}],[\"无序列表1\",{\"2\":{\"17\":1,\"40\":1}}],[\"ωyω​\",{\"2\":{\"17\":2,\"40\":2}}],[\"∂ωr∂r​\",{\"2\":{\"17\":1,\"40\":1}}],[\"∂r∂ωr\",{\"2\":{\"17\":1,\"40\":1}}],[\"^\",{\"2\":{\"17\":2,\"40\":2}}],[\"^r\",{\"2\":{\"17\":2,\"40\":2}}],[\"yaxis\",{\"2\":{\"94\":1}}],[\"yticklabels\",{\"2\":{\"94\":1}}],[\"yticks\",{\"2\":{\"94\":1}}],[\"ylim\",{\"2\":{\"94\":1}}],[\"your\",{\"2\":{\"55\":10,\"89\":10}}],[\"you\",{\"2\":{\"55\":4,\"60\":1,\"77\":1,\"89\":4}}],[\"y\",{\"2\":{\"17\":2,\"40\":2,\"94\":1}}],[\"y^\",{\"2\":{\"17\":2,\"40\":2}}],[\"yωω\",{\"2\":{\"17\":2,\"40\":2}}],[\"−1\",{\"2\":{\"17\":2,\"40\":2}}],[\"−\",{\"2\":{\"17\":2,\"40\":2}}],[\"标准输出文件\",{\"2\":{\"38\":1}}],[\"标准错误文件\",{\"2\":{\"38\":1}}],[\"标记\",{\"2\":{\"17\":1,\"40\":1}}],[\"标题1标题2内容区块\",{\"2\":{\"17\":2,\"40\":2}}],[\"标题\",{\"0\":{\"3\":1,\"5\":1,\"9\":1,\"13\":1,\"17\":1,\"21\":1,\"25\":1,\"30\":1,\"35\":1,\"40\":1},\"1\":{\"5\":1,\"9\":2,\"13\":3,\"17\":4,\"25\":1,\"30\":2,\"35\":3,\"40\":4}}],[\"内容区块\",{\"2\":{\"17\":2,\"40\":2}}],[\"内容右对齐\",{\"2\":{\"17\":1,\"40\":1}}],[\"内容居中\",{\"2\":{\"17\":1,\"40\":1}}],[\"内容\",{\"2\":{\"17\":1,\"40\":1}}],[\"删除文字\",{\"2\":{\"17\":1,\"40\":1}}],[\"斜体文字\",{\"2\":{\"17\":1,\"40\":1}}],[\"斜体\",{\"2\":{\"17\":1,\"40\":1}}],[\"60\",{\"2\":{\"92\":1}}],[\"6\",{\"0\":{\"17\":1,\"40\":1},\"2\":{\"69\":1,\"83\":1}}],[\"视频嵌入\",{\"0\":{\"16\":1}}],[\"统一使用starsolo工具\",{\"2\":{\"15\":1}}],[\"utf\",{\"2\":{\"94\":1}}],[\"umi\",{\"2\":{\"60\":1,\"77\":1}}],[\"umitools\",{\"0\":{\"60\":1,\"77\":1}}],[\"umis\",{\"2\":{\"32\":1,\"59\":1,\"60\":1,\"77\":1}}],[\"unit=\",{\"2\":{\"94\":3}}],[\"unable\",{\"2\":{\"69\":1,\"83\":1}}],[\"unplanned\",{\"0\":{\"47\":1,\"68\":1}}],[\"understood\",{\"2\":{\"55\":1,\"89\":1}}],[\"understand\",{\"2\":{\"55\":1,\"89\":1}}],[\"under\",{\"2\":{\"6\":1,\"36\":1}}],[\"usr\",{\"2\":{\"94\":1}}],[\"user\",{\"2\":{\"94\":3}}],[\"users\",{\"2\":{\"92\":3}}],[\"used\",{\"0\":{\"60\":1,\"77\":1},\"2\":{\"55\":1,\"89\":1}}],[\"use\",{\"2\":{\"37\":1,\"51\":2,\"55\":2,\"60\":1,\"62\":1,\"71\":2,\"77\":1,\"89\":2}}],[\"using\",{\"0\":{\"66\":1,\"81\":1},\"2\":{\"18\":1,\"50\":1,\"55\":2,\"89\":2}}],[\"updated\",{\"0\":{\"42\":1,\"65\":1,\"66\":1,\"81\":1},\"2\":{\"26\":1,\"56\":1}}],[\"update\",{\"0\":{\"14\":1,\"46\":1},\"1\":{\"18\":1,\"22\":1,\"26\":1,\"32\":1,\"37\":1,\"42\":1,\"47\":1,\"50\":1,\"51\":1,\"53\":1,\"54\":1,\"56\":1,\"57\":1,\"59\":1,\"60\":1,\"62\":1,\"63\":1,\"65\":1,\"66\":1,\"68\":1,\"69\":1,\"71\":1,\"73\":1,\"75\":1,\"77\":1,\"79\":1,\"81\":1,\"83\":1},\"2\":{\"94\":3}}],[\"5891stdy8062334\",{\"2\":{\"28\":4}}],[\"5\",{\"0\":{\"13\":1,\"26\":1,\"32\":1,\"35\":1,\"37\":1,\"42\":1,\"56\":1,\"59\":1,\"62\":1,\"65\":1},\"1\":{\"17\":1,\"40\":1},\"2\":{\"89\":5,\"94\":2}}],[\"这一点和完成一个大型工程一摸一样\",{\"0\":{\"80\":1}}],[\"这时候聪明的你就要问了\",{\"0\":{\"74\":1}}],[\"这时候可能就会有人问了\",{\"2\":{\"48\":1}}],[\"这是一种典型的声明式交互\",{\"2\":{\"70\":1}}],[\"这是一种典型的命令式交互\",{\"2\":{\"67\":1}}],[\"这是最早也是最基本的编程范式\",{\"2\":{\"61\":1}}],[\"这段代码第一行是def\",{\"2\":{\"67\":1}}],[\"这样一个现实已经来到了人类面前\",{\"2\":{\"52\":1}}],[\"这取决于wdl文件的具体设置\",{\"2\":{\"38\":1}}],[\"这和您在本地计算的参数填写逻辑是一样的\",{\"2\":{\"28\":1}}],[\"这个算法需要满足以下要求\",{\"2\":{\"70\":1}}],[\"这个json文件的部分参数已经自动设置好了\",{\"2\":{\"28\":1}}],[\"这个过程如下图所示\",{\"2\":{\"12\":1}}],[\"这里上面的提示词有些问题\",{\"2\":{\"91\":1}}],[\"这里我们分块实现\",{\"2\":{\"89\":1}}],[\"这里我们给出了填写示例\",{\"2\":{\"28\":1}}],[\"这里同上\",{\"2\":{\"89\":1}}],[\"这里最核心的逻辑是\",{\"2\":{\"70\":1}}],[\"这里会涉及到bioos文件管理的相关内容\",{\"2\":{\"24\":1}}],[\"这里已经准备好了一个工作流文件\",{\"2\":{\"12\":1}}],[\"99\",{\"2\":{\"92\":1,\"94\":1}}],[\"9\",{\"0\":{\"22\":1,\"37\":1,\"53\":1,\"62\":1},\"2\":{\"12\":1,\"22\":1,\"53\":1,\"60\":1,\"66\":1,\"69\":1,\"77\":1,\"81\":1,\"83\":1}}],[\"equal\",{\"2\":{\"94\":1}}],[\"e\",{\"2\":{\"92\":1,\"94\":3}}],[\"etc\",{\"0\":{\"63\":1,\"79\":1}}],[\"et\",{\"2\":{\"60\":1,\"77\":1}}],[\"easy\",{\"2\":{\"55\":1,\"89\":1}}],[\"each\",{\"2\":{\"55\":8,\"89\":8,\"94\":1}}],[\"edge\",{\"2\":{\"55\":1,\"89\":1}}],[\"effectiveness\",{\"2\":{\"55\":1,\"89\":1}}],[\"effective\",{\"2\":{\"55\":1,\"89\":1}}],[\"efficiency\",{\"2\":{\"55\":4,\"89\":4}}],[\"efficient\",{\"2\":{\"55\":2,\"89\":2}}],[\"even\",{\"2\":{\"60\":1,\"77\":1}}],[\"every\",{\"2\":{\"55\":1,\"89\":1}}],[\"evaluate\",{\"2\":{\"55\":3,\"89\":3}}],[\"enhancements\",{\"2\":{\"94\":1}}],[\"enhanced\",{\"2\":{\"92\":1,\"94\":2}}],[\"env\",{\"2\":{\"94\":1}}],[\"enter\",{\"2\":{\"92\":1,\"94\":2}}],[\"engage\",{\"2\":{\"55\":1,\"89\":1}}],[\"ensuring\",{\"2\":{\"55\":3,\"89\":3}}],[\"ensure\",{\"2\":{\"55\":8,\"89\":8}}],[\"encryption\",{\"2\":{\"55\":1,\"89\":1}}],[\"encountered\",{\"2\":{\"32\":1,\"59\":1}}],[\"encapsulation\",{\"2\":{\"18\":1,\"50\":1}}],[\"emptydrops\",{\"2\":{\"60\":1,\"77\":1}}],[\"emptydrop\",{\"2\":{\"60\":1,\"77\":1}}],[\"empty\",{\"2\":{\"37\":1,\"62\":1}}],[\"exit\",{\"2\":{\"94\":1}}],[\"exists\",{\"2\":{\"94\":1}}],[\"execute\",{\"2\":{\"94\":1}}],[\"execution\",{\"2\":{\"38\":1}}],[\"exception\",{\"2\":{\"94\":1}}],[\"except\",{\"2\":{\"94\":2}}],[\"exactly\",{\"2\":{\"94\":1}}],[\"example\",{\"2\":{\"12\":2,\"28\":5}}],[\"explore\",{\"2\":{\"55\":1,\"89\":1}}],[\"explaining\",{\"2\":{\"55\":1,\"89\":1}}],[\"externally\",{\"2\":{\"69\":1,\"83\":1}}],[\"extent\",{\"2\":{\"42\":1,\"65\":1}}],[\"extra\",{\"2\":{\"60\":1,\"77\":1}}],[\"extracted\",{\"2\":{\"32\":1,\"59\":1}}],[\"extraction\",{\"2\":{\"32\":1,\"59\":1}}],[\"err8048237\",{\"2\":{\"28\":4}}],[\"else\",{\"2\":{\"12\":1}}],[\"elif\",{\"2\":{\"12\":1}}],[\"layout\",{\"2\":{\"94\":1}}],[\"last\",{\"2\":{\"92\":1,\"94\":5}}],[\"large\",{\"2\":{\"32\":1,\"59\":1}}],[\"lun\",{\"2\":{\"60\":1,\"77\":1}}],[\"linewidth=2\",{\"2\":{\"94\":2}}],[\"linewidth=1\",{\"2\":{\"94\":1}}],[\"lines\",{\"2\":{\"94\":9}}],[\"line\",{\"2\":{\"55\":1,\"89\":1,\"92\":3}}],[\"link\",{\"2\":{\"17\":6,\"40\":6}}],[\"list\",{\"2\":{\"12\":1,\"94\":3}}],[\"lower\",{\"2\":{\"69\":1,\"83\":1}}],[\"local\",{\"2\":{\"54\":1,\"73\":1}}],[\"looking\",{\"2\":{\"18\":1,\"50\":1}}],[\"long\",{\"2\":{\"17\":4,\"40\":4,\"55\":1,\"89\":1}}],[\"logically\",{\"2\":{\"55\":1,\"89\":1}}],[\"logical\",{\"2\":{\"55\":4,\"89\":4}}],[\"logic\",{\"0\":{\"32\":1,\"42\":1,\"59\":1,\"65\":1},\"2\":{\"32\":1,\"59\":1}}],[\"logy\",{\"2\":{\"17\":2,\"40\":2}}],[\"log\",{\"2\":{\"17\":5,\"38\":1,\"40\":5}}],[\"log⁡y\",{\"2\":{\"17\":2,\"40\":2}}],[\"least\",{\"2\":{\"94\":1}}],[\"lead\",{\"2\":{\"55\":1,\"89\":1}}],[\"learning\",{\"2\":{\"55\":3,\"89\":3}}],[\"less\",{\"2\":{\"55\":1,\"89\":1}}],[\"leverage\",{\"2\":{\"55\":1,\"89\":1}}],[\"let\",{\"0\":{\"18\":1,\"50\":1}}],[\"left\",{\"2\":{\"17\":3,\"40\":3}}],[\"len\",{\"2\":{\"12\":2,\"94\":5}}],[\"l001\",{\"2\":{\"12\":4,\"28\":3}}],[\"xticklabels\",{\"2\":{\"94\":1}}],[\"xticks\",{\"2\":{\"94\":1}}],[\"xlim\",{\"2\":{\"94\":1}}],[\"x\",{\"2\":{\"12\":2,\"94\":1}}],[\"x3c\",{\"2\":{\"12\":5,\"17\":6,\"40\":6,\"92\":1,\"94\":2}}],[\"~~~~~~~~~~^^^^^^^\",{\"2\":{\"92\":1}}],[\"~\",{\"2\":{\"12\":2,\"17\":1,\"26\":1,\"40\":1,\"56\":1}}],[\"=>\",{\"2\":{\"17\":1,\"40\":1}}],[\"==\",{\"2\":{\"12\":2,\"94\":2}}],[\"=\",{\"2\":{\"12\":21,\"17\":35,\"40\":35,\"60\":2,\"72\":12,\"77\":2,\"89\":12,\"90\":12,\"92\":1,\"94\":35}}],[\"08\",{\"2\":{\"94\":1}}],[\"001\",{\"2\":{\"12\":4,\"28\":3}}],[\"0\",{\"2\":{\"12\":8,\"18\":1,\"22\":3,\"28\":4,\"50\":1,\"53\":3,\"60\":3,\"66\":1,\"72\":3,\"77\":3,\"81\":1,\"89\":3,\"90\":4,\"92\":3,\"94\":10}}],[\"12\",{\"0\":{\"66\":1,\"81\":1},\"2\":{\"92\":2,\"94\":1}}],[\"12n−1−1\",{\"2\":{\"17\":1,\"40\":1}}],[\"16\",{\"0\":{\"63\":1,\"79\":1}}],[\"11\",{\"0\":{\"32\":1,\"59\":1,\"69\":1,\"83\":1},\"2\":{\"60\":1,\"77\":1,\"94\":1}}],[\"14\",{\"0\":{\"26\":1,\"56\":1}}],[\"100\",{\"2\":{\"94\":1}}],[\"10\",{\"0\":{\"18\":2,\"22\":1,\"50\":2,\"53\":1},\"2\":{\"22\":1,\"53\":1,\"60\":1,\"77\":1}}],[\"10x\",{\"0\":{\"20\":1},\"2\":{\"10\":5,\"28\":5,\"41\":5,\"47\":1,\"51\":1,\"68\":1,\"69\":1,\"71\":1,\"83\":1}}],[\"191\",{\"2\":{\"92\":1}}],[\"195\",{\"2\":{\"92\":1}}],[\"19th\",{\"2\":{\"17\":1,\"40\":1}}],[\"19\",{\"2\":{\"12\":1,\"22\":1,\"53\":1}}],[\"150\",{\"2\":{\"12\":2}}],[\"1\",{\"0\":{\"34\":1,\"82\":1,\"86\":1},\"2\":{\"12\":6,\"17\":17,\"22\":2,\"27\":1,\"40\":17,\"53\":2,\"60\":1,\"66\":1,\"72\":1,\"77\":1,\"81\":1,\"89\":3,\"90\":2,\"92\":6,\"94\":29}}],[\"ve\",{\"2\":{\"94\":2}}],[\"vertical\",{\"2\":{\"94\":2}}],[\"verify\",{\"2\":{\"55\":1,\"89\":1}}],[\"verification\",{\"2\":{\"12\":1}}],[\"very\",{\"2\":{\"17\":2,\"40\":2}}],[\"versions\",{\"2\":{\"69\":1,\"83\":1}}],[\"version\",{\"2\":{\"12\":1}}],[\"visualize\",{\"2\":{\"94\":2}}],[\"visualizes\",{\"2\":{\"94\":2}}],[\"visualization\",{\"2\":{\"92\":1,\"94\":5}}],[\"vstack\",{\"2\":{\"92\":1,\"94\":1}}],[\"vscode\",{\"2\":{\"17\":1,\"40\":1}}],[\"vulnerabilities\",{\"2\":{\"55\":1,\"89\":1}}],[\"v键\",{\"2\":{\"49\":1}}],[\"vpc\",{\"2\":{\"22\":6,\"53\":6}}],[\"va=\",{\"2\":{\"94\":1}}],[\"variable\",{\"2\":{\"55\":1,\"89\":1}}],[\"variables\",{\"2\":{\"12\":1}}],[\"validate\",{\"2\":{\"94\":2}}],[\"validates\",{\"2\":{\"94\":2}}],[\"validation\",{\"2\":{\"55\":1,\"89\":1}}],[\"valueerror\",{\"2\":{\"94\":5}}],[\"value\",{\"2\":{\"17\":1,\"40\":1,\"94\":2}}],[\"vdj\",{\"2\":{\"10\":3,\"18\":1,\"19\":1,\"41\":3,\"50\":1,\"51\":1,\"71\":1}}],[\"hstack\",{\"2\":{\"94\":1}}],[\"hughes\",{\"2\":{\"92\":3}}],[\"hub\",{\"2\":{\"10\":1,\"41\":1}}],[\"html\",{\"2\":{\"38\":1,\"61\":1}}],[\"https\",{\"2\":{\"10\":1,\"41\":1}}],[\"highlighted\",{\"2\":{\"94\":1}}],[\"highlight\",{\"2\":{\"55\":1,\"89\":1,\"94\":1}}],[\"high\",{\"2\":{\"32\":1,\"59\":1}}],[\"ha=\",{\"2\":{\"94\":1}}],[\"handle\",{\"2\":{\"69\":1,\"83\":1}}],[\"handling\",{\"2\":{\"32\":1,\"59\":1}}],[\"has\",{\"0\":{\"66\":1,\"81\":1},\"2\":{\"55\":1,\"89\":1}}],[\"had\",{\"2\":{\"54\":1,\"73\":1}}],[\"have\",{\"0\":{\"10\":1,\"18\":1,\"41\":1,\"50\":1},\"2\":{\"6\":1,\"36\":1,\"51\":1,\"60\":1,\"71\":1,\"77\":1,\"94\":1}}],[\"h5ad\",{\"2\":{\"26\":3,\"38\":1,\"43\":1,\"56\":3,\"57\":1,\"75\":1}}],[\"h1>\",{\"2\":{\"17\":1,\"40\":1}}],[\"h1>hello\",{\"2\":{\"17\":1,\"40\":1}}],[\"horizontal\",{\"2\":{\"92\":1,\"94\":3}}],[\"how\",{\"2\":{\"55\":1,\"89\":1}}],[\"home\",{\"2\":{\"17\":1,\"40\":1}}],[\"hold\",{\"2\":{\"12\":1}}],[\"h2o\",{\"2\":{\"17\":1,\"40\":1}}],[\"here\",{\"2\":{\"10\":1,\"18\":1,\"31\":1,\"41\":1,\"50\":1}}],[\"dpi=300\",{\"2\":{\"94\":1}}],[\"drawing\",{\"2\":{\"94\":2}}],[\"dropseq\",{\"0\":{\"60\":1,\"77\":1}}],[\"drop\",{\"2\":{\"10\":1,\"15\":1,\"41\":1}}],[\"date\",{\"2\":{\"94\":1}}],[\"data\",{\"2\":{\"6\":2,\"19\":1,\"28\":5,\"32\":2,\"36\":2,\"55\":1,\"59\":2,\"63\":1,\"69\":1,\"79\":1,\"83\":1,\"89\":1}}],[\"dump\",{\"0\":{\"66\":1,\"81\":1}}],[\"during\",{\"2\":{\"55\":1,\"89\":1}}],[\"duplicate\",{\"2\":{\"32\":1,\"59\":1}}],[\"down\",{\"2\":{\"55\":1,\"89\":1}}],[\"docs\",{\"2\":{\"92\":3}}],[\"documentation\",{\"2\":{\"55\":1,\"89\":1}}],[\"documented\",{\"2\":{\"55\":2,\"89\":2}}],[\"document\",{\"2\":{\"17\":1,\"40\":1,\"55\":2,\"89\":2}}],[\"docker\",{\"2\":{\"10\":1,\"12\":1,\"27\":1,\"41\":1,\"60\":1,\"66\":1,\"77\":1,\"81\":1}}],[\"dockers\",{\"2\":{\"10\":1,\"41\":1}}],[\"dlst000564\",{\"2\":{\"38\":3}}],[\"dimensions\",{\"2\":{\"94\":2}}],[\"dict\",{\"2\":{\"60\":2,\"77\":2}}],[\"different\",{\"2\":{\"55\":1,\"60\":1,\"77\":1,\"89\":1}}],[\"difficult\",{\"2\":{\"32\":1,\"59\":1}}],[\"direct\",{\"2\":{\"55\":1,\"89\":1}}],[\"disk\",{\"2\":{\"12\":6,\"28\":2}}],[\"desc=\",{\"2\":{\"94\":3}}],[\"design\",{\"2\":{\"55\":2,\"89\":2}}],[\"designing\",{\"2\":{\"55\":1,\"89\":1}}],[\"designed\",{\"2\":{\"31\":1,\"55\":1,\"89\":1}}],[\"def\",{\"2\":{\"94\":7}}],[\"defined\",{\"2\":{\"94\":1}}],[\"define\",{\"2\":{\"12\":1}}],[\"debug\",{\"0\":{\"92\":1}}],[\"debt\",{\"2\":{\"55\":1,\"89\":1}}],[\"deliver\",{\"2\":{\"55\":1,\"89\":1}}],[\"developed\",{\"2\":{\"60\":1,\"77\":1}}],[\"developers\",{\"2\":{\"55\":1,\"89\":1}}],[\"development\",{\"2\":{\"55\":3,\"89\":3}}],[\"develop\",{\"2\":{\"55\":2,\"89\":2}}],[\"declarative\",{\"2\":{\"61\":1}}],[\"decisions\",{\"2\":{\"55\":1,\"89\":1}}],[\"decision\",{\"2\":{\"55\":2,\"89\":2}}],[\"decompose\",{\"2\":{\"55\":1,\"89\":1}}],[\"dependencies\",{\"2\":{\"55\":1,\"89\":1}}],[\"deep\",{\"2\":{\"17\":3,\"40\":3}}],[\"demo\",{\"2\":{\"17\":1,\"40\":1}}],[\"determine\",{\"2\":{\"12\":1,\"32\":1,\"59\":1}}],[\"+\",{\"2\":{\"10\":1,\"17\":13,\"40\":13,\"41\":1,\"94\":8}}],[\"cr\",{\"2\":{\"60\":1,\"77\":1}}],[\"criteria\",{\"2\":{\"55\":1,\"89\":1}}],[\"cromwell\",{\"2\":{\"38\":5}}],[\"close\",{\"2\":{\"94\":1}}],[\"class\",{\"2\":{\"94\":1}}],[\"clear\",{\"2\":{\"55\":3,\"89\":3}}],[\"clearly\",{\"2\":{\"55\":1,\"89\":1,\"94\":1}}],[\"click\",{\"2\":{\"17\":1,\"40\":1}}],[\"checks\",{\"2\":{\"60\":1,\"77\":1}}],[\"chemistry\",{\"2\":{\"28\":2}}],[\"chosen\",{\"2\":{\"55\":1,\"89\":1}}],[\"choices\",{\"2\":{\"55\":1,\"89\":1}}],[\"choose\",{\"2\":{\"51\":1,\"71\":1}}],[\"chatgpt\",{\"2\":{\"94\":1}}],[\"chain\",{\"2\":{\"55\":1,\"89\":1}}],[\"challenges\",{\"2\":{\"55\":1,\"89\":1}}],[\"c键\",{\"2\":{\"49\":1}}],[\"csv\",{\"2\":{\"38\":1}}],[\"cn\",{\"2\":{\"22\":6,\"53\":6}}],[\"captures\",{\"2\":{\"94\":1}}],[\"can\",{\"2\":{\"60\":2,\"77\":2}}],[\"cannot\",{\"2\":{\"37\":1,\"62\":1}}],[\"cases\",{\"2\":{\"55\":2,\"89\":2}}],[\"case\",{\"2\":{\"51\":1,\"71\":1}}],[\"caution\",{\"2\":{\"17\":1,\"40\":1}}],[\"calls\",{\"2\":{\"60\":1,\"77\":1}}],[\"call\",{\"2\":{\"12\":1,\"38\":1,\"92\":1}}],[\"calculate\",{\"2\":{\"12\":1,\"94\":1}}],[\"c\",{\"2\":{\"17\":11,\"40\":11,\"61\":1}}],[\"center\",{\"2\":{\"94\":2}}],[\"centered\",{\"2\":{\"17\":1,\"40\":1}}],[\"cell\",{\"2\":{\"94\":4}}],[\"cells\",{\"2\":{\"60\":2,\"77\":2,\"94\":3}}],[\"cellranger\",{\"2\":{\"10\":4,\"26\":1,\"28\":22,\"41\":4,\"47\":1,\"54\":1,\"56\":1,\"60\":2,\"68\":1,\"69\":2,\"73\":1,\"77\":2,\"83\":2}}],[\"cdots\",{\"2\":{\"17\":1,\"40\":1}}],[\"cpu\",{\"2\":{\"12\":6,\"28\":2}}],[\"could\",{\"0\":{\"60\":1,\"77\":1}}],[\"count\",{\"2\":{\"10\":2,\"26\":1,\"28\":20,\"41\":2,\"56\":1}}],[\"cost\",{\"2\":{\"55\":1,\"89\":1}}],[\"coherent\",{\"2\":{\"55\":1,\"89\":1}}],[\"cot\",{\"2\":{\"55\":1,\"89\":1}}],[\"coding\",{\"2\":{\"55\":15,\"89\":15,\"94\":1}}],[\"codebase\",{\"2\":{\"55\":2,\"89\":2}}],[\"code\",{\"0\":{\"32\":1,\"59\":1},\"2\":{\"12\":2,\"17\":6,\"40\":6,\"55\":21,\"89\":21}}],[\"correctness\",{\"2\":{\"55\":1,\"89\":1}}],[\"correct\",{\"2\":{\"32\":1,\"59\":1}}],[\"containing\",{\"2\":{\"94\":2}}],[\"contains\",{\"2\":{\"32\":1,\"59\":1,\"94\":1}}],[\"contributors\",{\"2\":{\"55\":1,\"89\":1}}],[\"continuously\",{\"2\":{\"55\":2,\"89\":2}}],[\"conclusion\",{\"2\":{\"55\":1,\"89\":1}}],[\"conventions\",{\"2\":{\"26\":1,\"56\":1}}],[\"convert\",{\"2\":{\"12\":1,\"26\":1,\"56\":1,\"94\":1}}],[\"consistent\",{\"2\":{\"55\":1,\"89\":1}}],[\"considerations\",{\"2\":{\"55\":1,\"89\":1}}],[\"considering\",{\"2\":{\"55\":1,\"89\":1}}],[\"consider\",{\"2\":{\"55\":3,\"89\":3}}],[\"console\",{\"2\":{\"17\":3,\"40\":3}}],[\"const\",{\"2\":{\"17\":31,\"40\":31}}],[\"column\",{\"2\":{\"92\":1,\"94\":3}}],[\"columns\",{\"2\":{\"92\":2,\"94\":8}}],[\"cols\",{\"2\":{\"72\":6,\"89\":6,\"90\":6,\"94\":27}}],[\"collaboration\",{\"2\":{\"55\":3,\"89\":3}}],[\"color=\",{\"2\":{\"94\":3}}],[\"color\",{\"2\":{\"17\":1,\"40\":1}}],[\"col\",{\"2\":{\"17\":2,\"40\":2,\"72\":2,\"89\":2,\"90\":2,\"94\":18}}],[\"cool\",{\"2\":{\"17\":1,\"40\":1}}],[\"copy2\",{\"2\":{\"12\":3}}],[\"copy\",{\"2\":{\"12\":1}}],[\"come\",{\"0\":{\"63\":1,\"79\":1}}],[\"common\",{\"2\":{\"55\":1,\"89\":1}}],[\"commented\",{\"2\":{\"55\":1,\"89\":1}}],[\"command\",{\"2\":{\"12\":1,\"18\":1,\"50\":1}}],[\"combination\",{\"2\":{\"55\":1,\"89\":1}}],[\"combined\",{\"2\":{\"51\":1,\"71\":1}}],[\"compatibility\",{\"0\":{\"69\":1,\"83\":1}}],[\"compared\",{\"2\":{\"60\":1,\"77\":1}}],[\"complete\",{\"2\":{\"63\":1,\"79\":1}}],[\"complex\",{\"2\":{\"55\":1,\"89\":1}}],[\"complexity\",{\"2\":{\"6\":1,\"36\":1,\"55\":2,\"89\":2}}],[\"compressed\",{\"2\":{\"66\":1,\"81\":1}}],[\"compression\",{\"2\":{\"32\":3,\"59\":3}}],[\"comprehensive\",{\"2\":{\"55\":1,\"89\":1}}],[\"components\",{\"2\":{\"55\":2,\"89\":2}}],[\"composed\",{\"2\":{\"32\":1,\"59\":1}}],[\"com\",{\"2\":{\"10\":1,\"41\":1}}],[\"np\",{\"2\":{\"92\":1,\"94\":8}}],[\"na\",{\"0\":{\"37\":1,\"62\":1}}],[\"naming\",{\"0\":{\"42\":1,\"65\":1},\"2\":{\"26\":1,\"32\":1,\"56\":1,\"59\":1}}],[\"names\",{\"2\":{\"55\":1,\"89\":1}}],[\"name\",{\"2\":{\"12\":13,\"22\":1,\"53\":1,\"94\":1}}],[\"num\",{\"2\":{\"94\":8}}],[\"numpy\",{\"2\":{\"94\":1}}],[\"numbers\",{\"2\":{\"94\":3}}],[\"numbered\",{\"2\":{\"94\":1}}],[\"number\",{\"0\":{\"63\":1,\"79\":1},\"2\":{\"12\":1,\"17\":3,\"32\":1,\"40\":3,\"59\":1,\"92\":1,\"94\":6}}],[\"null\",{\"2\":{\"28\":3}}],[\"n\",{\"2\":{\"17\":2,\"40\":2,\"72\":6,\"89\":6,\"90\":6,\"94\":7}}],[\"next\",{\"2\":{\"94\":2}}],[\"necessary\",{\"2\":{\"55\":1,\"89\":1}}],[\"neat\",{\"2\":{\"17\":1,\"40\":1}}],[\"newer\",{\"2\":{\"69\":1,\"83\":1}}],[\"new\",{\"2\":{\"12\":12}}],[\"need\",{\"0\":{\"6\":1,\"36\":1,\"37\":1,\"62\":1},\"2\":{\"31\":2,\"51\":2,\"71\":2}}],[\"no\",{\"2\":{\"28\":2,\"94\":1}}],[\"notebook\",{\"0\":{\"45\":1}}],[\"note\",{\"2\":{\"17\":1,\"40\":1}}],[\"none\",{\"2\":{\"12\":4,\"94\":1}}],[\"now\",{\"0\":{\"10\":1,\"41\":1,\"66\":1,\"81\":1}}],[\"4\",{\"0\":{\"9\":1,\"30\":1,\"42\":1,\"47\":1,\"51\":1,\"54\":1,\"57\":1,\"60\":1,\"63\":1,\"65\":1,\"66\":1,\"68\":1,\"69\":1,\"71\":1,\"73\":1,\"75\":1,\"77\":1,\"79\":1,\"81\":1,\"83\":1},\"1\":{\"13\":1,\"17\":1,\"35\":1,\"40\":1},\"2\":{\"72\":1,\"89\":1,\"90\":1,\"92\":2,\"94\":5}}],[\"it\",{\"2\":{\"32\":1,\"55\":1,\"59\":1,\"89\":1,\"94\":1}}],[\"identify\",{\"2\":{\"55\":1,\"89\":1}}],[\"id和sample\",{\"2\":{\"28\":1}}],[\"id\",{\"2\":{\"28\":2,\"38\":2}}],[\"id=\",{\"2\":{\"17\":1,\"40\":1}}],[\"image\",{\"0\":{\"63\":1,\"79\":1},\"2\":{\"63\":1,\"79\":1,\"94\":3}}],[\"images\",{\"2\":{\"22\":1,\"53\":1}}],[\"implementation\",{\"2\":{\"66\":1,\"81\":1}}],[\"implementing\",{\"2\":{\"55\":1,\"89\":1}}],[\"imperative\",{\"2\":{\"61\":1}}],[\"improvement\",{\"2\":{\"55\":1,\"89\":1}}],[\"impact\",{\"2\":{\"42\":1,\"65\":1}}],[\"important\",{\"2\":{\"17\":1,\"40\":1}}],[\"import\",{\"2\":{\"12\":2,\"69\":1,\"83\":1,\"94\":6}}],[\"i\",{\"2\":{\"18\":1,\"50\":1,\"54\":1,\"72\":4,\"73\":1,\"89\":4,\"90\":4,\"94\":12}}],[\"i+1\",{\"2\":{\"17\":1,\"40\":1}}],[\"ir\",{\"2\":{\"17\":1,\"40\":1}}],[\"ir⋯\",{\"2\":{\"17\":2,\"40\":2}}],[\"i=1\",{\"2\":{\"17\":1,\"40\":1}}],[\"if\",{\"2\":{\"12\":4,\"55\":1,\"89\":1,\"94\":6}}],[\"i1\",{\"2\":{\"12\":10,\"28\":1}}],[\"invalid\",{\"2\":{\"94\":2}}],[\"invert\",{\"2\":{\"94\":2}}],[\"init\",{\"2\":{\"94\":1}}],[\"initializes\",{\"2\":{\"94\":1}}],[\"initialize\",{\"2\":{\"12\":1}}],[\"index\",{\"2\":{\"92\":1}}],[\"indexerror\",{\"2\":{\"92\":1}}],[\"inside\",{\"2\":{\"60\":1,\"77\":1}}],[\"instruction\",{\"2\":{\"55\":1,\"89\":1}}],[\"instructions\",{\"2\":{\"55\":2,\"89\":2}}],[\"insted\",{\"2\":{\"37\":1,\"62\":1}}],[\"inches=\",{\"2\":{\"94\":1}}],[\"incomplete\",{\"2\":{\"63\":1,\"79\":1}}],[\"incorporated\",{\"2\":{\"94\":1}}],[\"incorporate\",{\"2\":{\"55\":2,\"89\":2}}],[\"increased\",{\"2\":{\"57\":1,\"75\":1}}],[\"including\",{\"2\":{\"55\":2,\"89\":2}}],[\"include\",{\"2\":{\"51\":1,\"55\":1,\"71\":1,\"89\":1}}],[\"information\",{\"0\":{\"63\":1,\"79\":1},\"2\":{\"63\":1,\"79\":1}}],[\"info\",{\"2\":{\"17\":1,\"40\":1}}],[\"infrastructure\",{\"2\":{\"6\":1,\"36\":1}}],[\"inline\",{\"2\":{\"17\":6,\"40\":6}}],[\"in\",{\"0\":{\"60\":1,\"77\":1},\"2\":{\"12\":1,\"51\":1,\"55\":4,\"60\":1,\"71\":1,\"77\":1,\"89\":4,\"92\":3,\"94\":12}}],[\"integers\",{\"2\":{\"94\":3}}],[\"integrating\",{\"2\":{\"55\":1,\"89\":1}}],[\"into\",{\"2\":{\"55\":2,\"89\":2,\"92\":1,\"94\":2}}],[\"int\",{\"2\":{\"12\":2,\"94\":5}}],[\"input\",{\"2\":{\"12\":3,\"37\":1,\"55\":1,\"62\":1,\"89\":1,\"94\":14}}],[\"issues\",{\"0\":{\"69\":1,\"83\":1}}],[\"issue\",{\"2\":{\"32\":1,\"59\":1}}],[\"is\",{\"2\":{\"6\":2,\"17\":6,\"36\":2,\"40\":6,\"55\":8,\"63\":2,\"79\":2,\"89\":8,\"92\":1,\"94\":4}}],[\"pbar\",{\"2\":{\"94\":6}}],[\"please\",{\"2\":{\"94\":1}}],[\"plt\",{\"2\":{\"94\":6}}],[\"plotting\",{\"2\":{\"94\":2}}],[\"platform\",{\"2\":{\"6\":1,\"36\":1}}],[\"png\",{\"2\":{\"94\":4}}],[\"pull\",{\"2\":{\"60\":1,\"66\":1,\"77\":1,\"81\":1}}],[\"purpose\",{\"2\":{\"55\":1,\"89\":1}}],[\"perfect\",{\"2\":{\"60\":1,\"77\":1}}],[\"performance\",{\"2\":{\"55\":3,\"89\":3}}],[\"performing\",{\"2\":{\"32\":1,\"59\":1}}],[\"periodically\",{\"2\":{\"55\":1,\"89\":1}}],[\"possible\",{\"2\":{\"55\":1,\"57\":1,\"75\":1,\"89\":1}}],[\"possorted\",{\"2\":{\"38\":1}}],[\"potential\",{\"2\":{\"55\":1,\"89\":1}}],[\"ps\",{\"2\":{\"51\":1,\"60\":1,\"71\":1,\"77\":1}}],[\"pyplot\",{\"2\":{\"94\":1}}],[\"py\",{\"2\":{\"92\":4}}],[\"py39\",{\"2\":{\"22\":1,\"53\":1}}],[\"python\",{\"2\":{\"12\":2,\"18\":1,\"22\":2,\"50\":1,\"53\":2,\"61\":1,\"66\":1,\"81\":1,\"92\":1}}],[\"python3\",{\"2\":{\"12\":1,\"60\":1,\"66\":1,\"77\":1,\"81\":1,\"94\":1}}],[\"pipeline\",{\"2\":{\"31\":1}}],[\"pipline\",{\"2\":{\"6\":1,\"36\":1}}],[\"pigz\",{\"2\":{\"22\":1,\"53\":1,\"66\":2,\"81\":2}}],[\"p>\",{\"2\":{\"17\":2,\"40\":2}}],[\"patches\",{\"2\":{\"94\":1}}],[\"path\",{\"2\":{\"12\":1}}],[\"paths\",{\"2\":{\"12\":7,\"28\":2}}],[\"package\",{\"2\":{\"69\":1,\"83\":1}}],[\"packaged\",{\"2\":{\"6\":1,\"36\":1}}],[\"parallel\",{\"2\":{\"55\":1,\"89\":1}}],[\"parameters\",{\"2\":{\"51\":2,\"71\":2,\"94\":4}}],[\"parts\",{\"2\":{\"94\":3}}],[\"part\",{\"2\":{\"18\":1,\"50\":1}}],[\"partial\",{\"2\":{\"17\":1,\"40\":1}}],[\"partial^r\",{\"2\":{\"17\":1,\"40\":1}}],[\"practices\",{\"2\":{\"55\":2,\"89\":2}}],[\"praise\",{\"2\":{\"10\":1,\"41\":1}}],[\"prioritize\",{\"2\":{\"55\":2,\"89\":2}}],[\"prioritizing\",{\"2\":{\"55\":1,\"89\":1}}],[\"principles\",{\"2\":{\"55\":3,\"89\":3}}],[\"print\",{\"2\":{\"12\":3,\"94\":10}}],[\"precision\",{\"2\":{\"55\":1,\"89\":1}}],[\"precise\",{\"2\":{\"55\":1,\"89\":1}}],[\"preferred\",{\"2\":{\"55\":1,\"89\":1}}],[\"project\",{\"2\":{\"55\":1,\"89\":1}}],[\"providing\",{\"2\":{\"55\":1,\"89\":1}}],[\"provided\",{\"2\":{\"63\":1,\"79\":1}}],[\"provide\",{\"2\":{\"55\":1,\"89\":1}}],[\"profile\",{\"2\":{\"55\":1,\"89\":1}}],[\"proceeding\",{\"2\":{\"55\":1,\"89\":1}}],[\"process\",{\"2\":{\"55\":5,\"89\":5}}],[\"programming\",{\"2\":{\"55\":3,\"61\":3,\"89\":3}}],[\"program\",{\"2\":{\"31\":1}}],[\"progress\",{\"0\":{\"7\":1,\"11\":1},\"2\":{\"55\":1,\"89\":1,\"94\":4}}],[\"prjna693201\",{\"2\":{\"38\":3}}],[\"g\",{\"2\":{\"92\":1,\"94\":1}}],[\"gpt先天的适合增量更新的模式\",{\"2\":{\"80\":1}}],[\"green\",{\"2\":{\"94\":5}}],[\"greater\",{\"2\":{\"72\":2,\"89\":2,\"90\":2,\"94\":8}}],[\"grid\",{\"2\":{\"94\":4}}],[\"grch38\",{\"2\":{\"28\":2}}],[\"guide\",{\"2\":{\"55\":1,\"89\":1}}],[\"gt\",{\"0\":{\"39\":3,\"44\":3},\"1\":{\"52\":3},\"2\":{\"33\":2,\"42\":1,\"65\":1,\"89\":6}}],[\"gfm\",{\"2\":{\"17\":1,\"40\":1}}],[\"glob\",{\"2\":{\"12\":1}}],[\"gznl\",{\"2\":{\"22\":6,\"53\":6}}],[\"gz\",{\"2\":{\"12\":4,\"28\":7,\"38\":1,\"42\":1,\"65\":1}}],[\"gb\",{\"2\":{\"12\":2,\"28\":4}}],[\"goal\",{\"2\":{\"55\":1,\"89\":1}}],[\"goals\",{\"2\":{\"55\":1,\"89\":1}}],[\"god\",{\"2\":{\"10\":1,\"41\":1}}],[\"gover\",{\"2\":{\"6\":1,\"36\":1}}],[\"generate\",{\"2\":{\"94\":2}}],[\"generates\",{\"2\":{\"94\":2}}],[\"generated\",{\"2\":{\"92\":2,\"94\":3}}],[\"genomesasparsed\",{\"2\":{\"60\":1,\"77\":1}}],[\"genome\",{\"2\":{\"28\":2,\"38\":1}}],[\"genomics官方文档\",{\"2\":{\"28\":1}}],[\"genomics\",{\"0\":{\"20\":1,\"28\":1},\"2\":{\"43\":1}}],[\"genomics的单细胞测序数据分析\",{\"0\":{\"15\":1,\"19\":1}}],[\"gex\",{\"2\":{\"10\":1,\"41\":1}}],[\"getsize\",{\"2\":{\"12\":1}}],[\"get\",{\"2\":{\"6\":1,\"36\":1,\"94\":1}}],[\"given\",{\"2\":{\"6\":1,\"36\":1}}],[\"tuple\",{\"2\":{\"94\":2}}],[\"two\",{\"2\":{\"94\":4}}],[\"twitter\",{\"2\":{\"17\":1,\"40\":1}}],[\"tqdm\",{\"2\":{\"94\":7}}],[\"traceback\",{\"2\":{\"92\":1}}],[\"transcriptionally\",{\"2\":{\"60\":1,\"77\":1}}],[\"transparency\",{\"2\":{\"55\":1,\"89\":1}}],[\"tree\",{\"2\":{\"55\":1,\"89\":1}}],[\"try\",{\"0\":{\"18\":1,\"50\":1},\"2\":{\"18\":1,\"50\":1,\"94\":2}}],[\"tight\",{\"2\":{\"94\":2}}],[\"time\",{\"2\":{\"55\":2,\"89\":2}}],[\"tip\",{\"2\":{\"17\":1,\"40\":1}}],[\"team\",{\"2\":{\"55\":1,\"89\":1}}],[\"term\",{\"2\":{\"55\":1,\"89\":1}}],[\"test\",{\"2\":{\"55\":1,\"89\":1,\"92\":4}}],[\"technical\",{\"0\":{\"66\":1,\"81\":1},\"2\":{\"55\":2,\"89\":2}}],[\"technically\",{\"2\":{\"55\":1,\"89\":1}}],[\"techniques\",{\"2\":{\"55\":3,\"89\":3}}],[\"technologies\",{\"2\":{\"51\":1,\"71\":1}}],[\"text\",{\"2\":{\"17\":4,\"40\":4,\"94\":1}}],[\"type\",{\"2\":{\"18\":1,\"50\":1}}],[\"tar\",{\"2\":{\"28\":4,\"38\":1}}],[\"tab1tab2const\",{\"2\":{\"17\":1,\"40\":1}}],[\"tables\",{\"2\":{\"17\":1,\"40\":1}}],[\"task\",{\"2\":{\"12\":1,\"38\":2,\"55\":4,\"89\":4}}],[\"takeaways\",{\"2\":{\"55\":1,\"89\":1}}],[\"take\",{\"2\":{\"6\":1,\"36\":1}}],[\"t\",{\"2\":{\"10\":1,\"41\":1}}],[\"three\",{\"2\":{\"72\":2,\"89\":2,\"90\":2,\"94\":7}}],[\"threats\",{\"2\":{\"55\":1,\"89\":1}}],[\"throughout\",{\"2\":{\"55\":2,\"89\":2}}],[\"thoughts\",{\"2\":{\"55\":1,\"89\":1}}],[\"thought\",{\"2\":{\"55\":1,\"89\":1}}],[\"those\",{\"2\":{\"22\":1,\"53\":1,\"55\":1,\"89\":1}}],[\"than\",{\"2\":{\"32\":1,\"59\":1,\"72\":2,\"89\":2,\"90\":2,\"94\":8}}],[\"that\",{\"2\":{\"6\":1,\"32\":1,\"36\":1,\"55\":10,\"59\":1,\"60\":1,\"77\":1,\"89\":10,\"94\":2}}],[\"third\",{\"2\":{\"94\":1}}],[\"thick\",{\"2\":{\"94\":5}}],[\"things\",{\"2\":{\"31\":1}}],[\"this\",{\"2\":{\"17\":4,\"18\":1,\"40\":4,\"50\":1,\"60\":2,\"77\":2,\"94\":1}}],[\"these\",{\"2\":{\"55\":3,\"89\":3}}],[\"therefore\",{\"2\":{\"51\":1,\"71\":1}}],[\"them\",{\"2\":{\"10\":1,\"12\":1,\"41\":1}}],[\"they\",{\"2\":{\"6\":1,\"36\":1}}],[\"the\",{\"0\":{\"66\":1,\"81\":1},\"2\":{\"6\":3,\"10\":1,\"12\":1,\"18\":4,\"32\":8,\"36\":3,\"41\":1,\"42\":2,\"50\":4,\"51\":3,\"55\":27,\"57\":1,\"59\":8,\"60\":5,\"63\":1,\"65\":2,\"69\":1,\"71\":3,\"75\":1,\"77\":5,\"79\":1,\"83\":1,\"89\":27,\"92\":1,\"94\":23}}],[\"top\",{\"2\":{\"72\":3,\"89\":3,\"90\":3,\"92\":1,\"94\":6}}],[\"total=self\",{\"2\":{\"94\":2}}],[\"total=total\",{\"2\":{\"94\":1}}],[\"total\",{\"2\":{\"92\":1,\"94\":4}}],[\"tot\",{\"2\":{\"55\":1,\"89\":1}}],[\"tolong\",{\"2\":{\"17\":1,\"40\":1}}],[\"too\",{\"2\":{\"10\":1,\"41\":1}}],[\"toolkits\",{\"2\":{\"6\":1,\"36\":1}}],[\"tools\",{\"0\":{\"31\":1},\"2\":{\"6\":1,\"36\":1}}],[\"to\",{\"0\":{\"37\":1,\"62\":1},\"2\":{\"6\":1,\"12\":2,\"17\":4,\"18\":3,\"26\":1,\"31\":1,\"32\":2,\"36\":1,\"40\":4,\"50\":3,\"51\":3,\"55\":18,\"56\":1,\"59\":2,\"60\":3,\"66\":1,\"69\":2,\"71\":3,\"77\":3,\"81\":1,\"83\":2,\"89\":18,\"94\":8}}],[\"o1\",{\"2\":{\"88\":1}}],[\"openai\",{\"2\":{\"94\":1}}],[\"opportunities\",{\"2\":{\"55\":1,\"89\":1}}],[\"optimized\",{\"2\":{\"55\":2,\"89\":2}}],[\"optimize\",{\"2\":{\"55\":3,\"89\":3}}],[\"overall\",{\"2\":{\"55\":2,\"89\":2}}],[\"other\",{\"2\":{\"18\":1,\"31\":1,\"50\":1,\"55\":1,\"89\":1}}],[\"object\",{\"2\":{\"61\":1}}],[\"obj\",{\"2\":{\"17\":1,\"40\":1}}],[\"omega^i\",{\"2\":{\"17\":1,\"40\":1}}],[\"omega^r\",{\"2\":{\"17\":1,\"40\":1}}],[\"omega\",{\"2\":{\"17\":4,\"40\":4}}],[\"outcome\",{\"2\":{\"55\":1,\"89\":1}}],[\"outline\",{\"2\":{\"55\":1,\"89\":1}}],[\"outs\",{\"2\":{\"38\":3}}],[\"out\",{\"2\":{\"12\":3,\"92\":1}}],[\"outputs\",{\"2\":{\"55\":1,\"89\":1}}],[\"output\",{\"2\":{\"12\":3,\"57\":1,\"75\":1,\"94\":4}}],[\"our\",{\"2\":{\"6\":4,\"31\":1,\"36\":4}}],[\"os\",{\"2\":{\"12\":2,\"31\":1}}],[\"ooaahhdocker\",{\"2\":{\"10\":1,\"22\":5,\"41\":1,\"53\":5,\"60\":1,\"66\":1,\"77\":1,\"81\":1}}],[\"original\",{\"2\":{\"94\":2}}],[\"oriented\",{\"2\":{\"61\":1}}],[\"organization\",{\"2\":{\"55\":1,\"89\":1}}],[\"order\",{\"2\":{\"32\":1,\"59\":1}}],[\"or\",{\"2\":{\"6\":1,\"10\":1,\"18\":1,\"31\":1,\"36\":1,\"41\":1,\"50\":1,\"55\":1,\"89\":1,\"94\":3}}],[\"off\",{\"2\":{\"94\":1}}],[\"offer\",{\"2\":{\"55\":1,\"89\":1}}],[\"of\",{\"2\":{\"6\":2,\"10\":2,\"12\":1,\"18\":2,\"22\":1,\"26\":1,\"32\":7,\"36\":2,\"41\":2,\"42\":1,\"50\":2,\"51\":1,\"53\":1,\"55\":10,\"56\":1,\"57\":1,\"59\":7,\"65\":1,\"69\":1,\"71\":1,\"75\":1,\"83\":1,\"89\":10,\"92\":3,\"94\":9}}],[\"online\",{\"0\":{\"45\":1}}],[\"on\",{\"0\":{\"7\":1,\"11\":1,\"45\":1},\"2\":{\"6\":1,\"12\":4,\"36\":1,\"55\":2,\"60\":1,\"77\":1,\"89\":2,\"94\":2}}],[\"once\",{\"2\":{\"6\":1,\"36\":1}}],[\"sys\",{\"2\":{\"94\":2}}],[\"system\",{\"2\":{\"6\":1,\"36\":1,\"55\":1,\"89\":1}}],[\"slide\",{\"0\":{\"63\":1,\"79\":1}}],[\"slim\",{\"2\":{\"12\":1,\"22\":1,\"53\":1}}],[\"sql\",{\"2\":{\"61\":1}}],[\"skip\",{\"2\":{\"60\":1,\"77\":1}}],[\"savefig\",{\"2\":{\"94\":1}}],[\"save\",{\"2\":{\"94\":1}}],[\"saved\",{\"2\":{\"94\":4}}],[\"safeguard\",{\"2\":{\"55\":1,\"89\":1}}],[\"sample\",{\"2\":{\"12\":13,\"26\":1,\"28\":2,\"56\":1}}],[\"subplots\",{\"2\":{\"94\":1}}],[\"submatrices\",{\"2\":{\"92\":1,\"94\":1}}],[\"sub\",{\"2\":{\"72\":1,\"89\":1,\"90\":1,\"94\":5}}],[\"such\",{\"2\":{\"55\":1,\"89\":1,\"94\":1}}],[\"summarize\",{\"2\":{\"55\":1,\"89\":1}}],[\"summary\",{\"2\":{\"38\":2}}],[\"sum\",{\"2\":{\"17\":1,\"40\":1}}],[\"specified\",{\"2\":{\"94\":1}}],[\"specific\",{\"2\":{\"51\":1,\"55\":1,\"71\":1,\"89\":1}}],[\"splits\",{\"2\":{\"94\":18}}],[\"splitter\",{\"2\":{\"92\":1,\"94\":4}}],[\"splitting\",{\"2\":{\"92\":1,\"94\":3}}],[\"split\",{\"2\":{\"51\":2,\"71\":2,\"72\":2,\"89\":2,\"90\":2,\"92\":4,\"94\":26}}],[\"spatial\",{\"2\":{\"19\":1}}],[\"span>强大\",{\"2\":{\"17\":1,\"40\":1}}],[\"span\",{\"2\":{\"17\":2,\"40\":2}}],[\"space\",{\"2\":{\"12\":5,\"28\":2,\"55\":1,\"89\":1,\"94\":1}}],[\"spaceranger\",{\"2\":{\"10\":1,\"41\":1,\"51\":1,\"63\":1,\"71\":1,\"79\":1}}],[\"srr13482541\",{\"2\":{\"38\":3}}],[\"sra\",{\"0\":{\"66\":1,\"81\":1},\"2\":{\"32\":1,\"42\":1,\"51\":1,\"59\":1,\"65\":1,\"71\":1}}],[\"sratofastqgz\",{\"2\":{\"18\":1,\"50\":1}}],[\"small\",{\"2\":{\"72\":4,\"89\":4,\"90\":4,\"92\":1,\"94\":11}}],[\"smallest\",{\"2\":{\"72\":2,\"89\":2,\"90\":2,\"94\":7}}],[\"smaller\",{\"2\":{\"32\":1,\"59\":1,\"94\":1}}],[\"smart\",{\"2\":{\"10\":1,\"15\":1,\"41\":1}}],[\"some\",{\"2\":{\"63\":1,\"79\":1}}],[\"sound\",{\"2\":{\"55\":1,\"89\":1}}],[\"sophisticated\",{\"2\":{\"55\":1,\"89\":1}}],[\"solocellfilter\",{\"2\":{\"60\":1,\"77\":1}}],[\"solobarcodereadlength=0\",{\"2\":{\"60\":1,\"77\":1}}],[\"solve\",{\"2\":{\"55\":1,\"89\":1}}],[\"solutions\",{\"2\":{\"55\":3,\"89\":3}}],[\"solution\",{\"2\":{\"32\":1,\"55\":1,\"59\":1,\"89\":1}}],[\"sort\",{\"2\":{\"12\":2}}],[\"sorry\",{\"0\":{\"7\":1}}],[\"s3\",{\"2\":{\"28\":5}}],[\"scalability\",{\"2\":{\"55\":1,\"89\":1}}],[\"scanpy1\",{\"2\":{\"22\":1,\"53\":1,\"60\":1,\"77\":1}}],[\"script\",{\"2\":{\"31\":1,\"38\":1,\"94\":1}}],[\"scrna\",{\"0\":{\"20\":1,\"28\":1},\"2\":{\"19\":1,\"43\":1,\"69\":1,\"83\":1}}],[\"s\",{\"0\":{\"18\":1,\"50\":1},\"2\":{\"55\":1,\"89\":1}}],[\"s1\",{\"2\":{\"12\":3,\"28\":3}}],[\"separated\",{\"2\":{\"94\":1}}],[\"sep=\",{\"2\":{\"12\":1}}],[\"self\",{\"2\":{\"72\":3,\"89\":3,\"90\":3,\"94\":48}}],[\"select\",{\"2\":{\"55\":1,\"89\":1}}],[\"seams\",{\"2\":{\"72\":6,\"89\":6,\"90\":6,\"94\":6}}],[\"seam\",{\"2\":{\"72\":12,\"89\":12,\"90\":12,\"92\":2,\"94\":14}}],[\"search\",{\"2\":{\"55\":2,\"89\":2}}],[\"segment\",{\"2\":{\"55\":1,\"89\":1}}],[\"session\",{\"2\":{\"55\":1,\"89\":1}}],[\"second\",{\"2\":{\"94\":1}}],[\"secondary\",{\"2\":{\"28\":2}}],[\"security\",{\"2\":{\"55\":3,\"89\":3}}],[\"secure\",{\"2\":{\"55\":3,\"89\":3}}],[\"sets\",{\"2\":{\"92\":1,\"94\":2}}],[\"set\",{\"0\":{\"37\":1,\"62\":1},\"2\":{\"60\":1,\"77\":1,\"94\":6}}],[\"seq的分析\",{\"2\":{\"43\":1}}],[\"sequences\",{\"2\":{\"32\":1,\"59\":1}}],[\"sequencing\",{\"2\":{\"6\":1,\"36\":1}}],[\"seq实验\",{\"0\":{\"28\":1}}],[\"seq2\",{\"2\":{\"15\":1}}],[\"seq\",{\"0\":{\"20\":1},\"2\":{\"10\":2,\"15\":2,\"19\":4,\"41\":2,\"69\":1,\"83\":1}}],[\"seqwell\",{\"0\":{\"60\":1,\"77\":1},\"2\":{\"10\":1,\"41\":1}}],[\"shutil\",{\"2\":{\"12\":4}}],[\"should\",{\"2\":{\"6\":2,\"22\":1,\"32\":1,\"36\":2,\"53\":1,\"59\":1}}],[\"simulate\",{\"2\":{\"55\":1,\"89\":1}}],[\"simply\",{\"2\":{\"32\":1,\"59\":1}}],[\"singlefile\",{\"2\":{\"54\":1,\"73\":1}}],[\"size=\",{\"2\":{\"94\":1}}],[\"sizes\",{\"2\":{\"12\":8}}],[\"size\",{\"2\":{\"12\":4,\"32\":1,\"59\":1,\"92\":2,\"94\":1}}],[\"situation\",{\"2\":{\"6\":1,\"36\":1,\"51\":1,\"71\":1}}],[\"step\",{\"2\":{\"55\":4,\"89\":4}}],[\"str\",{\"2\":{\"94\":6}}],[\"strategies\",{\"2\":{\"55\":1,\"89\":1}}],[\"structures\",{\"2\":{\"55\":1,\"89\":1}}],[\"structured\",{\"2\":{\"55\":1,\"89\":1}}],[\"structuring\",{\"2\":{\"55\":1,\"89\":1}}],[\"strip\",{\"2\":{\"94\":1}}],[\"stripes\",{\"2\":{\"17\":1,\"40\":1}}],[\"string\",{\"2\":{\"12\":6,\"37\":1,\"62\":1,\"94\":2}}],[\"stdout\",{\"2\":{\"38\":1}}],[\"stderr\",{\"2\":{\"38\":1}}],[\"star2\",{\"2\":{\"60\":1,\"77\":1}}],[\"start\",{\"2\":{\"18\":2,\"50\":2}}],[\"star\",{\"2\":{\"10\":1,\"41\":1,\"55\":1,\"89\":1}}],[\"starsolo2\",{\"2\":{\"22\":2,\"53\":2,\"60\":1,\"77\":1}}],[\"starsolo\",{\"0\":{\"60\":1,\"77\":1},\"2\":{\"10\":2,\"41\":2,\"60\":2,\"77\":2}}],[\"standards\",{\"2\":{\"55\":1,\"89\":1}}],[\"stand\",{\"2\":{\"6\":1,\"36\":1}}],[\"still\",{\"0\":{\"7\":1,\"11\":1}}],[\"row\",{\"2\":{\"72\":11,\"89\":11,\"90\":11,\"92\":2,\"94\":32}}],[\"rows\",{\"2\":{\"72\":6,\"89\":6,\"90\":6,\"92\":1,\"94\":33}}],[\"roadmap\",{\"0\":{\"66\":1,\"81\":1}}],[\"robust\",{\"2\":{\"55\":2,\"89\":2}}],[\"robustness\",{\"2\":{\"31\":1}}],[\"rna\",{\"2\":{\"60\":1,\"77\":1}}],[\"rc\",{\"2\":{\"38\":1}}],[\"raise\",{\"2\":{\"94\":3}}],[\"raises\",{\"2\":{\"94\":1}}],[\"randint\",{\"2\":{\"94\":1}}],[\"random\",{\"2\":{\"94\":2}}],[\"range\",{\"2\":{\"94\":8}}],[\"rationalization\",{\"2\":{\"55\":1,\"89\":1}}],[\"rationalize\",{\"2\":{\"55\":1,\"89\":1}}],[\"ratio\",{\"2\":{\"32\":1,\"59\":1}}],[\"raw\",{\"2\":{\"6\":1,\"28\":2,\"36\":1}}],[\"run\",{\"2\":{\"28\":2,\"55\":1,\"89\":1}}],[\"runtime\",{\"2\":{\"12\":1}}],[\"rust\",{\"2\":{\"18\":2,\"50\":2}}],[\"r\",{\"2\":{\"17\":1,\"40\":1}}],[\"ri​\",{\"2\":{\"17\":1,\"40\":1}}],[\"ri\",{\"2\":{\"17\":1,\"40\":1}}],[\"right\",{\"2\":{\"17\":4,\"40\":4}}],[\"riωi\",{\"2\":{\"17\":1,\"40\":1}}],[\"ribocv是一个文档网站\",{\"2\":{\"0\":1}}],[\"r−i+1\",{\"2\":{\"17\":2,\"40\":2}}],[\"r+∑i=1r​ωi\",{\"2\":{\"17\":1,\"40\":1}}],[\"r+∑i=1r\",{\"2\":{\"17\":1,\"40\":1}}],[\"rhapsody\",{\"2\":{\"15\":1}}],[\"r2\",{\"2\":{\"12\":8,\"28\":1,\"32\":1,\"59\":1}}],[\"r1\",{\"2\":{\"12\":8,\"28\":1,\"32\":2,\"59\":2}}],[\"remove\",{\"2\":{\"94\":1}}],[\"remains\",{\"2\":{\"55\":1,\"89\":1}}],[\"return\",{\"2\":{\"94\":3}}],[\"returns\",{\"2\":{\"94\":2}}],[\"rectangle\",{\"2\":{\"94\":1}}],[\"recent\",{\"2\":{\"92\":1}}],[\"reused\",{\"0\":{\"66\":1,\"81\":1}}],[\"relatively\",{\"2\":{\"60\":1,\"77\":1}}],[\"reliability\",{\"2\":{\"55\":2,\"89\":2}}],[\"requirements\",{\"2\":{\"55\":1,\"89\":1}}],[\"review\",{\"2\":{\"55\":1,\"89\":1}}],[\"reviews\",{\"2\":{\"55\":1,\"89\":1}}],[\"reverse\",{\"2\":{\"32\":1,\"59\":1}}],[\"rejected\",{\"2\":{\"55\":1,\"89\":1}}],[\"reshape\",{\"2\":{\"92\":2,\"94\":4}}],[\"resolving\",{\"0\":{\"69\":1,\"83\":1}}],[\"resource\",{\"2\":{\"55\":1,\"89\":1}}],[\"results\",{\"2\":{\"18\":1,\"50\":1}}],[\"reasoned\",{\"2\":{\"55\":1,\"89\":1}}],[\"reasoning\",{\"2\":{\"55\":3,\"89\":3}}],[\"real\",{\"2\":{\"55\":1,\"89\":1}}],[\"readability\",{\"2\":{\"55\":3,\"89\":3}}],[\"readily\",{\"2\":{\"6\":1,\"36\":1}}],[\"renaming\",{\"2\":{\"32\":1,\"59\":1}}],[\"renamed\",{\"2\":{\"12\":3}}],[\"rename\",{\"2\":{\"12\":5}}],[\"refactoring\",{\"2\":{\"55\":1,\"89\":1}}],[\"refine\",{\"2\":{\"55\":2,\"89\":2}}],[\"refining\",{\"0\":{\"32\":1,\"59\":1}}],[\"reflect\",{\"2\":{\"55\":1,\"89\":1}}],[\"refdata\",{\"2\":{\"28\":2}}],[\"reference\",{\"2\":{\"28\":2}}],[\"registry\",{\"2\":{\"22\":6,\"53\":6}}],[\"represent\",{\"2\":{\"94\":1}}],[\"replaced\",{\"2\":{\"22\":1,\"53\":1}}],[\"replacing\",{\"2\":{\"18\":1,\"50\":1}}],[\"repositories\",{\"2\":{\"10\":1,\"41\":1}}],[\"red\",{\"2\":{\"17\":1,\"40\":1,\"94\":4}}],[\"further\",{\"2\":{\"94\":1}}],[\"full\",{\"0\":{\"63\":1,\"79\":1}}],[\"fully\",{\"2\":{\"55\":1,\"89\":1}}],[\"future\",{\"2\":{\"55\":3,\"89\":3}}],[\"functions\",{\"2\":{\"55\":1,\"89\":1}}],[\"function\",{\"0\":{\"26\":1,\"54\":1,\"56\":1,\"57\":1,\"73\":1,\"75\":1},\"2\":{\"17\":2,\"40\":2,\"94\":1}}],[\"figure\",{\"2\":{\"94\":1}}],[\"figsize=\",{\"2\":{\"94\":1}}],[\"fig\",{\"2\":{\"94\":1}}],[\"first\",{\"2\":{\"94\":5}}],[\"find\",{\"2\":{\"94\":2}}],[\"finds\",{\"2\":{\"94\":1}}],[\"final\",{\"2\":{\"55\":1,\"89\":1,\"94\":1}}],[\"fix\",{\"0\":{\"51\":1,\"71\":1}}],[\"filtering\",{\"2\":{\"60\":3,\"77\":3}}],[\"filtered\",{\"2\":{\"26\":2,\"38\":1,\"43\":1,\"56\":2}}],[\"filename=\",{\"2\":{\"94\":1}}],[\"filename\",{\"2\":{\"12\":10,\"94\":4}}],[\"filenames\",{\"2\":{\"12\":2}}],[\"file\",{\"2\":{\"12\":32,\"28\":2,\"32\":4,\"37\":1,\"51\":1,\"59\":4,\"62\":1,\"66\":2,\"71\":1,\"81\":2,\"92\":3}}],[\"files\",{\"0\":{\"42\":1,\"47\":1,\"60\":1,\"65\":1,\"66\":1,\"68\":1,\"77\":1,\"81\":1},\"2\":{\"12\":13,\"18\":2,\"26\":1,\"32\":3,\"50\":2,\"51\":1,\"54\":1,\"56\":1,\"57\":1,\"59\":3,\"71\":1,\"73\":1,\"75\":1}}],[\"factors\",{\"2\":{\"94\":1}}],[\"factorization\",{\"2\":{\"94\":2}}],[\"factor\",{\"2\":{\"72\":6,\"89\":6,\"90\":6,\"92\":2,\"94\":27}}],[\"facilitate\",{\"2\":{\"55\":1,\"89\":1}}],[\"facilitating\",{\"2\":{\"55\":1,\"89\":1}}],[\"fast\",{\"2\":{\"66\":1,\"81\":1}}],[\"fasterq\",{\"0\":{\"66\":1,\"81\":1}}],[\"fastq\",{\"2\":{\"12\":15,\"28\":5,\"32\":2,\"42\":1,\"54\":1,\"59\":2,\"65\":1,\"66\":2,\"73\":1,\"81\":2}}],[\"favorable\",{\"2\":{\"55\":1,\"89\":1}}],[\"false\",{\"2\":{\"28\":4}}],[\"fewer\",{\"2\":{\"60\":1,\"77\":1}}],[\"feedback\",{\"2\":{\"55\":1,\"89\":1}}],[\"feature\",{\"2\":{\"26\":2,\"38\":1,\"43\":1,\"56\":2}}],[\"fetch\",{\"2\":{\"6\":1,\"36\":1}}],[\"fontsize=8\",{\"2\":{\"94\":1}}],[\"following\",{\"2\":{\"55\":1,\"89\":1}}],[\"follow\",{\"2\":{\"55\":2,\"89\":2}}],[\"followed\",{\"2\":{\"22\":1,\"53\":1}}],[\"foo\",{\"2\":{\"17\":2,\"40\":2}}],[\"formatting\",{\"2\":{\"55\":1,\"89\":1}}],[\"forward\",{\"2\":{\"18\":1,\"50\":1}}],[\"for\",{\"0\":{\"31\":1,\"42\":1,\"65\":1},\"2\":{\"6\":1,\"10\":1,\"12\":2,\"18\":1,\"26\":1,\"31\":1,\"36\":1,\"41\":1,\"50\":1,\"51\":3,\"54\":1,\"55\":7,\"56\":1,\"60\":1,\"63\":1,\"71\":3,\"73\":1,\"77\":1,\"79\":1,\"89\":7,\"92\":2,\"94\":20}}],[\"frac\",{\"2\":{\"17\":4,\"40\":4}}],[\"from\",{\"2\":{\"12\":1,\"55\":1,\"60\":1,\"77\":1,\"89\":1,\"94\":2}}],[\"f\",{\"2\":{\"12\":6,\"94\":8}}],[\"bbox\",{\"2\":{\"94\":1}}],[\"black\",{\"2\":{\"94\":2}}],[\"bin\",{\"2\":{\"94\":1}}],[\"bio\",{\"2\":{\"31\":1}}],[\"bioos的真正能力将在您尝试构建数据模型\",{\"2\":{\"48\":1}}],[\"bioos\",{\"0\":{\"31\":1},\"2\":{\"28\":5}}],[\"bioos支持多种操作方式\",{\"2\":{\"1\":1}}],[\"boundaries\",{\"2\":{\"94\":2}}],[\"bounds\",{\"2\":{\"92\":1}}],[\"bottom\",{\"2\":{\"72\":3,\"89\":3,\"90\":3,\"92\":1,\"94\":5}}],[\"bottlenecks\",{\"2\":{\"55\":1,\"89\":1}}],[\"both\",{\"2\":{\"10\":1,\"41\":1,\"94\":2}}],[\"break\",{\"2\":{\"55\":1,\"89\":1}}],[\"by\",{\"2\":{\"55\":7,\"60\":2,\"63\":1,\"77\":2,\"79\":1,\"89\":7,\"94\":1}}],[\"bc\",{\"2\":{\"26\":2,\"38\":1,\"43\":1,\"56\":2}}],[\"bar\",{\"2\":{\"94\":1}}],[\"bars\",{\"2\":{\"94\":2}}],[\"barcode\",{\"2\":{\"60\":1,\"77\":1}}],[\"barcodes\",{\"2\":{\"32\":1,\"59\":1}}],[\"balance\",{\"2\":{\"55\":1,\"89\":1}}],[\"bam\",{\"2\":{\"28\":2,\"38\":2,\"57\":1,\"75\":1}}],[\"badge\",{\"2\":{\"17\":1,\"40\":1}}],[\"based\",{\"0\":{\"45\":1},\"2\":{\"12\":4,\"55\":1,\"60\":1,\"77\":1,\"89\":1,\"94\":2}}],[\"but\",{\"2\":{\"60\":1,\"77\":1}}],[\"bugs\",{\"0\":{\"51\":1,\"71\":1}}],[\"bullseye\",{\"2\":{\"12\":1,\"22\":1,\"53\":1}}],[\"built\",{\"2\":{\"6\":1,\"36\":1}}],[\"bd\",{\"0\":{\"60\":1,\"77\":1},\"2\":{\"10\":1,\"15\":1,\"41\":1}}],[\"b\",{\"2\":{\"10\":1,\"17\":21,\"40\":21,\"41\":1}}],[\"been\",{\"0\":{\"66\":1,\"81\":1}}],[\"best\",{\"2\":{\"55\":3,\"89\":3}}],[\"before\",{\"2\":{\"55\":1,\"89\":1}}],[\"between\",{\"2\":{\"55\":2,\"60\":1,\"77\":1,\"89\":2,\"94\":1}}],[\"begin\",{\"2\":{\"55\":1,\"89\":1}}],[\"being\",{\"2\":{\"18\":1,\"50\":1}}],[\"be\",{\"2\":{\"6\":1,\"18\":1,\"22\":1,\"32\":1,\"36\":1,\"50\":1,\"53\":1,\"55\":1,\"59\":1,\"60\":1,\"77\":1,\"89\":1,\"94\":1}}],[\"axes\",{\"2\":{\"94\":1}}],[\"axvline\",{\"2\":{\"94\":1}}],[\"axhline\",{\"2\":{\"94\":1}}],[\"ax\",{\"2\":{\"94\":12}}],[\"axis=1\",{\"2\":{\"94\":1}}],[\"axis=0\",{\"2\":{\"94\":1}}],[\"axis\",{\"2\":{\"92\":1,\"94\":2}}],[\"after\",{\"2\":{\"92\":1,\"94\":1}}],[\"author\",{\"2\":{\"94\":1}}],[\"authors\",{\"2\":{\"63\":1,\"79\":1}}],[\"auto\",{\"2\":{\"28\":2,\"31\":1}}],[\"ambient\",{\"2\":{\"60\":1,\"77\":1}}],[\"amp\",{\"0\":{\"60\":2,\"77\":2},\"2\":{\"10\":2,\"41\":2,\"57\":1,\"75\":1}}],[\"agreement\",{\"2\":{\"60\":1,\"77\":1}}],[\"against\",{\"2\":{\"55\":2,\"89\":2}}],[\"aiding\",{\"2\":{\"55\":1,\"89\":1}}],[\"ai\",{\"2\":{\"55\":1,\"89\":1}}],[\"ai放大了人类的能力边界\",{\"2\":{\"52\":1}}],[\"append\",{\"2\":{\"94\":5}}],[\"apply\",{\"2\":{\"55\":2,\"89\":2}}],[\"applying\",{\"2\":{\"55\":2,\"89\":2}}],[\"approaches\",{\"2\":{\"55\":1,\"89\":1}}],[\"approach\",{\"2\":{\"55\":3,\"89\":3}}],[\"appropriate\",{\"2\":{\"51\":1,\"71\":1}}],[\"app\",{\"0\":{\"45\":1}}],[\"api等工具的文档在这里\",{\"2\":{\"1\":1}}],[\"api等\",{\"2\":{\"1\":1}}],[\"activated\",{\"2\":{\"60\":1,\"77\":1}}],[\"access\",{\"2\":{\"94\":1}}],[\"accessible\",{\"2\":{\"55\":1,\"89\":1}}],[\"accept\",{\"2\":{\"37\":1,\"62\":1}}],[\"accurately\",{\"2\":{\"32\":1,\"59\":1}}],[\"accordingly\",{\"2\":{\"12\":1}}],[\"ac\",{\"2\":{\"22\":6,\"53\":6}}],[\"able\",{\"2\":{\"18\":1,\"50\":1}}],[\"analysis\",{\"2\":{\"38\":1}}],[\"any\",{\"2\":{\"18\":1,\"50\":1,\"55\":1,\"89\":1}}],[\"an\",{\"2\":{\"18\":1,\"31\":2,\"32\":1,\"37\":1,\"50\":1,\"55\":2,\"59\":1,\"62\":1,\"89\":2}}],[\"and\",{\"0\":{\"66\":1,\"81\":1},\"2\":{\"12\":3,\"32\":2,\"55\":36,\"59\":2,\"60\":2,\"63\":1,\"77\":2,\"79\":1,\"89\":36,\"92\":1,\"94\":11}}],[\"add\",{\"2\":{\"60\":1,\"77\":1,\"94\":1}}],[\"added\",{\"0\":{\"26\":1,\"47\":1,\"54\":1,\"56\":1,\"57\":1,\"60\":1,\"68\":1,\"73\":1,\"75\":1,\"77\":1},\"2\":{\"54\":1,\"69\":1,\"73\":1,\"83\":1,\"94\":1}}],[\"addeventlistener\",{\"2\":{\"17\":1,\"40\":1}}],[\"adjustments\",{\"2\":{\"55\":1,\"89\":1}}],[\"adaptive\",{\"2\":{\"55\":1,\"89\":1}}],[\"advanced\",{\"2\":{\"55\":2,\"60\":1,\"77\":1,\"89\":2}}],[\"advantage\",{\"2\":{\"6\":1,\"36\":1}}],[\"al\",{\"2\":{\"60\":1,\"77\":1}}],[\"aligns\",{\"2\":{\"55\":1,\"89\":1}}],[\"aligned\",{\"2\":{\"17\":1,\"40\":1}}],[\"alternative\",{\"2\":{\"55\":1,\"89\":1}}],[\"algorithms\",{\"2\":{\"55\":1,\"89\":1}}],[\"algorithm\",{\"2\":{\"55\":1,\"60\":2,\"77\":2,\"89\":1,\"92\":1,\"94\":3}}],[\"allowing\",{\"2\":{\"60\":1,\"77\":1}}],[\"all\",{\"2\":{\"22\":1,\"53\":1,\"55\":1,\"89\":1}}],[\"alert\",{\"2\":{\"17\":2,\"40\":2}}],[\"alone\",{\"2\":{\"6\":1,\"36\":1}}],[\"arange\",{\"2\":{\"94\":2}}],[\"articulate\",{\"2\":{\"55\":1,\"89\":1}}],[\"args\",{\"2\":{\"60\":2,\"77\":2}}],[\"arg\",{\"2\":{\"19\":1}}],[\"array\",{\"2\":{\"12\":5,\"37\":1,\"62\":1,\"94\":2}}],[\"areas\",{\"2\":{\"55\":1,\"89\":1}}],[\"are\",{\"0\":{\"7\":1,\"66\":1,\"81\":1},\"2\":{\"17\":2,\"18\":1,\"40\":2,\"50\":1,\"55\":2,\"60\":1,\"69\":1,\"77\":1,\"83\":1,\"89\":2}}],[\"attention\",{\"2\":{\"60\":1,\"77\":1}}],[\"attenton\",{\"0\":{\"22\":1,\"53\":1}}],[\"attribution\",{\"2\":{\"32\":1,\"59\":1}}],[\"at\",{\"2\":{\"10\":1,\"41\":1,\"55\":1,\"89\":1,\"94\":2}}],[\"atac\",{\"2\":{\"10\":1,\"19\":1,\"41\":1}}],[\"available\",{\"2\":{\"6\":1,\"36\":1}}],[\"assess\",{\"2\":{\"55\":1,\"89\":1}}],[\"assign\",{\"2\":{\"12\":1}}],[\"aside\",{\"2\":{\"17\":1,\"40\":1}}],[\"as\",{\"0\":{\"37\":1,\"62\":1},\"2\":{\"6\":1,\"18\":1,\"22\":1,\"36\":1,\"37\":1,\"50\":1,\"53\":1,\"55\":3,\"57\":2,\"62\":1,\"75\":2,\"89\":3,\"94\":12}}],[\"a\",{\"0\":{\"18\":1,\"50\":1},\"2\":{\"6\":1,\"17\":23,\"18\":2,\"31\":2,\"32\":1,\"36\":1,\"40\":23,\"50\":2,\"55\":4,\"59\":1,\"63\":1,\"69\":1,\"79\":1,\"83\":1,\"89\":4,\"94\":10}}],[\"write\",{\"2\":{\"55\":1,\"89\":1}}],[\"wrapper\",{\"2\":{\"17\":1,\"40\":1}}],[\"way\",{\"2\":{\"69\":1,\"83\":1}}],[\"was\",{\"2\":{\"32\":1,\"59\":1}}],[\"warning\",{\"2\":{\"17\":1,\"40\":1}}],[\"wise\",{\"2\":{\"92\":1,\"94\":1}}],[\"without\",{\"0\":{\"60\":1,\"77\":1}}],[\"with\",{\"0\":{\"63\":1,\"79\":1},\"2\":{\"32\":1,\"37\":1,\"51\":1,\"55\":1,\"59\":1,\"60\":1,\"62\":1,\"66\":1,\"71\":1,\"77\":1,\"81\":1,\"89\":1,\"92\":2,\"94\":11}}],[\"will\",{\"2\":{\"6\":1,\"36\":1,\"55\":2,\"89\":2}}],[\"whitespace\",{\"2\":{\"94\":1}}],[\"which=\",{\"2\":{\"94\":1}}],[\"which\",{\"0\":{\"60\":1,\"77\":1},\"2\":{\"66\":1,\"81\":1}}],[\"why\",{\"2\":{\"55\":2,\"89\":2}}],[\"whether\",{\"2\":{\"55\":1,\"89\":1}}],[\"when\",{\"2\":{\"32\":2,\"59\":2}}],[\"what\",{\"0\":{\"6\":1,\"10\":1,\"36\":1,\"41\":1}}],[\"wcnjupodeig44rr6t02v0\",{\"2\":{\"28\":5}}],[\"wdl文件或者云计算有深入的了解\",{\"2\":{\"24\":1}}],[\"wdl\",{\"0\":{\"31\":1,\"47\":1,\"60\":1,\"68\":1,\"77\":1},\"2\":{\"10\":7,\"12\":2,\"18\":1,\"26\":1,\"27\":2,\"41\":7,\"47\":1,\"50\":1,\"54\":1,\"56\":1,\"68\":1,\"73\":1}}],[\"word\",{\"2\":{\"17\":1,\"40\":1}}],[\"workflow\",{\"2\":{\"12\":2,\"28\":20,\"51\":1,\"55\":1,\"71\":1,\"89\":1}}],[\"workspace是bioos中的重要概念\",{\"2\":{\"2\":1}}],[\"workspace是什么\",{\"2\":{\"2\":1}}],[\"workspace\",{\"2\":{\"2\":1,\"23\":1}}],[\"woring\",{\"2\":{\"6\":1,\"36\":1}}],[\"were\",{\"2\":{\"55\":2,\"89\":2}}],[\"web\",{\"2\":{\"38\":1}}],[\"well\",{\"2\":{\"15\":1,\"55\":4,\"89\":4}}],[\"we\",{\"0\":{\"6\":1,\"7\":1,\"10\":1,\"36\":1,\"41\":1},\"2\":{\"6\":2,\"31\":1,\"36\":2,\"51\":3,\"71\":3}}],[\"300\",{\"2\":{\"28\":2}}],[\"32\",{\"2\":{\"28\":2}}],[\"3\",{\"0\":{\"5\":1,\"25\":1,\"44\":1,\"82\":1,\"84\":1,\"85\":2},\"1\":{\"9\":1,\"13\":1,\"17\":1,\"30\":1,\"35\":1,\"40\":1,\"52\":1,\"86\":2},\"2\":{\"12\":2,\"17\":3,\"22\":2,\"28\":2,\"40\":3,\"51\":1,\"53\":2,\"60\":3,\"71\":1,\"72\":1,\"77\":3,\"89\":2,\"90\":2}}],[\"认识bioos中存储数据的方式\",{\"2\":{\"4\":1}}],[\"🙋好\",{\"0\":{\"74\":1}}],[\"📏范式\",{\"0\":{\"61\":1}}],[\"👏👏👏\",{\"2\":{\"43\":1}}],[\"👏欢迎来到ribo🄲🆅\",{\"0\":{\"0\":1},\"1\":{\"1\":1,\"2\":1,\"4\":1}}],[\"🕺💃\",{\"0\":{\"8\":1},\"1\":{\"12\":1}}],[\"🚀\",{\"2\":{\"4\":1}}],[\"🔗\",{\"2\":{\"4\":1}}],[\"🔍\",{\"2\":{\"4\":1}}],[\"向bioos中导入工作流文件\",{\"0\":{\"12\":1},\"2\":{\"4\":1}}],[\"⚙️\",{\"0\":{\"12\":1},\"2\":{\"4\":1}}],[\"通过本文\",{\"2\":{\"4\":1}}],[\"2d\",{\"2\":{\"94\":3}}],[\"20\",{\"2\":{\"92\":2}}],[\"2024\",{\"0\":{\"18\":1,\"22\":1,\"26\":1,\"32\":1,\"37\":1,\"42\":1,\"47\":1,\"50\":1,\"51\":1,\"53\":1,\"54\":1,\"56\":1,\"57\":1,\"59\":1,\"60\":1,\"62\":1,\"63\":1,\"65\":1,\"66\":1,\"68\":1,\"69\":1,\"71\":1,\"73\":1,\"75\":1,\"77\":1,\"79\":1,\"81\":1,\"83\":1},\"2\":{\"94\":1}}],[\"22\",{\"0\":{\"60\":1,\"77\":1}}],[\"225\",{\"2\":{\"28\":2}}],[\"23\",{\"0\":{\"57\":1,\"75\":1}}],[\"26\",{\"0\":{\"54\":1,\"73\":1}}],[\"28\",{\"0\":{\"47\":1,\"51\":1,\"68\":1,\"71\":1}}],[\"2^\",{\"2\":{\"17\":1,\"40\":1}}],[\"2n−1−12^\",{\"2\":{\"17\":1,\"40\":1}}],[\"2n−1\",{\"2\":{\"17\":2,\"40\":2}}],[\"2\",{\"0\":{\"3\":1,\"21\":1,\"39\":1,\"84\":1},\"1\":{\"5\":1,\"9\":1,\"13\":1,\"17\":1,\"25\":1,\"30\":1,\"35\":1,\"40\":1},\"2\":{\"12\":2,\"17\":14,\"18\":1,\"22\":1,\"40\":14,\"50\":1,\"53\":1,\"69\":1,\"72\":2,\"83\":1,\"89\":3,\"90\":3,\"94\":2}}],[\"账号在哪\",{\"2\":{\"2\":1}}],[\"您需要确保您的键盘具有ctrl键\",{\"2\":{\"49\":1}}],[\"您需要准备\",{\"0\":{\"2\":1}}],[\"您已经掌握了bioos的基本使用方法\",{\"2\":{\"43\":1}}],[\"您只需要依次填写您自己的参数即可\",{\"2\":{\"28\":1}}],[\"您只需要知道如何使用json文件来描述您的实验参数\",{\"2\":{\"24\":1}}],[\"您会发现\",{\"2\":{\"28\":1}}],[\"您可以查看\",{\"2\":{\"38\":1}}],[\"您可以在分析历史中看到您的任务\",{\"2\":{\"38\":1}}],[\"您可以在系统引导下创建一个workspace\",{\"2\":{\"2\":1}}],[\"您可以将其导入到bioos中\",{\"2\":{\"12\":1}}],[\"您将学会如何完成一个简单的计算任务\",{\"2\":{\"4\":1}}],[\"您在首次登录自己的账户时\",{\"2\":{\"2\":1}}],[\"您一定是会这个的\",{\"2\":{\"0\":1}}]],\"serializationVersion\":2}" \ No newline at end of file +export default "{\"documentCount\":95,\"nextId\":95,\"documentIds\":{\"0\":\"/quickstart/#👏欢迎来到riboc🆅\",\"1\":\"/quickstart/#写在开头\",\"2\":\"/news/#what-we-need\",\"3\":\"/quickstart/#您需要准备\",\"4\":\"/notes/onProgress/#sorry-we-are-still-on-progress\",\"5\":\"/news/#what-we-have-now\",\"6\":\"/quickstart/#主要内容\",\"7\":\"/notes/onProgress/#正在更新-still-on-progress\",\"8\":\"/news/#update\",\"9\":\"/article/f659up3p/#标题-2\",\"10\":\"/quickstart/#让我们开始吧-🕺💃\",\"11\":\"/notes/onProgress/#视频嵌入\",\"12\":\"/news/#_2024-10-10-let-s-have-a-try\",\"13\":\"/article/f659up3p/#标题-3\",\"14\":\"/quickstart/#⚙️-向bioos中导入工作流文件\",\"15\":\"/notes/onProgress/#标题-2\",\"16\":\"/news/#_2024-10-9-attenton\",\"17\":\"/article/f659up3p/#标题-4\",\"18\":\"/01_10X_Genomics/#服务于10x-genomics的单细胞测序数据分析。\",\"19\":\"/notes/onProgress/#标题-3\",\"20\":\"/01_10X_Genomics/scRNA-seq/#_10x-genomics-scrna-seq\",\"21\":\"/news/#_2024-5-14-function-added\",\"22\":\"/article/f659up3p/#标题-5\",\"23\":\"/02_othersNot10XGenomics/#服务于非10x-genomics的单细胞测序数据分析。\",\"24\":\"/notes/onProgress/#标题-4\",\"25\":\"/01_10X_Genomics/scRNA-seq/#写在前面\",\"26\":\"/03_dataArrangement/#服务于单细胞测序数据整理-关注bioos平台的数据整理和存储方式。\",\"27\":\"/news/#_2024-5-11-refining-code-logic\",\"28\":\"/article/f659up3p/#标题-6\",\"29\":\"/notes/onProgress/#标题-5\",\"30\":\"/01_10X_Genomics/scRNA-seq/#对于一个典型的10x-genomics-scrna-seq实验-我们推荐使用如下的json文件\",\"31\":\"/04_codeStyle/#服务于代码风格-关注代码的可读性和可维护性\",\"32\":\"/news/#_2024-5-9-multi-need-to-set-na-as\",\"33\":\"/04_codeStyle/meandAI/#快速实现\",\"34\":\"/notes/onProgress/#标题-6\",\"35\":\"/demo/news/#wdl-tools-for-bioos\",\"36\":\"/01_10X_Genomics/scRNA-seq/#提交任务\",\"37\":\"/news/#_2024-5-4-updated-naming-logic-for-files\",\"38\":\"/04_codeStyle/meandAI/#完整示例\",\"39\":\"/notes/onProgress/#online-notebook-based-on-marimo-app\",\"40\":\"/demo/news/#what-we-need\",\"41\":\"/01_10X_Genomics/scRNA-seq/#查看结果\",\"42\":\"/news/#_2024-4-28-added-unplanned-wdl-files\",\"43\":\"/04_codeStyle/meandAI/#引言\",\"44\":\"/demo/news/#what-we-have-now\",\"45\":\"/01_10X_Genomics/scRNA-seq/#🤔-如果你想在本地查看结果\",\"46\":\"/news/#_2024-4-28-bugs-fix\",\"47\":\"/04_codeStyle/meandAI/#读者应该明确\",\"48\":\"/demo/news/#update\",\"49\":\"/01_10X_Genomics/scRNA-seq/#如果我有很多数据呢\",\"50\":\"/news/#_2024-4-26-function-added\",\"51\":\"/04_codeStyle/meandAI/#第一部分-对gpt输入代码风格化的要求\",\"52\":\"/demo/news/#_2024-10-10-let-s-have-a-try\",\"53\":\"/news/#_2024-4-23-function-added\",\"54\":\"/04_codeStyle/meandAI/#第二部分-把你的想法转换为伪代码或类似的逻辑描述\",\"55\":\"/demo/news/#_2024-10-9-attenton\",\"56\":\"/news/#_2024-4-22-added-starsolo-wdl-files-which-could-used-in-bd-seqwell-dropseq-without-umitools\",\"57\":\"/04_codeStyle/meandAI/#📏范式\",\"58\":\"/demo/news/#_2024-5-14-function-added\",\"59\":\"/news/#_2024-4-16-must-come-with-full-image-information-slide-number-etc\",\"60\":\"/04_codeStyle/meandAI/#为什么需要伪代码\",\"61\":\"/demo/news/#_2024-5-11-refining-code-logic\",\"62\":\"/news/#_2024-4-12-the-technical-roadmap-has-been-updated-and-sra-files-are-now-reused-using-fasterq-dump\",\"63\":\"/04_codeStyle/meandAI/#第一种交互方式\",\"64\":\"/demo/news/#_2024-5-9-multi-need-to-set-na-as\",\"65\":\"/news/#_2024-4-11-resolving-compatibility-issues\",\"66\":\"/04_codeStyle/meandAI/#第二种交互方式\",\"67\":\"/demo/news/#_2024-5-4-updated-naming-logic-for-files\",\"68\":\"/04_codeStyle/meandAI/#伪代码的交互\",\"69\":\"/demo/news/#_2024-4-28-added-unplanned-wdl-files\",\"70\":\"/04_codeStyle/meandAI/#🙋好-那么好-这时候聪明的你就要问了\",\"71\":\"/demo/news/#_2024-4-28-bugs-fix\",\"72\":\"/04_codeStyle/meandAI/#我都写到这种程度了-为什么我不亲自写一遍-好像工作量是差不多的。\",\"73\":\"/demo/news/#_2024-4-26-function-added\",\"74\":\"/04_codeStyle/meandAI/#第三部分-怎么让gpt整点复杂的东西\",\"75\":\"/demo/news/#_2024-4-23-function-added\",\"76\":\"/04_codeStyle/meandAI/#这一点和完成一个大型工程一摸一样\",\"77\":\"/demo/news/#_2024-4-22-added-starsolo-wdl-files-which-could-used-in-bd-seqwell-dropseq-without-umitools\",\"78\":\"/04_codeStyle/meandAI/#_3-1-定义互相解耦的模块\",\"79\":\"/demo/news/#_2024-4-16-must-come-with-full-image-information-slide-number-etc\",\"80\":\"/04_codeStyle/meandAI/#_3-2-模块化的实施步骤\",\"81\":\"/demo/news/#_2024-4-12-the-technical-roadmap-has-been-updated-and-sra-files-are-now-reused-using-fasterq-dump\",\"82\":\"/04_codeStyle/meandAI/#_3-3-利用gpt进行模块化开发\",\"83\":\"/demo/news/#_2024-4-11-resolving-compatibility-issues\",\"84\":\"/04_codeStyle/meandAI/#_1-分块粘贴伪代码\",\"85\":\"/04_codeStyle/meandAI/#作为结论\",\"86\":\"/04_codeStyle/meandAI/#实践-让我们在这里引入一个具体的例子\",\"87\":\"/04_codeStyle/meandAI/#我们实际上做了什么\",\"88\":\"/04_codeStyle/meandAI/#主体部分\",\"89\":\"/04_codeStyle/meandAI/#模块1\",\"90\":\"/04_codeStyle/meandAI/#debug\",\"91\":\"/04_codeStyle/meandAI/#模块2\",\"92\":\"/04_codeStyle/meandAI/#最终结果\",\"93\":\"/04_codeStyle/meandAI/#代码的运行效果\",\"94\":\"/04_codeStyle/meandAI/#结语\"},\"fieldIds\":{\"title\":0,\"titles\":1,\"text\":2},\"fieldLength\":{\"0\":[1,1,8],\"1\":[1,2,10],\"2\":[4,1,45],\"3\":[1,2,14],\"4\":[7,1,1],\"5\":[4,1,39],\"6\":[1,2,12],\"7\":[4,1,1],\"8\":[1,1,1],\"9\":[2,1,1],\"10\":[2,1,1],\"11\":[1,1,3],\"12\":[7,2,41],\"13\":[2,3,1],\"14\":[2,3,109],\"15\":[2,1,1],\"16\":[5,2,32],\"17\":[2,4,1],\"18\":[3,1,10],\"19\":[2,3,1],\"20\":[4,1,3],\"21\":[5,2,19],\"22\":[2,5,1],\"23\":[3,1,11],\"24\":[2,4,1],\"25\":[1,1,17],\"26\":[3,1,7],\"27\":[6,2,55],\"28\":[2,6,173],\"29\":[2,5,1],\"30\":[6,2,77],\"31\":[2,1,13],\"32\":[10,2,13],\"33\":[1,1,9],\"34\":[2,6,168],\"35\":[4,1,22],\"36\":[1,2,16],\"37\":[8,2,11],\"38\":[1,2,4],\"39\":[6,1,7],\"40\":[4,1,45],\"41\":[1,2,70],\"42\":[7,2,5],\"43\":[1,1,7],\"44\":[4,1,39],\"45\":[3,1,19],\"46\":[5,2,33],\"47\":[1,3,24],\"48\":[1,1,1],\"49\":[2,1,16],\"50\":[5,2,11],\"51\":[2,1,322],\"52\":[7,2,41],\"53\":[5,2,12],\"54\":[2,1,1],\"55\":[5,2,32],\"56\":[18,2,83],\"57\":[1,3,26],\"58\":[5,2,19],\"59\":[13,2,17],\"60\":[2,3,7],\"61\":[6,2,55],\"62\":[18,2,19],\"63\":[1,4,11],\"64\":[10,2,13],\"65\":[6,2,24],\"66\":[1,4,17],\"67\":[8,2,11],\"68\":[1,4,88],\"69\":[7,2,5],\"70\":[4,3,1],\"71\":[5,2,33],\"72\":[4,1,27],\"73\":[5,2,11],\"74\":[3,4,9],\"75\":[5,2,12],\"76\":[1,6,10],\"77\":[18,2,83],\"78\":[3,6,13],\"79\":[13,2,17],\"80\":[3,6,13],\"81\":[18,2,19],\"82\":[2,6,1],\"83\":[6,2,24],\"84\":[2,8,1],\"85\":[1,4,1],\"86\":[2,5,11],\"87\":[2,5,413],\"88\":[1,6,97],\"89\":[1,6,10],\"90\":[1,6,80],\"91\":[1,6,8],\"92\":[1,6,304],\"93\":[1,6,4],\"94\":[1,4,16]},\"averageFieldLength\":[4.010526315789473,2.642105263157896,34.22105263157896],\"storedFields\":{\"0\":{\"title\":\"👏欢迎来到Ribo🄲🆅\",\"titles\":[null]},\"1\":{\"title\":\"写在开头\",\"titles\":[null,\"👏欢迎来到Ribo🄲🆅\"]},\"2\":{\"title\":\"What we need?\",\"titles\":[null]},\"3\":{\"title\":\"您需要准备\",\"titles\":[null,\"👏欢迎来到Ribo🄲🆅\"]},\"4\":{\"title\":\"Sorry, we are still on progress.\",\"titles\":[null]},\"5\":{\"title\":\"What we have,now\",\"titles\":[null]},\"6\":{\"title\":\"主要内容\",\"titles\":[null,\"👏欢迎来到Ribo🄲🆅\"]},\"7\":{\"title\":\"正在更新 Still On Progress\",\"titles\":[null]},\"8\":{\"title\":\"Update\",\"titles\":[null]},\"9\":{\"title\":\"标题 2\",\"titles\":[null]},\"10\":{\"title\":\"让我们开始吧!🕺💃\",\"titles\":[null]},\"11\":{\"title\":\"视频嵌入\",\"titles\":[null]},\"12\":{\"title\":\"2024.10.10 : let's have a try\",\"titles\":[null,\"Update\"]},\"13\":{\"title\":\"标题 3\",\"titles\":[null,\"标题 2\"]},\"14\":{\"title\":\"⚙️ 向BioOS中导入工作流文件\",\"titles\":[null,\"让我们开始吧!🕺💃\"]},\"15\":{\"title\":\"标题 2\",\"titles\":[null]},\"16\":{\"title\":\"2024.10.9 : ATTENTON!\",\"titles\":[null,\"Update\"]},\"17\":{\"title\":\"标题 4\",\"titles\":[null,\"标题 2\",\"标题 3\"]},\"18\":{\"title\":\"服务于10X Genomics的单细胞测序数据分析。\",\"titles\":[null]},\"19\":{\"title\":\"标题 3\",\"titles\":[null,\"标题 2\"]},\"20\":{\"title\":\"10X Genomics scRNA-seq\",\"titles\":[null]},\"21\":{\"title\":\"2024.5.14 : Function added\",\"titles\":[null,\"Update\"]},\"22\":{\"title\":\"标题 5\",\"titles\":[null,\"标题 2\",\"标题 3\",\"标题 4\"]},\"23\":{\"title\":\"服务于非10X Genomics的单细胞测序数据分析。\",\"titles\":[null]},\"24\":{\"title\":\"标题 4\",\"titles\":[null,\"标题 2\",\"标题 3\"]},\"25\":{\"title\":\"写在前面\",\"titles\":[null]},\"26\":{\"title\":\"服务于单细胞测序数据整理,关注BioOS平台的数据整理和存储方式。\",\"titles\":[null]},\"27\":{\"title\":\"2024.5.11 : Refining Code Logic\",\"titles\":[null,\"Update\"]},\"28\":{\"title\":\"标题 6\",\"titles\":[null,\"标题 2\",\"标题 3\",\"标题 4\",\"标题 5\"]},\"29\":{\"title\":\"标题 5\",\"titles\":[null,\"标题 2\",\"标题 3\",\"标题 4\"]},\"30\":{\"title\":\"对于一个典型的10X Genomics scRNA-seq实验,我们推荐使用如下的json文件:\",\"titles\":[null,\"写在前面\"]},\"31\":{\"title\":\"服务于代码风格,关注代码的可读性和可维护性\",\"titles\":[null]},\"32\":{\"title\":\"2024.5.9 : multi need to set NA as []\",\"titles\":[null,\"Update\"]},\"33\":{\"title\":\"快速实现\",\"titles\":[null]},\"34\":{\"title\":\"标题 6\",\"titles\":[null,\"标题 2\",\"标题 3\",\"标题 4\",\"标题 5\"]},\"35\":{\"title\":\"WDL Tools for BioOS\",\"titles\":[null]},\"36\":{\"title\":\"提交任务\",\"titles\":[null,\"写在前面\"]},\"37\":{\"title\":\"2024.5.4 : Updated naming logic for files\",\"titles\":[null,\"Update\"]},\"38\":{\"title\":\"完整示例\",\"titles\":[null,\"快速实现\"]},\"39\":{\"title\":\"online notebook, based on marimo.app\",\"titles\":[null]},\"40\":{\"title\":\"What we need?\",\"titles\":[null]},\"41\":{\"title\":\"查看结果\",\"titles\":[null,\"写在前面\"]},\"42\":{\"title\":\"2024.4.28 : Added unplanned WDL files\",\"titles\":[null,\"Update\"]},\"43\":{\"title\":\"引言\",\"titles\":[null]},\"44\":{\"title\":\"What we have,now\",\"titles\":[null]},\"45\":{\"title\":\"🤔 如果你想在本地查看结果?\",\"titles\":[null]},\"46\":{\"title\":\"2024.4.28 : Bugs fix\",\"titles\":[null,\"Update\"]},\"47\":{\"title\":\"读者应该明确\",\"titles\":[null,\"引言\",\"完整示例\"]},\"48\":{\"title\":\"Update\",\"titles\":[null]},\"49\":{\"title\":\"如果我有很多数据呢?\",\"titles\":[null]},\"50\":{\"title\":\"2024.4.26 : Function added\",\"titles\":[null,\"Update\"]},\"51\":{\"title\":\"第一部分:对GPT输入代码风格化的要求\",\"titles\":[null]},\"52\":{\"title\":\"2024.10.10 : let's have a try\",\"titles\":[null,\"Update\"]},\"53\":{\"title\":\"2024.4.23 : Function added\",\"titles\":[null,\"Update\"]},\"54\":{\"title\":\"第二部分:把你的想法转换为伪代码或类似的逻辑描述\",\"titles\":[null]},\"55\":{\"title\":\"2024.10.9 : ATTENTON!\",\"titles\":[null,\"Update\"]},\"56\":{\"title\":\"2024.4.22 : Added STARsolo WDL files, which could used in BD&SeqWell&Dropseq, without umitools.\",\"titles\":[null,\"Update\"]},\"57\":{\"title\":\"📏范式\",\"titles\":[null,\"第二部分:把你的想法转换为伪代码或类似的逻辑描述\"]},\"58\":{\"title\":\"2024.5.14 : Function added\",\"titles\":[null,\"Update\"]},\"59\":{\"title\":\"2024.4.16 : Must come with full image information, slide number, etc.\",\"titles\":[null,\"Update\"]},\"60\":{\"title\":\"为什么需要伪代码?\",\"titles\":[null,\"第二部分:把你的想法转换为伪代码或类似的逻辑描述\"]},\"61\":{\"title\":\"2024.5.11 : Refining Code Logic\",\"titles\":[null,\"Update\"]},\"62\":{\"title\":\"2024.4.12 : The technical roadmap has been updated, and sra files are now reused using fasterq-dump\",\"titles\":[null,\"Update\"]},\"63\":{\"title\":\"第一种交互方式\",\"titles\":[null,\"第二部分:把你的想法转换为伪代码或类似的逻辑描述\",\"为什么需要伪代码?\"]},\"64\":{\"title\":\"2024.5.9 : multi need to set NA as []\",\"titles\":[null,\"Update\"]},\"65\":{\"title\":\"2024.4.11 : Resolving compatibility issues\",\"titles\":[null,\"Update\"]},\"66\":{\"title\":\"第二种交互方式\",\"titles\":[null,\"第二部分:把你的想法转换为伪代码或类似的逻辑描述\",\"为什么需要伪代码?\"]},\"67\":{\"title\":\"2024.5.4 : Updated naming logic for files\",\"titles\":[null,\"Update\"]},\"68\":{\"title\":\"伪代码的交互\",\"titles\":[null,\"第二部分:把你的想法转换为伪代码或类似的逻辑描述\",\"为什么需要伪代码?\"]},\"69\":{\"title\":\"2024.4.28 : Added unplanned WDL files\",\"titles\":[null,\"Update\"]},\"70\":{\"title\":\"🙋好,那么好,这时候聪明的你就要问了:\",\"titles\":[null,\"第二部分:把你的想法转换为伪代码或类似的逻辑描述\"]},\"71\":{\"title\":\"2024.4.28 : Bugs fix\",\"titles\":[null,\"Update\"]},\"72\":{\"title\":\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"titles\":[]},\"73\":{\"title\":\"2024.4.26 : Function added\",\"titles\":[null,\"Update\"]},\"74\":{\"title\":\"第三部分:怎么让GPT整点复杂的东西?\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\"]},\"75\":{\"title\":\"2024.4.23 : Function added\",\"titles\":[null,\"Update\"]},\"76\":{\"title\":\"这一点和完成一个大型工程一摸一样\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"第三部分:怎么让GPT整点复杂的东西?\"]},\"77\":{\"title\":\"2024.4.22 : Added STARsolo WDL files, which could used in BD&SeqWell&Dropseq, without umitools.\",\"titles\":[null,\"Update\"]},\"78\":{\"title\":\"3.1 定义互相解耦的模块\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"第三部分:怎么让GPT整点复杂的东西?\"]},\"79\":{\"title\":\"2024.4.16 : Must come with full image information, slide number, etc.\",\"titles\":[null,\"Update\"]},\"80\":{\"title\":\"3.2 模块化的实施步骤\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"第三部分:怎么让GPT整点复杂的东西?\"]},\"81\":{\"title\":\"2024.4.12 : The technical roadmap has been updated, and sra files are now reused using fasterq-dump\",\"titles\":[null,\"Update\"]},\"82\":{\"title\":\"3.3 利用GPT进行模块化开发\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"第三部分:怎么让GPT整点复杂的东西?\"]},\"83\":{\"title\":\"2024.4.11 : Resolving compatibility issues\",\"titles\":[null,\"Update\"]},\"84\":{\"title\":\"1. 分块粘贴伪代码\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"第三部分:怎么让GPT整点复杂的东西?\",\"3.3 利用GPT进行模块化开发\"]},\"85\":{\"title\":\"作为结论\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\"]},\"86\":{\"title\":\"实践:让我们在这里引入一个具体的例子\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"作为结论\"]},\"87\":{\"title\":\"我们实际上做了什么?\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"作为结论\"]},\"88\":{\"title\":\"主体部分\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"作为结论\",\"我们实际上做了什么?\"]},\"89\":{\"title\":\"模块1\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"作为结论\",\"我们实际上做了什么?\"]},\"90\":{\"title\":\"debug\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"作为结论\",\"我们实际上做了什么?\"]},\"91\":{\"title\":\"模块2\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"作为结论\",\"我们实际上做了什么?\"]},\"92\":{\"title\":\"最终结果\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"作为结论\",\"我们实际上做了什么?\"]},\"93\":{\"title\":\"代码的运行效果\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\",\"作为结论\",\"我们实际上做了什么?\"]},\"94\":{\"title\":\"结语\",\"titles\":[\"“我都写到这种程度了,为什么我不亲自写一遍?好像工作量是差不多的。”\"]}},\"dirtCount\":0,\"index\":[[\"书中对软件工程的思考\",{\"2\":{\"94\":1}}],[\"虽然此书是写于1975年\",{\"2\":{\"94\":1}}],[\"人月神话\",{\"2\":{\"94\":1}}],[\"人的思考\",{\"2\":{\"94\":1}}],[\"人工智能协助代码开发\",{\"2\":{\"31\":1}}],[\"结语\",{\"0\":{\"94\":1}}],[\"结构化\",{\"2\":{\"74\":1}}],[\"仔细看看下面的代码\",{\"2\":{\"93\":1}}],[\"仔细观察\",{\"2\":{\"30\":1}}],[\"便于在终端中查阅进度\",{\"2\":{\"91\":1}}],[\"用绿色的粗实线来表示\",{\"2\":{\"91\":1}}],[\"用填写数字的表格代表矩阵\",{\"2\":{\"89\":1}}],[\"刚刚我们的代码实现了对于按列拆分时的可视化\",{\"2\":{\"91\":1}}],[\"80x12\",{\"2\":{\"90\":1}}],[\"80\",{\"2\":{\"90\":1}}],[\"8\",{\"2\":{\"90\":1,\"92\":2}}],[\"详细的上下文信息是\",{\"2\":{\"90\":1}}],[\"矩阵被切分的接缝处使用红色粗实线进行区分\",{\"2\":{\"89\":1}}],[\"矩阵的形状\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"表格中的每个小格子都是正方形\",{\"2\":{\"89\":1}}],[\"表格使用黑色实线\",{\"2\":{\"89\":1}}],[\"于是出现了问题\",{\"2\":{\"89\":1}}],[\"技术选型为python3\",{\"2\":{\"88\":1}}],[\"着重显示拆分矩阵的边界\",{\"2\":{\"88\":1}}],[\"生成矩阵\",{\"2\":{\"88\":1}}],[\"验证用户的输入是否合适我们的拆分方法\",{\"2\":{\"88\":1}}],[\"主体部分\",{\"0\":{\"88\":1}}],[\"主要关注结果的描述和需求\",{\"2\":{\"66\":1}}],[\"主要内容\",{\"0\":{\"6\":1}}],[\"捕获用户输入的两个数字作为矩阵的尺寸\",{\"2\":{\"87\":1,\"88\":1}}],[\"插入功能点这里同上\",{\"2\":{\"87\":1}}],[\"先主体4\",{\"2\":{\"87\":1}}],[\"编写伪代码3\",{\"2\":{\"87\":1}}],[\"编写包含你所有的要求和想法的伪代码\",{\"2\":{\"33\":1,\"87\":1}}],[\"具体的\",{\"2\":{\"87\":1}}],[\"具体的参数的解释请参考10x\",{\"2\":{\"30\":1}}],[\"实践\",{\"0\":{\"86\":1}}],[\"实体之后展现\",{\"2\":{\"49\":1}}],[\"作为结论\",{\"0\":{\"85\":1},\"1\":{\"86\":1,\"87\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1}}],[\"作为快速上手教程\",{\"2\":{\"30\":1}}],[\"分享链接\",{\"2\":{\"86\":1}}],[\"分块粘贴伪代码\",{\"0\":{\"84\":1}}],[\"分模块实现\",{\"2\":{\"33\":1,\"87\":1}}],[\"利用gpt进行模块化开发\",{\"0\":{\"82\":1},\"1\":{\"84\":1}}],[\"利用json传递计算参数\",{\"2\":{\"6\":1}}],[\"进一步进行限定5\",{\"2\":{\"87\":1}}],[\"进行系统级别的测试和优化\",{\"2\":{\"80\":1}}],[\"进入任务详情页面\",{\"2\":{\"41\":1}}],[\"集成与系统测试\",{\"2\":{\"80\":1}}],[\"独立测试每个模块的功能和性能\",{\"2\":{\"80\":1}}],[\"逐个模块的开发与测试\",{\"2\":{\"80\":1}}],[\"确定模块之间的依赖关系\",{\"2\":{\"80\":1}}],[\"确保模块间的解耦\",{\"2\":{\"76\":1}}],[\"收集和分析项目需求\",{\"2\":{\"80\":1}}],[\"需求分析与功能分解\",{\"2\":{\"80\":1}}],[\"需要作为\",{\"2\":{\"76\":1}}],[\"使用api和协议确保模块独立性\",{\"2\":{\"78\":1}}],[\"模块2\",{\"0\":{\"91\":1}}],[\"模块1\",{\"0\":{\"89\":1}}],[\"模块设计与规划\",{\"2\":{\"80\":1}}],[\"模块化的实施步骤\",{\"0\":{\"80\":1}}],[\"模块间通信的标准\",{\"2\":{\"78\":1}}],[\"模块划分原则\",{\"2\":{\"78\":1}}],[\"接口设计\",{\"2\":{\"78\":1}}],[\"后端\",{\"2\":{\"78\":1}}],[\"功能分解的方法\",{\"2\":{\"78\":1}}],[\"识别关键功能模块\",{\"2\":{\"78\":1}}],[\"明确的接口和责任\",{\"2\":{\"78\":1}}],[\"明确告诉gpt\",{\"2\":{\"51\":1}}],[\"高内聚低耦合\",{\"2\":{\"78\":1}}],[\"有些时候你会想用不同的大模型来完成不同的模块\",{\"2\":{\"76\":1}}],[\"有序列表3\",{\"2\":{\"28\":1,\"34\":1}}],[\"有序列表2\",{\"2\":{\"28\":1,\"34\":1}}],[\"有序列表1\",{\"2\":{\"28\":1,\"34\":1}}],[\"架构师\",{\"2\":{\"76\":1}}],[\"基于效率上的考虑\",{\"2\":{\"74\":1}}],[\"受限于其上下文能力\",{\"2\":{\"74\":1}}],[\"受文本长度限制\",{\"2\":{\"43\":1}}],[\"大语言模型的技术一直在进步\",{\"2\":{\"74\":1}}],[\"诚然\",{\"2\":{\"74\":1}}],[\"怎么让gpt整点复杂的东西\",{\"0\":{\"74\":1},\"1\":{\"76\":1,\"78\":1,\"80\":1,\"82\":1,\"84\":1}}],[\"远比你维护代码的复杂性要低\",{\"2\":{\"72\":1}}],[\"远比你写代码tricks带来的进步要大\",{\"2\":{\"72\":1}}],[\"维护自然语言的伪代码的复杂性\",{\"2\":{\"72\":1}}],[\"抽象\",{\"2\":{\"72\":1}}],[\"充满了各种隐喻\",{\"2\":{\"72\":1}}],[\"把拆分后的矩阵和原有的矩阵在一张图片上叠加显示\",{\"2\":{\"88\":1}}],[\"把代码写的像诗一样的优雅\",{\"2\":{\"72\":1}}],[\"把你的想法转换为伪代码或类似的逻辑描述\",{\"0\":{\"54\":1},\"1\":{\"57\":1,\"60\":1,\"63\":1,\"66\":1,\"68\":1,\"70\":1}}],[\"很多优秀的工程师都有这样的习惯\",{\"2\":{\"72\":1}}],[\"复杂性只会从这里转移到那里\",{\"2\":{\"72\":1}}],[\"复杂性不会消失\",{\"2\":{\"72\":1}}],[\"复杂性也是一样的\",{\"2\":{\"72\":1}}],[\"复制2\",{\"2\":{\"87\":1}}],[\"复制对gpt输入代码风格化的要求\",{\"2\":{\"33\":1,\"87\":1}}],[\"复制\",{\"2\":{\"25\":1}}],[\"复制粘贴\",{\"2\":{\"0\":1}}],[\"笑容只会从一个人的脸上转移到另一个人的脸上\",{\"2\":{\"72\":1}}],[\"再者\",{\"2\":{\"72\":1}}],[\"算法上的革新带来的进步\",{\"2\":{\"72\":1}}],[\"而不是写代码上\",{\"2\":{\"72\":1}}],[\"而不需要详细说明如何达到这个结果\",{\"2\":{\"57\":1,\"66\":1}}],[\"甚至可以是java\",{\"2\":{\"72\":1}}],[\"它既可以是面向对象的\",{\"2\":{\"72\":1}}],[\"它既可以是python也可以是c++\",{\"2\":{\"72\":1}}],[\"它第一行是\",{\"2\":{\"63\":1}}],[\"根据我的观察\",{\"2\":{\"72\":1}}],[\"好像工作量是差不多的\",{\"0\":{\"72\":1},\"1\":{\"74\":1,\"76\":1,\"78\":1,\"80\":1,\"82\":1,\"84\":1,\"85\":1,\"86\":1,\"87\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1}}],[\"拼接\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"列的小矩阵数量\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"行的小矩阵数量\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"行内脚注文本\",{\"2\":{\"28\":1,\"39\":1}}],[\"行内的脚注\",{\"2\":{\"28\":1,\"34\":1}}],[\"取相邻行的小矩阵进行垂直拼接\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"取相邻列的接缝区域\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"添加到\",{\"2\":{\"68\":4,\"87\":4,\"88\":4}}],[\"合并\",{\"2\":{\"68\":2,\"87\":2,\"88\":2}}],[\"获取当前行的小矩阵和下一行的小矩阵\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"获取当前小矩阵的最后一列和下一个小矩阵的第一列\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"获取矩阵的行数和列数\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"小矩阵数量\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"初始化\",{\"2\":{\"68\":4,\"87\":4,\"88\":4}}],[\"水平拆分\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"中\",{\"2\":{\"68\":6,\"87\":6,\"88\":6}}],[\"按照规划顺序开发模块\",{\"2\":{\"80\":1}}],[\"按行合并\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"按行遍历\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"按列合并\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"按\",{\"2\":{\"68\":2,\"87\":2,\"88\":2}}],[\"按因数拆分行和列\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"将各模块集成到整体系统中\",{\"2\":{\"80\":1}}],[\"将需求转化为功能模块\",{\"2\":{\"80\":1}}],[\"将一个web应用划分为前端\",{\"2\":{\"78\":1}}],[\"将拆分结果存储到对象属性中\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"将\",{\"2\":{\"68\":4,\"87\":4,\"88\":4}}],[\"将每个子矩阵按列拆分为更小的矩阵\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"将矩阵垂直拆分\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"将矩阵按行拆分为多个子矩阵\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"将您的json文件上传\",{\"2\":{\"36\":1}}],[\"本身\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"本文尽量不对任何内容的驱动原理做出解释\",{\"2\":{\"43\":1}}],[\"本文通过几个例子展示了用gpt敲代码的几个模式\",{\"2\":{\"43\":1}}],[\"本文将介绍如何通过网页操作bioos\",{\"2\":{\"1\":1}}],[\"本文的目的在于让您快速对bioos上的计算资源有初步的了解\",{\"2\":{\"1\":1}}],[\"返回\",{\"2\":{\"68\":3,\"87\":3,\"88\":3}}],[\"整除\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"整洁代码\",{\"2\":{\"51\":1}}],[\"能被\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"包含\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"包括以下几个方面\",{\"2\":{\"6\":1}}],[\"包括网页\",{\"2\":{\"1\":1}}],[\"从\",{\"2\":{\"68\":4,\"87\":4,\"88\":4}}],[\"寻找矩阵的因数\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"假设你想要一个按照一定规则拆分矩阵的代码\",{\"2\":{\"68\":1}}],[\"伪代码的交互\",{\"0\":{\"68\":1}}],[\"正如笑容不会消失\",{\"2\":{\"72\":1}}],[\"正是基于这个逻辑\",{\"2\":{\"66\":1}}],[\"正在更新\",{\"0\":{\"7\":1}}],[\"那么你得到的代码就越符合你的预期\",{\"2\":{\"66\":1}}],[\"那么好\",{\"0\":{\"70\":1},\"2\":{\"49\":1}}],[\"比如李逵和李鬼\",{\"2\":{\"66\":1}}],[\"尤其是你缺乏对代码的深入理解时\",{\"2\":{\"66\":1}}],[\"声明式交互在代码实现上具有更大的风险\",{\"2\":{\"66\":1}}],[\"声明式编程\",{\"2\":{\"57\":1}}],[\"直接说\",{\"2\":{\"66\":1}}],[\"最终结果\",{\"0\":{\"92\":1}}],[\"最终的交付形式为可以独立运行的python脚本\",{\"2\":{\"87\":1,\"88\":1}}],[\"最后一行是\",{\"2\":{\"63\":1}}],[\"最简代码模式\",{\"2\":{\"31\":1}}],[\"函数体中需要有return\",{\"2\":{\"63\":1}}],[\"我推荐书籍\",{\"2\":{\"94\":1}}],[\"我必须在这里重申\",{\"2\":{\"94\":1}}],[\"我在运行这段代码的时候遇到了问题\",{\"2\":{\"90\":1}}],[\"我希望得到一张png图像\",{\"2\":{\"89\":1}}],[\"我对可视化的部分做出限定\",{\"2\":{\"89\":1}}],[\"我没有严格的定义可视化的方式\",{\"2\":{\"89\":1}}],[\"我定义了第2部分的伪代码\",{\"2\":{\"88\":1}}],[\"我定义我的模块有\",{\"2\":{\"88\":1}}],[\"我构思了一个矩阵拆分的算法\",{\"2\":{\"88\":1}}],[\"我创建了chatgpt\",{\"2\":{\"86\":1}}],[\"我利用刚刚例子中的伪代码和拆分模块的思想制作了promote\",{\"2\":{\"86\":1}}],[\"我都写到这种程度了\",{\"0\":{\"72\":1},\"1\":{\"74\":1,\"76\":1,\"78\":1,\"80\":1,\"82\":1,\"84\":1,\"85\":1,\"86\":1,\"87\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1}}],[\"我提供一个比较极端的例子\",{\"2\":{\"68\":1}}],[\"我需要一个算法\",{\"2\":{\"66\":1}}],[\"我需要你写一段代码\",{\"2\":{\"63\":1}}],[\"我可能会\",{\"2\":{\"60\":1}}],[\"我们在最终的图像上增加按行拆分矩阵时的线\",{\"2\":{\"91\":1}}],[\"我们在这里只展示了bioos的冰山一角\",{\"2\":{\"49\":1}}],[\"我们在这里展示的是一个多样本的分析结果\",{\"2\":{\"41\":1}}],[\"我们实际上做了什么\",{\"0\":{\"87\":1},\"1\":{\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1}}],[\"我们应该尝试把真实的工程进行模块化\",{\"2\":{\"74\":1}}],[\"我们可以尝试把复杂性转移到机器上\",{\"2\":{\"72\":1}}],[\"我们才需要在第二步进行伪代码交互\",{\"2\":{\"66\":1}}],[\"我们的交互方式大致上有两类\",{\"2\":{\"60\":1}}],[\"我们的目标是您只需要知道如何\",{\"2\":{\"25\":1}}],[\"我们需要这里的\",{\"2\":{\"45\":1}}],[\"我们需要的文件在\",{\"2\":{\"41\":1}}],[\"我们已经准备好了\",{\"2\":{\"30\":1}}],[\"我们添加了文件路径\",{\"2\":{\"30\":1}}],[\"我们也会对一些关键参数做出解释\",{\"2\":{\"30\":1}}],[\"我们不对具体的参数做出解释\",{\"2\":{\"30\":1}}],[\"我们不要求您对json文件\",{\"2\":{\"25\":1}}],[\"我们推荐使用如下的json文件\",{\"0\":{\"30\":1}}],[\"我们推荐您使用json文件来描述和存档您的实验参数\",{\"2\":{\"20\":1}}],[\"我们假设您已经对平台的使用有了基础的了解\",{\"2\":{\"25\":1}}],[\"我们假设我们的用户唯一需要的前置知识是如何在计算机上熟练的使用浏览器\",{\"2\":{\"0\":1}}],[\"举个例子\",{\"2\":{\"60\":1}}],[\"回想一下🤔\",{\"2\":{\"60\":1}}],[\"以及对象之间的交互\",{\"2\":{\"57\":1}}],[\"每个\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"每个对象都包含数据和操作数据的方法\",{\"2\":{\"57\":1}}],[\"每种组学分别对应不同的工具\",{\"2\":{\"18\":1}}],[\"面向对象编程强调的是数据抽象和封装\",{\"2\":{\"57\":1}}],[\"面向对象编程\",{\"2\":{\"57\":1}}],[\"程序被组织成对象\",{\"2\":{\"57\":1}}],[\"程序员只需要描述他们想要的结果\",{\"2\":{\"57\":1}}],[\"程序由一系列的命令或语句组成\",{\"2\":{\"57\":1}}],[\"j\",{\"2\":{\"68\":4,\"87\":4,\"88\":4,\"92\":12}}],[\"java\",{\"2\":{\"57\":2}}],[\"justifications\",{\"2\":{\"51\":1,\"87\":1}}],[\"judge\",{\"2\":{\"12\":1,\"52\":1}}],[\"和\",{\"2\":{\"57\":3,\"68\":2,\"87\":2,\"88\":2}}],[\"典型代表\",{\"2\":{\"57\":3}}],[\"计算机按照这些命令执行操作\",{\"2\":{\"57\":1}}],[\"命令式编程\",{\"2\":{\"57\":1}}],[\"命令行\",{\"2\":{\"1\":2}}],[\"常见的范式有\",{\"2\":{\"57\":1}}],[\"knee\",{\"2\":{\"56\":1,\"77\":1}}],[\"key\",{\"2\":{\"51\":1,\"87\":1}}],[\"key=lambda\",{\"2\":{\"14\":1}}],[\"7\",{\"2\":{\"56\":1,\"77\":1}}],[\"第三部分\",{\"0\":{\"74\":1},\"1\":{\"76\":1,\"78\":1,\"80\":1,\"82\":1,\"84\":1}}],[\"第三拆分方法\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"第二拆分方法\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"第二种交互方式\",{\"0\":{\"66\":1}}],[\"第二部分\",{\"0\":{\"54\":1},\"1\":{\"57\":1,\"60\":1,\"63\":1,\"66\":1,\"68\":1,\"70\":1}}],[\"第一拆分方法\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"第一种交互方式\",{\"0\":{\"63\":1}}],[\"第一部分\",{\"0\":{\"51\":1}}],[\"q\",{\"2\":{\"51\":1,\"87\":1}}],[\"quality\",{\"2\":{\"51\":2,\"87\":2}}],[\"quot\",{\"2\":{\"36\":6,\"37\":2,\"41\":4,\"46\":2,\"67\":2,\"71\":2}}],[\"queryselector\",{\"2\":{\"28\":1,\"34\":1}}],[\"quickly\",{\"2\":{\"12\":1,\"52\":1}}],[\"如是否可以进行因式分解\",{\"2\":{\"88\":1}}],[\"如同下面的文本所示\",{\"2\":{\"51\":1}}],[\"如果没有找到因数\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"如果\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"如果你写了伪代码\",{\"2\":{\"72\":1}}],[\"如果你有一些类似于\",{\"2\":{\"51\":1}}],[\"如果你想在本地查看结果\",{\"0\":{\"45\":1}}],[\"如果我们有很多数据\",{\"2\":{\"49\":1}}],[\"如果我有很多数据呢\",{\"0\":{\"49\":1}}],[\"如果您按照上图的方法点击查看结果\",{\"2\":{\"41\":1}}],[\"如果还没有\",{\"2\":{\"25\":1}}],[\"的质量\",{\"2\":{\"94\":1}}],[\"的你首先对你的工程进行定义\",{\"2\":{\"76\":1}}],[\"的第一行\",{\"2\":{\"68\":2,\"87\":2,\"88\":2}}],[\"的最后一行\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"的最后一行和\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"的最小因数\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"的偏好\",{\"2\":{\"51\":1}}],[\"的加速都能带来巨大的收益\",{\"2\":{\"31\":1}}],[\"跟我复制\",{\"2\":{\"51\":1}}],[\"下一行的小矩阵\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"下一个小矩阵的第一列\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"下面我们再对可视化的部分进行功能点的新增\",{\"2\":{\"91\":1}}],[\"下面\",{\"2\":{\"49\":1}}],[\"下载结果\",{\"2\":{\"41\":1}}],[\"当前行的小矩阵\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"当前小矩阵的最后一列\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"当我需要让gpt帮我写一个算法时\",{\"2\":{\"60\":1}}],[\"当我们和gpt之类的产品进行交互时\",{\"2\":{\"60\":1}}],[\"当然不是\",{\"2\":{\"49\":1}}],[\"当你尝试把一件简单的事情重复做上一万遍的时候\",{\"2\":{\"49\":1}}],[\"其复杂度将会指数增加📈\",{\"2\":{\"49\":1}}],[\"政治经济学原理\",{\"2\":{\"47\":1}}],[\"穆勒\",{\"2\":{\"47\":1}}],[\"斯图亚特\",{\"2\":{\"47\":1}}],[\"约翰\",{\"2\":{\"47\":1}}],[\"一步一步的学习如何调度bioos强大的计算能力\",{\"2\":{\"49\":1}}],[\"一切已有的机械发明\",{\"2\":{\"47\":1}}],[\"一个bioos\",{\"2\":{\"3\":1}}],[\"一个bioos账号\",{\"2\":{\"3\":1}}],[\"值得怀疑的是\",{\"2\":{\"47\":1}}],[\"为每个模块制定详细设计\",{\"2\":{\"80\":1}}],[\"为了春分利用这一点\",{\"2\":{\"76\":1}}],[\"为了便于工作流的可重复性\",{\"2\":{\"20\":1}}],[\"为什么我不亲自写一遍\",{\"0\":{\"72\":1},\"1\":{\"74\":1,\"76\":1,\"78\":1,\"80\":1,\"82\":1,\"84\":1,\"85\":1,\"86\":1,\"87\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1}}],[\"为什么需要伪代码\",{\"0\":{\"60\":1},\"1\":{\"63\":1,\"66\":1,\"68\":1}}],[\"为一个空列表\",{\"2\":{\"68\":4,\"87\":4,\"88\":4}}],[\"为政篇\",{\"2\":{\"47\":1}}],[\"论语\",{\"2\":{\"47\":1}}],[\"孔子\",{\"2\":{\"47\":1}}],[\"君子不器\",{\"2\":{\"47\":1}}],[\"序言\",{\"2\":{\"47\":1}}],[\"工程控制论\",{\"2\":{\"47\":1}}],[\"工程控制论正在推动电子计算机技术革命的深入\",{\"2\":{\"47\":1}}],[\"钱学森\",{\"2\":{\"47\":1}}],[\"更高超的人\",{\"2\":{\"47\":1}}],[\"已经成为更有作为\",{\"2\":{\"47\":1}}],[\"由电子计算机和机器智能装备起来的人\",{\"2\":{\"47\":1}}],[\"读者应该明确\",{\"0\":{\"47\":1}}],[\"到\",{\"2\":{\"68\":4,\"87\":4,\"88\":4}}],[\"到此为止\",{\"2\":{\"45\":1}}],[\"到哪里去\",{\"2\":{\"31\":1}}],[\"🎊\",{\"2\":{\"45\":1}}],[\"🎊bravo\",{\"2\":{\"45\":1}}],[\"文件\",{\"2\":{\"45\":1}}],[\"文件夹中\",{\"2\":{\"41\":1}}],[\"🤔好\",{\"2\":{\"49\":1}}],[\"🤔\",{\"0\":{\"45\":1}}],[\"引言\",{\"0\":{\"43\":1},\"1\":{\"47\":1}}],[\"引用\",{\"2\":{\"30\":1}}],[\"引用内容\",{\"2\":{\"28\":2,\"34\":2}}],[\"找到大于\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"找到我们需要的文件\",{\"2\":{\"41\":2}}],[\"找到页面上的\",{\"2\":{\"36\":1}}],[\"所有的日志以及结果文件都会列出在这里\",{\"2\":{\"41\":1}}],[\"所有的结果文件都会列出在这里\",{\"2\":{\"41\":1}}],[\"所以您会看到多个样本的结果文件夹\",{\"2\":{\"41\":1}}],[\"脚本文件\",{\"2\":{\"41\":1}}],[\"脚注文字\",{\"2\":{\"28\":1,\"39\":1}}],[\"脚注\",{\"2\":{\"28\":4,\"34\":3,\"39\":1}}],[\"日志文件\",{\"2\":{\"41\":1}}],[\"└──\",{\"2\":{\"41\":3}}],[\"│\",{\"2\":{\"41\":17}}],[\"├──\",{\"2\":{\"41\":10}}],[\"$id\",{\"2\":{\"45\":1}}],[\"$workflow标识id\",{\"2\":{\"41\":1}}],[\"$wdl\",{\"2\":{\"41\":2}}],[\"$投递任务id\",{\"2\":{\"41\":1}}],[\"$1\",{\"2\":{\"28\":1,\"34\":1}}],[\"$12\",{\"2\":{\"28\":1,\"34\":1}}],[\"$1600\",{\"2\":{\"28\":1,\"34\":1}}],[\"全部文件\",{\"2\":{\"41\":1}}],[\"你可以在这里看到一个完整的例子\",{\"2\":{\"86\":1}}],[\"你可以在这里看到完整的上下文信息\",{\"2\":{\"86\":1}}],[\"你可以参考下面的步骤来定义你的模块\",{\"2\":{\"76\":1}}],[\"你可以把更多的时间花在思考上\",{\"2\":{\"72\":1}}],[\"你可能需要内网环境\",{\"2\":{\"1\":1}}],[\"你和gpt的交互的伪代码如下\",{\"2\":{\"68\":1}}],[\"你和gpt之间的信息越一致\",{\"2\":{\"66\":1}}],[\"你的文件结构是这个样子\",{\"2\":{\"41\":1}}],[\"也正是这个原因\",{\"2\":{\"72\":1}}],[\"也可以是函数式的\",{\"2\":{\"72\":1}}],[\"也可以由多个段落组成\",{\"2\":{\"28\":1,\"39\":1}}],[\"也要像这样一个一个点击吗\",{\"2\":{\"49\":1}}],[\"也包括运行日志等文件\",{\"2\":{\"41\":1}}],[\"除了结果之外\",{\"2\":{\"41\":1}}],[\"查看\",{\"2\":{\"41\":1}}],[\"查看结果\",{\"0\":{\"41\":1}}],[\"任务完成后\",{\"2\":{\"41\":1}}],[\"任务列表4\",{\"2\":{\"28\":1,\"34\":1}}],[\"任务列表3\",{\"2\":{\"28\":1,\"34\":1}}],[\"任务列表2\",{\"2\":{\"28\":1,\"34\":1}}],[\"任务列表1\",{\"2\":{\"28\":1,\"34\":1}}],[\"完整示例\",{\"0\":{\"38\":1},\"1\":{\"47\":1}}],[\"等待任务完成\",{\"2\":{\"36\":1}}],[\"开始分析\",{\"2\":{\"36\":1}}],[\"点击链接\",{\"2\":{\"86\":1}}],[\"点击\",{\"2\":{\"41\":1}}],[\"点击任务名称\",{\"2\":{\"41\":1}}],[\"点击看chatgpt\",{\"2\":{\"38\":1}}],[\"点击页面上的绿色按钮\",{\"2\":{\"36\":1}}],[\"点击鼠标\",{\"2\":{\"0\":1}}],[\"然后是四行函数体\",{\"2\":{\"63\":1}}],[\"然后是3个参数\",{\"2\":{\"63\":1}}],[\"然后是函数名\",{\"2\":{\"63\":1}}],[\"然后\",{\"2\":{\"36\":1}}],[\"上传json文件\",{\"2\":{\"36\":1}}],[\"上传和下载\",{\"2\":{\"26\":1}}],[\"输入参数\",{\"2\":{\"36\":1}}],[\"运行时文件\",{\"2\":{\"41\":1}}],[\"运行参数\",{\"2\":{\"36\":1}}],[\"运行工作流并查看运行结果\",{\"2\":{\"6\":1}}],[\"试试看\",{\"2\":{\"36\":1}}],[\"来到我们的cellrangertest页面\",{\"2\":{\"36\":1}}],[\"让我们在这里引入一个具体的例子\",{\"0\":{\"86\":1}}],[\"让我们从一个稍微复杂的例子开始\",{\"2\":{\"49\":1}}],[\"让我们点击下载\",{\"2\":{\"45\":1}}],[\"让我们逐渐深入文件夹\",{\"2\":{\"41\":1}}],[\"让我们逐级打开文件夹\",{\"2\":{\"41\":1}}],[\"让我们来看看结果吧\",{\"2\":{\"41\":1}}],[\"让我们回到bioos平台\",{\"2\":{\"36\":1}}],[\"让我们开始吧\",{\"0\":{\"10\":1},\"1\":{\"14\":1},\"2\":{\"25\":1}}],[\"提交任务\",{\"0\":{\"36\":1}}],[\"提示内容\",{\"2\":{\"28\":1,\"34\":1}}],[\"提示\",{\"2\":{\"3\":1,\"28\":2,\"34\":2,\"68\":1,\"74\":1,\"76\":1,\"86\":1}}],[\"拆分伪代码\",{\"2\":{\"33\":1,\"87\":1}}],[\"快速实现\",{\"0\":{\"33\":1},\"1\":{\"38\":1}}],[\"镜像从哪里来\",{\"2\":{\"31\":1}}],[\"加速\",{\"2\":{\"31\":1}}],[\"加粗文字\",{\"2\":{\"28\":1,\"34\":1}}],[\"加粗\",{\"2\":{\"28\":1,\"34\":1}}],[\"仅供参考\",{\"2\":{\"31\":1}}],[\"非常值得阅读\",{\"2\":{\"94\":1}}],[\"非常好👍\",{\"2\":{\"91\":1}}],[\"非常好使\",{\"2\":{\"63\":1}}],[\"非常好的问题\",{\"2\":{\"49\":1}}],[\"非常多的个人经验的引入\",{\"2\":{\"31\":1}}],[\"非常强大\",{\"2\":{\"28\":1,\"34\":1}}],[\"关注代码的可读性和可维护性\",{\"0\":{\"31\":1}}],[\"关注bioos平台的数据整理和存储方式\",{\"0\":{\"26\":1}}],[\"现在就提交任务吧\",{\"2\":{\"30\":1}}],[\"是否减轻了任何人每天的辛劳\",{\"2\":{\"47\":1}}],[\"是的\",{\"2\":{\"30\":1}}],[\"是你的代码和数据存储的抽象概念\",{\"2\":{\"3\":1}}],[\"展开上标引用\",{\"2\":{\"30\":1}}],[\"或者你有明确的编程习惯\",{\"2\":{\"51\":1}}],[\"或者\",{\"2\":{\"30\":1}}],[\"或者联系管理员\",{\"2\":{\"3\":1}}],[\"可折叠\",{\"2\":{\"30\":1}}],[\"可以包含特殊标记\",{\"2\":{\"28\":1,\"39\":1}}],[\"在绘图的部分外部套一个tqdm的进度展示\",{\"2\":{\"91\":1}}],[\"在gpt的帮助下\",{\"2\":{\"72\":1}}],[\"在\",{\"2\":{\"68\":2,\"87\":2,\"88\":2}}],[\"在这个示例中\",{\"2\":{\"41\":1}}],[\"在这里\",{\"2\":{\"25\":1,\"72\":1,\"94\":1}}],[\"在这里我们将展示如何使用bioos上的计算资源\",{\"2\":{\"0\":1}}],[\"在本例中\",{\"2\":{\"41\":1}}],[\"在任务详情页面\",{\"2\":{\"41\":1}}],[\"在支持文档\",{\"2\":{\"30\":1}}],[\"在大部分情况下\",{\"2\":{\"30\":1}}],[\"但数十年来多次重印\",{\"2\":{\"94\":1}}],[\"但是\",{\"2\":{\"74\":1}}],[\"但社会生活的主体依然是自然人\",{\"2\":{\"47\":1}}],[\"但没关系\",{\"2\":{\"30\":1}}],[\"但每种组学分别对应不同的参数文件\",{\"2\":{\"23\":1}}],[\"看起来很复杂\",{\"2\":{\"30\":1}}],[\"看看您的邮箱\",{\"2\":{\"3\":1}}],[\"对软件开发中人的因素的思考\",{\"2\":{\"94\":1}}],[\"对矩阵进行拆分\",{\"2\":{\"88\":1}}],[\"对于每个\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"对于\",{\"2\":{\"68\":5,\"87\":5,\"88\":5}}],[\"对于一个典型的10x\",{\"0\":{\"30\":1}}],[\"对gpt输入代码风格化的要求\",{\"0\":{\"51\":1}}],[\"对吧\",{\"2\":{\"0\":1}}],[\"↩︎\",{\"2\":{\"28\":4,\"39\":4}}],[\"重复的页脚定义\",{\"2\":{\"28\":1,\"34\":1}}],[\"重要内容\",{\"2\":{\"28\":1,\"34\":1}}],[\"重要\",{\"2\":{\"28\":2,\"34\":2,\"47\":1,\"66\":1,\"86\":1}}],[\"定义互相解耦的模块\",{\"0\":{\"78\":1}}],[\"定义函数\",{\"2\":{\"68\":1,\"87\":1,\"88\":1}}],[\"定义\",{\"2\":{\"28\":1,\"34\":1}}],[\"选项卡\",{\"2\":{\"28\":1,\"34\":1,\"36\":1}}],[\">非常\",{\"2\":{\"28\":1,\"34\":1}}],[\">>>\",{\"2\":{\"14\":1}}],[\"相关信息\",{\"2\":{\"28\":1,\"34\":1}}],[\"注意代码块右侧的复制按钮\",{\"2\":{\"87\":1}}],[\"注意这几个存在内容新增的部分\",{\"2\":{\"30\":1}}],[\"注意\",{\"2\":{\"28\":2,\"34\":2,\"88\":1}}],[\"注\",{\"2\":{\"28\":1,\"34\":1,\"47\":1}}],[\"注释内容\",{\"2\":{\"28\":1,\"34\":1}}],[\"注释\",{\"2\":{\"28\":1,\"30\":1,\"34\":1}}],[\"错误内容\",{\"2\":{\"28\":1,\"34\":1}}],[\"错误\",{\"2\":{\"28\":1,\"34\":1}}],[\"警告内容\",{\"2\":{\"28\":1,\"34\":1}}],[\"警告\",{\"2\":{\"28\":2,\"34\":2,\"66\":1}}],[\"信息内容\",{\"2\":{\"28\":1,\"34\":1}}],[\"信息\",{\"2\":{\"28\":1,\"34\":1}}],[\"代码的最终结果极大的取决于\",{\"2\":{\"94\":1}}],[\"代码的运行效果\",{\"0\":{\"93\":1}}],[\"代码如下\",{\"2\":{\"88\":1}}],[\"代码模式\",{\"2\":{\"31\":1}}],[\"代码演示\",{\"2\":{\"28\":1,\"34\":1}}],[\"代码块聚焦\",{\"2\":{\"28\":1,\"34\":1}}],[\"代码块高亮\",{\"2\":{\"28\":1,\"34\":1}}],[\"代码分组\",{\"2\":{\"28\":1,\"34\":1}}],[\"代码\",{\"2\":{\"28\":1,\"34\":1}}],[\"示例\",{\"2\":{\"28\":1,\"34\":1,\"78\":1}}],[\"图标\",{\"2\":{\"28\":1,\"34\":1}}],[\"外部链接\",{\"2\":{\"28\":1,\"34\":1}}],[\"链接\",{\"2\":{\"28\":3,\"34\":3}}],[\"zebra\",{\"2\":{\"28\":1,\"34\":1}}],[\"无序列表3\",{\"2\":{\"28\":1,\"34\":1}}],[\"无序列表2\",{\"2\":{\"28\":1,\"34\":1}}],[\"无序列表1\",{\"2\":{\"28\":1,\"34\":1}}],[\"ωyω​\",{\"2\":{\"28\":2,\"34\":2}}],[\"∂ωr∂r​\",{\"2\":{\"28\":1,\"34\":1}}],[\"∂r∂ωr\",{\"2\":{\"28\":1,\"34\":1}}],[\"^\",{\"2\":{\"28\":2,\"34\":2}}],[\"^r\",{\"2\":{\"28\":2,\"34\":2}}],[\"yaxis\",{\"2\":{\"92\":1}}],[\"yticklabels\",{\"2\":{\"92\":1}}],[\"yticks\",{\"2\":{\"92\":1}}],[\"ylim\",{\"2\":{\"92\":1}}],[\"your\",{\"2\":{\"51\":10,\"87\":10}}],[\"you\",{\"2\":{\"51\":4,\"56\":1,\"77\":1,\"87\":4}}],[\"y\",{\"2\":{\"28\":2,\"34\":2,\"92\":1}}],[\"y^\",{\"2\":{\"28\":2,\"34\":2}}],[\"yωω\",{\"2\":{\"28\":2,\"34\":2}}],[\"−1\",{\"2\":{\"28\":2,\"34\":2}}],[\"−\",{\"2\":{\"28\":2,\"34\":2}}],[\"数学表达式\",{\"2\":{\"28\":1,\"34\":1}}],[\"数据库等模块\",{\"2\":{\"78\":1}}],[\"数据共享\",{\"2\":{\"26\":1}}],[\"数据存储\",{\"2\":{\"26\":1}}],[\"数据模型\",{\"2\":{\"26\":1}}],[\"标准输出文件\",{\"2\":{\"41\":1}}],[\"标准错误文件\",{\"2\":{\"41\":1}}],[\"标记\",{\"2\":{\"28\":1,\"34\":1}}],[\"标题1标题2内容区块\",{\"2\":{\"28\":2,\"34\":2}}],[\"标题\",{\"0\":{\"9\":1,\"13\":1,\"15\":1,\"17\":1,\"19\":1,\"22\":1,\"24\":1,\"28\":1,\"29\":1,\"34\":1},\"1\":{\"13\":1,\"17\":2,\"19\":1,\"22\":3,\"24\":2,\"28\":4,\"29\":3,\"34\":4}}],[\"内容区块\",{\"2\":{\"28\":2,\"34\":2}}],[\"内容右对齐\",{\"2\":{\"28\":1,\"34\":1}}],[\"内容居中\",{\"2\":{\"28\":1,\"34\":1}}],[\"内容\",{\"2\":{\"28\":1,\"34\":1}}],[\"删除文字\",{\"2\":{\"28\":1,\"34\":1}}],[\"斜体文字\",{\"2\":{\"28\":1,\"34\":1}}],[\"斜体\",{\"2\":{\"28\":1,\"34\":1}}],[\"60\",{\"2\":{\"90\":1}}],[\"6\",{\"0\":{\"28\":1,\"34\":1},\"2\":{\"65\":1,\"83\":1}}],[\"桶\",{\"2\":{\"26\":1}}],[\"就是这么简单\",{\"2\":{\"30\":1}}],[\"就能完成您的实验\",{\"2\":{\"25\":1}}],[\"就像是一个文件夹\",{\"2\":{\"3\":1}}],[\"粘贴\",{\"2\":{\"25\":1}}],[\"请在进行代码产出时\",{\"2\":{\"51\":1}}],[\"请注意\",{\"2\":{\"25\":1}}],[\"请参考动手学bioos计算\",{\"2\":{\"25\":1}}],[\"请参考bioos文件管理\",{\"2\":{\"25\":1}}],[\"并把结果存在你的类中\",{\"2\":{\"68\":1}}],[\"并成功完成了一次10x\",{\"2\":{\"45\":1}}],[\"并填写了run\",{\"2\":{\"30\":1}}],[\"并创建了必要的文件夹\",{\"2\":{\"25\":1}}],[\"并进行一些简单的操作\",{\"2\":{\"1\":1}}],[\"写在前面\",{\"0\":{\"25\":1},\"1\":{\"30\":1,\"36\":1,\"41\":1}}],[\"写在开头\",{\"0\":{\"1\":1}}],[\"统一使用starsolo工具\",{\"2\":{\"23\":1}}],[\"服务于代码风格\",{\"0\":{\"31\":1}}],[\"服务于单细胞测序数据整理\",{\"0\":{\"26\":1}}],[\"服务于非10x\",{\"0\":{\"23\":1}}],[\"服务于10x\",{\"0\":{\"18\":1}}],[\"5891stdy8062334\",{\"2\":{\"30\":4}}],[\"5\",{\"0\":{\"21\":1,\"22\":1,\"27\":1,\"29\":1,\"32\":1,\"37\":1,\"58\":1,\"61\":1,\"64\":1,\"67\":1},\"1\":{\"28\":1,\"34\":1},\"2\":{\"87\":5,\"92\":2}}],[\"4\",{\"0\":{\"17\":1,\"24\":1,\"37\":1,\"42\":1,\"46\":1,\"50\":1,\"53\":1,\"56\":1,\"59\":1,\"62\":1,\"65\":1,\"67\":1,\"69\":1,\"71\":1,\"73\":1,\"75\":1,\"77\":1,\"79\":1,\"81\":1,\"83\":1},\"1\":{\"22\":1,\"28\":1,\"29\":1,\"34\":1},\"2\":{\"68\":1,\"87\":1,\"88\":1,\"90\":2,\"92\":5}}],[\"这就是你加上o1\",{\"2\":{\"93\":1}}],[\"这一点和完成一个大型工程一摸一样\",{\"0\":{\"76\":1}}],[\"这时候聪明的你就要问了\",{\"0\":{\"70\":1}}],[\"这时候可能就会有人问了\",{\"2\":{\"49\":1}}],[\"这是一种典型的声明式交互\",{\"2\":{\"66\":1}}],[\"这是一种典型的命令式交互\",{\"2\":{\"63\":1}}],[\"这是最早也是最基本的编程范式\",{\"2\":{\"57\":1}}],[\"这段代码第一行是def\",{\"2\":{\"63\":1}}],[\"这样一个现实已经来到了人类面前\",{\"2\":{\"47\":1}}],[\"这取决于wdl文件的具体设置\",{\"2\":{\"41\":1}}],[\"这和您在本地计算的参数填写逻辑是一样的\",{\"2\":{\"30\":1}}],[\"这个算法需要满足以下要求\",{\"2\":{\"66\":1}}],[\"这个json文件的部分参数已经自动设置好了\",{\"2\":{\"30\":1}}],[\"这个过程如下图所示\",{\"2\":{\"14\":1}}],[\"这里上面的提示词有些问题\",{\"2\":{\"89\":1}}],[\"这里我们分块实现\",{\"2\":{\"87\":1}}],[\"这里我们给出了填写示例\",{\"2\":{\"30\":1}}],[\"这里同上\",{\"2\":{\"87\":1}}],[\"这里最核心的逻辑是\",{\"2\":{\"66\":1}}],[\"这里会涉及到bioos文件管理的相关内容\",{\"2\":{\"25\":1}}],[\"这里已经准备好了一个工作流文件\",{\"2\":{\"14\":1}}],[\"99\",{\"2\":{\"90\":1,\"92\":1}}],[\"9\",{\"0\":{\"16\":1,\"32\":1,\"55\":1,\"64\":1},\"2\":{\"14\":1,\"16\":1,\"55\":1,\"56\":1,\"62\":1,\"65\":1,\"77\":1,\"81\":1,\"83\":1}}],[\"xticklabels\",{\"2\":{\"92\":1}}],[\"xticks\",{\"2\":{\"92\":1}}],[\"xlim\",{\"2\":{\"92\":1}}],[\"x\",{\"2\":{\"14\":2,\"92\":1}}],[\"x3c\",{\"2\":{\"14\":5,\"28\":6,\"34\":6,\"90\":1,\"92\":2}}],[\"~~~~~~~~~~^^^^^^^\",{\"2\":{\"90\":1}}],[\"~\",{\"2\":{\"14\":2,\"21\":1,\"28\":1,\"34\":1,\"58\":1}}],[\"=>\",{\"2\":{\"28\":1,\"34\":1}}],[\"==\",{\"2\":{\"14\":2,\"92\":2}}],[\"=\",{\"2\":{\"14\":21,\"28\":35,\"34\":35,\"56\":2,\"68\":12,\"77\":2,\"87\":12,\"88\":12,\"90\":1,\"92\":35}}],[\"12\",{\"0\":{\"62\":1,\"81\":1},\"2\":{\"90\":2,\"92\":1}}],[\"12n−1−1\",{\"2\":{\"28\":1,\"34\":1}}],[\"16\",{\"0\":{\"59\":1,\"79\":1}}],[\"11\",{\"0\":{\"27\":1,\"61\":1,\"65\":1,\"83\":1},\"2\":{\"56\":1,\"77\":1,\"92\":1}}],[\"14\",{\"0\":{\"21\":1,\"58\":1}}],[\"191\",{\"2\":{\"90\":1}}],[\"195\",{\"2\":{\"90\":1}}],[\"19th\",{\"2\":{\"28\":1,\"34\":1}}],[\"19\",{\"2\":{\"14\":1,\"16\":1,\"55\":1}}],[\"150\",{\"2\":{\"14\":2}}],[\"1\",{\"0\":{\"78\":1,\"84\":1},\"2\":{\"14\":6,\"16\":2,\"28\":17,\"31\":1,\"33\":1,\"34\":17,\"55\":2,\"56\":1,\"62\":1,\"68\":1,\"77\":1,\"81\":1,\"87\":3,\"88\":2,\"90\":6,\"92\":29}}],[\"100\",{\"2\":{\"92\":1}}],[\"10\",{\"0\":{\"12\":2,\"16\":1,\"52\":2,\"55\":1},\"2\":{\"16\":1,\"55\":1,\"56\":1,\"77\":1}}],[\"10x\",{\"0\":{\"20\":1},\"2\":{\"5\":5,\"30\":5,\"42\":1,\"44\":5,\"46\":1,\"65\":1,\"69\":1,\"71\":1,\"83\":1}}],[\"ve\",{\"2\":{\"92\":2}}],[\"vertical\",{\"2\":{\"92\":2}}],[\"verify\",{\"2\":{\"51\":1,\"87\":1}}],[\"verification\",{\"2\":{\"14\":1}}],[\"very\",{\"2\":{\"28\":2,\"34\":2}}],[\"versions\",{\"2\":{\"65\":1,\"83\":1}}],[\"version\",{\"2\":{\"14\":1}}],[\"visualize\",{\"2\":{\"92\":2}}],[\"visualizes\",{\"2\":{\"92\":2}}],[\"visualization\",{\"2\":{\"90\":1,\"92\":5}}],[\"vstack\",{\"2\":{\"90\":1,\"92\":1}}],[\"vscode\",{\"2\":{\"28\":1,\"34\":1}}],[\"vulnerabilities\",{\"2\":{\"51\":1,\"87\":1}}],[\"v键\",{\"2\":{\"43\":1}}],[\"va=\",{\"2\":{\"92\":1}}],[\"variable\",{\"2\":{\"51\":1,\"87\":1}}],[\"variables\",{\"2\":{\"14\":1}}],[\"validate\",{\"2\":{\"92\":2}}],[\"validates\",{\"2\":{\"92\":2}}],[\"validation\",{\"2\":{\"51\":1,\"87\":1}}],[\"valueerror\",{\"2\":{\"92\":5}}],[\"value\",{\"2\":{\"28\":1,\"34\":1,\"92\":2}}],[\"vpc\",{\"2\":{\"16\":6,\"55\":6}}],[\"vdj\",{\"2\":{\"5\":3,\"12\":1,\"18\":1,\"44\":3,\"46\":1,\"52\":1,\"71\":1}}],[\"equal\",{\"2\":{\"92\":1}}],[\"e\",{\"2\":{\"90\":1,\"92\":3}}],[\"etc\",{\"0\":{\"59\":1,\"79\":1}}],[\"et\",{\"2\":{\"56\":1,\"77\":1}}],[\"easy\",{\"2\":{\"51\":1,\"87\":1}}],[\"each\",{\"2\":{\"51\":8,\"87\":8,\"92\":1}}],[\"edge\",{\"2\":{\"51\":1,\"87\":1}}],[\"effectiveness\",{\"2\":{\"51\":1,\"87\":1}}],[\"effective\",{\"2\":{\"51\":1,\"87\":1}}],[\"efficiency\",{\"2\":{\"51\":4,\"87\":4}}],[\"efficient\",{\"2\":{\"51\":2,\"87\":2}}],[\"even\",{\"2\":{\"56\":1,\"77\":1}}],[\"every\",{\"2\":{\"51\":1,\"87\":1}}],[\"evaluate\",{\"2\":{\"51\":3,\"87\":3}}],[\"enhancements\",{\"2\":{\"92\":1}}],[\"enhanced\",{\"2\":{\"90\":1,\"92\":2}}],[\"env\",{\"2\":{\"92\":1}}],[\"enter\",{\"2\":{\"90\":1,\"92\":2}}],[\"engage\",{\"2\":{\"51\":1,\"87\":1}}],[\"ensuring\",{\"2\":{\"51\":3,\"87\":3}}],[\"ensure\",{\"2\":{\"51\":8,\"87\":8}}],[\"encryption\",{\"2\":{\"51\":1,\"87\":1}}],[\"encountered\",{\"2\":{\"27\":1,\"61\":1}}],[\"encapsulation\",{\"2\":{\"12\":1,\"52\":1}}],[\"emptydrops\",{\"2\":{\"56\":1,\"77\":1}}],[\"emptydrop\",{\"2\":{\"56\":1,\"77\":1}}],[\"empty\",{\"2\":{\"32\":1,\"64\":1}}],[\"err8048237\",{\"2\":{\"30\":4}}],[\"exit\",{\"2\":{\"92\":1}}],[\"exists\",{\"2\":{\"92\":1}}],[\"execute\",{\"2\":{\"92\":1}}],[\"execution\",{\"2\":{\"41\":1}}],[\"exception\",{\"2\":{\"92\":1}}],[\"except\",{\"2\":{\"92\":2}}],[\"exactly\",{\"2\":{\"92\":1}}],[\"example\",{\"2\":{\"14\":2,\"30\":5}}],[\"explore\",{\"2\":{\"51\":1,\"87\":1}}],[\"explaining\",{\"2\":{\"51\":1,\"87\":1}}],[\"externally\",{\"2\":{\"65\":1,\"83\":1}}],[\"extent\",{\"2\":{\"37\":1,\"67\":1}}],[\"extra\",{\"2\":{\"56\":1,\"77\":1}}],[\"extracted\",{\"2\":{\"27\":1,\"61\":1}}],[\"extraction\",{\"2\":{\"27\":1,\"61\":1}}],[\"else\",{\"2\":{\"14\":1}}],[\"elif\",{\"2\":{\"14\":1}}],[\"300\",{\"2\":{\"30\":2}}],[\"32\",{\"2\":{\"30\":2}}],[\"3\",{\"0\":{\"13\":1,\"19\":1,\"78\":1,\"80\":1,\"82\":2},\"1\":{\"17\":1,\"22\":1,\"24\":1,\"28\":1,\"29\":1,\"34\":1,\"84\":2},\"2\":{\"14\":2,\"16\":2,\"28\":3,\"30\":2,\"33\":1,\"34\":3,\"46\":1,\"55\":2,\"56\":3,\"68\":1,\"71\":1,\"77\":3,\"87\":2,\"88\":2}}],[\"layout\",{\"2\":{\"92\":1}}],[\"last\",{\"2\":{\"90\":1,\"92\":5}}],[\"large\",{\"2\":{\"27\":1,\"61\":1}}],[\"lun\",{\"2\":{\"56\":1,\"77\":1}}],[\"linewidth=2\",{\"2\":{\"92\":2}}],[\"linewidth=1\",{\"2\":{\"92\":1}}],[\"lines\",{\"2\":{\"92\":9}}],[\"line\",{\"2\":{\"51\":1,\"87\":1,\"90\":3}}],[\"link\",{\"2\":{\"28\":6,\"34\":6}}],[\"list\",{\"2\":{\"14\":1,\"92\":3}}],[\"lower\",{\"2\":{\"65\":1,\"83\":1}}],[\"local\",{\"2\":{\"50\":1,\"73\":1}}],[\"long\",{\"2\":{\"28\":4,\"34\":4,\"51\":1,\"87\":1}}],[\"logy\",{\"2\":{\"28\":2,\"34\":2}}],[\"log\",{\"2\":{\"28\":5,\"34\":5,\"41\":1}}],[\"log⁡y\",{\"2\":{\"28\":2,\"34\":2}}],[\"logically\",{\"2\":{\"51\":1,\"87\":1}}],[\"logical\",{\"2\":{\"51\":4,\"87\":4}}],[\"logic\",{\"0\":{\"27\":1,\"37\":1,\"61\":1,\"67\":1},\"2\":{\"27\":1,\"61\":1}}],[\"looking\",{\"2\":{\"12\":1,\"52\":1}}],[\"l001\",{\"2\":{\"14\":4,\"30\":3}}],[\"least\",{\"2\":{\"92\":1}}],[\"lead\",{\"2\":{\"51\":1,\"87\":1}}],[\"learning\",{\"2\":{\"51\":3,\"87\":3}}],[\"less\",{\"2\":{\"51\":1,\"87\":1}}],[\"leverage\",{\"2\":{\"51\":1,\"87\":1}}],[\"left\",{\"2\":{\"28\":3,\"34\":3}}],[\"len\",{\"2\":{\"14\":2,\"92\":5}}],[\"let\",{\"0\":{\"12\":1,\"52\":1}}],[\"must\",{\"0\":{\"59\":1,\"79\":1},\"2\":{\"59\":1,\"79\":1,\"92\":1}}],[\"much\",{\"2\":{\"53\":1,\"75\":1}}],[\"multiple\",{\"2\":{\"51\":1,\"87\":1}}],[\"multi\",{\"0\":{\"32\":1,\"64\":1},\"2\":{\"5\":1,\"18\":1,\"42\":1,\"44\":1,\"69\":1}}],[\"more\",{\"2\":{\"56\":1,\"77\":1}}],[\"monitoring\",{\"2\":{\"51\":1,\"87\":1}}],[\"monitor\",{\"2\":{\"51\":1,\"87\":1,\"92\":1}}],[\"most\",{\"2\":{\"51\":2,\"87\":2,\"90\":1}}],[\"module>\",{\"2\":{\"90\":1}}],[\"modular\",{\"2\":{\"51\":2,\"87\":2}}],[\"model\",{\"2\":{\"51\":1,\"87\":1}}],[\"mini的能力\",{\"2\":{\"93\":1}}],[\"mini模型\",{\"2\":{\"86\":1}}],[\"mini模型的开发示例\",{\"2\":{\"38\":1}}],[\"miracle\",{\"2\":{\"16\":6,\"55\":6}}],[\"methodical\",{\"2\":{\"51\":1,\"87\":1}}],[\"metrics\",{\"2\":{\"41\":1}}],[\"meet\",{\"2\":{\"35\":1,\"62\":1,\"81\":1}}],[\"memory\",{\"2\":{\"30\":2}}],[\"map\",{\"2\":{\"92\":1}}],[\"matplotlib\",{\"2\":{\"92\":2}}],[\"matrices\",{\"2\":{\"68\":13,\"87\":13,\"88\":13,\"90\":2,\"92\":24}}],[\"matrixsplitter\",{\"2\":{\"92\":3}}],[\"matrix\",{\"2\":{\"21\":2,\"41\":1,\"45\":1,\"58\":2,\"68\":11,\"87\":11,\"88\":11,\"90\":8,\"92\":35}}],[\"make\",{\"2\":{\"56\":1,\"77\":1}}],[\"making\",{\"2\":{\"27\":1,\"51\":1,\"61\":1,\"87\":1}}],[\"management\",{\"2\":{\"51\":1,\"87\":1}}],[\"manageable\",{\"2\":{\"51\":1,\"87\":1}}],[\"made\",{\"2\":{\"51\":1,\"87\":1}}],[\"marimo\",{\"0\":{\"39\":1}}],[\"markdown格式\",{\"2\":{\"30\":1}}],[\"maintainable\",{\"2\":{\"51\":1,\"87\":1}}],[\"maintainability\",{\"2\":{\"51\":4,\"87\":4}}],[\"maintain\",{\"2\":{\"51\":2,\"87\":2}}],[\"main\",{\"2\":{\"28\":1,\"34\":1,\"90\":2,\"92\":4}}],[\"m\",{\"2\":{\"12\":1,\"52\":1}}],[\"08\",{\"2\":{\"92\":1}}],[\"001\",{\"2\":{\"14\":4,\"30\":3}}],[\"0\",{\"2\":{\"12\":1,\"14\":8,\"16\":3,\"30\":4,\"52\":1,\"55\":3,\"56\":3,\"62\":1,\"68\":3,\"77\":3,\"81\":1,\"87\":3,\"88\":4,\"90\":3,\"92\":10}}],[\"嵌入\",{\"2\":{\"11\":1}}],[\"视频嵌入\",{\"0\":{\"11\":1}}],[\"2d\",{\"2\":{\"92\":3}}],[\"20\",{\"2\":{\"90\":2}}],[\"2024\",{\"0\":{\"12\":1,\"16\":1,\"21\":1,\"27\":1,\"32\":1,\"37\":1,\"42\":1,\"46\":1,\"50\":1,\"52\":1,\"53\":1,\"55\":1,\"56\":1,\"58\":1,\"59\":1,\"61\":1,\"62\":1,\"64\":1,\"65\":1,\"67\":1,\"69\":1,\"71\":1,\"73\":1,\"75\":1,\"77\":1,\"79\":1,\"81\":1,\"83\":1},\"2\":{\"92\":1}}],[\"22\",{\"0\":{\"56\":1,\"77\":1}}],[\"225\",{\"2\":{\"30\":2}}],[\"23\",{\"0\":{\"53\":1,\"75\":1}}],[\"26\",{\"0\":{\"50\":1,\"73\":1}}],[\"28\",{\"0\":{\"42\":1,\"46\":1,\"69\":1,\"71\":1}}],[\"2^\",{\"2\":{\"28\":1,\"34\":1}}],[\"2n−1−12^\",{\"2\":{\"28\":1,\"34\":1}}],[\"2n−1\",{\"2\":{\"28\":2,\"34\":2}}],[\"2\",{\"0\":{\"9\":1,\"15\":1,\"80\":1},\"1\":{\"13\":1,\"17\":1,\"19\":1,\"22\":1,\"24\":1,\"28\":1,\"29\":1,\"34\":1},\"2\":{\"12\":1,\"14\":2,\"16\":1,\"28\":14,\"33\":1,\"34\":14,\"52\":1,\"55\":1,\"65\":1,\"68\":2,\"83\":1,\"87\":3,\"88\":3,\"92\":2}}],[\"utf\",{\"2\":{\"92\":1}}],[\"umi\",{\"2\":{\"56\":1,\"77\":1}}],[\"umitools\",{\"0\":{\"56\":1,\"77\":1}}],[\"umis\",{\"2\":{\"27\":1,\"56\":1,\"61\":1,\"77\":1}}],[\"unit=\",{\"2\":{\"92\":3}}],[\"unable\",{\"2\":{\"65\":1,\"83\":1}}],[\"unplanned\",{\"0\":{\"42\":1,\"69\":1}}],[\"understood\",{\"2\":{\"51\":1,\"87\":1}}],[\"understand\",{\"2\":{\"51\":1,\"87\":1}}],[\"under\",{\"2\":{\"2\":1,\"40\":1}}],[\"usr\",{\"2\":{\"92\":1}}],[\"user\",{\"2\":{\"92\":3}}],[\"users\",{\"2\":{\"90\":3}}],[\"used\",{\"0\":{\"56\":1,\"77\":1},\"2\":{\"51\":1,\"87\":1}}],[\"use\",{\"2\":{\"32\":1,\"46\":2,\"51\":2,\"56\":1,\"64\":1,\"71\":2,\"77\":1,\"87\":2}}],[\"using\",{\"0\":{\"62\":1,\"81\":1},\"2\":{\"12\":1,\"51\":2,\"52\":1,\"87\":2}}],[\"updated\",{\"0\":{\"37\":1,\"62\":1,\"67\":1,\"81\":1},\"2\":{\"21\":1,\"58\":1}}],[\"update\",{\"0\":{\"8\":1,\"48\":1},\"1\":{\"12\":1,\"16\":1,\"21\":1,\"27\":1,\"32\":1,\"37\":1,\"42\":1,\"46\":1,\"50\":1,\"52\":1,\"53\":1,\"55\":1,\"56\":1,\"58\":1,\"59\":1,\"61\":1,\"62\":1,\"64\":1,\"65\":1,\"67\":1,\"69\":1,\"71\":1,\"73\":1,\"75\":1,\"77\":1,\"79\":1,\"81\":1,\"83\":1},\"2\":{\"92\":3}}],[\"认识bioos中存储数据的方式\",{\"2\":{\"6\":1}}],[\"🙋好\",{\"0\":{\"70\":1}}],[\"📏范式\",{\"0\":{\"57\":1}}],[\"👏👏👏\",{\"2\":{\"45\":1}}],[\"👏欢迎来到ribo🄲🆅\",{\"0\":{\"0\":1},\"1\":{\"1\":1,\"3\":1,\"6\":1}}],[\"🕺💃\",{\"0\":{\"10\":1},\"1\":{\"14\":1}}],[\"🚀\",{\"2\":{\"6\":1}}],[\"🔗\",{\"2\":{\"6\":1}}],[\"🔍\",{\"2\":{\"6\":1}}],[\"向bioos中导入工作流文件\",{\"0\":{\"14\":1},\"2\":{\"6\":1}}],[\"⚙️\",{\"0\":{\"14\":1},\"2\":{\"6\":1}}],[\"通过本文\",{\"2\":{\"6\":1}}],[\"hstack\",{\"2\":{\"92\":1}}],[\"hughes\",{\"2\":{\"90\":3}}],[\"hub\",{\"2\":{\"5\":1,\"44\":1}}],[\"html\",{\"2\":{\"41\":1,\"57\":1}}],[\"https\",{\"2\":{\"5\":1,\"44\":1}}],[\"h1>\",{\"2\":{\"28\":1,\"34\":1}}],[\"h1>hello\",{\"2\":{\"28\":1,\"34\":1}}],[\"horizontal\",{\"2\":{\"90\":1,\"92\":3}}],[\"how\",{\"2\":{\"51\":1,\"87\":1}}],[\"home\",{\"2\":{\"28\":1,\"34\":1}}],[\"hold\",{\"2\":{\"14\":1}}],[\"h2o\",{\"2\":{\"28\":1,\"34\":1}}],[\"highlighted\",{\"2\":{\"92\":1}}],[\"highlight\",{\"2\":{\"51\":1,\"87\":1,\"92\":1}}],[\"high\",{\"2\":{\"27\":1,\"61\":1}}],[\"ha=\",{\"2\":{\"92\":1}}],[\"handle\",{\"2\":{\"65\":1,\"83\":1}}],[\"handling\",{\"2\":{\"27\":1,\"61\":1}}],[\"has\",{\"0\":{\"62\":1,\"81\":1},\"2\":{\"51\":1,\"87\":1}}],[\"had\",{\"2\":{\"50\":1,\"73\":1}}],[\"have\",{\"0\":{\"5\":1,\"12\":1,\"44\":1,\"52\":1},\"2\":{\"2\":1,\"40\":1,\"46\":1,\"56\":1,\"71\":1,\"77\":1,\"92\":1}}],[\"h5ad\",{\"2\":{\"21\":3,\"41\":1,\"45\":1,\"53\":1,\"58\":3,\"75\":1}}],[\"here\",{\"2\":{\"5\":1,\"12\":1,\"35\":1,\"44\":1,\"52\":1}}],[\"dpi=300\",{\"2\":{\"92\":1}}],[\"drawing\",{\"2\":{\"92\":2}}],[\"dropseq\",{\"0\":{\"56\":1,\"77\":1}}],[\"drop\",{\"2\":{\"5\":1,\"23\":1,\"44\":1}}],[\"date\",{\"2\":{\"92\":1}}],[\"data\",{\"2\":{\"2\":2,\"18\":1,\"27\":2,\"30\":5,\"40\":2,\"51\":1,\"59\":1,\"61\":2,\"65\":1,\"79\":1,\"83\":1,\"87\":1}}],[\"dump\",{\"0\":{\"62\":1,\"81\":1}}],[\"during\",{\"2\":{\"51\":1,\"87\":1}}],[\"duplicate\",{\"2\":{\"27\":1,\"61\":1}}],[\"down\",{\"2\":{\"51\":1,\"87\":1}}],[\"docs\",{\"2\":{\"90\":3}}],[\"documentation\",{\"2\":{\"51\":1,\"87\":1}}],[\"documented\",{\"2\":{\"51\":2,\"87\":2}}],[\"document\",{\"2\":{\"28\":1,\"34\":1,\"51\":2,\"87\":2}}],[\"docker\",{\"2\":{\"5\":1,\"14\":1,\"31\":1,\"44\":1,\"56\":1,\"62\":1,\"77\":1,\"81\":1}}],[\"dockers\",{\"2\":{\"5\":1,\"44\":1}}],[\"dlst000564\",{\"2\":{\"41\":3}}],[\"dimensions\",{\"2\":{\"92\":2}}],[\"dict\",{\"2\":{\"56\":2,\"77\":2}}],[\"different\",{\"2\":{\"51\":1,\"56\":1,\"77\":1,\"87\":1}}],[\"difficult\",{\"2\":{\"27\":1,\"61\":1}}],[\"direct\",{\"2\":{\"51\":1,\"87\":1}}],[\"disk\",{\"2\":{\"14\":6,\"30\":2}}],[\"desc=\",{\"2\":{\"92\":3}}],[\"design\",{\"2\":{\"51\":2,\"87\":2}}],[\"designing\",{\"2\":{\"51\":1,\"87\":1}}],[\"designed\",{\"2\":{\"35\":1,\"51\":1,\"87\":1}}],[\"def\",{\"2\":{\"92\":7}}],[\"defined\",{\"2\":{\"92\":1}}],[\"define\",{\"2\":{\"14\":1}}],[\"debug\",{\"0\":{\"90\":1}}],[\"debt\",{\"2\":{\"51\":1,\"87\":1}}],[\"deliver\",{\"2\":{\"51\":1,\"87\":1}}],[\"developed\",{\"2\":{\"56\":1,\"77\":1}}],[\"developers\",{\"2\":{\"51\":1,\"87\":1}}],[\"development\",{\"2\":{\"51\":3,\"87\":3}}],[\"develop\",{\"2\":{\"51\":2,\"87\":2}}],[\"declarative\",{\"2\":{\"57\":1}}],[\"decisions\",{\"2\":{\"51\":1,\"87\":1}}],[\"decision\",{\"2\":{\"51\":2,\"87\":2}}],[\"decompose\",{\"2\":{\"51\":1,\"87\":1}}],[\"dependencies\",{\"2\":{\"51\":1,\"87\":1}}],[\"deep\",{\"2\":{\"28\":3,\"34\":3}}],[\"demo\",{\"2\":{\"28\":1,\"34\":1}}],[\"determine\",{\"2\":{\"14\":1,\"27\":1,\"61\":1}}],[\"+\",{\"2\":{\"5\":1,\"28\":13,\"34\":13,\"44\":1,\"92\":8}}],[\"cr\",{\"2\":{\"56\":1,\"77\":1}}],[\"criteria\",{\"2\":{\"51\":1,\"87\":1}}],[\"cromwell\",{\"2\":{\"41\":5}}],[\"close\",{\"2\":{\"92\":1}}],[\"class\",{\"2\":{\"92\":1}}],[\"clear\",{\"2\":{\"51\":3,\"87\":3}}],[\"clearly\",{\"2\":{\"51\":1,\"87\":1,\"92\":1}}],[\"click\",{\"2\":{\"28\":1,\"34\":1}}],[\"checks\",{\"2\":{\"56\":1,\"77\":1}}],[\"chemistry\",{\"2\":{\"30\":2}}],[\"chosen\",{\"2\":{\"51\":1,\"87\":1}}],[\"choices\",{\"2\":{\"51\":1,\"87\":1}}],[\"choose\",{\"2\":{\"46\":1,\"71\":1}}],[\"chatgpt\",{\"2\":{\"92\":1}}],[\"chain\",{\"2\":{\"51\":1,\"87\":1}}],[\"challenges\",{\"2\":{\"51\":1,\"87\":1}}],[\"c键\",{\"2\":{\"43\":1}}],[\"csv\",{\"2\":{\"41\":1}}],[\"captures\",{\"2\":{\"92\":1}}],[\"can\",{\"2\":{\"56\":2,\"77\":2}}],[\"cannot\",{\"2\":{\"32\":1,\"64\":1}}],[\"cases\",{\"2\":{\"51\":2,\"87\":2}}],[\"case\",{\"2\":{\"46\":1,\"71\":1}}],[\"caution\",{\"2\":{\"28\":1,\"34\":1}}],[\"calls\",{\"2\":{\"56\":1,\"77\":1}}],[\"call\",{\"2\":{\"14\":1,\"41\":1,\"90\":1}}],[\"calculate\",{\"2\":{\"14\":1,\"92\":1}}],[\"c\",{\"2\":{\"28\":11,\"34\":11,\"57\":1}}],[\"center\",{\"2\":{\"92\":2}}],[\"centered\",{\"2\":{\"28\":1,\"34\":1}}],[\"cell\",{\"2\":{\"92\":4}}],[\"cells\",{\"2\":{\"56\":2,\"77\":2,\"92\":3}}],[\"cellranger\",{\"2\":{\"5\":4,\"21\":1,\"30\":22,\"42\":1,\"44\":4,\"50\":1,\"56\":2,\"58\":1,\"65\":2,\"69\":1,\"73\":1,\"77\":2,\"83\":2}}],[\"cdots\",{\"2\":{\"28\":1,\"34\":1}}],[\"cn\",{\"2\":{\"16\":6,\"55\":6}}],[\"cpu\",{\"2\":{\"14\":6,\"30\":2}}],[\"could\",{\"0\":{\"56\":1,\"77\":1}}],[\"count\",{\"2\":{\"5\":2,\"21\":1,\"30\":20,\"44\":2,\"58\":1}}],[\"cost\",{\"2\":{\"51\":1,\"87\":1}}],[\"coherent\",{\"2\":{\"51\":1,\"87\":1}}],[\"cot\",{\"2\":{\"51\":1,\"87\":1}}],[\"coding\",{\"2\":{\"51\":15,\"87\":15,\"92\":1}}],[\"codebase\",{\"2\":{\"51\":2,\"87\":2}}],[\"code\",{\"0\":{\"27\":1,\"61\":1},\"2\":{\"14\":2,\"28\":6,\"34\":6,\"51\":21,\"87\":21}}],[\"column\",{\"2\":{\"90\":1,\"92\":3}}],[\"columns\",{\"2\":{\"90\":2,\"92\":8}}],[\"cols\",{\"2\":{\"68\":6,\"87\":6,\"88\":6,\"92\":27}}],[\"collaboration\",{\"2\":{\"51\":3,\"87\":3}}],[\"color=\",{\"2\":{\"92\":3}}],[\"color\",{\"2\":{\"28\":1,\"34\":1}}],[\"col\",{\"2\":{\"28\":2,\"34\":2,\"68\":2,\"87\":2,\"88\":2,\"92\":18}}],[\"colab\",{\"2\":{\"11\":1}}],[\"cool\",{\"2\":{\"28\":1,\"34\":1}}],[\"containing\",{\"2\":{\"92\":2}}],[\"contains\",{\"2\":{\"27\":1,\"61\":1,\"92\":1}}],[\"contributors\",{\"2\":{\"51\":1,\"87\":1}}],[\"continuously\",{\"2\":{\"51\":2,\"87\":2}}],[\"conclusion\",{\"2\":{\"51\":1,\"87\":1}}],[\"consistent\",{\"2\":{\"51\":1,\"87\":1}}],[\"considerations\",{\"2\":{\"51\":1,\"87\":1}}],[\"considering\",{\"2\":{\"51\":1,\"87\":1}}],[\"consider\",{\"2\":{\"51\":3,\"87\":3}}],[\"console\",{\"2\":{\"28\":3,\"34\":3}}],[\"const\",{\"2\":{\"28\":31,\"34\":31}}],[\"conventions\",{\"2\":{\"21\":1,\"58\":1}}],[\"convert\",{\"2\":{\"14\":1,\"21\":1,\"58\":1,\"92\":1}}],[\"correctness\",{\"2\":{\"51\":1,\"87\":1}}],[\"correct\",{\"2\":{\"27\":1,\"61\":1}}],[\"copy2\",{\"2\":{\"14\":3}}],[\"copy\",{\"2\":{\"14\":1}}],[\"come\",{\"0\":{\"59\":1,\"79\":1}}],[\"common\",{\"2\":{\"51\":1,\"87\":1}}],[\"commented\",{\"2\":{\"51\":1,\"87\":1}}],[\"command\",{\"2\":{\"12\":1,\"14\":1,\"52\":1}}],[\"combination\",{\"2\":{\"51\":1,\"87\":1}}],[\"combined\",{\"2\":{\"46\":1,\"71\":1}}],[\"compatibility\",{\"0\":{\"65\":1,\"83\":1}}],[\"compared\",{\"2\":{\"56\":1,\"77\":1}}],[\"complete\",{\"2\":{\"59\":1,\"79\":1}}],[\"complex\",{\"2\":{\"51\":1,\"87\":1}}],[\"complexity\",{\"2\":{\"2\":1,\"40\":1,\"51\":2,\"87\":2}}],[\"compressed\",{\"2\":{\"62\":1,\"81\":1}}],[\"compression\",{\"2\":{\"27\":3,\"61\":3}}],[\"comprehensive\",{\"2\":{\"51\":1,\"87\":1}}],[\"components\",{\"2\":{\"51\":2,\"87\":2}}],[\"composed\",{\"2\":{\"27\":1,\"61\":1}}],[\"com\",{\"2\":{\"5\":1,\"44\":1}}],[\"np\",{\"2\":{\"90\":1,\"92\":8}}],[\"na\",{\"0\":{\"32\":1,\"64\":1}}],[\"naming\",{\"0\":{\"37\":1,\"67\":1},\"2\":{\"21\":1,\"27\":1,\"58\":1,\"61\":1}}],[\"names\",{\"2\":{\"51\":1,\"87\":1}}],[\"name\",{\"2\":{\"14\":13,\"16\":1,\"55\":1,\"92\":1}}],[\"num\",{\"2\":{\"92\":8}}],[\"numpy\",{\"2\":{\"92\":1}}],[\"numbers\",{\"2\":{\"92\":3}}],[\"numbered\",{\"2\":{\"92\":1}}],[\"number\",{\"0\":{\"59\":1,\"79\":1},\"2\":{\"14\":1,\"27\":1,\"28\":3,\"34\":3,\"61\":1,\"90\":1,\"92\":6}}],[\"null\",{\"2\":{\"30\":3}}],[\"n\",{\"2\":{\"28\":2,\"34\":2,\"68\":6,\"87\":6,\"88\":6,\"92\":7}}],[\"next\",{\"2\":{\"92\":2}}],[\"necessary\",{\"2\":{\"51\":1,\"87\":1}}],[\"neat\",{\"2\":{\"28\":1,\"34\":1}}],[\"newer\",{\"2\":{\"65\":1,\"83\":1}}],[\"new\",{\"2\":{\"14\":12}}],[\"need\",{\"0\":{\"2\":1,\"32\":1,\"40\":1,\"64\":1},\"2\":{\"35\":2,\"46\":2,\"71\":2}}],[\"no\",{\"2\":{\"30\":2,\"92\":1}}],[\"notebook\",{\"0\":{\"39\":1}}],[\"note\",{\"2\":{\"28\":1,\"34\":1}}],[\"none\",{\"2\":{\"14\":4,\"92\":1}}],[\"now\",{\"0\":{\"5\":1,\"44\":1,\"62\":1,\"81\":1}}],[\"账号在哪\",{\"2\":{\"3\":1}}],[\"您已经掌握了bioos的基本使用方法\",{\"2\":{\"45\":1}}],[\"您需要确保您的键盘具有ctrl键\",{\"2\":{\"43\":1}}],[\"您需要准备\",{\"0\":{\"3\":1}}],[\"您只需要依次填写您自己的参数即可\",{\"2\":{\"30\":1}}],[\"您只需要知道如何使用json文件来描述您的实验参数\",{\"2\":{\"25\":1}}],[\"您会发现\",{\"2\":{\"30\":1}}],[\"您可以查看\",{\"2\":{\"41\":1}}],[\"您可以在分析历史中看到您的任务\",{\"2\":{\"41\":1}}],[\"您可以在系统引导下创建一个workspace\",{\"2\":{\"3\":1}}],[\"您可以将其导入到bioos中\",{\"2\":{\"14\":1}}],[\"您将学会如何完成一个简单的计算任务\",{\"2\":{\"6\":1}}],[\"您在首次登录自己的账户时\",{\"2\":{\"3\":1}}],[\"您一定是会这个的\",{\"2\":{\"0\":1}}],[\"identify\",{\"2\":{\"51\":1,\"87\":1}}],[\"id和sample\",{\"2\":{\"30\":1}}],[\"id\",{\"2\":{\"30\":2,\"41\":2}}],[\"id=\",{\"2\":{\"28\":1,\"34\":1}}],[\"i+1\",{\"2\":{\"28\":1,\"34\":1}}],[\"ir\",{\"2\":{\"28\":1,\"34\":1}}],[\"ir⋯\",{\"2\":{\"28\":2,\"34\":2}}],[\"i=1\",{\"2\":{\"28\":1,\"34\":1}}],[\"it\",{\"2\":{\"27\":1,\"51\":1,\"61\":1,\"87\":1,\"92\":1}}],[\"image\",{\"0\":{\"59\":1,\"79\":1},\"2\":{\"59\":1,\"79\":1,\"92\":3}}],[\"images\",{\"2\":{\"16\":1,\"55\":1}}],[\"implementation\",{\"2\":{\"62\":1,\"81\":1}}],[\"implementing\",{\"2\":{\"51\":1,\"87\":1}}],[\"imperative\",{\"2\":{\"57\":1}}],[\"improvement\",{\"2\":{\"51\":1,\"87\":1}}],[\"impact\",{\"2\":{\"37\":1,\"67\":1}}],[\"important\",{\"2\":{\"28\":1,\"34\":1}}],[\"import\",{\"2\":{\"14\":2,\"65\":1,\"83\":1,\"92\":6}}],[\"if\",{\"2\":{\"14\":4,\"51\":1,\"87\":1,\"92\":6}}],[\"i1\",{\"2\":{\"14\":10,\"30\":1}}],[\"invalid\",{\"2\":{\"92\":2}}],[\"invert\",{\"2\":{\"92\":2}}],[\"init\",{\"2\":{\"92\":1}}],[\"initializes\",{\"2\":{\"92\":1}}],[\"initialize\",{\"2\":{\"14\":1}}],[\"index\",{\"2\":{\"90\":1}}],[\"indexerror\",{\"2\":{\"90\":1}}],[\"inside\",{\"2\":{\"56\":1,\"77\":1}}],[\"instruction\",{\"2\":{\"51\":1,\"87\":1}}],[\"instructions\",{\"2\":{\"51\":2,\"87\":2}}],[\"insted\",{\"2\":{\"32\":1,\"64\":1}}],[\"inches=\",{\"2\":{\"92\":1}}],[\"incomplete\",{\"2\":{\"59\":1,\"79\":1}}],[\"incorporated\",{\"2\":{\"92\":1}}],[\"incorporate\",{\"2\":{\"51\":2,\"87\":2}}],[\"increased\",{\"2\":{\"53\":1,\"75\":1}}],[\"including\",{\"2\":{\"51\":2,\"87\":2}}],[\"include\",{\"2\":{\"46\":1,\"51\":1,\"71\":1,\"87\":1}}],[\"information\",{\"0\":{\"59\":1,\"79\":1},\"2\":{\"59\":1,\"79\":1}}],[\"info\",{\"2\":{\"28\":1,\"34\":1}}],[\"infrastructure\",{\"2\":{\"2\":1,\"40\":1}}],[\"inline\",{\"2\":{\"28\":6,\"34\":6}}],[\"in\",{\"0\":{\"56\":1,\"77\":1},\"2\":{\"14\":1,\"46\":1,\"51\":4,\"56\":1,\"71\":1,\"77\":1,\"87\":4,\"90\":3,\"92\":12}}],[\"integers\",{\"2\":{\"92\":3}}],[\"integrating\",{\"2\":{\"51\":1,\"87\":1}}],[\"into\",{\"2\":{\"51\":2,\"87\":2,\"90\":1,\"92\":2}}],[\"int\",{\"2\":{\"14\":2,\"92\":5}}],[\"input\",{\"2\":{\"14\":3,\"32\":1,\"51\":1,\"64\":1,\"87\":1,\"92\":14}}],[\"i\",{\"2\":{\"12\":1,\"50\":1,\"52\":1,\"68\":4,\"73\":1,\"87\":4,\"88\":4,\"92\":12}}],[\"issues\",{\"0\":{\"65\":1,\"83\":1}}],[\"issue\",{\"2\":{\"27\":1,\"61\":1}}],[\"is\",{\"2\":{\"2\":2,\"28\":6,\"34\":6,\"40\":2,\"51\":8,\"59\":2,\"79\":2,\"87\":8,\"90\":1,\"92\":4}}],[\"pbar\",{\"2\":{\"92\":6}}],[\"please\",{\"2\":{\"92\":1}}],[\"plt\",{\"2\":{\"92\":6}}],[\"plotting\",{\"2\":{\"92\":2}}],[\"platform\",{\"2\":{\"2\":1,\"40\":1}}],[\"png\",{\"2\":{\"92\":4}}],[\"pull\",{\"2\":{\"56\":1,\"62\":1,\"77\":1,\"81\":1}}],[\"purpose\",{\"2\":{\"51\":1,\"87\":1}}],[\"perfect\",{\"2\":{\"56\":1,\"77\":1}}],[\"performance\",{\"2\":{\"51\":3,\"87\":3}}],[\"performing\",{\"2\":{\"27\":1,\"61\":1}}],[\"periodically\",{\"2\":{\"51\":1,\"87\":1}}],[\"possible\",{\"2\":{\"51\":1,\"53\":1,\"75\":1,\"87\":1}}],[\"possorted\",{\"2\":{\"41\":1}}],[\"potential\",{\"2\":{\"51\":1,\"87\":1}}],[\"ps\",{\"2\":{\"46\":1,\"56\":1,\"71\":1,\"77\":1}}],[\"p>\",{\"2\":{\"28\":2,\"34\":2}}],[\"pyplot\",{\"2\":{\"92\":1}}],[\"py\",{\"2\":{\"90\":4}}],[\"py39\",{\"2\":{\"16\":1,\"55\":1}}],[\"python3\",{\"2\":{\"14\":1,\"56\":1,\"62\":1,\"77\":1,\"81\":1,\"92\":1}}],[\"python\",{\"2\":{\"12\":1,\"14\":2,\"16\":2,\"52\":1,\"55\":2,\"57\":1,\"62\":1,\"81\":1,\"90\":1}}],[\"pipeline\",{\"2\":{\"35\":1}}],[\"pipline\",{\"2\":{\"2\":1,\"40\":1}}],[\"pigz\",{\"2\":{\"16\":1,\"55\":1,\"62\":2,\"81\":2}}],[\"patches\",{\"2\":{\"92\":1}}],[\"path\",{\"2\":{\"14\":1}}],[\"paths\",{\"2\":{\"14\":7,\"30\":2}}],[\"package\",{\"2\":{\"65\":1,\"83\":1}}],[\"packaged\",{\"2\":{\"2\":1,\"40\":1}}],[\"parallel\",{\"2\":{\"51\":1,\"87\":1}}],[\"parameters\",{\"2\":{\"46\":2,\"71\":2,\"92\":4}}],[\"parts\",{\"2\":{\"92\":3}}],[\"partial\",{\"2\":{\"28\":1,\"34\":1}}],[\"partial^r\",{\"2\":{\"28\":1,\"34\":1}}],[\"part\",{\"2\":{\"12\":1,\"52\":1}}],[\"practices\",{\"2\":{\"51\":2,\"87\":2}}],[\"praise\",{\"2\":{\"5\":1,\"44\":1}}],[\"prioritize\",{\"2\":{\"51\":2,\"87\":2}}],[\"prioritizing\",{\"2\":{\"51\":1,\"87\":1}}],[\"principles\",{\"2\":{\"51\":3,\"87\":3}}],[\"print\",{\"2\":{\"14\":3,\"92\":10}}],[\"precision\",{\"2\":{\"51\":1,\"87\":1}}],[\"precise\",{\"2\":{\"51\":1,\"87\":1}}],[\"preferred\",{\"2\":{\"51\":1,\"87\":1}}],[\"project\",{\"2\":{\"51\":1,\"87\":1}}],[\"providing\",{\"2\":{\"51\":1,\"87\":1}}],[\"provided\",{\"2\":{\"59\":1,\"79\":1}}],[\"provide\",{\"2\":{\"51\":1,\"87\":1}}],[\"profile\",{\"2\":{\"51\":1,\"87\":1}}],[\"proceeding\",{\"2\":{\"51\":1,\"87\":1}}],[\"process\",{\"2\":{\"51\":5,\"87\":5}}],[\"programming\",{\"2\":{\"51\":3,\"57\":3,\"87\":3}}],[\"program\",{\"2\":{\"35\":1}}],[\"progress\",{\"0\":{\"4\":1,\"7\":1},\"2\":{\"51\":1,\"87\":1,\"92\":4}}],[\"prjna693201\",{\"2\":{\"41\":3}}],[\"g\",{\"2\":{\"90\":1,\"92\":1}}],[\"gpt先天的适合增量更新的模式\",{\"2\":{\"76\":1}}],[\"green\",{\"2\":{\"92\":5}}],[\"greater\",{\"2\":{\"68\":2,\"87\":2,\"88\":2,\"92\":8}}],[\"grid\",{\"2\":{\"92\":4}}],[\"grch38\",{\"2\":{\"30\":2}}],[\"guide\",{\"2\":{\"51\":1,\"87\":1}}],[\"gt\",{\"2\":{\"33\":6,\"36\":2,\"37\":1,\"67\":1,\"87\":6}}],[\"gfm\",{\"2\":{\"28\":1,\"34\":1}}],[\"glob\",{\"2\":{\"14\":1}}],[\"gznl\",{\"2\":{\"16\":6,\"55\":6}}],[\"gz\",{\"2\":{\"14\":4,\"30\":7,\"37\":1,\"41\":1,\"67\":1}}],[\"gb\",{\"2\":{\"14\":2,\"30\":4}}],[\"goal\",{\"2\":{\"51\":1,\"87\":1}}],[\"goals\",{\"2\":{\"51\":1,\"87\":1}}],[\"god\",{\"2\":{\"5\":1,\"44\":1}}],[\"gover\",{\"2\":{\"2\":1,\"40\":1}}],[\"generate\",{\"2\":{\"92\":2}}],[\"generates\",{\"2\":{\"92\":2}}],[\"generated\",{\"2\":{\"90\":2,\"92\":3}}],[\"genomesasparsed\",{\"2\":{\"56\":1,\"77\":1}}],[\"genome\",{\"2\":{\"30\":2,\"41\":1}}],[\"genomics官方文档\",{\"2\":{\"30\":1}}],[\"genomics\",{\"0\":{\"20\":1,\"30\":1},\"2\":{\"45\":1}}],[\"genomics的单细胞测序数据分析\",{\"0\":{\"18\":1,\"23\":1}}],[\"gex\",{\"2\":{\"5\":1,\"44\":1}}],[\"getsize\",{\"2\":{\"14\":1}}],[\"get\",{\"2\":{\"2\":1,\"40\":1,\"92\":1}}],[\"given\",{\"2\":{\"2\":1,\"40\":1}}],[\"tuple\",{\"2\":{\"92\":2}}],[\"two\",{\"2\":{\"92\":4}}],[\"twitter\",{\"2\":{\"28\":1,\"34\":1}}],[\"tqdm\",{\"2\":{\"92\":7}}],[\"traceback\",{\"2\":{\"90\":1}}],[\"transcriptionally\",{\"2\":{\"56\":1,\"77\":1}}],[\"transparency\",{\"2\":{\"51\":1,\"87\":1}}],[\"tree\",{\"2\":{\"51\":1,\"87\":1}}],[\"try\",{\"0\":{\"12\":1,\"52\":1},\"2\":{\"12\":1,\"52\":1,\"92\":2}}],[\"tight\",{\"2\":{\"92\":2}}],[\"time\",{\"2\":{\"51\":2,\"87\":2}}],[\"tip\",{\"2\":{\"28\":1,\"34\":1}}],[\"team\",{\"2\":{\"51\":1,\"87\":1}}],[\"term\",{\"2\":{\"51\":1,\"87\":1}}],[\"test\",{\"2\":{\"51\":1,\"87\":1,\"90\":4}}],[\"technical\",{\"0\":{\"62\":1,\"81\":1},\"2\":{\"51\":2,\"87\":2}}],[\"technically\",{\"2\":{\"51\":1,\"87\":1}}],[\"techniques\",{\"2\":{\"51\":3,\"87\":3}}],[\"technologies\",{\"2\":{\"46\":1,\"71\":1}}],[\"text\",{\"2\":{\"28\":4,\"34\":4,\"92\":1}}],[\"tar\",{\"2\":{\"30\":4,\"41\":1}}],[\"tab1tab2const\",{\"2\":{\"28\":1,\"34\":1}}],[\"tables\",{\"2\":{\"28\":1,\"34\":1}}],[\"task\",{\"2\":{\"14\":1,\"41\":2,\"51\":4,\"87\":4}}],[\"takeaways\",{\"2\":{\"51\":1,\"87\":1}}],[\"take\",{\"2\":{\"2\":1,\"40\":1}}],[\"type\",{\"2\":{\"12\":1,\"52\":1}}],[\"t\",{\"2\":{\"5\":1,\"44\":1}}],[\"three\",{\"2\":{\"68\":2,\"87\":2,\"88\":2,\"92\":7}}],[\"threats\",{\"2\":{\"51\":1,\"87\":1}}],[\"throughout\",{\"2\":{\"51\":2,\"87\":2}}],[\"thoughts\",{\"2\":{\"51\":1,\"87\":1}}],[\"thought\",{\"2\":{\"51\":1,\"87\":1}}],[\"those\",{\"2\":{\"16\":1,\"51\":1,\"55\":1,\"87\":1}}],[\"third\",{\"2\":{\"92\":1}}],[\"thick\",{\"2\":{\"92\":5}}],[\"things\",{\"2\":{\"35\":1}}],[\"this\",{\"2\":{\"12\":1,\"28\":4,\"34\":4,\"52\":1,\"56\":2,\"77\":2,\"92\":1}}],[\"than\",{\"2\":{\"27\":1,\"61\":1,\"68\":2,\"87\":2,\"88\":2,\"92\":8}}],[\"that\",{\"2\":{\"2\":1,\"27\":1,\"40\":1,\"51\":10,\"56\":1,\"61\":1,\"77\":1,\"87\":10,\"92\":2}}],[\"these\",{\"2\":{\"51\":3,\"87\":3}}],[\"therefore\",{\"2\":{\"46\":1,\"71\":1}}],[\"them\",{\"2\":{\"5\":1,\"14\":1,\"44\":1}}],[\"they\",{\"2\":{\"2\":1,\"40\":1}}],[\"the\",{\"0\":{\"62\":1,\"81\":1},\"2\":{\"2\":3,\"5\":1,\"12\":4,\"14\":1,\"27\":8,\"37\":2,\"40\":3,\"44\":1,\"46\":3,\"51\":27,\"52\":4,\"53\":1,\"56\":5,\"59\":1,\"61\":8,\"65\":1,\"67\":2,\"71\":3,\"75\":1,\"77\":5,\"79\":1,\"83\":1,\"87\":27,\"90\":1,\"92\":23}}],[\"top\",{\"2\":{\"68\":3,\"87\":3,\"88\":3,\"90\":1,\"92\":6}}],[\"total=self\",{\"2\":{\"92\":2}}],[\"total=total\",{\"2\":{\"92\":1}}],[\"total\",{\"2\":{\"90\":1,\"92\":4}}],[\"tot\",{\"2\":{\"51\":1,\"87\":1}}],[\"tolong\",{\"2\":{\"28\":1,\"34\":1}}],[\"too\",{\"2\":{\"5\":1,\"44\":1}}],[\"toolkits\",{\"2\":{\"2\":1,\"40\":1}}],[\"tools\",{\"0\":{\"35\":1},\"2\":{\"2\":1,\"40\":1}}],[\"to\",{\"0\":{\"32\":1,\"64\":1},\"2\":{\"2\":1,\"12\":3,\"14\":2,\"21\":1,\"27\":2,\"28\":4,\"34\":4,\"35\":1,\"40\":1,\"46\":3,\"51\":18,\"52\":3,\"56\":3,\"58\":1,\"61\":2,\"62\":1,\"65\":2,\"71\":3,\"77\":3,\"81\":1,\"83\":2,\"87\":18,\"92\":8}}],[\"over\",{\"2\":{\"94\":1}}],[\"overall\",{\"2\":{\"51\":2,\"87\":2}}],[\"openai\",{\"2\":{\"92\":1}}],[\"opportunities\",{\"2\":{\"51\":1,\"87\":1}}],[\"optimized\",{\"2\":{\"51\":2,\"87\":2}}],[\"optimize\",{\"2\":{\"51\":3,\"87\":3}}],[\"o1\",{\"2\":{\"38\":1,\"86\":1}}],[\"object\",{\"2\":{\"57\":1}}],[\"obj\",{\"2\":{\"28\":1,\"34\":1}}],[\"omega^i\",{\"2\":{\"28\":1,\"34\":1}}],[\"omega^r\",{\"2\":{\"28\":1,\"34\":1}}],[\"omega\",{\"2\":{\"28\":4,\"34\":4}}],[\"outcome\",{\"2\":{\"51\":1,\"87\":1}}],[\"outline\",{\"2\":{\"51\":1,\"87\":1}}],[\"outs\",{\"2\":{\"41\":3}}],[\"out\",{\"2\":{\"14\":3,\"90\":1}}],[\"outputs\",{\"2\":{\"51\":1,\"87\":1}}],[\"output\",{\"2\":{\"14\":3,\"53\":1,\"75\":1,\"92\":4}}],[\"our\",{\"2\":{\"2\":4,\"35\":1,\"40\":4}}],[\"os\",{\"2\":{\"14\":2,\"35\":1}}],[\"other\",{\"2\":{\"12\":1,\"35\":1,\"51\":1,\"52\":1,\"87\":1}}],[\"ooaahhdocker\",{\"2\":{\"5\":1,\"16\":5,\"44\":1,\"55\":5,\"56\":1,\"62\":1,\"77\":1,\"81\":1}}],[\"original\",{\"2\":{\"92\":2}}],[\"oriented\",{\"2\":{\"57\":1}}],[\"organization\",{\"2\":{\"51\":1,\"87\":1}}],[\"order\",{\"2\":{\"27\":1,\"61\":1}}],[\"or\",{\"2\":{\"2\":1,\"5\":1,\"12\":1,\"35\":1,\"40\":1,\"44\":1,\"51\":1,\"52\":1,\"87\":1,\"92\":3}}],[\"off\",{\"2\":{\"92\":1}}],[\"offer\",{\"2\":{\"51\":1,\"87\":1}}],[\"of\",{\"2\":{\"2\":2,\"5\":2,\"12\":2,\"14\":1,\"16\":1,\"21\":1,\"27\":7,\"37\":1,\"40\":2,\"44\":2,\"46\":1,\"51\":10,\"52\":2,\"53\":1,\"55\":1,\"58\":1,\"61\":7,\"65\":1,\"67\":1,\"71\":1,\"75\":1,\"83\":1,\"87\":10,\"90\":3,\"92\":9}}],[\"online\",{\"0\":{\"39\":1}}],[\"on\",{\"0\":{\"4\":1,\"7\":1,\"39\":1},\"2\":{\"2\":1,\"14\":4,\"40\":1,\"51\":2,\"56\":1,\"77\":1,\"87\":2,\"92\":2}}],[\"once\",{\"2\":{\"2\":1,\"40\":1}}],[\"sys\",{\"2\":{\"92\":2}}],[\"system\",{\"2\":{\"2\":1,\"40\":1,\"51\":1,\"87\":1}}],[\"slide\",{\"0\":{\"59\":1,\"79\":1}}],[\"slim\",{\"2\":{\"14\":1,\"16\":1,\"55\":1}}],[\"sql\",{\"2\":{\"57\":1}}],[\"skip\",{\"2\":{\"56\":1,\"77\":1}}],[\"savefig\",{\"2\":{\"92\":1}}],[\"save\",{\"2\":{\"92\":1}}],[\"saved\",{\"2\":{\"92\":4}}],[\"safeguard\",{\"2\":{\"51\":1,\"87\":1}}],[\"sample\",{\"2\":{\"14\":13,\"21\":1,\"30\":2,\"58\":1}}],[\"subplots\",{\"2\":{\"92\":1}}],[\"submatrices\",{\"2\":{\"90\":1,\"92\":1}}],[\"sub\",{\"2\":{\"68\":1,\"87\":1,\"88\":1,\"92\":5}}],[\"such\",{\"2\":{\"51\":1,\"87\":1,\"92\":1}}],[\"summarize\",{\"2\":{\"51\":1,\"87\":1}}],[\"summary\",{\"2\":{\"41\":2}}],[\"sum\",{\"2\":{\"28\":1,\"34\":1}}],[\"specified\",{\"2\":{\"92\":1}}],[\"specific\",{\"2\":{\"46\":1,\"51\":1,\"71\":1,\"87\":1}}],[\"splits\",{\"2\":{\"92\":18}}],[\"splitter\",{\"2\":{\"90\":1,\"92\":4}}],[\"splitting\",{\"2\":{\"90\":1,\"92\":3}}],[\"split\",{\"2\":{\"46\":2,\"68\":2,\"71\":2,\"87\":2,\"88\":2,\"90\":4,\"92\":26}}],[\"span>强大\",{\"2\":{\"28\":1,\"34\":1}}],[\"span\",{\"2\":{\"28\":2,\"34\":2}}],[\"spatial\",{\"2\":{\"18\":1}}],[\"space\",{\"2\":{\"14\":5,\"30\":2,\"51\":1,\"87\":1,\"92\":1}}],[\"spaceranger\",{\"2\":{\"5\":1,\"44\":1,\"46\":1,\"59\":1,\"71\":1,\"79\":1}}],[\"srr13482541\",{\"2\":{\"41\":3}}],[\"sra\",{\"0\":{\"62\":1,\"81\":1},\"2\":{\"27\":1,\"37\":1,\"46\":1,\"61\":1,\"67\":1,\"71\":1}}],[\"sratofastqgz\",{\"2\":{\"12\":1,\"52\":1}}],[\"s3\",{\"2\":{\"30\":5}}],[\"small\",{\"2\":{\"68\":4,\"87\":4,\"88\":4,\"90\":1,\"92\":11}}],[\"smallest\",{\"2\":{\"68\":2,\"87\":2,\"88\":2,\"92\":7}}],[\"smaller\",{\"2\":{\"27\":1,\"61\":1,\"92\":1}}],[\"smart\",{\"2\":{\"5\":1,\"23\":1,\"44\":1}}],[\"some\",{\"2\":{\"59\":1,\"79\":1}}],[\"sound\",{\"2\":{\"51\":1,\"87\":1}}],[\"sophisticated\",{\"2\":{\"51\":1,\"87\":1}}],[\"solocellfilter\",{\"2\":{\"56\":1,\"77\":1}}],[\"solobarcodereadlength=0\",{\"2\":{\"56\":1,\"77\":1}}],[\"solve\",{\"2\":{\"51\":1,\"87\":1}}],[\"solutions\",{\"2\":{\"51\":3,\"87\":3}}],[\"solution\",{\"2\":{\"27\":1,\"51\":1,\"61\":1,\"87\":1}}],[\"sort\",{\"2\":{\"14\":2}}],[\"sorry\",{\"0\":{\"4\":1}}],[\"scalability\",{\"2\":{\"51\":1,\"87\":1}}],[\"scanpy1\",{\"2\":{\"16\":1,\"55\":1,\"56\":1,\"77\":1}}],[\"script\",{\"2\":{\"35\":1,\"41\":1,\"92\":1}}],[\"scrna\",{\"0\":{\"20\":1,\"30\":1},\"2\":{\"18\":1,\"45\":1,\"65\":1,\"83\":1}}],[\"s1\",{\"2\":{\"14\":3,\"30\":3}}],[\"separated\",{\"2\":{\"92\":1}}],[\"sep=\",{\"2\":{\"14\":1}}],[\"self\",{\"2\":{\"68\":3,\"87\":3,\"88\":3,\"92\":48}}],[\"select\",{\"2\":{\"51\":1,\"87\":1}}],[\"seams\",{\"2\":{\"68\":6,\"87\":6,\"88\":6,\"92\":6}}],[\"seam\",{\"2\":{\"68\":12,\"87\":12,\"88\":12,\"90\":2,\"92\":14}}],[\"search\",{\"2\":{\"51\":2,\"87\":2}}],[\"segment\",{\"2\":{\"51\":1,\"87\":1}}],[\"session\",{\"2\":{\"51\":1,\"87\":1}}],[\"second\",{\"2\":{\"92\":1}}],[\"secondary\",{\"2\":{\"30\":2}}],[\"security\",{\"2\":{\"51\":3,\"87\":3}}],[\"secure\",{\"2\":{\"51\":3,\"87\":3}}],[\"sets\",{\"2\":{\"90\":1,\"92\":2}}],[\"set\",{\"0\":{\"32\":1,\"64\":1},\"2\":{\"56\":1,\"77\":1,\"92\":6}}],[\"seq的分析\",{\"2\":{\"45\":1}}],[\"seq实验\",{\"0\":{\"30\":1}}],[\"sequences\",{\"2\":{\"27\":1,\"61\":1}}],[\"sequencing\",{\"2\":{\"2\":1,\"40\":1}}],[\"seq2\",{\"2\":{\"23\":1}}],[\"seq\",{\"0\":{\"20\":1},\"2\":{\"5\":2,\"18\":4,\"23\":2,\"44\":2,\"65\":1,\"83\":1}}],[\"seqwell\",{\"0\":{\"56\":1,\"77\":1},\"2\":{\"5\":1,\"44\":1}}],[\"shutil\",{\"2\":{\"14\":4}}],[\"should\",{\"2\":{\"2\":2,\"16\":1,\"27\":1,\"40\":2,\"55\":1,\"61\":1}}],[\"simulate\",{\"2\":{\"51\":1,\"87\":1}}],[\"simply\",{\"2\":{\"27\":1,\"61\":1}}],[\"singlefile\",{\"2\":{\"50\":1,\"73\":1}}],[\"size=\",{\"2\":{\"92\":1}}],[\"sizes\",{\"2\":{\"14\":8}}],[\"size\",{\"2\":{\"14\":4,\"27\":1,\"61\":1,\"90\":2,\"92\":1}}],[\"situation\",{\"2\":{\"2\":1,\"40\":1,\"46\":1,\"71\":1}}],[\"s\",{\"0\":{\"12\":1,\"52\":1},\"2\":{\"51\":1,\"87\":1}}],[\"step\",{\"2\":{\"51\":4,\"87\":4}}],[\"str\",{\"2\":{\"92\":6}}],[\"strategies\",{\"2\":{\"51\":1,\"87\":1}}],[\"structures\",{\"2\":{\"51\":1,\"87\":1}}],[\"structured\",{\"2\":{\"51\":1,\"87\":1}}],[\"structuring\",{\"2\":{\"51\":1,\"87\":1}}],[\"strip\",{\"2\":{\"92\":1}}],[\"stripes\",{\"2\":{\"28\":1,\"34\":1}}],[\"string\",{\"2\":{\"14\":6,\"32\":1,\"64\":1,\"92\":2}}],[\"stdout\",{\"2\":{\"41\":1}}],[\"stderr\",{\"2\":{\"41\":1}}],[\"star2\",{\"2\":{\"56\":1,\"77\":1}}],[\"start\",{\"2\":{\"12\":2,\"52\":2}}],[\"star\",{\"2\":{\"5\":1,\"44\":1,\"51\":1,\"87\":1}}],[\"starsolo2\",{\"2\":{\"16\":2,\"55\":2,\"56\":1,\"77\":1}}],[\"starsolo\",{\"0\":{\"56\":1,\"77\":1},\"2\":{\"5\":2,\"44\":2,\"56\":2,\"77\":2}}],[\"standards\",{\"2\":{\"51\":1,\"87\":1}}],[\"stand\",{\"2\":{\"2\":1,\"40\":1}}],[\"still\",{\"0\":{\"4\":1,\"7\":1}}],[\"row\",{\"2\":{\"68\":11,\"87\":11,\"88\":11,\"90\":2,\"92\":32}}],[\"rows\",{\"2\":{\"68\":6,\"87\":6,\"88\":6,\"90\":1,\"92\":33}}],[\"roadmap\",{\"0\":{\"62\":1,\"81\":1}}],[\"robust\",{\"2\":{\"51\":2,\"87\":2}}],[\"robustness\",{\"2\":{\"35\":1}}],[\"rna\",{\"2\":{\"56\":1,\"77\":1}}],[\"rc\",{\"2\":{\"41\":1}}],[\"r\",{\"2\":{\"28\":1,\"34\":1}}],[\"ri​\",{\"2\":{\"28\":1,\"34\":1}}],[\"ri\",{\"2\":{\"28\":1,\"34\":1}}],[\"right\",{\"2\":{\"28\":4,\"34\":4}}],[\"riωi\",{\"2\":{\"28\":1,\"34\":1}}],[\"ribocv是一个文档网站\",{\"2\":{\"0\":1}}],[\"r−i+1\",{\"2\":{\"28\":2,\"34\":2}}],[\"r+∑i=1r​ωi\",{\"2\":{\"28\":1,\"34\":1}}],[\"r+∑i=1r\",{\"2\":{\"28\":1,\"34\":1}}],[\"raise\",{\"2\":{\"92\":3}}],[\"raises\",{\"2\":{\"92\":1}}],[\"randint\",{\"2\":{\"92\":1}}],[\"random\",{\"2\":{\"92\":2}}],[\"range\",{\"2\":{\"92\":8}}],[\"rationalization\",{\"2\":{\"51\":1,\"87\":1}}],[\"rationalize\",{\"2\":{\"51\":1,\"87\":1}}],[\"ratio\",{\"2\":{\"27\":1,\"61\":1}}],[\"raw\",{\"2\":{\"2\":1,\"30\":2,\"40\":1}}],[\"rhapsody\",{\"2\":{\"23\":1}}],[\"run\",{\"2\":{\"30\":2,\"51\":1,\"87\":1}}],[\"runtime\",{\"2\":{\"14\":1}}],[\"rust\",{\"2\":{\"12\":2,\"52\":2}}],[\"r2\",{\"2\":{\"14\":8,\"27\":1,\"30\":1,\"61\":1}}],[\"r1\",{\"2\":{\"14\":8,\"27\":2,\"30\":1,\"61\":2}}],[\"remove\",{\"2\":{\"92\":1}}],[\"remains\",{\"2\":{\"51\":1,\"87\":1}}],[\"return\",{\"2\":{\"92\":3}}],[\"returns\",{\"2\":{\"92\":2}}],[\"rectangle\",{\"2\":{\"92\":1}}],[\"recent\",{\"2\":{\"90\":1}}],[\"reused\",{\"0\":{\"62\":1,\"81\":1}}],[\"relatively\",{\"2\":{\"56\":1,\"77\":1}}],[\"reliability\",{\"2\":{\"51\":2,\"87\":2}}],[\"requirements\",{\"2\":{\"51\":1,\"87\":1}}],[\"review\",{\"2\":{\"51\":1,\"87\":1}}],[\"reviews\",{\"2\":{\"51\":1,\"87\":1}}],[\"reverse\",{\"2\":{\"27\":1,\"61\":1}}],[\"rejected\",{\"2\":{\"51\":1,\"87\":1}}],[\"reshape\",{\"2\":{\"90\":2,\"92\":4}}],[\"resolving\",{\"0\":{\"65\":1,\"83\":1}}],[\"resource\",{\"2\":{\"51\":1,\"87\":1}}],[\"results\",{\"2\":{\"12\":1,\"52\":1}}],[\"reasoned\",{\"2\":{\"51\":1,\"87\":1}}],[\"reasoning\",{\"2\":{\"51\":3,\"87\":3}}],[\"real\",{\"2\":{\"51\":1,\"87\":1}}],[\"readability\",{\"2\":{\"51\":3,\"87\":3}}],[\"readily\",{\"2\":{\"2\":1,\"40\":1}}],[\"refactoring\",{\"2\":{\"51\":1,\"87\":1}}],[\"refine\",{\"2\":{\"51\":2,\"87\":2}}],[\"refining\",{\"0\":{\"27\":1,\"61\":1}}],[\"reflect\",{\"2\":{\"51\":1,\"87\":1}}],[\"refdata\",{\"2\":{\"30\":2}}],[\"reference\",{\"2\":{\"30\":2}}],[\"red\",{\"2\":{\"28\":1,\"34\":1,\"92\":4}}],[\"renaming\",{\"2\":{\"27\":1,\"61\":1}}],[\"renamed\",{\"2\":{\"14\":3}}],[\"rename\",{\"2\":{\"14\":5}}],[\"registry\",{\"2\":{\"16\":6,\"55\":6}}],[\"represent\",{\"2\":{\"92\":1}}],[\"replaced\",{\"2\":{\"16\":1,\"55\":1}}],[\"replacing\",{\"2\":{\"12\":1,\"52\":1}}],[\"repositories\",{\"2\":{\"5\":1,\"44\":1}}],[\"further\",{\"2\":{\"92\":1}}],[\"full\",{\"0\":{\"59\":1,\"79\":1}}],[\"fully\",{\"2\":{\"51\":1,\"87\":1}}],[\"future\",{\"2\":{\"51\":3,\"87\":3}}],[\"functions\",{\"2\":{\"51\":1,\"87\":1}}],[\"function\",{\"0\":{\"21\":1,\"50\":1,\"53\":1,\"58\":1,\"73\":1,\"75\":1},\"2\":{\"28\":2,\"34\":2,\"92\":1}}],[\"figure\",{\"2\":{\"92\":1}}],[\"figsize=\",{\"2\":{\"92\":1}}],[\"fig\",{\"2\":{\"92\":1}}],[\"first\",{\"2\":{\"92\":5}}],[\"find\",{\"2\":{\"92\":2}}],[\"finds\",{\"2\":{\"92\":1}}],[\"final\",{\"2\":{\"51\":1,\"87\":1,\"92\":1}}],[\"fix\",{\"0\":{\"46\":1,\"71\":1}}],[\"filtering\",{\"2\":{\"56\":3,\"77\":3}}],[\"filtered\",{\"2\":{\"21\":2,\"41\":1,\"45\":1,\"58\":2}}],[\"filename=\",{\"2\":{\"92\":1}}],[\"filename\",{\"2\":{\"14\":10,\"92\":4}}],[\"filenames\",{\"2\":{\"14\":2}}],[\"file\",{\"2\":{\"14\":32,\"27\":4,\"30\":2,\"32\":1,\"46\":1,\"61\":4,\"62\":2,\"64\":1,\"71\":1,\"81\":2,\"90\":3}}],[\"files\",{\"0\":{\"37\":1,\"42\":1,\"56\":1,\"62\":1,\"67\":1,\"69\":1,\"77\":1,\"81\":1},\"2\":{\"12\":2,\"14\":13,\"21\":1,\"27\":3,\"46\":1,\"50\":1,\"52\":2,\"53\":1,\"58\":1,\"61\":3,\"71\":1,\"73\":1,\"75\":1}}],[\"factors\",{\"2\":{\"92\":1}}],[\"factorization\",{\"2\":{\"92\":2}}],[\"factor\",{\"2\":{\"68\":6,\"87\":6,\"88\":6,\"90\":2,\"92\":27}}],[\"facilitate\",{\"2\":{\"51\":1,\"87\":1}}],[\"facilitating\",{\"2\":{\"51\":1,\"87\":1}}],[\"fast\",{\"2\":{\"62\":1,\"81\":1}}],[\"fasterq\",{\"0\":{\"62\":1,\"81\":1}}],[\"fastq\",{\"2\":{\"14\":15,\"27\":2,\"30\":5,\"37\":1,\"50\":1,\"61\":2,\"62\":2,\"67\":1,\"73\":1,\"81\":2}}],[\"favorable\",{\"2\":{\"51\":1,\"87\":1}}],[\"false\",{\"2\":{\"30\":4}}],[\"frac\",{\"2\":{\"28\":4,\"34\":4}}],[\"from\",{\"2\":{\"14\":1,\"51\":1,\"56\":1,\"77\":1,\"87\":1,\"92\":2}}],[\"fewer\",{\"2\":{\"56\":1,\"77\":1}}],[\"feedback\",{\"2\":{\"51\":1,\"87\":1}}],[\"feature\",{\"2\":{\"21\":2,\"41\":1,\"45\":1,\"58\":2}}],[\"fetch\",{\"2\":{\"2\":1,\"40\":1}}],[\"fontsize=8\",{\"2\":{\"92\":1}}],[\"following\",{\"2\":{\"51\":1,\"87\":1}}],[\"follow\",{\"2\":{\"51\":2,\"87\":2}}],[\"followed\",{\"2\":{\"16\":1,\"55\":1}}],[\"foo\",{\"2\":{\"28\":2,\"34\":2}}],[\"formatting\",{\"2\":{\"51\":1,\"87\":1}}],[\"forward\",{\"2\":{\"12\":1,\"52\":1}}],[\"for\",{\"0\":{\"35\":1,\"37\":1,\"67\":1},\"2\":{\"2\":1,\"5\":1,\"12\":1,\"14\":2,\"21\":1,\"35\":1,\"40\":1,\"44\":1,\"46\":3,\"50\":1,\"51\":7,\"52\":1,\"56\":1,\"58\":1,\"59\":1,\"71\":3,\"73\":1,\"77\":1,\"79\":1,\"87\":7,\"90\":2,\"92\":20}}],[\"f\",{\"2\":{\"14\":6,\"92\":8}}],[\"bbox\",{\"2\":{\"92\":1}}],[\"black\",{\"2\":{\"92\":2}}],[\"bin\",{\"2\":{\"92\":1}}],[\"bio\",{\"2\":{\"35\":1}}],[\"bioos的真正能力将在您尝试构建数据模型\",{\"2\":{\"49\":1}}],[\"bioos\",{\"0\":{\"35\":1},\"2\":{\"30\":5}}],[\"bioos支持多种操作方式\",{\"2\":{\"1\":1}}],[\"boundaries\",{\"2\":{\"92\":2}}],[\"bounds\",{\"2\":{\"90\":1}}],[\"bottom\",{\"2\":{\"68\":3,\"87\":3,\"88\":3,\"90\":1,\"92\":5}}],[\"bottlenecks\",{\"2\":{\"51\":1,\"87\":1}}],[\"both\",{\"2\":{\"5\":1,\"44\":1,\"92\":2}}],[\"break\",{\"2\":{\"51\":1,\"87\":1}}],[\"by\",{\"2\":{\"51\":7,\"56\":2,\"59\":1,\"77\":2,\"79\":1,\"87\":7,\"92\":1}}],[\"bar\",{\"2\":{\"92\":1}}],[\"bars\",{\"2\":{\"92\":2}}],[\"barcode\",{\"2\":{\"56\":1,\"77\":1}}],[\"barcodes\",{\"2\":{\"27\":1,\"61\":1}}],[\"balance\",{\"2\":{\"51\":1,\"87\":1}}],[\"bam\",{\"2\":{\"30\":2,\"41\":2,\"53\":1,\"75\":1}}],[\"badge\",{\"2\":{\"28\":1,\"34\":1}}],[\"based\",{\"0\":{\"39\":1},\"2\":{\"14\":4,\"51\":1,\"56\":1,\"77\":1,\"87\":1,\"92\":2}}],[\"bc\",{\"2\":{\"21\":2,\"41\":1,\"45\":1,\"58\":2}}],[\"but\",{\"2\":{\"56\":1,\"77\":1}}],[\"bugs\",{\"0\":{\"46\":1,\"71\":1}}],[\"bullseye\",{\"2\":{\"14\":1,\"16\":1,\"55\":1}}],[\"built\",{\"2\":{\"2\":1,\"40\":1}}],[\"bd\",{\"0\":{\"56\":1,\"77\":1},\"2\":{\"5\":1,\"23\":1,\"44\":1}}],[\"b\",{\"2\":{\"5\":1,\"28\":21,\"34\":21,\"44\":1}}],[\"been\",{\"0\":{\"62\":1,\"81\":1}}],[\"best\",{\"2\":{\"51\":3,\"87\":3}}],[\"before\",{\"2\":{\"51\":1,\"87\":1}}],[\"between\",{\"2\":{\"51\":2,\"56\":1,\"77\":1,\"87\":2,\"92\":1}}],[\"begin\",{\"2\":{\"51\":1,\"87\":1}}],[\"being\",{\"2\":{\"12\":1,\"52\":1}}],[\"be\",{\"2\":{\"2\":1,\"12\":1,\"16\":1,\"27\":1,\"40\":1,\"51\":1,\"52\":1,\"55\":1,\"56\":1,\"61\":1,\"77\":1,\"87\":1,\"92\":1}}],[\"axes\",{\"2\":{\"92\":1}}],[\"axvline\",{\"2\":{\"92\":1}}],[\"axhline\",{\"2\":{\"92\":1}}],[\"ax\",{\"2\":{\"92\":12}}],[\"axis=1\",{\"2\":{\"92\":1}}],[\"axis=0\",{\"2\":{\"92\":1}}],[\"axis\",{\"2\":{\"90\":1,\"92\":2}}],[\"after\",{\"2\":{\"90\":1,\"92\":1}}],[\"author\",{\"2\":{\"92\":1}}],[\"authors\",{\"2\":{\"59\":1,\"79\":1}}],[\"auto\",{\"2\":{\"30\":2,\"35\":1}}],[\"ambient\",{\"2\":{\"56\":1,\"77\":1}}],[\"amp\",{\"0\":{\"56\":2,\"77\":2},\"2\":{\"5\":2,\"44\":2,\"53\":1,\"75\":1}}],[\"agreement\",{\"2\":{\"56\":1,\"77\":1}}],[\"against\",{\"2\":{\"51\":2,\"87\":2}}],[\"aiding\",{\"2\":{\"51\":1,\"87\":1}}],[\"ai\",{\"2\":{\"51\":1,\"87\":1}}],[\"ai放大了人类的能力边界\",{\"2\":{\"47\":1,\"94\":1}}],[\"append\",{\"2\":{\"92\":5}}],[\"apply\",{\"2\":{\"51\":2,\"87\":2}}],[\"applying\",{\"2\":{\"51\":2,\"87\":2}}],[\"approaches\",{\"2\":{\"51\":1,\"87\":1}}],[\"approach\",{\"2\":{\"51\":3,\"87\":3}}],[\"appropriate\",{\"2\":{\"46\":1,\"71\":1}}],[\"app\",{\"0\":{\"39\":1}}],[\"api等工具的文档在这里\",{\"2\":{\"1\":1}}],[\"api等\",{\"2\":{\"1\":1}}],[\"add\",{\"2\":{\"56\":1,\"77\":1,\"92\":1}}],[\"addeventlistener\",{\"2\":{\"28\":1,\"34\":1}}],[\"added\",{\"0\":{\"21\":1,\"42\":1,\"50\":1,\"53\":1,\"56\":1,\"58\":1,\"69\":1,\"73\":1,\"75\":1,\"77\":1},\"2\":{\"50\":1,\"65\":1,\"73\":1,\"83\":1,\"92\":1}}],[\"adjustments\",{\"2\":{\"51\":1,\"87\":1}}],[\"adaptive\",{\"2\":{\"51\":1,\"87\":1}}],[\"advanced\",{\"2\":{\"51\":2,\"56\":1,\"77\":1,\"87\":2}}],[\"advantage\",{\"2\":{\"2\":1,\"40\":1}}],[\"activated\",{\"2\":{\"56\":1,\"77\":1}}],[\"access\",{\"2\":{\"92\":1}}],[\"accessible\",{\"2\":{\"51\":1,\"87\":1}}],[\"accept\",{\"2\":{\"32\":1,\"64\":1}}],[\"accurately\",{\"2\":{\"27\":1,\"61\":1}}],[\"accordingly\",{\"2\":{\"14\":1}}],[\"ac\",{\"2\":{\"16\":6,\"55\":6}}],[\"al\",{\"2\":{\"56\":1,\"77\":1}}],[\"aligns\",{\"2\":{\"51\":1,\"87\":1}}],[\"aligned\",{\"2\":{\"28\":1,\"34\":1}}],[\"alternative\",{\"2\":{\"51\":1,\"87\":1}}],[\"algorithms\",{\"2\":{\"51\":1,\"87\":1}}],[\"algorithm\",{\"2\":{\"51\":1,\"56\":2,\"77\":2,\"87\":1,\"90\":1,\"92\":3}}],[\"alert\",{\"2\":{\"28\":2,\"34\":2}}],[\"allowing\",{\"2\":{\"56\":1,\"77\":1}}],[\"all\",{\"2\":{\"16\":1,\"51\":1,\"55\":1,\"87\":1}}],[\"alone\",{\"2\":{\"2\":1,\"40\":1}}],[\"arange\",{\"2\":{\"92\":2}}],[\"articulate\",{\"2\":{\"51\":1,\"87\":1}}],[\"args\",{\"2\":{\"56\":2,\"77\":2}}],[\"arg\",{\"2\":{\"18\":1}}],[\"array\",{\"2\":{\"14\":5,\"32\":1,\"64\":1,\"92\":2}}],[\"areas\",{\"2\":{\"51\":1,\"87\":1}}],[\"are\",{\"0\":{\"4\":1,\"62\":1,\"81\":1},\"2\":{\"12\":1,\"28\":2,\"34\":2,\"51\":2,\"52\":1,\"56\":1,\"65\":1,\"77\":1,\"83\":1,\"87\":2}}],[\"able\",{\"2\":{\"12\":1,\"52\":1}}],[\"analysis\",{\"2\":{\"41\":1}}],[\"and\",{\"0\":{\"62\":1,\"81\":1},\"2\":{\"14\":3,\"27\":2,\"51\":36,\"56\":2,\"59\":1,\"61\":2,\"77\":2,\"79\":1,\"87\":36,\"90\":1,\"92\":11}}],[\"any\",{\"2\":{\"12\":1,\"51\":1,\"52\":1,\"87\":1}}],[\"an\",{\"2\":{\"12\":1,\"27\":1,\"32\":1,\"35\":2,\"51\":2,\"52\":1,\"61\":1,\"64\":1,\"87\":2}}],[\"attention\",{\"2\":{\"56\":1,\"77\":1}}],[\"attenton\",{\"0\":{\"16\":1,\"55\":1}}],[\"attribution\",{\"2\":{\"27\":1,\"61\":1}}],[\"at\",{\"2\":{\"5\":1,\"44\":1,\"51\":1,\"87\":1,\"92\":2}}],[\"atac\",{\"2\":{\"5\":1,\"18\":1,\"44\":1}}],[\"available\",{\"2\":{\"2\":1,\"40\":1}}],[\"assess\",{\"2\":{\"51\":1,\"87\":1}}],[\"assign\",{\"2\":{\"14\":1}}],[\"aside\",{\"2\":{\"28\":1,\"34\":1}}],[\"as\",{\"0\":{\"32\":1,\"64\":1},\"2\":{\"2\":1,\"12\":1,\"16\":1,\"32\":1,\"40\":1,\"51\":3,\"52\":1,\"53\":2,\"55\":1,\"64\":1,\"75\":2,\"87\":3,\"92\":12}}],[\"a\",{\"0\":{\"12\":1,\"52\":1},\"2\":{\"2\":1,\"12\":2,\"27\":1,\"28\":23,\"34\":23,\"35\":2,\"40\":1,\"51\":4,\"52\":2,\"59\":1,\"61\":1,\"65\":1,\"79\":1,\"83\":1,\"87\":4,\"92\":10}}],[\"write\",{\"2\":{\"51\":1,\"87\":1}}],[\"wrapper\",{\"2\":{\"28\":1,\"34\":1}}],[\"wcnjupodeig44rr6t02v0\",{\"2\":{\"30\":5}}],[\"way\",{\"2\":{\"65\":1,\"83\":1}}],[\"warning\",{\"2\":{\"28\":1,\"34\":1}}],[\"was\",{\"2\":{\"27\":1,\"61\":1}}],[\"wiki\",{\"2\":{\"94\":1}}],[\"wise\",{\"2\":{\"90\":1,\"92\":1}}],[\"without\",{\"0\":{\"56\":1,\"77\":1}}],[\"with\",{\"0\":{\"59\":1,\"79\":1},\"2\":{\"27\":1,\"32\":1,\"46\":1,\"51\":1,\"56\":1,\"61\":1,\"62\":1,\"64\":1,\"71\":1,\"77\":1,\"81\":1,\"87\":1,\"90\":2,\"92\":11}}],[\"will\",{\"2\":{\"2\":1,\"40\":1,\"51\":2,\"87\":2}}],[\"whitespace\",{\"2\":{\"92\":1}}],[\"which=\",{\"2\":{\"92\":1}}],[\"which\",{\"0\":{\"56\":1,\"77\":1},\"2\":{\"62\":1,\"81\":1}}],[\"why\",{\"2\":{\"51\":2,\"87\":2}}],[\"whether\",{\"2\":{\"51\":1,\"87\":1}}],[\"when\",{\"2\":{\"27\":2,\"61\":2}}],[\"what\",{\"0\":{\"2\":1,\"5\":1,\"40\":1,\"44\":1}}],[\"wdl文件或者云计算有深入的了解\",{\"2\":{\"25\":1}}],[\"wdl\",{\"0\":{\"35\":1,\"42\":1,\"56\":1,\"69\":1,\"77\":1},\"2\":{\"5\":7,\"12\":1,\"14\":2,\"21\":1,\"31\":2,\"42\":1,\"44\":7,\"50\":1,\"52\":1,\"58\":1,\"69\":1,\"73\":1}}],[\"word\",{\"2\":{\"28\":1,\"34\":1}}],[\"workflow\",{\"2\":{\"14\":2,\"30\":20,\"46\":1,\"51\":1,\"71\":1,\"87\":1}}],[\"workspace是bioos中的重要概念\",{\"2\":{\"3\":1}}],[\"workspace是什么\",{\"2\":{\"3\":1}}],[\"workspace\",{\"2\":{\"3\":1,\"26\":1}}],[\"woring\",{\"2\":{\"2\":1,\"40\":1}}],[\"were\",{\"2\":{\"51\":2,\"87\":2}}],[\"web\",{\"2\":{\"41\":1}}],[\"well\",{\"2\":{\"23\":1,\"51\":4,\"87\":4}}],[\"we\",{\"0\":{\"2\":1,\"4\":1,\"5\":1,\"40\":1,\"44\":1},\"2\":{\"2\":2,\"35\":1,\"40\":2,\"46\":3,\"71\":3}}]],\"serializationVersion\":2}" \ No newline at end of file diff --git a/docs/.vuepress/.temp/internal/routes.js b/docs/.vuepress/.temp/internal/routes.js index 77c7ee29..5b8aa0f9 100644 --- a/docs/.vuepress/.temp/internal/routes.js +++ b/docs/.vuepress/.temp/internal/routes.js @@ -1,18 +1,18 @@ -export const redirects = JSON.parse("{\"/quickstart.html\":\"/quickstart/\",\"/preview/custom-component.example.html\":\"/article/3d8imd0d/\",\"/preview/markdown.html\":\"/article/f659up3p/\",\"/notes/intruction.html\":\"/news/\",\"/notes/onProgress.html\":\"/notes/onProgress/\",\"/en/preview/custom-component.example.html\":\"/en/article/ml5w8aoh/\",\"/en/preview/markdown.html\":\"/en/article/ux3egthv/\",\"/notes/02_othersNot10XGenomics/\":\"/02_othersNot10XGenomics/\",\"/notes/01_10X_Genomics/\":\"/01_10X_Genomics/\",\"/notes/01_10X_Genomics/scRNA-seq.html\":\"/01_10X_Genomics/scRNA-seq/\",\"/notes/03_dataArrangement/\":\"/03_dataArrangement/\",\"/notes/04_codeStyle/\":\"/04_codeStyle/\",\"/notes/04_codeStyle/meandAI.html\":\"/04_codeStyle/meandAI/\",\"/notes/demo/\":\"/demo/news/\",\"/notes/demo/bar.html\":\"/demo/0bkg7fdz/\",\"/notes/demo/foo.html\":\"/demo/qxmbevac/\",\"/en/notes/demo/\":\"/en/demo/\",\"/en/notes/demo/bar.html\":\"/en/demo/6dqs79xt/\",\"/en/notes/demo/foo.html\":\"/en/demo/sraz55bk/\"}") +export const redirects = JSON.parse("{\"/quickstart.html\":\"/quickstart/\",\"/notes/intruction.html\":\"/news/\",\"/notes/onProgress.html\":\"/notes/onProgress/\",\"/preview/custom-component.example.html\":\"/article/3d8imd0d/\",\"/preview/markdown.html\":\"/article/f659up3p/\",\"/en/preview/custom-component.example.html\":\"/en/article/ml5w8aoh/\",\"/en/preview/markdown.html\":\"/en/article/ux3egthv/\",\"/notes/01_10X_Genomics/\":\"/01_10X_Genomics/\",\"/notes/01_10X_Genomics/scRNA-seq.html\":\"/01_10X_Genomics/scRNA-seq/\",\"/notes/02_othersNot10XGenomics/\":\"/02_othersNot10XGenomics/\",\"/notes/03_dataArrangement/\":\"/03_dataArrangement/\",\"/notes/04_codeStyle/\":\"/04_codeStyle/\",\"/notes/04_codeStyle/meandAI.html\":\"/04_codeStyle/meandAI/\",\"/notes/demo/\":\"/demo/news/\",\"/notes/demo/bar.html\":\"/demo/0bkg7fdz/\",\"/notes/demo/foo.html\":\"/demo/qxmbevac/\",\"/en/notes/demo/\":\"/en/demo/\",\"/en/notes/demo/bar.html\":\"/en/demo/6dqs79xt/\",\"/en/notes/demo/foo.html\":\"/en/demo/sraz55bk/\"}") export const routes = Object.fromEntries([ ["/", { loader: () => import(/* webpackChunkName: "index.html" */"/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/index.html.js"), meta: {"title":""} }], ["/quickstart/", { loader: () => import(/* webpackChunkName: "quickstart_index.html" */"/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/quickstart/index.html.js"), meta: {"title":"快速开始"} }], ["/en/", { loader: () => import(/* webpackChunkName: "en_index.html" */"/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/en/index.html.js"), meta: {"title":""} }], - ["/article/3d8imd0d/", { loader: () => import(/* webpackChunkName: "article_3d8imd0d_index.html" */"/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/article/3d8imd0d/index.html.js"), meta: {"title":"自定义组件"} }], - ["/article/f659up3p/", { loader: () => import(/* webpackChunkName: "article_f659up3p_index.html" */"/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/article/f659up3p/index.html.js"), meta: {"title":"Markdown"} }], ["/news/", { loader: () => import(/* webpackChunkName: "news_index.html" */"/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/news/index.html.js"), meta: {"title":"Introduction"} }], ["/notes/onProgress/", { loader: () => import(/* webpackChunkName: "notes_onProgress_index.html" */"/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/notes/onProgress/index.html.js"), meta: {"title":"onPress"} }], + ["/article/3d8imd0d/", { loader: () => import(/* webpackChunkName: "article_3d8imd0d_index.html" */"/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/article/3d8imd0d/index.html.js"), meta: {"title":"自定义组件"} }], + ["/article/f659up3p/", { loader: () => import(/* webpackChunkName: "article_f659up3p_index.html" */"/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/article/f659up3p/index.html.js"), meta: {"title":"Markdown"} }], ["/en/article/ml5w8aoh/", { loader: () => import(/* webpackChunkName: "en_article_ml5w8aoh_index.html" */"/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/en/article/ml5w8aoh/index.html.js"), meta: {"title":"Custom Component"} }], ["/en/article/ux3egthv/", { loader: () => import(/* webpackChunkName: "en_article_ux3egthv_index.html" */"/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/en/article/ux3egthv/index.html.js"), meta: {"title":"Markdown"} }], - ["/02_othersNot10XGenomics/", { loader: () => import(/* webpackChunkName: "02_othersNot10XGenomics_index.html" */"/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/02_othersNot10XGenomics/index.html.js"), meta: {"title":"othersNot10XGenomics"} }], ["/01_10X_Genomics/", { loader: () => import(/* webpackChunkName: "01_10X_Genomics_index.html" */"/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/01_10X_Genomics/index.html.js"), meta: {"title":"10X_Genomics"} }], ["/01_10X_Genomics/scRNA-seq/", { loader: () => import(/* webpackChunkName: "01_10X_Genomics_scRNA-seq_index.html" */"/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/01_10X_Genomics/scRNA-seq/index.html.js"), meta: {"title":"10X Genomics scRNA-seq 数据分析"} }], + ["/02_othersNot10XGenomics/", { loader: () => import(/* webpackChunkName: "02_othersNot10XGenomics_index.html" */"/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/02_othersNot10XGenomics/index.html.js"), meta: {"title":"othersNot10XGenomics"} }], ["/03_dataArrangement/", { loader: () => import(/* webpackChunkName: "03_dataArrangement_index.html" */"/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/03_dataArrangement/index.html.js"), meta: {"title":"dataArrangement"} }], ["/04_codeStyle/", { loader: () => import(/* webpackChunkName: "04_codeStyle_index.html" */"/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/04_codeStyle/index.html.js"), meta: {"title":"codeStyle"} }], ["/04_codeStyle/meandAI/", { loader: () => import(/* webpackChunkName: "04_codeStyle_meandAI_index.html" */"/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/04_codeStyle/meandAI/index.html.js"), meta: {"title":"人工智能协助代码开发"} }], diff --git a/docs/.vuepress/.temp/internal/siteData.js b/docs/.vuepress/.temp/internal/siteData.js index b74da7e1..393cc3a9 100644 --- a/docs/.vuepress/.temp/internal/siteData.js +++ b/docs/.vuepress/.temp/internal/siteData.js @@ -1,4 +1,4 @@ -export const siteData = JSON.parse("{\"base\":\"/WDL_Tools_docs/\",\"lang\":\"zh-CN\",\"title\":\"\",\"description\":\"\",\"head\":[],\"locales\":{\"/\":{\"title\":\"RiboCV\",\"lang\":\"zh-CN\",\"description\":\"Docs here\"},\"/en/\":{\"title\":\"RiboCV\",\"lang\":\"en-US\",\"description\":\"Docs here\"}}}") +export const siteData = JSON.parse("{\"base\":\"/\",\"lang\":\"zh-CN\",\"title\":\"\",\"description\":\"\",\"head\":[],\"locales\":{\"/\":{\"title\":\"RiboCV\",\"lang\":\"zh-CN\",\"description\":\"Docs here\"},\"/en/\":{\"title\":\"RiboCV\",\"lang\":\"en-US\",\"description\":\"Docs here\"}}}") if (import.meta.webpackHot) { import.meta.webpackHot.accept() diff --git a/docs/.vuepress/.temp/pages/01_10X_Genomics/scRNA-seq/index.html.js b/docs/.vuepress/.temp/pages/01_10X_Genomics/scRNA-seq/index.html.js index bb3fa0b3..5a7cb3a1 100644 --- a/docs/.vuepress/.temp/pages/01_10X_Genomics/scRNA-seq/index.html.js +++ b/docs/.vuepress/.temp/pages/01_10X_Genomics/scRNA-seq/index.html.js @@ -1,5 +1,5 @@ import comp from "/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/01_10X_Genomics/scRNA-seq/index.html.vue" -const data = JSON.parse("{\"path\":\"/01_10X_Genomics/scRNA-seq/\",\"title\":\"10X Genomics scRNA-seq 数据分析\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"10X Genomics scRNA-seq 数据分析\",\"createTime\":\"2024/10/30 11:20:18\",\"permalink\":\"/01_10X_Genomics/scRNA-seq/\",\"gitInclude\":[]},\"headers\":[{\"level\":2,\"title\":\"10X Genomics scRNA-seq\",\"slug\":\"_10x-genomics-scrna-seq\",\"link\":\"#_10x-genomics-scrna-seq\",\"children\":[]},{\"level\":2,\"title\":\"写在前面\",\"slug\":\"写在前面\",\"link\":\"#写在前面\",\"children\":[{\"level\":3,\"title\":\"对于一个典型的10X Genomics scRNA-seq实验,我们推荐使用如下的json文件:\",\"slug\":\"对于一个典型的10x-genomics-scrna-seq实验-我们推荐使用如下的json文件\",\"link\":\"#对于一个典型的10x-genomics-scrna-seq实验-我们推荐使用如下的json文件\",\"children\":[]},{\"level\":3,\"title\":\"提交任务\",\"slug\":\"提交任务\",\"link\":\"#提交任务\",\"children\":[]},{\"level\":3,\"title\":\"查看结果\",\"slug\":\"查看结果\",\"link\":\"#查看结果\",\"children\":[]}]},{\"level\":2,\"title\":\"🤔 如果你想在本地查看结果?\",\"slug\":\"🤔-如果你想在本地查看结果\",\"link\":\"#🤔-如果你想在本地查看结果\",\"children\":[]},{\"level\":2,\"title\":\"如果我有很多数据呢?\",\"slug\":\"如果我有很多数据呢\",\"link\":\"#如果我有很多数据呢\",\"children\":[]}],\"readingTime\":{\"minutes\":4.76,\"words\":1429},\"filePathRelative\":\"notes/01_10X_Genomics/scRNA-seq.md\",\"bulletin\":false}") +const data = JSON.parse("{\"path\":\"/01_10X_Genomics/scRNA-seq/\",\"title\":\"10X Genomics scRNA-seq 数据分析\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"10X Genomics scRNA-seq 数据分析\",\"createTime\":\"2024/10/30 11:20:18\",\"permalink\":\"/01_10X_Genomics/scRNA-seq/\",\"gitInclude\":[]},\"headers\":[{\"level\":2,\"title\":\"10X Genomics scRNA-seq\",\"slug\":\"_10x-genomics-scrna-seq\",\"link\":\"#_10x-genomics-scrna-seq\",\"children\":[]},{\"level\":2,\"title\":\"写在前面\",\"slug\":\"写在前面\",\"link\":\"#写在前面\",\"children\":[{\"level\":3,\"title\":\"对于一个典型的10X Genomics scRNA-seq实验,我们推荐使用如下的json文件:\",\"slug\":\"对于一个典型的10x-genomics-scrna-seq实验-我们推荐使用如下的json文件\",\"link\":\"#对于一个典型的10x-genomics-scrna-seq实验-我们推荐使用如下的json文件\",\"children\":[]},{\"level\":3,\"title\":\"提交任务\",\"slug\":\"提交任务\",\"link\":\"#提交任务\",\"children\":[]},{\"level\":3,\"title\":\"查看结果\",\"slug\":\"查看结果\",\"link\":\"#查看结果\",\"children\":[]}]},{\"level\":2,\"title\":\"🤔 如果你想在本地查看结果?\",\"slug\":\"🤔-如果你想在本地查看结果\",\"link\":\"#🤔-如果你想在本地查看结果\",\"children\":[]},{\"level\":2,\"title\":\"如果我有很多数据呢?\",\"slug\":\"如果我有很多数据呢\",\"link\":\"#如果我有很多数据呢\",\"children\":[]}],\"readingTime\":{\"minutes\":4.77,\"words\":1431},\"filePathRelative\":\"notes/01_10X_Genomics/scRNA-seq.md\",\"bulletin\":false}") export { comp, data } if (import.meta.webpackHot) { diff --git a/docs/.vuepress/.temp/pages/01_10X_Genomics/scRNA-seq/index.html.vue b/docs/.vuepress/.temp/pages/01_10X_Genomics/scRNA-seq/index.html.vue index 95bebf2f..7f3f0354 100644 --- a/docs/.vuepress/.temp/pages/01_10X_Genomics/scRNA-seq/index.html.vue +++ b/docs/.vuepress/.temp/pages/01_10X_Genomics/scRNA-seq/index.html.vue @@ -46,8 +46,9 @@

提交任务

让我们回到BioOS平台,来到我们的cellrangerTest页面。试试看,找到页面上的"运行参数"选项卡>输入参数>"上传JSON文件",将您的json文件上传。

然后,点击页面上的绿色按钮"开始分析",等待任务完成。

+

图片

查看结果

任务完成后,您可以在分析历史中看到您的任务。点击任务名称,进入任务详情页面。在任务详情页面,您可以查看/下载结果。

在这个示例中,我们需要的文件在 "outs" 文件夹中,让我们逐渐深入文件夹,找到我们需要的文件。

🤔 如果你想在本地查看结果?

我们需要这里的 $ID_filtered_feature_bc_matrix.h5ad 文件,让我们点击下载。

快速实现公式

+

代码的运行效果

+
+

仔细看看下面的代码,这就是你加上o1-mini的能力

+
+ +

结语

我必须在这里重申 “AI放大了人类的能力边界”,代码的最终结果极大的取决于 “人的思考” 的质量。

diff --git a/docs/.vuepress/.temp/pages/notes/onProgress/index.html.js b/docs/.vuepress/.temp/pages/notes/onProgress/index.html.js index fc46b7d8..480c83b4 100644 --- a/docs/.vuepress/.temp/pages/notes/onProgress/index.html.js +++ b/docs/.vuepress/.temp/pages/notes/onProgress/index.html.js @@ -1,5 +1,5 @@ import comp from "/Users/hughes/docs/WDL_Tools_docs/docs/.vuepress/.temp/pages/notes/onProgress/index.html.vue" -const data = JSON.parse("{\"path\":\"/notes/onProgress/\",\"title\":\"onPress\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"onPress\",\"createTime\":\"2024/11/07 10:35:59\",\"permalink\":\"/notes/onProgress/\",\"gitInclude\":[]},\"headers\":[{\"level\":2,\"title\":\"Sorry, we are still on progress.\",\"slug\":\"sorry-we-are-still-on-progress\",\"link\":\"#sorry-we-are-still-on-progress\",\"children\":[]},{\"level\":2,\"title\":\"正在更新 Still On Progress\",\"slug\":\"正在更新-still-on-progress\",\"link\":\"#正在更新-still-on-progress\",\"children\":[]},{\"level\":2,\"title\":\"视频嵌入\",\"slug\":\"视频嵌入\",\"link\":\"#视频嵌入\",\"children\":[]},{\"level\":2,\"title\":\"标题 2\",\"slug\":\"标题-2\",\"link\":\"#标题-2\",\"children\":[{\"level\":3,\"title\":\"标题 3\",\"slug\":\"标题-3\",\"link\":\"#标题-3\",\"children\":[]}]},{\"level\":2,\"title\":\"online notebook, based on marimo.app\",\"slug\":\"online-notebook-based-on-marimo-app\",\"link\":\"#online-notebook-based-on-marimo-app\",\"children\":[]}],\"readingTime\":{\"minutes\":2.9,\"words\":869},\"filePathRelative\":\"notes/onProgress.md\",\"categoryList\":[{\"id\":\"4358b5\",\"sort\":10001,\"name\":\"notes\"}],\"bulletin\":false}") +const data = JSON.parse("{\"path\":\"/notes/onProgress/\",\"title\":\"onPress\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"onPress\",\"createTime\":\"2024/11/07 10:35:59\",\"permalink\":\"/notes/onProgress/\",\"gitInclude\":[]},\"headers\":[{\"level\":2,\"title\":\"Sorry, we are still on progress.\",\"slug\":\"sorry-we-are-still-on-progress\",\"link\":\"#sorry-we-are-still-on-progress\",\"children\":[]},{\"level\":2,\"title\":\"正在更新 Still On Progress\",\"slug\":\"正在更新-still-on-progress\",\"link\":\"#正在更新-still-on-progress\",\"children\":[]},{\"level\":2,\"title\":\"视频嵌入\",\"slug\":\"视频嵌入\",\"link\":\"#视频嵌入\",\"children\":[]},{\"level\":2,\"title\":\"标题 2\",\"slug\":\"标题-2\",\"link\":\"#标题-2\",\"children\":[{\"level\":3,\"title\":\"标题 3\",\"slug\":\"标题-3\",\"link\":\"#标题-3\",\"children\":[]}]},{\"level\":2,\"title\":\"online notebook, based on marimo.app\",\"slug\":\"online-notebook-based-on-marimo-app\",\"link\":\"#online-notebook-based-on-marimo-app\",\"children\":[]}],\"readingTime\":{\"minutes\":3,\"words\":900},\"filePathRelative\":\"notes/onProgress.md\",\"categoryList\":[{\"id\":\"4358b5\",\"sort\":10001,\"name\":\"notes\"}],\"bulletin\":false}") export { comp, data } if (import.meta.webpackHot) { diff --git a/docs/.vuepress/.temp/pages/notes/onProgress/index.html.vue b/docs/.vuepress/.temp/pages/notes/onProgress/index.html.vue index 89d62cbe..5ec31ea7 100644 --- a/docs/.vuepress/.temp/pages/notes/onProgress/index.html.vue +++ b/docs/.vuepress/.temp/pages/notes/onProgress/index.html.vue @@ -6,6 +6,14 @@
+

colab 嵌入

+
+ +

标题 2

标题 3

标题 4

@@ -116,7 +124,7 @@ }

代码分组:

-