Method of validating program code of synthetic computer program
By verifying the program code of the synthetic computer program, generating parameter matrix and performing automatic error detection and correction, the problem of parameter deviation in oligonucleotide synthesis is solved, and the reliability and robustness of synthesis are improved.
Patent Information
- Application Number
- CN202380045561.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-06-08
- Filing Date
- 2023-06-07
- Publication Date
- 2025-01-17
AI Technical Summary
Existing computer programs are used in oligonucleotide synthesis due to their complexity, which leads to parameter deviations and quality problems during the synthesis process, affecting the production quality of oligonucleotides.
By verifying the program code of the synthetic computer program, the parameter matrix is generated using the automatic parsing process, and automatic error detection and correction are performed to ensure the consistency and accuracy of the parameters during the synthesis process.
The verification process of computer programs is simplified, the reliability and robustness of oligonucleotide synthesis is improved, human resource requirements are reduced, and production efficiency is improved.
Smart Images

Figure CN119325628A_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to a method and system for verifying the program code of a synthetic computer program. The present invention further relates to a computer program and a computer-readable storage medium for carrying out the method. In addition, the present invention relates to a method for synthesizing at least one oligonucleotide. The method, system, computer program and computer-readable storage medium can be used for the research or manufacture of oligonucleotides, in particular by means of solid phase synthesis, in particular industrial-scale manufacture. Background Art
[0002] The principles of oligonucleotide synthesis are well known in the art (see, e.g., oligonucleotide synthesis; Wikipedia, the free encyclopedia; https: / / en.wikipedia.org / wiki / Oligonucleotide synthesis, May 30, 2022). For example, the synthesis of oligonucleotides by means of solid phase synthesis generally requires multiple synthesis cycles to be performed sequentially. Synthesis can be automatically performed using a computer-controlled synthesizer configured to automatically perform a sequence of synthesis cycles. The synthesizer may be specifically configured to perform a sequence of synthesis cycles according to a computer program that controls the functionality of the synthesizer. The computer program may include commands for controlling the synthesizer according to a given synthesis plan, which indicates specific synthesis parameters related to reagents, solvents, flow rates, volumes, time intervals, etc., which are set at the synthesizer in different synthesis cycles.
[0003] Generally speaking, when using computer program to control the synthesis of oligonucleotide, the deviation between computer program and synthesis plan is difficult to detect, because computer program usually comprises the complicated command sequence with multiple functions and subroutine specifically. Deviation between computer program and synthesis plan (for example about the deviation of reagent or solvent to be used in specific synthesis cycle and / or the deviation of reagent or solvent amount, flow and / or delivery time used in specific synthesis cycle) may make it impossible to carry out the synthesis of oligonucleotide, or may cause the generation of incorrect and / or substandard quality oligonucleotide.
[0004] Because oligonucleotide can be used for pharmaceutical purposes specifically, therefore before actually starting synthesis, need to verify carefully for controlling any computer program of synthesis.Yet, as mentioned above, the complexity that is usually used for controlling many computer programs of synthesis makes verification quite difficult.Particularly, the use of function and routine in program makes the inspection to integrity and the inspection to the value of many parameters used in building-up process be aggravated.
[0005] Issues to be resolved
[0006] Therefore, it is desirable to provide methods and devices that at least partially address the above technical challenges. In particular, methods and devices should be proposed that allow validation of computer programs for oligonucleotide synthesis and provide reliable and robust oligonucleotide synthesis. Summary of the invention
[0007] The problem is solved by a method for verifying a program code of a synthetic computer program, a system for verifying a program code of a synthetic computer program, a computer program and a computer-readable storage medium for carrying out said method, and by a method for synthesizing at least one oligonucleotide having the features of the independent claims. In the dependent claims and throughout the description, advantageous embodiments are listed which can be realized individually or in any combination.
[0008] As used below, the terms "having", "comprising" or "including" or any grammatical variations thereof are used in a non-exclusive manner. Thus, these terms may refer to the absence of other features in the entity described in this context in addition to the features introduced by these terms, or the presence of one or more other features. As an example, the expressions "A has B", "A includes B" and "A contains B" may refer to the absence of other elements in A in addition to B (i.e., the presence of A solely and exclusively consisting of B); or to the presence of one or more other elements in entity A in addition to B (such as element C, element C and element D, or even other elements).
[0009] Further, it should be noted that the terms "at least one", "one or more" or similar expressions indicating that a feature or element may be present once or more than once are usually used only once when introducing the corresponding feature or element. In the following, in most cases, when referring to the corresponding feature or element, the expression "at least one" or "one or more" is not repeated even though the corresponding feature or element may be present only once or more than once.
[0010] Further, as used hereinafter, the terms "preferably", "more preferably", "particularly", "more particularly", "specifically", "more specifically" or similar terms are used in conjunction with optional features without limiting the possibilities of alternatives. Therefore, the features introduced by these terms are optional features and are not intended to limit the scope of the claims in any way. As the skilled person will recognize, the present invention can be carried out by using alternative features. Similarly, the features introduced by "in one embodiment of the present invention" or similar expressions are intended to be optional features without any limitation on alternative embodiments of the present invention, without any limitation on the scope of the present invention, and without any limitation on the possibility of combining the features introduced in this manner with other optional or non-optional features of the present invention.
[0011] In a first aspect of the invention, a method of verifying program code of a composite computer program is disclosed.
[0012] As used herein, the term "verification" is a broad term and is given a common and customary meaning to a person of ordinary skill in the art, and is not limited to a special or custom meaning. The term may specifically refer to, but is not limited to, a process of evaluating one or more specifications of a program code. Specifically, the process of verifying a program code (also referred to as "verification" or "software verification") may include an implementation of evaluating one or more specifications of the program code. The specification of the program code may include one or more of the following: effects, specifically predefined effects or results after the program code is executed; computing resources required to execute the program code; time required to execute the program code; parameters and parameter values used during the execution of the program code or used in the program code, etc. In other words, the process of verification may include, for example, determining whether one or more of the specifications of the program code meet or satisfy one or more defined conditions, such as conditions defined before the program code is created and / or conditions implemented or defined when the program is executed, by calling the program code with a desired set of parameters and / or parameter values. The result of the process of verifying the program code may include one or more findings that the specification of the program code is fully implemented, partially implemented, and / or not implemented. As an example, a program code for a synthesis computer program can be created according to a given synthesis plan. The process of verification can include, for example, determining whether the program code is suitable for implementing a given synthesis plan on a synthesizer by performing a sequence of given synthesis cycles, using correct reagents, using correct reagent sequences, using correct solvent sequences, using correct starting materials, using correct solvents and / or flow rates, etc. In particular, the process of verifying the program code can include determining whether the correct sequence of occurrence, such as the correct sequence of occurrence of reactants and / or solvents at a particular synthesis cycle, is used according to a given synthesis plan.
[0013] As used herein, the term "program code" is a broad term and is given a common and customary meaning for those of ordinary skill in the art, and is not limited to a special or custom meaning. The term may specifically refer to, but is not limited to, a sequence of instructions that can be executed or interpreted by a computer. The program code can cause the computer to execute the instructions included in the program code when executed by a computer, specifically by the central processing unit (CPU) of the computer, and more specifically by the central programming unit of the computer. The program code can be written in a programming or scripting language (such as C, C#, C++, Java, python, R, Fortran, JavaScript, HTML, etc.). The program code can be specifically in a human-readable form, and therefore can also be referred to as "source code". In order to execute the program code on a computer, the program code can be converted into machine-readable instructions by a compiler specific to the programming language. The instructions of the program code may include instructions that cause the computer to perform specific functions and / or declarations, such as for defining functions, variables, constants and / or categories included by the program code. Alternatively or additionally, the program code may include supplementary information, such as a header placed in front of the sequence of instructions included by the program code, a note or further information between the instructions of the program code, etc. Alternatively or additionally, the program code may include incomplete program code, such as program code having gaps to be filled with specific parameter values, wherein the program code may be completed by performing the method.
[0014] The sequence of instructions included by the program code can be specifically included by the text segment after the header. The program code can include a single instruction sequence, which is performed in a given order when the program code is executed by a computer, for example, starting from the first instruction and ending with the last instruction. Alternatively or additionally, the program code can include a plurality of program code blocks, wherein each program code block includes an instruction sequence. The instruction sequence in each program code block can be executed in a given order. However, the program code can include references to one or more other program code blocks in the main instruction sequence. Therefore, when the main instruction sequence of the program code is executed, the computer can jump to the program code block involved and can execute the program code block involved. In addition, the program code can include multiple references to the same program code block.
[0015] The program code may specifically be a method file, specifically a Unicorn method file. Additionally or alternatively, the program code may be a binary program code.
[0016] As used herein, the term "computer program" is a broad term and is given a meaning that is ordinary and customary to persons of ordinary skill in the art and is not limited to a special or custom meaning. The term may specifically refer to, but is not limited to, a functional entity including one or more software applications for enabling a computer to implement at least one functionality. In particular, a computer program may represent an algorithm performed by a computer when the computer executes the program code of the computer program. In other words, the program code may include computer-readable instructions, and the computer program may constitute a representation of the work actually performed by the computer when the computer executes the computer-readable instructions.
[0017] As used herein, the term "computer" is a broad term and is given a common and customary meaning to a person of ordinary skill in the art, and is not limited to a special or custom meaning. The term may specifically refer to, but is not limited to, a device or system configured for electronic data processing. Specifically, a computer that may include a single computer, a distributed computer, or a computer network may also include one or more processors for data processing. As used herein, the term "processor" is a broad term and is given a common and customary meaning to a person of ordinary skill in the art, and is not limited to a special or custom meaning. The term may specifically refer to, but is not limited to, any logical circuit system configured to perform the basic operations of a computer or system; and / or, in general, a device configured to perform calculations or logical operations. In particular, a processor may be configured to process basic instructions that drive a computer or system. As an example, a processor may include at least one arithmetic logic unit (ALU), at least one floating point unit (FPU) (such as a math coprocessor or a numerical coprocessor), a plurality of registers (specifically registers configured to provide operands to the ALU and store operation results), and a memory (such as L1 and L2 cache memories). In particular, the processor may be a multi-core processor. Specifically, the processor may be or may include a central processing unit (CPU). Additionally or alternatively, the processor may be or may include a microprocessor, and therefore, specifically, the elements of the processor may be contained in a single integrated circuit (IC) chip. Additionally or alternatively, the processor may be or may include one or more application specific integrated circuits (ASICs) and / or one or more field programmable gate arrays (FPGAs) and / or one or more tensor processing units (TPUs) and / or one or more chips, such as dedicated machine learning optimization chips, etc. The processor may be specifically configurable (such as by software programming) for performing one or more evaluation operations.
[0018] As used herein, the term "synthetic computer program" is a broad term and is given a common and customary meaning for a person of ordinary skill in the art, and is not limited to a special or custom meaning. The term may specifically refer to, but is not limited to, a computer program for enabling a computer to implement the function of controlling an automatic synthesizer to synthesize at least one oligonucleotide. The program code may be a part of a synthetic computer program or may be included by a synthetic computer program. The synthetic computer program may include one or more software applications for executing the program code on a computer. For example, the synthetic computer program may include at least one compiler for translating the program code into machine-readable instructions. Therefore, the synthetic computer program may include at least one software application, which enables the computer to implement the instructions given by the program code when executed by a computer, for example, for performing the synthesis of at least one oligonucleotide on an automatic synthesizer. The synthetic computer program may include at least one software application for interacting with one or more of the hardware of the computer and the automatic synthesizer. In addition, the synthetic computer program may include at least one software application for providing a user interface. Via the user interface, a user may be able to input and / or be able to create a program code for synthesizing at least one oligonucleotide on an automatic synthesizer.
[0019] The synthesis computer program is configured for computer control of an automatic synthesizer to automatically synthesize at least one oligonucleotide. The synthesis computer program has a plurality of program cycles for computer control of an automatic synthesizer to sequentially synthesize oligonucleotides through a sequence of at least one synthesis cycle.
[0020] As used herein, the term "computer control" is a broad term and is given a common and customary meaning to a person of ordinary skill in the art, and is not limited to a special or custom meaning. The term may specifically refer to, but is not limited to, a process of controlling one or more devices by means of at least one computer. The control may specifically include at least one of the following: setting one or more parameters and / or parameter values at the device to be controlled; monitoring the parameter; determining the deviation between the set point of the parameter and the actual value of the parameter; adjusting the set point of the parameter according to the determined deviation. The parameter may be a continuous parameter and / or a discrete parameter, in particular a binary parameter. For example, controlling an automatic synthesizer may include opening and / or closing one or more valves of the automatic synthesizer and / or setting the valve to a specific position. Alternatively or additionally, controlling the automatic synthesizer may include starting one or more pumps, in particular setting a flow rate and / or a pump pressure at one or more pumps. The parameter may be set by means of at least one actuator, in particular by using an electric actuator. The actuator may be specifically configured for moving and / or controlling a mechanism of the automatic synthesizer, such as a valve and / or a pump of the automatic synthesizer, specifically by converting an electronic control signal into a mechanical movement. The parameter may be monitored by means of at least one sensor device, such as a flow sensor, a fluid velocity sensor and / or a pressure sensor.
[0021] As used herein, the term "synthesis" is a broad term and is given a common and customary meaning to a person of ordinary skill in the art, and is not limited to a special or customary meaning. The term may specifically refer to, but is not limited to, the generation of at least one covalent link between two nucleoside monomers of an oligonucleotide by chemical means. Methods for synthesizing oligonucleotides have long been known in the art, and the most widely used method is solid phase phosphoramidite synthesis using phosphoramidite building blocks, derived in one embodiment from protected 2'-deoxynucleosides (dA, dC, dG and dT), ribonucleosides (A, C, G and U) or chemically modified nucleosides, such as locked nucleic acid (LNA) monomers; exemplary references may refer to, for example, the Wikipedia citations mentioned above. In one embodiment, the synthesis is a semi-automatic or fully automated synthesis, wherein the synthesis steps may be partially or completely controlled by an automatic synthesizer. In one embodiment, the synthesis is an automated synthesis as specified below.
[0022] As used herein, the term "synthesizer" is a broad term and is given the ordinary and customary meaning to those of ordinary skill in the art and is not limited to a special or customized meaning. The term may specifically refer to, but is not limited to, any device suitable for performing the synthesis specified herein, such as will be further detailed below in an automated manner in the Examples. The synthesizer may typically be an automatic synthesizer capable of synthesizing oligonucleotides on a desired scale. An automatic synthesizer, for example, may be a The oligoplot synthesizer commercialized by the company. The synthesizer may include at least one synthesis tower, the at least one synthesis tower having at least one stationary phase material, such as at least one solid phase material. The synthesizer may further include at least one pump, a connector connected to a plurality of chemical supply sources and / or a system of switchable valves for selectively supplying chemicals (specifically solvents and / or reactants) to the tower. In particular, the synthesizer may include a phosphoramidite pump; a phosphoramidite valve; a solvent / reagent pump; a solvent / reagent valve; a switchable valve system for feeding liquid from the tower to a predetermined container; at least one thermostatic element for setting the tower to at least one predetermined temperature; a tower inlet valve for allowing liquid to flow into the tower; a tower outlet valve for allowing liquid to flow out of the tower; a recirculation bypass, which is specifically used to recirculate liquid on the tower, such as by connecting the tower outlet valve to the tower inlet valve by means of at least one valve; and / or a waste valve for directing liquid from the tower to at least one waste system.
[0023] The automatic synthesizer may further comprise at least one processor as specified above, wherein the processor is adapted to execute the synthesis computer program. Thus, the processor in the embodiments is operably coupled to at least a valve and / or a pump of the automatic synthesizer. Those skilled in the art will know how to operably couple a microprocessor to other units of the automatic synthesizer; suitable automatic synthesizers are known in the art and are commercially available.
[0024] As used herein, the term "automatic" or "automatically" is a broad term and will be given a common and customary meaning to a person of ordinary skill in the art, and is not limited to a special or custom meaning. These terms may specifically refer to, but are not limited to, the properties of a device controlled at least in part by means of at least one computer (particularly including one or more processors), and / or the properties of a process performed at least in part by means of at least one computer and / or machine (particularly without manual action and / or interaction with a user). Therefore, the term "automatic" may refer to a situation in which an automatic device (such as an automatic synthesizer) may be configured to perform at least one task completely or at least in part without human interaction, and / or may refer to a situation in which an automatic device is at least partially controlled by means of at least one computer, so that some functions of the automatic device are controlled by a computer. As an example, the automatic synthesis of at least one oligonucleotide may include (once a synthesizer is prepared, equipment and materials for synthesis are provided and automatic synthesis is started) the complete or at least partial synthesis of a desired oligonucleotide or at least its precursor or intermediate, preferably without human interaction. Alternatively, the term may also refer to a situation in which an automatic device (e.g., an automatic synthesizer) may be configured to be controlled entirely by at least one computer so that all functions of the automatic device are controlled by the computer. Similarly, the term "automatic" used in the context of a process (e.g., automatically synthesizing at least one oligonucleotide) may refer to a situation in which the process is performed or controlled entirely or in part by at least one computer so that a portion of the process steps are performed by the computer, while other process steps are performed by manual interaction and / or by the user. Alternatively or additionally, automatically performing a process may include being performed entirely by at least one computer, preferably without manual action and / or interaction with the user.
[0025] In one embodiment, the oligonucleotide synthesis is a solid phase synthesis, wherein the oligonucleotide being assembled is covalently bound to a solid support material via its 3' terminal hydroxyl group and remains attached thereto throughout the chain assembly process. Suitable supports are commercially available, for example, macroporous polystyrene supports, such as Primer support 5G from GE Healthcare, Kinovate's HL support, or controlled glass support.
[0026] Oligonucleotide synthesis in one embodiment is the stepwise addition of nucleotide residues to the 5'-end of the growing chain until the desired sequence is assembled. In one embodiment, each addition is referred to as a synthesis cycle and may specifically include the following steps:
[0027] a1) unblocking a protected hydroxyl group on the solid support or on the last nucleoside attached to the growing chain,
[0028] a2) coupling the first nucleoside as an activated phosphoramidite to a free hydroxyl group on a solid support
[0029] a3) oxidizing or sulfiding the corresponding P-linked nucleoside to form the corresponding phosphodiester (P=O) or the corresponding phosphorothioate (P=S);
[0030] a4) optionally, capping any unreacted hydroxyl groups on the solid support;
[0031] a5) unblocking the 5' hydroxyl group of the last nucleoside attached to the growing chain;
[0032] a6) coupling the next nucleoside as an activated phosphoramidite to the growing chain;
[0033] a7) oxidizing or sulfiding the corresponding P-linked dinucleoside to form the corresponding phosphodiester (P=O) or the corresponding phosphorothioate (P=S);
[0034] a8) optionally, capping any unreacted 5' hydroxyl groups;
[0035] a9) Repeat the previous steps a5 to a8 until the desired sequence is assembled.
[0036] The final step after the chain has been completed is known to those skilled in the art and in one embodiment comprises backbone deprotection and / or cleavage from the resin, wherein cleavage therefrom can be carried out, for example, using concentrated aqueous ammonia. Protective groups on phosphates and nucleotide bases are also removed during this cleavage.
[0037] According to the above, the term "synthesis cycle" refers to any sequence of steps performed in order to add a nucleotide moiety to an oligonucleotide chain. A synthesis cycle can be a start-up cycle, i.e., a sequence of steps in which the first nucleotide moiety becomes covalently attached to the solid phase of the synthesizer. Such a start-up cycle can, for example, include the steps described herein above as steps a1) to a4). A synthesis cycle can also be an extension cycle, i.e., a sequence of steps in which the oligonucleotide chain is extended and optionally an oligonucleotide for the next extension cycle is prepared. An exemplary sequence of steps of an extension cycle is provided herein as steps a5) to a8).
[0038] As used herein, the term "oligonucleotide" is a broad term and is given a common and customary meaning to those of ordinary skill in the art, and is not limited to a special or custom meaning. The term may specifically refer to, but is not limited to, any chemical molecule comprising at least two nucleotide portions covalently linked. In one embodiment, the oligonucleotide comprises 2 to 100 nucleotide portions, i.e., "having a length" of 2 to 100 bases, in one embodiment comprising 5 to 50 nucleotide portions, and in another embodiment comprising 10 to 40 nucleotide portions. In one embodiment, the oligonucleotide may be composed of optionally modified DNA, RNA or LNA nucleotide monomers or a combination thereof. LNA nucleotide monomers are modified nucleotides that include a linker group (called a biradicle or bridge) between the C2' and C4' of the ribose ring of the nucleotide. These nucleotides are also referred to as bridged nucleic acids or bicyclic nucleic acids (BNA) in the literature. As used herein, optionally modified refers to nucleotides modified by introducing one or more modifications of a sugar moiety or a nucleobase moiety compared to an equivalent DNA, RNA or LNA nucleotide. Modifications and suitable building blocks are known in the art and include, but are not limited to, for example, methoxyethyl (MOE) modifications, fluoro modifications, methoxy modifications, and the like.
[0039] As will be appreciated by the skilled artisan, the terms "nucleoside" and "nucleotide" are used herein in a broad sense, as nucleosides may comprise bases that differ from the standard bases of the genetic code; likewise, the sugar moiety of a nucleoside may be a non-standard sugar, such as, for example, a 2' and / or 3' derived ribose moiety, a bridging ribose moiety, a non-ribose moiety, etc. In one embodiment, a modified nucleoside comprises a modified sugar moiety, and may, for example, comprise one or more 2' substituted nucleosides and / or one or more LNA nucleosides. Thus, the term modified nucleoside may also be used interchangeably herein with the term "nucleoside analog" or a modified "unit" or a modified "monomer". In one embodiment, the sugar residue is ribose or 2'-deoxyribose. As a general rule, nucleosides are linked in an oligonucleotide by phosphodiester (P=O) and / or phosphorothioate (P=S) internucleoside bonds that covalently couple the two nucleosides together. Thus, in some oligonucleotides, all internucleoside linkages may consist of phosphodiester (P=O), in other oligonucleotides, all internucleoside linkages may consist of phosphorothioate (P=S), or in still other oligonucleotides, the sequence of internucleoside linkages may differ and include both phosphodiester (P=O) and phosphorothioate (P=S) internucleosides. As will be understood from the above description, the term "nucleotide" is used herein in a broad sense to refer to a monomer of an oligonucleotide; thus, a nucleotide may, for example, be a nucleoside having a 5' phosphate group (i.e., a nucleotide in the strict sense), but may also be, for example, a phosphorothioate nucleotide.
[0040] In addition, non-nucleoside moieties may also be incorporated into the oligonucleotide, such as dye moieties, including quencher moieties, affinity moieties such as biotin, and / or chelator moieties. Likewise, the oligonucleotide may be 5' amino modified, which means that an amino linker is attached to the 5' terminal group of the oligonucleotide.
[0041] The nucleobase moiety can be represented by the letter code of each corresponding nucleobase, such as A, T, G, C or U, wherein each letter can optionally include a modified nucleobase with equivalent functions. Modified nucleobases include, but are not limited to, nucleobases with protecting groups, such as tert-butylphenoxyacetyl, phenoxyacetyl, benzoyl, acetyl, isobutyryl or dimethylformamidino.
[0042] As mentioned above, the synthetic computer program has a plurality of program cycles, for carrying out computer control to the automatic synthesizer to synthesize oligonucleotide sequentially by the sequence of at least one synthesis cycle.As used herein, the term "program cycle" is a broad term and is given to ordinary and customary meaning for those of ordinary skill in the art, and is not limited to special or self-defined meaning.The term specifically may refer to but is not limited to one or more program code blocks, which are used to carry out a synthesis cycle and / or a substep of a synthesis cycle from the sequence of a synthesis cycle, as will be further described in detail below.Specifically, the same or variable parameters (particularly as specified above for the synthesis of oligonucleotide) can be used to repeat the program cycle.The program cycle can be uniquely marked in the program code, for example, by defining a name for the corresponding program cycle.The program cycle can be defined once in the program code, such as according to the parameter to be set and / or the associated parameter value.The program cycle can be carried out by the corresponding name of the program cycle in the reference program code.Therefore, for the whole synthesis of oligonucleotide, a specific program cycle can include the same parameters, particularly parameter values, even if repeatedly performed in the synthesis. However, different parameter values may be assigned to the parameters in different program cycles, so that as an example, even though the parameters of a program cycle may be completely or partially identical, the parameter values of the parameters may be different in different runs of the program cycle.
[0043] As used herein, the term "sequence of synthesis cycles" is a broad term and is given a common and customary meaning to those of ordinary skill in the art, and is not limited to a special or custom meaning. The term specifically may refer to but is not limited to any timely arrangement of sequence cycles as specified above herein. In the embodiments as specified above herein, the sequence of synthesis cycles in one embodiment includes at least one start cycle, followed by at least one extension cycle. As will be appreciated by the technician, the number of extension cycles generally corresponds to the number of nucleotide moieties in the desired oligonucleotide minus one.
[0044] As used herein, the term "sequentially" is a broad term and is given a common and customary meaning to a person of ordinary skill in the art, and is not limited to a special or custom meaning. The term specifically refers to, but is not limited to, the orderly conduction of multiple process steps. Sequentially conducting multiple process steps (e.g., sequentially synthesizing oligonucleotides using a sequence of synthesis cycles) may include conducting process steps, particularly synthesis cycles, one after another in a given order. For example, if a process includes process steps A, B, and C to be conducted in a given order, then sequentially conducting the process may include first conducting process step A, followed by process step B and then process step C. These process steps may not overlap each other in time. Once the previous process step is completed, the next process step may be started.
[0045] The method comprises at least the following steps, which as an example can be performed in a given order. However, it should be noted that different orders are also possible. In addition, one, more than one, or even all of the method steps can also be performed once or repeatedly. Further, two or more method steps can be performed simultaneously or in a timely overlapping manner. The method may include other method steps that are not listed.
[0046] The method includes:
[0047] i. applying an automatic parsing process to the program code of the synthetic computer program, the automatic parsing process comprising automatically searching for parameter values of parameters in at least one predetermined target parameter list in the program loop of the synthetic computer program; and
[0048] ii. Automatically assembling a parameter matrix, for the program loop of the synthetic computer program, the parameter matrix comprising the target parameter and the corresponding parameter value of the target parameter.
[0049] As used herein, the term "parsing process" is a broad term and is given a common and customary meaning to a person of ordinary skill in the art, and is not limited to a special or custom meaning. The term may specifically refer to, but is not limited to, a process of analyzing a program code in order to identify one or more contents of the program code and / or in order to analyze the program code into its components. The parsing process may include analyzing the program code to obtain at least one of a specific instruction included by the program code, a specific parameter included by the program code, and a specific parameter value included by the program code. The parsing process may include segmenting the program code into a single instruction. Specifically, the parsing process may use the program code as input, and may output the parsed instructions included in the program code. The parsing process may include pattern matching, such as pattern matching for finding predefined instructions in the program code. The parsing process may further include extracting information items from the program code associated with the parsed instruction, such as parameters and / or parameter values to be set at the automatic synthesizer. As an example, many programming languages (such as Python) include multiple parsing commands for identifying specific components of data (such as strings, such as text strings). When the program code is considered as a text string, as an example, the parsing process may include identifying the content of a specific location of the program code by using a parsing command, such as identifying a specific parameter and / or a specific parameter value of the program code. As an example, even if the program loop of the computer program can vary, by searching for specific keywords within the program code, the specific parameter and / or specific parameter value may also be identifiable, as will be further outlined in detail below. Additionally or alternatively, other parsing strategies may be used.
[0050] As described above, the program code may include a header and a text segment after the header. The method may include automatic detection of the text segment in the program code. The text segment may be specifically subjected to the automatic parsing process of step i.
[0051] The complete program code (eg program file) of the synthesized program or one or more parts thereof may be subjected to the parsing process. Likewise, the parsing process may only parse a portion of a program loop of the synthesized computer program, for example, a program loop comprising predetermined keywords or parameter values.
[0052] As used herein, the term "parameter" is a broad term and is given to those of ordinary skill in the art common and customary meaning, and is not limited to special or self-defined meanings. The term may specifically refer to but is not limited to the variable and / or adjustable settings of process and / or equipment. Specifically, a parameter may be variable and / or adjustable by means of a control means (e.g., by means of computer control). The parameter may be a continuous parameter, such as flow, pressure, liquid level, temperature, time, etc., or may be a discrete parameter, such as the state of a valve, pump, or restrictor. The program code comprising instructions for setting parameters at an automatic synthesizer may include multiple parameters, specifically multiple different parameters. The parameter in the program code may be associated with a unit (a unit specifically defined explicitly in a program code block or a unit defined by another explicit definition of a unit in another program code block by reference).
[0053] As used herein, the term "parameter value" is a broad term and is given its common and customary meaning to those of ordinary skill in the art, and is not limited to a special or custom meaning. The term may specifically refer to, but is not limited to, a digital and / or alphanumeric indication of a parameter. Specifically, a parameter value may be a digital and / or alphanumeric indication of a parameter included in a program code. For example, a parameter may include a flow rate, pressure, liquid level, temperature, etc. A parameter value may be a digital indication of a flow rate, pressure, liquid level, or temperature set at an automatic synthesizer. As another example, a parameter may include the state of a valve, pump, or restrictor. A parameter value may be a digital indication of the state of a valve, pump, or restrictor, such as "0" or "1" and / or the position of a valve. Alternatively, a parameter value may be an alphanumeric indication of the state of a valve, pump, or restrictor, such as "on" or "off." A parameter value may also indicate a specific reagent or solvent used at an automatic synthesizer. Therefore, a parameter value may include an indication of a reagent or solvent, such as compound "A", "B", "C", etc.
[0054] As used herein, the term "target parameter" is a broad term and is given to those of ordinary skill in the art common and customary meaning, and is not limited to special or customized meanings. The term may specifically refer to but is not limited to the parameters being searched. One or more target parameters may be predefined, for example, by the method for the verification program code itself and / or by the method for the user starting the verification program code. Specifically, the target parameter may include one or more parameters, particularly predefined parameters, being searched during the automatic parsing process. The target parameter may specifically have an impact on the synthesis of at least one oligonucleotide. Therefore, the target parameter may include a specific setting in an automatic synthesizer that affects the synthesis of the oligonucleotide. The target parameter may be defined and / or known before the automatic parsing process, specifically so that the target parameter may be collected in a predetermined list.
[0055] As used herein, the term "predetermined list" is a broad term and is given a meaning that is ordinary and customary to a person of ordinary skill in the art, and is not limited to a special or customized meaning. The term may specifically refer to, but is not limited to, a set of predefined items. The predefinition may be performed before starting the verification method, or alternatively, may be performed during the verification method itself, for example through interaction with a user, such as a computer requesting the user to input or select a component of a list. In particular, the predetermined list of target parameters may include a set of predefined target parameters. However, in particular, the predetermined list of target parameters may be specifically defined before the automatic parsing process is performed, even though the predefinition may also be performed after starting the method.
[0056] The predetermined list of target parameters may specifically include at least one target parameter selected from the group consisting of: the type of chemical (specifically reactants and / or solvents); the volume of the chemical (specifically reactants and / or solvents); the flow rate of the chemical (specifically reactants and / or solvents); the temperature of the chemical (specifically reactants and / or solvents); the pump pressure of at least one pump; the length of the synthesis computer program, specifically the length of a synthesis cycle, such as the length of a synthesis cycle in minutes and / or milliliters; the duration of the synthesis computer program, specifically the duration of a synthesis cycle.
[0057] In addition, in the automatic parsing process, a keyword list can be assembled corresponding to a target parameter list. It is known that the keywords in the keyword list are to be used in combination with the corresponding target parameters in the target parameter list in the program code of the synthetic computer program. It is known that the parameter value of the target parameter is located in the program code at a predetermined relative position relative to the keyword. The automatic parsing process may further include reading the corresponding parameter value of the target parameter from the predetermined relative position of the corresponding keyword. As mentioned above, many computer languages (such as Python) provide commands that allow searching data such as text strings for specific keywords, and allow reading information located in a predefined position relative to the identified keyword, such as a parameter value known to be in a specific position relative to the keyword, for example, at a predefined offset from the keyword.
[0058] For example, the keyword list may include one or more of the following keywords:
[0059] - the keyword "block", for example, is used to read a call to a specific program code block or a subroutine;
[0060] - the keyword "base", for example, is used to read the parameter units set in the current program code block, such as volume, pressure, etc.;
[0061] - the keyword "amidite", for example, is used to read the phosphoramidite set in the current program code block;
[0062] - the keyword "flow_AB", for example, is used to read the flow rate values at pumps A and B, for example "Flow_AB 0.1{ml / min},0.8{ml / min}" sets the flow rate at pump A to 0.1 ml / min and the flow rate at pump B to 0.8 ml / min;
[0063] - the keywords "solvent_A" and / or "solvent_B", for example to read the solvent for pump A and / or B; and
[0064] -Keyword "V", for example, to read the valve setting, e.g. "V5 2" sets valve number 5 to
[0065] Position number 2.
[0066] However, further keywords are possible.
[0067] As used herein, the term "assembly" is a broad term and is given a common and customary meaning to a person of ordinary skill in the art, and is not limited to a special or custom meaning. The term may specifically refer to, but is not limited to, a process of combining multiple information items, specifically from different locations, into a single information item and / or into a single location. Specifically, the assembly process may include one or more intermediate process steps. For example, the assembly may include collecting multiple information items from one or more information sources, specifically from program code. Therefore, the assembly may include searching for information items in a complex entity, such as searching for program code in the present case, and collecting these information items, such as by assigning these information items to specific areas of a data storage device, visualizing these information items in a specific manner, assigning these information items to one or more dedicated variables, etc. The assembly may further include rearranging the collected information items into a given and / or predefined order. The assembly may further include providing a combined single information item, such as by displaying the combined single information item to a user. In particular, the assembly may include combining target parameters and corresponding parameter values into a single information item, in particular into a parameter matrix.
[0068] As used herein, the term "parameter matrix" is a broad term and is given a common and customary meaning to those of ordinary skill in the art, and is not limited to a special or custom meaning. The term may specifically refer to, but is not limited to, any one-dimensional, two-dimensional or multi-dimensional array or table of parameters or parameter values. Specifically, a parameter matrix may be a rectangular and / or two-dimensional array or table of parameters arranged in rows and columns. Wherein, as an example, a row may represent a program loop and a column may represent a specific parameter in a target parameter, or vice versa. Other notations are also feasible.
[0069] Also in one embodiment, the parameter matrix may be a representation of method steps, such as a list thereof, including the aforementioned parameters and / or parameter values. Also in one embodiment, the parameter matrix comprises further information, in particular information on the results of a comparison of the parameter matrix with a reference parameter matrix, wherein, in one embodiment, the reference parameter matrix is a matrix of predefined parameters and / or their values, such as expected parameters and / or their values; or, in a further embodiment, the reference parameter matrix is a representation of method steps, such as a list thereof, including the aforementioned parameters and / or parameter values, of a desired method, of a previously used method or of a comparative method. Thus, in one embodiment, the parameter matrix comprises a comparison of the parameter matrix with a reference parameter matrix, wherein the comparison may be provided, for example, by highlighting the differences between the parameter matrix and the reference parameter matrix, or by printing in case of identified differences, by displaying parameters and / or parameter values from the parameter matrix and the reference parameter matrix. Also in one embodiment, such identified differences are applied to an automatic plausibility check as specified elsewhere herein.
[0070] Also in one embodiment, step iii. may automatically display on a display a representation of the method step including further information, in particular information about the result of a comparison of the method step with a reference list of method steps, wherein in one embodiment the reference list of method steps is a matrix of predefined method steps, parameters and / or values thereof, such as expected parameters and / or values thereof; i.e. in a further embodiment the reference list of method steps is a representation of method steps of a desired method, of a previously used method or of a comparison method, such as a list thereof, including the aforementioned parameters and / or parameter values. Thus, in one embodiment the list of method steps comprises a comparison of said list of method steps with the reference list of method steps, wherein said comparison may be provided, for example, by highlighting the differences between the list of method steps and the reference list of method steps, or by printing in case of identified differences, by displaying parameters and / or parameter values from the list of method steps and the reference list of method steps. Also in one embodiment such identified differences are applied to an automatic plausibility check as specified elsewhere herein.
[0071] If the target parameters of these program loops have the same parameter value, the target parameters of these program loops may be combined in a combined row of the matrix.
[0072] The target parameter may be the same for at least a small portion of program loops of the control extension loop, in particular for all program loops of the control extension loop, more in particular for all program loops, so that the matrix comprises parameter values for the same parameter for different program loops of the program code.
[0073] The method may further comprise:
[0074] iii. Automatically display the parameter matrix on the display.
[0075] As used herein, the term "display" is a broad term and is given a common and customary meaning to a person of ordinary skill in the art, and is not limited to a special or custom meaning. The term may specifically refer to, but is not limited to, a process of representing information in a visual form. Therefore, the term "display" may refer to, but is not limited to, an exemplary user interface configured to represent information in a visual form. In particular, a display device includes at least one screen. For example, the screen may have a flat and / or flush surface. As an example, the display may be or may include a liquid crystal display (LCD) using the light modulation properties of liquid crystals, such as a flat panel display, such as an electronically modulated optical device. Other types of display screens are possible, such as light emitting diode (LED) display screens, etc. However, display may also be outputting information on a permanent medium, for example, by printing.
[0076] The method may further comprise:
[0077] iv. applying an automatic error detection step to the parameter matrix, the automatic error detection step comprising subjecting the parameter matrix to at least one automatic rationality check.
[0078] As used herein, the term "error detection step" is a broad term and is given to those of ordinary skill in the art common and customary meaning, and is not limited to special or self-defined meanings. The term specifically may refer to but is not limited to the process of determining the deviation of an information item compared with a reference information item. Specifically, the error detection step may include determining the deviation of a parameter matrix and a reference parameter matrix of a given synthetic parameter and / or corresponding parameter value indicated for an oligonucleotide. Alternatively or additionally, the error correction step may include the deviation of a parameter value and an optimal value in a detection program code. Therefore, the error may include the deviation of a parameter value and an optimal value (such as the best value for the synthesis of an oligonucleotide).
[0079] As used herein, the term "rationality check" is a broad term and is given a common and customary meaning to a person of ordinary skill in the art, and is not limited to a special or custom meaning. The term may specifically refer to, but is not limited to, a process of classifying a parameter matrix into binary categories (e.g., "reasonable" and "irrational"). For example, a rationality check may include classifying parameter values included by a parameter matrix. An automatic rationality check may include classifying a parameter value as "reasonable" when the parameter value is equal to or within a predetermined and / or determinable range of values. An automatic rationality check may include classifying a parameter value as "irrational" when the parameter value is outside a predetermined and / or determinable range of values. The value range may be defined in absolute values, such as by defining an upper boundary and / or a lower boundary. Alternatively or additionally, a value range may be defined relative to a target value for a parameter value, such as by defining a tolerance range for a target value for a parameter value. For example, if a parameter value deviates from a target value for a parameter value by no more than 10%, specifically no more than 5%, and more specifically no more than 1%, the parameter value is within a value range. Alternatively or additionally, the automatic rationality check may include classifying the pattern of the parameter matrix.
[0080] The automatic rationality check may specifically include at least one of the following:
[0081] - comparing the pattern of the parameter matrix with at least one predetermined target pattern;
[0082] - Detect missing parameter values in the parameter matrix;
[0083] - Detect incorrect units;
[0084] - Detect parameter values outside of a predetermined range;
[0085] - detect missing rows in the matrix;
[0086] - detecting additional rows in the matrix;
[0087] - identifying target parameters of program loops listed in different rows of the matrix that should be listed in combined rows of the matrix;
[0088] - Selection of the correct reagents for testing;
[0089] - Check the selection of the correct solvent;
[0090] - Detection of the selection of the correct starting material.
[0091] Furthermore, the automatic error detection step may comprise automatically outputting a warning message to a user if the automatic error detection step detects an error in the program code. Additionally or alternatively, the automatic error detection step may comprise automatically preventing the synthesized computer program from being executed on the automatic synthesizer if the automatic error detection step detects an error in the program code. The warning message may specifically comprise information about at least one of: the type of error in the program code; the location of the error in the program code; the identification of the program loop in which the error occurred; the identification of the target parameter in which the error occurred.
[0092] As mentioned above, the automatic error detection step may also include automatically preventing the synthesised computer program from being executed on the automatic synthesizer. Thus, the detection of an error may cause the automatic generation of a signal to cause the automatic synthesizer to enter a state in which the synthesised computer program cannot be automatically executed. The state may allow manual override by a user, for example after manual error correction, or in embodiments where no error is detected, execution of the synthesised computer program may be allowed only after the method of verifying the program code is performed again.
[0093] In the automatic error detection step, at least one of the following errors can be detected: incorrect units for parameters; omitted settings of at least one chemical (specifically at least one reactant and / or at least one solvent); incorrect settings of at least one valve; the flow rate of at least one chemical (specifically at least one reactant and / or at least one solvent) is not set to zero at the end of the program code.
[0094] The method may further comprise:
[0095] v. an automatic error correction step, the automatic error correction step comprising automatically correcting at least one error in the program code detected in the automatic error detection step.
[0096] As used herein, the term "error correction step" is a broad term and is given a common and customary meaning to a person of ordinary skill in the art, and is not limited to a special or custom meaning. The term may specifically refer to, but is not limited to, a process of adjusting a program code. The automatic error correction step may include adjusting the program code, specifically adjusting the instructions in the program code, so that the resulting parameter matrix passes an automatic rationality check, for example, is classified as "reasonable". Therefore, the automatic error correction step may include identifying instructions in the program code associated with the deviation in the parameter matrix, and further replacing the identified instructions with the corrected instructions. The automatic error correction step may specifically be performed automatically as defined above, specifically so that the automatic error correction step is performed at least in part by means of at least one computer, specifically without manual action and / or interaction with a user. Alternatively or additionally, the error correction step may include adjusting the program code by optimizing the detected deviation of the parameter value in the program code. Specifically, in the case where a deviation of the parameter value from an optimal value can be detected in the automatic error detection step, the error correction step may include optimizing the parameter value, specifically optimizing by minimizing the deviation of the parameter value compared to the optimal value.
[0097] Also in one embodiment, the method may further include:
[0098] vi. Automatically calculating a total required amount of at least one reagent based on the parameter value.
[0099] As used herein, the term "demand" is a broad term and is given to those of ordinary skill in the art common and customary meaning, and is not limited to a special or custom meaning. The term specifically refers to the amount of reagent required to complete the predetermined number of program cycles as specified herein. Therefore, as referred to herein, "total demand" relates to the amount of reagent required to complete the synthesis (i.e., for example, to synthesize oligonucleotides) controlled by a synthetic computer program. As understood by those skilled in the art, the amount of reagent can be calculated as volume, weight or mass, amount of substance, etc. Also in one embodiment, the calculated total demand can be presented to the operator of the automatic synthesizer, for example to ensure that enough reagents are prepared for the planned synthesis; or, the calculated total demand can be automatically handed over to an automated pipetting device in one embodiment.
[0100] The method may specifically be computer-implemented. As used herein, specifically in the context of the method, the term "computer-implemented" is a broad term and is given a common and customary meaning to a person of ordinary skill in the art, and is not limited to a special or custom meaning. The term may specifically refer to, but is not limited to, the characteristics of a method involving at least one computer. The computer may include at least one processor configured to perform at least one of the method steps of the method according to the present invention. Preferably, each of the method steps may be performed by a computer. The method may be performed fully automatically (specifically, without user interaction).
[0101] As will be understood from the description provided herein, the method for verifying program code can be implemented on a computer as part of an automatic synthesizer. However, the method for verifying program code can also be computer-implemented on an independent computer, which can be connected to the automatic synthesizer via a data transmission device.
[0102] In a further aspect of the present invention, a computer program is disclosed, which includes instructions, which, when the program is executed by a computer or a computer system, cause the computer or computer system to perform a method according to the present invention, specifically a method for verifying the program code of a synthetic computer program according to the present invention (such as according to any one of the embodiments disclosed above and / or according to any one of the embodiments disclosed in further detail below).
[0103] For the definition and embodiments of the computer program, see the definition and embodiments of the method of verifying the program code of a synthetic computer program as described above.
[0104] In a further aspect of the present invention, a computer-readable storage medium is disclosed, specifically a non-transitory computer-readable storage medium, which includes instructions, which, when executed by a computer or a computer system, cause the computer or the computer system to perform a method according to the present invention, specifically a method for verifying a program code of a synthetic computer program according to the present invention (such as according to any one of the embodiments disclosed above and / or according to any one of the embodiments disclosed in further detail below).
[0105] For the definition and embodiments of the computer-readable storage medium, refer to the definition and embodiments of the method of verifying the program code of a synthetic computer program as described above.
[0106] As used herein, the term "computer-readable storage medium" may specifically refer to a non-transitory data storage device, such as a hardware storage medium having computer-executable instructions stored thereon. A computer-readable storage medium may specifically be or may include a storage medium such as a random access memory (RAM) and / or a read-only memory (ROM). Therefore, as used herein, the term "non-transitory" may refer to, but is not limited to, a property of a computer-readable storage medium that is configured to permanently store computer-executable instructions. Therefore, this property of a computer-readable storage medium may also be referred to as "non-transitory".
[0107] In a further aspect of the present invention, a system for verifying the program code of a synthetic computer program is disclosed. As used herein, the term "system" is a broad term and will be given the common and customary meaning for those of ordinary skill in the art, and is not limited to a special or customized meaning. The term specifically refers to, but is not limited to, a group of arbitrary interacting or interdependent components that form an entirety. Specifically, the components can interact with each other to achieve at least one common function. At least two components can be processed independently, or can be coupled or connectable.
[0108] The system comprises at least one processor, as defined above. The processor is configured by programming, in particular by software programming, for carrying out the method according to the invention, in particular the method for verifying a program code of a synthetic computer program according to the invention (such as according to any one of the embodiments disclosed above and / or according to any one of the embodiments disclosed in further detail below).
[0109] For further definitions and embodiments of the system, see the definitions and embodiments of the method of verifying a program code of a synthetic computer program as described above.
[0110] In a further aspect of the invention, a method of synthesizing at least one oligonucleotide is disclosed.
[0111] The method for synthesizing at least one oligonucleotide comprises the following steps, and these steps can be carried out in a given order as an example. However, it should be noted that different orders are also possible. In addition, one, more than one or even all steps in the method steps can be performed once or repeatedly. Further, two or more method steps can be carried out simultaneously or in a timely overlapping mode. The method can include other method steps that are not listed.
[0112] The method of synthesizing at least one oligonucleotide comprises:
[0113] a. providing a program code of a synthesis computer program, the synthesis computer program being configured for computer control of at least one automatic synthesizer, the synthesis computer program having a plurality of program cycles for computer control of the automatic synthesizer to sequentially synthesize the oligonucleotide by using a sequence of synthesis cycles;
[0114] b. a method of applying verification program code according to the present invention, such as according to any one of the embodiments disclosed above and / or according to any one of the embodiments disclosed in further detail below; and
[0115] c. Computer-controlling at least one automated synthesizer to automatically synthesize at least one oligonucleotide.
[0116] For definitions and embodiments of methods for synthesizing at least one oligonucleotide, see definitions and embodiments of methods for validating a program code of a synthesis computer program as described above.
[0117] The method may further comprise, before step c.:
[0118] d. At least one correction step, which comprises modifying at least one parameter value of at least one target parameter according to at least one result of step b.
[0119] In step c., at least one automatic synthesizer may be used. Embodiments of automatic synthesizers have been described herein above. Step c. may include computer control of at least a switchable valve and at least one pump and / or additional unit optionally present in the automatic synthesizer as specified above. In one embodiment, step c. includes performing at least one start-up cycle and at least one extension cycle; however, step c. may also include performing at least two extension cycles, for example in the case where the method does not require the first nucleoside to be attached to a solid support or if the solid matrix comprises a suitable attachment portion.
[0120] In addition, the present invention also relates to a method for verifying a program code of a synthesis computer program, the synthesis computer program being configured for computer-controlling an automatic synthesizer to automatically synthesize at least one biological macromolecule, the synthesis computer program having a plurality of program cycles for computer-controlling an automatic synthesizer to sequentially synthesize biological macromolecules by using a sequence of at least one synthesis cycle, the method comprising:
[0121] i. applying an automatic parsing process to the program code of the synthetic computer program, the automatic parsing process comprising automatically searching for parameter values of parameters in at least one predetermined target parameter list in the program loop of the synthetic computer program; and
[0122] ii. Automatically assembling a parameter matrix, for the program loop of the synthetic computer program, the parameter matrix comprising the target parameter and the corresponding parameter value of the target parameter.
[0123] Concerning a method for validating a program code of a synthesis computer program configured for computer-controlling an automatic synthesizer for automatically synthesizing at least one biological macromolecule, the definitions and embodiments described herein above for a method for validating a program code of a synthesis computer program configured for computer-controlling an automatic synthesizer for automatically synthesizing at least one oligonucleotide apply mutatis mutandis.
[0124] As used herein, the term "biomacromolecule" is a broad term and is given a common and customary meaning to one of ordinary skill in the art, and is not limited to a special or customary meaning. The term specifically may refer to, but is not limited to, any molecule comprising a plurality of units, and in one embodiment consists of a plurality of units, in one embodiment, wherein at least two units are not identical. In one embodiment, the biomacromolecule is chemically synthesized in an automatic synthesizer, i.e., in one embodiment, it is not synthesized in a biological system such as a cell or an in vitro transcription and / or translation system. In one embodiment, the biomacromolecule is synthesized by solid phase synthesis. The biomacromolecule can be an oligonucleotide or a peptide, in one embodiment an oligonucleotide, and in a further embodiment a peptide.
[0125] As used herein, the term "peptide" is a broad term and is given the ordinary and customary meaning to those of ordinary skill in the art, and is not limited to a special or customized meaning. The term specifically refers to, but is not limited to, any molecule comprising at least one peptide bond. In one embodiment, the peptide comprises 2 to 100 amino acid units, in one embodiment 3 to 50 amino acid units, and in a further embodiment 4 to 25 amino acid units. In one embodiment, the amino acid unit is an α-amino acid, in a further embodiment an L-α-amino acid, although modified amino acids and / or D-amino acids and / or non-α amino acids may also be used. Methods for synthesizing peptides are known in the art; see, for example, the Wikipedia entry for "Peptide synthesis" as of May 24, 2022.
[0126] Compared with the known methods and equipment of similar types, the method according to the present invention, computer program, computer readable storage medium and system provide a large amount of advantages. Specifically, the method, computer program, computer readable storage medium and system can provide a device for verifying the program code of the synthesis program for synthesizing at least one oligonucleotide. Errors in the program code can be easily detected and can attract the attention of the user.
[0127] Therefore, as an example, the method for verifying program code (which can be a computer-implemented method in particular) can use the program code of a synthetic computer program as input, and can specifically completely or at least partially automatically generate an output including a parameter matrix from the input, the parameter matrix including target parameters and corresponding parameter values of the target parameters. Therefore, no matter how complex the synthetic computer program and the corresponding program code are, including many parameters and program loops, the method can automatically generate information items in the form of a parameter matrix from the program code, and the parameter matrix can be easily checked for rationality by a user or even automatically. Therefore, the method automatically reduces the complexity of the program code of the synthetic computer program to the parameter matrix including the target parameters. Therefore, the assessment of the correctness of the synthetic computer program and the corresponding program code can be simplified to the assessment of the correctness of the parameter matrix. Thus, the efficiency of verifying a computer program by a human user or automatically and the reliability of the verification can be greatly improved. The method can reduce the work of checking the parameter matrix, rather than checking the entire and usually complex program code (including its many iterations, routines and subroutines) for the existence of specific parameters and / or the correctness of the parameter values of specific parameters. The parameter matrix may be visualized for control by a human and / or may be subjected to at least one automatic error detection step which is greatly simplified and requires significantly fewer resources than error detection in the "original" program code.
[0128] Particularly, parameter matrix can provide clear and compact visualization of parameter and corresponding parameter value at automatic synthesizer.Program code itself or user interface are usually complicated and unclear.Therefore, can easily detect and correct the error in program code manually or automatically.Therefore, method, computer program, computer readable storage medium and system can be suitable for providing the automatic synthesis of robust and reliable oligonucleotide.
[0129] In addition, the method for the program code of the verification synthesis computer program can allow to sequentially complete all steps of the process, specifically complete all instructions included by the program code, and track the change of reagent, solvent flow rate, volume and / or time.At the end of each operation, for example when the flow stops, the parameter value of the target parameter can be summarized in the parameter matrix for two or more pumps of the automatic synthesizer, such as reagent, amount, flow rate and time. The parameter matrix of assembling can be grouped by the cycle number for all parameter values of each operation, and therefore can be presented and shown to the user in a simple and comprehensive manner. In addition, this parameter matrix can be compared with a given synthesis plan and / or with a plurality of parameter matrices, so as to detect the error in the program code.Graphic visualization can be used for easily detecting the deviation of value and / or the deviation of pattern.
[0130] Although generally also applicable to other synthetic computer programs configured for other types of synthesis except the automatic synthesis of oligonucleotides that are computer controlled, this method is particularly advantageous for the synthesis of oligonucleotides.This is specifically due to the following fact: as indicated above, the synthesis of oligonucleotides usually comprises the sequence of the synthesis cycle of the same or similar type.As an example, in each cycle, nucleotides can be added to the growth sequence, thereby sequentially building or synthesizing the desired oligonucleotide.In this case, although chemical process usually includes a plurality of synthesis cycles with similar or even identical chemical properties, synthetic computer program and corresponding program code may be quite complicated.However, the method proposed as this paper greatly reduces the workload required for the verification of program code, because the predetermined list of target parameters can reflect the determined parameters of program cycle.Therefore, the iterative nature of the synthetic chemical process of oligonucleotides can be used to reduce the complexity of the verification of the program code of the corresponding synthetic computer program.In addition, the method for verifying the program code of the synthetic computer program can also be used to automatically fill the gap in the program code from the parameter matrix, such as to complete incomplete program code.This can reduce human resource requirements and reduce errors in addition.
[0131] Also in one embodiment, the present invention relates to a method for verifying a set of at least two program codes of a synthesis computer program, each synthesis computer program being configured for computer-controlling an automatic synthesizer (114) to automatically synthesize at least one oligonucleotide, each synthesis computer program having a plurality of program cycles for computer-controlling the automatic synthesizer (114) to sequentially synthesize oligonucleotides by using a sequence of at least one synthesis cycle, the method comprising:
[0132] (I) applying an automatic parsing process to the program code of each of the composite computer programs, the automatic parsing process comprising automatically searching, in the program loop of the composite computer program, for parameter values of parameters in at least one predetermined target parameter list;
[0133] (II) automatically assembling a verification parameter matrix, for each of the program loops in the synthetic computer program, the verification parameter matrix comprising (i) the target parameter and the corresponding parameter score for the target parameter, or (ii) a structured array of parameter scores for the target parameter; and
[0134] (III) comparing the pattern of the verification parameter matrix with at least one predetermined target pattern.
[0135] The method of verifying a set of at least two program codes of the present invention may include steps in addition to those steps explicitly mentioned above. For example, a further step may involve, for example, automatically displaying a list of synthetic computer programs for which deviations from a predetermined target pattern were detected in step (III).
[0136] As used herein, the term "verification parameter matrix" is a broad term and is given a common and customary meaning to a person of ordinary skill in the art, and is not limited to a special or custom meaning. The term may specifically refer to a parameter matrix as specified above, which, in an embodiment of all program codes of a given set of synthetic computer programs, includes parameters and / or parameter scores for at least two program codes of a synthetic computer program. As understood by those skilled in the art in view of the description herein, the verification parameter matrix may, for example, include at least one parameter of the values assigned to the parameters in the synthetic computer program, in one embodiment in a structured array; or may include a parameter matrix as specified above for each of the synthetic computer programs; or may include a structured parameter score array of the parameters, as specified below.
[0137] As used herein, the term "parameter score" is a broad term and is given the ordinary and customary meaning to those of ordinary skill in the art and is not limited to a special or customized meaning. The term may specifically refer to any representation of a parameter value or a range of parameter values; such representation may be, for example, a symbol, a number, a letter, etc. that does not necessarily correspond to a parameter value, particularly in the case where the result of step (II) is output to a user; or it may be any internal state of a microprocessor and / or a data storage device that can unambiguously assign a parameter score and its comparison. In one embodiment, the parameter score is a parameter value.
[0138] As used herein, the term "structured parameter score array" is a broad term and is given the ordinary and customary meaning to one of ordinary skill in the art and is not limited to a special or customized meaning. The term may specifically refer to a parameter score array in which scores for a given parameter are placed at predetermined positions within the array. Thus, in a structured parameter score array, each parameter score may be unambiguously assigned to its corresponding parameter based on its position in the array. Thus, in one embodiment, a structured parameter score array is a shorthand display of parameter / parameter score data.
[0139] As used herein, the term "verify a set of at least two program codes" is a broad term and is given a common and customary meaning to a person of ordinary skill in the art, and is not limited to a special or custom meaning. The term may specifically refer to the steps and / or parameters of verifying a set of program codes, and in one embodiment refers to the parameters of verifying a set of program codes. Therefore, in one embodiment, the program codes in a set of program codes are compared with each other and / or with reference program codes, and a verification target parameter matrix is established; such a verification parameter matrix may include target parameters and corresponding parameter scores of the target parameters, for example in the form of a list or table; or, the verification parameter matrix may include a structured parameter score array of the target parameters, as specified above. Therefore, in one embodiment, step (III) may include automatically comparing the verification parameter matrix obtained in step (II) with a target pattern (e.g., a set of target parameter matrices) or with a target structured array. In one embodiment, step (III) includes comparing the list of the structured array obtained in step (II) with the target list of the structured array. In one embodiment, the target pattern is a combinatorial design of experimental patterns. In one embodiment, the comparison in step (III) is part of an automatic rationality check as specified elsewhere herein. Also in one embodiment, in case a difference is identified between the verification parameter matrix and the predetermined target pattern, the execution of the set of at least two program codes of the synthetic computer program is automatically blocked or stopped and / or a warning is displayed. Summarizing and not excluding further possible embodiments, the following embodiments may be envisaged:
[0140] Embodiment 1: A method for verifying a program code of a synthesis computer program, the synthesis computer program being configured for computer-controlling an automatic synthesizer to automatically synthesize at least one oligonucleotide, the synthesis computer program having a plurality of program cycles for computer-controlling the automatic synthesizer to sequentially synthesize the oligonucleotides by using a sequence of at least one synthesis cycle, the method comprising:
[0141] i. applying an automatic parsing process to the program code of the synthetic computer program, the automatic parsing process comprising automatically searching in the program loop of the synthetic computer program for
[0142] ii. automatically assembling a parameter matrix for said program loop of said synthetic computer program;
[0143] The parameter matrix includes the target parameters and corresponding parameter values of the target parameters.
[0144] Embodiment 2: The method according to the preceding embodiment, wherein the synthesis cycle comprises at least two extension cycles, wherein nucleotide residues are added to the oligonucleotide chain.
[0145] Embodiment 3: A method according to the previous embodiment, wherein the target parameter is the same for at least a small part of the program loop that controls the extension loop, specifically for all program loops that control the extension loop, and more specifically for all program loops, so that the matrix includes the parameter values of the same parameter for different program loops of the program code.
[0146] Embodiment 4: A method according to any one of the preceding embodiments, wherein in the automatic parsing process, a keyword list is assembled corresponding to the target parameter list, wherein it is known that the keywords in the keyword list are to be used in combination with the corresponding target parameters in the target parameter list in the program code of the synthetic computer program, wherein it is known that the parameter value of the target parameter is located in a predetermined relative position relative to the keyword in the program code, wherein the automatic parsing process further includes reading the corresponding parameter value of the target parameter from the predetermined relative position of the corresponding keyword.
[0147] Embodiment 5: According to the method of any one of the preceding embodiments, the method further comprises:
[0148] iii. Automatically displaying the parameter matrix on a display.
[0149] Embodiment 6: The method according to any of the preceding embodiments, wherein the target parameters of the program loops are combined in a combined row of the matrix if the target parameters of the program loops have the same parameter value.
[0150] Embodiment 7: A method according to any of the preceding embodiments, wherein the predetermined list of target parameters includes at least one target parameter selected from the group consisting of: the type of chemical (specifically reactants and / or solvents); the volume of the chemical (specifically reactants and / or solvents); the flow rate of the chemical (specifically reactants and / or solvents); the temperature of the chemical (specifically reactants and / or solvents); the pump pressure of at least one pump or the length of a specific synthesis step, for example the length of a recycling step of Y minutes at a specific flow rate X.
[0151] Embodiment 8: The method according to any one of the preceding embodiments, further comprising:
[0152] iv. applying an automatic error detection step to the parameter matrix, the automatic error detection step comprising subjecting the parameter matrix to at least one automatic rationality check.
[0153] Embodiment 9: The method according to the preceding embodiment, wherein the automatic rationality check comprises at least one of the following:
[0154] - comparing the pattern of the parameter matrix with at least one predetermined target pattern;
[0155] - detecting missing parameter values in the parameter matrix;
[0156] - Detect incorrect units;
[0157] - Detect parameter values outside of a predetermined range;
[0158] - detecting missing rows in said matrix;
[0159] - detecting additional rows in said matrix;
[0160] - identifying target parameters of the program loops listed in different rows of the matrix, which target parameters should be listed in a combined row of the matrix;
[0161] - Selection of the correct reagents for testing;
[0162] - Check the selection of the correct solvent;
[0163] - Detection of the selection of the correct starting material.
[0164] Embodiment 10: The method according to any one of the two preceding embodiments further comprises (I) automatically outputting a warning message to a user and / or (II) automatically preventing the synthesized computer program from being executed on the automatic synthesizer (114) if the automatic error detection step detects an error in the program code.
[0165] Embodiment 11: A method according to the previous embodiment, wherein the warning information includes information about at least one of the following: the type of the error in the program code; the location of the error in the program code; identification of the program loop where the error occurs; identification of the target parameter where the error occurs.
[0166] Embodiment 12: A method according to any one of the four preceding embodiments, wherein in the automatic error detection step, at least one of the following errors is detected: incorrect units of the parameters; omitted settings of at least one chemical (specifically at least one reactant and / or at least one solvent); incorrect settings of at least one valve; the flow rate of at least one chemical (specifically at least one reactant and / or at least one solvent) is not set to zero when the program code ends.
[0167] Embodiment 13: The method according to any one of the above five embodiments, further comprising:
[0168] v. an automatic error correction step, said automatic error correction step comprising automatically correcting at least one error in said program code detected in said automatic error detection step.
[0169] Embodiment 14: The method according to any of the preceding embodiments, wherein the parameter matrix comprises a comparison of the parameter matrix to the reference parameter matrix, optionally by highlighting differences between the parameter matrix and the reference parameter matrix.
[0170] Embodiment 15: The method according to any one of the preceding embodiments, wherein step iii. automatically displays on a display a representation of the method steps including a comparison of the method steps with a reference list of method steps.
[0171] Embodiment 16: The method according to any one of the preceding embodiments, further comprising:
[0172] vi. Automatically calculating a total required amount of at least one reagent based on the parameter value.
[0173] Embodiment 17: A method for verifying a set of at least two program codes of a synthesis computer program, each synthesis computer program being configured for computer-controlling an automatic synthesizer (114) to automatically synthesize at least one oligonucleotide, each synthesis computer program having a plurality of program cycles for computer-controlling the automatic synthesizer (114) to sequentially synthesize the oligonucleotides by using a sequence of at least one synthesis cycle, the method comprising:
[0174] (I) applying an automatic parsing process to the program code of each of the composite computer programs, the automatic parsing process comprising automatically searching, in the program loop of the composite computer program, for parameter values of parameters in at least one predetermined target parameter list;
[0175] (II) automatically assembling a verification parameter matrix, for each of the program loops in the synthetic computer program, the verification parameter matrix comprising (i) the target parameter and the corresponding parameter score for the target parameter, or (ii) a structured array of parameter scores for the target parameter; and
[0176] (III) comparing the pattern of the verification parameter matrix with at least one predetermined target pattern.
[0177] Embodiment 18: The method according to any one of the preceding embodiments, wherein the program code is a method file, specifically a Unicorn method file.
[0178] Embodiment 19: A method according to any one of the preceding embodiments, wherein the program code is a binary program code.
[0179] Embodiment 20: A method according to any one of the preceding embodiments, wherein the program code comprises a header and a text segment following the header, wherein the method comprises automatic detection of the text segment in the program code, wherein the text segment is subjected to the automatic parsing process of step i.
[0180] Embodiment 21: A method according to any one of the preceding method embodiments, wherein the method is implemented by a computer.
[0181] Embodiment 22: A computer program comprising instructions, which, when the program is executed by a computer or a computer system, causes the computer or the computer system to perform a method according to any one of the preceding embodiments relating to methods.
[0182] Embodiment 23: A computer-readable storage medium, specifically a non-temporary computer-readable storage medium, wherein the computer-readable storage medium comprises instructions, which, when executed by a computer or a computer system, cause the computer or the computer system to perform a method according to any one of the foregoing embodiments involving the method.
[0183] Embodiment 24: A system for verifying program code of a synthetic computer program, the system comprising at least one processor, the processor being configured by programming to perform a method according to any one of the preceding embodiments relating to methods.
[0184] Embodiment 25: A method of synthesizing at least one oligonucleotide, the method comprising:
[0185] a. providing a program code of a synthesis computer program, the synthesis computer program being configured for computer control of at least one automatic synthesizer, the synthesis computer program having a plurality of program cycles for computer control of the automatic synthesizer to sequentially synthesize the oligonucleotide by using a sequence of synthesis cycles;
[0186] b. applying the method of verifying the program code according to any one of the preceding embodiments involving methods; and
[0187] c. Computer-controlling at least one automated synthesizer to automatically synthesize at least one oligonucleotide.
[0188] Embodiment 26: The method according to the previous embodiment, further comprising before step c.:
[0189] d. At least one correction step, which comprises modifying at least one parameter value of at least one target parameter according to at least one result of step b.
[0190] Embodiment 27: A synthesis method according to any one of the preceding embodiments relating to the synthesis method, wherein the at least one oligonucleotide comprises at least one oligonucleotide selected from the group consisting of: a DNA oligonucleotide, an RNA oligonucleotide, an LNA oligonucleotide, specifically, wherein the oligonucleotide comprises at least two, more specifically at least three, even more specifically at least four non-identical nucleotides.
[0191] Embodiment 28: A synthesis method according to any one of the preceding embodiments relating to the synthesis method, wherein in step c., at least one automatic synthesizer is used, the automatic synthesizer comprising at least one synthesis tower having at least one stationary phase material, the automatic synthesizer further comprising at least one pump, connectors to multiple chemical supply sources, and a switchable valve system for selectively supplying chemicals (specifically solvents and / or reactants) to the tower, wherein step c. comprises computer control of at least the switchable valve and the at least one pump.
[0192] Embodiment 29: The method according to the preceding embodiment, wherein the automatic synthesizer further comprises at least one additional element, wherein step c. comprises computer control of the at least one additional element.
[0193] Embodiment 30: A method according to the previous embodiment, wherein the additional element is selected from the group consisting of: a phosphoramidite pump; a phosphoramidite valve; a solvent / reagent pump; a solvent / reagent valve; a switchable valve system for feeding liquid from the tower into a predetermined container; at least one thermostatic element for setting the tower to at least one predetermined temperature; a tower inlet valve for allowing liquid to flow into the tower; a tower outlet valve for allowing liquid to flow out of the tower; a recirculation bypass, which is specifically used to recirculate liquid on the tower, such as by connecting the tower outlet valve to the tower inlet valve by means of at least one valve; a waste valve for directing liquid from the tower to at least one waste system. BRIEF DESCRIPTION OF THE DRAWINGS
[0194] Other optional features and embodiments will be disclosed in more detail in the subsequent description of embodiments, preferably in conjunction with the dependent claims. Wherein, as will be appreciated by those skilled in the art, each optional feature can be implemented in a separate manner and in any arbitrarily feasible combination. The scope of the present invention is not limited by the preferred embodiments. Embodiments are schematically depicted in the accompanying drawings. Wherein, the same reference numerals in these drawings refer to the same or functionally equivalent elements.
[0195] In the attached picture:
[0196] Figure 1 An embodiment of a system and an automatic synthesizer for verifying program code of a synthesized computer program is shown in schematic views;
[0197] Figure 2 A flow chart illustrating an embodiment of a method of verifying program code of a composite computer program; and
[0198] Figure 3 A flow chart illustrating an embodiment of a method of synthesizing at least one oligonucleotide is shown. DETAILED DESCRIPTION
[0199] Figure 1 An exemplary embodiment of a system 110 for verifying program code of a synthesized computer program and an automatic synthesizer 114 is shown in a schematic diagram. Figure 1 As shown, system 110 may be combined or coupled with automatic synthesizer 114, or may be a separate component. Figure 1 The automatic synthesizer 114 shown may be composed of However, other types of automated synthesizers 144 are also possible.
[0200] The system 110 includes at least one processor 112. The processor 112 is configured by programming, specifically by software programming, to perform operations according to the present invention (such as according to Figure 2 The exemplary embodiment shown in the figure and / or any other embodiment disclosed herein) is a method for verifying the program code of a composite computer program. Therefore, for the description of the method for verifying the program code of a composite computer program, reference is made to Figure 2 Description.
[0201] The system 110 may further include or may interact with at least one automatic synthesizer 114, such that the program code of the synthesized computer program verified by the system 110 may then be executed by the automatic synthesizer 114. To this end, the system 110 and the automatic synthesizer 114 may be fully or partially integrated with each other, may be connected via at least one interface or network, or the verified program code may be transferred to the automatic synthesizer 114 by other means, such as via a portable data storage device and / or by wireless or wired data transmission.
[0202] The automatic synthesizer 114 may include at least one synthesis tower 116 having at least one stationary phase material. Figure 1 As can be seen, the automated synthesizer 114 may include a plurality of towers 116, such as seven towers 116 or even more.
[0203] The automated synthesizer 114 may further include at least one pump 118, connectors 120 to a plurality of chemical supply sources 122, and a system of switchable valves 124 for selectively supplying chemicals (particularly solvents and / or reactants) to the column 116. Figure 1 In the exemplary system 110 shown, the automated synthesizer 114 may include phosphoramidite valves 126, 128. The phosphoramidite valves 126, 128 may provide liquid to the pump 118 via another valve 124.
[0204] The automated synthesizer 114 may further include a reagent valve 130. In addition, the automated synthesizer 114 may include a column inlet valve 132 for permitting liquid to flow into the column 116 and a column outlet valve 134 for permitting liquid to flow out of the column 116. Figure 1 As shown, a tower inlet valve 132 may be disposed downstream of the connector 120 and upstream of the tower 116. A tower outlet valve 134 may be disposed downstream of the tower 116 and may connect the liquid flowing out of the tower 116 to a recirculation valve 136. Between the tower outlet valve 132 and the recirculation valve 136, the automated synthesizer 114 may include a pH meter, a conductivity sensor, and / or a combined pH-C meter 138 for monitoring the liquid flowing out of the tower 116. Thus, the recirculation valve 136 may be configured to recirculate the liquid flowing out of the tower 116 and / or to distribute the liquid via a waste valve 140 for directing the liquid from the tower 116 to at least one waste system 142. As an example, the waste system 142 may include a UV absorption sensor 144 and a flow restrictor 146.
[0205] The automated synthesizer 114 may further include a column bypass 148 for providing a bypass flow from the column inlet valve 132 to the column outlet valve 134 .
[0206] The automated synthesizer 114 may include additional elements such as a phosphoramidite pump, a solvent / reagent pump, and / or a thermostat element for setting the column 116 to at least one predetermined temperature. Figure 1 not shown).
[0207] Therefore, the system 110 Figure 1 The configuration shown may be configured to perform the Figure 3 The exemplary embodiment shown in the figure and / or any other embodiment disclosed herein) of the method for synthesizing at least one oligonucleotide. Therefore, for the description of the method for synthesizing at least one oligonucleotide, reference is made to Figure 3 Description.
[0208] Figure 2A flow chart of an exemplary embodiment of a method of verifying a program code of a synthesis computer program is shown. In the accompanying drawings, the method of verifying a program code of a synthesis computer program is indicated by reference numeral 150. The synthesis computer program is configured for computer-controlling an automatic synthesizer 114 to automatically synthesize at least one oligonucleotide, the synthesis computer program having a plurality of program cycles for computer-controlling the automatic synthesizer 114 to sequentially synthesize oligonucleotides by using a sequence of at least one synthesis cycle.
[0209] The method comprises the following steps, which may be performed in a given order as an example. However, it should be noted that different orders are possible. In addition, one, more than one, or even all of the method steps may be performed once or repeatedly. Further, two or more method steps may be performed simultaneously or in a timely overlapping manner. The method may include other method steps not listed.
[0210] The method includes:
[0211] i. (indicated by reference numeral 152) applying an automatic parsing process to the program code of the synthesized computer program, the automatic parsing process comprising automatically searching for parameter values of parameters in at least one predetermined target parameter list in a program loop of the synthesized computer program; and
[0212] ii. (denoted by reference numeral 154) automatically assembling a parameter matrix, the parameter matrix comprising target parameters and corresponding parameter values of the target parameters for a program loop of the synthetic computer program. The method may further include the following optional steps:
[0213] iii. (indicated by reference numeral 156) automatically displaying the parameter matrix on the display;
[0214] iv. (indicated by reference numeral 158) applying an automatic error detection step to the parameter matrix, the automatic error detection step comprising subjecting the parameter matrix to at least one automatic rationality check; and
[0215] v. (denoted by reference numeral 160) an automatic error correction step, which comprises automatically correcting at least one error in the program code detected in the automatic error detection step.
[0216] Examples of program code and / or parameter matrices specifically obtained from program code with and without errors are provided below.
[0217] Figure 3The flow chart of an exemplary embodiment of the method for synthesizing at least one oligonucleotide is shown. The method comprises the following steps, and as an example, the following steps can be performed in a given order. However, it should be noted that different orders are also possible. In addition, one, more than one or even all steps in the method steps can also be performed once or repeatedly. Further, two or more method steps can be performed simultaneously or in a timely overlapping mode. The method can include other method steps that are not listed.
[0218] The method includes:
[0219] a. (denoted by reference numeral 162) providing program code of a synthesis computer program configured for computer control of at least one automatic synthesizer, the synthesis computer program having a plurality of program cycles for computer control of the automatic synthesizer to sequentially synthesize the oligonucleotide by using a sequence of synthesis cycles;
[0220] b. (denoted by reference numeral 150) using a method according to the present invention (such as according to Figure 2 A method of verifying program code according to the exemplary embodiment shown and / or according to any other embodiment disclosed herein); and
[0221] c. (Indicated by reference numeral 164) Computer control of at least one automated synthesizer 114 to automatically synthesize at least one oligonucleotide.
[0222] The method may further comprise:
[0223] d. (Indicated by reference numeral 166) At least one correction step, which comprises modifying at least one parameter value of at least one target parameter according to at least one result of step b.
[0224] In addition, in step c., the following may be used: Figure 1 At least one automatic synthesizer 114 is shown. Therefore, step c. may include computer control of at least switchable valve 124 and pump 118. In particular, step c. may include computer control of at least one of the additional elements (such as phosphoramidite valves 126, 128, reagent valve 130, column inlet valve 132, column outlet valve 134, recycle valve 136 and / or waste valve 140).
[0225] Examples
[0226] Below, exemplary embodiments of a program code to be used in a method of verifying a program code of a synthetic computer program (Example 1), and a parameter matrix obtained by performing the method of verifying a program code of a synthetic computer program (Examples 2 and 3) are given.
[0227] Example 1: Exemplary Program Code
[0228] Example 1 relates to an exemplary program code to be used in a method of verifying a program code of a synthetic computer program. The program code is a Unicorn method file, specifically a binary file, including the method process itself, instrument parameters, metadata, etc. The program code includes a digital header that lists the names of program code blocks with corresponding byte addresses. The instruction sequence appears in the "Method" section and can be read out as text.
[0229] The program code consists of the main instruction sequence, the main procedure:
[0230] MAIN_SEPARATION
[0231] 0.00Base CV,#Column_Volume{ml},Any
[0232] 0.00Block Normal,START_parameters
[0233] 0.00Block Normal, Column_wash
[0234] 0.00Block Normal,Cycle01_mGo_only_detrit
[0235] 0.00Block Normal,Cycle02_mGs
[0236] 0.00Block Normal,Cycle03_mCs
[0237] […]
[0238] 0.00Block Normal,Cycle21_fUs
[0239] 0.00Block Normal,Cycle22_pUs_no_cap_detrit
[0240] 0.00Block Normal,Backbone_deprotection
[0241] 0.00Block Normal,Method_end
[0242] 0.00End_Method
[0243] END_SEPARATION
[0244] In addition, the program code includes definitions of program code blocks referenced in the main procedure:
[0245] SUB_SEPARATION START_parameters
[0246] 0.00Base Time
[0247] 0.00Block Normal,Column_Number
[0248] 0.00Block Normal,UV_Detrit
[0249] 0.00Block Normal,Purge_Detritylation_Autozero
[0250] 0.00Scale#Weight_of_Support{g},#Loading_of_Support{umol / g}
[0251] 0.00Coldiameter#Column_Diameter{mm}
[0252] 0.00End_block
[0253] END_SEPARATION
[0254] SUB_SEPARATION Column_Number
[0255] 0.00Base Time
[0256] 0.00Column#Column_Number
[0257] 0.10End_Block
[0258] END_SEPARATION
[0259] SUB_SEPARATION UV_Detrit
[0260] 0.00Base Time
[0261] 0.00UV_Wavelength#UV_Detritylation{nm},280{nm},OFF{nm}
[0262] 0.10End_block
[0263] END_SEPARATION
[0264] Each program code block in the main sequence or referenced from within another program code block is declared by the "SUB_SEPARATION keyword" and ends with "END_SEPARATION". For example, the program code block that calls Cycle 03 in the main procedure includes the instruction "0.0Block Normal, Cycle03_mCs" and refers to the following program code blocks included by the program code:
[0265] SUB_SEPARATION Cycle03_mCs
[0266] 0.00Base Time
[0267] 0.00Set_Mark"#Cycle03 mCs#"
[0268] 0.05Block Normal,Coupling_v1_C_10min
[0269] 0.05Block Normal,Thiolation
[0270] 0.05Block Normal, Capping
[0271] 0.05Block Normal,Detritylation_Amount_6CV
[0272] END_SEPARATION
[0273] Subprocess or program code block can refer to other program code blocks defined in program code. Each row in the block (except the first and last row) all starts with a position mark, followed by commands and parameters. The position mark can be in units of time (e.g., minutes), volume (e.g., milliliters) or CV (e.g., column volume). These units are defined by the mandatory first row in the block by instructions "Base Time", "Base Volume", "Base CV" or "Base SameAsMain", wherein the latter defines the same unit as in the main process.
[0274] A program code block is defined by a name and entered once in the program code. References to a program code block from multiple places in the program code refer to the same entry. This means that the program code is not sequential and changing parameters in a program code block in one place also changes them in other places where the block is called.
[0275] Example 2: Hypothetical parameter matrix obtained from a program code without errors
[0276] Example 2 shows an exemplary embodiment of a hypothetical parameter matrix obtained by performing a method for verifying the program code of a synthetic computer program (e.g., using the program code of Example 1). The parameter matrix in this example is obtained from a program code without errors. The rows of the matrix represent program loops, while the columns of the matrix represent target parameters and corresponding parameter values of the target parameters. Other types of visualization are also generally feasible.
[0277]
[0278]
[0279] Table 1: Example matrix of assumed parameter values obtained from error-free program code
[0280] Example 3: Hypothetical parameter matrix obtained from a program code with errors
[0281] Example 3 shows an exemplary embodiment of a hypothetical parameter matrix obtained by performing a method for verifying a program code of a synthetic computer program (e.g., performed using the program code of Example 1). The parameter matrix in this example is obtained from a program code that includes one or more errors. The errors are highlighted in bold letters in Table 2.
[0282]
[0283]
[0284] Table 2: Example hypothesis parameter value matrix obtained from program code with errors
[0285] In this example, the error in the program code can be detected by automatically checking the parameter matrix for rationality. For example, Table 3 shows exemplary errors in the program code, their impact on the synthesis of oligonucleotides and how to detect these errors in the parameter matrix of Table 2:
[0286]
[0287]
[0288] Table 3: Exemplary aspects of automatic plausibility checks
[0289] Thus, in this example, the automatic plausibility check as shown in Table 3 can detect one or more of the following errors in the parameter matrix of Table 2: an extra row with incorrect values appears in the parameter matrix; an incorrect entry in the "Reactant" column in the parameter matrix; an incorrect value in the parameter matrix; a missing next operation in the parameter matrix.
[0290] Example 4: Comparison and highlighting of input parameters
[0291] In actual use, the synthesis computer program (synthesis program) of the synthesis device can be reprogrammed; however, a new synthesis program is often generated by modifying an existing synthesis program. Therefore, a comparison of, for example, the previous and new synthesis programs helps to verify that the parameters intended to be changed and only the parameters intended to be changed are modified.
[0292] Therefore, instead of or in addition to the error highlighting as detailed in Example 3, selection of a comparison method, such as a previously used method or a reference method, can also be enabled and a list of method steps of the target method output with differences from the comparison method highlighted, thereby improving error detection.
[0293] Example 5: Reagent Calculation
[0294] In the methods described herein, the reagent volume of a given step and the number of cycles in which the reagent is used can also be target parameters. Based on these parameters, the reagent volume required for the method is automatically calculated. It should be understood that this calculation can be performed for one or more educts, auxiliary reagents and washing reagents. Therefore, in one embodiment, the required volumes of all reagents used in the method are calculated, thereby preventing the method from being interrupted due to lack of reagents.
[0295] Example 6: Verifying a set of methods
[0296] As will be appreciated by those skilled in the art from the description herein, for example, in process optimization, multiple parameters may need to be optimized, at least some of which may be interdependent; therefore, a large number of methods with combinatorial sets of parameters may need to be used for optimization. In such cases, it is particularly difficult to ensure that all combinations are programmed as originally planned, such as in a design of experiments (DOE) value matrix.
[0297] For this reason, in one embodiment, a structured parameter score array is used. On an exemplary basis, when optimizing a group of three parameters A, B and C, the structured array includes the score of the parameter A in the first position, the score of the parameter B in the second position and the score of the parameter C in the third position. Also on the basis of an example, parameters A and B are used as the low value represented by "-", the median value represented by "o" and the high value represented by "+". As will be appreciated by those skilled in the art, for parameters A and B, the actual value or scope represented by the aforementioned symbols can be different. Also on the basis of an example, parameter C is used as four values represented by "1", "2", "3" and "4" respectively. Therefore, the method using low value parameter A, median parameter B and highest value parameter C will be represented by string "-o4". In a word, the target pattern of a group of methods using all combinations of the low value of parameter A, the median value of parameter B and all values of parameter C in ascending order can be represented as the following target pattern:
[0298] -o1
[0299] -o2
[0300] -o3
[0301] -o4
[0302] In the verification method, parameters A, B and C are target parameters, and a verification parameter matrix is generated for a set of synthesis methods programmed. Verification includes comparing the verification parameter matrix with the aforementioned target pattern. As will be appreciated, it is easier and more reliable to detect deviations in such patterns than to compare, for example, parameter lists or even method step lists.
[0303] Reference numerals list
[0304] 110 System
[0305] 112 Processor
[0306] 114 Automatic synthesizer
[0307] 116 Synthetic Tower
[0308] 118 Pump
[0309] 120 Connectors
[0310] 122 Chemical Supply Sources
[0311] 124 Switchable valve
[0312] 126 Phosphoramidite Valve
[0313] 128 Phosphoramidite Valve
[0314] 130 Reagent valve
[0315] 132 Tower Inlet Valve
[0316] 134 Tower outlet valve
[0317] 136 Recirculation valve
[0318] 138 pH-C meter
[0319] 140 Waste valve
[0320] 142 Waste Systems
[0321] 144 UV absorption sensor
[0322] 146 Current Limiter
[0323] 148 Tower Bypass
[0324] 150 Method for verifying program code of a synthetic computer program
[0325] 152 Application automatic parsing process
[0326] 154 Automatically assembling parameter matrices
[0327] 156 Automatically display parameter matrix
[0328] 158 Applying Automatic Error Detection Steps
[0329] 160 Automatic Error Correction Steps
[0330] 162 Providing program code for a synthetic computer program
[0331] 164 Computer control of automatic synthesizer
[0332] 166 Calibration Steps
Claims
1. A method for verifying a program code of a synthesis computer program, the synthesis computer program being configured for computer-controlling an automatic synthesizer (114) to automatically synthesize at least one oligonucleotide, the synthesis computer program having a plurality of program cycles for computer-controlling the automatic synthesizer (114) to sequentially synthesize the oligonucleotides by using a sequence of at least one synthesis cycle, the method comprising: i. applying an automatic parsing process to the program code of the synthetic computer program, the automatic parsing process comprising automatically searching in the program loop of the synthetic computer program for parameter values of parameters in at least one predetermined target parameter list; as well as ii. Automatically assembling a parameter matrix, comprising, for said program loop of said synthetic computer program, said parameter matrix comprising said target parameters and corresponding parameter values of said target parameters.
2. A method according to the preceding claim, wherein the synthesis cycle comprises at least two extension cycles, wherein nucleotide residues are added to an oligonucleotide chain, wherein the target parameter is the same for at least a small portion of the program cycles controlling the extension cycles, such that the matrix comprises the parameter values for the same parameter for different program cycles of the program code.
3. The method according to any one of the preceding claims, further comprising: iii. Automatically displaying the parameter matrix on a display.
4. A method according to any of the preceding claims, wherein the predetermined list of target parameters includes at least one target parameter selected from the group consisting of: type of chemical; volume of chemical; flow rate of chemical; temperature of chemical; pump pressure of at least one pump (118); length of a specific synthesis step.
5. The method according to any one of the preceding claims, further comprising: iv. applying an automatic error detection step to the parameter matrix, the automatic error detection step comprising subjecting the parameter matrix to at least one automatic rationality check, wherein the automatic rationality check comprises at least one of: - comparing the pattern of the parameter matrix to at least one predetermined target pattern; - detecting missing parameter values in the parameter matrix; - Detect incorrect units; - Detect parameter values outside of a predetermined range; - detecting missing rows in the matrix; - detecting additional rows in the matrix; - identifying target parameters of the program loops listed in different rows of the matrix that should be listed in a combined row of the matrix; - The test is about the selection of the correct reagents; - Testing the selection of the correct solvent; - Check the selection of the correct starting material.
6. The method according to the preceding claim, further comprising automatically outputting a warning message to a user if the automatic error detection step detects an error in the program code.
7. The method according to any of the two preceding claims, further comprising automatically preventing the synthesized computer program from being executed on the automatic synthesizer (114) if the automatic error detection step detects an error in the program code.
8. The method according to any of the three preceding claims, wherein in the automatic error detection step, at least one of the following errors is detected: incorrect units of the parameters; omitted setting of at least one chemical; incorrect setting of at least one valve (124); The flow rate of at least one chemical is not set to zero when the program code ends.
9. The method according to any one of the preceding four claims, further comprising: v. an automatic error correction step, said automatic error correction step comprising automatically correcting at least one error in said program code detected in said automatic error detection step.
10. A method according to any one of the preceding claims, wherein the program code comprises a header and a text segment following the header, wherein the method comprises automatic detection of the text segment in the program code, wherein the text segment is subjected to the automatic parsing process of step i.
11. A method according to any one of the preceding claims, wherein the parameter matrix comprises a comparison of the parameter matrix with the reference parameter matrix, optionally by highlighting differences between the parameter matrix and the reference parameter matrix.
12. The method according to any of the preceding claims, wherein step iii. automatically displays on a display a representation of the method steps including a comparison of the method steps with a reference list of method steps.
13. The method according to any one of the preceding claims, further comprising: vi. Automatically calculating a total required amount of at least one reagent based on the parameter value.
14. A method for verifying a set of at least two program codes of synthesis computer programs, each synthesis computer program being configured for computer-controlling an automatic synthesizer (114) to automatically synthesize at least one oligonucleotide, each synthesis computer program having a plurality of program cycles for computer-controlling the automatic synthesizer (114) to sequentially synthesize the oligonucleotides by using a sequence of at least one synthesis cycle, the method comprising: (I) applying an automatic parsing process to the program code of each of the composite computer programs, the automatic parsing process comprising automatically searching in the program loops of the composite computer programs for parameter values of parameters in at least one predetermined target parameter list; (II) automatically assembling a verification parameter matrix, for each of the program loops in the synthetic computer program, the verification parameter matrix comprising (i) the target parameters and corresponding parameter scores for the target parameters, or (ii) a structured array of parameter scores for the target parameters; as well as (III) comparing the pattern of the verification parameter matrix with at least one predetermined target pattern.
15. A computer program comprising instructions which, when executed by a computer or a computer system, cause the computer or computer system to carry out a method according to any of the preceding claims relating to a method.
16. A computer-readable storage medium comprising instructions which, when executed by a computer or a computer system, cause the computer or computer system to perform a method according to any of the preceding claims relating to a method.
17. A system (110) for verifying program code of a composite computer program, the system (110) comprising at least one processor (112) configured by programming to perform a method according to any of the preceding claims relating to a method.
18. A method of synthesizing at least one oligonucleotide, the method comprising: a. providing a program code of a synthesis computer program, the synthesis computer program being configured for computer control of at least one automatic synthesizer (114), the synthesis computer program having a plurality of program cycles for computer control of the automatic synthesizer (114) to sequentially synthesize the oligonucleotides by using a sequence of synthesis cycles; b. applying the method of verifying the program code according to any one of the preceding claims relating to a method; and c. Computer-controlling at least one automated synthesizer (114) to automatically synthesize the at least one oligonucleotide.
19. The method according to the preceding claim, further comprising, before step c.: d. At least one correction step, which comprises modifying at least one parameter value of at least one target parameter according to at least one result of step b.
20. The synthesis method according to any one of the preceding claims relating to a synthesis method, wherein the at least one oligonucleotide comprises at least one oligonucleotide selected from the group consisting of: a DNA oligonucleotide, an RNA oligonucleotide, an LNA oligonucleotide.