diff --git a/.gitattributes b/.gitattributes index b534f20ca284b79273f54f7c8076e015e2b6bf5f..61523eee6df228ee150a4996691ea28105783d0c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -10759,3 +10759,70 @@ GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/inference/ GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_8.png filter=lfs diff=lfs merge=lfs -text GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_9.png filter=lfs diff=lfs merge=lfs -text GEM-3D-ct-text4-newdata-newvae-retrain/misc/overview.jpg filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/exp.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_0.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_1.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_10.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_11.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_12.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_13.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_14.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_15.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_16.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_17.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_18.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_19.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_2.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_20.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_21.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_22.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_23.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_24.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_25.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_26.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_27.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_28.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_29.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_3.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_30.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_31.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_32.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_33.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_34.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_35.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_36.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_37.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_38.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_39.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_4.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_40.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_41.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_42.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_43.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_44.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_45.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_46.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_47.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_48.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_49.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_5.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_50.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_51.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_52.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_53.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_54.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_55.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_56.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_57.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_58.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_59.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_6.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_60.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_61.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_62.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_63.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_64.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_7.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_8.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_9.png filter=lfs diff=lfs merge=lfs -text +GEM-3D-ct-text4-newdata-newvae-retrain-disease/misc/overview.jpg filter=lfs diff=lfs merge=lfs -text diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/.gitignore b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..4d0b9aa67d09e8f2ba6e64e72a19c78874cd4550 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/.gitignore @@ -0,0 +1,8 @@ +*.pyc +*.png +*.ckpt +*.zip + +logs/ +data/ +infer_model/ \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LICENSE b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..f288702d2fa16d3cdf0035b15a9fcbc552cd88e7 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__init__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..83f733a0e56b0e547b7d6e004a2b3bf6eedeced6 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__init__.py @@ -0,0 +1,4 @@ + +from .models.autoencoder import LeanVAE +from .models.autoencoder_pl import AutoEncoderEngine + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/__init__.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4f66e505a19a6f4e632287ad9f5f2ecb146a5329 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/__init__.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/__init__.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..60d729867d017cb76cfab4df08cbb5a36842b357 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/__init__.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/__init__.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6a502ec7c72b1713b322e2833801b3039173eda5 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/__init__.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/data.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/data.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1df8108349509b985289d07ee0df9423be4d90d2 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/data.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/data.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/data.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..062096721fbbd51dfd70d2f8b4bd5c14a460ad1f Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/data.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/ckpts/LeanVAE-dim16.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/ckpts/LeanVAE-dim16.ckpt new file mode 100644 index 0000000000000000000000000000000000000000..1edb223dac2ce1fa35e186ed038f7be19bff827c --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/ckpts/LeanVAE-dim16.ckpt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c1d65765e44ced040a43a0bb7084a936e5b3862d21df4a9fd13580508cd1ecb +size 159199850 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/data.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/data.py new file mode 100644 index 0000000000000000000000000000000000000000..03cd3720ab98e9d147bf278c94dd3e19cadc6bc2 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/data.py @@ -0,0 +1,466 @@ +import os +import os.path as osp +import math +import random +import argparse +import numpy as np +from PIL import Image +from torch.utils.data import BatchSampler, Dataset, Sampler +import torch +import torch.utils.data as data +import torch.nn.functional as F +import torch.distributed as dist +from torchvision.datasets.video_utils import VideoClips +import pytorch_lightning as pl +from typing import TypeVar, Optional, Iterator, List +from collections import Counter, defaultdict +from decord import VideoReader +from .utils.video_utils import VideoNorm + +try: + from torchvision.transforms import InterpolationMode + + def _pil_interp(method): + if method == 'bicubic': + return InterpolationMode.BICUBIC + elif method == 'lanczos': + return InterpolationMode.LANCZOS + elif method == 'hamming': + return InterpolationMode.HAMMING + else: + # default bilinear, do we want to allow nearest? + return InterpolationMode.BILINEAR + + + import timm.data.transforms as timm_transforms + + timm_transforms._pil_interp = _pil_interp +except: + from timm.data.transforms import _pil_interp + +class MultiSizeVideoDataset(data.Dataset): + """ A flexible dataset for loading videos of different resolutions stored in a structured format. + This dataset reads video file paths from text files, where each file corresponds to a specific resolution (e.g., `256x256`). + Returns BCTHW videos in the range [-0.5, 0.5] """ + def __init__(self, data_list, data_folder=None, sequence_length=17, train=True, sample_rate=1, dynamic_sample=False): + """ + Args: + data_list (str): Path to the folder containing text files with video paths. + data_folder (Optional[str]): Root folder where videos are stored (if paths in data_list are relative). + + sequence_length: length of extracted video sequences + """ + super().__init__() + self.train = train + self.data_folder = data_folder + self.sequence_length = sequence_length + self.dynamic_sample = dynamic_sample + self.sample_rate = sample_rate + + lengths = [] + annotations = [] + for dir in os.listdir(data_list): + file_path = os.path.join(data_list, dir) + with open(file_path) as f: + annotation = [ann.strip() for ann in f.readlines()] + annotations.extend(annotation) + lengths.extend([dir] * len(annotation)) + + self.annotations = annotations + self.lengths = lengths + + self.norm = VideoNorm() + + def __len__(self): + return len(self.annotations) + + + def __getitem__(self, idx): + + video_path = self.annotations[idx] if self.data_folder is None else os.path.join(self.data_folder, self.annotations[idx]) + try: + decord_vr = VideoReader(video_path) + total_frames = len(decord_vr) + except Exception as e: + raise RuntimeError(f"Failed to read video: {video_path}. Error: {e}") + + if self.dynamic_sample: + sample_rate = random.randint(1, self.sample_rate) + else: + sample_rate = self.sample_rate + + required_frames = self.sequence_length * sample_rate + if total_frames < self.sequence_length: + raise RuntimeError(f"Video {video_path} has only {total_frames} frames, but {self.sequence_length} are required.") + + if total_frames < required_frames: + sample_rate = 1 + required_frames = self.sequence_length + + start_frame_ind = random.randint(0, max(0, total_frames - required_frames)) + end_frame_ind = min(start_frame_ind + required_frames, total_frames) + frame_indice = np.linspace( + start_frame_ind, end_frame_ind - 1, self.sequence_length, dtype=int + ) + + video_data = decord_vr.get_batch(frame_indice).asnumpy() + video_data = torch.from_numpy(video_data).float() + video_data = video_data.permute(0, 3, 1, 2) + + video = self.norm(video_data).permute(1, 0, 2, 3) + return {"video": video} + +class MultiFilesBatchVideoSampler(BatchSampler): + """A sampler wrapper for grouping videos within same folder into a same batch. + Args: + sampler (Sampler): Base sampler. + dataset (Dataset): Dataset providing data information. + batch_size (int): Size of mini-batch. + drop_last (bool): If ``True``, the sampler will drop the last batch if + its size would be less than ``batch_size``. + aspect_ratios (dict): The predefined aspect ratios. + """ + def __init__(self, + sampler: Sampler, + dataset: Dataset, + batch_size: int, + train_folder: str = None, + drop_last: bool = False + ) -> None: + if not isinstance(sampler, Sampler): + raise TypeError('sampler should be an instance of ``Sampler``, ' + f'but got {sampler}') + if not isinstance(batch_size, int) or batch_size <= 0: + raise ValueError('batch_size should be a positive integer value, ' + f'but got batch_size={batch_size}') + self.sampler = sampler + self.dataset = dataset + self.train_folder = train_folder + self.batch_size = batch_size + self.drop_last = drop_last + self.bucket = {file_name: [] for file_name in os.listdir(self.train_folder)} + + #{file_name: [list(os.listdir(os.path.join(self.train_folder, file_name)))] for file_name in os.listdir(self.train_folder)} + self.idx2file = [] + + + def __iter__(self): + for idx in self.sampler: + file_name = self.idx2file[idx] + self.bucket[file_name].append(idx) + bucket = self.bucket[file_name] + bucket.append(idx) + # yield a batch of indices in the same aspect ratio group + if len(bucket) == self.batch_size: + yield bucket[:] + del bucket[:] + + +def group_data_fun(lengths, generator=None): + # counter is decrease order + counter = Counter(lengths) # counter {'1x256x256': 3, ''} lengths ['1x256x256', '1x256x256', '1x256x256', ...] + grouped_indices = defaultdict(list) + for idx, item in enumerate(lengths): # group idx to a list + grouped_indices[item].append(idx) + + grouped_indices = dict(grouped_indices) # {'1x256x256': [0, 1, 2], ...} + sorted_indices = [grouped_indices[item] for (item, _) in sorted(counter.items(), key=lambda x: x[1], reverse=True)] + + # shuffle in each group + shuffle_sorted_indices = [] + for indice in sorted_indices: + shuffle_idx = torch.randperm(len(indice), generator=generator).tolist() + shuffle_sorted_indices.extend([indice[idx] for idx in shuffle_idx]) + return shuffle_sorted_indices + +def last_group_data_fun(shuffled_megabatches, lengths): + # lengths ['1x256x256', '1x256x256', '1x256x256' ...] + re_shuffled_megabatches = [] + # print('shuffled_megabatches', len(shuffled_megabatches)) + for i_megabatch, megabatch in enumerate(shuffled_megabatches): + re_megabatch = [] + for i_batch, batch in enumerate(megabatch): + assert len(batch) != 0 + + len_each_batch = [lengths[i] for i in batch] # ['1x256x256', '1x256x256'] + idx_length_dict = dict([*zip(batch, len_each_batch)]) # {0: '1x256x256', 100: '1x256x256'} + count_dict = Counter(len_each_batch) # {'1x256x256': 2} or {'1x256x256': 1, '1x768x256': 1} + if len(count_dict) != 1: + sorted_by_value = sorted(count_dict.items(), key=lambda item: item[1]) # {'1x256x256': 1, '1x768x256': 1} + # import ipdb;ipdb.set_trace() + # print(batch, idx_length_dict, count_dict, sorted_by_value) + pick_length = sorted_by_value[-1][0] # the highest frequency + candidate_batch = [idx for idx, length in idx_length_dict.items() if length == pick_length] + random_select_batch = [random.choice(candidate_batch) for i in range(len(len_each_batch) - len(candidate_batch))] + # print(batch, idx_length_dict, count_dict, sorted_by_value, pick_length, candidate_batch, random_select_batch) + batch = candidate_batch + random_select_batch + # print(batch) + + for i in range(1, len(batch)-1): + # if not lengths[batch[0]] == lengths[batch[i]]: + # print(batch, [lengths[i] for i in batch]) + # import ipdb;ipdb.set_trace() + assert lengths[batch[0]] == lengths[batch[i]] + re_megabatch.append(batch) + re_shuffled_megabatches.append(re_megabatch) + + + # for megabatch, re_megabatch in zip(shuffled_megabatches, re_shuffled_megabatches): + # for batch, re_batch in zip(megabatch, re_megabatch): + # for i, re_i in zip(batch, re_batch): + # if i != re_i: + # print(i, re_i) + return re_shuffled_megabatches + +def split_to_even_chunks(megabatch, lengths, world_size, batch_size): + """ + Split a list of indices into `chunks` chunks of roughly equal lengths. + """ + # batch_size=2, world_size=2 + # [1, 2, 3, 4] -> [[1, 2], [3, 4]] + # [1, 2, 3] -> [[1, 2], [3]] + # [1, 2] -> [[1], [2]] + # [1] -> [[1], []] + chunks = [megabatch[i::world_size] for i in range(world_size)] + + pad_chunks = [] + for idx, chunk in enumerate(chunks): + if batch_size != len(chunk): + assert batch_size > len(chunk) + if len(chunk) != 0: # [[1, 2], [3]] -> [[1, 2], [3, 3]] + chunk = chunk + [random.choice(chunk) for _ in range(batch_size - len(chunk))] + else: + chunk = random.choice(pad_chunks) # [[1], []] -> [[1], [1]] + print(chunks[idx], '->', chunk) + pad_chunks.append(chunk) + return pad_chunks + +def get_length_grouped_indices(lengths, batch_size, world_size, gradient_accumulation_size, initial_global_step, generator=None, group_data=False, seed=42): + # We need to use torch for the random part as a distributed sampler will set the random seed for torch. + if generator is None: + generator = torch.Generator().manual_seed(seed) # every rank will generate a fixed order but random index + # print('lengths', lengths) + + if group_data: + indices = group_data_fun(lengths, generator) + else: + indices = torch.randperm(len(lengths), generator=generator).tolist() + + megabatch_size = world_size * batch_size + megabatches = [indices[i: i + megabatch_size] for i in range(0, len(lengths), megabatch_size)] + + megabatches_len = [[lengths[i] for i in megabatch] for megabatch in megabatches] + + megabatches = [split_to_even_chunks(megabatch, lengths, world_size, batch_size) for megabatch in megabatches] + + split_to_even_chunks_len = [[[lengths[i] for i in batch] for batch in megabatch] for megabatch in megabatches] + + indices_mega = torch.randperm(len(megabatches), generator=generator).tolist() + # print(f'rank {accelerator.process_index} seed {seed}, len(megabatches) {len(megabatches)}, indices_mega, {indices_mega[:50]}') + shuffled_megabatches = [megabatches[i] for i in indices_mega] + shuffled_megabatches_len = [[[lengths[i] for i in batch] for batch in megabatch] for megabatch in shuffled_megabatches] + # print(f'\nrank {accelerator.process_index} sorted shuffled_megabatches_len', shuffled_megabatches_len[0], shuffled_megabatches_len[1], shuffled_megabatches_len[-2], shuffled_megabatches_len[-1]) + + # import ipdb;ipdb.set_trace() + # print('shuffled_megabatches', len(shuffled_megabatches)) + if group_data: + shuffled_megabatches = last_group_data_fun(shuffled_megabatches, lengths) + group_shuffled_megabatches_len = [[[lengths[i] for i in batch] for batch in megabatch] for megabatch in shuffled_megabatches] + # print(f'\nrank {accelerator.process_index} group_shuffled_megabatches_len', group_shuffled_megabatches_len[0], group_shuffled_megabatches_len[1], group_shuffled_megabatches_len[-2], group_shuffled_megabatches_len[-1]) + + + #initial_global_step = initial_global_step * gradient_accumulation_size #todo + + shuffled_megabatches = shuffled_megabatches[initial_global_step:] + #print(f'Skip the data of {initial_global_step} step!') + + return [batch for megabatch in shuffled_megabatches for batch in megabatch] + +class LengthGroupedSampler(Sampler): + r""" + Sampler that samples indices in a way that groups together features of the dataset of roughly the same length while + keeping a bit of randomness. + """ + + def __init__( + self, + batch_size: int, + world_size: int, + gradient_accumulation_size: int = 1, + initial_global_step: int = 0, + lengths: Optional[List[int]] = None, + group_data=False, + generator=None, + rank: Optional[int] = None, + seed: int = 0, + ): + if lengths is None: + raise ValueError("Lengths must be provided.") + + self.batch_size = batch_size + self.world_size = world_size + self.initial_global_step = initial_global_step + self.gradient_accumulation_size = gradient_accumulation_size + self.lengths = lengths + self.group_data = group_data + self.generator = generator + + self.rank = rank + self.epoch = 0 + + self.seed = seed + + megabatch_size = self.batch_size * self.world_size + self.num_samples = ((len(lengths) + megabatch_size - 1) // megabatch_size ) * self.batch_size #todo + #self.num_samples = self.num_samples #- self.initial_global_step * self.batch_size * self.gradient_accumulation_size + # print('self.lengths, self.initial_global_step, self.batch_size, self.world_size, self.gradient_accumulation_size', + # len(self.lengths), self.initial_global_step, self.batch_size, self.world_size, self.gradient_accumulation_size) + + def __len__(self): + return self.num_samples + + def __iter__(self): + g = torch.Generator() + g.manual_seed(self.seed + self.epoch) + megabatch_indices = get_length_grouped_indices(self.lengths, self.batch_size, self.world_size, + self.gradient_accumulation_size, self.initial_global_step, + group_data=self.group_data, generator=g) + + # subsample + indices = [i for batch in megabatch_indices[self.rank::self.world_size] for i in batch] + assert len(indices) == self.num_samples + + return iter(indices) + + def set_epoch(self, epoch: int) -> None: + r""" + Set the epoch for this sampler. + + When :attr:`shuffle=True`, this ensures all replicas + use a different random ordering for each epoch. Otherwise, the next iteration of this + sampler will yield the same ordering. + + Args: + epoch (int): Epoch number. + """ + self.epoch = epoch + + +class VideoData(pl.LightningDataModule): + def __init__(self, args): + super().__init__() + self.args = args + + def _dataset(self, train): + datasets = [] + for dataset_path, train_list, val_list in zip(self.args.data_path, self.args.train_datalist, self.args.val_datalist): + + dataset = MultiSizeVideoDataset(data_folder=dataset_path, data_list=train_list if train else val_list, sequence_length=self.args.sequence_length, + train=train, sample_rate=self.args.sample_rate, dynamic_sample=self.args.dynamic_sample) + datasets.append(dataset) + return datasets + + def _dataloader(self, train, steps = 0, batch_size = None): + dataset = self._dataset(train) + if isinstance(self.args.batch_size, int): + self.args.batch_size = [self.args.batch_size] + self.batch_size = self.args.batch_size if batch_size is None else batch_size + assert len(dataset) == len(self.args.batch_size) + dataloaders = [] + for dset, d_batch_size in zip(dataset, self.batch_size): + if dist.is_initialized(): + sampler = LengthGroupedSampler( + batch_size=d_batch_size, + world_size=dist.get_world_size(), + gradient_accumulation_size=1, + initial_global_step=steps if train else 0, + lengths=dset.lengths, + group_data=True, + rank = dist.get_rank() + ) + else: + sampler = None + + dataloader = data.DataLoader( + dset, + batch_size=d_batch_size, + num_workers=self.args.num_workers if train else 0, + pin_memory=False, + sampler=sampler, + ) + + dataloaders.append(dataloader) + + return dataloaders + + def train_dataloader(self): + return self._dataloader(True) + + def val_dataloader(self): + return self._dataloader(False)[0] + + + @staticmethod + def add_data_specific_args(parent_parser): + parser = argparse.ArgumentParser(parents=[parent_parser], add_help=False) + parser.add_argument('--data_path', type=str, nargs="+", default=['']) + parser.add_argument('--train_datalist', type=str, nargs="+", default=['./video/kinetics-dataset/train/datapath']) + parser.add_argument('--val_datalist', type=str, nargs="+", default=['./video/kinetics-dataset/val/datapath']) + + parser.add_argument('--sequence_length', type=int, default=17) + parser.add_argument('--sample_rate', type=int, default=1, + help='Frame sampling rate') + parser.add_argument('--dynamic_sample', action='store_true', + help='Enable dynamic sampling rate') + + parser.add_argument('--batch_size', type=int, nargs="+", default=[5]) + parser.add_argument('--num_workers', type=int, default=8) + return parser + +if __name__ == "__main__": + import os + def lines(file_path): + with open(file_path, 'r') as file: + return sum(1 for line in file) + train_folder ='./kinetics-dataset/datapath' + lengths_dict = {file_name: lines(os.path.join(train_folder, file_name)) for file_name in os.listdir(train_folder)} + lengths = [] + for k, v in lengths_dict.items(): + lengths += [k] * min(v, 50) #(v % 7) + world_size = 4 + sampler = [] + batch_size = 10 + for rank in range(world_size): + sampler.append(LengthGroupedSampler( + batch_size=batch_size, + world_size=world_size, + gradient_accumulation_size=1, + initial_global_step=0, + lengths=lengths, + group_data=True, + rank = rank + )) + + + with open('./sampler.txt', 'w') as f: + for epoch in range(5): + rank_idx = {} + bk = [] + print(f'epoch -------------------------------------- {epoch} ----------------------------------------------------', file=f) + for rank in range(world_size): + sl = sampler[rank] + sl.set_epoch(epoch) + for i in iter(sl): + bk.append(i) + if len(bk) == batch_size: + rank_idx.setdefault(f'rank_{rank}', []) + rank_idx[f'rank_{rank}'].append(bk) + bk = [] + for num in range(5): + print('*'*5 + f'steps {num}' + '*'*5, file=f) + for rank, bk in rank_idx.items(): + print(f'rank {rank}: {bk[num]}', file=f) + print([lengths[i] for i in bk[num]], file=f) + + + exit() diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1f617b5f6a2abb55e289b5352460ff38ae3eb4bd Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ae05f32bdd356876e3a7bd5373b9875e4f754575 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ac5c652d9e20b7c41e8c9ed40349ee1a273ccb94 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder_pl.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder_pl.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..df463c9449153a56a352afb16a64da98cba34917 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder_pl.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder_pl.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder_pl.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8bfbf89cc13c7a32676a39dee046a2d3d1ff61ec Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder_pl.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder_pl.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder_pl.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..37c1259114964e24b85a7a70de96876558351453 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder_pl.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/autoencoder.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/autoencoder.py new file mode 100644 index 0000000000000000000000000000000000000000..55e028a445e9a4fcf4774d555c4bcecfea3b731c --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/autoencoder.py @@ -0,0 +1,186 @@ +import argparse +import torch +import torch.distributed +import torch.nn as nn +import torch.nn.functional as F +from einops import rearrange +from ..modules import DiagonalGaussianDistribution, Encoder_Arch, Decoder_Arch, ISTA +from ..utils.patcher_utils import Patcher, UnPatcher + +class LeanVAE(nn.Module): + def __init__(self, args): + super().__init__() + self.args = args + self.embedding_dim = args.embedding_dim + + self.latent_bottleneck = ISTA(points_num=args.embedding_dim, out_num=args.latent_dim, iter_num=args.ista_iter_num, layer_num=args.ista_layer_num) + + self.dwt = Patcher() + self.idwt = UnPatcher() + + self.encoder = Encoder_Arch(l_dim = args.l_dim, h_dim = args.h_dim, sep_num_layer = args.sep_num_layer, fusion_num_layer = args.fusion_num_layer) + self.decoder = Decoder_Arch(l_dim = args.l_dim, h_dim = args.h_dim, sep_num_layer = args.sep_num_layer, fusion_num_layer = args.fusion_num_layer) + + self.std_layer = nn.Linear(args.embedding_dim, args.latent_dim) + + self.tile_inference = False + self.chunksize_enc = args.chunksize_enc if hasattr(args, 'chunksize_enc') and args.chunksize_enc else 5 + self.chunksize_dec = args.chunksize_dec if hasattr(args, 'chunksize_dec') and args.chunksize_dec else 5 + if args.use_tile_inference: + self.set_tile_inference(True) + else: + self.set_tile_inference(False) + + def _set_first_chunk(self, is_first_chunk=True): + for module in self.modules(): + if hasattr(module, 'is_first_chunk'): + module.is_first_chunk = is_first_chunk + + def set_tile_inference(self, tile_inference=False): + for module in self.modules(): + if hasattr(module, 'tile_inference'): + module.tile_inference = tile_inference + + def _build_chunk_index(self, T = 17, mtype = 'enc'): + start_end = [] + if mtype == 'enc': + chunksize = self.chunksize_enc + else: + chunksize = self.chunksize_dec + if T >= chunksize : + start_end.append((0, chunksize)) + start_idx = chunksize + else: + assert T < chunksize + + for i in range(start_idx, T, chunksize-1): + end_idx = min(i + chunksize -1, T) + start_end.append((i, end_idx)) + return start_end + + def encode(self, x): + ndim = x.ndim + if ndim == 4: + x = x.unsqueeze(2) + self.set_tile_inference(False) + + if self.tile_inference: + z = [] + chunk_indexs = self._build_chunk_index(T=x.shape[2], mtype='enc') + for idx, (start, end) in enumerate(chunk_indexs): + if idx == 0: + self._set_first_chunk(True) + else: + self._set_first_chunk(False) + + x_dwt = self.dwt(x[:, :, start:end]) + p = self.encoder.encode(x=x_dwt) + z.append(self.latent_bottleneck.sample(p)) + z = torch.cat(z, dim = 1) + else: + x_dwt = self.dwt(x) + p = self.encoder.encode(x=x_dwt) + z = self.latent_bottleneck.sample(p) + + z = rearrange(z, 'b t h w d -> b d t h w') + return z + + def decode(self, z, is_image = False): + z = rearrange(z, 'b d t h w -> b t h w d') + if is_image: + self.set_tile_inference(False) + if self.tile_inference: + x_recon = [] + chunk_indexs = self._build_chunk_index(T=z.shape[1], mtype='dec') + for idx, (start, end) in enumerate(chunk_indexs): + if idx == 0: + self._set_first_chunk(True) + else: + self._set_first_chunk(False) + p_rec = self.latent_bottleneck.recon(z[:, start:end]) + x_dwt_rec = self.decoder.decode(p_rec, is_image=is_image) + + x_recon.append(self.idwt(x=x_dwt_rec)) + x_recon = torch.cat(x_recon, dim = 2) + else: + p_rec = self.latent_bottleneck.recon(z) + x_dwt_rec = self.decoder.decode(p_rec, is_image=is_image) + + x_recon = self.idwt(x=x_dwt_rec) + + return x_recon + + + + @torch.no_grad() + def inference(self, x): + if x.ndim == 4 : + is_image = True + else: + is_image = False + assert x.shape[2] % 4 == 1, f"Expected frame_num % 4 == 1, but got {x.shape[2] % 4}" + + z = self.encode(x) + x_recon = self.decode(z, is_image=is_image) + + if is_image: + x = x.squeeze(2) + return x, x_recon + + def forward(self, x, log_image=False): + x_dwt = self.dwt(x) + p = self.encoder(x=x_dwt) + z_mean = self.latent_bottleneck.sample(p) + z_std = self.std_layer(p) + + posterior = DiagonalGaussianDistribution(parameters=(z_mean, z_std)) + z = posterior.sample() + p_rec = self.latent_bottleneck.recon(z) + + x_dwt_rec = self.decoder(p_rec) #b c t h w + + + x_recon = self.idwt(x=x_dwt_rec) + + if log_image: + return x, x_recon + + return x, x_recon, x_dwt, x_dwt_rec, posterior + + + @classmethod + def load_from_checkpoint(cls, ckpt_path, device="cpu", strict=False): + """ Load model from checkpoint, initializing args and state_dict """ + checkpoint = torch.load(ckpt_path, map_location=device) + + if "args" not in checkpoint: + raise ValueError("Checkpoint does not contain 'args'. Ensure the checkpoint is saved correctly.") + + args = argparse.Namespace(**checkpoint["args"]) + + model = cls(args) + if "state_dict" in checkpoint: + msg = model.load_state_dict(checkpoint["state_dict"], strict=strict) + print(f"Successfully loaded weights from {ckpt_path}, {msg}") + return model + + @staticmethod + def add_model_specific_args(parent_parser): + parser = argparse.ArgumentParser(parents=[parent_parser], add_help=False) + + # Model architecture parameters + parser.add_argument("--embedding_dim", type=int, default=512, help="Dimension of the embedding space.") + parser.add_argument("--latent_dim", type=int, default=4, help="Dimension of the latent channel.") + parser.add_argument("--ista_iter_num", type=int, default=2, help="Number of iterations in ISTA latent bottleneck.") + parser.add_argument("--ista_layer_num", type=int, default=2, help="Number of layers in ISTA latent bottleneck.") + + parser.add_argument("--l_dim", type=int, default=128) + parser.add_argument("--h_dim", type=int, default=384) + parser.add_argument("--sep_num_layer", type=int, default=2, help="Number of separate processing layers in encoder/decoder.") + parser.add_argument("--fusion_num_layer", type=int, default=4, help="Number of fusion layers in encoder/decoder.") + + # Tiling inference (for memory-efficient processing) + parser.add_argument("--use_tile_inference", action="store_true", help="Enable tiling inference to process video in chunks.") + parser.add_argument("--chunksize_enc", type=int, default=9, help="Number of frames per chunk during tiled encoding.") + parser.add_argument("--chunksize_dec", type=int, default=5, help="Number of frames per chunk during tiled decoding.") + return parser diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/autoencoder_pl.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/autoencoder_pl.py new file mode 100644 index 0000000000000000000000000000000000000000..96b58ae98017752e18b096e985e18650b65668be --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/autoencoder_pl.py @@ -0,0 +1,232 @@ +import argparse +import numpy as np +from PIL import Image +import pytorch_lightning as pl +import torch +import torch.distributed +import torch.nn as nn +import torch.nn.functional as F +from timm.scheduler.cosine_lr import CosineLRScheduler +from timm.models.layers import trunc_normal_ +from .autoencoder import LeanVAE +from ..modules import LPIPS +from ..utils.gan_loss import AdversarialLoss + +class AutoEncoderEngine(pl.LightningModule): + def __init__(self, args, data): + super().__init__() + self.args = args + self.video_data = data + + self.autoencoder = LeanVAE(args=args) + + self.automatic_optimization = False + self.kl_weight = args.kl_weight + self.discriminator_iter_start = args.discriminator_iter_start + + self.perceptual_weight = args.perceptual_weight + self.l1_weight = args.l1_weight + + self.automatic_optimization = False + self.grad_clip_val = args.grad_clip_val + + if not hasattr(args, "grad_clip_val_disc"): + args.grad_clip_val_disc = 1.0 + + self.grad_clip_val_disc = args.grad_clip_val_disc + + self.apply(self._init_weights) + self.perceptual_model = LPIPS().eval() + self.perceptual_model.requires_grad_(False) + self.gan_loss = AdversarialLoss(disc_weight=args.disc_weight) + self.save_hyperparameters() + + def _init_weights(self, m): + if isinstance(m, nn.Linear): + trunc_normal_(m.weight, std=.02) + if isinstance(m, nn.Linear) and m.bias is not None: + nn.init.constant_(m.bias, 0) + elif isinstance(m, nn.LayerNorm): + if m.bias is not None: + nn.init.constant_(m.bias, 0) + if m.weight is not None: + nn.init.constant_(m.weight, 1.0) + + elif isinstance(m, nn.Conv3d) or isinstance(m, nn.Conv2d): + nn.init.xavier_uniform_(m.weight) + nn.init.zeros_(m.bias) + + + def forward(self, x, optimizer_idx=None, x_recon = None, log_image=False): + if log_image: + return self.autoencoder(x, log_image) + + if optimizer_idx == 1: + discloss = self.gan_loss(inputs=x, reconstructions=x_recon, optimizer_idx=1) + self.log("train/discloss", discloss, prog_bar=True, logger=True, on_step=True, on_epoch=True) + return discloss + + elif optimizer_idx == 0: + assert x.ndim == 5 + B, C, T, H, W = x.shape + x, x_recon, x_dwt, x_dwt_rec, posterior = self.autoencoder(x) + recon_loss = F.l1_loss(x_recon, x)* self.l1_weight + kl_loss = posterior.kl() + kl_loss = torch.sum(kl_loss) / kl_loss.shape[0] * self.kl_weight + + g_loss = 0.0 + if self.global_step >= self.discriminator_iter_start: + g_loss = self.gan_loss(x, x_recon, optimizer_idx=0) + self.log("train/g_loss", g_loss, prog_bar=True, logger=True, on_step=True, on_epoch=True) + + recon_loss_low = (F.l1_loss(x_dwt_rec[0][:, :3], x_dwt[0][:, :3]) + F.l1_loss(x_dwt_rec[1][:, :3], x_dwt[1][:, :3])) * self.l1_weight * 0.05 + recon_loss_high = (F.l1_loss(x_dwt_rec[0][:, 3:], x_dwt[0][:, 3:])+ F.l1_loss(x_dwt_rec[1][:, 3:], x_dwt[1][:, 3:])) * self.l1_weight * 0.1 + + k = 4 + valid_start_indices = torch.tensor([x for x in range(T - k + 1) if x % 4 == 1]) + start_idx = valid_start_indices[torch.randint(0, len(valid_start_indices), (B,))] + frame_idx = start_idx.unsqueeze(1) + torch.arange(k) + frame_idx = torch.cat((torch.zeros((B, 1), dtype=torch.int), frame_idx), dim=1).to(self.device) + + frame_idx_selected = frame_idx.reshape(-1, 1, k+1, 1, 1).repeat(1, C, 1, H, W) + frames = torch.gather(x, 2, frame_idx_selected) + frames_recon = torch.gather(x_recon, 2, frame_idx_selected) + frames = frames.permute(0, 2, 1, 3, 4).contiguous().view(-1, 3, H, W) + frames_recon = frames_recon.permute(0, 2, 1, 3, 4).contiguous().view(-1, 3, H, W) + perceptual_loss = self.perceptual_model(frames, frames_recon).mean() * self.perceptual_weight + + self.log("train/recon_loss", recon_loss, prog_bar=True, logger=True, on_step=True, on_epoch=True) + self.log("train/kl_loss", kl_loss, prog_bar=True, logger=True, on_step=True, on_epoch=True) + self.log("train/recon_loss_low", recon_loss_low, prog_bar=True, logger=True, on_step=True, on_epoch=True) + self.log("train/recon_loss_high", recon_loss_high, prog_bar=True, logger=True, on_step=True, on_epoch=True) + self.log("train/perceptual_loss", perceptual_loss, prog_bar=True, logger=True, on_step=True, on_epoch=True) + return perceptual_loss + recon_loss + recon_loss_low + recon_loss_high + kl_loss + g_loss, x_recon + + return perceptual_loss, recon_loss, kl_loss + + + def training_step(self, batch, batch_idx): + + x = batch[0]['video'] + cur_global_step = self.global_step + + sch1, sch2 = self.lr_schedulers() + opt1, opt2 = self.optimizers() + + cur_global_step = self.global_step + + self.toggle_optimizer(opt1, optimizer_idx=0) + loss_generator, x_recon = self.forward(x, optimizer_idx=0) + opt1.zero_grad() + self.manual_backward(loss_generator) + if self.grad_clip_val is not None: + self.clip_gradients(opt1, gradient_clip_val=self.grad_clip_val) + opt1.step() + sch1.step(cur_global_step) + self.untoggle_optimizer(optimizer_idx=0) + + if cur_global_step > self.discriminator_iter_start: + self.toggle_optimizer(opt2, optimizer_idx=1) + loss_discriminator = self.forward(x, optimizer_idx=1, x_recon=x_recon) + + opt2.zero_grad() + self.manual_backward(loss_discriminator) + + if self.grad_clip_val_disc is not None: + self.clip_gradients(opt2, gradient_clip_val=self.grad_clip_val_disc) + opt2.step() + sch2.step(cur_global_step) + self.untoggle_optimizer(optimizer_idx=1) + + + def validation_step(self, batch, batch_idx): + x = batch['video'] + perceptual_loss, recon_loss, kl_loss = self.forward(x) + self.log('val/recon_loss', recon_loss, prog_bar=True) + self.log('val/perceptual_loss', perceptual_loss, prog_bar=True) + self.log("val/kl_loss", kl_loss, prog_bar=True) + + def train_dataloader(self): + dataloaders = self.video_data._dataloader(train=True) + return dataloaders + + def val_dataloader(self): + return self.video_data._dataloader(False)[0] + + def configure_optimizers(self): + opt_ae = torch.optim.Adam(self.autoencoder.parameters(), + lr=self.args.lr, betas=(0.5, 0.9)) + + opt_disc = torch.optim.Adam( + self.gan_loss.get_trainable_parameters(), + lr=self.args.lr_min, betas=(0.5, 0.9)) + + lr_min = self.args.lr_min + train_iters = self.args.max_steps - self.discriminator_iter_start + warmup_steps = self.args.warmup_steps + warmup_lr_init = self.args.warmup_lr_init + + + sch_ae = CosineLRScheduler( + opt_ae, + lr_min = lr_min, + t_initial = train_iters, + warmup_lr_init=warmup_lr_init, + warmup_t=warmup_steps, + cycle_mul = 1., + cycle_limit=1, + t_in_epochs=True, + ) + + sch_disc = CosineLRScheduler( + opt_disc, + lr_min = lr_min , + t_initial = train_iters, + warmup_lr_init=warmup_lr_init, + warmup_t= self.args.dis_warmup_steps, + cycle_mul = 1., + cycle_limit=1, + t_in_epochs=True, + ) + + + return [opt_ae, opt_disc], [{"scheduler": sch_ae, "interval": "step"}, {"scheduler": sch_disc, "interval": "step"}] + + + + def log_videos(self, batch, **kwargs): + log = dict() + if isinstance(batch, list): + batch = batch[0] + x = batch['video'] + x, x_rec = self(x, log_image=True) + log["inputs"] = x + log["reconstructions"] = x_rec + return log + + @staticmethod + def add_model_specific_args(parent_parser): + parser = argparse.ArgumentParser(parents=[parent_parser], add_help=False) + + # training configurations + parser.add_argument('--lr', type=float, default=5e-5) + parser.add_argument('--lr_min', type=float, default=1e-5) + parser.add_argument('--warmup_steps', type=int, default=5000) + parser.add_argument('--warmup_lr_init', type=float, default=0.) + parser.add_argument('--grad_clip_val', type=float, default=1.0) + parser.add_argument('--grad_clip_val_disc', type=float, default=1.0) + + + parser.add_argument('--kl_weight', type=float, default=1e-7) + parser.add_argument('--perceptual_weight', type=float, default=4.) + parser.add_argument('--l1_weight', type=float, default=4.) + parser.add_argument('--disc_weight', type=float, default=0.2) + + # configuration for discriminator + parser.add_argument('--dis_warmup_steps', type=int, default=0) + parser.add_argument('--discriminator_iter_start', type=int, default=0) + parser.add_argument('--dis_lr_multiplier', type=float, default=1.) + + return parser + + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__init__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..72c215a154db4c7fd24fff62fcc897712e5339ed --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__init__.py @@ -0,0 +1,3 @@ +from .lpips import LPIPS +from .backbones import * +from .vae import DiagonalGaussianDistribution \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/__init__.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e7f3a5298b6a10e1f5634d1f5c64c619def31d68 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/__init__.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/__init__.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ff1fdc23d4232b90c50a1fab293a4d68d29f74f4 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/__init__.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/__init__.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..777b6f693761438bd9063db09e92669d7a279297 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/__init__.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/backbones.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/backbones.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d1139437363db0829513b50a89ed14f5dc35500b Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/backbones.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/backbones.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/backbones.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fe435972222e62a8c2d97a38c11b8a742fe71511 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/backbones.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/backbones.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/backbones.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dfeb9443cbfb7e076b27f5d6891c64171b8d4f80 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/backbones.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/discriminator.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/discriminator.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..929d70ec1dcd79adc745d497f5376b2516ba5110 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/discriminator.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/discriminator.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/discriminator.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3f273df41df605b69d17617d0692247c9ee7c676 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/discriminator.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/discriminator.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/discriminator.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f7368a40f5cfcd4a195f83c4b3c6b3bc83bcad47 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/discriminator.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/lpips.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/lpips.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c4156fc36adacdf693d7006f30382da85de0af65 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/lpips.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/lpips.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/lpips.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..877219b76698e42ff1a8145c0a3a84a79bb6f8e3 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/lpips.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/lpips.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/lpips.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5e1b110f33914e838a427c2da60d16f5e3362383 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/lpips.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/vae.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/vae.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1c5cd84df9b2f0fc13981d8e1b16c65aa2d69875 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/vae.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/vae.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/vae.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8ac7563bcc3e9a477cd0142d5a19f32dbe49d25e Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/vae.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/vae.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/vae.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..11e65e4b8d20aedff6393fbd31068d9fffcc9700 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/vae.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/backbones.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/backbones.py new file mode 100644 index 0000000000000000000000000000000000000000..606edd41e164046c71da3ba2a9d540fbe9341abc --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/backbones.py @@ -0,0 +1,402 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F +from beartype import beartype +from typing import Tuple +from einops import rearrange, repeat +from einops.layers.torch import Rearrange +import numpy as np + +def exists(val): + return val is not None + +def default(val, d): + if exists(val): + return val + return d() if callable(d) else d + +class PEG3D(nn.Module): + def __init__( + self, + dim + ): + super().__init__() + self.ds_conv = nn.Conv3d(in_channels=dim, out_channels=dim, kernel_size=(3,3,3), groups = dim) + self.is_first_chunk = True + self.causal_cached = None + self.tile_inference = False + + def forward(self, x): + x = rearrange(x, 'b t h w d -> b d t h w') + if self.tile_inference: + if self.is_first_chunk: + x = F.pad(x, (1, 1, 1, 1, 2, 0), value=0.) + else: + x = F.pad(x, (1, 1, 1, 1, 0, 0), value=0.) + x = torch.concatenate((self.causal_cached, x), dim=2) + + self.causal_cached = x[:, :, -2:].clone() + else: + x = F.pad(x, (1, 1, 1, 1, 2, 0), value=0.) + x = self.ds_conv(x.contiguous()) + x = rearrange(x, 'b d t h w -> b t h w d') + return x + + +class GEGLU(nn.Module): + def forward(self, x): + x, gate = x.chunk(2, dim=-1) + return F.gelu(gate) * x + + +def ffd(dim, mult=4, dropout=0.): + inner_dim = int(mult * (2 / 3) * dim) + return nn.Sequential( + nn.LayerNorm(dim), + nn.Linear(dim, inner_dim * 2, bias=False), + GEGLU(), + nn.Dropout(dropout), + nn.Linear(inner_dim, dim, bias=False) + ) + + +class NAF(nn.Module): + def __init__(self, + num_layer, + dim, + ): + super(NAF, self).__init__() + self.num_layer = num_layer + self.dconv_layer = nn.Sequential() + self.ffd_layer = nn.Sequential() + for _ in range(num_layer): + self.ffd_layer.append(ffd(dim, 4)) + self.dconv_layer.append(PEG3D(dim)) + + def forward(self, x): + for i in range(self.num_layer): + x = self.dconv_layer[i](x) + x = self.ffd_layer[i](x) + return x + + +class ResNAF(nn.Module): + def __init__(self, + num_layer, + dim, + ): + super(ResNAF, self).__init__() + self.num_layer = num_layer + self.dconv_layer = nn.Sequential() + self.ffd_layer = nn.Sequential() + for _ in range(num_layer): + self.ffd_layer.append(ffd(dim, 4)) + self.dconv_layer.append(PEG3D(dim)) + + def forward(self, x): + for i in range(self.num_layer): + x = x + self.dconv_layer[i](x) + x = x + self.ffd_layer[i](x) + return x + + +class Encoder_Arch(nn.Module): + def __init__(self, + l_dim = 128, + h_dim = 384, + sep_num_layer = 2, + fusion_num_layer = 4, + patch_size = (2,4,4), + in_channel = 3 + ): + super(Encoder_Arch, self).__init__() + + self.is_first_chunk = True + self.tile_inference = False + + self.in_channel = in_channel + + self._build_linear_patch(in_channel=in_channel, out_channel_low=l_dim, out_channel_high=h_dim, pt=patch_size[0], ph=patch_size[1], pw=patch_size[2]) + + self.low_layer = ResNAF(num_layer=sep_num_layer, dim=l_dim) + self.high_layer = ResNAF(num_layer=sep_num_layer, dim=h_dim) + self.fusion_layer = ResNAF(num_layer=fusion_num_layer, dim=l_dim + h_dim) + + def _build_linear_patch(self, in_channel = 3, out_channel_low = 128, out_channel_high = 384, pt = 2, ph = 4, pw = 4): + patch_config = { + 'video_low': (pt, ph, pw), + 'video_high': (pt, ph, pw), + 'image_low': (1, ph, pw), + 'image_high': (1, ph, pw) + } + + for name, (t, h, w) in patch_config.items(): + if 'low' in name: + in_dim = in_channel * t * h * w + out_dim = out_channel_low + else: + out_dim = out_channel_high + in_dim = in_channel * t * h * w * 7 if 'video' in name else in_channel * t * h * w * 3 + proj = nn.Sequential( + Rearrange(f'b c (nt {t}) (nh {h}) (nw {w}) -> b nt nh nw (c {t} {h} {w})' if 'video' in name else f'b c (nh {h}) (nw {w}) -> b 1 nh nw (c {h} {w})'), + nn.Linear(in_dim, out_dim) + ) + self.add_module(f"{name}_proj", proj) + + + def _linear_patch(self, x, proj_type): + low_comp, high_comp = x[:, :self.in_channel], x[:, self.in_channel:] + return getattr(self, f"{proj_type}_low_proj")(low_comp), getattr(self, f"{proj_type}_high_proj")(high_comp) + + def forward(self, x): + xi, xv = x + xi_low, xi_high = self._linear_patch(xi, 'image') + xv_low, xv_high = self._linear_patch(xv, 'video') + + low_x = torch.cat([xi_low, xv_low], dim=1) + high_x = torch.cat([xi_high, xv_high], dim=1) + + high_x = self.high_layer(high_x) + low_x = self.low_layer(low_x) + x = torch.cat([low_x, high_x], dim=-1) + x = self.fusion_layer(x) + return x + + + + def encode(self, x): + xi, xv = x + if xi is not None and xv is not None: + xi_low, xi_high = self._linear_patch(xi, 'image') + xv_low, xv_high = self._linear_patch(xv, 'video') + + low_x = torch.cat([xi_low, xv_low], dim=1) + high_x = torch.cat([xi_high, xv_high], dim=1) + elif xi is not None: + low_x, high_x = self._linear_patch(xi, 'image') + elif xv is not None: + low_x, high_x = self._linear_patch(xv, 'video') + + high_x = self.high_layer(high_x) + low_x = self.low_layer(low_x) + x = torch.cat([low_x, high_x], dim=-1) + x = self.fusion_layer(x) + return x + + + +class Encoder_Arch(nn.Module): + def __init__(self, + l_dim = 128, + h_dim = 384, + sep_num_layer = 2, + fusion_num_layer = 4, + patch_size = (2,4,4), + in_channel = 3 + ): + super(Encoder_Arch, self).__init__() + + self.is_first_chunk = True + self.tile_inference = False + + self.in_channel = in_channel + + self._build_linear_patch(in_channel=in_channel, out_channel_low=l_dim, out_channel_high=h_dim, pt=patch_size[0], ph=patch_size[1], pw=patch_size[2]) + + self.low_layer = ResNAF(num_layer=sep_num_layer, dim=l_dim) + self.high_layer = ResNAF(num_layer=sep_num_layer, dim=h_dim) + self.fusion_layer = ResNAF(num_layer=fusion_num_layer, dim=l_dim + h_dim) + + def _build_linear_patch(self, in_channel = 3, out_channel_low = 128, out_channel_high = 384, pt = 2, ph = 4, pw = 4): + patch_config = { + 'video_low': (pt, ph, pw), + 'video_high': (pt, ph, pw), + 'image_low': (1, ph, pw), + 'image_high': (1, ph, pw) + } + + for name, (t, h, w) in patch_config.items(): + if 'low' in name: + in_dim = in_channel * t * h * w + out_dim = out_channel_low + else: + out_dim = out_channel_high + in_dim = in_channel * t * h * w * 7 if 'video' in name else in_channel * t * h * w * 3 + proj = nn.Sequential( + Rearrange('b c (nt pt) (nh ph) (nw pw) -> b nt nh nw (c pt ph pw)', pt=t, ph=h, pw=w), + nn.Linear(in_dim, out_dim) + ) + self.add_module(f"{name}_proj", proj) + + + def _linear_patch(self, x, proj_type): + low_comp, high_comp = x[:, :self.in_channel], x[:, self.in_channel:] + return getattr(self, f"{proj_type}_low_proj")(low_comp), getattr(self, f"{proj_type}_high_proj")(high_comp) + + def _feature_transform(self, low_x, high_x): + low_x = self.low_layer(low_x) + high_x = self.high_layer(high_x) + x = torch.cat([low_x, high_x], dim=-1) + x = self.fusion_layer(x) + return x + + def forward(self, x): + xi, xv = x + xi_low, xi_high = self._linear_patch(x=xi, proj_type='image') + xv_low, xv_high = self._linear_patch(x=xv, proj_type='video') + + low_x = torch.cat([xi_low, xv_low], dim=1) + high_x = torch.cat([xi_high, xv_high], dim=1) + + return self._feature_transform(low_x=low_x, high_x=high_x) + + + + def encode(self, x): + xi, xv = x + if xi is not None and xv is not None: + xi_low, xi_high = self._linear_patch(x=xi, proj_type='image') + xv_low, xv_high = self._linear_patch(x=xv, proj_type='video') + + low_x = torch.cat([xi_low, xv_low], dim=1) + high_x = torch.cat([xi_high, xv_high], dim=1) + elif xi is not None: + low_x, high_x = self._linear_patch(x=xi, proj_type='image') + elif xv is not None: + low_x, high_x = self._linear_patch(x=xv, proj_type='video') + + return self._feature_transform(low_x=low_x, high_x=high_x) + + + +class Decoder_Arch(nn.Module): + def __init__(self, + l_dim = 128, + h_dim = 384, + sep_num_layer = 2, + fusion_num_layer = 4, + patch_size = (2,4,4), + in_channel = 3 + ): + super(Decoder_Arch, self).__init__() + + self.l_dim = l_dim + self.is_first_chunk = True + self.tile_inference = False + + self._build_linear_unpatch(in_channel=in_channel, out_channel_low=l_dim, out_channel_high=h_dim, pt=patch_size[0], ph=patch_size[1], pw=patch_size[2]) + + self.low_layer = ResNAF(num_layer=sep_num_layer, dim=l_dim) + self.high_layer = ResNAF(num_layer=sep_num_layer, dim=h_dim) + self.fusion_layer = ResNAF(num_layer=fusion_num_layer, dim=l_dim + h_dim) + + + def _build_linear_unpatch(self, in_channel = 3, out_channel_low = 128, out_channel_high = 384, pt = 2, ph = 4, pw = 4): + patch_config = { + 'video_low': (pt, ph, pw), + 'video_high': (pt, ph, pw), + 'image_low': (1, ph, pw), + 'image_high': (1, ph, pw) + } + + for name, (t, h, w) in patch_config.items(): + if 'low' in name: + out_dim = in_channel * t * h * w + in_dim = out_channel_low + else: + in_dim = out_channel_high + out_dim = in_channel * t * h * w * 7 if 'video' in name else in_channel * t * h * w * 3 + proj = nn.Sequential( + nn.Linear(in_dim, out_dim), + Rearrange('b nt nh nw (c pt ph pw) -> b c (nt pt) (nh ph) (nw pw)', pt=t, ph=h, pw=w), + ) + self.add_module(f"{name}_proj", proj) + + def _linear_unpatch(self, x, proj_type): + low_comp, high_comp = getattr(self, f"{proj_type}_low_proj")(x[0]), getattr(self, f"{proj_type}_high_proj")(x[1]) + return torch.cat([low_comp, high_comp], dim=1) + + def _feature_transform(self, x): + x = self.fusion_layer(x) + low_x = self.low_layer(x[:,:,:,:,:self.l_dim]) + high_x = self.high_layer(x[:,:,:,:,self.l_dim:]) + + return low_x, high_x + + + def decode(self, x, is_image = False): + low_x, high_x = self._feature_transform(x) + + if is_image: + xi = self._linear_unpatch(x=(low_x, high_x), proj_type='image') + return (xi, None) + + else: + if self.tile_inference and not self.is_first_chunk: + xv = self._linear_unpatch(x=(low_x, high_x), proj_type='video') + return (None, xv) + else: + xi = self._linear_unpatch(x=(low_x[:, :1], high_x[:, :1]), proj_type='image') + xv = self._linear_unpatch(x=(low_x[:, 1:], high_x[:, 1:]), proj_type='video') + return (xi, xv) + + def forward(self, x): + low_x, high_x = self._feature_transform(x) + xi = self._linear_unpatch(x=(low_x[:, :1], high_x[:, :1]), proj_type='image') + xv = self._linear_unpatch(x=(low_x[:, 1:], high_x[:, 1:]), proj_type='video') + return (xi, xv) + +class ISTA(nn.Module): + def __init__(self, + points_num = 512, + out_num = 4, + iter_num = 2, + layer_num = 2, + ): + super(ISTA, self).__init__() + phi_init = np.random.normal(0.0, (1 / points_num) ** 0.5, size=(out_num, points_num)) + self.phi = nn.Parameter(torch.from_numpy(phi_init).float(), requires_grad=True) + self.Q = nn.Parameter(torch.from_numpy(np.transpose(phi_init)).float(), requires_grad=True) + self.iter_num = iter_num + self.forward_l = nn.ModuleList() + self.backward_l = nn.ModuleList() + + for _ in range(self.iter_num): + self.forward_l.append(NAF(num_layer=layer_num, dim=points_num)) + self.backward_l.append(NAF(num_layer=layer_num, dim=points_num)) + + self.weights = nn.ParameterList() + self.etas = nn.ParameterList() + self.threshold = nn.ParameterList() + + for _ in range(self.iter_num): + self.threshold.append(nn.Parameter(torch.Tensor([0.01]), requires_grad=True)) + self.weights.append(nn.Parameter(torch.tensor(1.), requires_grad=True)) + + def sample(self, x): + b, t, h, w, d = x.shape + y = x.view(-1, d) @ self.phi.T + return y.view(b, t, h, w, -1) + + def recon(self, y): + b, t, h, w, c = y.shape + y = y.reshape(-1, c) + recon = torch.mm(y, self.Q.t()) + _, d = recon.shape + for i in range(self.iter_num): + recon_r = recon - self.weights[i] * torch.mm((torch.mm(recon, self.phi.t()) - y), self.phi) + recon = recon_r.reshape(b, t, h, w, -1) + recon = self.forward_l[i](recon) + recon = torch.mul(torch.sign(recon), F.relu(torch.abs(recon) - self.threshold[i])) + + recon = self.backward_l[i](recon).view(-1, d) + recon = recon_r + recon + return recon.view(b, t, h, w, -1) + + + def forward(self, x): + y = self.sample(x) + recon = self.recon(y) + return recon + + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/cache/vgg.pth b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/cache/vgg.pth new file mode 100644 index 0000000000000000000000000000000000000000..f57dcf5cc764d61c8a460365847fb2137ff0a62d --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/cache/vgg.pth @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a78928a0af1e5f0fcb1f3b9e8f8c3a2a5a3de244d830ad5c1feddc79b8432868 +size 7289 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/discriminator.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/discriminator.py new file mode 100644 index 0000000000000000000000000000000000000000..b5b3ee43db5b456649578cc8554cd6993ec3152e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/discriminator.py @@ -0,0 +1,130 @@ +from typing import Any, Union +import torch +import torch.nn as nn +import torch.nn.functional as F +from einops import rearrange +import functools + +class ActNorm(nn.Module): + def __init__(self, num_features, logdet=False, affine=True, allow_reverse_init=False): + assert affine + super().__init__() + self.logdet = logdet + self.loc = nn.Parameter(torch.zeros(1, num_features, 1, 1)) + self.scale = nn.Parameter(torch.ones(1, num_features, 1, 1)) + self.allow_reverse_init = allow_reverse_init + + self.register_buffer("initialized", torch.tensor(0, dtype=torch.uint8)) + + def initialize(self, input): + with torch.no_grad(): + flatten = input.permute(1, 0, 2, 3).contiguous().view(input.shape[1], -1) + mean = flatten.mean(1).unsqueeze(1).unsqueeze(2).unsqueeze(3).permute(1, 0, 2, 3) + std = flatten.std(1).unsqueeze(1).unsqueeze(2).unsqueeze(3).permute(1, 0, 2, 3) + + self.loc.data.copy_(-mean) + self.scale.data.copy_(1 / (std + 1e-6)) + + def forward(self, input, reverse=False): + if reverse: + return self.reverse(input) + if len(input.shape) == 2: + input = input[:, :, None, None] + squeeze = True + else: + squeeze = False + + _, _, height, width = input.shape + + if self.training and self.initialized.item() == 0: + self.initialize(input) + self.initialized.fill_(1) + + h = self.scale * (input + self.loc) + + if squeeze: + h = h.squeeze(-1).squeeze(-1) + + if self.logdet: + log_abs = torch.log(torch.abs(self.scale)) + logdet = height * width * torch.sum(log_abs) + logdet = logdet * torch.ones(input.shape[0]).to(input) + return h, logdet + + return h + + def reverse(self, output): + if self.training and self.initialized.item() == 0: + if not self.allow_reverse_init: + raise RuntimeError( + "Initializing ActNorm in reverse direction is " + "disabled by default. Use allow_reverse_init=True to enable." + ) + else: + self.initialize(output) + self.initialized.fill_(1) + + if len(output.shape) == 2: + output = output[:, :, None, None] + squeeze = True + else: + squeeze = False + + h = output / self.scale - self.loc + + if squeeze: + h = h.squeeze(-1).squeeze(-1) + return h + + + +class NLayerDiscriminator(nn.Module): + """Defines a PatchGAN discriminator as in Pix2Pix.""" + # https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix/blob/master/models/networks.py + def __init__(self, input_nc=3, ndf=64, n_layers=3, use_actnorm=False): + """Construct a PatchGAN discriminator + Parameters: + input_nc (int) -- the number of channels in input images + ndf (int) -- the number of filters in the last conv layer + n_layers (int) -- the number of conv layers in the discriminator + """ + super(NLayerDiscriminator, self).__init__() + if not use_actnorm: + norm_layer = nn.BatchNorm2d + else: + norm_layer = ActNorm + if type(norm_layer) == functools.partial: # no need to use bias as BatchNorm2d has affine parameters + use_bias = norm_layer.func != nn.BatchNorm2d + else: + use_bias = norm_layer != nn.BatchNorm2d + + kw = 4 + padw = 1 + sequence = [nn.Conv2d(input_nc, ndf, kernel_size=kw, stride=2, padding=padw), nn.LeakyReLU(0.2, True)] + nf_mult = 1 + nf_mult_prev = 1 + for n in range(1, n_layers): # gradually increase the number of filters + nf_mult_prev = nf_mult + nf_mult = min(2**n, 8) + sequence += [ + nn.Conv2d(ndf * nf_mult_prev, ndf * nf_mult, kernel_size=kw, stride=2, padding=padw, bias=use_bias), + norm_layer(ndf * nf_mult), + nn.LeakyReLU(0.2, True), + ] + + nf_mult_prev = nf_mult + nf_mult = min(2**n_layers, 8) + sequence += [ + nn.Conv2d(ndf * nf_mult_prev, ndf * nf_mult, kernel_size=kw, stride=1, padding=padw, bias=use_bias), + norm_layer(ndf * nf_mult), + nn.LeakyReLU(0.2, True), + ] + + sequence += [ + nn.Conv2d(ndf * nf_mult, 1, kernel_size=kw, stride=1, padding=padw) + ] # output 1 channel prediction map + self.main = nn.Sequential(*sequence) + + def forward(self, input): + """Standard forward.""" + return self.main(input) \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/lpips.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/lpips.py new file mode 100644 index 0000000000000000000000000000000000000000..c63164f1804b37aa9e9a6739efb0b96138d4fb1b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/lpips.py @@ -0,0 +1,230 @@ +"""Stripped version of https://github.com/richzhang/PerceptualSimilarity/tree/master/models""" + +import os, hashlib +import requests +from tqdm import tqdm + +import torch +import torch.nn as nn +from torchvision import models +from collections import namedtuple +import torchvision +URL_MAP = { + "vgg_lpips": "https://heibox.uni-heidelberg.de/f/607503859c864bc1b30b/?dl=1" +} + +CKPT_MAP = { + "vgg_lpips": "vgg.pth" +} + +MD5_MAP = { + "vgg_lpips": "d507d7349b931f0638a25a48a722f98a" +} + +def download(url, local_path, chunk_size=1024): + os.makedirs(os.path.split(local_path)[0], exist_ok=True) + with requests.get(url, stream=True) as r: + total_size = int(r.headers.get("content-length", 0)) + with tqdm(total=total_size, unit="B", unit_scale=True) as pbar: + with open(local_path, "wb") as f: + for data in r.iter_content(chunk_size=chunk_size): + if data: + f.write(data) + pbar.update(chunk_size) + + +def md5_hash(path): + with open(path, "rb") as f: + content = f.read() + return hashlib.md5(content).hexdigest() + + +def get_ckpt_path(name, root, check=False): + assert name in URL_MAP + path = os.path.join(root, CKPT_MAP[name]) + if not os.path.exists(path) or (check and not md5_hash(path) == MD5_MAP[name]): + print("Downloading {} model from {} to {}".format(name, URL_MAP[name], path)) + download(URL_MAP[name], path) + md5 = md5_hash(path) + assert md5 == MD5_MAP[name], md5 + return path + + +class LPIPS(nn.Module): + # Learned perceptual metric + def __init__(self, use_dropout=True): + super().__init__() + self.scaling_layer = ScalingLayer() + self.chns = [64, 128, 256, 512, 512] # vg16 features + self.net = vgg16(pretrained=True, requires_grad=False) + self.lin0 = NetLinLayer(self.chns[0], use_dropout=use_dropout) + self.lin1 = NetLinLayer(self.chns[1], use_dropout=use_dropout) + self.lin2 = NetLinLayer(self.chns[2], use_dropout=use_dropout) + self.lin3 = NetLinLayer(self.chns[3], use_dropout=use_dropout) + self.lin4 = NetLinLayer(self.chns[4], use_dropout=use_dropout) + self.load_from_pretrained() + for param in self.parameters(): + param.requires_grad = False + + def load_from_pretrained(self, name="vgg_lpips"): + ckpt = get_ckpt_path(name, os.path.join(os.path.dirname(os.path.abspath(__file__)), "cache")) + self.load_state_dict(torch.load(ckpt, map_location=torch.device("cpu")), strict=False) + print("loaded pretrained LPIPS loss from {}".format(ckpt)) + + @classmethod + def from_pretrained(cls, name="vgg_lpips"): + if name is not "vgg_lpips": + raise NotImplementedError + model = cls() + ckpt = get_ckpt_path(name, os.path.join(os.path.dirname(os.path.abspath(__file__)), "cache")) + r = model.load_state_dict(torch.load(ckpt, map_location=torch.device("cpu")), strict=False) + print(r) + return model + + def forward(self, input, target): + in0_input, in1_input = (self.scaling_layer(input), self.scaling_layer(target)) + outs0, outs1 = self.net(in0_input), self.net(in1_input) + feats0, feats1, diffs = {}, {}, {} + lins = [self.lin0, self.lin1, self.lin2, self.lin3, self.lin4] + for kk in range(len(self.chns)): + feats0[kk], feats1[kk] = normalize_tensor(outs0[kk]), normalize_tensor(outs1[kk]) + diffs[kk] = (feats0[kk] - feats1[kk]) ** 2 + + res = [spatial_average(lins[kk].model(diffs[kk]), keepdim=True) for kk in range(len(self.chns))] + val = res[0] + for l in range(1, len(self.chns)): + # print(res[l].shape) + val += res[l] + + return val + + + + + +class ScalingLayer(nn.Module): + def __init__(self): + super(ScalingLayer, self).__init__() + self.register_buffer('shift', torch.Tensor([-.030, -.088, -.188])[None, :, None, None]) + self.register_buffer('scale', torch.Tensor([.458, .448, .450])[None, :, None, None]) + + def forward(self, inp): + return (inp - self.shift) / self.scale + + +class NetLinLayer(nn.Module): + """ A single linear layer which does a 1x1 conv """ + def __init__(self, chn_in, chn_out=1, use_dropout=False): + super(NetLinLayer, self).__init__() + layers = [nn.Dropout(), ] if (use_dropout) else [] + layers += [nn.Conv2d(chn_in, chn_out, 1, stride=1, padding=0, bias=False), ] + self.model = nn.Sequential(*layers) + + +class vgg16(torch.nn.Module): + def __init__(self, requires_grad=False, pretrained=True): + super(vgg16, self).__init__() + vgg_pretrained_features = models.vgg16(pretrained=pretrained).features + self.slice1 = torch.nn.Sequential() + self.slice2 = torch.nn.Sequential() + self.slice3 = torch.nn.Sequential() + self.slice4 = torch.nn.Sequential() + self.slice5 = torch.nn.Sequential() + self.N_slices = 5 + for x in range(4): + self.slice1.add_module(str(x), vgg_pretrained_features[x]) + for x in range(4, 9): + self.slice2.add_module(str(x), vgg_pretrained_features[x]) + for x in range(9, 16): + self.slice3.add_module(str(x), vgg_pretrained_features[x]) + for x in range(16, 23): + self.slice4.add_module(str(x), vgg_pretrained_features[x]) + for x in range(23, 30): + self.slice5.add_module(str(x), vgg_pretrained_features[x]) + if not requires_grad: + for param in self.parameters(): + param.requires_grad = False + + def forward(self, X): + h = self.slice1(X) + h_relu1_2 = h + h = self.slice2(h) + h_relu2_2 = h + h = self.slice3(h) + h_relu3_3 = h + h = self.slice4(h) + h_relu4_3 = h + h = self.slice5(h) + h_relu5_3 = h + vgg_outputs = namedtuple("VggOutputs", ['relu1_2', 'relu2_2', 'relu3_3', 'relu4_3', 'relu5_3']) + out = vgg_outputs(h_relu1_2, h_relu2_2, h_relu3_3, h_relu4_3, h_relu5_3) + return out + + +def normalize_tensor(x,eps=1e-10): + norm_factor = torch.sqrt(torch.sum(x**2,dim=1,keepdim=True)) + return x/(norm_factor+eps) + + +def spatial_average(x, keepdim=True): + return x.mean([2,3],keepdim=keepdim) + + +class ResNetLPIPS(nn.Module): + # Learned perceptual metric + def __init__(self, use_dropout=True): + super().__init__() + net, _ = clip.load(device='cpu', name='RN50') + self.net = net.visual + self.net.attnpool = nn.Identity() + for param in self.parameters(): + param.requires_grad = False + + def forward(self, input, target): + + outs0, outs1 = self.net(input), self.net(target) + #feats0, feats1= normalize_tensor(outs0), normalize_tensor(outs1) + diffs = ((outs0 - outs1) ** 2 ) #(feats0 - feats1) ** 2 + + return diffs + + +class MeanShift(nn.Conv2d): + def __init__(self, data_mean, data_std, data_range=1, norm=True): + c = len(data_mean) + super(MeanShift, self).__init__(c, c, kernel_size=1) + std = torch.Tensor(data_std) + self.weight.data = torch.eye(c).view(c, c, 1, 1) + if norm: + self.weight.data.div_(std.view(c, 1, 1, 1)) + self.bias.data = -1 * data_range * torch.Tensor(data_mean) + self.bias.data.div_(std) + else: + self.weight.data.mul_(std.view(c, 1, 1, 1)) + self.bias.data = data_range * torch.Tensor(data_mean) + self.requires_grad = False + +class VGGPerceptualLoss(torch.nn.Module): + def __init__(self, rank): + super(VGGPerceptualLoss, self).__init__() + blocks = [] + pretrained = True + self.vgg_pretrained_features = models.vgg19(pretrained=pretrained).features + self.normalize = MeanShift([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], norm=True).to(rank) + for param in self.parameters(): + param.requires_grad = False + + def forward(self, Y, X, indices=None): + X = self.normalize(X) + Y = self.normalize(Y) + indices = [2, 7, 12, 21, 30] + weights = [1.0/2.6, 1.0/4.8, 1.0/3.7, 1.0/5.6, 10/1.5] + k = 0 + loss = 0 + for i in range(indices[-1]): + X = self.vgg_pretrained_features[i](X) + Y = self.vgg_pretrained_features[i](Y) + if (i+1) in indices: + loss += weights[k] * (X - Y.detach()).abs().mean() * 0.1 + k += 1 + return loss \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/vae.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/vae.py new file mode 100644 index 0000000000000000000000000000000000000000..7acc228efac8a8b318fff172d0cefc8fe686a93a --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/vae.py @@ -0,0 +1,73 @@ +import torch +import numpy as np + +class DiagonalGaussianDistribution(object): + def __init__(self, parameters, deterministic=False): + self.parameters = parameters + self.mean, self.logvar = parameters #torch.chunk(parameters, 2, dim=1) + self.logvar = torch.clamp(self.logvar, -30.0, 20.0) + self.deterministic = deterministic + self.std = torch.exp(0.5 * self.logvar) + self.var = torch.exp(self.logvar) + if self.deterministic: + self.var = self.std = torch.zeros_like(self.mean).to(device=self.mean.device) + + def sample(self): + x = self.mean + self.std * torch.randn(self.mean.shape).to(device=self.mean.device) + return x + + def kl(self, other=None): + if self.deterministic: + return torch.Tensor([0.]) + else: + if other is None: + return 0.5 * torch.sum(torch.pow(self.mean, 2) + + self.var - 1.0 - self.logvar, + dim=[1, 2, 3]) + else: + return 0.5 * torch.sum( + torch.pow(self.mean - other.mean, 2) / other.var + + self.var / other.var - 1.0 - self.logvar + other.logvar, + dim=[1, 2, 3]) + + def nll(self, sample, dims=[1,2,3]): + if self.deterministic: + return torch.Tensor([0.]) + logtwopi = np.log(2.0 * np.pi) + return 0.5 * torch.sum( + logtwopi + self.logvar + torch.pow(sample - self.mean, 2) / self.var, + dim=dims) + + def mode(self): + return self.mean + + + +def normal_kl(mean1, logvar1, mean2, logvar2): + """ + source: https://github.com/openai/guided-diffusion/blob/27c20a8fab9cb472df5d6bdd6c8d11c8f430b924/guided_diffusion/losses.py#L12 + Compute the KL divergence between two gaussians. + Shapes are automatically broadcasted, so batches can be compared to + scalars, among other use cases. + """ + tensor = None + for obj in (mean1, logvar1, mean2, logvar2): + if isinstance(obj, torch.Tensor): + tensor = obj + break + assert tensor is not None, "at least one argument must be a Tensor" + + # Force variances to be Tensors. Broadcasting helps convert scalars to + # Tensors, but it does not work for torch.exp(). + logvar1, logvar2 = [ + x if isinstance(x, torch.Tensor) else torch.tensor(x).to(tensor) + for x in (logvar1, logvar2) + ] + + return 0.5 * ( + -1.0 + + logvar2 + - logvar1 + + torch.exp(logvar1 - logvar2) + + ((mean1 - mean2) ** 2) * torch.exp(-logvar2) + ) \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__init__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/__init__.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..674b85897defb9d70a00191b91ff4fa272d7b692 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/__init__.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/__init__.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..27723ca230056db794ffdcd7c4218af4d7bd9b08 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/__init__.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/__init__.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7fd8e8baefcb3778cb0c183945fdc040c828cf85 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/__init__.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/gan_loss.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/gan_loss.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7225eea2560a8e735e34b3982588a3f89b16efa9 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/gan_loss.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/gan_loss.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/gan_loss.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..93fced6eaece8d301e322dfd3db7835db9ee67e6 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/gan_loss.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/gan_loss.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/gan_loss.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..563323de4ff818a556356aa7c217650aa96bde0a Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/gan_loss.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/patcher_utils.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/patcher_utils.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a0292a40772692f6522f7e8a584d3d0f9cda7813 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/patcher_utils.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/patcher_utils.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/patcher_utils.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..84f2516b365695044402c47c3118248316e903d1 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/patcher_utils.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/patcher_utils.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/patcher_utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a48816f2f23e8497c64c68ccae7781582c005e48 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/patcher_utils.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/video_utils.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/video_utils.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f0627719bde6ef77680c75f737c95db7cfeaa8fc Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/video_utils.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/callbacks.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/callbacks.py new file mode 100644 index 0000000000000000000000000000000000000000..7e7d4fa62a683e079a3e5b41f3644bd836ee9f19 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/callbacks.py @@ -0,0 +1,120 @@ +import os +import numpy as np +from PIL import Image + +import torch +import torchvision +from pytorch_lightning.callbacks import Callback +from pytorch_lightning.utilities.distributed import rank_zero_only + +import random +from .utils import save_video_grid + + + +class VideoLogger(Callback): + def __init__(self, batch_frequency, max_videos, clamp=True, increase_log_steps=True): + super().__init__() + self.batch_freq = batch_frequency + self.max_videos = max_videos + self.log_steps = [2 ** n for n in range(int(np.log2(self.batch_freq)) + 1)] + if not increase_log_steps: + self.log_steps = [self.batch_freq] + self.clamp = clamp + + + @rank_zero_only + def log_local(self, save_dir, split, videos, + global_step, current_epoch, batch_idx): + root = os.path.join(save_dir, "videos", split) + for k in videos: + grid = videos[k] + 0.5 + filename = "gs-{:06}_e-{:06}_b-{:06}_{}.mp4".format( + global_step, + current_epoch, + batch_idx, + k) + path = os.path.join(root, filename) + os.makedirs(os.path.split(path)[0], exist_ok=True) + save_video_grid(grid, path) + + def log_vid(self, pl_module, batch, batch_idx, split="train"): + # print(batch_idx, self.batch_freq, self.check_frequency(batch_idx) and hasattr(pl_module, "log_videos") and callable(pl_module.log_videos) and self.max_videos > 0) + if (self.check_frequency(batch_idx) and # batch_idx % self.batch_freq == 0 + hasattr(pl_module, "log_videos") and + callable(pl_module.log_videos) and + self.max_videos > 0): + # print(batch_idx, self.batch_freq, self.check_frequency(batch_idx)) + logger = type(pl_module.logger) + + is_train = pl_module.training + if is_train: + pl_module.eval() + + with torch.no_grad(): + videos = pl_module.log_videos(batch, split=split, batch_idx=batch_idx) + + for k in videos: + N = min(videos[k].shape[0], self.max_videos) + videos[k] = videos[k][:N] + if isinstance(videos[k], torch.Tensor): + videos[k] = videos[k].detach().cpu() + if self.clamp: + videos[k] = torch.clamp(videos[k], -0.5, 0.5) + + self.log_local(pl_module.logger.save_dir, split, videos, + pl_module.global_step, pl_module.current_epoch, batch_idx) + + if is_train: + pl_module.train() + + def check_frequency(self, batch_idx): + if (batch_idx % self.batch_freq) == 0 or (batch_idx in self.log_steps): + try: + self.log_steps.pop(0) + except IndexError: + pass + return True + return False + + def on_train_batch_end(self, trainer, pl_module, outputs, batch, batch_idx, dataloader_idx): + if batch[0]['video'].ndim == 4: + return + self.log_vid(pl_module, batch, batch_idx, split="train") + + def on_validation_batch_end(self, trainer, pl_module, outputs, batch, batch_idx, dataloader_idx): + self.log_vid(pl_module, batch, batch_idx, split="val") + + +class DatasetCallback(Callback): + def __init__(self, initial_batch_size, new_batch_size, step_threshold): + self.initial_batch_size = initial_batch_size + self.new_batch_size = new_batch_size + self.step_threshold = step_threshold + + def on_train_batch_start(self, trainer, pl_module, batch, batch_idx, dataloader_idx): + if trainer.global_step == self.step_threshold: + # 更新 DataLoader 的 batch_size + trainer.train_dataloader = trainer.video_data._dataloader(train=True, batch_size=self.new_batch_size) # self.new_batch_size + print(f'Batch size changed to {self.new_batch_size} at step {self.step_threshold}') + # def __init__(self): + # self.seqlen_list = [17, 21, 17, 25, 21, 29, 33, 17, 21, 17] + +# #临时取消 + +# def on_batch_start(self, trainer, pl_module): +# seq_len = random.randint(0, 9) +# trainer.train_dataloader.dataset.datasets[0].sequence_length = self.seqlen_list[seq_len] + +# def on_train_batch_start(self, trainer, pl_module, outputs, batch, batch_idx, dataloader_idx): +# seq_len = batch_idx % 10 +# trainer.train_dataloader.dataset.datasets[dataloader_idx].sequence_length = self.seqlen_list[seq_len] +# return +# #为啥上面那个没报错 下边那个报错说是list呢?? +# def on_epoch_end(self, trainer, pl_module): +# with open('tmp_shape2.txt', 'a') as f: +# print(trainer.current_epoch, file=f ) +# #trainer.train_dataloader[0].sampler.set_epoch(trainer.current_epoch) +# return + + \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/gan_loss.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/gan_loss.py new file mode 100644 index 0000000000000000000000000000000000000000..471c1f56ec17164ef871239460b8b600c4146425 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/gan_loss.py @@ -0,0 +1,147 @@ +from typing import Any, Union +import torch +import torch.nn as nn +import torch.nn.functional as F +from einops import rearrange +import functools +from ..modules.discriminator import NLayerDiscriminator + +def hinge_d_loss(logits_real, logits_fake): + loss_real = torch.mean(F.relu(1.0 - logits_real)) + loss_fake = torch.mean(F.relu(1.0 + logits_fake)) + d_loss = 0.5 * (loss_real + loss_fake) + return d_loss + + +def vanilla_d_loss(logits_real, logits_fake): + d_loss = 0.5 * (torch.mean(F.softplus(-logits_real)) + torch.mean(F.softplus(logits_fake))) + return d_loss + + +def adopt_weight(weight, global_step, threshold=0, value=0.0): + if global_step < threshold: + weight = value + return weight + + +def _sigmoid_cross_entropy_with_logits(labels, logits): + """ + non-saturating loss + """ + zeros = torch.zeros_like(logits, dtype=logits.dtype) + condition = logits >= zeros + relu_logits = torch.where(condition, logits, zeros) + neg_abs_logits = torch.where(condition, -logits, logits) + return relu_logits - logits * labels + torch.log1p(torch.exp(neg_abs_logits)) + + +def non_saturate_gen_loss(logits_fake): + """ + logits_fake: [B 1 H W] + """ + B = logits_fake.shape[0] + logits_fake = logits_fake.reshape(B, -1) + logits_fake = torch.mean(logits_fake, dim=-1) + gen_loss = torch.mean(_sigmoid_cross_entropy_with_logits(labels=torch.ones_like(logits_fake), logits=logits_fake)) + return gen_loss + + +def lecam_reg(real_pred, fake_pred, lecam_ema): + reg = torch.mean(F.relu(real_pred - lecam_ema.logits_fake_ema).pow(2)) + torch.mean( + F.relu(lecam_ema.logits_real_ema - fake_pred).pow(2) + ) + return reg + + +class LeCAM_EMA(object): + # https://github.com/TencentARC/SEED-Voken/blob/main/src/Open_MAGVIT2/modules/losses/vqperceptual.py + def __init__(self, init=0.0, decay=0.999): + self.logits_real_ema = init + self.logits_fake_ema = init + self.decay = decay + + def update(self, logits_real, logits_fake): + self.logits_real_ema = self.logits_real_ema * self.decay + torch.mean(logits_real).item() * (1 - self.decay) + self.logits_fake_ema = self.logits_fake_ema * self.decay + torch.mean(logits_fake).item() * (1 - self.decay) + +def weights_init(m): + classname = m.__class__.__name__ + if classname.find("Conv") != -1: + nn.init.normal_(m.weight.data, 0.0, 0.02) + elif classname.find("BatchNorm") != -1: + nn.init.normal_(m.weight.data, 1.0, 0.02) + nn.init.constant_(m.bias.data, 0) + +class AdversarialLoss(nn.Module): + def __init__( + self, + disc_num_layers: int = 3, + disc_in_channels: int = 3, + disc_weight: float = 0.2, + lecam_loss_weight: float = 0.005, + disc_loss: str = "hinge", + dims: int = 3, + gen_loss_cross_entropy: bool = True, + ): + super().__init__() + self.dims = dims + assert disc_loss in ["hinge", "vanilla"] + self.discriminator = NLayerDiscriminator( + input_nc=disc_in_channels, n_layers=disc_num_layers, use_actnorm=False + ).apply(weights_init) + + self.disc_loss = hinge_d_loss if disc_loss == "hinge" else vanilla_d_loss + self.discriminator_weight = disc_weight + + self.gen_loss_cross_entropy = gen_loss_cross_entropy + self.lecam_loss_weight = lecam_loss_weight + if self.lecam_loss_weight > 0: + self.lecam_ema = LeCAM_EMA() + + def get_trainable_parameters(self) -> Any: + return self.discriminator.parameters() + + def forward( + self, + inputs, + reconstructions, + optimizer_idx, + ): + + if optimizer_idx == 0: + if self.dims > 2: + inputs, reconstructions = map( + lambda x: rearrange(x, "b c t h w -> (b t) c h w"), + (inputs, reconstructions), + ) + + # generator update + logits_fake = self.discriminator(reconstructions) + + if not self.gen_loss_cross_entropy: + g_loss = -torch.mean(logits_fake) + else: + g_loss = non_saturate_gen_loss(logits_fake) + + g_loss = self.discriminator_weight * g_loss + return g_loss + + + if optimizer_idx == 1: + inputs, reconstructions = map( + lambda x: rearrange(x, "b c t h w -> (b t) c h w"), + (inputs, reconstructions), + ) + + logits_real = self.discriminator(inputs.contiguous().detach()) + logits_fake = self.discriminator(reconstructions.contiguous().detach()) + + non_saturate_d_loss = self.disc_loss(logits_real, logits_fake) + + if self.lecam_loss_weight > 0: + self.lecam_ema.update(logits_real, logits_fake) + lecam_loss = lecam_reg(logits_real, logits_fake, self.lecam_ema) + d_loss = lecam_loss * self.lecam_loss_weight + non_saturate_d_loss + else: + d_loss = non_saturate_d_loss + return d_loss diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/patcher_utils.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/patcher_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..acefc5dd7001eaefac5be490b2d5037270d8338a --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/patcher_utils.py @@ -0,0 +1,246 @@ +import os +import random +import shutil +import sys +from datetime import datetime +import math +import numpy as np +import pywt +import torch +from torch.nn import Module +import numpy as np +import torch.nn as nn +import torch.nn.functional as F +import torch.nn as nn + +_PERSISTENT = False + + +class Patcher(torch.nn.Module): + def __init__(self, rescale = True): + super().__init__() + self.register_buffer( + "wavelets", torch.tensor([0.7071067811865476, 0.7071067811865476]), persistent=_PERSISTENT + ) + self.register_buffer( + "_arange", + torch.arange(2), + persistent=_PERSISTENT, + ) + + self.rescale = rescale + for param in self.parameters(): + param.requires_grad = False + + + + def _2ddwt(self, x, mode="reflect", rescale=False): + dtype = x.dtype + h = self.wavelets + x = x.squeeze(2) + + n = h.shape[0] + g = x.shape[1] + hl = h.flip(0).reshape(1, 1, -1).repeat(g, 1, 1) + hh = (h * ((-1) ** self._arange)).reshape(1, 1, -1).repeat(g, 1, 1) + hh = hh.to(dtype=dtype) + hl = hl.to(dtype=dtype) + + x = F.pad(x, pad=(n - 2, n - 1, n - 2, n - 1), mode=mode).to(dtype) + xl = F.conv2d(x, hl.unsqueeze(2), groups=g, stride=(1, 2)) + xh = F.conv2d(x, hh.unsqueeze(2), groups=g, stride=(1, 2)) + xll = F.conv2d(xl, hl.unsqueeze(3), groups=g, stride=(2, 1)) + xlh = F.conv2d(xl, hh.unsqueeze(3), groups=g, stride=(2, 1)) + xhl = F.conv2d(xh, hl.unsqueeze(3), groups=g, stride=(2, 1)) + xhh = F.conv2d(xh, hh.unsqueeze(3), groups=g, stride=(2, 1)) + + out = torch.cat([xll, xlh, xhl, xhh], dim=1) + if rescale: + out = out * 2 + return out.unsqueeze(2) + + def _3ddwt(self, x, mode="reflect", rescale=False): + dtype = x.dtype + h = self.wavelets + + n = h.shape[0] + g = x.shape[1] + hl = h.flip(0).reshape(1, 1, -1).repeat(g, 1, 1) + hh = (h * ((-1) ** self._arange)).reshape(1, 1, -1).repeat(g, 1, 1) + hh = hh.to(dtype=dtype) + hl = hl.to(dtype=dtype) + + # Handles temporal axis. + x = F.pad( + x, pad=(max(0, n - 2), n - 1, n - 2, n - 1, n - 2, n - 1), mode=mode + ).to(dtype) + xl = F.conv3d(x, hl.unsqueeze(3).unsqueeze(4), groups=g, stride=(2, 1, 1)) + xh = F.conv3d(x, hh.unsqueeze(3).unsqueeze(4), groups=g, stride=(2, 1, 1)) + + # Handles spatial axes. + xll = F.conv3d(xl, hl.unsqueeze(2).unsqueeze(4), groups=g, stride=(1, 2, 1)) + xlh = F.conv3d(xl, hh.unsqueeze(2).unsqueeze(4), groups=g, stride=(1, 2, 1)) + xhl = F.conv3d(xh, hl.unsqueeze(2).unsqueeze(4), groups=g, stride=(1, 2, 1)) + xhh = F.conv3d(xh, hh.unsqueeze(2).unsqueeze(4), groups=g, stride=(1, 2, 1)) + + xlll = F.conv3d(xll, hl.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2)) + xllh = F.conv3d(xll, hh.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2)) + xlhl = F.conv3d(xlh, hl.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2)) + xlhh = F.conv3d(xlh, hh.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2)) + xhll = F.conv3d(xhl, hl.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2)) + xhlh = F.conv3d(xhl, hh.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2)) + xhhl = F.conv3d(xhh, hl.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2)) + xhhh = F.conv3d(xhh, hh.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2)) + + out = torch.cat([xlll, xllh, xlhl, xlhh, xhll, xhlh, xhhl, xhhh], dim=1) + if rescale: + out = out * (2 * torch.sqrt(torch.tensor(2.0))) + return out + + def forward(self, x): + if x.shape[2] > 1: + if x.shape[2] % 2 == 1: + xi, xv = torch.split(x, [1, x.shape[2] - 1], dim=2) + xi = self._2ddwt(xi, rescale=self.rescale) + xv = self._3ddwt(xv, rescale=self.rescale) + return xi, xv + else: + xv = self._3ddwt(x, rescale=self.rescale) + return None, xv + + return (self._2ddwt(x, rescale=self.rescale), None) + + +class UnPatcher(torch.nn.Module): + + def __init__(self, rescale = True): + super().__init__() + self.register_buffer( + "wavelets", torch.tensor([0.7071067811865476, 0.7071067811865476]), persistent=_PERSISTENT + ) + self.register_buffer( + "_arange", + torch.arange(2), + persistent=_PERSISTENT, + ) + self.rescale = rescale + for param in self.parameters(): + param.requires_grad = False + + def forward(self, x): + xi, xv = x + if xi is not None and xv is not None: + xi = self._2didwt(xi, rescale=self.rescale) + xv = self._3didwt(xv, rescale=self.rescale) + return torch.cat([xi.unsqueeze(2), xv], dim=2) + elif xv is None and xi is not None: + return self._2didwt(xi, rescale=self.rescale) + elif xv is not None and xi is None: + return self._3didwt(xv, rescale=self.rescale) + + def _2didwt(self, x, mode="reflect", rescale=False): + dtype = x.dtype + h = self.wavelets + n = h.shape[0] + x = x.squeeze(2) + + g = x.shape[1] // 4 + hl = h.flip([0]).reshape(1, 1, -1).repeat([g, 1, 1]) + hh = (h * ((-1) ** self._arange)).reshape(1, 1, -1).repeat(g, 1, 1) + hh = hh.to(dtype=dtype) + hl = hl.to(dtype=dtype) + + xll, xlh, xhl, xhh = torch.chunk(x.to(dtype), 4, dim=1) + + # Inverse transform. + yl = torch.nn.functional.conv_transpose2d( + xll, hl.unsqueeze(3), groups=g, stride=(2, 1), padding=(n - 2, 0) + ) + yl += torch.nn.functional.conv_transpose2d( + xlh, hh.unsqueeze(3), groups=g, stride=(2, 1), padding=(n - 2, 0) + ) + yh = torch.nn.functional.conv_transpose2d( + xhl, hl.unsqueeze(3), groups=g, stride=(2, 1), padding=(n - 2, 0) + ) + yh += torch.nn.functional.conv_transpose2d( + xhh, hh.unsqueeze(3), groups=g, stride=(2, 1), padding=(n - 2, 0) + ) + y = torch.nn.functional.conv_transpose2d( + yl, hl.unsqueeze(2), groups=g, stride=(1, 2), padding=(0, n - 2) + ) + y += torch.nn.functional.conv_transpose2d( + yh, hh.unsqueeze(2), groups=g, stride=(1, 2), padding=(0, n - 2) + ) + + if rescale: + y = y / 2 + return y + + def _3didwt(self, x, mode="reflect", rescale=False): + dtype = x.dtype + h = self.wavelets + n = h.shape[0] + + g = x.shape[1] // 8 # split into 8 spatio-temporal filtered tesnors. + hl = h.flip([0]).reshape(1, 1, -1).repeat([g, 1, 1]) + hh = (h * ((-1) ** self._arange)).reshape(1, 1, -1).repeat(g, 1, 1) + hl = hl.to(dtype=dtype) + hh = hh.to(dtype=dtype) + + xlll, xllh, xlhl, xlhh, xhll, xhlh, xhhl, xhhh = torch.chunk(x, 8, dim=1) + + # Height height transposed convolutions. + xll = F.conv_transpose3d( + xlll, hl.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2) + ) + xll += F.conv_transpose3d( + xllh, hh.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2) + ) + + xlh = F.conv_transpose3d( + xlhl, hl.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2) + ) + xlh += F.conv_transpose3d( + xlhh, hh.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2) + ) + + xhl = F.conv_transpose3d( + xhll, hl.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2) + ) + xhl += F.conv_transpose3d( + xhlh, hh.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2) + ) + + xhh = F.conv_transpose3d( + xhhl, hl.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2) + ) + xhh += F.conv_transpose3d( + xhhh, hh.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2) + ) + + # Handles width transposed convolutions. + xl = F.conv_transpose3d( + xll, hl.unsqueeze(2).unsqueeze(4), groups=g, stride=(1, 2, 1) + ) + xl += F.conv_transpose3d( + xlh, hh.unsqueeze(2).unsqueeze(4), groups=g, stride=(1, 2, 1) + ) + xh = F.conv_transpose3d( + xhl, hl.unsqueeze(2).unsqueeze(4), groups=g, stride=(1, 2, 1) + ) + xh += F.conv_transpose3d( + xhh, hh.unsqueeze(2).unsqueeze(4), groups=g, stride=(1, 2, 1) + ) + + # Handles time axis transposed convolutions. + x = F.conv_transpose3d( + xl, hl.unsqueeze(3).unsqueeze(4), groups=g, stride=(2, 1, 1) + ) + x += F.conv_transpose3d( + xh, hh.unsqueeze(3).unsqueeze(4), groups=g, stride=(2, 1, 1) + ) + + if rescale: + x = x / (2 * torch.sqrt(torch.tensor(2.0))) + return x + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/utils.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..647af2a3d1a6e0507fcefd89ebf6dd3e9d8edb8b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/utils.py @@ -0,0 +1,171 @@ +import torch +import imageio + +import math +import numpy as np +import skvideo.io + +import sys +import pdb as pdb_original + +class ForkedPdb(pdb_original.Pdb): + """A Pdb subclass that may be used + from a forked multiprocessing child + + """ + def interaction(self, *args, **kwargs): + _stdin = sys.stdin + try: + sys.stdin = open('/dev/stdin') + pdb_original.Pdb.interaction(self, *args, **kwargs) + finally: + sys.stdin = _stdin + + + +# Shifts src_tf dim to dest dim +# i.e. shift_dim(x, 1, -1) would be (b, c, t, h, w) -> (b, t, h, w, c) +def shift_dim(x, src_dim=-1, dest_dim=-1, make_contiguous=True): + n_dims = len(x.shape) + if src_dim < 0: + src_dim = n_dims + src_dim + if dest_dim < 0: + dest_dim = n_dims + dest_dim + + assert 0 <= src_dim < n_dims and 0 <= dest_dim < n_dims + + dims = list(range(n_dims)) + del dims[src_dim] + + permutation = [] + ctr = 0 + for i in range(n_dims): + if i == dest_dim: + permutation.append(src_dim) + else: + permutation.append(dims[ctr]) + ctr += 1 + x = x.permute(permutation) + if make_contiguous: + x = x.contiguous() + return x + + +# reshapes tensor start from dim i (inclusive) +# to dim j (exclusive) to the desired shape +# e.g. if x.shape = (b, thw, c) then +# view_range(x, 1, 2, (t, h, w)) returns +# x of shape (b, t, h, w, c) +def view_range(x, i, j, shape): + shape = tuple(shape) + + n_dims = len(x.shape) + if i < 0: + i = n_dims + i + + if j is None: + j = n_dims + elif j < 0: + j = n_dims + j + + assert 0 <= i < j <= n_dims + + x_shape = x.shape + target_shape = x_shape[:i] + shape + x_shape[j:] + return x.view(target_shape) + + +def accuracy(output, target, topk=(1,)): + """Computes the accuracy over the k top predictions for the specified values of k""" + with torch.no_grad(): + maxk = max(topk) + batch_size = target.size(0) + + _, pred = output.topk(maxk, 1, True, True) + pred = pred.t() + correct = pred.eq(target.reshape(1, -1).expand_as(pred)) + + res = [] + for k in topk: + correct_k = correct[:k].reshape(-1).float().sum(0, keepdim=True) + res.append(correct_k.mul_(100.0 / batch_size)) + return res + + +def tensor_slice(x, begin, size): + assert all([b >= 0 for b in begin]) + size = [l - b if s == -1 else s + for s, b, l in zip(size, begin, x.shape)] + assert all([s >= 0 for s in size]) + + slices = [slice(b, b + s) for b, s in zip(begin, size)] + return x[slices] + + +def adopt_weight(global_step, threshold=0, value=0.): + weight = 1 + if global_step < threshold: + weight = value + return weight + + +def save_video_grid(video, fname, nrow=None, fps=3): + b, c, t, h, w = video.shape + video = video.permute(0, 2, 3, 4, 1).contiguous() + + video = (video.detach().cpu().numpy() * 255).astype('uint8') + if nrow is None: + nrow = math.ceil(math.sqrt(b)) + ncol = math.ceil(b / nrow) + padding = 0 #临时修改 + video_grid = np.zeros((t, (padding + h) * nrow + padding, + (padding + w) * ncol + padding, c), dtype='uint8') + # print(video_grid.shape) + for i in range(b): + r = i // ncol + c = i % ncol + start_r = (padding + h) * r + start_c = (padding + w) * c + video_grid[:, start_r:start_r + h, start_c:start_c + w] = video[i] + video = [] + for i in range(t): + video.append(video_grid[i]) + imageio.mimsave(fname, video, fps=fps) + # skvideo.io.vwrite(fname, video_grid, inputdict={'-r': '5'}) + # print('saved videos to', fname) + + +def comp_getattr(args, attr_name, default=None): + if hasattr(args, attr_name): + return getattr(args, attr_name) + else: + return default + + +def visualize_tensors(t, name=None, nest=0): + if name is not None: + print(name, "current nest: ", nest) + print("type: ", type(t)) + if 'dict' in str(type(t)): + print(t.keys()) + for k in t.keys(): + if t[k] is None: + print(k, "None") + else: + if 'Tensor' in str(type(t[k])): + print(k, t[k].shape) + elif 'dict' in str(type(t[k])): + print(k, 'dict') + visualize_tensors(t[k], name, nest + 1) + elif 'list' in str(type(t[k])): + print(k, len(t[k])) + visualize_tensors(t[k], name, nest + 1) + elif 'list' in str(type(t)): + print("list length: ", len(t)) + for t2 in t: + visualize_tensors(t2, name, nest + 1) + elif 'Tensor' in str(type(t)): + print(t.shape) + else: + print(t) + return "" diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/video_utils.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/video_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..2153e91852e00d3e4f3536e5a8403497ba999a6f --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/video_utils.py @@ -0,0 +1,824 @@ +from email.policy import default + +import numbers +import random +import re +from enum import Enum + +import numpy as np +from PIL import Image +import torch +import torchvision as tv +import torchvision.transforms as transforms +import torch.nn.functional as F +from decord import VideoReader + +from torch.nn.functional import interpolate as img_tensor_resize +from torch.nn.functional import pad as img_tensor_pad +from torch.nn.modules.utils import _quadruple +from torchvision.transforms.functional import pad as img_pad +from torchvision.transforms.functional import resize as img_resize +class LMDB_Image: + def __init__(self, image, id): + self.channels = image.shape[2] + self.size = image.shape[:2] + self.image = image.tobytes() + self.id = id + + def get_image(self): + image = np.frombuffer(self.image, dtype=np.uint8) + return image.reshape(*self.size, self.channels) + +# save each video as a class with byte data, which can be decoded from lmdb database. +class LMDB_VIDEO: + def __init__(self, image, id): + self.size = image.shape + self.image = image.tobytes() + self.id = id + + def get_image(self): + image = np.frombuffer(self.image, dtype=np.uint8) + return image.reshape(*self.size) +_pil_interpolation_to_str = { + Image.NEAREST: "PIL.Image.NEAREST", + Image.BILINEAR: "PIL.Image.BILINEAR", + Image.BICUBIC: "PIL.Image.BICUBIC", + Image.LANCZOS: "PIL.Image.LANCZOS", + Image.HAMMING: "PIL.Image.HAMMING", + Image.BOX: "PIL.Image.BOX", +} + + +class VideoNorm(object): + """Apply Normalization to Image Pixels on GPU""" + + def __init__( + self, + mean=[0.5, 0.5, 0.5], + std=[1.0, 1.0, 1.0], + #mean=[0.48145466, 0.4578275, 0.40821073], + #std=[0.26862954, 0.26130258, 0.27577711], + ): + # self.mean = torch.tensor(mean).cuda().view(1, 3, 1, 1) + # self.std = torch.tensor(std).cuda().view(1, 3, 1, 1) + self.mean = torch.tensor(mean).view(1, 3, 1, 1) + self.std = torch.tensor(std).view(1, 3, 1, 1) + + def __call__(self, img): + """ + Args: + img: float image tensors, (N, 3, H, W) + Returns: + img: normalized float image tensors + """ + if torch.max(img) > 1 and self.mean.max() <= 1: + img.div_(255.0) + re = img.sub_(self.mean).div_(self.std) + return re + + + + +class VideoResizeSquare(object): + def __init__(self, out_size, interpolation="nearest"): + assert isinstance(out_size, int) + self.out_size = out_size + self.interpolation = interpolation + + def __call__(self, video): + """ + Args: + img (torch.tensor): video to be scaled. + + Returns: + torch.tensor: Rescaled video. + """ + if isinstance(video, torch.Tensor): + if len(video.shape) == 4: + t, h, w, c = video.shape + assert ( + c == 3 + ), "Expecting 3-channel color video, got video of shape {}".format( + video.shape + ) + else: + raise RuntimeError( + "Expecting 4-dimensional tensor of shape (b,t,h,w), got {}".format( + video.shape + ) + ) + + # t, h, w, c -> t, c, h, w + video = video.permute(0, 3, 1, 2) + short_side = h if h < w else w + resized_video = img_tensor_resize( + video, + size=((self.out_size, self.out_size)), + mode=self.interpolation, + ) + + # t, c, h, w -> t, h, w, c + return resized_video.permute(0, 2, 3, 1) + + else: + # in other data class, the order of shape might be different. + raise NotImplementedError( + "Support only torch.Tensor as input, got {}".format(type(video)) + ) + + def __repr__(self): + return self.__class__.__name__ + "(size={0}, interpolation={1})".format( + self.out_size, self.interpolation + ) + + + +def load_video_from_path_tvio( + video_path, + frm_sampling_strategy, + height=None, + width=None, + fps=-1, + num_frm=None, +): + video = tv.io.read_video(rf"{video_path}", pts_unit="sec") + if not height or not width: + sampled_frms = np.array(video[0]) + else: + # T, H, W, C + sampled_frms_tensor = video[0] + # expected: t, c, h, w + resize_func = VideoResizeSquare(out_size=height) + sampled_frms_tensor = resize_func(sampled_frms_tensor) + sampled_frms = np.array(sampled_frms_tensor) + + specified_num_frm = num_frm + default_fps = video[2]["video_fps"] + vlen = sampled_frms.shape[0] + + if fps != -1: + # resample the video to the specified fps + duration = vlen / default_fps + num_frames_to_sample = int(duration * fps) + resample_indices = np.linspace( + 0, vlen - 1, num_frames_to_sample + ).astype(int) + + # print(default_fps, fps, resample_indices) + sampled_frms = sampled_frms[resample_indices] + default_fps = fps + + vlen = sampled_frms.shape[0] + if num_frm is None: + num_frm = vlen + + num_frm = min(num_frm, vlen) + + if frm_sampling_strategy == "uniform": + frame_indices = np.linspace(0, vlen - 1, num_frm).astype(int) + + elif frm_sampling_strategy == "rand": + # frame_indices = sorted(random.sample(range(vlen), num_frm)) + rand_start = random.randint(0, vlen - num_frm) + frame_indices = np.array(range(rand_start, rand_start + num_frm)).astype(int) + + elif frm_sampling_strategy == "center": + center = vlen // 2 + if num_frm % 2 ==0: + frame_indices = np.array(range(center - num_frm // 2, center + num_frm // 2)).astype(int) + else: + frame_indices = np.array(range(center - num_frm // 2, center + num_frm // 2 + 1)).astype(int) + + elif frm_sampling_strategy == "all": + frame_indices = np.arange(0, vlen).astype(int) + + else: + raise NotImplementedError( + "Invalid sampling strategy {} ".format(frm_sampling_strategy) + ) + + raw_sample_frms = sampled_frms[ + frame_indices + ] + + if specified_num_frm is None: + masks = np.ones(len(raw_sample_frms), dtype=np.uint8) + + # pad the video if the number of frames is less than specified + elif len(raw_sample_frms) < specified_num_frm: + prev_length = len(raw_sample_frms) + zeros = np.zeros( + (specified_num_frm - prev_length, height, width, 3), + dtype=np.uint8, + ) + raw_sample_frms = np.concatenate((raw_sample_frms, zeros), axis=0) + masks = np.zeros(specified_num_frm, dtype=np.uint8) + masks[:prev_length] = 1 + + else: + masks = np.ones(specified_num_frm, dtype=np.uint8) + + + return raw_sample_frms, masks + + +def load_video_from_path_decord( + video_path, + frm_sampling_strategy, + height=None, + width=None, + start_time=None, + end_time=None, + fps=-1, + num_frm=None, +): + #return np.zeros((num_frm, 256, 256, 3), dtype=np.uint8), np.ones(num_frm, dtype=np.uint8) + specified_num_frm = num_frm + + if not height or not width: + vr = VideoReader(rf"{video_path}") + else: + vr = VideoReader(video_path, width=width, height=height) + + default_fps = vr.get_avg_fps() + if default_fps <= fps: + fps = -1 + + if fps != -1: + # resample the video to the specified fps + duration = len(vr) / default_fps + num_frames_to_sample = int(duration * fps) + resample_indices = np.linspace( + 0, len(vr) - 1, num_frames_to_sample + ).astype(int) + + # print(default_fps, fps, resample_indices) + sampled_frms = vr.get_batch(resample_indices).asnumpy().astype(np.uint8) + default_fps = fps + + + else: + sampled_frms = vr.get_batch(np.arange(0, len(vr), 1, dtype=int)).asnumpy().astype(np.uint8) + + vlen = sampled_frms.shape[0] + + if num_frm is None: + num_frm = vlen + + num_frm = min(num_frm, vlen) + + if start_time or end_time: + assert ( + fps > 0 + ), "must provide video fps if specifying start and end time." + start_idx = min(int(start_time * fps), vlen) + end_idx = min(int(end_time * fps), vlen) + + else: + start_idx, end_idx = 0, vlen + + if frm_sampling_strategy == "uniform": + frame_indices = np.linspace(0, vlen - 1, num_frm).astype(int) + + elif frm_sampling_strategy == "nlvl_uniform": + frame_indices = np.arange( + start_idx, end_idx, vlen / num_frm + ).astype(int) + + elif frm_sampling_strategy == "nlvl_rand": + frame_indices = np.arange( + start_idx, end_idx, vlen / num_frm + ).astype(int) + + strides = [ + frame_indices[i] - frame_indices[i - 1] + for i in range(1, len(frame_indices)) + ] + [vlen - frame_indices[-1]] + pertube = np.array( + [np.random.randint(0, stride) for stride in strides] + ) + + frame_indices = frame_indices + pertube + + elif frm_sampling_strategy == "rand": + # frame_indices = sorted(random.sample(range(vlen), num_frm)) + rand_start = random.randint(0, vlen - num_frm) + frame_indices = np.array(range(rand_start, rand_start + num_frm)).astype(int) + + elif frm_sampling_strategy == "center": + center = vlen // 2 + if num_frm % 2 ==0: + frame_indices = np.array(range(center - num_frm // 2, center + num_frm // 2)).astype(int) + else: + frame_indices = np.array(range(center - num_frm // 2, center + num_frm // 2 + 1)).astype(int) + + elif frm_sampling_strategy == "headtail": + frame_indices_head = sorted( + random.sample(range(vlen // 2), num_frm // 2) + ) + frame_indices_tail = sorted( + random.sample(range(vlen // 2, vlen), num_frm // 2) + ) + frame_indices = frame_indices_head + frame_indices_tail + + elif frm_sampling_strategy == "all": + frame_indices = np.arange(0, vlen).astype(int) + + + elif frm_sampling_strategy == "rand_sep": + sep = random.choice([1,2,3,4,5,6,7,8]) + while (sep * num_frm) > vlen: + sep = random.choice([1,2,3,4,5,6,7,8]) + rand_start = random.randint(0, vlen - sep * num_frm) + frame_indices = np.array(range(rand_start, rand_start + sep * num_frm, sep)).astype(int) + + else: + raise NotImplementedError( + "Invalid sampling strategy {} ".format(frm_sampling_strategy) + ) + + raw_sample_frms = sampled_frms[ + frame_indices + ] + + if specified_num_frm is None: + masks = np.ones(len(raw_sample_frms), dtype=np.uint8) + + # pad the video if the number of frames is less than specified + elif len(raw_sample_frms) < specified_num_frm: + prev_length = len(raw_sample_frms) + zeros = np.zeros( + (specified_num_frm - prev_length, height, width, 3), + dtype=np.uint8, + ) + raw_sample_frms = np.concatenate((raw_sample_frms, zeros), axis=0) + masks = np.zeros(specified_num_frm, dtype=np.uint8) + masks[:prev_length] = 1 + + else: + masks = np.ones(specified_num_frm, dtype=np.uint8) + + return raw_sample_frms, masks + + +def load_video_from_path_lmdb( + sampled_frms, + frm_sampling_strategy, + height=None, + width=None, + start_time=None, + end_time=None, + fps=-1, + num_frm=None, +): + #return np.zeros((num_frm, 256, 256, 3), dtype=np.uint8), np.ones(num_frm, dtype=np.uint8) + specified_num_frm = num_frm + + vlen = sampled_frms.shape[0] + + if num_frm is None: + num_frm = vlen + + num_frm = min(num_frm, vlen) + + if start_time or end_time: + assert ( + fps > 0 + ), "must provide video fps if specifying start and end time." + start_idx = min(int(start_time * fps), vlen) + end_idx = min(int(end_time * fps), vlen) + + else: + start_idx, end_idx = 0, vlen + + if frm_sampling_strategy == "uniform": + frame_indices = np.linspace(0, vlen - 1, num_frm).astype(int) + + elif frm_sampling_strategy == "nlvl_uniform": + frame_indices = np.arange( + start_idx, end_idx, vlen / num_frm + ).astype(int) + + elif frm_sampling_strategy == "nlvl_rand": + frame_indices = np.arange( + start_idx, end_idx, vlen / num_frm + ).astype(int) + + strides = [ + frame_indices[i] - frame_indices[i - 1] + for i in range(1, len(frame_indices)) + ] + [vlen - frame_indices[-1]] + pertube = np.array( + [np.random.randint(0, stride) for stride in strides] + ) + + frame_indices = frame_indices + pertube + + elif frm_sampling_strategy == "rand": + # frame_indices = sorted(random.sample(range(vlen), num_frm)) + rand_start = random.randint(0, vlen - num_frm) + frame_indices = np.array(range(rand_start, rand_start + num_frm)).astype(int) + + elif frm_sampling_strategy == "center": + center = vlen // 2 + if num_frm % 2 ==0: + frame_indices = np.array(range(center - num_frm // 2, center + num_frm // 2)).astype(int) + else: + frame_indices = np.array(range(center - num_frm // 2, center + num_frm // 2 + 1)).astype(int) + + elif frm_sampling_strategy == "headtail": + frame_indices_head = sorted( + random.sample(range(vlen // 2), num_frm // 2) + ) + frame_indices_tail = sorted( + random.sample(range(vlen // 2, vlen), num_frm // 2) + ) + frame_indices = frame_indices_head + frame_indices_tail + + elif frm_sampling_strategy == "all": + frame_indices = np.arange(0, vlen).astype(int) + + + elif frm_sampling_strategy == "rand_sep": + sep = random.choice([1,2,3,4,5,6,7,8]) + while (sep * num_frm) > vlen: + sep = random.choice([1,2,3,4,5,6,7,8]) + rand_start = random.randint(0, vlen - sep * num_frm) + frame_indices = np.array(range(rand_start, rand_start + sep * num_frm, sep)).astype(int) + + else: + raise NotImplementedError( + "Invalid sampling strategy {} ".format(frm_sampling_strategy) + ) + + raw_sample_frms = sampled_frms[ + frame_indices + ] + + if specified_num_frm is None: + masks = np.ones(len(raw_sample_frms), dtype=np.uint8) + + # pad the video if the number of frames is less than specified + elif len(raw_sample_frms) < specified_num_frm: + prev_length = len(raw_sample_frms) + zeros = np.zeros( + (specified_num_frm - prev_length, height, width, 3), + dtype=np.uint8, + ) + raw_sample_frms = np.concatenate((raw_sample_frms, zeros), axis=0) + masks = np.zeros(specified_num_frm, dtype=np.uint8) + masks[:prev_length] = 1 + + else: + masks = np.ones(specified_num_frm, dtype=np.uint8) + + return raw_sample_frms, masks + +def image_to_tensor(image: np.ndarray, keepdim: bool = True) -> torch.Tensor: + """Converts a numpy image to a PyTorch 4d tensor image. + Args: + image (numpy.ndarray): image of the form :math:`(H, W, C)`, :math:`(H, W)` or + :math:`(B, H, W, C)`. + keepdim (bool): If ``False`` unsqueeze the input image to match the shape + :math:`(B, H, W, C)`. Default: ``True`` + Returns: + torch.Tensor: tensor of the form :math:`(B, C, H, W)` if keepdim is ``False``, + :math:`(C, H, W)` otherwise. + """ + if not isinstance(image, (np.ndarray,)): + raise TypeError( + "Input type must be a numpy.ndarray. Got {}".format(type(image)) + ) + + if len(image.shape) > 4 or len(image.shape) < 2: + raise ValueError( + "Input size must be a two, three or four dimensional array" + ) + + input_shape = image.shape + tensor: torch.Tensor = torch.from_numpy(image) + + if len(input_shape) == 2: + # (H, W) -> (1, H, W) + tensor = tensor.unsqueeze(0) + elif len(input_shape) == 3: + # (H, W, C) -> (C, H, W) + tensor = tensor.permute(2, 0, 1) + elif len(input_shape) == 4: + # (B, H, W, C) -> (B, C, H, W) + tensor = tensor.permute(0, 3, 1, 2) + keepdim = True # no need to unsqueeze + else: + raise ValueError( + "Cannot process image with shape {}".format(input_shape) + ) + + return tensor.unsqueeze(0) if not keepdim else tensor + + +def get_padding(image, max_w, max_h, pad_all=False): + # keep the images to upper-left corner + if isinstance(image, torch.Tensor): + h, w = image.shape[-2:] + else: + w, h = image.size + h_padding, v_padding = max_w - w, max_h - h + if pad_all: + h_padding /= 2 + v_padding /= 2 + l_pad = h_padding if h_padding % 1 == 0 else h_padding + 0.5 + t_pad = v_padding if v_padding % 1 == 0 else v_padding + 0.5 + r_pad = h_padding if h_padding % 1 == 0 else h_padding - 0.5 + b_pad = v_padding if v_padding % 1 == 0 else v_padding - 0.5 + else: + l_pad, t_pad = 0, 0 + r_pad, b_pad = h_padding, v_padding + if isinstance(image, torch.Tensor): + padding = (int(l_pad), int(r_pad), int(t_pad), int(b_pad)) + else: + padding = (int(l_pad), int(t_pad), int(r_pad), int(b_pad)) + return padding + + +class ImagePad(object): + def __init__(self, max_w, max_h, fill=0, padding_mode="constant"): + assert isinstance(fill, (numbers.Number, str, tuple)) + assert padding_mode in ["constant", "edge", "reflect", "symmetric"] + self.max_w = max_w + self.max_h = max_h + self.fill = fill + self.padding_mode = padding_mode + + def __call__(self, img): + """ + Args: + img (PIL Image): Image to be padded. + + Returns: + PIL Image: Padded image. + """ + if isinstance(img, torch.Tensor): + paddings = _quadruple(get_padding(img, self.max_w, self.max_h)) + return img_tensor_pad(img, paddings, self.padding_mode, self.fill) + return img_pad( + img, + get_padding(img, self.max_w, self.max_h), + self.fill, + self.padding_mode, + ) + + def __repr__(self): + return ( + self.__class__.__name__ + + "(padding={0}, fill={1}, padding_mode={2})".format( + self.fill, self.padding_mode + ) + ) + + +def get_resize_size(image, max_size): + """ + Args: + image: PIL Image or torch.tensor + max_size: + + Returns: + + Note the height/width order difference + >>> pil_img = Image.open("raw_img_tensor.jpg") + >>> pil_img.size + (640, 480) # (width, height) + >>> np_img = np.array(pil_img) + >>> np_img.shape + (480, 640, 3) # (height, width, 3) + """ + # note the order of height and width for different inputs + if isinstance(image, torch.Tensor): + # width, height = image.shape[-2:] + height, width = image.shape[-2:] + else: + width, height = image.size + + if height >= width: + ratio = width * 1.0 / height + new_height = max_size + new_width = new_height * ratio + else: + ratio = height * 1.0 / width + new_width = max_size + new_height = new_width * ratio + size = (int(new_height), int(new_width)) + return size + + +class VideoRandomSquareCrop(object): + def __init__(self, crop_size, p=0.5): + assert isinstance(crop_size, int) + self.crop_size = crop_size + self.p = p + + def __call__(self, video): + """ + Args: + img (torch.tensor): video to be cropped. + + Returns: + torch.tensor: cropped video. + """ + if isinstance(video, torch.Tensor): + if len(video.shape) == 4: + b, t, h, w = video.shape + else: + raise RuntimeError( + "Expecting 4-dimensional tensor of shape (b,t,h,w), got {}".format( + video.shape + ) + ) + + if random.uniform(0, 1) < self.p: + video = torch.flip(video, (3,)) + + x = random.randint(0, h - self.crop_size) + y = random.randint(0, w - self.crop_size) + + return video[:, :, x : x + self.crop_size, y : y + self.crop_size] + + else: + if random.uniform(0, 1) < self.p: + video = np.ascontiguousarray(np.flip(video, (2,))) + t, h, w, c = video.shape + x = random.randint(0, h - self.crop_size) + y = random.randint(0, w - self.crop_size) + + return video[:, x : x + self.crop_size, y : y + self.crop_size, :] + + +class ImageResize(object): + """Resize the input image (torch.tensor) to the given size. + + Args: + max_size (int): Desired output size. If size is a sequence like + (h, w), output size will be matched to this. If size is an int, + smaller edge of the image will be matched to this number. + i.e, if height > width, then image will be rescaled to + (size * height / width, size) + interpolation (int, optional): Desired interpolation. Default is + ``PIL.Image.BILINEAR`` + """ + + def __init__(self, max_size, interpolation=Image.BILINEAR): + assert isinstance(max_size, int) + self.max_size = max_size + self.interpolation = interpolation + + def __call__(self, img): + """ + Args: + img (torch.tensor): Image to be scaled. + + Returns: + torch.tensor: Rescaled image. + """ + if isinstance(img, torch.Tensor): + assert isinstance(self.interpolation, str) + return img_tensor_resize( + img, + size=get_resize_size(img, self.max_size), + mode=self.interpolation, + align_corners=False, + ) + return img_resize( + img, get_resize_size(img, self.max_size), self.interpolation + ) + + def __repr__(self): + interpolate_str = _pil_interpolation_to_str[self.interpolation] + return self.__class__.__name__ + "(size={0}, interpolation={1})".format( + self.size, interpolate_str + ) + + +def get_imagenet_transform(min_size=600, max_size=1000): + """parameters from https://github.com/pytorch/examples/blob/master/imagenet/main.py + This simply crop the center square from the image + """ + if min_size != 600: + import warnings + + warnings.warn( + f"Warning: min_size is not used in image transform, " + f"setting min_size will have no effect." + ) + return transforms.Compose( + [ + ImageResize( + max_size, Image.BILINEAR + ), # longer side will be resized to 1000 + ImagePad(max_size, max_size), # pad to 1000 * 1000 + ] + ) + + +class ImageNorm(object): + """Apply Normalization to Image Pixels on GPU""" + + def __init__(self, mean, std): + self.mean = torch.tensor(mean).cuda().view(1, 1, 3, 1, 1) + self.std = torch.tensor(std).cuda().view(1, 1, 3, 1, 1) + # assert max(std) <= 1 and min(std) >= 0\ + # or max(mean) <= 1 and min(mean) >= 0,\ + # "Please provide mean or std within range [0, 1]" + + def __call__(self, img): + """ + Args: + img: float image tensors, (B, N, 3, H, W) + + Returns: + img: normalized float image tensors + """ + if torch.max(img) > 1 and self.mean.max() <= 1: + img.div_(255.0) + return img.sub_(self.mean).div_(self.std) + + +def chunk_list(examples, chunk_size=2, pad_to_divisible=True): + """ + Args: + examples: iterable, examples grouped by image/video + chunk_size: int, number of examples in each chunk. + pad_to_divisible: bool, pad the examples to be divisible by chunk_size. + >>> test_examples = [3, 4, 5, 6, 7] + >>> chunk_list(test_examples, chunk_size=2, pad_to_divisible=True) + [[3, 4], [5, 6], [7, 7]] # the lst element has some randomness + >>> chunk_list(test_examples, chunk_size=2, pad_to_divisible=False) + [[3, 4], [5, 6], [7]] + """ + n_examples = len(examples) + remainder = n_examples % chunk_size + if pad_to_divisible and remainder > 0: + n_pad = chunk_size - remainder + pad = random.choices(examples, k=n_pad) # with replacement + examples = examples + pad + n_examples = len(examples) + remainder = 0 + chunked_examples = [] + n_chunks = int(n_examples / chunk_size) + n_chunks = n_chunks + 1 if remainder > 0 else n_chunks + for i in range(n_chunks): + chunked_examples.append(examples[i * chunk_size : (i + 1) * chunk_size]) + return chunked_examples + + +# def repeat_tensor_rows(raw_tensor, row_repeats): +# """ repeat raw_tensor[i] row_repeats[i] times. +# Args: +# raw_tensor: (B, *) +# row_repeats: list(int), len(row_repeats) == len(raw_tensor) +# """ +# assert len(raw_tensor) == len(raw_tensor), "Has to be the same length" +# if sum(row_repeats) == len(row_repeats): +# return raw_tensor +# else: +# indices = torch.LongTensor( +# flat_list_of_lists([[i] * r for i, r in enumerate(row_repeats)]) +# ).to(raw_tensor.device) +# return raw_tensor.index_select(0, indices) + + +def pre_caption(caption, max_words=50): + caption = re.sub( + r"([.!\"()*#:;~])", + " ", + caption.lower(), + ) + caption = re.sub( + r"\s{2,}", + " ", + caption, + ) + caption = caption.rstrip("\n") + caption = caption.strip(" ") + + # truncate caption + caption_words = caption.split(" ") + if len(caption_words) > max_words: + caption = " ".join(caption_words[:max_words]) + + return caption + + + + +class InterpolationMode(Enum): + """Interpolation modes + Available interpolation methods are ``nearest``, ``bilinear``, ``bicubic``, ``box``, ``hamming``, and ``lanczos``. + """ + + NEAREST = "nearest" + BILINEAR = "bilinear" + BICUBIC = "bicubic" + # For PIL compatibility + BOX = "box" + HAMMING = "hamming" + LANCZOS = "lanczos" \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/README.md b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/README.md new file mode 100644 index 0000000000000000000000000000000000000000..b2db10e5c830399479fe0caeaf15b403690d648f --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/README.md @@ -0,0 +1,85 @@ +# Generative Enhancement for 3D Medical Images + +This is the official code for https://arxiv.org/abs/2403.12852. + + + +## Installation + +Clone this repository and install packages: +``` +git clone https://github.com/HKU-MedAI/GEM-3D.git +conda env create --file environment.yml +conda activate gem +``` + +## Preparation + +1. The preprocessed datasets can be found [here](https://connecthkuhk-my.sharepoint.com/:u:/g/personal/ltzhu99_connect_hku_hk/ES0_s1XN3_BDhQn6W3cPvPgB-LnX9SJqUcBQ3dA8g-jqZA?e=3qiz5v). (For BraTS, we use the version from [Medical Segmentation Decathlon](http://medicaldecathlon.com/#tasks) and only use the FLAIR modality. For abdomen dataset, we crop the outlier regions where contain too many empty slices. Note that we need the gt segmentation for benchmark, and we mannually split the training splits. The datasets are preprocessed with [nnUNet](https://github.com/MIC-DKFZ/nnUNet).) + +2. Download [KL-f8 AE](https://ommer-lab.com/files/latent-diffusion/kl-f8.zip) from [LDM](https://github.com/CompVis/latent-diffusion). + + +3. You can download our pretrained models [here](https://connecthkuhk-my.sharepoint.com/:u:/g/personal/ltzhu99_connect_hku_hk/EdGegBBAYVZMnhLhAvs46OUBRDPVmYBI6IqX20K3OWGTQA?e=McrYWl). + +## Training +``` +# stage 1, 150k iters +CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python main.py --base configs/latent-diffusion/brain_stage1.yaml -t --gpus 0,1,2,3,4,5,6,7, + +# Edit the path-to-stage1-ckpt keyword in the stage 2 yaml +vi configs/latent-diffusion/brain_stage2.yaml + +# stage 2, 50k iters +CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python main.py --base configs/latent-diffusion/brain_stage2.yaml -t --gpus 0,1,2,3,4,5,6,7, +``` +``` +# baseline (a modified version of Make-A-Volume[MICCAI 2023]): use the yaml with 'base' and train the models in two stages, the same as the commands above +``` +``` +# position conditioned slice generation model (one-stage), 150k iters +CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python main.py --base configs/latent-diffusion/brain_slice.yaml -t --gpus 0,1,2,3,4,5,6,7, +``` +Note that the training costs more than 30G for each card, requiring GPUs like V100 and A100. + +And the training can also be conducted with fewer cards. + +## Inference + +Prepare the models in the directory `infer_model/`. +``` +# postfix: +# {ic,icma,ig,igma} correspond to the 4 settings in the paper (Tab.1) +# test means that data comes from the test split (Tab.2) +# base corresponds to the baseline +# slice corresponds to position conditioned slice generation model +python inference_{dataset}_{postfix}.py + +## e.g., +python inference_brain_ic.py +``` +The inference costs GPU memory within 20G. + +## Citation + +If you find our work useful, please kindly cite as: +``` +@article{zhu2024generative, + title={Generative Enhancement for 3D Medical Images}, + author={Zhu, Lingting and Codella, Noel and Chen, Dongdong and Jin, Zhenchao and Yuan, Lu and Yu, Lequan}, + journal={arXiv preprint arXiv:2403.12852}, + year={2024} +} + +@inproceedings{zhu2023make, + title={Make-a-volume: Leveraging latent diffusion models for cross-modality 3d brain mri synthesis}, + author={Zhu, Lingting and Xue, Zeyue and Jin, Zhenchao and Liu, Xian and He, Jingzhen and Liu, Ziwei and Yu, Lequan}, + booktitle={International Conference on Medical Image Computing and Computer-Assisted Intervention}, + pages={592--601}, + year={2023}, + organization={Springer} +} +``` + +## Acknowledgement +The codebase is developed based on [SD](https://github.com/CompVis/stable-diffusion) (Rombach et al.). diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b81b42ec51e17a66f46f81539c96c72260e018c0 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..34bf0f6580102a506b16641a2cae9e342daf55a2 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..90fe8458edd81309252d0e1062006b9e50d1aa56 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-38.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..57c8d513884558465a77d6281b4dc5ca8a2a4ddf Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/config.sh b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/config.sh new file mode 100644 index 0000000000000000000000000000000000000000..b6ddfa2e6a80a81a414757217d4001ed1e4c79db --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/config.sh @@ -0,0 +1,34 @@ +# stage 1, 150k iters +CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python main.py --base configs/latent-diffusion/brain_stage1.yaml -t --gpus 0,1,2,3,4,5,6,7, + +# Edit the path-to-stage1-ckpt keyword in the stage 2 yaml +vi configs/latent-diffusion/brain_stage2.yaml + +# stage 2, 50k iters +CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python main.py --base configs/latent-diffusion/brain_stage2.yaml -t --gpus 0,1,2,3,4,5,6,7, + + + + +CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/brain_stage1.yaml -t --gpus 0, + +CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/brain_slice.yaml -t --gpus 0, + +CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/abdomen_3d.yaml -t --gpus 0, + +CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/brain_slice_atten.yaml -t --gpus 0, + +CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/brain_slice_atten2.yaml -t --gpus 0, + +CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/brain_slice_atten3.yaml -t --gpus 0, + +CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/brain_slice_atten4.yaml -t --gpus 0, + +CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/brain_slice_atten5.yaml -t --gpus 0, + + +CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/full_ct_2d_with_body_mask.yaml -t --gpus 0, --resume ./logs/full_ct_2d_with_body_mask + +CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/full_ct_3d_with_body_mask_finetune.yaml -t --gpus 0, --resume ./logs/full_ct_3d_with_body_mask_finetune2 + +pip install beartype PyWavelets diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d.yaml new file mode 100644 index 0000000000000000000000000000000000000000..56952ba5c1861d34258b413f45dc69cc4c530eeb --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d.yaml @@ -0,0 +1,92 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: masked_volume + cond_stage_trainable: false + conditioning_key: concat + image_size: 64 + channels: 4 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-09-13T02-58-56_brain_slice/checkpoints/last.ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 9 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.volume_dataset.volume_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + data_repeat: 100 + validation: + target: ldm.data.volume_dataset.volume_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e7de493c0863442030a795d1184fa9727f1d8cba --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata.yaml @@ -0,0 +1,92 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: masked_volume + cond_stage_trainable: false + conditioning_key: concat + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-10-30T18-29-30_brain_slice_13class_new_randomclass_alldata/checkpoints/last.ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 9 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.volume_dataset_13class_randomclass.volume_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset103_AbdomenAtlas2.0_base' + data_repeat: 4 + validation: + target: ldm.data.volume_dataset_13class_randomclass.volume_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset103_AbdomenAtlas2.0_base' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata2.yaml new file mode 100644 index 0000000000000000000000000000000000000000..88c5c6da6a5b9b8d62ad8dd80ca9b98965ff1e93 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata2.yaml @@ -0,0 +1,94 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: masked_volume + cond_stage_trainable: false + conditioning_key: concat + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-10-31T18-08-08_brain_slice_13class_new_randomclass_alldata2/checkpoints/last.ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 9 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.volume_dataset_13class_randomclass.volume_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset103_AbdomenAtlas2.0_base' + data_repeat: 4 + data_file: 'data_split/splits_final_all.json' + validation: + target: ldm.data.volume_dataset_13class_randomclass.volume_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset103_AbdomenAtlas2.0_base' + data_file: 'data_split/splits_final_all.json' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata3.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata3.yaml new file mode 100644 index 0000000000000000000000000000000000000000..15236399e4f11d469c47b99bf7c9931ab995584b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata3.yaml @@ -0,0 +1,94 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: masked_volume + cond_stage_trainable: false + conditioning_key: concat + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-11-04T07-42-05_brain_slice_13class_new_randomclass_alldata3/checkpoints/last.ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 9 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.volume_dataset_13class_randomclass.volume_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset104_AbdomenAtlas2.0_1102' + data_repeat: 4 + data_file: 'data_split/splits_final_all2.json' + validation: + target: ldm.data.volume_dataset_13class_randomclass.volume_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset104_AbdomenAtlas2.0_1102' + data_file: 'data_split/splits_final_all2.json' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata4.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata4.yaml new file mode 100644 index 0000000000000000000000000000000000000000..04fc5db5434b658303f65569d44e0b911b29d63e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata4.yaml @@ -0,0 +1,94 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: masked_volume + cond_stage_trainable: false + conditioning_key: concat + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-11-06T12-22-22_brain_slice_13class_new_randomclass_alldata4/checkpoints/last.ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 9 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.volume_dataset_13class_randomclass.volume_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset105_AbdomenAtlas2.0_1106' + data_repeat: 4 + data_file: 'data_split/splits_final_all3.json' + validation: + target: ldm.data.volume_dataset_13class_randomclass.volume_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset105_AbdomenAtlas2.0_1106' + data_file: 'data_split/splits_final_all3.json' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_28class_randomclass.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_28class_randomclass.yaml new file mode 100644 index 0000000000000000000000000000000000000000..8ad8ed99a640b36e035ecef611336963e505aa65 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_28class_randomclass.yaml @@ -0,0 +1,92 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: masked_volume + cond_stage_trainable: false + conditioning_key: concat + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-10-13T09-17-24_brain_slice_28class_new_randomclass/checkpoints/last.ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 9 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.volume_dataset_28class_randomclass.volume_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset101_AbdomenAtlasInternal' + data_repeat: 4 + validation: + target: ldm.data.volume_dataset_28class_randomclass.volume_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset101_AbdomenAtlasInternal' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_28class_randomclass2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_28class_randomclass2.yaml new file mode 100644 index 0000000000000000000000000000000000000000..aed19612e02b38d31704969a5c14515dae8d459d --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_28class_randomclass2.yaml @@ -0,0 +1,92 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: masked_volume + cond_stage_trainable: false + conditioning_key: concat + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-10-19T04-42-07_brain_slice_28class_new_randomclass/checkpoints/last.ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 9 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.volume_dataset_28class_randomclass.volume_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset101_AbdomenAtlasInternal' + data_repeat: 4 + validation: + target: ldm.data.volume_dataset_28class_randomclass.volume_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset101_AbdomenAtlasInternal' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_28class_randomclass3.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_28class_randomclass3.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e60a5c4a29a67d0b43f867a1791e0b43e8e3fc2d --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_28class_randomclass3.yaml @@ -0,0 +1,92 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: masked_volume + cond_stage_trainable: false + conditioning_key: concat + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-10-17T08-03-29_brain_slice_28class_new_randomclass/checkpoints/last.ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 9 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.volume_dataset_28class_randomclass.volume_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset101_AbdomenAtlasInternal' + data_repeat: 4 + validation: + target: ldm.data.volume_dataset_28class_randomclass.volume_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset101_AbdomenAtlasInternal' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_atten3.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_atten3.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2675ecb7c09de350866fc702f5b5b1b05d8c0d6c --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_atten3.yaml @@ -0,0 +1,93 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: masked_volume + cond_stage_trainable: false + conditioning_key: hybrid + image_size: 64 + channels: 4 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-10-11T04-22-28_brain_slice_atten3/checkpoints/last.ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 9 + out_channels: 4 + model_channels: 128 + attention_resolutions: [ 4, 2, 1 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 4, 4 ] + num_head_channels: 32 + use_spatial_transformer: True + transformer_depth: 1 + context_dim: 4096 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 2 + num_workers: 16 + wrap: false + train: + target: ldm.data.volume_dataset.volume_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + data_repeat: 100 + validation: + target: ldm.data.volume_dataset.volume_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_atten5.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_atten5.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1a8939f57246c6f8f6972f119a430cddc7783a2e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_atten5.yaml @@ -0,0 +1,93 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: masked_volume + cond_stage_trainable: false + conditioning_key: hybrid + image_size: 64 + channels: 4 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-10-11T04-32-33_brain_slice_atten5/checkpoints/last.ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 9 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 4, 2, 1 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 4, 4 ] + num_head_channels: 32 + use_spatial_transformer: True + transformer_depth: 1 + context_dim: 5 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 1 + num_workers: 16 + wrap: false + train: + target: ldm.data.volume_dataset.volume_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + data_repeat: 100 + validation: + target: ldm.data.volume_dataset.volume_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_kidney.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_kidney.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2328f6286a6c20ca6576fc3e8b3abd95b6e7c7aa --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_kidney.yaml @@ -0,0 +1,96 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: masked_volume + cond_stage_trainable: false + conditioning_key: concat + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-10-31T09-36-59_brain_slice_kidney/checkpoints/last.ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 9 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.volume_dataset.volume_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset018_AbdomenAtlas2.0_base_kidney' + planner: 'nnUNetPlans_3d_fullres' + data_file: 'data_split/kidney/splits_final.json' + data_repeat: 4 + validation: + target: ldm.data.volume_dataset.volume_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset018_AbdomenAtlas2.0_base_kidney' + planner: 'nnUNetPlans_3d_fullres' + data_file: 'data_split/kidney/splits_final.json' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_pancreas.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_pancreas.yaml new file mode 100644 index 0000000000000000000000000000000000000000..949617ab3329326a1f02091c320f574413742652 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_pancreas.yaml @@ -0,0 +1,96 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: masked_volume + cond_stage_trainable: false + conditioning_key: concat + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-10-31T09-43-34_brain_slice_pancreas/checkpoints/last.ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 9 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.volume_dataset.volume_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset017_AbdomenAtlas2.0_base_pancreas' + planner: 'nnUNetPlans_3d_fullres' + data_file: 'data_split/pancreas/splits_final.json' + data_repeat: 4 + validation: + target: ldm.data.volume_dataset.volume_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset017_AbdomenAtlas2.0_base_pancreas' + planner: 'nnUNetPlans_3d_fullres' + data_file: 'data_split/pancreas/splits_final.json' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_base_stage1.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_base_stage1.yaml new file mode 100644 index 0000000000000000000000000000000000000000..37cfe5164f06d92ff0949e62be7c7d80f5f465a3 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_base_stage1.yaml @@ -0,0 +1,90 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg + cond_stage_trainable: false + conditioning_key: concat + image_size: 64 + channels: 4 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 8 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: 'models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 1 + num_workers: 5 + wrap: false + train: + target: ldm.data.volume_dataset_base.volume_train + params: + data_root: './data/nnUNet_preprocessed/' + data_name: 'Dataset200_Abdomen' + data_repeat: 100 + validation: + target: ldm.data.volume_dataset_base.volume_val + params: + data_root: './data/nnUNet_preprocessed/' + data_name: 'Dataset200_Abdomen' + + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 20000 + max_images: 8 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_base_stage2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_base_stage2.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e200c08d09a4d6664d0a910299cef4b52677c7c7 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_base_stage2.yaml @@ -0,0 +1,93 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg + cond_stage_trainable: false + conditioning_key: concat + image_size: 64 + channels: 4 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + ckpt_path: path-to-stage1-ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 8 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: 'models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 1 + num_workers: 5 + wrap: false + train: + target: ldm.data.volume_dataset_base.volume_train + params: + data_root: './data/nnUNet_preprocessed/' + data_name: 'Dataset200_Abdomen' + data_repeat: 100 + validation: + target: ldm.data.volume_dataset_base.volume_val + params: + data_root: './data/nnUNet_preprocessed/' + data_name: 'Dataset200_Abdomen' + + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 20000 + max_images: 8 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_slice.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_slice.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4c3360c0cda853d0b0d3b53c1d6bb8b73e8dc8e5 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_slice.yaml @@ -0,0 +1,94 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: pos_id + cond_stage_trainable: false + conditioning_key: crossattn + image_size: 64 + channels: 4 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 4 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 4, 2, 1 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 4, 4 ] + num_head_channels: 32 + use_spatial_transformer: True + transformer_depth: 1 + context_dim: 128 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: 'models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: + target: ldm.modules.encoders.modules.PositionalEmbedder + params: + dim: 128 + +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 5 + wrap: false + train: + target: ldm.data.slice_dataset.slice_train + params: + data_root: './data/nnUNet_preprocessed/' + data_name: 'Dataset200_Abdomen' + data_repeat: 300 + validation: + target: ldm.data.slice_dataset.slice_val + params: + data_root: './data/nnUNet_preprocessed/' + data_name: 'Dataset200_Abdomen' + + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 20000 + max_images: 8 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_stage1.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_stage1.yaml new file mode 100644 index 0000000000000000000000000000000000000000..645ae86af5143000dae304f9ac4a76d033a999b3 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_stage1.yaml @@ -0,0 +1,90 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: ref_and_volume_seg + cond_stage_trainable: false + conditioning_key: concat + image_size: 64 + channels: 4 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 12 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: 'models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 1 + num_workers: 5 + wrap: false + train: + target: ldm.data.volume_dataset.volume_train + params: + data_root: './data/nnUNet_preprocessed/' + data_name: 'Dataset200_Abdomen' + data_repeat: 100 + validation: + target: ldm.data.volume_dataset.volume_val + params: + data_root: './data/nnUNet_preprocessed/' + data_name: 'Dataset200_Abdomen' + + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 20000 + max_images: 8 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_stage2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_stage2.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6132ebfca21c0161b2fedad95f66608a3f3d0b51 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_stage2.yaml @@ -0,0 +1,92 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: ref_and_volume_seg + cond_stage_trainable: false + conditioning_key: concat + image_size: 64 + channels: 4 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + ckpt_path: path-to-stage1-ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 12 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: 'models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 1 + num_workers: 5 + wrap: false + train: + target: ldm.data.volume_dataset.volume_train + params: + data_root: './data/nnUNet_preprocessed/' + data_name: 'Dataset200_Abdomen' + data_repeat: 100 + validation: + target: ldm.data.volume_dataset.volume_val + params: + data_root: './data/nnUNet_preprocessed/' + data_name: 'Dataset200_Abdomen' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 20000 + max_images: 8 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_base_stage1.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_base_stage1.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6b707fb63b865776dacd93eb2af8c8b67a92f75c --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_base_stage1.yaml @@ -0,0 +1,90 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg + cond_stage_trainable: false + conditioning_key: concat + image_size: 64 + channels: 4 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 8 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: 'models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 1 + num_workers: 5 + wrap: false + train: + target: ldm.data.volume_dataset_base.volume_train + params: + data_root: './data/nnUNet_preprocessed/' + data_name: 'Dataset202_Brain' + data_repeat: 100 + validation: + target: ldm.data.volume_dataset_base.volume_val + params: + data_root: './data/nnUNet_preprocessed/' + data_name: 'Dataset202_Brain' + + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 20000 + max_images: 8 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_base_stage2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_base_stage2.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c22e3cae54b1c2b63ddd5e18f7129feb8c54bb3a --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_base_stage2.yaml @@ -0,0 +1,93 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg + cond_stage_trainable: false + conditioning_key: concat + image_size: 64 + channels: 4 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + ckpt_path: path-to-stage1-ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 8 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: 'models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 1 + num_workers: 5 + wrap: false + train: + target: ldm.data.volume_dataset_base.volume_train + params: + data_root: './data/nnUNet_preprocessed/' + data_name: 'Dataset202_Brain' + data_repeat: 100 + validation: + target: ldm.data.volume_dataset_base.volume_val + params: + data_root: './data/nnUNet_preprocessed/' + data_name: 'Dataset202_Brain' + + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 20000 + max_images: 8 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice.yaml new file mode 100644 index 0000000000000000000000000000000000000000..db27b89a55e936f1428e183e92bcbb971b77deb0 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice.yaml @@ -0,0 +1,90 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: masked_slice + cond_stage_trainable: false + conditioning_key: concat # crossattn + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 9 # 4 + out_channels: 4 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 32 # 32 + num_workers: 16 + wrap: false + train: + target: ldm.data.slice_dataset.slice_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + data_repeat: 200 # 1000 100 + validation: + target: ldm.data.slice_dataset.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + data_repeat: 80 # 1000 100 + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass.yaml new file mode 100644 index 0000000000000000000000000000000000000000..87b95745018d70ac2dc149d94f302b0ed54c29c2 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass.yaml @@ -0,0 +1,90 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: masked_slice + cond_stage_trainable: false + conditioning_key: concat # crossattn + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 9 # 4 + out_channels: 4 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 32 # 32 + num_workers: 12 + wrap: false + train: + target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset103_AbdomenAtlas2.0_base' + data_repeat: 4 # 1000 100 + validation: + target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset103_AbdomenAtlas2.0_base' + data_repeat: 80 # 1000 100 + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a87b5034aa78be063f904eff089a6edca0fbb610 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata.yaml @@ -0,0 +1,92 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: masked_slice + cond_stage_trainable: false + conditioning_key: concat # crossattn + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 9 # 4 + out_channels: 4 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 32 # 32 + num_workers: 12 + wrap: false + train: + target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset103_AbdomenAtlas2.0_base' + data_repeat: 4 # 1000 100 + data_file: 'data_split/splits_final_new.json' + validation: + target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset103_AbdomenAtlas2.0_base' + data_repeat: 80 # 1000 100 + data_file: 'data_split/splits_final_new.json' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata2.yaml new file mode 100644 index 0000000000000000000000000000000000000000..cea75aeaed628f090b2b13bfb1b452f7d33dd196 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata2.yaml @@ -0,0 +1,92 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: masked_slice + cond_stage_trainable: false + conditioning_key: concat # crossattn + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 9 # 4 + out_channels: 4 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 32 # 32 + num_workers: 12 + wrap: false + train: + target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset103_AbdomenAtlas2.0_base' + data_repeat: 4 # 1000 100 + data_file: 'data_split/splits_final_all.json' + validation: + target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset103_AbdomenAtlas2.0_base' + data_repeat: 10 # 1000 100 + data_file: 'data_split/splits_final_all.json' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata3.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata3.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ba7b7d038c08dee9c96533848b77ecba2facc29c --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata3.yaml @@ -0,0 +1,92 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: masked_slice + cond_stage_trainable: false + conditioning_key: concat # crossattn + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 9 # 4 + out_channels: 4 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 32 # 32 + num_workers: 12 + wrap: false + train: + target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset104_AbdomenAtlas2.0_1102' + data_repeat: 4 # 1000 100 + data_file: 'data_split/splits_final_all2.json' + validation: + target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset104_AbdomenAtlas2.0_1102' + data_repeat: 10 # 1000 100 + data_file: 'data_split/splits_final_all2.json' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata4.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata4.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e8236f13d1c8a0c3f02778fedf6944b13b99b51e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata4.yaml @@ -0,0 +1,92 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: masked_slice + cond_stage_trainable: false + conditioning_key: concat # crossattn + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 9 # 4 + out_channels: 4 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 32 # 32 + num_workers: 12 + wrap: false + train: + target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset105_AbdomenAtlas2.0_1106' + data_repeat: 4 # 1000 100 + data_file: 'data_split/splits_final_all3.json' + validation: + target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset105_AbdomenAtlas2.0_1106' + data_repeat: 10 # 1000 100 + data_file: 'data_split/splits_final_all3.json' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata_kl4.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata_kl4.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2f2a9a78fa498ad5bbbea7fb8d7ada95812564e1 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata_kl4.yaml @@ -0,0 +1,92 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: masked_slice + cond_stage_trainable: false + conditioning_key: concat # crossattn + image_size: 128 + channels: 7 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 128 + in_channels: 7 # 4 + out_channels: 3 # 4 + model_channels: 192 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f4/model.ckpt' + embed_dim: 3 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 3 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 16 # 32 + num_workers: 12 + wrap: false + train: + target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass_kl4.slice_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset104_AbdomenAtlas2.0_1102' + data_repeat: 4 # 1000 100 + data_file: 'data_split/splits_final_all2.json' + validation: + target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass_kl4.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset104_AbdomenAtlas2.0_1102' + data_repeat: 1 # 1000 100 + data_file: 'data_split/splits_final_all2.json' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100 + max_images: 24 + increase_log_steps: False + + trainer: + benchmark: True + # max_epochs: 400 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f764ddc774430556a7492a417e5688f69a9485e0 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class.yaml @@ -0,0 +1,90 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: masked_slice + cond_stage_trainable: false + conditioning_key: concat # crossattn + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 9 # 4 + out_channels: 4 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 32 # 32 + num_workers: 16 + wrap: false + train: + target: ldm.data.slice_dataset_abdomenatlas_resize.slice_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset100_AbdomenAtlasX' + data_repeat: 4 # 1000 100 + validation: + target: ldm.data.slice_dataset_abdomenatlas_resize.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset100_AbdomenAtlasX' + data_repeat: 80 # 1000 100 + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class_new.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class_new.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0784ba552c5e3c3e9737cc69b736cff142329eac --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class_new.yaml @@ -0,0 +1,90 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: masked_slice + cond_stage_trainable: false + conditioning_key: concat # crossattn + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 9 # 4 + out_channels: 4 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 32 # 32 + num_workers: 12 + wrap: false + train: + target: ldm.data.slice_dataset_abdomenatlas_28class.slice_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset101_AbdomenAtlasInternal' + data_repeat: 4 # 1000 100 + validation: + target: ldm.data.slice_dataset_abdomenatlas_28class.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset101_AbdomenAtlasInternal' + data_repeat: 80 # 1000 100 + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class_new_randomclass.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class_new_randomclass.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b1386468645c74fb00cd6e2499f8b4128fe77c50 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class_new_randomclass.yaml @@ -0,0 +1,98 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + # cond_stage_trainable: false + conditioning_key: crossattn # crossattn + text_enc: custom + image_size: 64 + channels: 8 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 8 # 4 + out_channels: 4 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/sd/qichen/full_ct_gen/latent-diffusion/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + # cond_stage_config: __is_first_stage__ + + cond_stage_config: + target: ldm.modules.encoders.modules.BERTEmbedder + params: + n_embed: 1280 + n_layer: 32 + +data: + target: main.DataModuleFromConfig + params: + batch_size: 2 # 32 + num_workers: 12 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv' + + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv' + labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 # 100 + max_images: 16 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class_new_randomclass_2k.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class_new_randomclass_2k.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b724f5a02400388737a6d5975216c16b4b3576b4 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class_new_randomclass_2k.yaml @@ -0,0 +1,91 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: masked_slice + cond_stage_trainable: false + conditioning_key: concat # crossattn + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 9 # 4 + out_channels: 4 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 32 # 32 + num_workers: 12 + wrap: false + train: + target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset101_AbdomenAtlasInternal' + data_repeat: 4 # 1000 100 + validation: + target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset101_AbdomenAtlasInternal' + data_repeat: 80 # 1000 100 + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True + max_epochs: 200 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1e7b20b53fa354c7bf821b0c697368fb1f02ed10 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten.yaml @@ -0,0 +1,90 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: masked_slice + cond_stage_trainable: false + conditioning_key: crossattn # crossattn + image_size: 64 + channels: 4 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 4 # 4 + out_channels: 4 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 32 # 32 + num_workers: 16 + wrap: false + train: + target: ldm.data.slice_dataset.slice_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + data_repeat: 200 # 1000 100 + validation: + target: ldm.data.slice_dataset.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + data_repeat: 80 # 1000 100 + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten2.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3a84d911b03025a442926e16167d77602ddcc52b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten2.yaml @@ -0,0 +1,92 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: masked_slice + cond_stage_trainable: false + conditioning_key: crossattn # crossattn + image_size: 64 + channels: 4 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 4 # 4 + out_channels: 4 # 4 + model_channels: 128 + attention_resolutions: [ 4, 2, 1 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 4, 4 ] + num_head_channels: 32 + use_spatial_transformer: True + transformer_depth: 1 + context_dim: 5 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 56 # 32 + num_workers: 16 + wrap: false + train: + target: ldm.data.slice_dataset.slice_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + data_repeat: 200 # 1000 100 + validation: + target: ldm.data.slice_dataset.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + data_repeat: 80 # 1000 100 + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100 + max_images: 56 + increase_log_steps: False + + trainer: + benchmark: True + max_epochs: 200 \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten3.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten3.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b654f88a0b2b96874b7d32e9643d8fc8ae7c1a2b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten3.yaml @@ -0,0 +1,92 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: masked_slice + cond_stage_trainable: false + conditioning_key: hybrid # crossattn + image_size: 64 + channels: 4 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 9 # 4 + out_channels: 4 # 4 + model_channels: 128 + attention_resolutions: [ 4, 2, 1 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 4, 4 ] + num_head_channels: 32 + use_spatial_transformer: True + transformer_depth: 1 + context_dim: 5 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 56 # 32 + num_workers: 16 + wrap: false + train: + target: ldm.data.slice_dataset.slice_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + data_repeat: 200 # 1000 100 + validation: + target: ldm.data.slice_dataset.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + data_repeat: 80 # 1000 100 + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100 + max_images: 56 + increase_log_steps: False + + trainer: + benchmark: True + max_epochs: 200 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten4.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten4.yaml new file mode 100644 index 0000000000000000000000000000000000000000..af302905d3c984295b6b777c4bb38213e23723f5 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten4.yaml @@ -0,0 +1,92 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: masked_slice + cond_stage_trainable: false + conditioning_key: crossattn # crossattn + image_size: 64 + channels: 4 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 4 # 4 + out_channels: 4 # 4 + model_channels: 224 + attention_resolutions: [ 4, 2, 1 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 4, 4 ] + num_head_channels: 32 + use_spatial_transformer: True + transformer_depth: 1 + context_dim: 5 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 48 # 32 + num_workers: 16 + wrap: false + train: + target: ldm.data.slice_dataset.slice_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + data_repeat: 200 # 1000 100 + validation: + target: ldm.data.slice_dataset.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + data_repeat: 80 # 1000 100 + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100 + max_images: 56 + increase_log_steps: False + + trainer: + benchmark: True + max_epochs: 200 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten5.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten5.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ae38ec78fd29f3f80d48e86b681e9fc1d0b7d1ff --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten5.yaml @@ -0,0 +1,92 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: masked_slice + cond_stage_trainable: false + conditioning_key: hybrid # crossattn + image_size: 64 + channels: 4 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 9 # 4 + out_channels: 4 # 4 + model_channels: 224 + attention_resolutions: [ 4, 2, 1 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 4, 4 ] + num_head_channels: 32 + use_spatial_transformer: True + transformer_depth: 1 + context_dim: 5 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 48 # 32 + num_workers: 16 + wrap: false + train: + target: ldm.data.slice_dataset.slice_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + data_repeat: 200 # 1000 100 + validation: + target: ldm.data.slice_dataset.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + data_repeat: 80 # 1000 100 + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100 + max_images: 56 + increase_log_steps: False + + trainer: + benchmark: True + max_epochs: 200 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_ch384.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_ch384.yaml new file mode 100644 index 0000000000000000000000000000000000000000..01ed38b74795928fe5a438c21f15edb33c3a6689 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_ch384.yaml @@ -0,0 +1,90 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: masked_slice + cond_stage_trainable: false + conditioning_key: concat # crossattn + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 9 # 4 + out_channels: 4 # 4 + model_channels: 384 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 32 # 32 + num_workers: 16 + wrap: false + train: + target: ldm.data.slice_dataset.slice_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + data_repeat: 200 # 1000 100 + validation: + target: ldm.data.slice_dataset.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + data_repeat: 80 # 1000 100 + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_ch512.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_ch512.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b8ac17442464075e48f803040701e1bb4a0a2dff --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_ch512.yaml @@ -0,0 +1,90 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: masked_slice + cond_stage_trainable: false + conditioning_key: concat # crossattn + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 9 # 4 + out_channels: 4 # 4 + model_channels: 512 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 32 # 32 + num_workers: 16 + wrap: false + train: + target: ldm.data.slice_dataset.slice_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + data_repeat: 200 # 1000 100 + validation: + target: ldm.data.slice_dataset.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' + data_repeat: 80 # 1000 100 + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_kidney.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_kidney.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6898365658ff7f724b73ba01bc274d44ff24150d --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_kidney.yaml @@ -0,0 +1,94 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: masked_slice + cond_stage_trainable: false + conditioning_key: concat # crossattn + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 9 # 4 + out_channels: 4 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 48 # 32 + num_workers: 16 + wrap: false + train: + target: ldm.data.slice_dataset.slice_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset018_AbdomenAtlas2.0_base_kidney' + planner: 'nnUNetPlans_3d_fullres' + data_file: 'data_split/kidney/splits_final.json' + data_repeat: 20 # 1000 100 + validation: + target: ldm.data.slice_dataset.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset018_AbdomenAtlas2.0_base_kidney' + planner: 'nnUNetPlans_3d_fullres' + data_file: 'data_split/kidney/splits_final.json' + data_repeat: 20 # 1000 100 + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_pancreas.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_pancreas.yaml new file mode 100644 index 0000000000000000000000000000000000000000..8673c4b8f22f107824ed008044bb59a3e2f31f82 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_pancreas.yaml @@ -0,0 +1,94 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: slice_data + cond_stage_key: masked_slice + cond_stage_trainable: false + conditioning_key: concat # crossattn + image_size: 64 + channels: 9 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 9 # 4 + out_channels: 4 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 48 # 32 + num_workers: 16 + wrap: false + train: + target: ldm.data.slice_dataset.slice_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset017_AbdomenAtlas2.0_base_pancreas' + planner: 'nnUNetPlans_3d_fullres' + data_file: 'data_split/pancreas/splits_final.json' + data_repeat: 50 # 1000 100 + validation: + target: ldm.data.slice_dataset.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset017_AbdomenAtlas2.0_base_pancreas' + planner: 'nnUNetPlans_3d_fullres' + data_file: 'data_split/pancreas/splits_final.json' + data_repeat: 20 # 1000 100 + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 32 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_stage1.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_stage1.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a3ab2756587418343eef51b37e1d70f01577a216 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_stage1.yaml @@ -0,0 +1,90 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: ref_and_volume_seg + cond_stage_trainable: false + conditioning_key: concat + image_size: 64 + channels: 4 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 12 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: 'models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 1 + num_workers: 5 + wrap: false + train: + target: ldm.data.volume_dataset.volume_train + params: + data_root: '/storage/chenqi/data/gem_3d_data/nnUNet_preprocessed/' + data_name: 'Dataset202_Brain' + data_repeat: 100 + validation: + target: ldm.data.volume_dataset.volume_val + params: + data_root: '/storage/chenqi/data/gem_3d_data/nnUNet_preprocessed/' + data_name: 'Dataset202_Brain' + + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 20000 + max_images: 8 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_stage2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_stage2.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c90408472e62f1a13e009e02e99ba7f07dac72e6 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_stage2.yaml @@ -0,0 +1,93 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: ref_and_volume_seg + cond_stage_trainable: false + conditioning_key: concat + image_size: 64 + channels: 4 + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + ckpt_path: path-to-stage1-ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 12 + out_channels: 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: false + transformer_depth: 1 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + ckpt_path: 'models/first_stage_models/kl-f8/model.ckpt' + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + cond_stage_config: __is_first_stage__ + +data: + target: main.DataModuleFromConfig + params: + batch_size: 1 + num_workers: 5 + wrap: false + train: + target: ldm.data.volume_dataset.volume_train + params: + data_root: './data/nnUNet_preprocessed/' + data_name: 'Dataset202_Brain' + data_repeat: 100 + validation: + target: ldm.data.volume_dataset.volume_val + params: + data_root: './data/nnUNet_preprocessed/' + data_name: 'Dataset202_Brain' + + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 20000 + max_images: 8 + increase_log_steps: False + + trainer: + benchmark: True \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b4038ffac8caf74db49fdb7dc87ad0dbd03c4745 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask.yaml @@ -0,0 +1,67 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + # cond_stage_trainable: false + conditioning_key: crossattn # crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.52 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 32 # 4 + out_channels: 16 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: True + legacy: False + +data: + target: main.DataModuleFromConfig + params: + batch_size: 8 # 32 + num_workers: 12 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv' + + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv' + labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 # 100 + max_images: 16 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask2.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2ffca8f631a80af53ebca26c877095e483dfd949 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask2.yaml @@ -0,0 +1,67 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + # cond_stage_trainable: false + conditioning_key: crossattn # crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.5 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 32 # 4 + out_channels: 16 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: True + legacy: False + +data: + target: main.DataModuleFromConfig + params: + batch_size: 8 # 32 + num_workers: 12 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv' + + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv' + labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 # 100 + max_images: 16 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask3.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask3.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f57bb7c6736731ab039bb1264b1f4549f2da43b7 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask3.yaml @@ -0,0 +1,67 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + # cond_stage_trainable: false + conditioning_key: crossattn # crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.51 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 32 # 4 + out_channels: 16 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: True + legacy: False + +data: + target: main.DataModuleFromConfig + params: + batch_size: 8 # 32 + num_workers: 12 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv' + + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv' + labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 # 100 + max_images: 16 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask4.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask4.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b4038ffac8caf74db49fdb7dc87ad0dbd03c4745 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask4.yaml @@ -0,0 +1,67 @@ +model: + base_learning_rate: 5.0e-7 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + # cond_stage_trainable: false + conditioning_key: crossattn # crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.52 + use_ema: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 32 # 4 + out_channels: 16 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: True + legacy: False + +data: + target: main.DataModuleFromConfig + params: + batch_size: 8 # 32 + num_workers: 12 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv' + + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv' + labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 # 100 + max_images: 16 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e8f1d72ffebfb9cbe5689decbe05b018f53cd8db --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask.yaml @@ -0,0 +1,70 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + # cond_stage_trainable: false + conditioning_key: crossattn # crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.52 + use_ema: False + ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 32 # 4 + out_channels: 16 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: True + legacy: False + +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv' + + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv' + labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask2.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e8f1d72ffebfb9cbe5689decbe05b018f53cd8db --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask2.yaml @@ -0,0 +1,70 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + # cond_stage_trainable: false + conditioning_key: crossattn # crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.52 + use_ema: False + ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 32 # 4 + out_channels: 16 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: True + legacy: False + +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv' + + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv' + labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask2_finetune.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask2_finetune.yaml new file mode 100644 index 0000000000000000000000000000000000000000..033260c6cfa4181cbd87dc28c252aa8b0e2090ef --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask2_finetune.yaml @@ -0,0 +1,71 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + # cond_stage_trainable: false + conditioning_key: crossattn # crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.52 + use_ema: False + ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae/logs/full_ct_2d_with_body_mask4/checkpoints/epoch=000833.ckpt + # ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae/logs/full_ct_2d_with_body_mask/checkpoints/base.ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 32 # 4 + out_channels: 16 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: True + legacy: False + +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv' + + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv' + labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask2_finetune2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask2_finetune2.yaml new file mode 100644 index 0000000000000000000000000000000000000000..621c875b2faff63b17e93a097d1f41b7b0b249e9 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask2_finetune2.yaml @@ -0,0 +1,70 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + # cond_stage_trainable: false + conditioning_key: crossattn # crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.52 + use_ema: False + ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae/logs/full_ct_2d_with_body_mask4/checkpoints/epoch=000833.ckpt + load_only_unet: True + fix_t: False + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 32 # 4 + out_channels: 16 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: True + legacy: False + +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv' + + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv' + labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask_finetune.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask_finetune.yaml new file mode 100644 index 0000000000000000000000000000000000000000..14b225d0b231cd329c57257b5b441338773e7631 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask_finetune.yaml @@ -0,0 +1,70 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + # cond_stage_trainable: false + conditioning_key: crossattn # crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.0 + use_ema: False + ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae/logs/full_ct_2d_with_body_mask/checkpoints/base.ckpt + load_only_unet: True + fix_t: True + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 32 # 4 + out_channels: 16 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: True + legacy: False + +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv' + + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv' + labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask_finetune2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask_finetune2.yaml new file mode 100644 index 0000000000000000000000000000000000000000..37017b47fe7ee6ef9c2e9f0efe53fe98bf8adb09 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask_finetune2.yaml @@ -0,0 +1,70 @@ +model: + base_learning_rate: 5.0e-6 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + # cond_stage_trainable: false + conditioning_key: crossattn # crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.0 + use_ema: False + ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae/logs/full_ct_2d_with_body_mask/checkpoints/base.ckpt + load_only_unet: True + fix_t: False + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 32 # 4 + out_channels: 16 # 4 + model_channels: 224 + attention_resolutions: [ 8, 4, 2 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 3, 4 ] + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: True + legacy: False + +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv' + + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed' + csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv' + labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv' + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: False + + trainer: + benchmark: True diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3919299787898eaa15bf2594bc571d4ac998de98 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen.yaml @@ -0,0 +1,11 @@ +data: + target: main.DataModuleFromConfig + params: + batch_size: 1 + num_workers: 5 + wrap: false + validation: + target: ldm.data.slice_dataset_infer.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen3d.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen3d.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f87d78f163e381bcd8ddcd03ad061a5e8c19c5c7 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen3d.yaml @@ -0,0 +1,12 @@ +data: + target: main.DataModuleFromConfig + params: + batch_size: 1 + num_workers: 5 + wrap: false + validation: + # target: ldm.data.volume_dataset_infer.volume_val + target: ldm.data.volume_dataset_infer.volume_train + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen_28class_randomclass.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen_28class_randomclass.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b1fda1e8074104293585b7fb56c408b640997a90 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen_28class_randomclass.yaml @@ -0,0 +1,11 @@ +data: + target: main.DataModuleFromConfig + params: + batch_size: 1 + num_workers: 5 + wrap: false + validation: + target: ldm.data.slice_dataset_infer_28class_randomclass.slice_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen_test.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..99590484c0d32f7260e344f2245da263aa6284a3 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen_test.yaml @@ -0,0 +1,11 @@ +data: + target: main.DataModuleFromConfig + params: + batch_size: 1 + num_workers: 5 + wrap: false + validation: + target: ldm.data.volume_dataset.volume_test + params: + data_root: './data/nnUNet_preprocessed/' + data_name: 'Dataset201_Abdomen_test' \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_brain.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_brain.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1e52b9de4d46b2d3d50575996a06db5f1a80ef6f --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_brain.yaml @@ -0,0 +1,11 @@ +data: + target: main.DataModuleFromConfig + params: + batch_size: 1 + num_workers: 5 + wrap: false + validation: + target: ldm.data.volume_dataset.volume_test + params: + data_root: './data/nnUNet_preprocessed/' + data_name: 'Dataset202_Brain' \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_brain_test.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_brain_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..80bcabf1bd9acfe663f6b4bb835ea575891d37ab --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_brain_test.yaml @@ -0,0 +1,11 @@ +data: + target: main.DataModuleFromConfig + params: + batch_size: 1 + num_workers: 5 + wrap: false + validation: + target: ldm.data.volume_dataset.volume_test + params: + data_root: './data/nnUNet_preprocessed/' + data_name: 'Dataset203_Brain_test' \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/mask_generation.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/mask_generation.yaml new file mode 100644 index 0000000000000000000000000000000000000000..09ed691b3a1209780a1d5644e9b1e3e00ad8908e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/mask_generation.yaml @@ -0,0 +1,11 @@ +data: + target: main.DataModuleFromConfig + params: + batch_size: 1 + num_workers: 5 + wrap: false + validation: + target: ldm.data.mask_generation.volume_val + params: + data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/' + data_name: 'Dataset010_MSD_Liver' \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split.py new file mode 100644 index 0000000000000000000000000000000000000000..93e6e36f375bf381c00ef6dd8eadcd2138f27c7f --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split.py @@ -0,0 +1,43 @@ +import random +import os + +# 设定文件路径 +train_file = 'train.txt' # 训练集输出文件 +eval_file = 'eval.txt' # 验证集输出文件 +test_file = 'test.txt' # 测试集输出文件 + +# 读取数据 +data = sorted(os.listdir('/storage/chenqi/data/BraTS_2019_Data_Training/All')) + +# 随机打乱数据 +random.shuffle(data) + +# 计算各个数据集的大小 +train_size = 290 +eval_size = 8 +test_size = 37 + +# 划分数据集 +train_data = data[:train_size] +eval_data = data[train_size:train_size + eval_size] +test_data = data[train_size + eval_size:] + +# 保存到txt文件 +with open(train_file, 'w') as file: + for i in train_data: + file.write(i) + file.write('\n') + +with open(eval_file, 'w') as file: + for i in eval_data: + file.write(i) + file.write('\n') + + +with open(test_file, 'w') as file: + for i in test_data: + file.write(i) + file.write('\n') + + +print(f"数据集已划分完成,并分别保存为: {train_file}, {eval_file}, {test_file}") diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/colon_json.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/colon_json.py new file mode 100644 index 0000000000000000000000000000000000000000..8cab94d85965ff5a548586f5a98641e39d48417a --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/colon_json.py @@ -0,0 +1,32 @@ +import os +from batchgenerators.utilities.file_and_folder_operations import join, load_json, isfile, save_json, maybe_mkdir_p +import csv + +with open('/storage/chenqi/X_data/annotatedtumor_txt/colon_tumor_cases.txt', 'r') as f: + all_files=f.readlines() +all_files = [os.path.basename(i.split(' ')[0]).split('.')[0] for i in all_files] +all_files = [i.split('\n')[0] for i in all_files] + +with open('/storage/chenqi/code/DiffTumor/STEP3.SegmentationModel/cross_eval/colon_tumor_data_fold/real_tumor_val_1.txt', 'r') as f: + val_liver=f.readlines() +val_liver = [os.path.basename(i.split(' ')[0]).split('.')[0] for i in val_liver] + +cases_info = [*csv.DictReader(open('final_mapping_qichen.csv'))] + +val_bdmap=[] +for i in cases_info: + if i['source_dataset'] == 'MSD-Colon': + for j in val_liver: + if j == i['source_id']: + val_bdmap.append(i['AbdomenAtlas_id']) + + +breakpoint() +write_content = [] +train_liver = list(set(all_files) - set(val_bdmap)) +write_content.append({"train":train_liver, "val":val_bdmap}) + +# breakpoint() + +splits_file = 'splits_final_colon_bdmap.json' +save_json(write_content, splits_file) diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/eso_json.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/eso_json.py new file mode 100644 index 0000000000000000000000000000000000000000..6843ae6df17c1d32f9eb3c846882ded8f8f5d2d5 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/eso_json.py @@ -0,0 +1,18 @@ +import os +from batchgenerators.utilities.file_and_folder_operations import join, load_json, isfile, save_json, maybe_mkdir_p +import csv + + +all_files = os.listdir('/storage/chenqi/X_data/esophagus_BodyMapPro') +val_files = load_json('/storage/chenqi/code/GEM-3D-ct/data_split/splits_final_eso_bdmap.json')[0]['val'] + + +write_content = [] +train_liver = list(set(all_files) - set(val_files)) +# breakpoint() +write_content.append({"train":train_liver, "val":val_files}) + +# breakpoint() + +splits_file = 'splits_eso.json' +save_json(write_content, splits_file) diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/final_mapping_qichen.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/final_mapping_qichen.csv new file mode 100644 index 0000000000000000000000000000000000000000..9f74411ae7b5e01687f94bf9ea29fd937b9213b8 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/final_mapping_qichen.csv @@ -0,0 +1,5196 @@ +AbdomenAtlas_id,source_id,source_dataset,liver,pancreas,kidney +BDMAP_00000001,PETCT_404f8c732f,autoPET,unknown,unknown,unknown +BDMAP_00000002,PANCREAS_0039,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00000003,s0543,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000004,colon_195,MSD-Colon,unknown,unknown,unknown +BDMAP_00000005,TCIAColon_0256_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00000006,PETCT_63464433c8,autoPET,unknown,unknown,unknown +BDMAP_00000007,hepaticvessel_447,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000008,case_00280,KiTS19,unknown,unknown,unhealthy +BDMAP_00000009,word_0086,WORD,unknown,unknown,unknown +BDMAP_00000010,PETCT_f637b5930b,autoPET,unknown,unknown,unknown +BDMAP_00000011,PETCT_49479d6e64,autoPET,unknown,unknown,unknown +BDMAP_00000012,TCIAColon_0300_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00000013,hepaticvessel_200,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000014,s0904,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000015,hepaticvessel_406,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000016,LDCT-L277_0_1,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00000017,FLARE23_Ts_0084_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000018,s1089,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000019,TCIAColon_0233_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00000020,img0034,BTCV,healthy,healthy,healthy +BDMAP_00000021,s0369,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000022,TCIAColon_0249_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000023,case_00228,KiTS21,unknown,unknown,unhealthy +BDMAP_00000024,pancreas_476,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000025,hepaticvessel_343,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000026,NIH-LYMPH-ABD-041_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00000027,colon_188,MSD-Colon,unknown,unknown,unknown +BDMAP_00000028,Case_01035_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000029,hepaticvessel_334,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000030,colon_139,MSD-Colon,unknown,unknown,unknown +BDMAP_00000031,PETCT_b53ba7c6bf,autoPET,unknown,unknown,unknown +BDMAP_00000032,PETCT_5d553bf6b4,autoPET,unknown,unknown,unknown +BDMAP_00000033,PETCT_ba81e4b04b,autoPET,unknown,unknown,unknown +BDMAP_00000034,case_00268,KiTS21,unknown,unknown,unhealthy +BDMAP_00000035,hepaticvessel_325,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000036,case_00401,KiTS23,unknown,unknown,unhealthy +BDMAP_00000037,hepaticvessel_036,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000038,hepaticvessel_199,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000039,case_00066,KiTS21,unknown,unknown,unhealthy +BDMAP_00000040,TCIAColon_0262_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000041,PETCT_f5c2c09846,autoPET,unknown,unknown,unknown +BDMAP_00000042,s0250,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000043,case_00298,KiTS21,unknown,unknown,unhealthy +BDMAP_00000044,case_00512,KiTS23,unknown,unknown,unhealthy +BDMAP_00000045,colon_128,MSD-Colon,unknown,unknown,unknown +BDMAP_00000046,CPTAC-PDA-C3N-02010_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00000047,Case_00056_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000048,TCIAColon_0188_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00000049,Case_00535_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000050,amos_0059,AMOS,unknown,unknown,unknown +BDMAP_00000051,s1374,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000052,pancreas_385,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000053,PETCT_2ce074c2ea,autoPET,unknown,unknown,unknown +BDMAP_00000054,CPTAC-PDA-C3N-03000_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00000055,pancreas_014,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000056,spleen_33,MSD-Spleen,unknown,unknown,unknown +BDMAP_00000057,TCIAColon_0166_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000058,LDCT-L193_0_1,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00000059,case_00286,KiTS21,unknown,unknown,unhealthy +BDMAP_00000060,TCIAColon_0232_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000061,s1348,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000062,case_00017,KiTS21,unknown,unknown,unhealthy +BDMAP_00000063,TCIAColon_0161_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000064,liver_148,MSD-Liver,unknown,unknown,unknown +BDMAP_00000065,LDCT-L219_0_1,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00000066,case_00116,KiTS21,unknown,unknown,unhealthy +BDMAP_00000067,TCIAColon_0082_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000068,Case_00799_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000069,colon_012,MSD-Colon,unknown,unknown,unknown +BDMAP_00000070,s0429,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000071,amos_0044,AMOS,unknown,unknown,unknown +BDMAP_00000072,PETCT_5de3ac617a,autoPET,unknown,unknown,unknown +BDMAP_00000073,PETCT_ded50b1e68,autoPET,unknown,unknown,unknown +BDMAP_00000074,lung_016,MSD-Lung,unknown,unknown,unknown +BDMAP_00000075,hepaticvessel_005,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000076,amos_0159,AMOS,unknown,unknown,unknown +BDMAP_00000077,PETCT_6170317f2e,autoPET,unknown,unknown,unknown +BDMAP_00000078,lung_003,MSD-Lung,unknown,unknown,unknown +BDMAP_00000079,s0896,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000080,TCIAColon_0286_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000081,PETCT_2a78eed085,autoPET,unknown,unknown,unknown +BDMAP_00000082,colon_150,MSD-Colon,unknown,unknown,unknown +BDMAP_00000083,PETCT_61348439bf,autoPET,unknown,unknown,unknown +BDMAP_00000084,liver_59,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000085,PETCT_b2f82ed4b9,autoPET,unknown,unknown,unknown +BDMAP_00000086,TCGA-BLCA-4Z-AA86_0_3,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00000087,pancreas_346,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000088,PETCT_d3dac0d1cd,autoPET,unknown,unknown,unknown +BDMAP_00000089,amos_0038,AMOS,unknown,unknown,unknown +BDMAP_00000090,case_00147,KiTS19,unknown,unknown,unhealthy +BDMAP_00000091,liver_38,LiTS,healthy,unknown,unknown +BDMAP_00000092,FLARE23_Ts_0016_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000093,pancreas_348,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000094,hepaticvessel_431,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000095,Case_00773_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000096,colon_084,MSD-Colon,unknown,unknown,unknown +BDMAP_00000097,TCIAColon_0260_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000098,PETCT_90ea6a6aaf,autoPET,unknown,unknown,unknown +BDMAP_00000099,TCIAColon_0154_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000100,liver_71,LiTS,unhealthy,unknown,unknown +BDMAP_00000101,liver_13,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000102,case_00272,KiTS19,unknown,unknown,unhealthy +BDMAP_00000103,TCIAColon_0102_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000104,case_00130,KiTS21,unknown,unknown,unhealthy +BDMAP_00000105,hepaticvessel_186,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000106,CPTAC-PDA-C3N-03670_0_7,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00000107,TCIAColon_0195_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00000108,s0342,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000109,img0040,BTCV,healthy,healthy,healthy +BDMAP_00000110,PANCREAS_0021,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00000111,lung_086,MSD-Lung,unknown,unknown,unknown +BDMAP_00000112,hepaticvessel_172,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000113,liver_113,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000114,TCIAColon_0122_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00000115,hepaticvessel_354,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000116,CPTAC-PDA-C3N-03670_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00000117,case_00188,KiTS21,unknown,unknown,unhealthy +BDMAP_00000118,volume-20,CT-ORG,unknown,unknown,unknown +BDMAP_00000119,PETCT_6604b228c6,autoPET,unknown,unknown,unknown +BDMAP_00000120,PETCT_d6a491e16d,autoPET,unknown,unknown,unknown +BDMAP_00000121,hepaticvessel_169,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000122,case_00473,KiTS23,unknown,unknown,unhealthy +BDMAP_00000123,CPTAC-PDA-C3N-01167_0_6,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00000124,Case_00002_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000125,pancreas_468,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000126,s0090,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000127,s0899,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000128,case_00270,KiTS21,unknown,unknown,unhealthy +BDMAP_00000129,case_00264,KiTS19,unknown,unknown,unhealthy +BDMAP_00000130,PETCT_0f44cec2e6,autoPET,unknown,unknown,unknown +BDMAP_00000131,pancreas_121,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000132,colon_069,MSD-Colon,unknown,unknown,unknown +BDMAP_00000133,PETCT_442a09f90e,autoPET,unknown,unknown,unknown +BDMAP_00000134,hepaticvessel_195,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000135,TCGA-STAD-A8DU_0_2,TCGA-STAD,unknown,unknown,unknown +BDMAP_00000136,s0606,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000137,case_00129,KiTS21,unknown,unknown,unhealthy +BDMAP_00000138,colon_166,MSD-Colon,unknown,unknown,unknown +BDMAP_00000139,case_00233,KiTS21,unknown,unknown,unhealthy +BDMAP_00000140,liver_119,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000141,img0064,BTCV,healthy,healthy,healthy +BDMAP_00000142,s0477,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000143,hepaticvessel_424,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000144,TCIAColon_0242_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000145,TCIAColon_0240_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000146,PETCT_ca47fe5e7d,autoPET,unknown,unknown,unknown +BDMAP_00000147,PETCT_8eb3998417,autoPET,unknown,unknown,unknown +BDMAP_00000148,s0428,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000149,case_00460,KiTS23,unknown,unknown,unhealthy +BDMAP_00000150,s1405,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000151,amos_0288,AMOS,unknown,unknown,unknown +BDMAP_00000152,colon_051,MSD-Colon,unknown,unknown,unknown +BDMAP_00000153,hepaticvessel_194,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000154,pancreas_255,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000155,hepaticvessel_167,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000156,TCIAColon_0207_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000157,pancreas_306,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000158,TCIAColon_0055_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000159,case_00243,KiTS21,unknown,unknown,unhealthy +BDMAP_00000160,amos_0231,AMOS,unknown,unknown,unknown +BDMAP_00000161,case_00579,KiTS23,unknown,unknown,unhealthy +BDMAP_00000162,case_00205,KiTS21,unknown,unknown,unhealthy +BDMAP_00000163,PETCT_13f476b02b,autoPET,unknown,unknown,unknown +BDMAP_00000164,TCIAColon_0116_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000165,s0143,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000166,lung_081,MSD-Lung,unknown,unknown,unknown +BDMAP_00000167,case_00292,KiTS19,unknown,unknown,unhealthy +BDMAP_00000168,TCIAColon_0065_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000169,TCIAColon_0206_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000170,TCIAColon_0020_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00000171,hepaticvessel_027,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000172,hepaticvessel_398,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000173,TCIAColon_0001_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000174,s0257,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000175,PETCT_7a3a27371a,autoPET,unknown,unknown,unknown +BDMAP_00000176,case_00529,KiTS23,unknown,unknown,unhealthy +BDMAP_00000177,PETCT_d3f13dff4b,autoPET,unknown,unknown,unknown +BDMAP_00000178,Case_00675_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000179,TCIAColon_0132_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000180,TCIAColon_0036_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000181,TCIAColon_0047_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000182,CPTAC-PDA-C3N-03430_0_13,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00000183,TCIAColon_0134_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000184,s0657,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000185,FLARE23_Ts_0097_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000186,volume-48,CT-ORG,unknown,unknown,unknown +BDMAP_00000187,hepaticvessel_355,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000188,NIH-LYMPH-MED-016_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00000189,hepaticvessel_332,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000190,colon_133,MSD-Colon,unknown,unknown,unknown +BDMAP_00000191,TCIAColon_0046_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000192,pancreas_199,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000193,TCIAColon_0006_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000194,PETCT_80f21e1ed0,autoPET,unknown,unknown,unknown +BDMAP_00000195,amos_0214,AMOS,unknown,unknown,unknown +BDMAP_00000196,PETCT_335a00191d,autoPET,unknown,unknown,unknown +BDMAP_00000197,pancreas_409,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000198,PANCREAS_0044,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00000199,s1069,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000200,word_0139,WORD,unknown,unknown,unknown +BDMAP_00000201,hepaticvessel_222,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000202,TCIAColon_0120_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000203,Case_00708_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000204,hepaticvessel_134,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000205,liver_14,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000206,s1221,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000207,PETCT_b62864161e,autoPET,unknown,unknown,unknown +BDMAP_00000208,5_image,CHAOS,healthy,healthy,healthy +BDMAP_00000209,Case_00900_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000210,hepaticvessel_012,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000211,Case_00791_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000212,PETCT_a8a5e96821,autoPET,unknown,unknown,unknown +BDMAP_00000213,PETCT_05d5a79faf,autoPET,unknown,unknown,unknown +BDMAP_00000214,word_0029,WORD,unknown,unknown,unknown +BDMAP_00000215,FLARE23_Ts_0036_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000216,hepaticvessel_303,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000217,s0182,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000218,TCIAColon_0063_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000219,case_00523,KiTS23,unknown,unknown,unhealthy +BDMAP_00000220,img0009,BTCV,healthy,healthy,healthy +BDMAP_00000221,FLARE23_Ts_0064_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000222,s0394,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000223,colon_200,MSD-Colon,unknown,unknown,unknown +BDMAP_00000224,Case_00762_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000225,pancreas_370,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000226,colon_156,MSD-Colon,unknown,unknown,unknown +BDMAP_00000227,s0344,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000228,Case_00029_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000229,case_00070,KiTS21,unknown,unknown,unhealthy +BDMAP_00000230,TCIAColon_0256_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000231,PETCT_07fec0d985,autoPET,unknown,unknown,unknown +BDMAP_00000232,liver_81,LiTS,unhealthy,unknown,unknown +BDMAP_00000233,case_00472,KiTS23,unknown,unknown,unhealthy +BDMAP_00000234,PETCT_24cb79a92b,autoPET,unknown,unknown,unknown +BDMAP_00000235,lung_054,MSD-Lung,unknown,unknown,unknown +BDMAP_00000236,pancreas_301,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000237,PETCT_5e0bc6cdda,autoPET,unknown,unknown,unknown +BDMAP_00000238,TCIAColon_0154_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000239,hepaticvessel_032,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000240,case_00412,KiTS23,unknown,unknown,unhealthy +BDMAP_00000241,case_00566,KiTS23,unknown,unknown,unhealthy +BDMAP_00000242,PETCT_2946d59a94,autoPET,unknown,unknown,unknown +BDMAP_00000243,pancreas_241,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000244,case_00299,KiTS21,unknown,unknown,unhealthy +BDMAP_00000245,case_00400,KiTS23,unknown,unknown,unhealthy +BDMAP_00000246,PANCREAS_0040,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00000247,liver_77,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000248,TCIAColon_0225_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000249,case_00293,KiTS19,unknown,unknown,unhealthy +BDMAP_00000250,CPTAC-UCEC-C3L-01732_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00000251,pancreas_494,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000252,word_0123,WORD,unknown,unknown,unknown +BDMAP_00000253,PETCT_e00c98b415,autoPET,unknown,unknown,unknown +BDMAP_00000254,amos_0348,AMOS,unknown,unknown,unknown +BDMAP_00000255,hepaticvessel_071,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000256,FLARE23_Ts_0014_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000257,amos_0115,AMOS,unknown,unknown,unknown +BDMAP_00000258,hepaticvessel_189,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000259,case_00584,KiTS23,unknown,unknown,unhealthy +BDMAP_00000260,PETCT_d6de1252d9,autoPET,unknown,unknown,unknown +BDMAP_00000261,FLARE23_Ts_0080_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000262,NIH-LYMPH-MED-003_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00000263,case_00174,KiTS21,unknown,unknown,unhealthy +BDMAP_00000264,colon_092,MSD-Colon,unknown,unknown,unknown +BDMAP_00000265,PETCT_aa27cb9156,autoPET,unknown,unknown,unknown +BDMAP_00000266,PETCT_c3cc732d95,autoPET,unknown,unknown,unknown +BDMAP_00000267,s1337,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000268,hepaticvessel_418,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000269,PETCT_072833774e,autoPET,unknown,unknown,unknown +BDMAP_00000270,hepaticvessel_139,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000271,CPTAC-PDA-C3N-02997_0_5,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00000272,amos_0152,AMOS,unknown,unknown,unknown +BDMAP_00000273,liver_40,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000274,PETCT_49f3d297b0,autoPET,unknown,unknown,unknown +BDMAP_00000275,s1210,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000276,PETCT_baacf43b4f,autoPET,unknown,unknown,unknown +BDMAP_00000277,PETCT_f60ea3abc5,autoPET,unknown,unknown,unknown +BDMAP_00000278,hepaticvessel_378,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000279,case_00054,KiTS21,unknown,unknown,unhealthy +BDMAP_00000280,Case_00853_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000281,PETCT_0223010e46,autoPET,unknown,unknown,unknown +BDMAP_00000282,TCIAColon_0139_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00000283,volume-111,CT-ORG,unknown,unknown,unknown +BDMAP_00000284,Case_00910_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000285,case_00487,KiTS23,unknown,unknown,unhealthy +BDMAP_00000286,PETCT_4c670a5445,autoPET,unknown,unknown,unknown +BDMAP_00000287,Case_00951_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000288,s0620,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000289,TCIAColon_0021_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00000290,CPTAC-PDA-C3N-03430_1_8,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00000291,amos_0103,AMOS,unknown,unknown,unknown +BDMAP_00000292,volume-86,CT-ORG,unknown,unknown,unknown +BDMAP_00000293,CPTAC-CCRCC-C3N-00312_0_4,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00000294,PETCT_69ee62b035,autoPET,unknown,unknown,unknown +BDMAP_00000295,TCIAColon_0060_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00000296,TCIAColon_0119_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000297,case_00432,KiTS23,unknown,unknown,unhealthy +BDMAP_00000298,s0721,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000299,hepaticvessel_037,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000300,PETCT_f47e31ceb5,autoPET,unknown,unknown,unknown +BDMAP_00000301,PETCT_47f4460050,autoPET,unknown,unknown,unknown +BDMAP_00000302,s0330,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000303,TCIAColon_0114_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000304,case_00112,KiTS21,unknown,unknown,unhealthy +BDMAP_00000305,PETCT_cf20ad1656,autoPET,unknown,unknown,unknown +BDMAP_00000306,liver_191,MSD-Liver,unknown,unknown,unknown +BDMAP_00000307,TCIAColon_0158_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000308,s0752,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000309,FLARE23_Ts_0090_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000310,hepaticvessel_181,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000311,PETCT_6d62e15c29,autoPET,unknown,unknown,unknown +BDMAP_00000312,word_0073,WORD,unknown,unknown,unknown +BDMAP_00000313,hepaticvessel_300,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000314,amos_0404,AMOS,unknown,unknown,unknown +BDMAP_00000315,s0243,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000316,hepaticvessel_326,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000317,PETCT_f4813007a0,autoPET,unknown,unknown,unknown +BDMAP_00000318,PETCT_080922db5a,autoPET,unknown,unknown,unknown +BDMAP_00000319,case_00230,KiTS21,unknown,unknown,unhealthy +BDMAP_00000320,case_00461,KiTS23,unknown,unknown,unhealthy +BDMAP_00000321,case_00109,KiTS21,unknown,unknown,unhealthy +BDMAP_00000322,hepaticvessel_457,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000323,TCIAColon_0241_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000324,pancreas_355,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000325,hepaticvessel_175,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000326,amos_0332,AMOS,unknown,unknown,unknown +BDMAP_00000327,TCGA-OV-61-1901_1_1,TCGA-OV,unknown,unknown,unknown +BDMAP_00000328,pancreas_432,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000329,case_00481,KiTS23,unknown,unknown,unhealthy +BDMAP_00000330,PETCT_e344879c2e,autoPET,unknown,unknown,unknown +BDMAP_00000331,case_00182,KiTS21,unknown,unknown,unhealthy +BDMAP_00000332,pancreas_104,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000333,PETCT_f5cff2e59d,autoPET,unknown,unknown,unknown +BDMAP_00000334,PETCT_f21755a99b,autoPET,unknown,unknown,unknown +BDMAP_00000335,s1368,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000336,case_00235,KiTS19,unknown,unknown,unhealthy +BDMAP_00000337,TCIAColon_0077_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000338,pancreas_091,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000339,TCIAColon_0084_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00000340,PETCT_dd887591a9,autoPET,unknown,unknown,unknown +BDMAP_00000341,s0663,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000342,amos_0064,AMOS,unknown,unknown,unknown +BDMAP_00000343,PETCT_b1219c408b,autoPET,unknown,unknown,unknown +BDMAP_00000344,TCIAColon_0079_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000345,colon_103,MSD-Colon,unknown,unknown,unknown +BDMAP_00000346,FLARE23_Ts_0047_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000347,liver_95,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000348,PETCT_1f6b6b0548,autoPET,unknown,unknown,unknown +BDMAP_00000349,s0884,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000350,Case_00766_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000351,PANCREAS_0048,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00000352,s0206,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000353,case_00297,KiTS21,unknown,unknown,unhealthy +BDMAP_00000354,TCIAColon_0146_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000355,case_00141,KiTS21,unknown,unknown,unhealthy +BDMAP_00000356,case_00218,KiTS19,unknown,unknown,unhealthy +BDMAP_00000357,PETCT_274688d0a8,autoPET,unknown,unknown,unknown +BDMAP_00000358,PETCT_277fc3c67c,autoPET,unknown,unknown,unknown +BDMAP_00000359,case_00051,KiTS19,unknown,unknown,unhealthy +BDMAP_00000360,CPTAC-PDA-C3N-01383_0_5,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00000361,s0293,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000362,liver_6,LiTS,unhealthy,unknown,unknown +BDMAP_00000363,NIH-LYMPH-ABD-077_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00000364,case_00548,KiTS23,unknown,unknown,unhealthy +BDMAP_00000365,PETCT_72ee9ec897,autoPET,unknown,unknown,unknown +BDMAP_00000366,case_00197,KiTS21,unknown,unknown,unhealthy +BDMAP_00000367,TCIAColon_0192_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00000368,case_00115,KiTS21,unknown,unknown,unhealthy +BDMAP_00000369,Case_00809_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000370,PETCT_816732638d,autoPET,unknown,unknown,unknown +BDMAP_00000371,s1183,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000372,word_0066,WORD,unknown,unknown,unknown +BDMAP_00000373,colon_141,MSD-Colon,unknown,unknown,unknown +BDMAP_00000374,PETCT_956520090b,autoPET,unknown,unknown,unknown +BDMAP_00000375,case_00065,KiTS19,unknown,unknown,unhealthy +BDMAP_00000376,PETCT_2b8064fbe2,autoPET,unknown,unknown,unknown +BDMAP_00000377,hepaticvessel_081,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000378,TCIAColon_0082_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000379,PETCT_dadcd69ba9,autoPET,unknown,unknown,unknown +BDMAP_00000380,hepaticvessel_114,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000381,lung_083,MSD-Lung,unknown,unknown,unknown +BDMAP_00000382,CPTAC-CCRCC-C3L-01954_3_5,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00000383,colon_110,MSD-Colon,unknown,unknown,unknown +BDMAP_00000384,amos_0376,AMOS,unknown,unknown,unknown +BDMAP_00000385,word_0140,WORD,unknown,unknown,unknown +BDMAP_00000386,26_image,CHAOS,healthy,healthy,healthy +BDMAP_00000387,hepaticvessel_347,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000388,pancreas_312,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000389,PETCT_2716c9bfff,autoPET,unknown,unknown,unknown +BDMAP_00000390,s0607,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000391,CPTAC-PDA-C3N-01715_0_6,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00000392,s0709,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000393,TCIAColon_0280_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00000394,FLARE23_Ts_0037_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000395,Case_00206_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000396,FLARE23_Ts_0043_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000397,TCIAColon_0040_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00000398,PETCT_b509ace2a2,autoPET,unknown,unknown,unknown +BDMAP_00000399,Case_01050_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000400,liver_100,LiTS,unhealthy,unknown,unknown +BDMAP_00000401,TCIAColon_0153_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000402,NIH-LYMPH-ABD-082_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00000403,PETCT_4095c12e2d,autoPET,unknown,unknown,unknown +BDMAP_00000404,TCIAColon_0295_0_6,TCIAColon,unknown,unknown,unknown +BDMAP_00000405,FLARE23_Ts_0001_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000406,PETCT_5ac4fd9091,autoPET,unknown,unknown,unknown +BDMAP_00000407,TCIAColon_0267_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000408,volume-103,CT-ORG,unknown,unknown,unknown +BDMAP_00000409,hepaticvessel_220,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000410,Case_00413_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000411,pancreas_069,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000412,TCIAColon_0158_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000413,liver_39,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000414,case_00037,KiTS21,unknown,unknown,unhealthy +BDMAP_00000415,hepaticvessel_285,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000416,pancreas_209,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000417,PETCT_4f7a8f41c0,autoPET,unknown,unknown,unknown +BDMAP_00000418,Case_00795_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000419,TCIAColon_0226_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000420,amos_0135,AMOS,unknown,unknown,unknown +BDMAP_00000421,pancreas_428,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000422,FLARE23_Ts_0022_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000423,word_0138,WORD,unknown,unknown,unknown +BDMAP_00000424,pancreas_482,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000425,TCIAColon_0055_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000426,s0903,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000427,pancreas_320,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000428,case_00278,KiTS19,unknown,unknown,unhealthy +BDMAP_00000429,case_00530,KiTS23,unknown,unknown,unhealthy +BDMAP_00000430,pancreas_106,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000431,pancreas_377,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000432,case_00149,KiTS21,unknown,unknown,unhealthy +BDMAP_00000433,Case_00576_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000434,case_00541,KiTS23,unknown,unknown,unhealthy +BDMAP_00000435,case_00463,KiTS23,unknown,unknown,unhealthy +BDMAP_00000436,hepaticvessel_193,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000437,liver_126,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000438,pancreas_096,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000439,case_00145,KiTS21,unknown,unknown,unhealthy +BDMAP_00000440,hepaticvessel_439,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000441,pancreas_189,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000442,Case_00756_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000443,amos_0362,AMOS,unknown,unknown,unknown +BDMAP_00000444,hepaticvessel_247,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000445,CPTAC-CCRCC-C3L-00799_0_2,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00000446,PETCT_a4cb97ffc7,autoPET,unknown,unknown,unknown +BDMAP_00000447,pancreas_379,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000448,s0667,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000449,case_00135,KiTS21,unknown,unknown,unhealthy +BDMAP_00000450,hepaticvessel_460,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000451,PETCT_d51664a9e4,autoPET,unknown,unknown,unknown +BDMAP_00000452,case_00062,KiTS21,unknown,unknown,unhealthy +BDMAP_00000453,hepaticvessel_312,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000454,PETCT_5bd311a5e9,autoPET,unknown,unknown,unknown +BDMAP_00000455,TCIAColon_0296_0_6,TCIAColon,unknown,unknown,unknown +BDMAP_00000456,s1314,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000457,hepaticvessel_070,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000458,case_00096,KiTS19,unknown,unknown,unhealthy +BDMAP_00000459,PETCT_01682f60c3,autoPET,unknown,unknown,unknown +BDMAP_00000460,pancreas_139,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000461,lung_075,MSD-Lung,unknown,unknown,unknown +BDMAP_00000462,pancreas_211,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000463,Case_01012_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000464,hepaticvessel_141,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000465,case_00199,KiTS21,unknown,unknown,unhealthy +BDMAP_00000466,hepaticvessel_083,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000467,s0252,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000468,word_0113,WORD,unknown,unknown,unknown +BDMAP_00000469,case_00082,KiTS21,unknown,unknown,unhealthy +BDMAP_00000470,pancreas_088,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000471,PETCT_6c23f2686d,autoPET,unknown,unknown,unknown +BDMAP_00000472,Case_00921_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000473,lung_033,MSD-Lung,unknown,unknown,unknown +BDMAP_00000474,word_0038,WORD,unknown,unknown,unknown +BDMAP_00000475,PETCT_e2309b8f92,autoPET,unknown,unknown,unknown +BDMAP_00000476,hepaticvessel_238,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000477,PETCT_d4a08e4bde,autoPET,unknown,unknown,unknown +BDMAP_00000478,amos_0390,AMOS,unknown,unknown,unknown +BDMAP_00000479,amos_0078,AMOS,unknown,unknown,unknown +BDMAP_00000480,liver_69,LiTS,unhealthy,unknown,unknown +BDMAP_00000481,case_00221,KiTS21,unknown,unknown,unhealthy +BDMAP_00000482,PETCT_2f587d00b1,autoPET,unknown,unknown,unknown +BDMAP_00000483,word_0100,WORD,unknown,unknown,unknown +BDMAP_00000484,amos_0350,AMOS,unknown,unknown,unknown +BDMAP_00000485,amos_0058,AMOS,unknown,unknown,unknown +BDMAP_00000486,PETCT_be0d3c767e,autoPET,unknown,unknown,unknown +BDMAP_00000487,case_00081,KiTS21,unknown,unknown,unhealthy +BDMAP_00000488,TCIAColon_0124_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000489,Case_00968_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000490,pancreas_463,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000491,Case_00054_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000492,TCIAColon_0079_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000493,pancreas_141,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000494,colon_049,MSD-Colon,unknown,unknown,unknown +BDMAP_00000495,img0023,BTCV,healthy,healthy,healthy +BDMAP_00000496,19_image,CHAOS,healthy,healthy,healthy +BDMAP_00000497,PETCT_fde79b6aa9,autoPET,unknown,unknown,unknown +BDMAP_00000498,CPTAC-PDA-C3N-01166_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00000499,PETCT_91cfa804b0,autoPET,unknown,unknown,unknown +BDMAP_00000500,hepaticvessel_450,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000501,TCIAColon_0111_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000502,TCIAColon_0180_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000503,Case_00849_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000504,Case_00050_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000505,case_00081,KiTS19,unknown,unknown,unhealthy +BDMAP_00000506,TCGA-BLCA-4Z-AA80_0_2,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00000507,s1028,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000508,Case_00729_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000509,TCIAColon_0174_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00000510,TCIAColon_0184_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000511,case_00060,KiTS21,unknown,unknown,unhealthy +BDMAP_00000512,CPTAC-PDA-C3N-03670_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00000513,hepaticvessel_023,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000514,hepaticvessel_111,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000515,TCIAColon_0203_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000516,case_00073,KiTS21,unknown,unknown,unhealthy +BDMAP_00000517,PETCT_c9f1b9980f,autoPET,unknown,unknown,unknown +BDMAP_00000518,case_00249,KiTS19,unknown,unknown,unhealthy +BDMAP_00000519,lung_057,MSD-Lung,unknown,unknown,unknown +BDMAP_00000520,PETCT_8c8cd2699c,autoPET,unknown,unknown,unknown +BDMAP_00000521,pancreas_452,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000522,PETCT_7c96c4626d,autoPET,unknown,unknown,unknown +BDMAP_00000523,amos_0004,AMOS,unknown,unknown,unknown +BDMAP_00000524,PETCT_e252be4334,autoPET,unknown,unknown,unknown +BDMAP_00000525,word_0102,WORD,unknown,unknown,unknown +BDMAP_00000526,TCIAColon_0110_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000527,s1334,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000528,PETCT_8b714a64e7,autoPET,unknown,unknown,unknown +BDMAP_00000529,PETCT_581fa95eb0,autoPET,unknown,unknown,unknown +BDMAP_00000530,s0771,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000531,amos_0143,AMOS,unknown,unknown,unknown +BDMAP_00000532,case_00520,KiTS23,unknown,unknown,unhealthy +BDMAP_00000533,CPTAC-PDA-C3N-02997_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00000534,hepaticvessel_063,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000535,s0545,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000536,PETCT_d3dac0d1cd,autoPET,unknown,unknown,unknown +BDMAP_00000537,TCIAColon_0083_1_1,TCIAColon,unknown,unknown,unknown +BDMAP_00000538,PETCT_0223010e46,autoPET,unknown,unknown,unknown +BDMAP_00000539,TCIAColon_0115_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000540,case_00125,KiTS19,unknown,unknown,unhealthy +BDMAP_00000541,pancreas_393,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000542,pancreas_111,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000543,Case_00187_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000544,PETCT_1253499c80,autoPET,unknown,unknown,unknown +BDMAP_00000545,s0183,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000546,word_0083,WORD,unknown,unknown,unknown +BDMAP_00000547,colon_111,MSD-Colon,unknown,unknown,unknown +BDMAP_00000548,amos_0097,AMOS,unknown,unknown,unknown +BDMAP_00000549,hepaticvessel_442,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000550,PETCT_1019ae8551,autoPET,unknown,unknown,unknown +BDMAP_00000551,amos_0405,AMOS,unknown,unknown,unknown +BDMAP_00000552,colon_008,MSD-Colon,unknown,unknown,unknown +BDMAP_00000553,TCIAColon_0275_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00000554,lung_005,MSD-Lung,unknown,unknown,unknown +BDMAP_00000555,case_00145,KiTS19,unknown,unknown,unhealthy +BDMAP_00000556,volume-109,CT-ORG,unknown,unknown,unknown +BDMAP_00000557,PETCT_d5103c8fbf,autoPET,unknown,unknown,unknown +BDMAP_00000558,pancreas_311,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000559,CPTAC-UCEC-C3N-00743_0_4,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00000560,s0115,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000561,CPTAC-PDA-C3N-01167_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00000562,case_00058,KiTS21,unknown,unknown,unhealthy +BDMAP_00000563,PETCT_7ed037687a,autoPET,unknown,unknown,unknown +BDMAP_00000564,PETCT_6c660140ca,autoPET,unknown,unknown,unknown +BDMAP_00000565,PETCT_ae96f738c0,autoPET,unknown,unknown,unknown +BDMAP_00000566,s1404,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000567,case_00072,KiTS19,unknown,unknown,unhealthy +BDMAP_00000568,colon_213,MSD-Colon,unknown,unknown,unknown +BDMAP_00000569,case_00485,KiTS23,unknown,unknown,unhealthy +BDMAP_00000570,LDCT-L248_0_1,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00000571,case_00583,KiTS23,unknown,unknown,unhealthy +BDMAP_00000572,liver_39,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000573,s0566,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000574,case_00101,KiTS21,unknown,unknown,unhealthy +BDMAP_00000575,PETCT_416d3b9b78,autoPET,unknown,unknown,unknown +BDMAP_00000576,TCIAColon_0155_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000577,14_image,CHAOS,healthy,healthy,healthy +BDMAP_00000578,s1187,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000579,CPTAC-CCRCC-C3L-01462_0_9,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00000580,img0037,BTCV,healthy,healthy,healthy +BDMAP_00000581,PETCT_ec6b934720,autoPET,unknown,unknown,unknown +BDMAP_00000582,case_00414,KiTS23,unknown,unknown,unhealthy +BDMAP_00000583,volume-56,CT-ORG,unknown,unknown,unknown +BDMAP_00000584,spleen_18,MSD-Spleen,unknown,unknown,unknown +BDMAP_00000585,s0589,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000586,Case_00852_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000587,case_00033,KiTS19,unknown,unknown,unhealthy +BDMAP_00000588,TCIAColon_0015_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000589,pancreas_147,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000590,pancreas_205,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000591,Case_00689_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000592,hepaticvessel_101,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000593,TCIAColon_0228_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000594,s0656,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000595,PETCT_0b98dbe00d,autoPET,unknown,unknown,unknown +BDMAP_00000596,PETCT_8838c53a63,autoPET,unknown,unknown,unknown +BDMAP_00000597,amos_0181,AMOS,unknown,unknown,unknown +BDMAP_00000598,PANCREAS_0027,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00000599,Case_00065_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000600,PETCT_912a25778f,autoPET,unknown,unknown,unknown +BDMAP_00000601,FLARE23_Ts_0033_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000602,Case_00061_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000603,hepaticvessel_177,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000604,case_00436,KiTS23,unknown,unknown,unhealthy +BDMAP_00000605,TCIAColon_0097_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00000606,TCIAColon_0085_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00000607,liver_56,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000608,case_00031,KiTS21,unknown,unknown,unhealthy +BDMAP_00000609,s0171,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000610,s0011,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000611,TCGA-BLCA-4Z-AA7O_0_12,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00000612,TCIAColon_0281_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000613,PETCT_7a77b26403,autoPET,unknown,unknown,unknown +BDMAP_00000614,pancreas_037,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000615,liver_42,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000616,case_00454,KiTS23,unknown,unknown,unhealthy +BDMAP_00000617,s1389,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000618,pancreas_254,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000619,PETCT_b3e923029c,autoPET,unknown,unknown,unknown +BDMAP_00000620,word_0035,WORD,unknown,unknown,unknown +BDMAP_00000621,hepaticvessel_394,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000622,TCIAColon_0026_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000623,pancreas_012,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000624,pancreas_123,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000625,s0329,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000626,case_00410,KiTS23,unknown,unknown,unhealthy +BDMAP_00000627,TCIAColon_0196_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00000628,s1363,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000629,word_0104,WORD,unknown,unknown,unknown +BDMAP_00000630,TCIAColon_0189_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00000631,PETCT_cd9bdca46b,autoPET,unknown,unknown,unknown +BDMAP_00000632,PETCT_ee97822c60,autoPET,unknown,unknown,unknown +BDMAP_00000633,pancreas_263,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000634,PETCT_7e5729ea40,autoPET,unknown,unknown,unknown +BDMAP_00000635,PETCT_323cc5aff8,autoPET,unknown,unknown,unknown +BDMAP_00000636,PETCT_9c36b318e8,autoPET,unknown,unknown,unknown +BDMAP_00000637,TCIAColon_0220_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000638,TCIAColon_0123_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000639,s1384,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000640,PETCT_a4a66c4fa7,autoPET,unknown,unknown,unknown +BDMAP_00000641,Case_00783_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000642,liver_75,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000643,amos_0010,AMOS,unknown,unknown,unknown +BDMAP_00000644,Case_01000_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000645,word_0047,WORD,unknown,unknown,unknown +BDMAP_00000646,case_00136,KiTS19,unknown,unknown,unhealthy +BDMAP_00000647,s0731,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000648,hepaticvessel_058,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000649,case_00221,KiTS19,unknown,unknown,unhealthy +BDMAP_00000650,TCIAColon_0266_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00000651,hepaticvessel_321,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000652,PETCT_cc5c58c82d,autoPET,unknown,unknown,unknown +BDMAP_00000653,case_00452,KiTS23,unknown,unknown,unhealthy +BDMAP_00000654,colon_017,MSD-Colon,unknown,unknown,unknown +BDMAP_00000655,PETCT_7255ccbcf4,autoPET,unknown,unknown,unknown +BDMAP_00000656,case_00226,KiTS21,unknown,unknown,unhealthy +BDMAP_00000657,hepaticvessel_146,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000658,word_0117,WORD,unknown,unknown,unknown +BDMAP_00000659,img0077,BTCV,healthy,healthy,healthy +BDMAP_00000660,case_00443,KiTS23,unknown,unknown,unhealthy +BDMAP_00000661,PETCT_92c5c944a5,autoPET,unknown,unknown,unknown +BDMAP_00000662,case_00587,KiTS23,unknown,unknown,unhealthy +BDMAP_00000663,Case_00964_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000664,s0484,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000665,PETCT_9aa97cf103,autoPET,unknown,unknown,unknown +BDMAP_00000666,word_0090,WORD,unknown,unknown,unknown +BDMAP_00000667,case_00011,KiTS21,unknown,unknown,unhealthy +BDMAP_00000668,PETCT_dd975744e7,autoPET,unknown,unknown,unknown +BDMAP_00000669,TCIAColon_0186_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000670,FLARE23_Ts_0015_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000671,liver_45,LiTS,unhealthy,unknown,unknown +BDMAP_00000672,PETCT_e79291780d,autoPET,unknown,unknown,unknown +BDMAP_00000673,PANCREAS_0002,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00000674,TCIAColon_0024_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000675,TCIAColon_0235_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000676,pancreas_256,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000677,pancreas_036,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000678,word_0018,WORD,unknown,unknown,unknown +BDMAP_00000679,pancreas_092,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000680,Case_01058_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000681,CPTAC-CCRCC-C3L-00792_0_2,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00000682,PANCREAS_0017,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00000683,pancreas_016,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000684,s0924,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000685,21_image,CHAOS,healthy,healthy,healthy +BDMAP_00000686,PETCT_94962fe878,autoPET,unknown,unknown,unknown +BDMAP_00000687,case_00122,KiTS21,unknown,unknown,unhealthy +BDMAP_00000688,s0392,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000689,TCIAColon_0073_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000690,colon_142,MSD-Colon,unknown,unknown,unknown +BDMAP_00000691,PETCT_41f4d41517,autoPET,unknown,unknown,unknown +BDMAP_00000692,pancreas_293,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000693,pancreas_038,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000694,amos_0147,AMOS,unknown,unknown,unknown +BDMAP_00000695,hepaticvessel_207,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000696,pancreas_309,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000697,PETCT_94cc0dac49,autoPET,unknown,unknown,unknown +BDMAP_00000698,case_00555,KiTS23,unknown,unknown,unhealthy +BDMAP_00000699,PETCT_1f2a4f4280,autoPET,unknown,unknown,unknown +BDMAP_00000700,amos_0166,AMOS,unknown,unknown,unknown +BDMAP_00000701,pancreas_326,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000702,TCIAColon_0096_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000703,hepaticvessel_445,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000704,PETCT_cc1698663a,autoPET,unknown,unknown,unknown +BDMAP_00000705,PETCT_0b57b247b6,autoPET,unknown,unknown,unknown +BDMAP_00000706,case_00149,KiTS19,unknown,unknown,unhealthy +BDMAP_00000707,hepaticvessel_381,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000708,s0894,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000709,liver_124,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000710,case_00524,KiTS23,unknown,unknown,unhealthy +BDMAP_00000711,PETCT_fbd907a179,autoPET,unknown,unknown,unknown +BDMAP_00000712,hepaticvessel_359,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000713,case_00177,KiTS21,unknown,unknown,unhealthy +BDMAP_00000714,pancreas_361,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000715,pancreas_328,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000716,colon_185,MSD-Colon,unknown,unknown,unknown +BDMAP_00000717,colon_013,MSD-Colon,unknown,unknown,unknown +BDMAP_00000718,PETCT_3a40a26443,autoPET,unknown,unknown,unknown +BDMAP_00000719,word_0002,WORD,unknown,unknown,unknown +BDMAP_00000720,TCIAColon_0014_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00000721,spleen_52,MSD-Spleen,unknown,unknown,unknown +BDMAP_00000722,s0194,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000723,PETCT_46ee4ddd68,autoPET,unknown,unknown,unknown +BDMAP_00000724,case_00058,KiTS19,unknown,unknown,unhealthy +BDMAP_00000725,case_00072,KiTS21,unknown,unknown,unhealthy +BDMAP_00000726,s0699,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000727,s0698,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000728,Case_00812_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000729,amos_0279,AMOS,unknown,unknown,unknown +BDMAP_00000730,TCIAColon_0009_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000731,lung_045,MSD-Lung,unknown,unknown,unknown +BDMAP_00000732,PETCT_dc6174cb5d,autoPET,unknown,unknown,unknown +BDMAP_00000733,FLARE23_Ts_0010_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000734,s0500,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000735,pancreas_185,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000736,PETCT_a19ef8e0d2,autoPET,unknown,unknown,unknown +BDMAP_00000737,liver_141,MSD-Liver,unknown,unknown,unknown +BDMAP_00000738,TCIAColon_0199_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000739,TCIAColon_0296_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00000740,FLARE23_Ts_0045_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000741,PETCT_21e4ffcb52,autoPET,unknown,unknown,unknown +BDMAP_00000742,CPTAC-PDA-C3N-02697_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00000743,s0314,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000744,FLARE23_Ts_0042_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000745,liver_86,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000746,PETCT_d626611daf,autoPET,unknown,unknown,unknown +BDMAP_00000747,PETCT_db3bac356a,autoPET,unknown,unknown,unknown +BDMAP_00000748,Case_00397_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000749,pancreas_238,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000750,TCIAColon_0216_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000751,case_00187,KiTS19,unknown,unknown,unhealthy +BDMAP_00000752,amos_0361,AMOS,unknown,unknown,unknown +BDMAP_00000753,PETCT_f4668d2bdc,autoPET,unknown,unknown,unknown +BDMAP_00000754,NIH-LYMPH-ABD-073_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00000755,TCIAColon_0297_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000756,case_00228,KiTS19,unknown,unknown,unhealthy +BDMAP_00000757,28_image,CHAOS,healthy,healthy,healthy +BDMAP_00000758,CPTAC-CCRCC-C3L-00815_0_3,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00000759,PETCT_1cb2d26a19,autoPET,unknown,unknown,unknown +BDMAP_00000760,Case_00969_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000761,TCIAColon_0113_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000762,lung_026,MSD-Lung,unknown,unknown,unknown +BDMAP_00000763,s1264,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000764,PANCREAS_0028,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00000765,Case_00886_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000766,amos_0239,AMOS,unknown,unknown,unknown +BDMAP_00000767,PETCT_38733c001e,autoPET,unknown,unknown,unknown +BDMAP_00000768,hepaticvessel_042,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000769,PETCT_2122b88719,autoPET,unknown,unknown,unknown +BDMAP_00000770,Case_01062_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000771,pancreas_392,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000772,PETCT_ac700ab4db,autoPET,unknown,unknown,unknown +BDMAP_00000773,case_00285,KiTS19,unknown,unknown,unhealthy +BDMAP_00000774,pancreas_419,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000775,PETCT_960c5f4262,autoPET,unknown,unknown,unknown +BDMAP_00000776,s0016,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000777,lung_004,MSD-Lung,unknown,unknown,unknown +BDMAP_00000778,liver_75,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000779,hepaticvessel_379,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000780,PETCT_a87dda9193,autoPET,unknown,unknown,unknown +BDMAP_00000781,PETCT_d3208ff062,autoPET,unknown,unknown,unknown +BDMAP_00000782,TCIAColon_0148_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000783,CPTAC-PDA-C3N-01714_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00000784,TCIAColon_0153_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000785,colon_147,MSD-Colon,unknown,unknown,unknown +BDMAP_00000786,TCIAColon_0283_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000787,NIH-LYMPH-ABD-080_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00000788,case_00159,KiTS19,unknown,unknown,unhealthy +BDMAP_00000789,pancreas_442,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000790,CPTAC-UCEC-C3N-01003_0_2,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00000791,TCIAColon_0190_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00000792,PETCT_01140d52d8,autoPET,unknown,unknown,unknown +BDMAP_00000793,TCIAColon_0015_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000794,case_00025,KiTS21,unknown,unknown,unhealthy +BDMAP_00000795,Case_00949_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000796,s1153,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000797,TCIAColon_0248_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000798,TCIAColon_0095_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000799,PETCT_07574bfa00,autoPET,unknown,unknown,unknown +BDMAP_00000800,s0147,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000801,TCIAColon_0050_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000802,amos_0083,AMOS,unknown,unknown,unknown +BDMAP_00000803,TCIAColon_0066_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000804,colon_101,MSD-Colon,unknown,unknown,unknown +BDMAP_00000805,case_00466,KiTS23,unknown,unknown,unhealthy +BDMAP_00000806,word_0075,WORD,unknown,unknown,unknown +BDMAP_00000807,CPTAC-CCRCC-C3N-00491_0_7,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00000808,s1366,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000809,pancreas_347,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000810,case_00277,KiTS21,unknown,unknown,unhealthy +BDMAP_00000811,PETCT_1fe6e48293,autoPET,unknown,unknown,unknown +BDMAP_00000812,case_00059,KiTS21,unknown,unknown,unhealthy +BDMAP_00000813,hepaticvessel_341,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000814,PETCT_97320b0b58,autoPET,unknown,unknown,unknown +BDMAP_00000815,PETCT_e1a5b05186,autoPET,unknown,unknown,unknown +BDMAP_00000816,colon_204,MSD-Colon,unknown,unknown,unknown +BDMAP_00000817,PETCT_47cd731006,autoPET,unknown,unknown,unknown +BDMAP_00000818,word_0132,WORD,unknown,unknown,unknown +BDMAP_00000819,Case_00671_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000820,pancreas_474,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000821,img0028,BTCV,healthy,healthy,healthy +BDMAP_00000822,amos_0410,AMOS,unknown,unknown,unknown +BDMAP_00000823,spleen_42,MSD-Spleen,unknown,unknown,unknown +BDMAP_00000824,PETCT_7958ce0f7c,autoPET,unknown,unknown,unknown +BDMAP_00000825,TCIAColon_0120_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000826,case_00240,KiTS21,unknown,unknown,unhealthy +BDMAP_00000827,liver_90,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000828,colon_202,MSD-Colon,unknown,unknown,unknown +BDMAP_00000829,pancreas_317,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000830,PETCT_0f4ee9e078,autoPET,unknown,unknown,unknown +BDMAP_00000831,liver_97,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000832,hepaticvessel_304,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000833,case_00015,KiTS21,unknown,unknown,unhealthy +BDMAP_00000834,case_00036,KiTS19,unknown,unknown,unhealthy +BDMAP_00000835,s0358,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000836,case_00296,KiTS21,unknown,unknown,unhealthy +BDMAP_00000837,case_00242,KiTS21,unknown,unknown,unhealthy +BDMAP_00000838,word_0028,WORD,unknown,unknown,unknown +BDMAP_00000839,case_00471,KiTS23,unknown,unknown,unhealthy +BDMAP_00000840,PETCT_dae86b88e2,autoPET,unknown,unknown,unknown +BDMAP_00000841,FLARE23_Ts_0008_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000842,s0502,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000843,case_00220,KiTS19,unknown,unknown,unhealthy +BDMAP_00000844,PETCT_a933c9af60,autoPET,unknown,unknown,unknown +BDMAP_00000845,amos_0133,AMOS,unknown,unknown,unknown +BDMAP_00000846,PANCREAS_0033,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00000847,PETCT_5c57a98a43,autoPET,unknown,unknown,unknown +BDMAP_00000848,PETCT_e4e5baf901,autoPET,unknown,unknown,unknown +BDMAP_00000849,TCGA-OV-61-2003_0_3,TCGA-OV,unknown,unknown,unknown +BDMAP_00000850,TCIAColon_0245_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000851,colon_100,MSD-Colon,unknown,unknown,unknown +BDMAP_00000852,PETCT_8ec13728df,autoPET,unknown,unknown,unknown +BDMAP_00000853,Case_00449_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000854,TCIAColon_0140_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000855,pancreas_336,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000856,hepaticvessel_317,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000857,colon_123,MSD-Colon,unknown,unknown,unknown +BDMAP_00000858,PETCT_c58b637e17,autoPET,unknown,unknown,unknown +BDMAP_00000859,pancreas_243,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000860,TCIAColon_0032_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00000861,22_image,CHAOS,healthy,healthy,healthy +BDMAP_00000862,CPTAC-UCEC-C3N-00866_0_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00000863,TCIAColon_0069_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000864,TCIAColon_0149_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00000865,amos_0391,AMOS,unknown,unknown,unknown +BDMAP_00000866,hepaticvessel_136,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000867,case_00265,KiTS21,unknown,unknown,unhealthy +BDMAP_00000868,PETCT_d64d6a87c8,autoPET,unknown,unknown,unknown +BDMAP_00000869,TCIAColon_0084_0_6,TCIAColon,unknown,unknown,unknown +BDMAP_00000870,s0299,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000871,case_00210,KiTS21,unknown,unknown,unhealthy +BDMAP_00000872,lung_095,MSD-Lung,unknown,unknown,unknown +BDMAP_00000873,colon_149,MSD-Colon,unknown,unknown,unknown +BDMAP_00000874,colon_024,MSD-Colon,unknown,unknown,unknown +BDMAP_00000875,word_0119,WORD,unknown,unknown,unknown +BDMAP_00000876,TCIAColon_0022_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000877,hepaticvessel_019,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000878,PANCREAS_0006,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00000879,pancreas_455,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000880,PETCT_ce629e2993,autoPET,unknown,unknown,unknown +BDMAP_00000881,colon_187,MSD-Colon,unknown,unknown,unknown +BDMAP_00000882,pancreas_343,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000883,case_00178,KiTS21,unknown,unknown,unhealthy +BDMAP_00000884,word_0116,WORD,unknown,unknown,unknown +BDMAP_00000885,CPTAC-UCEC-C3N-01008_0_9,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00000886,s1403,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000887,case_00087,KiTS21,unknown,unknown,unhealthy +BDMAP_00000888,TCIAColon_0113_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000889,case_00428,KiTS23,unknown,unknown,unhealthy +BDMAP_00000890,lung_006,MSD-Lung,unknown,unknown,unknown +BDMAP_00000891,Case_00684_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000892,Case_00060_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000893,s0859,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000894,hepaticvessel_165,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000895,pancreas_426,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000896,PETCT_f24f3ce1da,autoPET,unknown,unknown,unknown +BDMAP_00000897,hepaticvessel_094,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000898,s0059,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000899,NIH-LYMPH-ABD-072_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00000900,hepaticvessel_059,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000901,Case_00903_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000902,case_00288,KiTS21,unknown,unknown,unhealthy +BDMAP_00000903,PETCT_9c9a347388,autoPET,unknown,unknown,unknown +BDMAP_00000904,TCIAColon_0024_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00000905,TCIAColon_0123_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000906,hepaticvessel_435,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000907,liver_121,LiTS,unhealthy,unknown,unknown +BDMAP_00000908,CPTAC-CCRCC-C3N-00380_0_2,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00000909,s0108,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000910,TCIAColon_0200_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000911,hepaticvessel_393,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00000912,FLARE23_Ts_0009_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000913,colon_219,MSD-Colon,unknown,unknown,unknown +BDMAP_00000914,liver_176,MSD-Liver,unknown,unknown,unknown +BDMAP_00000915,hepaticvessel_362,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000916,case_00172,KiTS19,unknown,unknown,unhealthy +BDMAP_00000917,NIH-LYMPH-ABD-059_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00000918,liver_43,LiTS,unhealthy,unknown,unknown +BDMAP_00000919,PETCT_824c6a0014,autoPET,unknown,unknown,unknown +BDMAP_00000920,PETCT_44cfacfd6e,autoPET,unknown,unknown,unknown +BDMAP_00000921,liver_42,LiTS,unhealthy,unknown,unknown +BDMAP_00000922,PETCT_6fe855c937,autoPET,unknown,unknown,unknown +BDMAP_00000923,case_00417,KiTS23,unknown,unknown,unhealthy +BDMAP_00000924,hepaticvessel_227,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000925,PETCT_3c3050f75e,autoPET,unknown,unknown,unknown +BDMAP_00000926,case_00155,KiTS21,unknown,unknown,unhealthy +BDMAP_00000927,FLARE23_Ts_0099_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000928,PANCREAS_0018,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00000929,colon_174,MSD-Colon,unknown,unknown,unknown +BDMAP_00000930,CPTAC-PDA-C3N-03430_1_2,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00000931,CPTAC-CCRCC-C3N-00491_0_9,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00000932,TCIAColon_0127_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00000933,PETCT_bd7603e9df,autoPET,unknown,unknown,unknown +BDMAP_00000934,TCIAColon_0092_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000935,case_00484,KiTS23,unknown,unknown,unhealthy +BDMAP_00000936,case_00269,KiTS21,unknown,unknown,unhealthy +BDMAP_00000937,colon_087,MSD-Colon,unknown,unknown,unknown +BDMAP_00000938,pancreas_223,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00000939,colon_099,MSD-Colon,unknown,unknown,unknown +BDMAP_00000940,pancreas_236,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000941,liver_127,LiTS,unhealthy,unknown,unknown +BDMAP_00000942,colon_032,MSD-Colon,unknown,unknown,unknown +BDMAP_00000943,hepaticvessel_428,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000944,TCIAColon_0227_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000945,TCIAColon_0182_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000946,hepaticvessel_410,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000947,hepaticvessel_088,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000948,case_00211,KiTS21,unknown,unknown,unhealthy +BDMAP_00000949,lung_049,MSD-Lung,unknown,unknown,unknown +BDMAP_00000950,PETCT_aaf2c3aa12,autoPET,unknown,unknown,unknown +BDMAP_00000951,CPTAC-UCEC-C3N-01008_1_12,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00000952,word_0049,WORD,unknown,unknown,unknown +BDMAP_00000953,Case_00250_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000954,TCIAColon_0019_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000955,lung_071,MSD-Lung,unknown,unknown,unknown +BDMAP_00000956,pancreas_117,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000957,Case_00220_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000958,s0649,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000959,hepaticvessel_217,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000960,amos_0014,AMOS,unknown,unknown,unknown +BDMAP_00000961,Case_00746_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000962,word_0085,WORD,unknown,unknown,unknown +BDMAP_00000963,PETCT_d3d3b7d4ff,autoPET,unknown,unknown,unknown +BDMAP_00000964,s1044,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000965,liver_79,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000966,TCIAColon_0211_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00000967,LDCT-L209_0_1,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00000968,case_00246,KiTS21,unknown,unknown,unhealthy +BDMAP_00000969,s0139,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000970,s0412,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000971,liver_109,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00000972,pancreas_040,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000973,Case_00876_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00000974,hepaticvessel_001,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00000975,amos_0077,AMOS,unknown,unknown,unknown +BDMAP_00000976,TCGA-BLCA-DK-A1AA_0_1,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00000977,case_00551,KiTS23,unknown,unknown,unhealthy +BDMAP_00000978,PETCT_e2834e6f5c,autoPET,unknown,unknown,unknown +BDMAP_00000979,PETCT_3f3df20439,autoPET,unknown,unknown,unknown +BDMAP_00000980,case_00507,KiTS23,unknown,unknown,unhealthy +BDMAP_00000981,hepaticvessel_105,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000982,case_00193,KiTS21,unknown,unknown,unhealthy +BDMAP_00000983,PETCT_9f206193d3,autoPET,unknown,unknown,unknown +BDMAP_00000984,PETCT_770ee48d09,autoPET,unknown,unknown,unknown +BDMAP_00000985,FLARE23_Ts_0013_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00000986,TCIAColon_0248_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00000987,case_00249,KiTS21,unknown,unknown,unhealthy +BDMAP_00000988,colon_018,MSD-Colon,unknown,unknown,unknown +BDMAP_00000989,case_00171,KiTS21,unknown,unknown,unhealthy +BDMAP_00000990,PETCT_389c968170,autoPET,unknown,unknown,unknown +BDMAP_00000991,s0193,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000992,PETCT_5a58935b68,autoPET,unknown,unknown,unknown +BDMAP_00000993,pancreas_304,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00000994,hepaticvessel_339,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00000995,s1123,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000996,s1296,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000997,s1273,TotalSegmentator,unknown,unknown,unknown +BDMAP_00000998,case_00528,KiTS23,unknown,unknown,unhealthy +BDMAP_00000999,s0476,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001000,PETCT_43c9c71b31,autoPET,unknown,unknown,unknown +BDMAP_00001001,case_00531,KiTS23,unknown,unknown,unhealthy +BDMAP_00001002,PANCREAS_0026,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00001003,hepaticvessel_131,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001004,LDCT-L232_0_1,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00001005,liver_188,MSD-Liver,unknown,unknown,unknown +BDMAP_00001006,TCIAColon_0133_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001007,s0625,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001008,PETCT_f0a1a38a3b,autoPET,unknown,unknown,unknown +BDMAP_00001009,TCGA-OV-61-1998_1_1,TCGA-OV,unknown,unknown,unknown +BDMAP_00001010,liver_70,LiTS,unhealthy,unknown,unknown +BDMAP_00001011,word_0130,WORD,unknown,unknown,unknown +BDMAP_00001012,hepaticvessel_033,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001013,PETCT_e5d50c5569,autoPET,unknown,unknown,unknown +BDMAP_00001014,TCIAColon_0160_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001015,colon_118,MSD-Colon,unknown,unknown,unknown +BDMAP_00001016,hepaticvessel_161,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001017,PETCT_ac11b344b6,autoPET,unknown,unknown,unknown +BDMAP_00001018,liver_112,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001019,PETCT_846c1af245,autoPET,unknown,unknown,unknown +BDMAP_00001020,case_00020,KiTS21,unknown,unknown,unhealthy +BDMAP_00001021,colon_153,MSD-Colon,unknown,unknown,unknown +BDMAP_00001022,TCIAColon_0274_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001023,Case_00230_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001024,colon_212,MSD-Colon,unknown,unknown,unknown +BDMAP_00001025,liver_108,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001026,FLARE23_Ts_0032_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001027,case_00022,KiTS21,unknown,unknown,unhealthy +BDMAP_00001028,PETCT_b5923963ac,autoPET,unknown,unknown,unknown +BDMAP_00001029,s0760,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001030,pancreas_164,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001031,hepaticvessel_327,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001032,colon_183,MSD-Colon,unknown,unknown,unknown +BDMAP_00001033,Case_00184_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001034,PETCT_aea7906fd2,autoPET,unknown,unknown,unknown +BDMAP_00001035,case_00408,KiTS23,unknown,unknown,unhealthy +BDMAP_00001036,amos_0001,AMOS,unknown,unknown,unknown +BDMAP_00001037,Case_00450_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001038,pancreas_443,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001039,img0079,BTCV,healthy,healthy,healthy +BDMAP_00001040,pancreas_218,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001041,FLARE23_Ts_0040_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001042,PETCT_d4b2ff9721,autoPET,unknown,unknown,unknown +BDMAP_00001043,CPTAC-PDA-C3N-01383_0_6,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00001044,TCIAColon_0258_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00001045,case_00516,KiTS23,unknown,unknown,unhealthy +BDMAP_00001046,TCIAColon_0011_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001047,s1174,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001048,PETCT_83e4c5b578,autoPET,unknown,unknown,unknown +BDMAP_00001049,s0991,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001050,case_00254,KiTS19,unknown,unknown,unhealthy +BDMAP_00001051,PETCT_48a34ccdf0,autoPET,unknown,unknown,unknown +BDMAP_00001052,TCIAColon_0044_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00001053,amos_0199,AMOS,unknown,unknown,unknown +BDMAP_00001054,s1373,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001055,liver_116,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001056,PETCT_d4112bc7ba,autoPET,unknown,unknown,unknown +BDMAP_00001057,pancreas_058,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001058,s1294,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001059,case_00490,KiTS23,unknown,unknown,unhealthy +BDMAP_00001060,PETCT_607c1b38e3,autoPET,unknown,unknown,unknown +BDMAP_00001061,25_image,CHAOS,healthy,healthy,healthy +BDMAP_00001062,PETCT_d8d9e52cd5,autoPET,unknown,unknown,unknown +BDMAP_00001063,PETCT_55d55902c6,autoPET,unknown,unknown,unknown +BDMAP_00001064,CPTAC-PDA-C3N-03430_0_7,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00001065,hepaticvessel_333,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001066,TCIAColon_0250_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001067,pancreas_296,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001068,case_00010,KiTS21,unknown,unknown,unhealthy +BDMAP_00001069,pancreas_017,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001070,amos_0317,AMOS,unknown,unknown,unknown +BDMAP_00001071,FLARE23_Ts_0098_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001072,Case_00525_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001073,s0937,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001074,img0030,BTCV,healthy,healthy,healthy +BDMAP_00001075,case_00115,KiTS19,unknown,unknown,unhealthy +BDMAP_00001076,word_0013,WORD,unknown,unknown,unknown +BDMAP_00001077,case_00451,KiTS23,unknown,unknown,unhealthy +BDMAP_00001078,colon_007,MSD-Colon,unknown,unknown,unknown +BDMAP_00001079,volume-116,CT-ORG,unknown,unknown,unknown +BDMAP_00001080,PETCT_5109748328,autoPET,unknown,unknown,unknown +BDMAP_00001081,TCIAColon_0136_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001082,s1082,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001083,PETCT_a0c4dc1ef1,autoPET,unknown,unknown,unknown +BDMAP_00001084,TCIAColon_0132_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001085,NIH-LYMPH-ABD-065_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00001086,Case_00726_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001087,TCIAColon_0138_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001088,lung_022,MSD-Lung,unknown,unknown,unknown +BDMAP_00001089,case_00161,KiTS21,unknown,unknown,unhealthy +BDMAP_00001090,PETCT_0af7ffe12a,autoPET,unknown,unknown,unknown +BDMAP_00001091,TCIAColon_0048_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001092,pancreas_127,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001093,liver_81,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001094,PETCT_8f2878df50,autoPET,unknown,unknown,unknown +BDMAP_00001095,colon_214,MSD-Colon,unknown,unknown,unknown +BDMAP_00001096,pancreas_284,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001097,hepaticvessel_180,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001098,PETCT_54977a7e76,autoPET,unknown,unknown,unknown +BDMAP_00001099,Case_00804_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001100,amos_0282,AMOS,unknown,unknown,unknown +BDMAP_00001101,word_0134,WORD,unknown,unknown,unknown +BDMAP_00001102,colon_119,MSD-Colon,unknown,unknown,unknown +BDMAP_00001103,Case_00926_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001104,case_00447,KiTS23,unknown,unknown,unhealthy +BDMAP_00001105,volume-73,CT-ORG,unknown,unknown,unknown +BDMAP_00001106,PETCT_13d0984c93,autoPET,unknown,unknown,unknown +BDMAP_00001107,case_00247,KiTS19,unknown,unknown,unhealthy +BDMAP_00001108,TCIAColon_0006_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001109,case_00429,KiTS23,unknown,unknown,unhealthy +BDMAP_00001110,TCIAColon_0244_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001111,spleen_29,MSD-Spleen,unknown,unknown,unknown +BDMAP_00001112,CPTAC-PDA-C3N-03670_0_5,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00001113,Case_00811_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001114,liver_43,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001115,Case_00304_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001116,hepaticvessel_329,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001117,FLARE23_Ts_0083_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001118,pancreas_118,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001119,case_00212,KiTS21,unknown,unknown,unhealthy +BDMAP_00001120,PETCT_ea42c88cc7,autoPET,unknown,unknown,unknown +BDMAP_00001121,liver_186,MSD-Liver,unknown,unknown,unknown +BDMAP_00001122,liver_51,LiTS,unhealthy,unknown,unknown +BDMAP_00001123,s0089,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001124,PETCT_8aa48809ea,autoPET,unknown,unknown,unknown +BDMAP_00001125,pancreas_418,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001126,case_00107,KiTS21,unknown,unknown,unhealthy +BDMAP_00001127,PETCT_f01e83894d,autoPET,unknown,unknown,unknown +BDMAP_00001128,case_00238,KiTS21,unknown,unknown,unhealthy +BDMAP_00001129,PETCT_73597f33fe,autoPET,unknown,unknown,unknown +BDMAP_00001130,case_00094,KiTS21,unknown,unknown,unhealthy +BDMAP_00001131,hepaticvessel_287,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001132,TCIAColon_0173_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001133,volume-137,CT-ORG,unknown,unknown,unknown +BDMAP_00001134,hepaticvessel_009,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001135,TCIAColon_0054_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001136,hepaticvessel_313,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001137,s1235,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001138,case_00095,KiTS21,unknown,unknown,unhealthy +BDMAP_00001139,TCIAColon_0296_0_5,TCIAColon,unknown,unknown,unknown +BDMAP_00001140,PETCT_9a83943958,autoPET,unknown,unknown,unknown +BDMAP_00001141,hepaticvessel_388,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001142,PETCT_173b804eda,autoPET,unknown,unknown,unknown +BDMAP_00001143,liver_201,MSD-Liver,unknown,unknown,unknown +BDMAP_00001144,s0747,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001145,Case_00680_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001146,lung_027,MSD-Lung,unknown,unknown,unknown +BDMAP_00001147,PETCT_a471649d35,autoPET,unknown,unknown,unknown +BDMAP_00001148,case_00425,KiTS23,unknown,unknown,unhealthy +BDMAP_00001149,hepaticvessel_130,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001150,TCIAColon_0281_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00001151,amos_0336,AMOS,unknown,unknown,unknown +BDMAP_00001152,colon_023,MSD-Colon,unknown,unknown,unknown +BDMAP_00001153,s0042,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001154,hepaticvessel_151,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001155,pancreas_332,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001156,TCIAColon_0231_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001157,pancreas_068,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001158,TCGA-OV-OY-A56Q_0_1,TCGA-OV,unknown,unknown,unknown +BDMAP_00001159,TCIAColon_0287_0_7,TCIAColon,unknown,unknown,unknown +BDMAP_00001160,TCIAColon_0049_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001161,case_00102,KiTS19,unknown,unknown,unhealthy +BDMAP_00001162,PETCT_979f9c3dba,autoPET,unknown,unknown,unknown +BDMAP_00001163,PETCT_474d7af918,autoPET,unknown,unknown,unknown +BDMAP_00001164,pancreas_341,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001165,volume-92,CT-ORG,unknown,unknown,unknown +BDMAP_00001166,hepaticvessel_400,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001167,hepaticvessel_256,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001168,FLARE23_Ts_0038_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001169,case_00424,KiTS23,unknown,unknown,unhealthy +BDMAP_00001170,hepaticvessel_203,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001171,liver_21,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001172,hepaticvessel_224,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001173,TCIAColon_0111_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001174,NIH-LYMPH-MED-006_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00001175,pancreas_235,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001176,LDCT-L266_0_1,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00001177,volume-91,CT-ORG,unknown,unknown,unknown +BDMAP_00001178,TCIAColon_0170_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001179,s0196,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001180,TCIAColon_0091_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001181,amos_0118,AMOS,unknown,unknown,unknown +BDMAP_00001182,PETCT_d8e3aa97a0,autoPET,unknown,unknown,unknown +BDMAP_00001183,case_00545,KiTS23,unknown,unknown,unhealthy +BDMAP_00001184,case_00239,KiTS19,unknown,unknown,unhealthy +BDMAP_00001185,liver_99,LiTS,unhealthy,unknown,unknown +BDMAP_00001186,hepaticvessel_328,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001187,PETCT_f8314eb3f7,autoPET,unknown,unknown,unknown +BDMAP_00001188,Case_00743_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001189,s0370,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001190,hepaticvessel_229,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001191,lung_029,MSD-Lung,unknown,unknown,unknown +BDMAP_00001192,CPTAC-CCRCC-C3L-00610_1_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00001193,CPTAC-CCRCC-C3L-01954_0_5,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00001194,TCIAColon_0215_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001195,PETCT_108c1763d4,autoPET,unknown,unknown,unknown +BDMAP_00001196,amos_0069,AMOS,unknown,unknown,unknown +BDMAP_00001197,pancreas_349,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001198,liver_10,LiTS,unhealthy,unknown,unknown +BDMAP_00001199,PETCT_2f2ee78c89,autoPET,unknown,unknown,unknown +BDMAP_00001200,liver_72,LiTS,unhealthy,unknown,unknown +BDMAP_00001201,CPTAC-PDA-C3N-01167_0_15,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00001202,PETCT_3481507253,autoPET,unknown,unknown,unknown +BDMAP_00001203,s0762,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001204,pancreas_240,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001205,pancreas_197,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001206,TCIAColon_0237_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001207,TCIAColon_0287_0_6,TCIAColon,unknown,unknown,unknown +BDMAP_00001208,FLARE23_Ts_0028_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001209,colon_140,MSD-Colon,unknown,unknown,unknown +BDMAP_00001210,s1257,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001211,hepaticvessel_389,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001212,colon_098,MSD-Colon,unknown,unknown,unknown +BDMAP_00001213,img0062,BTCV,healthy,healthy,healthy +BDMAP_00001214,pancreas_270,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001215,colon_072,MSD-Colon,unknown,unknown,unknown +BDMAP_00001216,word_0125,WORD,unknown,unknown,unknown +BDMAP_00001217,amos_0198,AMOS,unknown,unknown,unknown +BDMAP_00001218,case_00542,KiTS23,unknown,unknown,unhealthy +BDMAP_00001219,hepaticvessel_423,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001220,lung_065,MSD-Lung,unknown,unknown,unknown +BDMAP_00001221,PETCT_8af3757198,autoPET,unknown,unknown,unknown +BDMAP_00001222,PETCT_510fb36781,autoPET,unknown,unknown,unknown +BDMAP_00001223,case_00139,KiTS21,unknown,unknown,unhealthy +BDMAP_00001224,CPTAC-CCRCC-C3L-01352_0_2,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00001225,case_00438,KiTS23,unknown,unknown,unhealthy +BDMAP_00001226,Case_00980_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001227,PETCT_4011ffe8ae,autoPET,unknown,unknown,unknown +BDMAP_00001228,hepaticvessel_120,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001229,word_0062,WORD,unknown,unknown,unknown +BDMAP_00001230,case_00538,KiTS23,unknown,unknown,unhealthy +BDMAP_00001231,amos_0027,AMOS,unknown,unknown,unknown +BDMAP_00001232,TCIAColon_0259_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001233,PETCT_5ef99b0b6b,autoPET,unknown,unknown,unknown +BDMAP_00001234,Case_00819_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001235,Case_00190_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001236,liver_130,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001237,colon_078,MSD-Colon,unknown,unknown,unknown +BDMAP_00001238,case_00444,KiTS23,unknown,unknown,unhealthy +BDMAP_00001239,Case_00941_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001240,TCIAColon_0128_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001241,word_0031,WORD,unknown,unknown,unknown +BDMAP_00001242,case_00209,KiTS21,unknown,unknown,unhealthy +BDMAP_00001243,PETCT_25707f94a2,autoPET,unknown,unknown,unknown +BDMAP_00001244,TCIAColon_0056_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001245,word_0032,WORD,unknown,unknown,unknown +BDMAP_00001246,case_00413,KiTS23,unknown,unknown,unhealthy +BDMAP_00001247,pancreas_230,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001248,s0623,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001249,hepaticvessel_319,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001250,colon_190,MSD-Colon,unknown,unknown,unknown +BDMAP_00001251,case_00511,KiTS23,unknown,unknown,unhealthy +BDMAP_00001252,CPTAC-CCRCC-C3L-01459_0_4,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00001253,amos_0049,AMOS,unknown,unknown,unknown +BDMAP_00001254,CPTAC-UCEC-C3N-01171_0_12,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00001255,case_00076,KiTS21,unknown,unknown,unhealthy +BDMAP_00001256,case_00522,KiTS23,unknown,unknown,unhealthy +BDMAP_00001257,Case_00749_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001258,case_00179,KiTS21,unknown,unknown,unhealthy +BDMAP_00001259,s1127,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001260,amos_0019,AMOS,unknown,unknown,unknown +BDMAP_00001261,case_00421,KiTS23,unknown,unknown,unhealthy +BDMAP_00001262,PETCT_2b29531d8c,autoPET,unknown,unknown,unknown +BDMAP_00001263,word_0067,WORD,unknown,unknown,unknown +BDMAP_00001264,PETCT_faf4a6dbaa,autoPET,unknown,unknown,unknown +BDMAP_00001265,case_00503,KiTS23,unknown,unknown,unhealthy +BDMAP_00001266,TCIAColon_0151_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001267,TCIAColon_0232_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001268,case_00106,KiTS19,unknown,unknown,unhealthy +BDMAP_00001269,TCIAColon_0117_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001270,liver_106,LiTS,healthy,unknown,unknown +BDMAP_00001271,Case_01054_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001272,PETCT_1f65acff65,autoPET,unknown,unknown,unknown +BDMAP_00001273,case_00453,KiTS23,unknown,unknown,unhealthy +BDMAP_00001274,TCIAColon_0237_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001275,case_00271,KiTS21,unknown,unknown,unhealthy +BDMAP_00001276,s0078,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001277,TCIAColon_0290_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001278,hepaticvessel_290,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001279,Case_00044_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001280,PETCT_548213edf7,autoPET,unknown,unknown,unknown +BDMAP_00001281,case_00105,KiTS21,unknown,unknown,unhealthy +BDMAP_00001282,hepaticvessel_430,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001283,case_00195,KiTS21,unknown,unknown,unhealthy +BDMAP_00001284,s1371,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001285,amos_0294,AMOS,unknown,unknown,unknown +BDMAP_00001286,case_00431,KiTS23,unknown,unknown,unhealthy +BDMAP_00001287,PETCT_802f19931c,autoPET,unknown,unknown,unknown +BDMAP_00001288,pancreas_253,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001289,case_00046,KiTS21,unknown,unknown,unhealthy +BDMAP_00001290,TCIAColon_0059_0_5,TCIAColon,unknown,unknown,unknown +BDMAP_00001291,TCIAColon_0054_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001292,s1045,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001293,CPTAC-UCEC-C3N-00734_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00001294,PETCT_38a374d01a,autoPET,unknown,unknown,unknown +BDMAP_00001295,s0137,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001296,case_00294,KiTS21,unknown,unknown,unhealthy +BDMAP_00001297,TCIAColon_0193_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001298,word_0070,WORD,unknown,unknown,unknown +BDMAP_00001299,PETCT_c094a24c03,autoPET,unknown,unknown,unknown +BDMAP_00001300,s0015,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001301,CPTAC-PDA-C3N-02997_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00001302,PETCT_58f276897e,autoPET,unknown,unknown,unknown +BDMAP_00001303,s0052,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001304,hepaticvessel_102,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001305,case_00547,KiTS23,unknown,unknown,unhealthy +BDMAP_00001306,spleen_40,MSD-Spleen,unknown,unknown,unknown +BDMAP_00001307,PETCT_5001354a69,autoPET,unknown,unknown,unknown +BDMAP_00001308,s0168,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001309,liver_112,LiTS,unhealthy,unknown,unknown +BDMAP_00001310,Case_00547_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001311,TCIAColon_0142_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001312,TCIAColon_0254_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001313,PETCT_44b08f570e,autoPET,unknown,unknown,unknown +BDMAP_00001314,PETCT_7c1e6175e0,autoPET,unknown,unknown,unknown +BDMAP_00001315,TCGA-SARC-A5V2_0_1,TCGA-SARC,unknown,unknown,unknown +BDMAP_00001316,liver_28,LiTS,unhealthy,unknown,unknown +BDMAP_00001317,TCIAColon_0084_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001318,PETCT_437d2c96fe,autoPET,unknown,unknown,unknown +BDMAP_00001319,PETCT_e68c4577d8,autoPET,unknown,unknown,unknown +BDMAP_00001320,s0320,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001321,s0546,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001322,PETCT_4be28f9cd7,autoPET,unknown,unknown,unknown +BDMAP_00001323,hepaticvessel_096,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001324,case_00559,KiTS23,unknown,unknown,unhealthy +BDMAP_00001325,case_00248,KiTS21,unknown,unknown,unhealthy +BDMAP_00001326,TCIAColon_0286_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00001327,PETCT_43323b7d42,autoPET,unknown,unknown,unknown +BDMAP_00001328,CPTAC-CCRCC-C3L-00815_0_5,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00001329,hepaticvessel_190,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001330,s1230,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001331,pancreas_297,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001332,hepaticvessel_262,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001333,liver_102,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001334,TCIAColon_0193_0_5,TCIAColon,unknown,unknown,unknown +BDMAP_00001335,PETCT_7ef5343426,autoPET,unknown,unknown,unknown +BDMAP_00001336,s0508,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001337,TCIAColon_0276_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001338,colon_010,MSD-Colon,unknown,unknown,unknown +BDMAP_00001339,Case_00041_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001340,NIH-LYMPH-ABD-020_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00001341,hepaticvessel_039,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001342,TCIAColon_0130_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001343,liver_104,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001344,PETCT_34d3efa936,autoPET,unknown,unknown,unknown +BDMAP_00001345,s0416,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001346,hepaticvessel_022,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001347,s0639,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001348,PANCREAS_0031,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00001349,PETCT_fcdbe15200,autoPET,unknown,unknown,unknown +BDMAP_00001350,s1212,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001351,PETCT_19b68a666b,autoPET,unknown,unknown,unknown +BDMAP_00001352,case_00108,KiTS19,unknown,unknown,unhealthy +BDMAP_00001353,18_image,CHAOS,healthy,healthy,healthy +BDMAP_00001354,s0461,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001355,TCIAColon_0167_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001356,s0485,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001357,PETCT_9860ffe82d,autoPET,unknown,unknown,unknown +BDMAP_00001358,hepaticvessel_310,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001359,case_00138,KiTS21,unknown,unknown,unhealthy +BDMAP_00001360,CPTAC-PDA-C3N-03426_0_7,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00001361,pancreas_158,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001362,liver_74,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001363,Case_01044_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001364,hepaticvessel_259,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001365,amos_0161,AMOS,unknown,unknown,unknown +BDMAP_00001366,PETCT_75d5e740f0,autoPET,unknown,unknown,unknown +BDMAP_00001367,PETCT_2a41141775,autoPET,unknown,unknown,unknown +BDMAP_00001368,pancreas_213,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001369,s1161,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001370,case_00262,KiTS21,unknown,unknown,unhealthy +BDMAP_00001371,TCIAColon_0117_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001372,TCIAColon_0261_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001373,PETCT_5255c79083,autoPET,unknown,unknown,unknown +BDMAP_00001374,s0571,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001375,PETCT_4b688f46b0,autoPET,unknown,unknown,unknown +BDMAP_00001376,case_00211,KiTS19,unknown,unknown,unhealthy +BDMAP_00001377,s1285,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001378,PETCT_e52eca67d7,autoPET,unknown,unknown,unknown +BDMAP_00001379,liver_0,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001380,case_00240,KiTS19,unknown,unknown,unhealthy +BDMAP_00001381,Case_00786_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001382,hepaticvessel_416,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001383,case_00000,KiTS21,unknown,unknown,unhealthy +BDMAP_00001384,Case_01041_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001385,PETCT_176bdc5388,autoPET,unknown,unknown,unknown +BDMAP_00001386,PETCT_4076ea9a15,autoPET,unknown,unknown,unknown +BDMAP_00001387,s0328,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001388,TCIAColon_0072_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001389,liver_138,MSD-Liver,unknown,unknown,unknown +BDMAP_00001390,PETCT_7d97f7a102,autoPET,unknown,unknown,unknown +BDMAP_00001391,hepaticvessel_350,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001392,TCIAColon_0038_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001393,TCIAColon_0089_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001394,hepaticvessel_029,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001395,hepaticvessel_397,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001396,case_00565,KiTS23,unknown,unknown,unhealthy +BDMAP_00001397,liver_47,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001398,TCIAColon_0291_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001399,s1173,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001400,amos_0141,AMOS,unknown,unknown,unknown +BDMAP_00001401,TCIAColon_0102_0_5,TCIAColon,unknown,unknown,unknown +BDMAP_00001402,FLARE23_Ts_0024_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001403,Case_00950_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001404,PETCT_bf178a41b2,autoPET,unknown,unknown,unknown +BDMAP_00001405,TCIAColon_0042_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001406,PETCT_d4d3d7dfc1,autoPET,unknown,unknown,unknown +BDMAP_00001407,PETCT_bd52fdf529,autoPET,unknown,unknown,unknown +BDMAP_00001408,PETCT_3c94a00f90,autoPET,unknown,unknown,unknown +BDMAP_00001409,hepaticvessel_441,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001410,case_00089,KiTS21,unknown,unknown,unhealthy +BDMAP_00001411,PETCT_2f7200f771,autoPET,unknown,unknown,unknown +BDMAP_00001412,pancreas_437,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001413,case_00096,KiTS21,unknown,unknown,unhealthy +BDMAP_00001414,pancreas_405,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001415,s0692,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001416,PETCT_99e5728030,autoPET,unknown,unknown,unknown +BDMAP_00001417,img0025,BTCV,healthy,healthy,healthy +BDMAP_00001418,s0511,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001419,pancreas_413,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001420,case_00480,KiTS23,unknown,unknown,unhealthy +BDMAP_00001421,PETCT_05bed31780,autoPET,unknown,unknown,unknown +BDMAP_00001422,case_00004,KiTS21,unknown,unknown,unhealthy +BDMAP_00001423,s0675,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001424,s0390,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001425,PETCT_e9feb1135e,autoPET,unknown,unknown,unknown +BDMAP_00001426,colon_115,MSD-Colon,unknown,unknown,unknown +BDMAP_00001427,hepaticvessel_147,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001428,CPTAC-UCEC-C3N-00866_1_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00001429,TCGA-BLCA-DK-A1A7_0_3,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00001430,TCIAColon_0009_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001431,PETCT_05d8640f52,autoPET,unknown,unknown,unknown +BDMAP_00001432,FLARE23_Ts_0005_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001433,spleen_50,MSD-Spleen,unknown,unknown,unknown +BDMAP_00001434,case_00134,KiTS21,unknown,unknown,unhealthy +BDMAP_00001435,Case_00240_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001436,spleen_11,MSD-Spleen,unknown,unknown,unknown +BDMAP_00001437,hepaticvessel_168,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001438,colon_031,MSD-Colon,unknown,unknown,unknown +BDMAP_00001439,PETCT_5fa9d9a820,autoPET,unknown,unknown,unknown +BDMAP_00001440,pancreas_222,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001441,pancreas_308,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001442,amos_0392,AMOS,unknown,unknown,unknown +BDMAP_00001443,LDCT-L220_0_0,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00001444,case_00150,KiTS21,unknown,unknown,unhealthy +BDMAP_00001445,colon_206,MSD-Colon,unknown,unknown,unknown +BDMAP_00001446,pancreas_420,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001447,img0036,BTCV,healthy,healthy,healthy +BDMAP_00001448,TCIAColon_0277_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001449,amos_0079,AMOS,unknown,unknown,unknown +BDMAP_00001450,Case_00947_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001451,hepaticvessel_024,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001452,PETCT_f1594a7d8a,autoPET,unknown,unknown,unknown +BDMAP_00001453,hepaticvessel_368,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001454,s0720,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001455,PETCT_5c1baad5d8,autoPET,unknown,unknown,unknown +BDMAP_00001456,case_00077,KiTS21,unknown,unknown,unhealthy +BDMAP_00001457,PETCT_23ed525e82,autoPET,unknown,unknown,unknown +BDMAP_00001458,CPTAC-UCEC-C3L-01744_0_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00001459,s0441,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001460,PETCT_424e9b79c5,autoPET,unknown,unknown,unknown +BDMAP_00001461,pancreas_310,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001462,colon_048,MSD-Colon,unknown,unknown,unknown +BDMAP_00001463,PETCT_b41bc7c1e5,autoPET,unknown,unknown,unknown +BDMAP_00001464,pancreas_258,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001465,case_00150,KiTS19,unknown,unknown,unhealthy +BDMAP_00001466,Case_00922_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001467,lung_059,MSD-Lung,unknown,unknown,unknown +BDMAP_00001468,s1382,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001469,PETCT_5e8b013935,autoPET,unknown,unknown,unknown +BDMAP_00001470,TCIAColon_0175_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001471,liver_78,LiTS,unhealthy,unknown,unknown +BDMAP_00001472,s0213,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001473,CPTAC-PDA-C3N-01907_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00001474,case_00259,KiTS21,unknown,unknown,unhealthy +BDMAP_00001475,case_00287,KiTS21,unknown,unknown,unhealthy +BDMAP_00001476,pancreas_087,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001477,TCIAColon_0177_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001478,Case_00831_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001479,FLARE23_Ts_0086_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001480,PETCT_42e9f16c09,autoPET,unknown,unknown,unknown +BDMAP_00001481,colon_076,MSD-Colon,unknown,unknown,unknown +BDMAP_00001482,hepaticvessel_386,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001483,case_00563,KiTS23,unknown,unknown,unhealthy +BDMAP_00001484,lung_078,MSD-Lung,unknown,unknown,unknown +BDMAP_00001485,TCIAColon_0228_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001486,PETCT_b510436d83,autoPET,unknown,unknown,unknown +BDMAP_00001487,case_00266,KiTS21,unknown,unknown,unhealthy +BDMAP_00001488,volume-83,CT-ORG,unknown,unknown,unknown +BDMAP_00001489,NIH-LYMPH-ABD-048_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00001490,PETCT_ebaa30ba2e,autoPET,unknown,unknown,unknown +BDMAP_00001491,pancreas_237,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001492,s0031,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001493,FLARE23_Ts_0062_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001494,s1319,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001495,word_0128,WORD,unknown,unknown,unknown +BDMAP_00001496,case_00162,KiTS21,unknown,unknown,unhealthy +BDMAP_00001497,TCIAColon_0209_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001498,img0063,BTCV,healthy,healthy,healthy +BDMAP_00001499,TCIAColon_0183_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001500,CPTAC-CCRCC-C3L-01465_0_5,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00001501,Case_01032_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001502,liver_91,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001503,word_0115,WORD,unknown,unknown,unknown +BDMAP_00001504,pancreas_010,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001505,TCIAColon_0187_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001506,hepaticvessel_270,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001507,hepaticvessel_025,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001508,Case_00019_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001509,colon_021,MSD-Colon,unknown,unknown,unknown +BDMAP_00001510,hepaticvessel_100,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001511,case_00462,KiTS23,unknown,unknown,unhealthy +BDMAP_00001512,Case_00223_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001513,PETCT_2202a936e0,autoPET,unknown,unknown,unknown +BDMAP_00001514,colon_122,MSD-Colon,unknown,unknown,unknown +BDMAP_00001515,PETCT_e69152b6b4,autoPET,unknown,unknown,unknown +BDMAP_00001516,case_00052,KiTS21,unknown,unknown,unhealthy +BDMAP_00001517,case_00403,KiTS23,unknown,unknown,unhealthy +BDMAP_00001518,case_00184,KiTS21,unknown,unknown,unhealthy +BDMAP_00001519,PETCT_bc80d06f97,autoPET,unknown,unknown,unknown +BDMAP_00001520,case_00177,KiTS19,unknown,unknown,unhealthy +BDMAP_00001521,pancreas_276,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001522,case_00257,KiTS21,unknown,unknown,unhealthy +BDMAP_00001523,pancreas_126,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001524,NIH-LYMPH-ABD-066_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00001525,TCGA-BLCA-4Z-AA7M_0_4,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00001526,Case_01040_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001527,PETCT_de118d7ab9,autoPET,unknown,unknown,unknown +BDMAP_00001528,NIH-LYMPH-MED-013_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00001529,TCIAColon_0260_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00001530,case_00164,KiTS19,unknown,unknown,unhealthy +BDMAP_00001531,TCIAColon_0233_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001532,PETCT_5c55b3087d,autoPET,unknown,unknown,unknown +BDMAP_00001533,case_00208,KiTS21,unknown,unknown,unhealthy +BDMAP_00001534,TCIAColon_0051_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001535,colon_105,MSD-Colon,unknown,unknown,unknown +BDMAP_00001536,PETCT_55819a54c2,autoPET,unknown,unknown,unknown +BDMAP_00001537,PETCT_2140db0ca5,autoPET,unknown,unknown,unknown +BDMAP_00001538,liver_137,MSD-Liver,unknown,unknown,unknown +BDMAP_00001539,liver_57,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001540,FLARE23_Ts_0050_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001541,TCIAColon_0001_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001542,PETCT_2e97a9e5c2,autoPET,unknown,unknown,unknown +BDMAP_00001543,PETCT_b899150306,autoPET,unknown,unknown,unknown +BDMAP_00001544,PETCT_1fcfa34d10,autoPET,unknown,unknown,unknown +BDMAP_00001545,pancreas_331,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001546,s0039,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001547,Case_01057_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001548,PETCT_bf7652bccc,autoPET,unknown,unknown,unknown +BDMAP_00001549,case_00558,KiTS23,unknown,unknown,unhealthy +BDMAP_00001550,Case_00802_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001551,PETCT_41fadf6520,autoPET,unknown,unknown,unknown +BDMAP_00001552,PETCT_595975bc57,autoPET,unknown,unknown,unknown +BDMAP_00001553,PETCT_2a6f4f0753,autoPET,unknown,unknown,unknown +BDMAP_00001554,TCIAColon_0229_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001555,s0332,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001556,amos_0036,AMOS,unknown,unknown,unknown +BDMAP_00001557,case_00264,KiTS21,unknown,unknown,unhealthy +BDMAP_00001558,hepaticvessel_437,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001559,TCIAColon_0156_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001560,hepaticvessel_178,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001561,amos_0023,AMOS,unknown,unknown,unknown +BDMAP_00001562,case_00561,KiTS23,unknown,unknown,unhealthy +BDMAP_00001563,case_00292,KiTS21,unknown,unknown,unhealthy +BDMAP_00001564,pancreas_203,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001565,pancreas_159,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001566,PETCT_1553bd8c8f,autoPET,unknown,unknown,unknown +BDMAP_00001567,Case_00960_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001568,CPTAC-CCRCC-C3N-00244_0_6,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00001569,s0648,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001570,s1085,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001571,PETCT_43647ff727,autoPET,unknown,unknown,unknown +BDMAP_00001572,TCIAColon_0190_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001573,TCIAColon_0243_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001574,PETCT_5b0aa4e971,autoPET,unknown,unknown,unknown +BDMAP_00001575,PETCT_75210090cd,autoPET,unknown,unknown,unknown +BDMAP_00001576,pancreas_171,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001577,hepaticvessel_278,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001578,FLARE23_Ts_0020_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001579,s1058,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001580,PETCT_44b95650c3,autoPET,unknown,unknown,unknown +BDMAP_00001581,Case_00742_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001582,s0054,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001583,hepaticvessel_271,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001584,pancreas_004,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001585,TCIAColon_0096_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001586,liver_152,MSD-Liver,unknown,unknown,unknown +BDMAP_00001587,PETCT_9775598501,autoPET,unknown,unknown,unknown +BDMAP_00001588,Case_00078_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001589,hepaticvessel_054,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001590,pancreas_224,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001591,PETCT_ae3074834a,autoPET,unknown,unknown,unknown +BDMAP_00001592,TCIAColon_0266_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001593,hepaticvessel_425,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001594,lung_010,MSD-Lung,unknown,unknown,unknown +BDMAP_00001595,hepaticvessel_267,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001596,PETCT_7b9d625330,autoPET,unknown,unknown,unknown +BDMAP_00001597,pancreas_125,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001598,colon_029,MSD-Colon,unknown,unknown,unknown +BDMAP_00001599,s1287,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001600,colon_209,MSD-Colon,unknown,unknown,unknown +BDMAP_00001601,NIH-LYMPH-ABD-074_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00001602,case_00407,KiTS23,unknown,unknown,unhealthy +BDMAP_00001603,PETCT_53ccb9efbb,autoPET,unknown,unknown,unknown +BDMAP_00001604,TCIAColon_0269_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001605,pancreas_099,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001606,s0135,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001607,case_00450,KiTS23,unknown,unknown,unhealthy +BDMAP_00001608,s0080,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001609,TCIAColon_0131_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001610,hepaticvessel_061,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001611,word_0046,WORD,unknown,unknown,unknown +BDMAP_00001612,case_00186,KiTS19,unknown,unknown,unhealthy +BDMAP_00001613,PETCT_b3d4773f85,autoPET,unknown,unknown,unknown +BDMAP_00001614,PETCT_1472967bef,autoPET,unknown,unknown,unknown +BDMAP_00001615,PETCT_0168f65af8,autoPET,unknown,unknown,unknown +BDMAP_00001616,Case_00939_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001617,pancreas_364,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001618,pancreas_109,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001619,volume-53,CT-ORG,unknown,unknown,unknown +BDMAP_00001620,case_00255,KiTS21,unknown,unknown,unhealthy +BDMAP_00001621,TCIAColon_0150_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001622,PETCT_2745fb1adb,autoPET,unknown,unknown,unknown +BDMAP_00001623,TCIAColon_0295_0_7,TCIAColon,unknown,unknown,unknown +BDMAP_00001624,case_00220,KiTS21,unknown,unknown,unhealthy +BDMAP_00001625,hepaticvessel_348,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001626,s0070,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001627,amos_0009,AMOS,unknown,unknown,unknown +BDMAP_00001628,pancreas_029,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001629,PETCT_e90a287d09,autoPET,unknown,unknown,unknown +BDMAP_00001630,PETCT_234f8427c0,autoPET,unknown,unknown,unknown +BDMAP_00001631,hepaticvessel_090,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001632,pancreas_083,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001633,FLARE23_Ts_0087_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001634,spleen_31,MSD-Spleen,unknown,unknown,unknown +BDMAP_00001635,case_00441,KiTS23,unknown,unknown,unhealthy +BDMAP_00001636,case_00526,KiTS23,unknown,unknown,unhealthy +BDMAP_00001637,Case_00954_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001638,PETCT_9afd440677,autoPET,unknown,unknown,unknown +BDMAP_00001639,PETCT_ca47fe5e7d,autoPET,unknown,unknown,unknown +BDMAP_00001640,amos_0153,AMOS,unknown,unknown,unknown +BDMAP_00001641,Case_00664_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001642,TCIAColon_0221_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001643,lung_001,MSD-Lung,unknown,unknown,unknown +BDMAP_00001644,FLARE23_Ts_0065_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001645,hepaticvessel_357,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001646,pancreas_269,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001647,case_00586,KiTS23,unknown,unknown,unhealthy +BDMAP_00001648,TCIAColon_0044_1_0,TCIAColon,unknown,unknown,unknown +BDMAP_00001649,pancreas_119,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001650,s0253,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001651,hepaticvessel_197,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001652,PETCT_27ad42f8a9,autoPET,unknown,unknown,unknown +BDMAP_00001653,TCIAColon_0106_0_5,TCIAColon,unknown,unknown,unknown +BDMAP_00001654,CPTAC-CCRCC-C3L-01954_0_8,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00001655,amos_0089,AMOS,unknown,unknown,unknown +BDMAP_00001656,case_00492,KiTS23,unknown,unknown,unhealthy +BDMAP_00001657,hepaticvessel_254,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001658,liver_192,MSD-Liver,unknown,unknown,unknown +BDMAP_00001659,s0961,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001660,TCIAColon_0250_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001661,PETCT_d098458d29,autoPET,unknown,unknown,unknown +BDMAP_00001662,PANCREAS_0007,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00001663,PETCT_9d6699f215,autoPET,unknown,unknown,unknown +BDMAP_00001664,case_00055,KiTS21,unknown,unknown,unhealthy +BDMAP_00001665,TCIAColon_0080_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001666,PETCT_62405d117c,autoPET,unknown,unknown,unknown +BDMAP_00001667,s0010,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001668,pancreas_063,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001669,FLARE23_Ts_0006_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001670,CPTAC-UCEC-C3N-01008_1_11,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00001671,hepaticvessel_171,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001672,hepaticvessel_231,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001673,Case_00764_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001674,Case_00911_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001675,hepaticvessel_144,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001676,case_00187,KiTS21,unknown,unknown,unhealthy +BDMAP_00001677,Case_00793_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001678,PETCT_f9c4d4f9ab,autoPET,unknown,unknown,unknown +BDMAP_00001679,case_00233,KiTS19,unknown,unknown,unhealthy +BDMAP_00001680,img0061,BTCV,healthy,healthy,healthy +BDMAP_00001681,word_0091,WORD,unknown,unknown,unknown +BDMAP_00001682,PETCT_a90955352e,autoPET,unknown,unknown,unknown +BDMAP_00001683,TCIAColon_0043_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00001684,FLARE23_Ts_0046_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001685,hepaticvessel_002,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001686,TCIAColon_0294_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001687,s0726,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001688,case_00080,KiTS21,unknown,unknown,unhealthy +BDMAP_00001689,PETCT_265c26907a,autoPET,unknown,unknown,unknown +BDMAP_00001690,Case_00403_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001691,colon_003,MSD-Colon,unknown,unknown,unknown +BDMAP_00001692,liver_24,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001693,TCIAColon_0273_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001694,s0260,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001695,PETCT_5d994c3f44,autoPET,unknown,unknown,unknown +BDMAP_00001696,TCIAColon_0033_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001697,liver_3,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001698,TCIAColon_0041_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001699,liver_96,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001700,amos_0109,AMOS,unknown,unknown,unknown +BDMAP_00001701,pancreas_215,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001702,TCIAColon_0072_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001703,CPTAC-UCEC-C3L-00938_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00001704,pancreas_226,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001705,case_00151,KiTS21,unknown,unknown,unhealthy +BDMAP_00001706,PETCT_c32e1daf9b,autoPET,unknown,unknown,unknown +BDMAP_00001707,case_00416,KiTS23,unknown,unknown,unhealthy +BDMAP_00001708,CPTAC-UCEC-C3L-00962_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00001709,hepaticvessel_211,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001710,case_00093,KiTS21,unknown,unknown,unhealthy +BDMAP_00001711,case_00554,KiTS23,unknown,unknown,unhealthy +BDMAP_00001712,pancreas_327,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001713,PETCT_674c49778c,autoPET,unknown,unknown,unknown +BDMAP_00001714,s0266,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001715,colon_037,MSD-Colon,unknown,unknown,unknown +BDMAP_00001716,pancreas_478,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001717,s1130,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001718,PETCT_8b14e6a819,autoPET,unknown,unknown,unknown +BDMAP_00001719,TCIAColon_0012_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001720,PETCT_ea0fd89f0f,autoPET,unknown,unknown,unknown +BDMAP_00001721,hepaticvessel_383,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001722,s0075,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001723,Case_01003_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001724,TCIAColon_0114_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001725,PETCT_0dbf2c2731,autoPET,unknown,unknown,unknown +BDMAP_00001726,img0078,BTCV,healthy,healthy,healthy +BDMAP_00001727,PETCT_f15b868db6,autoPET,unknown,unknown,unknown +BDMAP_00001728,TCIAColon_0267_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001729,TCIAColon_0016_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001730,TCIAColon_0087_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001731,PETCT_8bebb676bf,autoPET,unknown,unknown,unknown +BDMAP_00001732,colon_022,MSD-Colon,unknown,unknown,unknown +BDMAP_00001733,TCIAColon_0092_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001734,s0423,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001735,case_00057,KiTS21,unknown,unknown,unhealthy +BDMAP_00001736,pancreas_334,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001737,colon_145,MSD-Colon,unknown,unknown,unknown +BDMAP_00001738,s0739,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001739,Case_00059_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001740,amos_0193,AMOS,unknown,unknown,unknown +BDMAP_00001741,hepaticvessel_401,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001742,PETCT_5420205a5f,autoPET,unknown,unknown,unknown +BDMAP_00001743,TCIAColon_0122_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00001744,spleen_8,MSD-Spleen,unknown,unknown,unknown +BDMAP_00001745,s0046,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001746,pancreas_103,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001747,case_00489,KiTS23,unknown,unknown,unhealthy +BDMAP_00001748,pancreas_108,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001749,PETCT_d8a92bafe3,autoPET,unknown,unknown,unknown +BDMAP_00001750,Case_01017_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001751,TCIAColon_0206_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001752,case_00291,KiTS21,unknown,unknown,unhealthy +BDMAP_00001753,liver_9,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001754,pancreas_374,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001755,s0327,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001756,TCIAColon_0071_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001757,case_00120,KiTS19,unknown,unknown,unhealthy +BDMAP_00001758,TCIAColon_0157_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001759,amos_0272,AMOS,unknown,unknown,unknown +BDMAP_00001760,Case_00882_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001761,hepaticvessel_365,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001762,PETCT_5d6bf1e75f,autoPET,unknown,unknown,unknown +BDMAP_00001763,TCIAColon_0192_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001764,amos_0374,AMOS,unknown,unknown,unknown +BDMAP_00001765,PETCT_548bd05667,autoPET,unknown,unknown,unknown +BDMAP_00001766,liver_107,LiTS,unhealthy,unknown,unknown +BDMAP_00001767,TCIAColon_0058_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001768,case_00496,KiTS23,unknown,unknown,unhealthy +BDMAP_00001769,colon_074,MSD-Colon,unknown,unknown,unknown +BDMAP_00001770,PETCT_9f7c68f5ca,autoPET,unknown,unknown,unknown +BDMAP_00001771,amos_0017,AMOS,unknown,unknown,unknown +BDMAP_00001772,case_00020,KiTS19,unknown,unknown,unhealthy +BDMAP_00001773,s0549,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001774,PANCREAS_0011,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00001775,amos_0249,AMOS,unknown,unknown,unknown +BDMAP_00001776,word_0053,WORD,unknown,unknown,unknown +BDMAP_00001777,TCIAColon_0292_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001778,TCIAColon_0083_1_0,TCIAColon,unknown,unknown,unknown +BDMAP_00001779,hepaticvessel_443,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001780,PETCT_30e2b83b74,autoPET,unknown,unknown,unknown +BDMAP_00001781,PETCT_791ec15924,autoPET,unknown,unknown,unknown +BDMAP_00001782,case_00509,KiTS23,unknown,unknown,unhealthy +BDMAP_00001783,PETCT_c787334539,autoPET,unknown,unknown,unknown +BDMAP_00001784,case_00552,KiTS23,unknown,unknown,unhealthy +BDMAP_00001785,colon_102,MSD-Colon,unknown,unknown,unknown +BDMAP_00001786,liver_29,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001787,word_0036,WORD,unknown,unknown,unknown +BDMAP_00001788,s0237,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001789,PETCT_ab1fa26e5e,autoPET,unknown,unknown,unknown +BDMAP_00001790,s0091,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001791,case_00123,KiTS21,unknown,unknown,unhealthy +BDMAP_00001792,TCIAColon_0018_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001793,PETCT_e61c9da258,autoPET,unknown,unknown,unknown +BDMAP_00001794,case_00519,KiTS23,unknown,unknown,unhealthy +BDMAP_00001795,PETCT_742a9413db,autoPET,unknown,unknown,unknown +BDMAP_00001796,PETCT_39159c05c2,autoPET,unknown,unknown,unknown +BDMAP_00001797,s0602,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001798,FLARE23_Ts_0076_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001799,PETCT_9a66a81ad1,autoPET,unknown,unknown,unknown +BDMAP_00001800,PETCT_a21200dcba,autoPET,unknown,unknown,unknown +BDMAP_00001801,hepaticvessel_122,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001802,liver_53,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001803,hepaticvessel_280,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001804,pancreas_198,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001805,word_0106,WORD,unknown,unknown,unknown +BDMAP_00001806,pancreas_375,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001807,case_00569,KiTS23,unknown,unknown,unhealthy +BDMAP_00001808,CPTAC-UCEC-C3N-00520_0_8,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00001809,colon_168,MSD-Colon,unknown,unknown,unknown +BDMAP_00001810,liver_106,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001811,hepaticvessel_436,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001812,Case_00841_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001813,liver_66,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001814,spleen_15,MSD-Spleen,unknown,unknown,unknown +BDMAP_00001815,s0553,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001816,pancreas_483,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001817,case_00007,KiTS19,unknown,unknown,unhealthy +BDMAP_00001818,hepaticvessel_338,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001819,TCIAColon_0247_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001820,PANCREAS_0041,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00001821,spleen_3,MSD-Spleen,unknown,unknown,unknown +BDMAP_00001822,PETCT_af119148fe,autoPET,unknown,unknown,unknown +BDMAP_00001823,pancreas_187,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001824,hepaticvessel_196,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001825,spleen_62,MSD-Spleen,unknown,unknown,unknown +BDMAP_00001826,case_00142,KiTS21,unknown,unknown,unhealthy +BDMAP_00001827,hepaticvessel_241,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001828,pancreas_325,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001829,hepaticvessel_107,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001830,hepaticvessel_373,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001831,case_00023,KiTS19,unknown,unknown,unhealthy +BDMAP_00001832,CPTAC-CCRCC-C3L-01459_1_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00001833,PETCT_b1de3d4248,autoPET,unknown,unknown,unknown +BDMAP_00001834,liver_92,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001835,colon_176,MSD-Colon,unknown,unknown,unknown +BDMAP_00001836,pancreas_315,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001837,s0471,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001838,s0912,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001839,Case_00738_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001840,PETCT_6d6a193655,autoPET,unknown,unknown,unknown +BDMAP_00001841,FLARE23_Ts_0007_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001842,pancreas_316,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001843,TCIAColon_0088_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001844,CPTAC-CCRCC-C3N-00313_0_7,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00001845,pancreas_388,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001846,word_0010,WORD,unknown,unknown,unknown +BDMAP_00001847,s1189,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001848,pancreas_144,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001849,hepaticvessel_385,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001850,colon_179,MSD-Colon,unknown,unknown,unknown +BDMAP_00001851,case_00290,KiTS19,unknown,unknown,unhealthy +BDMAP_00001852,Case_00724_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001853,case_00201,KiTS21,unknown,unknown,unhealthy +BDMAP_00001854,colon_132,MSD-Colon,unknown,unknown,unknown +BDMAP_00001855,amos_0054,AMOS,unknown,unknown,unknown +BDMAP_00001856,PETCT_790246c76c,autoPET,unknown,unknown,unknown +BDMAP_00001857,PETCT_7f2a604e03,autoPET,unknown,unknown,unknown +BDMAP_00001858,PETCT_06a46414eb,autoPET,unknown,unknown,unknown +BDMAP_00001859,hepaticvessel_244,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001860,PETCT_20a607649d,autoPET,unknown,unknown,unknown +BDMAP_00001861,hepaticvessel_369,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001862,pancreas_046,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001863,case_00478,KiTS23,unknown,unknown,unhealthy +BDMAP_00001864,Case_01043_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001865,colon_005,MSD-Colon,unknown,unknown,unknown +BDMAP_00001866,pancreas_408,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001867,case_00201,KiTS19,unknown,unknown,unhealthy +BDMAP_00001868,case_00499,KiTS23,unknown,unknown,unhealthy +BDMAP_00001869,CPTAC-CCRCC-C3N-00194_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00001870,Case_00948_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001871,PANCREAS_0019,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00001872,s0286,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001873,PETCT_e04b7fa860,autoPET,unknown,unknown,unknown +BDMAP_00001874,TCIAColon_0160_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001875,colon_027,MSD-Colon,unknown,unknown,unknown +BDMAP_00001876,hepaticvessel_191,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001877,CPTAC-CCRCC-C3N-00492_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00001878,case_00263,KiTS19,unknown,unknown,unhealthy +BDMAP_00001879,hepaticvessel_091,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001880,PETCT_963a71819a,autoPET,unknown,unknown,unknown +BDMAP_00001881,TCIAColon_0129_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001882,PETCT_cab58c1fee,autoPET,unknown,unknown,unknown +BDMAP_00001883,TCIAColon_0105_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001884,hepaticvessel_322,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001885,volume-105,CT-ORG,unknown,unknown,unknown +BDMAP_00001886,amos_0105,AMOS,unknown,unknown,unknown +BDMAP_00001887,29_image,CHAOS,healthy,healthy,healthy +BDMAP_00001888,PETCT_ec581d49ef,autoPET,unknown,unknown,unknown +BDMAP_00001889,PETCT_e09a20d8fc,autoPET,unknown,unknown,unknown +BDMAP_00001890,PETCT_d69c3fceba,autoPET,unknown,unknown,unknown +BDMAP_00001891,case_00505,KiTS23,unknown,unknown,unhealthy +BDMAP_00001892,case_00152,KiTS21,unknown,unknown,unhealthy +BDMAP_00001893,PETCT_ce0ffef966,autoPET,unknown,unknown,unknown +BDMAP_00001894,FLARE23_Ts_0055_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001895,s0069,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001896,Case_00251_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001897,PETCT_d4f3375362,autoPET,unknown,unknown,unknown +BDMAP_00001898,pancreas_329,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001899,pancreas_430,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001900,PETCT_ad99263bec,autoPET,unknown,unknown,unknown +BDMAP_00001901,amos_0235,AMOS,unknown,unknown,unknown +BDMAP_00001902,lung_023,MSD-Lung,unknown,unknown,unknown +BDMAP_00001903,PETCT_9b9d67b3ff,autoPET,unknown,unknown,unknown +BDMAP_00001904,hepaticvessel_289,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001905,pancreas_398,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001906,case_00002,KiTS21,unknown,unknown,unhealthy +BDMAP_00001907,liver_5,LiTS,unhealthy,unknown,unknown +BDMAP_00001908,case_00532,KiTS23,unknown,unknown,unhealthy +BDMAP_00001909,hepaticvessel_396,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001910,Case_00690_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001911,case_00026,KiTS21,unknown,unknown,unhealthy +BDMAP_00001912,pancreas_365,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001913,case_00262,KiTS19,unknown,unknown,unhealthy +BDMAP_00001914,s0612,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001915,word_0136,WORD,unknown,unknown,unknown +BDMAP_00001916,pancreas_484,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001917,colon_095,MSD-Colon,unknown,unknown,unknown +BDMAP_00001918,case_00197,KiTS19,unknown,unknown,unhealthy +BDMAP_00001919,case_00241,KiTS19,unknown,unknown,unhealthy +BDMAP_00001920,PETCT_3cf68da275,autoPET,unknown,unknown,unknown +BDMAP_00001921,pancreas_160,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00001922,colon_070,MSD-Colon,unknown,unknown,unknown +BDMAP_00001923,PETCT_605369e88d,autoPET,unknown,unknown,unknown +BDMAP_00001924,colon_131,MSD-Colon,unknown,unknown,unknown +BDMAP_00001925,PETCT_80b8393c44,autoPET,unknown,unknown,unknown +BDMAP_00001926,PETCT_30287f520f,autoPET,unknown,unknown,unknown +BDMAP_00001927,FLARE23_Ts_0031_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001928,hepaticvessel_370,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001929,PETCT_b4e5c1047c,autoPET,unknown,unknown,unknown +BDMAP_00001930,hepaticvessel_258,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001931,amos_0021,AMOS,unknown,unknown,unknown +BDMAP_00001932,hepaticvessel_026,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001933,FLARE23_Ts_0081_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001934,s0548,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001935,TCIAColon_0061_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001936,liver_163,MSD-Liver,unknown,unknown,unknown +BDMAP_00001937,8_image,CHAOS,healthy,healthy,healthy +BDMAP_00001938,PETCT_c596a50286,autoPET,unknown,unknown,unknown +BDMAP_00001939,CPTAC-UCEC-C3N-01171_0_11,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00001940,PETCT_d0086487f4,autoPET,unknown,unknown,unknown +BDMAP_00001941,case_00074,KiTS21,unknown,unknown,unhealthy +BDMAP_00001942,PANCREAS_0013,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00001943,PANCREAS_0034,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00001944,Case_00052_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001945,case_00012,KiTS21,unknown,unknown,unhealthy +BDMAP_00001946,FLARE23_Ts_0027_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00001947,Case_00024_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001948,TCIAColon_0027_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001949,PETCT_af73b85f2c,autoPET,unknown,unknown,unknown +BDMAP_00001950,hepaticvessel_015,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00001951,PETCT_345b11778a,autoPET,unknown,unknown,unknown +BDMAP_00001952,PETCT_8e905366fe,autoPET,unknown,unknown,unknown +BDMAP_00001953,PETCT_5951afb86e,autoPET,unknown,unknown,unknown +BDMAP_00001954,TCIAColon_0030_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001955,TCIAColon_0161_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001956,PETCT_a37da9e85d,autoPET,unknown,unknown,unknown +BDMAP_00001957,liver_126,LiTS,unhealthy,unknown,unknown +BDMAP_00001958,colon_191,MSD-Colon,unknown,unknown,unknown +BDMAP_00001959,PETCT_e0fdc6212a,autoPET,unknown,unknown,unknown +BDMAP_00001960,TCIAColon_0090_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001961,Case_00393_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001962,liver_22,LiTS,unhealthy,unknown,unknown +BDMAP_00001963,NIH-LYMPH-ABD-045_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00001964,PETCT_95efdaba3c,autoPET,unknown,unknown,unknown +BDMAP_00001965,s0751,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001966,liver_16,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001967,amos_0138,AMOS,unknown,unknown,unknown +BDMAP_00001968,colon_158,MSD-Colon,unknown,unknown,unknown +BDMAP_00001969,TCIAColon_0003_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001970,PETCT_ca58410fad,autoPET,unknown,unknown,unknown +BDMAP_00001971,amos_0006,AMOS,unknown,unknown,unknown +BDMAP_00001972,hepaticvessel_268,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00001973,TCIAColon_0282_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001974,s0349,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001975,PETCT_b1aa7ce13e,autoPET,unknown,unknown,unknown +BDMAP_00001976,TCIAColon_0236_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001977,case_00086,KiTS21,unknown,unknown,unhealthy +BDMAP_00001978,PETCT_245182006a,autoPET,unknown,unknown,unknown +BDMAP_00001979,CPTAC-CCRCC-C3L-01352_0_10,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00001980,Case_00448_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00001981,liver_76,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00001982,colon_046,MSD-Colon,unknown,unknown,unknown +BDMAP_00001983,PETCT_556b56485a,autoPET,unknown,unknown,unknown +BDMAP_00001984,s1070,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001985,colon_164,MSD-Colon,unknown,unknown,unknown +BDMAP_00001986,s1336,TotalSegmentator,unknown,unknown,unknown +BDMAP_00001987,case_00114,KiTS19,unknown,unknown,unhealthy +BDMAP_00001988,hepaticvessel_240,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00001989,amos_0088,AMOS,unknown,unknown,unknown +BDMAP_00001990,TCIAColon_0068_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00001991,TCIAColon_0045_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00001992,TCIAColon_0020_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00001993,pancreas_439,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00001994,PETCT_4785066413,autoPET,unknown,unknown,unknown +BDMAP_00001995,case_00557,KiTS23,unknown,unknown,unhealthy +BDMAP_00001996,PETCT_c1c9e78e0e,autoPET,unknown,unknown,unknown +BDMAP_00001997,PETCT_b327726c24,autoPET,unknown,unknown,unknown +BDMAP_00001998,PETCT_36d8219e3f,autoPET,unknown,unknown,unknown +BDMAP_00001999,hepaticvessel_010,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002000,hepaticvessel_273,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00002001,TCGA-STAD-A8DU_0_3,TCGA-STAD,unknown,unknown,unknown +BDMAP_00002002,hepaticvessel_215,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002003,hepaticvessel_223,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002004,Case_00697_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002005,PETCT_cdd237e9b3,autoPET,unknown,unknown,unknown +BDMAP_00002006,PETCT_11e258cc1f,autoPET,unknown,unknown,unknown +BDMAP_00002007,TCIAColon_0021_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00002008,hepaticvessel_133,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002009,amos_0084,AMOS,unknown,unknown,unknown +BDMAP_00002010,s0308,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002011,TCIAColon_0068_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002012,FLARE23_Ts_0023_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00002013,s0613,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002014,amos_0071,AMOS,unknown,unknown,unknown +BDMAP_00002015,TCIAColon_0207_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002016,TCIAColon_0244_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002017,case_00064,KiTS21,unknown,unknown,unhealthy +BDMAP_00002018,PETCT_f068e22258,autoPET,unknown,unknown,unknown +BDMAP_00002019,img0007,BTCV,healthy,healthy,healthy +BDMAP_00002020,Case_00465_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002021,pancreas_077,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002022,case_00083,KiTS21,unknown,unknown,unhealthy +BDMAP_00002023,amos_0264,AMOS,unknown,unknown,unknown +BDMAP_00002024,word_0030,WORD,unknown,unknown,unknown +BDMAP_00002025,hepaticvessel_121,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002026,pancreas_177,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002027,CPTAC-CCRCC-C3L-01958_0_5,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00002028,s0550,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002029,pancreas_261,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002030,s0560,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002031,s0749,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002032,s0617,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002033,PETCT_a82f03863a,autoPET,unknown,unknown,unknown +BDMAP_00002034,PETCT_f0e1b89b41,autoPET,unknown,unknown,unknown +BDMAP_00002035,case_00099,KiTS19,unknown,unknown,unhealthy +BDMAP_00002036,Case_00878_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002037,Case_00825_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002038,colon_085,MSD-Colon,unknown,unknown,unknown +BDMAP_00002039,colon_126,MSD-Colon,unknown,unknown,unknown +BDMAP_00002040,PETCT_62ced197ca,autoPET,unknown,unknown,unknown +BDMAP_00002041,case_00427,KiTS23,unknown,unknown,unhealthy +BDMAP_00002042,hepaticvessel_157,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002043,PETCT_b57e1c1f5f,autoPET,unknown,unknown,unknown +BDMAP_00002044,TCIAColon_0012_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002045,hepaticvessel_454,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002046,amos_0060,AMOS,unknown,unknown,unknown +BDMAP_00002047,hepaticvessel_051,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002048,lung_064,MSD-Lung,unknown,unknown,unknown +BDMAP_00002049,PETCT_685d7c09b5,autoPET,unknown,unknown,unknown +BDMAP_00002050,CPTAC-CCRCC-C3N-00437_0_3,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00002051,PETCT_a29cae0316,autoPET,unknown,unknown,unknown +BDMAP_00002052,Case_00970_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002053,hepaticvessel_119,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002054,s0324,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002055,liver_38,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002056,s0945,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002057,case_00455,KiTS23,unknown,unknown,unhealthy +BDMAP_00002058,s0635,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002059,PANCREAS_0003,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00002060,case_00217,KiTS21,unknown,unknown,unhealthy +BDMAP_00002061,amos_0104,AMOS,unknown,unknown,unknown +BDMAP_00002062,TCIAColon_0037_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002063,TCIAColon_0180_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002064,s0228,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002065,case_00500,KiTS23,unknown,unknown,unhealthy +BDMAP_00002066,Case_00932_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002067,case_00105,KiTS19,unknown,unknown,unhealthy +BDMAP_00002068,case_00030,KiTS21,unknown,unknown,unhealthy +BDMAP_00002069,PETCT_6f46454a8d,autoPET,unknown,unknown,unknown +BDMAP_00002070,s0940,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002071,PETCT_d6b2218bf3,autoPET,unknown,unknown,unknown +BDMAP_00002072,hepaticvessel_364,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00002073,hepaticvessel_422,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002074,TCIAColon_0124_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002075,case_00442,KiTS23,unknown,unknown,unhealthy +BDMAP_00002076,pancreas_376,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002077,amos_0195,AMOS,unknown,unknown,unknown +BDMAP_00002078,TCIAColon_0011_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002079,hepaticvessel_216,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00002080,volume-97,CT-ORG,unknown,unknown,unknown +BDMAP_00002081,TCIAColon_0236_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002082,pancreas_447,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002083,Case_00545_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002084,volume-124,CT-ORG,unknown,unknown,unknown +BDMAP_00002085,case_00564,KiTS23,unknown,unknown,unhealthy +BDMAP_00002086,PETCT_b258dfa7c2,autoPET,unknown,unknown,unknown +BDMAP_00002087,case_00080,KiTS19,unknown,unknown,unhealthy +BDMAP_00002088,pancreas_057,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002089,spleen_53,MSD-Spleen,unknown,unknown,unknown +BDMAP_00002090,PETCT_e664932bbc,autoPET,unknown,unknown,unknown +BDMAP_00002091,case_00207,KiTS19,unknown,unknown,unhealthy +BDMAP_00002092,TCIAColon_0121_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002093,s0765,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002094,PETCT_d40a16781a,autoPET,unknown,unknown,unknown +BDMAP_00002095,PETCT_64c0cba177,autoPET,unknown,unknown,unknown +BDMAP_00002096,PETCT_b4247b8ecd,autoPET,unknown,unknown,unknown +BDMAP_00002097,TCIAColon_0050_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002098,amos_0400,AMOS,unknown,unknown,unknown +BDMAP_00002099,case_00406,KiTS23,unknown,unknown,unhealthy +BDMAP_00002100,s0513,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002101,PETCT_8a52353a72,autoPET,unknown,unknown,unknown +BDMAP_00002102,PETCT_62011ff15b,autoPET,unknown,unknown,unknown +BDMAP_00002103,colon_001,MSD-Colon,unknown,unknown,unknown +BDMAP_00002104,NIH-LYMPH-ABD-013_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00002105,PETCT_1b1bdfc35b,autoPET,unknown,unknown,unknown +BDMAP_00002106,PETCT_380f71df1e,autoPET,unknown,unknown,unknown +BDMAP_00002107,PETCT_61d5bc58fc,autoPET,unknown,unknown,unknown +BDMAP_00002108,PETCT_9da159b835,autoPET,unknown,unknown,unknown +BDMAP_00002109,img0001,BTCV,healthy,healthy,healthy +BDMAP_00002110,amos_0383,AMOS,unknown,unknown,unknown +BDMAP_00002111,PETCT_d472033d3b,autoPET,unknown,unknown,unknown +BDMAP_00002112,PETCT_d951eeb735,autoPET,unknown,unknown,unknown +BDMAP_00002113,TCIAColon_0149_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002114,case_00040,KiTS21,unknown,unknown,unhealthy +BDMAP_00002115,TCGA-OV-61-1906_0_1,TCGA-OV,unknown,unknown,unknown +BDMAP_00002116,PETCT_c898e2abcb,autoPET,unknown,unknown,unknown +BDMAP_00002117,liver_36,LiTS,unhealthy,unknown,unknown +BDMAP_00002118,TCIAColon_0191_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002119,colon_189,MSD-Colon,unknown,unknown,unknown +BDMAP_00002120,pancreas_075,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002121,hepaticvessel_455,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002122,case_00286,KiTS19,unknown,unknown,unhealthy +BDMAP_00002123,volume-133,CT-ORG,unknown,unknown,unknown +BDMAP_00002124,TCIAColon_0230_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002125,TCIAColon_0016_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002126,pancreas_273,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002127,hepaticvessel_153,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00002128,PETCT_5a274a0f26,autoPET,unknown,unknown,unknown +BDMAP_00002129,FLARE23_Ts_0004_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00002130,PETCT_bc80d06f97,autoPET,unknown,unknown,unknown +BDMAP_00002131,PETCT_a86b2dc6ce,autoPET,unknown,unknown,unknown +BDMAP_00002132,CPTAC-UCEC-C3N-00743_0_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00002133,case_00198,KiTS21,unknown,unknown,unhealthy +BDMAP_00002134,Case_01036_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002135,amos_0066,AMOS,unknown,unknown,unknown +BDMAP_00002136,TCGA-BLCA-4Z-AA7O_0_2,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00002137,TCIAColon_0067_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002138,PETCT_527c5afc5d,autoPET,unknown,unknown,unknown +BDMAP_00002139,hepaticvessel_263,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002140,word_0061,WORD,unknown,unknown,unknown +BDMAP_00002141,CPTAC-UCEC-C3L-02399_0_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00002142,s0088,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002143,PETCT_75046e0c12,autoPET,unknown,unknown,unknown +BDMAP_00002144,hepaticvessel_092,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002145,TCIAColon_0288_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002146,PETCT_d206b891ee,autoPET,unknown,unknown,unknown +BDMAP_00002147,liver_114,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002148,Case_00252_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002149,lung_046,MSD-Lung,unknown,unknown,unknown +BDMAP_00002150,s0963,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002151,TCIAColon_0214_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002152,colon_114,MSD-Colon,unknown,unknown,unknown +BDMAP_00002153,hepaticvessel_198,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002154,PETCT_ea051a3e6c,autoPET,unknown,unknown,unknown +BDMAP_00002155,word_0096,WORD,unknown,unknown,unknown +BDMAP_00002156,TCIAColon_0102_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002157,TCIAColon_0067_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002158,liver_37,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002159,Case_00943_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002160,TCIAColon_0223_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002161,s0158,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002162,amos_0016,AMOS,unknown,unknown,unknown +BDMAP_00002163,case_00143,KiTS19,unknown,unknown,unhealthy +BDMAP_00002164,case_00426,KiTS23,unknown,unknown,unhealthy +BDMAP_00002165,hepaticvessel_266,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002166,case_00222,KiTS21,unknown,unknown,unhealthy +BDMAP_00002167,liver_11,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002168,hepaticvessel_016,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002169,TCIAColon_0063_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002170,FLARE23_Ts_0074_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00002171,pancreas_095,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002172,liver_37,LiTS,unhealthy,unknown,unknown +BDMAP_00002173,case_00411,KiTS23,unknown,unknown,unhealthy +BDMAP_00002174,s0145,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002175,PETCT_4a255db7bd,autoPET,unknown,unknown,unknown +BDMAP_00002176,PETCT_f7067b7bbb,autoPET,unknown,unknown,unknown +BDMAP_00002177,s0898,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002178,PETCT_7785c10e91,autoPET,unknown,unknown,unknown +BDMAP_00002179,PETCT_63dd9503eb,autoPET,unknown,unknown,unknown +BDMAP_00002180,word_0003,WORD,unknown,unknown,unknown +BDMAP_00002181,case_00100,KiTS19,unknown,unknown,unhealthy +BDMAP_00002182,PETCT_7978e9fe62,autoPET,unknown,unknown,unknown +BDMAP_00002183,CPTAC-PDA-C3N-01714_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00002184,case_00575,KiTS23,unknown,unknown,unhealthy +BDMAP_00002185,colon_203,MSD-Colon,unknown,unknown,unknown +BDMAP_00002186,word_0094,WORD,unknown,unknown,unknown +BDMAP_00002187,TCIAColon_0162_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002188,pancreas_204,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002189,hepaticvessel_004,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002190,hepaticvessel_113,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002191,PETCT_6aea5c3a03,autoPET,unknown,unknown,unknown +BDMAP_00002192,PETCT_aee7d68f86,autoPET,unknown,unknown,unknown +BDMAP_00002193,colon_198,MSD-Colon,unknown,unknown,unknown +BDMAP_00002194,amos_0225,AMOS,unknown,unknown,unknown +BDMAP_00002195,TCIAColon_0100_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00002196,s0519,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002197,word_0005,WORD,unknown,unknown,unknown +BDMAP_00002198,volume-117,CT-ORG,unknown,unknown,unknown +BDMAP_00002199,colon_120,MSD-Colon,unknown,unknown,unknown +BDMAP_00002200,PETCT_35c9c85a96,autoPET,unknown,unknown,unknown +BDMAP_00002201,PETCT_9ad7dffae6,autoPET,unknown,unknown,unknown +BDMAP_00002202,TCIAColon_0086_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002203,TCIAColon_0205_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002204,PETCT_d32cf972af,autoPET,unknown,unknown,unknown +BDMAP_00002205,TCIAColon_0066_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002206,s1063,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002207,amos_0177,AMOS,unknown,unknown,unknown +BDMAP_00002208,s0086,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002209,lung_014,MSD-Lung,unknown,unknown,unknown +BDMAP_00002210,PETCT_3cd49210eb,autoPET,unknown,unknown,unknown +BDMAP_00002211,case_00195,KiTS19,unknown,unknown,unhealthy +BDMAP_00002212,PANCREAS_0024,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00002213,pancreas_457,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002214,liver_128,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002215,TCIAColon_0163_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002216,pancreas_120,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002217,amos_0086,AMOS,unknown,unknown,unknown +BDMAP_00002218,PETCT_1a3d4e63ee,autoPET,unknown,unknown,unknown +BDMAP_00002219,TCIAColon_0285_0_5,TCIAColon,unknown,unknown,unknown +BDMAP_00002220,spleen_39,MSD-Spleen,unknown,unknown,unknown +BDMAP_00002221,PETCT_1bb48bfb40,autoPET,unknown,unknown,unknown +BDMAP_00002222,s0119,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002223,colon_184,MSD-Colon,unknown,unknown,unknown +BDMAP_00002224,PETCT_9b53627d23,autoPET,unknown,unknown,unknown +BDMAP_00002225,Case_00998_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002226,case_00041,KiTS21,unknown,unknown,unhealthy +BDMAP_00002227,pancreas_227,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002228,hepaticvessel_060,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00002229,colon_116,MSD-Colon,unknown,unknown,unknown +BDMAP_00002230,colon_104,MSD-Colon,unknown,unknown,unknown +BDMAP_00002231,lung_066,MSD-Lung,unknown,unknown,unknown +BDMAP_00002232,pancreas_052,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002233,pancreas_247,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002234,amos_0224,AMOS,unknown,unknown,unknown +BDMAP_00002235,PETCT_5ac322455f,autoPET,unknown,unknown,unknown +BDMAP_00002236,PANCREAS_0042,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00002237,pancreas_183,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002238,hepaticvessel_176,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00002239,TCIAColon_0141_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002240,TCIAColon_0162_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002241,PETCT_62b114e09b,autoPET,unknown,unknown,unknown +BDMAP_00002242,case_00067,KiTS21,unknown,unknown,unhealthy +BDMAP_00002243,hepaticvessel_205,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00002244,pancreas_366,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002245,s0341,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002246,PETCT_9f491f1481,autoPET,unknown,unknown,unknown +BDMAP_00002247,CPTAC-PDA-C3N-01714_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00002248,hepaticvessel_432,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002249,s1099,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002250,pancreas_421,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002251,case_00144,KiTS21,unknown,unknown,unhealthy +BDMAP_00002252,liver_54,LiTS,unhealthy,unknown,unknown +BDMAP_00002253,colon_015,MSD-Colon,unknown,unknown,unknown +BDMAP_00002254,TCIAColon_0118_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002255,hepaticvessel_184,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002256,Case_00988_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002257,PETCT_983a76fd43,autoPET,unknown,unknown,unknown +BDMAP_00002258,volume-110,CT-ORG,unknown,unknown,unknown +BDMAP_00002259,pancreas_461,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002260,case_00194,KiTS21,unknown,unknown,unhealthy +BDMAP_00002261,PETCT_0cda25453b,autoPET,unknown,unknown,unknown +BDMAP_00002262,PETCT_34aa521b46,autoPET,unknown,unknown,unknown +BDMAP_00002263,Case_00524_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002264,PETCT_9e864bb710,autoPET,unknown,unknown,unknown +BDMAP_00002265,case_00176,KiTS21,unknown,unknown,unhealthy +BDMAP_00002266,liver_146,MSD-Liver,unknown,unknown,unknown +BDMAP_00002267,liver_7,LiTS,unhealthy,unknown,unknown +BDMAP_00002268,pancreas_338,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002269,s0028,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002270,TCIAColon_0184_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002271,liver_68,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002272,PETCT_7948aa0e26,autoPET,unknown,unknown,unknown +BDMAP_00002273,case_00283,KiTS21,unknown,unknown,unhealthy +BDMAP_00002274,s1291,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002275,liver_89,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002276,colon_063,MSD-Colon,unknown,unknown,unknown +BDMAP_00002277,TCIAColon_0198_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002278,pancreas_045,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002279,PETCT_39eca178a1,autoPET,unknown,unknown,unknown +BDMAP_00002280,s0157,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002281,CPTAC-PDA-C3N-03430_1_5,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00002282,liver_77,LiTS,unhealthy,unknown,unknown +BDMAP_00002283,liver_44,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002284,NIH-LYMPH-MED-012_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00002285,Case_00884_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002286,PETCT_9a2c6e618a,autoPET,unknown,unknown,unknown +BDMAP_00002287,colon_079,MSD-Colon,unknown,unknown,unknown +BDMAP_00002288,case_00521,KiTS23,unknown,unknown,unhealthy +BDMAP_00002289,liver_122,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002290,PETCT_fb014a1ea0,autoPET,unknown,unknown,unknown +BDMAP_00002291,TCIAColon_0285_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00002292,PETCT_b663adb148,autoPET,unknown,unknown,unknown +BDMAP_00002293,TCIAColon_0195_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002294,TCIAColon_0229_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002295,pancreas_372,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002296,TCIAColon_0179_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002297,s0694,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002298,pancreas_100,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002299,s0836,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002300,FLARE23_Ts_0088_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00002301,NIH-LYMPH-ABD-063_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00002302,case_00202,KiTS19,unknown,unknown,unhealthy +BDMAP_00002303,s1387,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002304,pancreas_354,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002305,colon_040,MSD-Colon,unknown,unknown,unknown +BDMAP_00002306,CPTAC-PDA-C3N-02998_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00002307,PETCT_456d14846b,autoPET,unknown,unknown,unknown +BDMAP_00002308,s1100,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002309,pancreas_299,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002310,case_00227,KiTS19,unknown,unknown,unhealthy +BDMAP_00002311,pancreas_133,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002312,TCGA-OV-61-1907_2_1,TCGA-OV,unknown,unknown,unknown +BDMAP_00002313,pancreas_131,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002314,TCIAColon_0027_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002315,NIH-LYMPH-ABD-081_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00002316,s0743,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002317,hepaticvessel_098,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002318,colon_077,MSD-Colon,unknown,unknown,unknown +BDMAP_00002319,case_00497,KiTS23,unknown,unknown,unhealthy +BDMAP_00002320,pancreas_381,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002321,Case_00458_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002322,CPTAC-CCRCC-C3N-00310_0_5,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00002323,s1390,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002324,PETCT_98c6af8b90,autoPET,unknown,unknown,unknown +BDMAP_00002325,TCIAColon_0025_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002326,case_00479,KiTS23,unknown,unknown,unhealthy +BDMAP_00002327,TCIAColon_0062_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002328,pancreas_387,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002329,FLARE23_Ts_0017_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00002330,NIH-LYMPH-MED-009_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00002331,Case_00433_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002332,pancreas_130,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002333,case_00501,KiTS23,unknown,unknown,unhealthy +BDMAP_00002334,word_0015,WORD,unknown,unknown,unknown +BDMAP_00002335,PETCT_41472f5ce9,autoPET,unknown,unknown,unknown +BDMAP_00002336,liver_156,MSD-Liver,unknown,unknown,unknown +BDMAP_00002337,s0239,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002338,Case_01022_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002339,s1238,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002340,TCGA-BLCA-DK-A1A7_0_1,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00002341,colon_082,MSD-Colon,unknown,unknown,unknown +BDMAP_00002342,volume-102,CT-ORG,unknown,unknown,unknown +BDMAP_00002343,pancreas_174,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002344,PETCT_b2244b5591,autoPET,unknown,unknown,unknown +BDMAP_00002345,CPTAC-PDA-C3N-03426_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00002346,PETCT_55ca11402a,autoPET,unknown,unknown,unknown +BDMAP_00002347,case_00256,KiTS21,unknown,unknown,unhealthy +BDMAP_00002348,pancreas_397,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002349,liver_28,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002350,TCIAColon_0028_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002351,PETCT_f1ca0f7c4c,autoPET,unknown,unknown,unknown +BDMAP_00002352,lung_053,MSD-Lung,unknown,unknown,unknown +BDMAP_00002353,PETCT_93bea242d1,autoPET,unknown,unknown,unknown +BDMAP_00002354,case_00491,KiTS23,unknown,unknown,unhealthy +BDMAP_00002355,Case_00202_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002356,colon_121,MSD-Colon,unknown,unknown,unknown +BDMAP_00002357,amos_0099,AMOS,unknown,unknown,unknown +BDMAP_00002358,Case_00965_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002359,liver_8,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002360,PETCT_4848bebb10,autoPET,unknown,unknown,unknown +BDMAP_00002361,case_00202,KiTS21,unknown,unknown,unhealthy +BDMAP_00002362,pancreas_265,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002363,case_00128,KiTS21,unknown,unknown,unhealthy +BDMAP_00002364,NIH-LYMPH-ABD-071_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00002365,amos_0281,AMOS,unknown,unknown,unknown +BDMAP_00002366,s1369,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002367,img0008,BTCV,healthy,healthy,healthy +BDMAP_00002368,PETCT_2b60c8135a,autoPET,unknown,unknown,unknown +BDMAP_00002369,PETCT_4760c0139a,autoPET,unknown,unknown,unknown +BDMAP_00002370,CPTAC-UCEC-C3N-01171_0_7,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00002371,hepaticvessel_078,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002372,amos_0045,AMOS,unknown,unknown,unknown +BDMAP_00002373,liver_41,LiTS,unhealthy,unknown,unknown +BDMAP_00002374,word_0148,WORD,unknown,unknown,unknown +BDMAP_00002375,PETCT_17d334cb6c,autoPET,unknown,unknown,unknown +BDMAP_00002376,Case_00709_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002377,s0677,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002378,PETCT_ad7c6a4a58,autoPET,unknown,unknown,unknown +BDMAP_00002379,PETCT_d46f0109f8,autoPET,unknown,unknown,unknown +BDMAP_00002380,amos_0175,AMOS,unknown,unknown,unknown +BDMAP_00002381,volume-104,CT-ORG,unknown,unknown,unknown +BDMAP_00002382,CPTAC-PDA-C3N-01715_0_5,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00002383,case_00090,KiTS21,unknown,unknown,unhealthy +BDMAP_00002384,Case_00285_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002385,s0124,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002386,Case_00015_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002387,pancreas_358,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002388,TCIAColon_0053_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002389,NIH-LYMPH-ABD-006_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00002390,FLARE23_Ts_0002_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00002391,s0307,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002392,Case_00293_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002393,PETCT_ddbb3c69f0,autoPET,unknown,unknown,unknown +BDMAP_00002394,Case_00887_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002395,pancreas_039,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002396,case_00175,KiTS21,unknown,unknown,unhealthy +BDMAP_00002397,PETCT_80ccbdadf9,autoPET,unknown,unknown,unknown +BDMAP_00002398,TCIAColon_0219_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002399,PETCT_7d8aa1e94d,autoPET,unknown,unknown,unknown +BDMAP_00002400,hepaticvessel_366,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00002401,colon_112,MSD-Colon,unknown,unknown,unknown +BDMAP_00002402,pancreas_228,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002403,case_00254,KiTS21,unknown,unknown,unhealthy +BDMAP_00002404,case_00214,KiTS21,unknown,unknown,unhealthy +BDMAP_00002405,CPTAC-PDA-C3N-01167_0_8,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00002406,s0109,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002407,case_00576,KiTS23,unknown,unknown,unhealthy +BDMAP_00002408,PETCT_14929994cf,autoPET,unknown,unknown,unknown +BDMAP_00002409,CPTAC-PDA-C3N-03670_0_2,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00002410,case_00078,KiTS21,unknown,unknown,unhealthy +BDMAP_00002411,pancreas_339,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002412,23_image,CHAOS,healthy,healthy,healthy +BDMAP_00002413,hepaticvessel_245,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002414,NIH-LYMPH-ABD-014_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00002415,hepaticvessel_340,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002416,PETCT_4fb1817df3,autoPET,unknown,unknown,unknown +BDMAP_00002417,case_00017,KiTS19,unknown,unknown,unhealthy +BDMAP_00002418,hepaticvessel_272,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002419,liver_33,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002420,hepaticvessel_448,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00002421,case_00172,KiTS21,unknown,unknown,unhealthy +BDMAP_00002422,case_00409,KiTS23,unknown,unknown,unhealthy +BDMAP_00002423,TCIAColon_0004_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002424,liver_200,MSD-Liver,unknown,unknown,unknown +BDMAP_00002425,hepaticvessel_048,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00002426,case_00216,KiTS21,unknown,unknown,unhealthy +BDMAP_00002427,NIH-LYMPH-ABD-044_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00002428,TCIAColon_0018_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002429,TCIAColon_0269_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002430,NIH-LYMPH-ABD-055_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00002431,NIH-LYMPH-MED-005_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00002432,LDCT-L277_0_0,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00002433,case_00209,KiTS19,unknown,unknown,unhealthy +BDMAP_00002434,case_00107,KiTS19,unknown,unknown,unhealthy +BDMAP_00002435,s0777,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002436,liver_132,MSD-Liver,unknown,unknown,unknown +BDMAP_00002437,case_00027,KiTS21,unknown,unknown,unhealthy +BDMAP_00002438,Case_00212_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002439,PETCT_465176d213,autoPET,unknown,unknown,unknown +BDMAP_00002440,case_00014,KiTS21,unknown,unknown,unhealthy +BDMAP_00002441,hepaticvessel_236,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002442,CPTAC-CCRCC-C3N-00435_0_2,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00002443,s1007,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002444,Case_00936_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002445,s0319,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002446,case_00179,KiTS19,unknown,unknown,unhealthy +BDMAP_00002447,TCIAColon_0201_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002448,amos_0337,AMOS,unknown,unknown,unknown +BDMAP_00002449,PETCT_cd50f3fec4,autoPET,unknown,unknown,unknown +BDMAP_00002450,s0507,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002451,colon_134,MSD-Colon,unknown,unknown,unknown +BDMAP_00002452,PETCT_cb240e6f0f,autoPET,unknown,unknown,unknown +BDMAP_00002453,case_00016,KiTS19,unknown,unknown,unhealthy +BDMAP_00002454,s1340,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002455,Case_01055_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002456,PETCT_64909533c5,autoPET,unknown,unknown,unknown +BDMAP_00002457,pancreas_441,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002458,colon_215,MSD-Colon,unknown,unknown,unknown +BDMAP_00002459,PETCT_b92d7f441e,autoPET,unknown,unknown,unknown +BDMAP_00002460,PETCT_0117d7f11f,autoPET,unknown,unknown,unknown +BDMAP_00002461,TCIAColon_0268_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002462,hepaticvessel_128,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002463,liver_19,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002464,PETCT_7abe274c10,autoPET,unknown,unknown,unknown +BDMAP_00002465,colon_086,MSD-Colon,unknown,unknown,unknown +BDMAP_00002466,hepaticvessel_212,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00002467,amos_0129,AMOS,unknown,unknown,unknown +BDMAP_00002468,PETCT_90d668ed29,autoPET,unknown,unknown,unknown +BDMAP_00002469,Case_00183_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002470,TCGA-BLCA-DK-A3IN_0_2,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00002471,case_00225,KiTS21,unknown,unknown,unhealthy +BDMAP_00002472,case_00437,KiTS23,unknown,unknown,unhealthy +BDMAP_00002473,lung_043,MSD-Lung,unknown,unknown,unknown +BDMAP_00002474,case_00032,KiTS19,unknown,unknown,unhealthy +BDMAP_00002475,pancreas_266,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002476,case_00275,KiTS21,unknown,unknown,unhealthy +BDMAP_00002477,CPTAC-PDA-C3N-01382_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00002478,hepaticvessel_066,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002479,liver_90,LiTS,unhealthy,unknown,unknown +BDMAP_00002480,CPTAC-UCEC-C3N-00866_2_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00002481,case_00070,KiTS19,unknown,unknown,unhealthy +BDMAP_00002482,s0227,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002483,PETCT_c5a143a604,autoPET,unknown,unknown,unknown +BDMAP_00002484,case_00261,KiTS21,unknown,unknown,unhealthy +BDMAP_00002485,liver_2,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002486,hepaticvessel_020,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002487,case_00191,KiTS21,unknown,unknown,unhealthy +BDMAP_00002488,PETCT_8b40e356dc,autoPET,unknown,unknown,unknown +BDMAP_00002489,s0365,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002490,s1249,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002491,PETCT_591b3025ff,autoPET,unknown,unknown,unknown +BDMAP_00002492,case_00124,KiTS19,unknown,unknown,unhealthy +BDMAP_00002493,hepaticvessel_095,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00002494,TCIAColon_0230_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00002495,liver_105,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002496,case_00284,KiTS21,unknown,unknown,unhealthy +BDMAP_00002497,hepaticvessel_164,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002498,case_00281,KiTS21,unknown,unknown,unhealthy +BDMAP_00002499,TCIAColon_0022_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002500,TCGA-OV-61-1738_1_1,TCGA-OV,unknown,unknown,unknown +BDMAP_00002501,case_00038,KiTS19,unknown,unknown,unhealthy +BDMAP_00002502,PETCT_2d9638360e,autoPET,unknown,unknown,unknown +BDMAP_00002503,pancreas_383,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002504,case_00056,KiTS19,unknown,unknown,unhealthy +BDMAP_00002505,CPTAC-CCRCC-C3N-00491_0_4,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00002506,s0992,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002507,PETCT_4cb875dc0b,autoPET,unknown,unknown,unknown +BDMAP_00002508,Case_00427_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002509,case_00190,KiTS21,unknown,unknown,unhealthy +BDMAP_00002510,TCIAColon_0102_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00002511,case_00238,KiTS19,unknown,unknown,unhealthy +BDMAP_00002512,PETCT_8311aeddb9,autoPET,unknown,unknown,unknown +BDMAP_00002513,PETCT_bb564e29d2,autoPET,unknown,unknown,unknown +BDMAP_00002514,pancreas_462,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002515,lung_044,MSD-Lung,unknown,unknown,unknown +BDMAP_00002516,TCIAColon_0019_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002517,s1209,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002518,case_00041,KiTS19,unknown,unknown,unhealthy +BDMAP_00002519,hepaticvessel_292,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00002520,TCIAColon_0047_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002521,s0224,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002522,FLARE23_Ts_0089_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00002523,pancreas_399,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002524,case_00245,KiTS21,unknown,unknown,unhealthy +BDMAP_00002525,PETCT_2dc17aaeaf,autoPET,unknown,unknown,unknown +BDMAP_00002526,TCIAColon_0181_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002527,hepaticvessel_079,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002528,hepaticvessel_076,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00002529,liver_125,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002530,colon_180,MSD-Colon,unknown,unknown,unknown +BDMAP_00002531,CPTAC-CCRCC-C3L-01459_1_5,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00002532,s0746,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002533,Case_00835_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002534,spleen_59,MSD-Spleen,unknown,unknown,unknown +BDMAP_00002535,s1208,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002536,amos_0185,AMOS,unknown,unknown,unknown +BDMAP_00002537,CPTAC-CCRCC-C3L-01954_3_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00002538,PETCT_448225c237,autoPET,unknown,unknown,unknown +BDMAP_00002539,s1008,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002540,volume-85,CT-ORG,unknown,unknown,unknown +BDMAP_00002541,colon_083,MSD-Colon,unknown,unknown,unknown +BDMAP_00002542,Case_00728_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002543,LDCT-L237_0_0,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00002544,amos_0299,AMOS,unknown,unknown,unknown +BDMAP_00002545,case_00119,KiTS21,unknown,unknown,unhealthy +BDMAP_00002546,TCGA-BLCA-4Z-AA81_0_3,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00002547,lung_055,MSD-Lung,unknown,unknown,unknown +BDMAP_00002548,s0651,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002549,hepaticvessel_017,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00002550,PETCT_321bba14bc,autoPET,unknown,unknown,unknown +BDMAP_00002551,TCIAColon_0299_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00002552,case_00093,KiTS19,unknown,unknown,unhealthy +BDMAP_00002553,PETCT_a627fc68a1,autoPET,unknown,unknown,unknown +BDMAP_00002554,amos_0408,AMOS,unknown,unknown,unknown +BDMAP_00002555,word_0109,WORD,unknown,unknown,unknown +BDMAP_00002556,TCIAColon_0078_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002557,s0616,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002558,Case_00254_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002559,Case_00992_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002560,Case_00678_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002561,amos_0341,AMOS,unknown,unknown,unknown +BDMAP_00002562,case_00185,KiTS21,unknown,unknown,unhealthy +BDMAP_00002563,Case_00917_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002564,Case_00975_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002565,s1354,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002566,liver_142,MSD-Liver,unknown,unknown,unknown +BDMAP_00002567,PETCT_b6fc20942c,autoPET,unknown,unknown,unknown +BDMAP_00002568,TCIAColon_0211_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002569,PANCREAS_0014,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00002570,case_00256,KiTS19,unknown,unknown,unhealthy +BDMAP_00002571,case_00297,KiTS19,unknown,unknown,unhealthy +BDMAP_00002572,spleen_55,MSD-Spleen,unknown,unknown,unknown +BDMAP_00002573,FLARE23_Ts_0058_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00002574,case_00013,KiTS19,unknown,unknown,unhealthy +BDMAP_00002575,Case_00857_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002576,s0733,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002577,TCIAColon_0034_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002578,s1031,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002579,hepaticvessel_089,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002580,pancreas_298,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002581,Case_00863_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002582,case_00420,KiTS23,unknown,unknown,unhealthy +BDMAP_00002583,liver_99,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002584,PETCT_0cda25453b,autoPET,unknown,unknown,unknown +BDMAP_00002585,pancreas_496,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002586,s1276,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002587,FLARE23_Ts_0011_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00002588,PETCT_0e2034240b,autoPET,unknown,unknown,unknown +BDMAP_00002589,NIH-LYMPH-MED-014_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00002590,hepaticvessel_201,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002591,TCIAColon_0071_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002592,case_00459,KiTS23,unknown,unknown,unhealthy +BDMAP_00002593,PETCT_68ef307665,autoPET,unknown,unknown,unknown +BDMAP_00002594,pancreas_220,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002595,PETCT_7147385005,autoPET,unknown,unknown,unknown +BDMAP_00002596,CPTAC-CCRCC-C3L-02202_0_2,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00002597,s0211,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002598,colon_138,MSD-Colon,unknown,unknown,unknown +BDMAP_00002599,hepaticvessel_159,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002600,word_0056,WORD,unknown,unknown,unknown +BDMAP_00002601,Case_00961_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002602,TCIAColon_0129_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002603,pancreas_078,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002604,spleen_63,MSD-Spleen,unknown,unknown,unknown +BDMAP_00002605,PETCT_61348439bf,autoPET,unknown,unknown,unknown +BDMAP_00002606,Case_00769_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002607,TCIAColon_0278_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002608,PETCT_a9d7a14ba1,autoPET,unknown,unknown,unknown +BDMAP_00002609,case_00546,KiTS23,unknown,unknown,unhealthy +BDMAP_00002610,PETCT_06d55e8295,autoPET,unknown,unknown,unknown +BDMAP_00002611,PETCT_32aa845af1,autoPET,unknown,unknown,unknown +BDMAP_00002612,colon_196,MSD-Colon,unknown,unknown,unknown +BDMAP_00002613,Case_00768_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002614,PETCT_ede28cc3c2,autoPET,unknown,unknown,unknown +BDMAP_00002615,TCIAColon_0272_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002616,pancreas_369,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002617,CPTAC-PDA-C3N-02697_0_5,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00002618,PETCT_8e02f36295,autoPET,unknown,unknown,unknown +BDMAP_00002619,pancreas_404,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002620,PETCT_e37d5b9bc2,autoPET,unknown,unknown,unknown +BDMAP_00002621,LDCT-L248_0_0,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00002622,PETCT_997d4ef9a7,autoPET,unknown,unknown,unknown +BDMAP_00002623,PETCT_f8de0cde56,autoPET,unknown,unknown,unknown +BDMAP_00002624,hepaticvessel_230,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002625,pancreas_307,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002626,case_00092,KiTS21,unknown,unknown,unhealthy +BDMAP_00002627,PETCT_741f6130ed,autoPET,unknown,unknown,unknown +BDMAP_00002628,s0790,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002629,FLARE23_Ts_0091_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00002630,PETCT_b7c1533a39,autoPET,unknown,unknown,unknown +BDMAP_00002631,case_00005,KiTS21,unknown,unknown,unhealthy +BDMAP_00002632,PETCT_4404466919,autoPET,unknown,unknown,unknown +BDMAP_00002633,Case_00979_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002634,TCIAColon_0185_0_5,TCIAColon,unknown,unknown,unknown +BDMAP_00002635,PETCT_dd8f9f217c,autoPET,unknown,unknown,unknown +BDMAP_00002636,volume-70,CT-ORG,unknown,unknown,unknown +BDMAP_00002637,Case_00805_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002638,case_00139,KiTS19,unknown,unknown,unhealthy +BDMAP_00002639,img0033,BTCV,healthy,healthy,healthy +BDMAP_00002640,PETCT_9a2bfe901f,autoPET,unknown,unknown,unknown +BDMAP_00002641,lung_058,MSD-Lung,unknown,unknown,unknown +BDMAP_00002642,CPTAC-PDA-C3N-03430_0_10,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00002643,LDCT-L273_0_1,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00002644,TCIAColon_0109_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002645,TCIAColon_0224_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002646,PETCT_9f6e8b1b43,autoPET,unknown,unknown,unknown +BDMAP_00002647,pancreas_451,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002648,case_00104,KiTS21,unknown,unknown,unhealthy +BDMAP_00002649,Case_00830_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002650,PANCREAS_0047,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00002651,hepaticvessel_018,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002652,TCIAColon_0074_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002653,case_00515,KiTS23,unknown,unknown,unhealthy +BDMAP_00002654,colon_096,MSD-Colon,unknown,unknown,unknown +BDMAP_00002655,case_00106,KiTS21,unknown,unknown,unhealthy +BDMAP_00002656,case_00445,KiTS23,unknown,unknown,unhealthy +BDMAP_00002657,pancreas_340,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002658,s0082,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002659,PETCT_69c90b6820,autoPET,unknown,unknown,unknown +BDMAP_00002660,amos_0402,AMOS,unknown,unknown,unknown +BDMAP_00002661,case_00467,KiTS23,unknown,unknown,unhealthy +BDMAP_00002662,PETCT_27d69a8466,autoPET,unknown,unknown,unknown +BDMAP_00002663,case_00241,KiTS21,unknown,unknown,unhealthy +BDMAP_00002664,s0030,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002665,case_00092,KiTS19,unknown,unknown,unhealthy +BDMAP_00002666,TCIAColon_0223_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002667,hepaticvessel_104,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002668,word_0007,WORD,unknown,unknown,unknown +BDMAP_00002669,FLARE23_Ts_0085_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00002670,PETCT_b621742469,autoPET,unknown,unknown,unknown +BDMAP_00002671,s0880,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002672,LDCT-L203_0_0,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00002673,case_00025,KiTS19,unknown,unknown,unhealthy +BDMAP_00002674,PETCT_fa45f610c4,autoPET,unknown,unknown,unknown +BDMAP_00002675,Case_00009_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002676,TCIAColon_0107_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002677,PETCT_c227131152,autoPET,unknown,unknown,unknown +BDMAP_00002678,TCIAColon_0265_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002679,PETCT_4f6ff86453,autoPET,unknown,unknown,unknown +BDMAP_00002680,LDCT-L212_0_1,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00002681,s1297,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002682,word_0040,WORD,unknown,unknown,unknown +BDMAP_00002683,CPTAC-UCEC-C3N-00866_1_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00002684,s1164,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002685,PETCT_fe705ea1cc,autoPET,unknown,unknown,unknown +BDMAP_00002686,pancreas_464,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002687,PETCT_ad7cd4a9d2,autoPET,unknown,unknown,unknown +BDMAP_00002688,pancreas_244,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002689,case_00131,KiTS21,unknown,unknown,unhealthy +BDMAP_00002690,pancreas_064,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002691,hepaticvessel_142,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002692,PETCT_3bce0eb7aa,autoPET,unknown,unknown,unknown +BDMAP_00002693,PETCT_53a0610615,autoPET,unknown,unknown,unknown +BDMAP_00002694,Case_00017_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002695,case_00165,KiTS21,unknown,unknown,unhealthy +BDMAP_00002696,case_00166,KiTS21,unknown,unknown,unhealthy +BDMAP_00002697,PETCT_f6295a93a6,autoPET,unknown,unknown,unknown +BDMAP_00002698,hepaticvessel_188,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00002699,liver_52,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002700,PETCT_d31a5688a2,autoPET,unknown,unknown,unknown +BDMAP_00002701,s0050,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002702,s0690,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002703,s0763,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002704,colon_066,MSD-Colon,unknown,unknown,unknown +BDMAP_00002705,hepaticvessel_255,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002706,hepaticvessel_125,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002707,case_00295,KiTS21,unknown,unknown,unhealthy +BDMAP_00002708,case_00049,KiTS19,unknown,unknown,unhealthy +BDMAP_00002709,CPTAC-PDA-C3N-01167_0_9,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00002710,case_00013,KiTS21,unknown,unknown,unhealthy +BDMAP_00002711,PETCT_d103e57f0e,autoPET,unknown,unknown,unknown +BDMAP_00002712,liver_119,LiTS,healthy,unknown,unknown +BDMAP_00002713,FLARE23_Ts_0092_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00002714,TCIAColon_0213_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002715,PETCT_e0a7ccecad,autoPET,unknown,unknown,unknown +BDMAP_00002716,FLARE23_Ts_0061_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00002717,liver_98,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002718,CPTAC-PDA-C3N-02697_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00002719,liver_123,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002720,case_00002,KiTS19,unknown,unknown,unhealthy +BDMAP_00002721,TCIAColon_0038_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002722,TCIAColon_0172_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00002723,TCGA-BLCA-4Z-AA7W_0_5,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00002724,CPTAC-CCRCC-C3L-00815_0_6,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00002725,hepaticvessel_221,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002726,s0669,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002727,colon_060,MSD-Colon,unknown,unknown,unknown +BDMAP_00002728,case_00208,KiTS19,unknown,unknown,unhealthy +BDMAP_00002729,TCIAColon_0204_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002730,colon_181,MSD-Colon,unknown,unknown,unknown +BDMAP_00002731,hepaticvessel_420,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002732,colon_170,MSD-Colon,unknown,unknown,unknown +BDMAP_00002733,word_0147,WORD,unknown,unknown,unknown +BDMAP_00002734,amos_0186,AMOS,unknown,unknown,unknown +BDMAP_00002735,s0536,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002736,s0950,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002737,pancreas_345,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002738,s0923,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002739,colon_193,MSD-Colon,unknown,unknown,unknown +BDMAP_00002740,amos_0102,AMOS,unknown,unknown,unknown +BDMAP_00002741,hepaticvessel_279,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002742,case_00079,KiTS21,unknown,unknown,unhealthy +BDMAP_00002743,lung_093,MSD-Lung,unknown,unknown,unknown +BDMAP_00002744,case_00009,KiTS21,unknown,unknown,unhealthy +BDMAP_00002745,TCIAColon_0170_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002746,case_00464,KiTS23,unknown,unknown,unhealthy +BDMAP_00002747,colon_182,MSD-Colon,unknown,unknown,unknown +BDMAP_00002748,liver_65,LiTS,unhealthy,unknown,unknown +BDMAP_00002749,hepaticvessel_417,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00002750,LDCT-L229_0_1,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00002751,case_00051,KiTS21,unknown,unknown,unhealthy +BDMAP_00002752,PETCT_65346b03b8,autoPET,unknown,unknown,unknown +BDMAP_00002753,PANCREAS_0046,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00002754,Case_00192_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002755,Case_00761_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002756,PETCT_1956667fce,autoPET,unknown,unknown,unknown +BDMAP_00002757,s1289,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002758,pancreas_018,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002759,s0591,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002760,case_00236,KiTS19,unknown,unknown,unhealthy +BDMAP_00002761,PETCT_dac5cd2a4d,autoPET,unknown,unknown,unknown +BDMAP_00002762,Case_00217_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002763,PANCREAS_0038,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00002764,spleen_58,MSD-Spleen,unknown,unknown,unknown +BDMAP_00002765,s0447,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002766,s0467,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002767,hepaticvessel_137,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002768,PETCT_adc49adb3d,autoPET,unknown,unknown,unknown +BDMAP_00002769,PETCT_eeeda112bb,autoPET,unknown,unknown,unknown +BDMAP_00002770,PETCT_15f4b7254f,autoPET,unknown,unknown,unknown +BDMAP_00002771,colon_146,MSD-Colon,unknown,unknown,unknown +BDMAP_00002772,TCIAColon_0246_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002773,PETCT_f7a9267a69,autoPET,unknown,unknown,unknown +BDMAP_00002774,pancreas_475,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002775,case_00068,KiTS21,unknown,unknown,unhealthy +BDMAP_00002776,case_00036,KiTS21,unknown,unknown,unhealthy +BDMAP_00002777,s0915,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002778,PETCT_e6b8b963b2,autoPET,unknown,unknown,unknown +BDMAP_00002779,2_image,CHAOS,healthy,healthy,healthy +BDMAP_00002780,PETCT_7cfd708a53,autoPET,unknown,unknown,unknown +BDMAP_00002781,PETCT_ef9d41b836,autoPET,unknown,unknown,unknown +BDMAP_00002782,s0077,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002783,CPTAC-PDA-C3N-03430_1_10,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00002784,TCIAColon_0115_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002785,PETCT_04ab5c61c9,autoPET,unknown,unknown,unknown +BDMAP_00002786,hepaticvessel_115,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002787,PETCT_372746cc99,autoPET,unknown,unknown,unknown +BDMAP_00002788,case_00006,KiTS19,unknown,unknown,unhealthy +BDMAP_00002789,PETCT_987c8a1160,autoPET,unknown,unknown,unknown +BDMAP_00002790,s1140,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002791,liver_23,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002792,TCIAColon_0099_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00002793,pancreas_267,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002794,s1046,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002795,PETCT_62b114e09b,autoPET,unknown,unknown,unknown +BDMAP_00002796,TCIAColon_0110_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002797,volume-122,CT-ORG,unknown,unknown,unknown +BDMAP_00002798,case_00089,KiTS19,unknown,unknown,unhealthy +BDMAP_00002799,PETCT_2791a0b3c2,autoPET,unknown,unknown,unknown +BDMAP_00002800,word_0063,WORD,unknown,unknown,unknown +BDMAP_00002801,PETCT_9837205b34,autoPET,unknown,unknown,unknown +BDMAP_00002802,liver_170,MSD-Liver,unknown,unknown,unknown +BDMAP_00002803,case_00140,KiTS21,unknown,unknown,unhealthy +BDMAP_00002804,case_00108,KiTS21,unknown,unknown,unhealthy +BDMAP_00002805,liver_80,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002806,hepaticvessel_187,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00002807,case_00405,KiTS23,unknown,unknown,unhealthy +BDMAP_00002808,CPTAC-CCRCC-C3N-00437_0_5,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00002809,s1159,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002810,pancreas_073,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002811,PETCT_390129c0d2,autoPET,unknown,unknown,unknown +BDMAP_00002812,PETCT_d674a028b1,autoPET,unknown,unknown,unknown +BDMAP_00002813,PETCT_37472e737f,autoPET,unknown,unknown,unknown +BDMAP_00002814,PETCT_4cc808d16f,autoPET,unknown,unknown,unknown +BDMAP_00002815,pancreas_201,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002816,hepaticvessel_065,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002817,TCIAColon_0053_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002818,PETCT_f9e0c504af,autoPET,unknown,unknown,unknown +BDMAP_00002819,TCIAColon_0270_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002820,word_0112,WORD,unknown,unknown,unknown +BDMAP_00002821,pancreas_003,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002822,pancreas_423,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002823,PETCT_8c5d99b459,autoPET,unknown,unknown,unknown +BDMAP_00002824,s0593,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002825,amos_0052,AMOS,unknown,unknown,unknown +BDMAP_00002826,case_00153,KiTS21,unknown,unknown,unhealthy +BDMAP_00002827,TCIAColon_0268_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002828,colon_011,MSD-Colon,unknown,unknown,unknown +BDMAP_00002829,pancreas_286,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002830,PETCT_96e7a3ab28,autoPET,unknown,unknown,unknown +BDMAP_00002831,hepaticvessel_375,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002832,PETCT_3f2ee0274d,autoPET,unknown,unknown,unknown +BDMAP_00002833,case_00052,KiTS19,unknown,unknown,unhealthy +BDMAP_00002834,case_00091,KiTS19,unknown,unknown,unhealthy +BDMAP_00002835,PETCT_f650c87621,autoPET,unknown,unknown,unknown +BDMAP_00002836,PETCT_223f70f0b0,autoPET,unknown,unknown,unknown +BDMAP_00002837,word_0142,WORD,unknown,unknown,unknown +BDMAP_00002838,s1391,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002839,TCIAColon_0141_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002840,case_00065,KiTS21,unknown,unknown,unhealthy +BDMAP_00002841,liver_17,LiTS,unhealthy,unknown,unknown +BDMAP_00002842,TCIAColon_0272_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002843,PETCT_37952b7ffb,autoPET,unknown,unknown,unknown +BDMAP_00002844,pancreas_110,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002845,colon_137,MSD-Colon,unknown,unknown,unknown +BDMAP_00002846,colon_030,MSD-Colon,unknown,unknown,unknown +BDMAP_00002847,PETCT_7faf36a152,autoPET,unknown,unknown,unknown +BDMAP_00002848,TCIAColon_0299_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002849,liver_101,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002850,lung_038,MSD-Lung,unknown,unknown,unknown +BDMAP_00002851,volume-128,CT-ORG,unknown,unknown,unknown +BDMAP_00002852,s1233,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002853,s0107,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002854,case_00043,KiTS21,unknown,unknown,unhealthy +BDMAP_00002855,pancreas_259,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002856,liver_67,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002857,FLARE23_Ts_0095_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00002858,PETCT_84e7715ed9,autoPET,unknown,unknown,unknown +BDMAP_00002859,amos_0378,AMOS,unknown,unknown,unknown +BDMAP_00002860,TCIAColon_0070_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002861,s0371,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002862,NIH-LYMPH-ABD-043_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00002863,pancreas_330,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002864,case_00100,KiTS21,unknown,unknown,unhealthy +BDMAP_00002865,TCIAColon_0029_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002866,Case_00862_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002867,PETCT_3b26172779,autoPET,unknown,unknown,unknown +BDMAP_00002868,hepaticvessel_109,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00002869,word_0045,WORD,unknown,unknown,unknown +BDMAP_00002870,case_00008,KiTS19,unknown,unknown,unhealthy +BDMAP_00002871,case_00285,KiTS21,unknown,unknown,unhealthy +BDMAP_00002872,PETCT_bef465b4ad,autoPET,unknown,unknown,unknown +BDMAP_00002873,case_00110,KiTS19,unknown,unknown,unhealthy +BDMAP_00002874,NIH-LYMPH-ABD-011_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00002875,colon_201,MSD-Colon,unknown,unknown,unknown +BDMAP_00002876,s0615,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002877,PETCT_ff1451316e,autoPET,unknown,unknown,unknown +BDMAP_00002878,PETCT_c799ccc2f6,autoPET,unknown,unknown,unknown +BDMAP_00002879,PETCT_8b73608326,autoPET,unknown,unknown,unknown +BDMAP_00002880,s1061,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002881,PETCT_b6a1ee33ef,autoPET,unknown,unknown,unknown +BDMAP_00002882,PETCT_3049d4f1a4,autoPET,unknown,unknown,unknown +BDMAP_00002883,TCGA-OV-61-1998_1_2,TCGA-OV,unknown,unknown,unknown +BDMAP_00002884,case_00033,KiTS21,unknown,unknown,unhealthy +BDMAP_00002885,pancreas_195,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002886,CPTAC-PDA-C3N-02998_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00002887,PETCT_08212d7f6c,autoPET,unknown,unknown,unknown +BDMAP_00002888,Case_00193_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002889,case_00186,KiTS21,unknown,unknown,unhealthy +BDMAP_00002890,16_image,CHAOS,healthy,healthy,healthy +BDMAP_00002891,s0804,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002892,spleen_45,MSD-Spleen,unknown,unknown,unknown +BDMAP_00002893,case_00141,KiTS19,unknown,unknown,unhealthy +BDMAP_00002894,TCIAColon_0234_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002895,PETCT_193dea6ac7,autoPET,unknown,unknown,unknown +BDMAP_00002896,pancreas_231,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002897,lung_096,MSD-Lung,unknown,unknown,unknown +BDMAP_00002898,Case_00797_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002899,pancreas_137,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002900,PETCT_1a8bd52f71,autoPET,unknown,unknown,unknown +BDMAP_00002901,PETCT_bd7c02faa9,autoPET,unknown,unknown,unknown +BDMAP_00002902,case_00470,KiTS23,unknown,unknown,unhealthy +BDMAP_00002903,PETCT_12025abab5,autoPET,unknown,unknown,unknown +BDMAP_00002904,TCIAColon_0008_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002905,Case_00978_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002906,case_00223,KiTS19,unknown,unknown,unhealthy +BDMAP_00002907,volume-139,CT-ORG,unknown,unknown,unknown +BDMAP_00002908,TCIAColon_0262_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002909,liver_93,LiTS,unhealthy,unknown,unknown +BDMAP_00002910,s1022,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002911,s1024,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002912,s0842,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002913,PETCT_9902caa7ec,autoPET,unknown,unknown,unknown +BDMAP_00002914,TCGA-BLCA-DK-A1A5_0_2,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00002915,TCIAColon_0173_0_5,TCIAColon,unknown,unknown,unknown +BDMAP_00002916,TCIAColon_0086_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002917,pancreas_440,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00002918,liver_35,LiTS,unhealthy,unknown,unknown +BDMAP_00002919,TCIAColon_0217_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002920,case_00181,KiTS19,unknown,unknown,unhealthy +BDMAP_00002921,CPTAC-UCEC-C3L-01246_0_4,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00002922,hepaticvessel_008,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002923,TCIAColon_0075_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002924,colon_050,MSD-Colon,unknown,unknown,unknown +BDMAP_00002925,PETCT_d6a48a629d,autoPET,unknown,unknown,unknown +BDMAP_00002926,s0133,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002927,s0662,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002928,case_00213,KiTS19,unknown,unknown,unhealthy +BDMAP_00002929,hepaticvessel_082,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002930,case_00237,KiTS21,unknown,unknown,unhealthy +BDMAP_00002931,case_00031,KiTS19,unknown,unknown,unhealthy +BDMAP_00002932,img0075,BTCV,healthy,healthy,healthy +BDMAP_00002933,case_00204,KiTS21,unknown,unknown,unhealthy +BDMAP_00002934,PETCT_c38b168f1a,autoPET,unknown,unknown,unknown +BDMAP_00002935,TCIAColon_0205_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002936,case_00476,KiTS23,unknown,unknown,unhealthy +BDMAP_00002937,amos_0349,AMOS,unknown,unknown,unknown +BDMAP_00002938,NIH-LYMPH-ABD-007_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00002939,hepaticvessel_219,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002940,case_00049,KiTS21,unknown,unknown,unhealthy +BDMAP_00002941,hepaticvessel_053,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002942,case_00494,KiTS23,unknown,unknown,unhealthy +BDMAP_00002943,CPTAC-UCEC-C3L-02399_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00002944,pancreas_070,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002945,pancreas_225,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002946,amos_0048,AMOS,unknown,unknown,unknown +BDMAP_00002947,pancreas_391,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00002948,case_00260,KiTS19,unknown,unknown,unhealthy +BDMAP_00002949,PETCT_6b20c7eabb,autoPET,unknown,unknown,unknown +BDMAP_00002950,TCGA-OV-OY-A56P_2_1,TCGA-OV,unknown,unknown,unknown +BDMAP_00002951,PETCT_06e7c24059,autoPET,unknown,unknown,unknown +BDMAP_00002952,hepaticvessel_103,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002953,case_00573,KiTS23,unknown,unknown,unhealthy +BDMAP_00002954,TCIAColon_0007_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002955,liver_61,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00002956,PETCT_40a125468a,autoPET,unknown,unknown,unknown +BDMAP_00002957,PETCT_ae4dcc5dd3,autoPET,unknown,unknown,unknown +BDMAP_00002958,s0778,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002959,case_00124,KiTS21,unknown,unknown,unhealthy +BDMAP_00002960,hepaticvessel_013,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002961,TCIAColon_0031_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002962,hepaticvessel_291,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00002963,TCIAColon_0278_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002964,s0076,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002965,s0626,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002966,CPTAC-CCRCC-C3L-01465_1_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00002967,Case_00055_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00002968,spleen_16,MSD-Spleen,unknown,unknown,unknown +BDMAP_00002969,s0166,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002970,hepaticvessel_067,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002971,PETCT_1b199d094d,autoPET,unknown,unknown,unknown +BDMAP_00002972,TCIAColon_0169_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00002973,TCIAColon_0216_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002974,s0732,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002975,TCIAColon_0135_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002976,amos_0162,AMOS,unknown,unknown,unknown +BDMAP_00002977,CPTAC-CCRCC-C3N-00492_0_2,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00002978,s0240,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002979,CPTAC-PDA-C3N-01382_0_7,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00002980,TCIAColon_0261_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00002981,case_00580,KiTS23,unknown,unknown,unhealthy +BDMAP_00002982,TCIAColon_0186_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002983,s0592,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002984,hepaticvessel_314,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002985,s0495,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002986,colon_217,MSD-Colon,unknown,unknown,unknown +BDMAP_00002987,word_0001,WORD,unknown,unknown,unknown +BDMAP_00002988,s0556,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002989,hepaticvessel_402,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00002990,case_00276,KiTS21,unknown,unknown,unhealthy +BDMAP_00002991,case_00271,KiTS19,unknown,unknown,unhealthy +BDMAP_00002992,case_00298,KiTS19,unknown,unknown,unhealthy +BDMAP_00002993,PETCT_09ee00bdc6,autoPET,unknown,unknown,unknown +BDMAP_00002994,s0473,TotalSegmentator,unknown,unknown,unknown +BDMAP_00002995,TCIAColon_0101_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00002996,TCIAColon_0052_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002997,CPTAC-PDA-C3N-01383_0_2,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00002998,TCIAColon_0065_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00002999,NIH-LYMPH-ABD-008_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00003000,hepaticvessel_129,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003001,TCIAColon_0171_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003002,liver_114,LiTS,healthy,unknown,unknown +BDMAP_00003003,volume-55,CT-ORG,unknown,unknown,unknown +BDMAP_00003004,hepaticvessel_208,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003005,PETCT_2dac5ef654,autoPET,unknown,unknown,unknown +BDMAP_00003006,amos_0098,AMOS,unknown,unknown,unknown +BDMAP_00003007,PETCT_8de6953d23,autoPET,unknown,unknown,unknown +BDMAP_00003008,spleen_6,MSD-Spleen,unknown,unknown,unknown +BDMAP_00003009,TCIAColon_0013_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003010,s0458,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003011,Case_01023_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003012,s0189,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003013,PANCREAS_0012,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00003014,PETCT_d5e2aa7feb,autoPET,unknown,unknown,unknown +BDMAP_00003015,hepaticvessel_034,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003016,FLARE23_Ts_0067_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00003017,pancreas_280,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003018,PETCT_d1c8141930,autoPET,unknown,unknown,unknown +BDMAP_00003019,case_00123,KiTS19,unknown,unknown,unhealthy +BDMAP_00003020,TCIAColon_0042_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00003021,hepaticvessel_411,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003022,PETCT_bb45bfcffd,autoPET,unknown,unknown,unknown +BDMAP_00003023,CPTAC-UCEC-C3N-00520_0_6,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00003024,FLARE23_Ts_0057_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00003025,PETCT_544676de40,autoPET,unknown,unknown,unknown +BDMAP_00003026,TCIAColon_0097_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003027,word_0068,WORD,unknown,unknown,unknown +BDMAP_00003028,hepaticvessel_003,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003029,Case_00893_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003030,TCIAColon_0046_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003031,colon_009,MSD-Colon,unknown,unknown,unknown +BDMAP_00003032,FLARE23_Ts_0035_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00003033,PANCREAS_0030,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00003034,case_00128,KiTS19,unknown,unknown,unhealthy +BDMAP_00003035,CPTAC-UCEC-C3N-00866_2_4,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00003036,pancreas_416,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003037,word_0114,WORD,unknown,unknown,unknown +BDMAP_00003038,PETCT_41bd54f97a,autoPET,unknown,unknown,unknown +BDMAP_00003039,Case_00693_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003040,PETCT_c58477f3b4,autoPET,unknown,unknown,unknown +BDMAP_00003041,amos_0024,AMOS,unknown,unknown,unknown +BDMAP_00003042,PETCT_0143bab87a,autoPET,unknown,unknown,unknown +BDMAP_00003043,hepaticvessel_233,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003044,Case_00962_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003045,amos_0113,AMOS,unknown,unknown,unknown +BDMAP_00003046,PETCT_1291700093,autoPET,unknown,unknown,unknown +BDMAP_00003047,TCIAColon_0255_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003048,TCIAColon_0078_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003049,Case_00679_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003050,PETCT_cf3725edf0,autoPET,unknown,unknown,unknown +BDMAP_00003051,PETCT_f1501b1f45,autoPET,unknown,unknown,unknown +BDMAP_00003052,liver_107,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003053,s1143,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003054,volume-64,CT-ORG,unknown,unknown,unknown +BDMAP_00003055,PETCT_562294be56,autoPET,unknown,unknown,unknown +BDMAP_00003056,PETCT_a7b323b3fd,autoPET,unknown,unknown,unknown +BDMAP_00003057,TCIAColon_0031_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003058,case_00084,KiTS21,unknown,unknown,unhealthy +BDMAP_00003059,FLARE23_Ts_0073_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00003060,Case_00920_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003061,PETCT_eda00de6b0,autoPET,unknown,unknown,unknown +BDMAP_00003062,CPTAC-CCRCC-C3N-00244_0_3,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00003063,case_00293,KiTS21,unknown,unknown,unhealthy +BDMAP_00003064,hepaticvessel_371,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003065,TCIAColon_0033_1_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003066,s0789,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003067,CPTAC-UCEC-C3N-00743_0_2,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00003068,s1322,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003069,s1152,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003070,case_00274,KiTS21,unknown,unknown,unhealthy +BDMAP_00003071,word_0022,WORD,unknown,unknown,unknown +BDMAP_00003072,amos_0126,AMOS,unknown,unknown,unknown +BDMAP_00003073,case_00126,KiTS21,unknown,unknown,unhealthy +BDMAP_00003074,liver_127,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003075,TCIAColon_0212_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003076,s0603,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003077,TCIAColon_0026_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003078,hepaticvessel_124,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003079,PETCT_cb83710e3d,autoPET,unknown,unknown,unknown +BDMAP_00003080,TCIAColon_0197_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003081,TCIAColon_0080_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003082,PETCT_d31c9ebd93,autoPET,unknown,unknown,unknown +BDMAP_00003083,case_00015,KiTS19,unknown,unknown,unhealthy +BDMAP_00003084,TCIAColon_0165_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003085,PANCREAS_0004,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00003086,hepaticvessel_035,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003087,CPTAC-CCRCC-C3L-02841_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00003088,Case_00226_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003089,Case_00843_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003090,word_0084,WORD,unknown,unknown,unknown +BDMAP_00003091,LDCT-L209_0_0,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00003092,NIH-LYMPH-ABD-001_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00003093,s1394,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003094,lung_069,MSD-Lung,unknown,unknown,unknown +BDMAP_00003095,lung_062,MSD-Lung,unknown,unknown,unknown +BDMAP_00003096,PETCT_74bbceaeeb,autoPET,unknown,unknown,unknown +BDMAP_00003097,hepaticvessel_250,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003098,colon_020,MSD-Colon,unknown,unknown,unknown +BDMAP_00003099,FLARE23_Ts_0096_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00003100,TCIAColon_0126_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003101,PETCT_4dcf62f869,autoPET,unknown,unknown,unknown +BDMAP_00003102,s0178,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003103,PETCT_6b177a3c28,autoPET,unknown,unknown,unknown +BDMAP_00003104,s1006,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003105,PETCT_661ddc60e0,autoPET,unknown,unknown,unknown +BDMAP_00003106,TCIAColon_0253_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003107,s0468,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003108,PETCT_e77124b7f4,autoPET,unknown,unknown,unknown +BDMAP_00003109,colon_036,MSD-Colon,unknown,unknown,unknown +BDMAP_00003110,TCIAColon_0174_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003111,colon_117,MSD-Colon,unknown,unknown,unknown +BDMAP_00003112,amos_0035,AMOS,unknown,unknown,unknown +BDMAP_00003113,colon_155,MSD-Colon,unknown,unknown,unknown +BDMAP_00003114,pancreas_006,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003115,volume-131,CT-ORG,unknown,unknown,unknown +BDMAP_00003116,hepaticvessel_160,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003117,PETCT_05808cf24e,autoPET,unknown,unknown,unknown +BDMAP_00003118,img0066,BTCV,healthy,healthy,healthy +BDMAP_00003119,TCIAColon_0035_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003120,hepaticvessel_282,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003121,CPTAC-UCEC-C3N-00866_3_4,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00003122,PETCT_d51bacdaba,autoPET,unknown,unknown,unknown +BDMAP_00003123,PETCT_0225325b91,autoPET,unknown,unknown,unknown +BDMAP_00003124,PETCT_8de70b5cd7,autoPET,unknown,unknown,unknown +BDMAP_00003125,LDCT-L221_0_0,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00003126,TCIAColon_0157_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003127,amos_0190,AMOS,unknown,unknown,unknown +BDMAP_00003128,case_00582,KiTS23,unknown,unknown,unhealthy +BDMAP_00003129,case_00165,KiTS19,unknown,unknown,unhealthy +BDMAP_00003130,pancreas_113,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003131,hepaticvessel_075,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003132,CPTAC-PDA-C3N-03039_2_1,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00003133,pancreas_042,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003134,TCIAColon_0218_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003135,hepaticvessel_057,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003136,TCIAColon_0101_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003137,lung_084,MSD-Lung,unknown,unknown,unknown +BDMAP_00003138,pancreas_342,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003139,amos_0007,AMOS,unknown,unknown,unknown +BDMAP_00003140,liver_63,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003141,pancreas_080,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003142,TCIAColon_0185_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003143,case_00016,KiTS21,unknown,unknown,unhealthy +BDMAP_00003144,NIH-LYMPH-ABD-079_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00003145,TCIAColon_0073_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003146,spleen_12,MSD-Spleen,unknown,unknown,unknown +BDMAP_00003147,amos_0384,AMOS,unknown,unknown,unknown +BDMAP_00003148,volume-62,CT-ORG,unknown,unknown,unknown +BDMAP_00003149,Case_00026_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003150,case_00113,KiTS21,unknown,unknown,unhealthy +BDMAP_00003151,liver_52,LiTS,unhealthy,unknown,unknown +BDMAP_00003152,Case_00036_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003153,case_00556,KiTS23,unknown,unknown,unhealthy +BDMAP_00003154,PANCREAS_0005,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00003155,word_0079,WORD,unknown,unknown,unknown +BDMAP_00003156,s0210,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003157,PETCT_901573a747,autoPET,unknown,unknown,unknown +BDMAP_00003158,spleen_2,MSD-Spleen,unknown,unknown,unknown +BDMAP_00003159,s1224,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003160,s0029,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003161,s0509,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003162,hepaticvessel_011,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003163,hepaticvessel_163,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003164,case_00050,KiTS21,unknown,unknown,unhealthy +BDMAP_00003165,TCIAColon_0147_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003166,Case_00692_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003167,PETCT_17b46d7275,autoPET,unknown,unknown,unknown +BDMAP_00003168,pancreas_041,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003169,PETCT_5e339b2ecf,autoPET,unknown,unknown,unknown +BDMAP_00003170,liver_88,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003171,s0541,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003172,colon_171,MSD-Colon,unknown,unknown,unknown +BDMAP_00003173,TCIAColon_0200_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003174,img0076,BTCV,healthy,healthy,healthy +BDMAP_00003175,hepaticvessel_093,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003176,PETCT_72d2d6de52,autoPET,unknown,unknown,unknown +BDMAP_00003177,hepaticvessel_138,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003178,case_00536,KiTS23,unknown,unknown,unhealthy +BDMAP_00003179,s0262,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003180,TCIAColon_0146_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003181,word_0009,WORD,unknown,unknown,unknown +BDMAP_00003182,amos_0005,AMOS,unknown,unknown,unknown +BDMAP_00003183,case_00231,KiTS19,unknown,unknown,unhealthy +BDMAP_00003184,PETCT_3b14690fce,autoPET,unknown,unknown,unknown +BDMAP_00003185,hepaticvessel_046,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003186,hepaticvessel_150,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003187,TCIAColon_0005_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00003188,TCIAColon_0023_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003189,case_00079,KiTS19,unknown,unknown,unhealthy +BDMAP_00003190,Case_00747_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003191,pancreas_232,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00003192,Case_00556_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003193,case_00028,KiTS19,unknown,unknown,unhealthy +BDMAP_00003194,case_00151,KiTS19,unknown,unknown,unhealthy +BDMAP_00003195,case_00196,KiTS19,unknown,unknown,unhealthy +BDMAP_00003196,CPTAC-PDA-C3N-03430_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00003197,PETCT_249dd35d0c,autoPET,unknown,unknown,unknown +BDMAP_00003198,PETCT_7ee7610b9e,autoPET,unknown,unknown,unknown +BDMAP_00003199,PETCT_7cfaf65584,autoPET,unknown,unknown,unknown +BDMAP_00003200,case_00155,KiTS19,unknown,unknown,unhealthy +BDMAP_00003201,word_0105,WORD,unknown,unknown,unknown +BDMAP_00003202,case_00537,KiTS23,unknown,unknown,unhealthy +BDMAP_00003203,hepaticvessel_049,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003204,hepaticvessel_210,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003205,case_00061,KiTS19,unknown,unknown,unhealthy +BDMAP_00003206,PETCT_a4ff5d0d9d,autoPET,unknown,unknown,unknown +BDMAP_00003207,Case_00414_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003208,TCIAColon_0282_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003209,TCIAColon_0131_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003210,s0600,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003211,s0004,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003212,hepaticvessel_077,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003213,lung_018,MSD-Lung,unknown,unknown,unknown +BDMAP_00003214,TCIAColon_0175_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003215,pancreas_124,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003216,s1326,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003217,amos_0380,AMOS,unknown,unknown,unknown +BDMAP_00003218,s0232,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003219,Case_00209_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003220,Case_00681_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003221,PETCT_c395306306,autoPET,unknown,unknown,unknown +BDMAP_00003222,img0029,BTCV,healthy,healthy,healthy +BDMAP_00003223,lung_037,MSD-Lung,unknown,unknown,unknown +BDMAP_00003224,lung_079,MSD-Lung,unknown,unknown,unknown +BDMAP_00003225,case_00137,KiTS21,unknown,unknown,unhealthy +BDMAP_00003226,PETCT_642d6c78d6,autoPET,unknown,unknown,unknown +BDMAP_00003227,amos_0367,AMOS,unknown,unknown,unknown +BDMAP_00003228,PETCT_3b1c9155f5,autoPET,unknown,unknown,unknown +BDMAP_00003229,TCIAColon_0135_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003230,TCIAColon_0245_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003231,s1062,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003232,TCIAColon_0004_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003233,word_0042,WORD,unknown,unknown,unknown +BDMAP_00003234,TCIAColon_0137_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003235,TCIAColon_0103_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003236,liver_85,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003237,TCIAColon_0235_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003238,hepaticvessel_403,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003239,Case_00706_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003240,case_00121,KiTS19,unknown,unknown,unhealthy +BDMAP_00003241,Case_00892_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003242,amos_0301,AMOS,unknown,unknown,unknown +BDMAP_00003243,s0682,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003244,pancreas_019,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003245,case_00192,KiTS19,unknown,unknown,unhealthy +BDMAP_00003246,amos_0254,AMOS,unknown,unknown,unknown +BDMAP_00003247,TCIAColon_0104_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003248,CPTAC-CCRCC-C3L-01954_3_6,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00003249,PETCT_38106fde84,autoPET,unknown,unknown,unknown +BDMAP_00003250,case_00277,KiTS19,unknown,unknown,unhealthy +BDMAP_00003251,TCIAColon_0093_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00003252,case_00577,KiTS23,unknown,unknown,unhealthy +BDMAP_00003253,TCIAColon_0284_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003254,pancreas_362,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003255,case_00231,KiTS21,unknown,unknown,unhealthy +BDMAP_00003256,case_00130,KiTS19,unknown,unknown,unhealthy +BDMAP_00003257,hepaticvessel_106,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003258,hepaticvessel_342,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003259,TCIAColon_0214_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003260,CPTAC-PDA-C3N-01381_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00003261,hepaticvessel_074,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003262,Case_00995_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003263,PETCT_760c77b289,autoPET,unknown,unknown,unknown +BDMAP_00003264,amos_0042,AMOS,unknown,unknown,unknown +BDMAP_00003265,PANCREAS_0045,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00003266,hepaticvessel_275,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003267,case_00160,KiTS21,unknown,unknown,unhealthy +BDMAP_00003268,colon_028,MSD-Colon,unknown,unknown,unknown +BDMAP_00003269,PETCT_9521502dbb,autoPET,unknown,unknown,unknown +BDMAP_00003270,s0983,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003271,Case_00719_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003272,liver_31,LiTS,unhealthy,unknown,unknown +BDMAP_00003273,amos_0396,AMOS,unknown,unknown,unknown +BDMAP_00003274,TCIAColon_0081_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003275,TCIAColon_0208_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00003276,TCIAColon_0291_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003277,pancreas_055,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003278,spleen_22,MSD-Spleen,unknown,unknown,unknown +BDMAP_00003279,TCIAColon_0295_0_5,TCIAColon,unknown,unknown,unknown +BDMAP_00003280,amos_0388,AMOS,unknown,unknown,unknown +BDMAP_00003281,case_00540,KiTS23,unknown,unknown,unhealthy +BDMAP_00003282,lung_070,MSD-Lung,unknown,unknown,unknown +BDMAP_00003283,pancreas_216,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00003284,TCIAColon_0199_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003285,amos_0274,AMOS,unknown,unknown,unknown +BDMAP_00003286,hepaticvessel_064,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003287,liver_100,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003288,PETCT_9ffd8409b3,autoPET,unknown,unknown,unknown +BDMAP_00003289,hepaticvessel_453,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003290,s1269,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003291,amos_0121,AMOS,unknown,unknown,unknown +BDMAP_00003292,TCIAColon_0094_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003293,amos_0057,AMOS,unknown,unknown,unknown +BDMAP_00003294,case_00449,KiTS23,unknown,unknown,unhealthy +BDMAP_00003295,hepaticvessel_038,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003296,CPTAC-CCRCC-C3N-00313_0_3,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00003297,amos_0110,AMOS,unknown,unknown,unknown +BDMAP_00003298,PETCT_5e2da717db,autoPET,unknown,unknown,unknown +BDMAP_00003299,colon_107,MSD-Colon,unknown,unknown,unknown +BDMAP_00003300,case_00508,KiTS23,unknown,unknown,unhealthy +BDMAP_00003301,case_00133,KiTS21,unknown,unknown,unhealthy +BDMAP_00003302,Case_00767_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003303,amos_0092,AMOS,unknown,unknown,unknown +BDMAP_00003304,s0482,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003305,Case_00704_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003306,s0830,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003307,PETCT_13b40a817b,autoPET,unknown,unknown,unknown +BDMAP_00003308,TCIAColon_0197_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003309,NIH-LYMPH-MED-001_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00003310,TCIAColon_0275_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003311,Case_00814_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003312,case_00184,KiTS19,unknown,unknown,unhealthy +BDMAP_00003313,TCIAColon_0239_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003314,TCIAColon_0145_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003315,case_00514,KiTS23,unknown,unknown,unhealthy +BDMAP_00003316,TCIAColon_0048_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003317,amos_0273,AMOS,unknown,unknown,unknown +BDMAP_00003318,FLARE23_Ts_0100_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00003319,pancreas_001,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003320,CPTAC-PDA-C3N-03039_2_2,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00003321,hepaticvessel_434,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003322,s0957,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003323,hepaticvessel_252,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003324,case_00263,KiTS21,unknown,unknown,unhealthy +BDMAP_00003325,s0102,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003326,pancreas_321,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003327,colon_059,MSD-Colon,unknown,unknown,unknown +BDMAP_00003328,TCIAColon_0227_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003329,pancreas_101,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003330,liver_111,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003331,lung_061,MSD-Lung,unknown,unknown,unknown +BDMAP_00003332,PETCT_a3df01d3a3,autoPET,unknown,unknown,unknown +BDMAP_00003333,colon_054,MSD-Colon,unknown,unknown,unknown +BDMAP_00003334,PETCT_77bceab232,autoPET,unknown,unknown,unknown +BDMAP_00003335,NIH-LYMPH-MED-018_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00003336,FLARE23_Ts_0094_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00003337,hepaticvessel_084,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003338,TCIAColon_0057_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003339,PETCT_ab953a5230,autoPET,unknown,unknown,unknown +BDMAP_00003340,amos_0245,AMOS,unknown,unknown,unknown +BDMAP_00003341,pancreas_154,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00003342,s0111,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003343,case_00219,KiTS21,unknown,unknown,unhealthy +BDMAP_00003344,hepaticvessel_110,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003345,TCIAColon_0292_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003346,s0073,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003347,pancreas_135,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003348,TCIAColon_0143_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003349,CPTAC-PDA-C3N-01166_0_5,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00003350,TCGA-SARC-A8VG_0_0,TCGA-SARC,unknown,unknown,unknown +BDMAP_00003351,amos_0180,AMOS,unknown,unknown,unknown +BDMAP_00003352,Case_00237_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003353,TCIAColon_0263_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003354,volume-135,CT-ORG,unknown,unknown,unknown +BDMAP_00003355,lung_025,MSD-Lung,unknown,unknown,unknown +BDMAP_00003356,pancreas_186,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003357,colon_216,MSD-Colon,unknown,unknown,unknown +BDMAP_00003358,case_00502,KiTS23,unknown,unknown,unhealthy +BDMAP_00003359,case_00273,KiTS21,unknown,unknown,unhealthy +BDMAP_00003360,PETCT_9c8842d12e,autoPET,unknown,unknown,unknown +BDMAP_00003361,liver_94,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003362,PETCT_c2a51a65c6,autoPET,unknown,unknown,unknown +BDMAP_00003363,case_00533,KiTS23,unknown,unknown,unhealthy +BDMAP_00003364,case_00103,KiTS21,unknown,unknown,unhealthy +BDMAP_00003365,hepaticvessel_068,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003366,hepaticvessel_148,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003367,pancreas_015,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003368,colon_019,MSD-Colon,unknown,unknown,unknown +BDMAP_00003369,TCIAColon_0155_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003370,PETCT_9a418f3b3a,autoPET,unknown,unknown,unknown +BDMAP_00003371,spleen_9,MSD-Spleen,unknown,unknown,unknown +BDMAP_00003372,img0038,BTCV,healthy,healthy,healthy +BDMAP_00003373,colon_136,MSD-Colon,unknown,unknown,unknown +BDMAP_00003374,s0305,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003375,TCIAColon_0043_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003376,pancreas_400,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003377,liver_32,LiTS,healthy,unknown,unknown +BDMAP_00003378,PETCT_ae46202abb,autoPET,unknown,unknown,unknown +BDMAP_00003379,PETCT_65a1330e90,autoPET,unknown,unknown,unknown +BDMAP_00003380,FLARE23_Ts_0029_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00003381,case_00147,KiTS21,unknown,unknown,unhealthy +BDMAP_00003382,LDCT-L237_0_1,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00003383,hepaticvessel_069,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003384,case_00024,KiTS21,unknown,unknown,unhealthy +BDMAP_00003385,pancreas_287,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003386,hepaticvessel_296,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003387,pancreas_502,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00003388,PETCT_1781ba966c,autoPET,unknown,unknown,unknown +BDMAP_00003389,PETCT_a2a68bbe97,autoPET,unknown,unknown,unknown +BDMAP_00003390,PETCT_3ba0277c0c,autoPET,unknown,unknown,unknown +BDMAP_00003391,PETCT_d7ca3d4aaa,autoPET,unknown,unknown,unknown +BDMAP_00003392,case_00018,KiTS21,unknown,unknown,unhealthy +BDMAP_00003393,PETCT_389462c0ac,autoPET,unknown,unknown,unknown +BDMAP_00003394,NIH-LYMPH-ABD-009_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00003395,hepaticvessel_099,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003396,pancreas_294,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003397,s1145,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003398,TCIAColon_0178_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003399,s0258,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003400,pancreas_386,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003401,PETCT_4776e75543,autoPET,unknown,unknown,unknown +BDMAP_00003402,TCIAColon_0261_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003403,s0343,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003404,TCIAColon_0298_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003405,PETCT_dd6165ae36,autoPET,unknown,unknown,unknown +BDMAP_00003406,case_00173,KiTS21,unknown,unknown,unhealthy +BDMAP_00003407,CPTAC-CCRCC-C3L-01954_1_5,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00003408,TCIAColon_0137_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003409,case_00280,KiTS21,unknown,unknown,unhealthy +BDMAP_00003410,amos_0160,AMOS,unknown,unknown,unknown +BDMAP_00003411,case_00418,KiTS23,unknown,unknown,unhealthy +BDMAP_00003412,colon_075,MSD-Colon,unknown,unknown,unknown +BDMAP_00003413,s0878,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003414,s1362,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003415,volume-130,CT-ORG,unknown,unknown,unknown +BDMAP_00003416,PETCT_0f44cec2e6,autoPET,unknown,unknown,unknown +BDMAP_00003417,hepaticvessel_050,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003418,TCIAColon_0032_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003419,s1395,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003420,hepaticvessel_330,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003421,TCGA-BLCA-4Z-AA7W_0_1,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00003422,case_00022,KiTS19,unknown,unknown,unhealthy +BDMAP_00003423,amos_0170,AMOS,unknown,unknown,unknown +BDMAP_00003424,PETCT_3c3ee87fc6,autoPET,unknown,unknown,unknown +BDMAP_00003425,case_00251,KiTS21,unknown,unknown,unhealthy +BDMAP_00003426,PETCT_d0ea6c975f,autoPET,unknown,unknown,unknown +BDMAP_00003427,pancreas_170,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003428,PETCT_a4ccc397a9,autoPET,unknown,unknown,unknown +BDMAP_00003429,Case_00539_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003430,NIH-LYMPH-ABD-083_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00003431,hepaticvessel_264,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003432,s0045,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003433,PETCT_c7dc6f848c,autoPET,unknown,unknown,unknown +BDMAP_00003434,TCIAColon_0112_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003435,case_00047,KiTS21,unknown,unknown,unhealthy +BDMAP_00003436,pancreas_034,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00003437,s1013,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003438,pancreas_277,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003439,liver_82,LiTS,unhealthy,unknown,unknown +BDMAP_00003440,pancreas_356,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003441,case_00234,KiTS19,unknown,unknown,unhealthy +BDMAP_00003442,TCIAColon_0030_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003443,pancreas_212,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003444,case_00585,KiTS23,unknown,unknown,unhealthy +BDMAP_00003445,amos_0094,AMOS,unknown,unknown,unknown +BDMAP_00003446,s0711,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003447,case_00253,KiTS19,unknown,unknown,unhealthy +BDMAP_00003448,case_00088,KiTS21,unknown,unknown,unhealthy +BDMAP_00003449,FLARE23_Ts_0070_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00003450,word_0127,WORD,unknown,unknown,unknown +BDMAP_00003451,pancreas_291,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003452,pancreas_184,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00003453,PETCT_f1ca0f7c4c,autoPET,unknown,unknown,unknown +BDMAP_00003454,PETCT_d325897ff4,autoPET,unknown,unknown,unknown +BDMAP_00003455,case_00544,KiTS23,unknown,unknown,unhealthy +BDMAP_00003456,CPTAC-UCEC-C3L-01744_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00003457,case_00192,KiTS21,unknown,unknown,unhealthy +BDMAP_00003458,word_0006,WORD,unknown,unknown,unknown +BDMAP_00003459,s1037,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003460,hepaticvessel_087,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003461,case_00539,KiTS23,unknown,unknown,unhealthy +BDMAP_00003462,hepaticvessel_382,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003463,word_0051,WORD,unknown,unknown,unknown +BDMAP_00003464,pancreas_054,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00003465,case_00119,KiTS19,unknown,unknown,unhealthy +BDMAP_00003466,word_0039,WORD,unknown,unknown,unknown +BDMAP_00003467,CPTAC-UCEC-C3N-00520_0_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00003468,word_0121,WORD,unknown,unknown,unknown +BDMAP_00003469,TCIAColon_0008_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003470,TCIAColon_0148_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003471,amos_0156,AMOS,unknown,unknown,unknown +BDMAP_00003472,PETCT_4e3d83bfe3,autoPET,unknown,unknown,unknown +BDMAP_00003473,TCIAColon_0028_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003474,s0040,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003475,PETCT_1a90052cb2,autoPET,unknown,unknown,unknown +BDMAP_00003476,PETCT_dc15c1d9bb,autoPET,unknown,unknown,unknown +BDMAP_00003477,spleen_10,MSD-Spleen,unknown,unknown,unknown +BDMAP_00003478,PETCT_e4e99dbb47,autoPET,unknown,unknown,unknown +BDMAP_00003479,pancreas_098,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003480,img0024,BTCV,healthy,healthy,healthy +BDMAP_00003481,liver_129,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003482,liver_18,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003483,pancreas_333,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003484,case_00158,KiTS21,unknown,unknown,unhealthy +BDMAP_00003485,s0161,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003486,case_00053,KiTS21,unknown,unknown,unhealthy +BDMAP_00003487,TCIAColon_0225_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003488,PETCT_8b74860ce6,autoPET,unknown,unknown,unknown +BDMAP_00003489,FLARE23_Ts_0063_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00003490,hepaticvessel_228,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003491,case_00440,KiTS23,unknown,unknown,unhealthy +BDMAP_00003492,s0480,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003493,case_00102,KiTS21,unknown,unknown,unhealthy +BDMAP_00003494,TCGA-STAD-A8DL_0_2,TCGA-STAD,unknown,unknown,unknown +BDMAP_00003495,PETCT_14c4d2c208,autoPET,unknown,unknown,unknown +BDMAP_00003496,TCIAColon_0098_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003497,liver_101,LiTS,unhealthy,unknown,unknown +BDMAP_00003498,s1012,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003499,Case_00940_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003500,TCIAColon_0219_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003501,PETCT_7094acd4c0,autoPET,unknown,unknown,unknown +BDMAP_00003502,pancreas_180,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003503,amos_0192,AMOS,unknown,unknown,unknown +BDMAP_00003504,PETCT_da4ce0da01,autoPET,unknown,unknown,unknown +BDMAP_00003505,CPTAC-UCEC-C3N-00866_2_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00003506,case_00196,KiTS21,unknown,unknown,unhealthy +BDMAP_00003507,hepaticvessel_040,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003508,hepaticvessel_214,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003509,FLARE23_Ts_0066_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00003510,colon_192,MSD-Colon,unknown,unknown,unknown +BDMAP_00003511,PETCT_a3ce52b2a8,autoPET,unknown,unknown,unknown +BDMAP_00003512,s1119,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003513,liver_64,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003514,case_00278,KiTS21,unknown,unknown,unhealthy +BDMAP_00003515,s1199,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003516,case_00549,KiTS23,unknown,unknown,unhealthy +BDMAP_00003517,TCIAColon_0298_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003518,s0794,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003519,amos_0302,AMOS,unknown,unknown,unknown +BDMAP_00003520,case_00071,KiTS21,unknown,unknown,unhealthy +BDMAP_00003521,PETCT_c10f48b173,autoPET,unknown,unknown,unknown +BDMAP_00003522,30_image,CHAOS,healthy,healthy,healthy +BDMAP_00003523,PETCT_02ba7e20f5,autoPET,unknown,unknown,unknown +BDMAP_00003524,liver_57,LiTS,unhealthy,unknown,unknown +BDMAP_00003525,pancreas_246,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003526,PETCT_86153b2974,autoPET,unknown,unknown,unknown +BDMAP_00003527,10_image,CHAOS,healthy,healthy,healthy +BDMAP_00003528,pancreas_363,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00003529,case_00010,KiTS19,unknown,unknown,unhealthy +BDMAP_00003530,case_00126,KiTS19,unknown,unknown,unhealthy +BDMAP_00003531,case_00135,KiTS19,unknown,unknown,unhealthy +BDMAP_00003532,PETCT_e5c7be07a8,autoPET,unknown,unknown,unknown +BDMAP_00003533,PETCT_7d01eb835d,autoPET,unknown,unknown,unknown +BDMAP_00003534,liver_174,MSD-Liver,unknown,unknown,unknown +BDMAP_00003535,case_00012,KiTS19,unknown,unknown,unhealthy +BDMAP_00003536,spleen_24,MSD-Spleen,unknown,unknown,unknown +BDMAP_00003537,PETCT_4bab91dccd,autoPET,unknown,unknown,unknown +BDMAP_00003538,pancreas_453,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00003539,img0002,BTCV,healthy,healthy,healthy +BDMAP_00003540,PETCT_4a72eeb991,autoPET,unknown,unknown,unknown +BDMAP_00003541,FLARE23_Ts_0079_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00003542,case_00160,KiTS19,unknown,unknown,unhealthy +BDMAP_00003543,pancreas_050,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003544,s0664,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003545,PETCT_1a1712f7d0,autoPET,unknown,unknown,unknown +BDMAP_00003546,TCIAColon_0007_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003547,Case_00942_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003548,TCIAColon_0356_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003549,case_00235,KiTS21,unknown,unknown,unhealthy +BDMAP_00003550,PETCT_35de69968e,autoPET,unknown,unknown,unknown +BDMAP_00003551,pancreas_089,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003552,colon_034,MSD-Colon,unknown,unknown,unknown +BDMAP_00003553,case_00185,KiTS19,unknown,unknown,unhealthy +BDMAP_00003554,TCIAColon_0293_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003555,PETCT_e5b1d6b4bd,autoPET,unknown,unknown,unknown +BDMAP_00003556,liver_103,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003557,Case_00944_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003558,case_00446,KiTS23,unknown,unknown,unhealthy +BDMAP_00003559,Case_00007_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003560,colon_194,MSD-Colon,unknown,unknown,unknown +BDMAP_00003561,PETCT_098c4b7b87,autoPET,unknown,unknown,unknown +BDMAP_00003562,TCIAColon_0152_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003563,PETCT_d31c9ebd93,autoPET,unknown,unknown,unknown +BDMAP_00003564,colon_169,MSD-Colon,unknown,unknown,unknown +BDMAP_00003565,s0339,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003566,TCIAColon_0017_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003567,TCIAColon_0168_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003568,hepaticvessel_438,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003569,liver_96,LiTS,unhealthy,unknown,unknown +BDMAP_00003570,s0869,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003571,PETCT_4ea806706c,autoPET,unknown,unknown,unknown +BDMAP_00003572,TCIAColon_0058_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003573,FLARE23_Ts_0048_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00003574,amos_0358,AMOS,unknown,unknown,unknown +BDMAP_00003575,PETCT_69606f6a25,autoPET,unknown,unknown,unknown +BDMAP_00003576,case_00506,KiTS23,unknown,unknown,unhealthy +BDMAP_00003577,PANCREAS_0029,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00003578,TCIAColon_0189_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003579,Case_00881_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003580,case_00038,KiTS21,unknown,unknown,unhealthy +BDMAP_00003581,case_00227,KiTS21,unknown,unknown,unhealthy +BDMAP_00003582,amos_0401,AMOS,unknown,unknown,unknown +BDMAP_00003583,PETCT_4c670a5445,autoPET,unknown,unknown,unknown +BDMAP_00003584,s0644,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003585,PETCT_db3daf78d2,autoPET,unknown,unknown,unknown +BDMAP_00003586,Case_00718_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003587,FLARE23_Ts_0019_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00003588,spleen_26,MSD-Spleen,unknown,unknown,unknown +BDMAP_00003589,s1135,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003590,pancreas_114,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003591,TCIAColon_0029_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003592,pancreas_411,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003593,pancreas_156,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00003594,amos_0142,AMOS,unknown,unknown,unknown +BDMAP_00003595,CPTAC-PDA-C3N-01165_0_6,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00003596,s0325,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003597,pancreas_436,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00003598,pancreas_268,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003599,TCIAColon_0064_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003600,case_00170,KiTS21,unknown,unknown,unhealthy +BDMAP_00003601,PETCT_eee2ede9ad,autoPET,unknown,unknown,unknown +BDMAP_00003602,spleen_46,MSD-Spleen,unknown,unknown,unknown +BDMAP_00003603,case_00021,KiTS21,unknown,unknown,unhealthy +BDMAP_00003604,hepaticvessel_404,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003605,word_0048,WORD,unknown,unknown,unknown +BDMAP_00003606,PETCT_c2ffda4725,autoPET,unknown,unknown,unknown +BDMAP_00003607,s0934,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003608,case_00581,KiTS23,unknown,unknown,unhealthy +BDMAP_00003609,liver_161,MSD-Liver,unknown,unknown,unknown +BDMAP_00003610,PETCT_ea9302fb0f,autoPET,unknown,unknown,unknown +BDMAP_00003611,TCIAColon_0274_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003612,pancreas_149,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003613,Case_00801_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003614,case_00234,KiTS21,unknown,unknown,unhealthy +BDMAP_00003615,case_00163,KiTS21,unknown,unknown,unhealthy +BDMAP_00003616,CPTAC-PDA-C3N-02971_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00003617,s0222,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003618,TCIAColon_0252_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003619,PETCT_8bf08c9a42,autoPET,unknown,unknown,unknown +BDMAP_00003620,Case_00873_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003621,TCIAColon_0062_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003622,PETCT_855c7fca12,autoPET,unknown,unknown,unknown +BDMAP_00003623,s1102,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003624,s0256,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003625,amos_0212,AMOS,unknown,unknown,unknown +BDMAP_00003626,volume-30,CT-ORG,unknown,unknown,unknown +BDMAP_00003627,PETCT_777fa0ba88,autoPET,unknown,unknown,unknown +BDMAP_00003628,Case_00045_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003629,Case_00048_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003630,TCIAColon_0247_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003631,pancreas_313,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003632,s1023,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003633,pancreas_323,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003634,colon_165,MSD-Colon,unknown,unknown,unknown +BDMAP_00003635,s1086,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003636,Case_00468_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003637,PETCT_ccb9c375b2,autoPET,unknown,unknown,unknown +BDMAP_00003638,CPTAC-CCRCC-C3N-00380_0_7,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00003639,hepaticvessel_323,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003640,colon_163,MSD-Colon,unknown,unknown,unknown +BDMAP_00003641,PETCT_29b372cb99,autoPET,unknown,unknown,unknown +BDMAP_00003642,hepaticvessel_043,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003643,s0661,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003644,PANCREAS_0043,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00003645,Case_00255_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003646,PETCT_978c395243,autoPET,unknown,unknown,unknown +BDMAP_00003647,img0031,BTCV,healthy,healthy,healthy +BDMAP_00003648,PETCT_f4a5ebd915,autoPET,unknown,unknown,unknown +BDMAP_00003649,TCIAColon_0088_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003650,pancreas_412,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003651,CPTAC-UCEC-C3N-01008_0_7,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00003652,s0456,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003653,hepaticvessel_409,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003654,TCIAColon_0293_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003655,NIH-LYMPH-ABD-068_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00003656,case_00113,KiTS19,unknown,unknown,unhealthy +BDMAP_00003657,pancreas_165,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003658,pancreas_155,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003659,PETCT_44bf7dc508,autoPET,unknown,unknown,unknown +BDMAP_00003660,TCIAColon_0209_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003661,s1244,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003662,Case_00916_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003663,TCIAColon_0271_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003664,liver_110,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003665,Case_00301_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003666,FLARE23_Ts_0053_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00003667,TCIAColon_0108_1_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003668,PETCT_48c70dc4a3,autoPET,unknown,unknown,unknown +BDMAP_00003669,s0472,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003670,TCIAColon_0049_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003671,hepaticvessel_421,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003672,case_00159,KiTS21,unknown,unknown,unhealthy +BDMAP_00003673,s0586,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003674,word_0107,WORD,unknown,unknown,unknown +BDMAP_00003675,hepaticvessel_086,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003676,PETCT_4481687483,autoPET,unknown,unknown,unknown +BDMAP_00003677,PETCT_81debf13a1,autoPET,unknown,unknown,unknown +BDMAP_00003678,PETCT_e1a4145b63,autoPET,unknown,unknown,unknown +BDMAP_00003679,s0796,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003680,colon_208,MSD-Colon,unknown,unknown,unknown +BDMAP_00003681,liver_175,MSD-Liver,unknown,unknown,unknown +BDMAP_00003682,PETCT_19838cb8e5,autoPET,unknown,unknown,unknown +BDMAP_00003683,pancreas_415,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003684,s0982,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003685,pancreas_285,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003686,TCIAColon_0130_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003687,Case_00757_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003688,PETCT_ea6c621616,autoPET,unknown,unknown,unknown +BDMAP_00003689,hepaticvessel_384,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003690,Case_00523_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003691,TCIAColon_0166_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003692,word_0137,WORD,unknown,unknown,unknown +BDMAP_00003693,word_0080,WORD,unknown,unknown,unknown +BDMAP_00003694,case_00517,KiTS23,unknown,unknown,unhealthy +BDMAP_00003695,word_0041,WORD,unknown,unknown,unknown +BDMAP_00003696,word_0064,WORD,unknown,unknown,unknown +BDMAP_00003697,CPTAC-CCRCC-C3N-00492_0_3,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00003698,PETCT_275fb00a66,autoPET,unknown,unknown,unknown +BDMAP_00003699,PETCT_bbb83facb4,autoPET,unknown,unknown,unknown +BDMAP_00003700,TCIAColon_0127_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003701,case_00117,KiTS21,unknown,unknown,unhealthy +BDMAP_00003702,img0032,BTCV,healthy,healthy,healthy +BDMAP_00003703,pancreas_097,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00003704,Case_00299_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003705,PETCT_1fa22c576e,autoPET,unknown,unknown,unknown +BDMAP_00003706,Case_00417_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003707,TCIAColon_0151_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003708,TCIAColon_0148_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00003709,PETCT_cd2ef932b5,autoPET,unknown,unknown,unknown +BDMAP_00003710,word_0098,WORD,unknown,unknown,unknown +BDMAP_00003711,CPTAC-PDA-C3N-03039_3_2,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00003712,amos_0154,AMOS,unknown,unknown,unknown +BDMAP_00003713,case_00127,KiTS21,unknown,unknown,unhealthy +BDMAP_00003714,hepaticvessel_202,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003715,PETCT_5e81863014,autoPET,unknown,unknown,unknown +BDMAP_00003716,amos_0076,AMOS,unknown,unknown,unknown +BDMAP_00003717,case_00510,KiTS23,unknown,unknown,unhealthy +BDMAP_00003718,Case_00660_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003719,PETCT_53dad1785b,autoPET,unknown,unknown,unknown +BDMAP_00003720,amos_0119,AMOS,unknown,unknown,unknown +BDMAP_00003721,case_00281,KiTS19,unknown,unknown,unhealthy +BDMAP_00003722,case_00215,KiTS21,unknown,unknown,unhealthy +BDMAP_00003723,hepaticvessel_031,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003724,Case_00670_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003725,s0486,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003726,TCIAColon_0263_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003727,case_00229,KiTS21,unknown,unknown,unhealthy +BDMAP_00003728,PETCT_2ad62beb52,autoPET,unknown,unknown,unknown +BDMAP_00003729,TCIAColon_0099_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003730,PETCT_89fb723947,autoPET,unknown,unknown,unknown +BDMAP_00003731,amos_0371,AMOS,unknown,unknown,unknown +BDMAP_00003732,Case_00700_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003733,word_0026,WORD,unknown,unknown,unknown +BDMAP_00003734,pancreas_425,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00003735,case_00178,KiTS19,unknown,unknown,unhealthy +BDMAP_00003736,case_00091,KiTS21,unknown,unknown,unhealthy +BDMAP_00003737,s0705,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003738,TCIAColon_0152_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003739,TCIAColon_0277_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003740,case_00003,KiTS21,unknown,unknown,unhealthy +BDMAP_00003741,pancreas_245,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00003742,s0096,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003743,TCIAColon_0167_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003744,pancreas_071,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003745,s0985,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003746,hepaticvessel_374,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003747,amos_0124,AMOS,unknown,unknown,unknown +BDMAP_00003748,NIH-LYMPH-MED-020_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00003749,case_00527,KiTS23,unknown,unknown,unhealthy +BDMAP_00003750,hepaticvessel_372,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003751,PETCT_9b1bb2165a,autoPET,unknown,unknown,unknown +BDMAP_00003752,case_00232,KiTS21,unknown,unknown,unhealthy +BDMAP_00003753,CPTAC-CCRCC-C3N-00380_0_8,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00003754,PETCT_da6161d7eb,autoPET,unknown,unknown,unknown +BDMAP_00003755,PETCT_e8624bab41,autoPET,unknown,unknown,unknown +BDMAP_00003756,hepaticvessel_380,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003757,TCIAColon_0081_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003758,PETCT_1928952a0f,autoPET,unknown,unknown,unknown +BDMAP_00003759,case_00194,KiTS19,unknown,unknown,unhealthy +BDMAP_00003760,pancreas_082,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00003761,s0393,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003762,case_00069,KiTS21,unknown,unknown,unhealthy +BDMAP_00003763,liver_51,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003764,Case_00808_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003765,s0402,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003766,s0422,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003767,case_00200,KiTS21,unknown,unknown,unhealthy +BDMAP_00003768,hepaticvessel_298,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003769,pancreas_262,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003770,s0860,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003771,pancreas_049,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003772,TCGA-BLCA-4Z-AA7W_0_4,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00003773,s0845,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003774,case_00588,KiTS23,unknown,unknown,unhealthy +BDMAP_00003775,amos_0030,AMOS,unknown,unknown,unknown +BDMAP_00003776,pancreas_194,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003777,CPTAC-UCEC-C3L-01246_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00003778,PETCT_e03b96666f,autoPET,unknown,unknown,unknown +BDMAP_00003779,TCIAColon_0255_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003780,hepaticvessel_358,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003781,pancreas_122,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003782,PETCT_6e7c7f8087,autoPET,unknown,unknown,unknown +BDMAP_00003783,TCIAColon_0136_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003784,pancreas_352,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00003785,PETCT_b0e002e974,autoPET,unknown,unknown,unknown +BDMAP_00003786,PETCT_3c71e8f518,autoPET,unknown,unknown,unknown +BDMAP_00003787,PETCT_c2b776974a,autoPET,unknown,unknown,unknown +BDMAP_00003788,hepaticvessel_085,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003789,pancreas_008,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00003790,TCIAColon_0144_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003791,amos_0188,AMOS,unknown,unknown,unknown +BDMAP_00003792,colon_186,MSD-Colon,unknown,unknown,unknown +BDMAP_00003793,spleen_47,MSD-Spleen,unknown,unknown,unknown +BDMAP_00003794,s0551,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003795,spleen_20,MSD-Spleen,unknown,unknown,unknown +BDMAP_00003796,PETCT_ca29501275,autoPET,unknown,unknown,unknown +BDMAP_00003797,TCIAColon_0017_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003798,liver_30,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003799,amos_0366,AMOS,unknown,unknown,unknown +BDMAP_00003800,s0057,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003801,PETCT_69aa8dbfd2,autoPET,unknown,unknown,unknown +BDMAP_00003802,NIH-LYMPH-MED-022_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00003803,TCIAColon_0091_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003804,spleen_19,MSD-Spleen,unknown,unknown,unknown +BDMAP_00003805,s0212,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003806,case_00274,KiTS19,unknown,unknown,unhealthy +BDMAP_00003807,Case_00985_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003808,case_00236,KiTS21,unknown,unknown,unhealthy +BDMAP_00003809,pancreas_148,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003810,Case_00051_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003811,case_00176,KiTS19,unknown,unknown,unhealthy +BDMAP_00003812,pancreas_157,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003813,CPTAC-PDA-C3N-03000_0_2,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00003814,img0067,BTCV,healthy,healthy,healthy +BDMAP_00003815,case_00097,KiTS21,unknown,unknown,unhealthy +BDMAP_00003816,Case_00407_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003817,TCIAColon_0234_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003818,amos_0043,AMOS,unknown,unknown,unknown +BDMAP_00003819,amos_0171,AMOS,unknown,unknown,unknown +BDMAP_00003820,liver_133,MSD-Liver,unknown,unknown,unknown +BDMAP_00003821,img0068,BTCV,healthy,healthy,healthy +BDMAP_00003822,pancreas_167,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003823,case_00030,KiTS19,unknown,unknown,unhealthy +BDMAP_00003824,pancreas_350,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003825,CPTAC-CCRCC-C3L-01459_1_4,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00003826,TCIAColon_0231_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003827,colon_207,MSD-Colon,unknown,unknown,unknown +BDMAP_00003828,CPTAC-CCRCC-C3N-00435_0_3,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00003829,hepaticvessel_407,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003830,img0070,BTCV,healthy,healthy,healthy +BDMAP_00003831,hepaticvessel_192,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003832,case_00164,KiTS21,unknown,unknown,unhealthy +BDMAP_00003833,case_00402,KiTS23,unknown,unknown,unhealthy +BDMAP_00003834,amos_0381,AMOS,unknown,unknown,unknown +BDMAP_00003835,hepaticvessel_320,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003836,TCIAColon_0085_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00003837,s0986,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003838,PETCT_f75d25523c,autoPET,unknown,unknown,unknown +BDMAP_00003839,PETCT_87afc291ec,autoPET,unknown,unknown,unknown +BDMAP_00003840,pancreas_378,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003841,PETCT_5060603ba4,autoPET,unknown,unknown,unknown +BDMAP_00003842,s0806,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003843,TCIAColon_0220_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003844,lung_042,MSD-Lung,unknown,unknown,unknown +BDMAP_00003845,amos_0196,AMOS,unknown,unknown,unknown +BDMAP_00003846,PETCT_d27451634d,autoPET,unknown,unknown,unknown +BDMAP_00003847,colon_025,MSD-Colon,unknown,unknown,unknown +BDMAP_00003848,PETCT_5d10be5b89,autoPET,unknown,unknown,unknown +BDMAP_00003849,case_00223,KiTS21,unknown,unknown,unhealthy +BDMAP_00003850,TCIAColon_0300_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00003851,case_00131,KiTS19,unknown,unknown,unhealthy +BDMAP_00003852,PETCT_515c40c4a6,autoPET,unknown,unknown,unknown +BDMAP_00003853,pancreas_094,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003854,TCIAColon_0202_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003855,Case_00012_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003856,TCIAColon_0095_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003857,liver_84,LiTS,unhealthy,unknown,unknown +BDMAP_00003858,img0003,BTCV,healthy,healthy,healthy +BDMAP_00003859,PETCT_3fd361ec14,autoPET,unknown,unknown,unknown +BDMAP_00003860,PETCT_ae6a37a9d6,autoPET,unknown,unknown,unknown +BDMAP_00003861,PETCT_89065bc4ab,autoPET,unknown,unknown,unknown +BDMAP_00003862,Case_00207_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003863,liver_147,MSD-Liver,unknown,unknown,unknown +BDMAP_00003864,PETCT_bca97006e4,autoPET,unknown,unknown,unknown +BDMAP_00003865,TCIAColon_0118_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003866,s1278,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003867,liver_49,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003868,spleen_61,MSD-Spleen,unknown,unknown,unknown +BDMAP_00003869,case_00116,KiTS19,unknown,unknown,unhealthy +BDMAP_00003870,Case_00787_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003871,s0863,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003872,hepaticvessel_363,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003873,NIH-LYMPH-ABD-069_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00003874,TCIAColon_0238_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003875,s0574,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003876,PANCREAS_0008,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00003877,volume-129,CT-ORG,unknown,unknown,unknown +BDMAP_00003878,PETCT_6e1dba94e8,autoPET,unknown,unknown,unknown +BDMAP_00003879,TCIAColon_0036_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003880,case_00250,KiTS19,unknown,unknown,unhealthy +BDMAP_00003881,PETCT_e9e1a391b5,autoPET,unknown,unknown,unknown +BDMAP_00003882,case_00101,KiTS19,unknown,unknown,unhealthy +BDMAP_00003883,PETCT_d63f6162a6,autoPET,unknown,unknown,unknown +BDMAP_00003884,pancreas_105,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003885,TCIAColon_0254_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003886,pancreas_181,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003887,s0939,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003888,PETCT_b926177c87,autoPET,unknown,unknown,unknown +BDMAP_00003889,CPTAC-PDA-C3N-03430_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00003890,colon_053,MSD-Colon,unknown,unknown,unknown +BDMAP_00003891,PETCT_4c75fa4a5d,autoPET,unknown,unknown,unknown +BDMAP_00003892,s1400,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003893,Case_00295_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003894,TCIAColon_0165_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003895,PETCT_a41d59682f,autoPET,unknown,unknown,unknown +BDMAP_00003896,TCGA-BLCA-4Z-AA7M_0_2,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00003897,liver_82,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003898,liver_46,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003899,word_0146,WORD,unknown,unknown,unknown +BDMAP_00003900,pancreas_067,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003901,TCIAColon_0005_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003902,PETCT_3eac8f16d4,autoPET,unknown,unknown,unknown +BDMAP_00003903,PETCT_870181d7fd,autoPET,unknown,unknown,unknown +BDMAP_00003904,PETCT_c29aba73da,autoPET,unknown,unknown,unknown +BDMAP_00003905,Case_00877_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003906,img0021,BTCV,healthy,healthy,healthy +BDMAP_00003907,TCIAColon_0163_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003908,amos_0297,AMOS,unknown,unknown,unknown +BDMAP_00003909,CPTAC-PDA-C3N-03039_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00003910,hepaticvessel_127,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003911,liver_12,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003912,TCIAColon_0139_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003913,TCIAColon_0210_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003914,TCIAColon_0159_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003915,PETCT_8b74860ce6,autoPET,unknown,unknown,unknown +BDMAP_00003916,colon_056,MSD-Colon,unknown,unknown,unknown +BDMAP_00003917,FLARE23_Ts_0078_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00003918,pancreas_084,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003919,NIH-LYMPH-ABD-070_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00003920,liver_27,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00003921,CPTAC-UCEC-C3L-00962_0_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00003922,TCIAColon_0149_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003923,case_00042,KiTS21,unknown,unknown,unhealthy +BDMAP_00003924,PETCT_7fbb39290e,autoPET,unknown,unknown,unknown +BDMAP_00003925,s1350,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003926,PETCT_99a7bfad23,autoPET,unknown,unknown,unknown +BDMAP_00003927,word_0065,WORD,unknown,unknown,unknown +BDMAP_00003928,case_00075,KiTS21,unknown,unknown,unhealthy +BDMAP_00003929,s0707,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003930,case_00525,KiTS23,unknown,unknown,unhealthy +BDMAP_00003931,s1383,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003932,liver_60,LiTS,unhealthy,unknown,unknown +BDMAP_00003933,TCIAColon_0264_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003934,PETCT_48cb8662f7,autoPET,unknown,unknown,unknown +BDMAP_00003935,TCGA-BLCA-4Z-AA80_0_4,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00003936,TCIAColon_0294_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003937,Case_01045_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003938,PETCT_141fffa2a9,autoPET,unknown,unknown,unknown +BDMAP_00003939,pancreas_495,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00003940,TCGA-OV-61-1998_1_3,TCGA-OV,unknown,unknown,unknown +BDMAP_00003941,PETCT_147a9fcff3,autoPET,unknown,unknown,unknown +BDMAP_00003942,hepaticvessel_351,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00003943,case_00572,KiTS23,unknown,unknown,unhealthy +BDMAP_00003944,TCIAColon_0185_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00003945,TCIAColon_0105_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00003946,colon_175,MSD-Colon,unknown,unknown,unknown +BDMAP_00003947,case_00498,KiTS23,unknown,unknown,unhealthy +BDMAP_00003948,PETCT_f2f28337ba,autoPET,unknown,unknown,unknown +BDMAP_00003949,amos_0149,AMOS,unknown,unknown,unknown +BDMAP_00003950,spleen_41,MSD-Spleen,unknown,unknown,unknown +BDMAP_00003951,PETCT_1bdefef7d5,autoPET,unknown,unknown,unknown +BDMAP_00003952,case_00504,KiTS23,unknown,unknown,unhealthy +BDMAP_00003953,word_0055,WORD,unknown,unknown,unknown +BDMAP_00003954,word_0118,WORD,unknown,unknown,unknown +BDMAP_00003955,case_00477,KiTS23,unknown,unknown,unhealthy +BDMAP_00003956,case_00550,KiTS23,unknown,unknown,unhealthy +BDMAP_00003957,case_00120,KiTS21,unknown,unknown,unhealthy +BDMAP_00003958,pancreas_394,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00003959,Case_00543_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003960,img0039,BTCV,healthy,healthy,healthy +BDMAP_00003961,pancreas_024,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00003962,TCIAColon_0276_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003963,case_00082,KiTS19,unknown,unknown,unhealthy +BDMAP_00003964,TCIAColon_0019_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00003965,s0531,TotalSegmentator,unknown,unknown,unknown +BDMAP_00003966,LDCT-L299_0_1,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00003967,amos_0217,AMOS,unknown,unknown,unknown +BDMAP_00003968,TCIAColon_0287_0_5,TCIAColon,unknown,unknown,unknown +BDMAP_00003969,volume-138,CT-ORG,unknown,unknown,unknown +BDMAP_00003970,word_0133,WORD,unknown,unknown,unknown +BDMAP_00003971,case_00483,KiTS23,unknown,unknown,unhealthy +BDMAP_00003972,colon_127,MSD-Colon,unknown,unknown,unknown +BDMAP_00003973,case_00189,KiTS21,unknown,unknown,unhealthy +BDMAP_00003974,PETCT_a19c2a0c65,autoPET,unknown,unknown,unknown +BDMAP_00003975,word_0108,WORD,unknown,unknown,unknown +BDMAP_00003976,case_00543,KiTS23,unknown,unknown,unhealthy +BDMAP_00003977,PETCT_28a0a0a163,autoPET,unknown,unknown,unknown +BDMAP_00003978,hepaticvessel_123,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003979,Case_00971_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003980,hepaticvessel_072,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00003981,FLARE23_Ts_0041_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00003982,img0026,BTCV,healthy,healthy,healthy +BDMAP_00003983,PETCT_ca62984a81,autoPET,unknown,unknown,unknown +BDMAP_00003984,hepaticvessel_309,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003985,LDCT-L210_0_1,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00003986,Case_00426_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00003987,hepaticvessel_097,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00003988,amos_0406,AMOS,unknown,unknown,unknown +BDMAP_00003989,PETCT_6dd36a2c19,autoPET,unknown,unknown,unknown +BDMAP_00003990,PETCT_b79961f3f6,autoPET,unknown,unknown,unknown +BDMAP_00003991,TCIAColon_0093_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00003992,PETCT_792d7b6ad0,autoPET,unknown,unknown,unknown +BDMAP_00003993,img0069,BTCV,healthy,healthy,healthy +BDMAP_00003994,case_00007,KiTS21,unknown,unknown,unhealthy +BDMAP_00003995,TCIAColon_0240_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00003996,case_00415,KiTS23,unknown,unknown,unhealthy +BDMAP_00003997,PETCT_2f9aec0275,autoPET,unknown,unknown,unknown +BDMAP_00003998,case_00144,KiTS19,unknown,unknown,unhealthy +BDMAP_00003999,amos_0033,AMOS,unknown,unknown,unknown +BDMAP_00004000,PETCT_a61d8768d0,autoPET,unknown,unknown,unknown +BDMAP_00004001,s1120,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004002,Case_00958_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004003,FLARE23_Ts_0039_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004004,PETCT_ebb0045704,autoPET,unknown,unknown,unknown +BDMAP_00004005,pancreas_435,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00004006,s0785,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004007,hepaticvessel_158,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004008,amos_0011,AMOS,unknown,unknown,unknown +BDMAP_00004009,TCIAColon_0283_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004010,hepaticvessel_041,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004011,case_00258,KiTS21,unknown,unknown,unhealthy +BDMAP_00004012,FLARE23_Ts_0030_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004013,hepaticvessel_132,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004014,case_00045,KiTS21,unknown,unknown,unhealthy +BDMAP_00004015,pancreas_410,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004016,liver_62,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00004017,liver_48,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00004018,TCIAColon_0222_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004019,s0264,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004020,PETCT_7323c415d0,autoPET,unknown,unknown,unknown +BDMAP_00004021,TCIAColon_0217_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004022,word_0093,WORD,unknown,unknown,unknown +BDMAP_00004023,pancreas_191,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004024,hepaticvessel_284,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004025,TCIAColon_0069_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004026,s0979,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004027,case_00003,KiTS19,unknown,unknown,unhealthy +BDMAP_00004028,liver_46,LiTS,unhealthy,unknown,unknown +BDMAP_00004029,PETCT_71ac560ffe,autoPET,unknown,unknown,unknown +BDMAP_00004030,case_00272,KiTS21,unknown,unknown,unhealthy +BDMAP_00004031,case_00567,KiTS23,unknown,unknown,unhealthy +BDMAP_00004032,TCIAColon_0040_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00004033,case_00034,KiTS21,unknown,unknown,unhealthy +BDMAP_00004034,hepaticvessel_377,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004035,s1397,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004036,TCIAColon_0173_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004037,volume-47,CT-ORG,unknown,unknown,unknown +BDMAP_00004038,TCIAColon_0107_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004039,case_00044,KiTS21,unknown,unknown,unhealthy +BDMAP_00004040,word_0072,WORD,unknown,unknown,unknown +BDMAP_00004041,Case_00774_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004042,Case_00003_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004043,CPTAC-PDA-C3N-01382_0_8,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00004044,img0080,BTCV,healthy,healthy,healthy +BDMAP_00004045,hepaticvessel_408,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004046,TCIAColon_0087_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004047,s1171,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004048,FLARE23_Ts_0044_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004049,PETCT_a22ec7f62b,autoPET,unknown,unknown,unknown +BDMAP_00004050,PETCT_fc0389a486,autoPET,unknown,unknown,unknown +BDMAP_00004051,s1330,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004052,Case_00945_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004053,hepaticvessel_116,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004054,PETCT_80f7760f65,autoPET,unknown,unknown,unknown +BDMAP_00004055,amos_0081,AMOS,unknown,unknown,unknown +BDMAP_00004056,s1367,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004057,PETCT_60baa6979c,autoPET,unknown,unknown,unknown +BDMAP_00004058,PETCT_57c05962c1,autoPET,unknown,unknown,unknown +BDMAP_00004059,hepaticvessel_237,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004060,pancreas_360,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004061,s1307,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004062,TCIAColon_0238_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004063,TCIAColon_0143_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004064,volume-132,CT-ORG,unknown,unknown,unknown +BDMAP_00004065,case_00571,KiTS23,unknown,unknown,unhealthy +BDMAP_00004066,case_00448,KiTS23,unknown,unknown,unhealthy +BDMAP_00004067,PETCT_c08293f2b2,autoPET,unknown,unknown,unknown +BDMAP_00004068,amos_0351,AMOS,unknown,unknown,unknown +BDMAP_00004069,img0022,BTCV,healthy,healthy,healthy +BDMAP_00004070,TCIAColon_0057_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004071,hepaticvessel_281,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004072,TCIAColon_0061_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004073,PETCT_a1d93ebc74,autoPET,unknown,unknown,unknown +BDMAP_00004074,case_00562,KiTS23,unknown,unknown,unhealthy +BDMAP_00004075,Case_00777_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004076,PETCT_73fda3a382,autoPET,unknown,unknown,unknown +BDMAP_00004077,pancreas_239,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004078,TCIAColon_0125_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004079,pancreas_020,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00004080,s1321,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004081,PETCT_eca59074b9,autoPET,unknown,unknown,unknown +BDMAP_00004082,PETCT_80d7e682f7,autoPET,unknown,unknown,unknown +BDMAP_00004083,case_00060,KiTS19,unknown,unknown,unhealthy +BDMAP_00004084,27_image,CHAOS,healthy,healthy,healthy +BDMAP_00004085,PETCT_411801de5a,autoPET,unknown,unknown,unknown +BDMAP_00004086,hepaticvessel_112,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004087,case_00404,KiTS23,unknown,unknown,unhealthy +BDMAP_00004088,6_image,CHAOS,healthy,healthy,healthy +BDMAP_00004089,TCIAColon_0289_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004090,PETCT_54bed1d98f,autoPET,unknown,unknown,unknown +BDMAP_00004091,PETCT_a4ff5d0d9d,autoPET,unknown,unknown,unknown +BDMAP_00004092,TCIAColon_0051_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00004093,hepaticvessel_045,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004094,img0035,BTCV,healthy,healthy,healthy +BDMAP_00004095,hepaticvessel_251,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004096,TCIAColon_0251_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004097,pancreas_275,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004098,PANCREAS_0016,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00004099,amos_0111,AMOS,unknown,unknown,unknown +BDMAP_00004100,TCIAColon_0284_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004101,case_00064,KiTS19,unknown,unknown,unhealthy +BDMAP_00004102,hepaticvessel_293,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004103,liver_74,LiTS,unhealthy,unknown,unknown +BDMAP_00004104,case_00125,KiTS21,unknown,unknown,unhealthy +BDMAP_00004105,TCIAColon_0074_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004106,pancreas_402,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004107,word_0122,WORD,unknown,unknown,unknown +BDMAP_00004108,volume-108,CT-ORG,unknown,unknown,unknown +BDMAP_00004109,hepaticvessel_052,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004110,amos_0330,AMOS,unknown,unknown,unknown +BDMAP_00004111,s0106,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004112,PETCT_e4712dc58c,autoPET,unknown,unknown,unknown +BDMAP_00004113,case_00419,KiTS23,unknown,unknown,unhealthy +BDMAP_00004114,Case_00984_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004115,pancreas_081,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004116,s0665,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004117,liver_66,LiTS,unhealthy,unknown,unknown +BDMAP_00004118,CPTAC-PDA-C3N-01502_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00004119,hepaticvessel_225,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004120,TCIAColon_0002_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004121,colon_041,MSD-Colon,unknown,unknown,unknown +BDMAP_00004122,s0928,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004123,PETCT_993d40ea7e,autoPET,unknown,unknown,unknown +BDMAP_00004124,s0244,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004125,PETCT_9a583160ea,autoPET,unknown,unknown,unknown +BDMAP_00004126,PETCT_dc3437c9b9,autoPET,unknown,unknown,unknown +BDMAP_00004127,hepaticvessel_277,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004128,pancreas_145,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004129,pancreas_175,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004130,case_00098,KiTS21,unknown,unknown,unhealthy +BDMAP_00004131,case_00253,KiTS21,unknown,unknown,unhealthy +BDMAP_00004132,colon_109,MSD-Colon,unknown,unknown,unknown +BDMAP_00004133,PETCT_d65cf203be,autoPET,unknown,unknown,unknown +BDMAP_00004134,TCIAColon_0138_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004135,TCIAColon_0224_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004136,lung_015,MSD-Lung,unknown,unknown,unknown +BDMAP_00004137,hepaticvessel_387,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004138,img0074,BTCV,healthy,healthy,healthy +BDMAP_00004139,PETCT_68a7ade33c,autoPET,unknown,unknown,unknown +BDMAP_00004140,TCIAColon_0076_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004141,PETCT_d9da6129f8,autoPET,unknown,unknown,unknown +BDMAP_00004142,PANCREAS_0032,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00004143,TCIAColon_0193_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004144,FLARE23_Ts_0051_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004145,PETCT_0c13e4df10,autoPET,unknown,unknown,unknown +BDMAP_00004146,PETCT_eafa147e24,autoPET,unknown,unknown,unknown +BDMAP_00004147,colon_006,MSD-Colon,unknown,unknown,unknown +BDMAP_00004148,case_00085,KiTS21,unknown,unknown,unhealthy +BDMAP_00004149,PETCT_65bd1a4c38,autoPET,unknown,unknown,unknown +BDMAP_00004150,case_00063,KiTS19,unknown,unknown,unhealthy +BDMAP_00004151,amos_0230,AMOS,unknown,unknown,unknown +BDMAP_00004152,CPTAC-UCEC-C3N-00732_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00004153,amos_0237,AMOS,unknown,unknown,unknown +BDMAP_00004154,case_00469,KiTS23,unknown,unknown,unhealthy +BDMAP_00004155,s0754,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004156,PETCT_68f73c4518,autoPET,unknown,unknown,unknown +BDMAP_00004157,PETCT_14f931f634,autoPET,unknown,unknown,unknown +BDMAP_00004158,case_00146,KiTS19,unknown,unknown,unhealthy +BDMAP_00004159,pancreas_487,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00004160,TCIAColon_0090_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00004161,PETCT_f65602d938,autoPET,unknown,unknown,unknown +BDMAP_00004162,PETCT_92c3de23f5,autoPET,unknown,unknown,unknown +BDMAP_00004163,colon_172,MSD-Colon,unknown,unknown,unknown +BDMAP_00004164,PETCT_d1f456d229,autoPET,unknown,unknown,unknown +BDMAP_00004165,colon_042,MSD-Colon,unknown,unknown,unknown +BDMAP_00004166,s0784,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004167,s0315,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004168,amos_0179,AMOS,unknown,unknown,unknown +BDMAP_00004169,FLARE23_Ts_0021_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004170,hepaticvessel_391,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004171,PETCT_d3d61785e6,autoPET,unknown,unknown,unknown +BDMAP_00004172,FLARE23_Ts_0026_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004173,PETCT_75e42ff05f,autoPET,unknown,unknown,unknown +BDMAP_00004174,PETCT_572fca6b44,autoPET,unknown,unknown,unknown +BDMAP_00004175,case_00157,KiTS21,unknown,unknown,unhealthy +BDMAP_00004176,amos_0248,AMOS,unknown,unknown,unknown +BDMAP_00004177,Case_00412_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004178,CPTAC-UCEC-C3N-01003_0_7,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00004179,PETCT_ddbb3c69f0,autoPET,unknown,unknown,unknown +BDMAP_00004180,pancreas_465,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00004181,case_00071,KiTS19,unknown,unknown,unhealthy +BDMAP_00004182,word_0149,WORD,unknown,unknown,unknown +BDMAP_00004183,pancreas_382,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004184,pancreas_173,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004185,liver_95,LiTS,unhealthy,unknown,unknown +BDMAP_00004186,TCIAColon_0104_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00004187,liver_55,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00004188,s1090,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004189,amos_0259,AMOS,unknown,unknown,unknown +BDMAP_00004190,s0366,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004191,TCIAColon_0279_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00004192,s0650,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004193,CPTAC-CCRCC-C3L-01465_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00004194,CPTAC-CCRCC-C3L-01954_3_4,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00004195,case_00560,KiTS23,unknown,unknown,unhealthy +BDMAP_00004196,colon_064,MSD-Colon,unknown,unknown,unknown +BDMAP_00004197,s0753,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004198,pancreas_318,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004199,liver_35,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00004200,CPTAC-UCEC-C3N-01172_0_5,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00004201,hepaticvessel_390,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004202,PANCREAS_0009,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00004203,TCIAColon_0144_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004204,CPTAC-UCEC-C3N-01003_0_5,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00004205,PETCT_4250de48c8,autoPET,unknown,unknown,unknown +BDMAP_00004206,hepaticvessel_173,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004207,TCIAColon_0185_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004208,CPTAC-CCRCC-C3N-00491_0_2,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00004209,Case_00514_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004210,CPTAC-CCRCC-C3L-01352_0_3,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00004211,hepaticvessel_345,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004212,case_00224,KiTS19,unknown,unknown,unhealthy +BDMAP_00004213,word_0143,WORD,unknown,unknown,unknown +BDMAP_00004214,s0801,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004215,PETCT_08198c4f0c,autoPET,unknown,unknown,unknown +BDMAP_00004216,case_00518,KiTS23,unknown,unknown,unhealthy +BDMAP_00004217,FLARE23_Ts_0060_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004218,s0095,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004219,PETCT_ed9fa4eff1,autoPET,unknown,unknown,unknown +BDMAP_00004220,PETCT_08cdb15e0b,autoPET,unknown,unknown,unknown +BDMAP_00004221,NIH-LYMPH-MED-011_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00004222,CPTAC-PDA-C3N-03000_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00004223,word_0087,WORD,unknown,unknown,unknown +BDMAP_00004224,Case_00530_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004225,hepaticvessel_315,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004226,PETCT_40f0749cb7,autoPET,unknown,unknown,unknown +BDMAP_00004227,Case_00661_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004228,liver_117,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00004229,pancreas_389,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004230,TCIAColon_0243_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00004231,pancreas_219,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004232,case_00574,KiTS23,unknown,unknown,unhealthy +BDMAP_00004233,PETCT_e2a729e21f,autoPET,unknown,unknown,unknown +BDMAP_00004234,word_0044,WORD,unknown,unknown,unknown +BDMAP_00004235,CPTAC-UCEC-C3N-00743_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00004236,Case_00582_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004237,s0916,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004238,PETCT_88bcc970b3,autoPET,unknown,unknown,unknown +BDMAP_00004239,hepaticvessel_140,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004240,hepaticvessel_452,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004241,PETCT_55e3e62722,autoPET,unknown,unknown,unknown +BDMAP_00004242,NIH-LYMPH-ABD-051_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00004243,TCIAColon_0171_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00004244,TCIAColon_0241_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00004245,s0970,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004246,PETCT_7a262070a9,autoPET,unknown,unknown,unknown +BDMAP_00004247,s0440,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004248,PETCT_b53ba7c6bf,autoPET,unknown,unknown,unknown +BDMAP_00004249,TCIAColon_0252_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004250,case_00029,KiTS21,unknown,unknown,unhealthy +BDMAP_00004251,hepaticvessel_331,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004252,s0445,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004253,case_00180,KiTS21,unknown,unknown,unhealthy +BDMAP_00004254,s0703,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004255,TCIAColon_0215_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004256,PETCT_185bac7954,autoPET,unknown,unknown,unknown +BDMAP_00004257,case_00434,KiTS23,unknown,unknown,unhealthy +BDMAP_00004258,amos_0321,AMOS,unknown,unknown,unknown +BDMAP_00004259,PETCT_15a205ffcc,autoPET,unknown,unknown,unknown +BDMAP_00004260,PETCT_04606080a0,autoPET,unknown,unknown,unknown +BDMAP_00004261,TCIAColon_0122_1_0,TCIAColon,unknown,unknown,unknown +BDMAP_00004262,pancreas_303,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004263,s0153,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004264,pancreas_229,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004265,case_00257,KiTS19,unknown,unknown,unhealthy +BDMAP_00004266,amos_0050,AMOS,unknown,unknown,unknown +BDMAP_00004267,lung_047,MSD-Lung,unknown,unknown,unknown +BDMAP_00004268,CPTAC-UCEC-C3L-01246_0_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00004269,LDCT-L232_0_0,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00004270,PETCT_a86b3fad40,autoPET,unknown,unknown,unknown +BDMAP_00004271,volume-123,CT-ORG,unknown,unknown,unknown +BDMAP_00004272,TCIAColon_0013_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004273,CPTAC-PDA-C3N-01715_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00004274,CPTAC-PDA-C3N-01715_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00004275,PETCT_32219760da,autoPET,unknown,unknown,unknown +BDMAP_00004276,hepaticvessel_395,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004277,CPTAC-UCEC-C3N-00872_0_9,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00004278,case_00247,KiTS21,unknown,unknown,unhealthy +BDMAP_00004279,hepaticvessel_248,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004280,hepaticvessel_302,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004281,liver_26,LiTS,unhealthy,unknown,unknown +BDMAP_00004282,TCIAColon_0052_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004283,PETCT_249c02c01c,autoPET,unknown,unknown,unknown +BDMAP_00004284,PETCT_302613f9a5,autoPET,unknown,unknown,unknown +BDMAP_00004285,PETCT_4a0d2e5166,autoPET,unknown,unknown,unknown +BDMAP_00004286,pancreas_234,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004287,lung_041,MSD-Lung,unknown,unknown,unknown +BDMAP_00004288,pancreas_351,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004289,CPTAC-CCRCC-C3L-00610_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00004290,FLARE23_Ts_0093_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004291,PETCT_c6730783de,autoPET,unknown,unknown,unknown +BDMAP_00004292,s0555,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004293,pancreas_395,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004294,case_00006,KiTS21,unknown,unknown,unhealthy +BDMAP_00004295,pancreas_178,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004296,case_00578,KiTS23,unknown,unknown,unhealthy +BDMAP_00004297,pancreas_066,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004298,PETCT_cbbc9e2879,autoPET,unknown,unknown,unknown +BDMAP_00004299,TCIAColon_0271_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00004300,s1157,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004301,CPTAC-CCRCC-C3N-00380_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00004302,TCIAColon_0164_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004303,case_00078,KiTS19,unknown,unknown,unhealthy +BDMAP_00004304,liver_80,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00004305,Case_00049_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004306,FLARE23_Ts_0068_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004307,pancreas_257,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00004308,1_image,CHAOS,healthy,healthy,healthy +BDMAP_00004309,TCIAColon_0221_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004310,TCGA-OV-61-1907_1_1,TCGA-OV,unknown,unknown,unknown +BDMAP_00004311,hepaticvessel_427,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004312,PETCT_b42adab18e,autoPET,unknown,unknown,unknown +BDMAP_00004313,TCIAColon_0265_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004314,s0058,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004315,case_00299,KiTS19,unknown,unknown,unhealthy +BDMAP_00004316,PETCT_20995a0fe1,autoPET,unknown,unknown,unknown +BDMAP_00004317,case_00073,KiTS19,unknown,unknown,unhealthy +BDMAP_00004318,PETCT_ccd8f5ff71,autoPET,unknown,unknown,unknown +BDMAP_00004319,PETCT_29ab45ef17,autoPET,unknown,unknown,unknown +BDMAP_00004320,PETCT_f144b214af,autoPET,unknown,unknown,unknown +BDMAP_00004321,NIH-LYMPH-ABD-042_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00004322,PETCT_b66ba83594,autoPET,unknown,unknown,unknown +BDMAP_00004323,Case_00529_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004324,PETCT_7e56b0b62c,autoPET,unknown,unknown,unknown +BDMAP_00004325,Case_00957_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004326,liver_171,MSD-Liver,unknown,unknown,unknown +BDMAP_00004327,case_00047,KiTS19,unknown,unknown,unhealthy +BDMAP_00004328,case_00063,KiTS21,unknown,unknown,unhealthy +BDMAP_00004329,Case_00432_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004330,amos_0134,AMOS,unknown,unknown,unknown +BDMAP_00004331,case_00121,KiTS21,unknown,unknown,unhealthy +BDMAP_00004332,PETCT_119165872d,autoPET,unknown,unknown,unknown +BDMAP_00004333,amos_0047,AMOS,unknown,unknown,unknown +BDMAP_00004334,PETCT_a1db71e797,autoPET,unknown,unknown,unknown +BDMAP_00004335,s1240,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004336,hepaticvessel_344,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004337,PETCT_31ddf5013a,autoPET,unknown,unknown,unknown +BDMAP_00004338,TCIAColon_0121_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004339,PETCT_3708f576ec,autoPET,unknown,unknown,unknown +BDMAP_00004340,PETCT_d539f5a88b,autoPET,unknown,unknown,unknown +BDMAP_00004341,PETCT_6efefcb92a,autoPET,unknown,unknown,unknown +BDMAP_00004342,TCIAColon_0128_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004343,case_00161,KiTS19,unknown,unknown,unhealthy +BDMAP_00004344,amos_0125,AMOS,unknown,unknown,unknown +BDMAP_00004345,PETCT_be3e55a32f,autoPET,unknown,unknown,unknown +BDMAP_00004346,PETCT_e77c5fca12,autoPET,unknown,unknown,unknown +BDMAP_00004347,Case_00668_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004348,pancreas_450,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00004349,TCGA-OV-61-2016_2_1,TCGA-OV,unknown,unknown,unknown +BDMAP_00004350,PETCT_78b89bc739,autoPET,unknown,unknown,unknown +BDMAP_00004351,amos_0276,AMOS,unknown,unknown,unknown +BDMAP_00004352,PETCT_30c4b7062b,autoPET,unknown,unknown,unknown +BDMAP_00004353,PETCT_44d6ba6772,autoPET,unknown,unknown,unknown +BDMAP_00004354,case_00112,KiTS19,unknown,unknown,unhealthy +BDMAP_00004355,PETCT_72725f2bda,autoPET,unknown,unknown,unknown +BDMAP_00004356,Case_00827_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004357,FLARE23_Ts_0082_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004358,TCIAColon_0222_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004359,PETCT_f5c9b0de6c,autoPET,unknown,unknown,unknown +BDMAP_00004360,PANCREAS_0035,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00004361,hepaticvessel_274,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004362,amos_0268,AMOS,unknown,unknown,unknown +BDMAP_00004363,s0965,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004364,Case_00264_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004365,TCIAColon_0039_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00004366,s1132,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004367,PETCT_0410759456,autoPET,unknown,unknown,unknown +BDMAP_00004368,CPTAC-PDA-C3N-03039_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00004369,hepaticvessel_108,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004370,FLARE23_Ts_0018_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004371,PETCT_1fc35d02da,autoPET,unknown,unknown,unknown +BDMAP_00004372,PETCT_30001118d0,autoPET,unknown,unknown,unknown +BDMAP_00004373,case_00019,KiTS21,unknown,unknown,unhealthy +BDMAP_00004374,colon_218,MSD-Colon,unknown,unknown,unknown +BDMAP_00004375,hepaticvessel_182,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004376,FLARE23_Ts_0052_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004377,TCIAColon_0125_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004378,liver_73,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00004379,Case_00953_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004380,PETCT_cc7cb73213,autoPET,unknown,unknown,unknown +BDMAP_00004381,PETCT_048981112f,autoPET,unknown,unknown,unknown +BDMAP_00004382,s1377,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004383,pancreas_202,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00004384,colon_061,MSD-Colon,unknown,unknown,unknown +BDMAP_00004385,FLARE23_Ts_0077_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004386,hepaticvessel_276,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004387,PETCT_93132553f6,autoPET,unknown,unknown,unknown +BDMAP_00004388,amos_0353,AMOS,unknown,unknown,unknown +BDMAP_00004389,case_00553,KiTS23,unknown,unknown,unhealthy +BDMAP_00004390,lung_009,MSD-Lung,unknown,unknown,unknown +BDMAP_00004391,PETCT_ed7abf4433,autoPET,unknown,unknown,unknown +BDMAP_00004392,PETCT_efd619ecbf,autoPET,unknown,unknown,unknown +BDMAP_00004393,PETCT_9b982e72cb,autoPET,unknown,unknown,unknown +BDMAP_00004394,lung_092,MSD-Lung,unknown,unknown,unknown +BDMAP_00004395,case_00493,KiTS23,unknown,unknown,unhealthy +BDMAP_00004396,s0024,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004397,case_00251,KiTS19,unknown,unknown,unhealthy +BDMAP_00004398,pancreas_207,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004399,TCGA-BLCA-4Z-AA84_0_2,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00004400,hepaticvessel_183,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004401,TCIAColon_0226_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004402,PETCT_55ae7986e1,autoPET,unknown,unknown,unknown +BDMAP_00004403,volume-68,CT-ORG,unknown,unknown,unknown +BDMAP_00004404,hepaticvessel_456,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004405,hepaticvessel_399,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004406,TCIAColon_0213_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004407,case_00457,KiTS23,unknown,unknown,unhealthy +BDMAP_00004408,word_0089,WORD,unknown,unknown,unknown +BDMAP_00004409,s0201,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004410,Case_00994_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004411,NIH-LYMPH-ABD-067_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00004412,Case_00201_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004413,TCIAColon_0253_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004414,case_00270,KiTS19,unknown,unknown,unhealthy +BDMAP_00004415,colon_081,MSD-Colon,unknown,unknown,unknown +BDMAP_00004416,liver_118,LiTS,unhealthy,unknown,unknown +BDMAP_00004417,case_00289,KiTS21,unknown,unknown,unhealthy +BDMAP_00004418,img0004,BTCV,healthy,healthy,healthy +BDMAP_00004419,TCIAColon_0194_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00004420,case_00111,KiTS21,unknown,unknown,unhealthy +BDMAP_00004421,img0006,BTCV,healthy,healthy,healthy +BDMAP_00004422,Case_00423_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004423,hepaticvessel_242,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004424,TCIAColon_0270_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004425,Case_00824_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004426,PETCT_644d80e987,autoPET,unknown,unknown,unknown +BDMAP_00004427,case_00475,KiTS23,unknown,unknown,unhealthy +BDMAP_00004428,Case_01037_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004429,PETCT_16cdbc8689,autoPET,unknown,unknown,unknown +BDMAP_00004430,TCGA-BLCA-4Z-AA7S_0_1,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00004431,colon_157,MSD-Colon,unknown,unknown,unknown +BDMAP_00004432,PETCT_2428b44e92,autoPET,unknown,unknown,unknown +BDMAP_00004433,CPTAC-UCEC-C3L-01732_0_10,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00004434,PETCT_71ae114917,autoPET,unknown,unknown,unknown +BDMAP_00004435,liver_78,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00004436,s1283,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004437,case_00219,KiTS19,unknown,unknown,unhealthy +BDMAP_00004438,PETCT_fde66dd53a,autoPET,unknown,unknown,unknown +BDMAP_00004439,hepaticvessel_415,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004440,amos_0263,AMOS,unknown,unknown,unknown +BDMAP_00004441,CPTAC-UCEC-C3N-00872_0_11,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00004442,TCIAColon_0020_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004443,s0674,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004444,PETCT_7b42056ee3,autoPET,unknown,unknown,unknown +BDMAP_00004445,PETCT_9d6e9223cc,autoPET,unknown,unknown,unknown +BDMAP_00004446,PETCT_20f4a3aa02,autoPET,unknown,unknown,unknown +BDMAP_00004447,pancreas_401,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004448,PETCT_52f84711a5,autoPET,unknown,unknown,unknown +BDMAP_00004449,s0683,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004450,colon_159,MSD-Colon,unknown,unknown,unknown +BDMAP_00004451,TCIAColon_0116_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004452,hepaticvessel_206,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004453,TCIAColon_0212_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004454,PETCT_82137245b0,autoPET,unknown,unknown,unknown +BDMAP_00004455,Case_01051_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004456,s0271,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004457,case_00465,KiTS23,unknown,unknown,unhealthy +BDMAP_00004458,PANCREAS_0022,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00004459,liver_72,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00004460,CPTAC-CCRCC-C3L-00766_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00004461,PETCT_78355d1d4f,autoPET,unknown,unknown,unknown +BDMAP_00004462,liver_25,LiTS,unhealthy,unknown,unknown +BDMAP_00004463,amos_0215,AMOS,unknown,unknown,unknown +BDMAP_00004464,PETCT_bd76c8d299,autoPET,unknown,unknown,unknown +BDMAP_00004465,s0275,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004466,s1331,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004467,case_00157,KiTS19,unknown,unknown,unhealthy +BDMAP_00004468,spleen_37,MSD-Spleen,unknown,unknown,unknown +BDMAP_00004469,hepaticvessel_243,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004470,CPTAC-PDA-C3N-01166_0_11,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00004471,s0918,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004472,PETCT_2e44706eaf,autoPET,unknown,unknown,unknown +BDMAP_00004473,Case_00421_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004474,lung_048,MSD-Lung,unknown,unknown,unknown +BDMAP_00004475,case_00008,KiTS21,unknown,unknown,unhealthy +BDMAP_00004476,CPTAC-CCRCC-C3L-00812_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00004477,PETCT_ae8c77a995,autoPET,unknown,unknown,unknown +BDMAP_00004478,TCIAColon_0172_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00004479,case_00169,KiTS21,unknown,unknown,unhealthy +BDMAP_00004480,PANCREAS_0010,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00004481,case_00282,KiTS21,unknown,unknown,unhealthy +BDMAP_00004482,case_00535,KiTS23,unknown,unknown,unhealthy +BDMAP_00004483,PETCT_e5e1918765,autoPET,unknown,unknown,unknown +BDMAP_00004484,amos_0173,AMOS,unknown,unknown,unknown +BDMAP_00004485,PETCT_85b69fed1c,autoPET,unknown,unknown,unknown +BDMAP_00004486,colon_177,MSD-Colon,unknown,unknown,unknown +BDMAP_00004487,PETCT_a37b4bca43,autoPET,unknown,unknown,unknown +BDMAP_00004488,TCIAColon_0182_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00004489,case_00045,KiTS19,unknown,unknown,unhealthy +BDMAP_00004490,TCIAColon_0210_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00004491,colon_065,MSD-Colon,unknown,unknown,unknown +BDMAP_00004492,PETCT_c73c2685c0,autoPET,unknown,unknown,unknown +BDMAP_00004493,colon_129,MSD-Colon,unknown,unknown,unknown +BDMAP_00004494,pancreas_367,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004495,case_00098,KiTS19,unknown,unknown,unhealthy +BDMAP_00004496,hepaticvessel_261,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004497,PETCT_350e91119a,autoPET,unknown,unknown,unknown +BDMAP_00004498,liver_135,MSD-Liver,unknown,unknown,unknown +BDMAP_00004499,case_00167,KiTS21,unknown,unknown,unhealthy +BDMAP_00004500,TCIAColon_0064_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00004501,PETCT_4ef69de4e1,autoPET,unknown,unknown,unknown +BDMAP_00004502,TCIAColon_0187_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00004503,hepaticvessel_213,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004504,word_0020,WORD,unknown,unknown,unknown +BDMAP_00004505,TCIAColon_0203_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004506,word_0011,WORD,unknown,unknown,unknown +BDMAP_00004507,hepaticvessel_204,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004508,liver_79,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00004509,liver_83,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00004510,case_00513,KiTS23,unknown,unknown,unhealthy +BDMAP_00004511,pancreas_200,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004512,PETCT_68b75093c5,autoPET,unknown,unknown,unknown +BDMAP_00004513,hepaticvessel_021,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004514,pancreas_196,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004515,s1349,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004516,word_0135,WORD,unknown,unknown,unknown +BDMAP_00004517,hepaticvessel_419,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004518,TCIAColon_0133_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004519,TCIAColon_0025_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004520,TCIAColon_0179_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004521,TCIAColon_0023_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00004522,TCIAColon_0259_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00004523,PETCT_9abb9583ec,autoPET,unknown,unknown,unknown +BDMAP_00004524,TCIAColon_0191_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004525,liver_162,MSD-Liver,unknown,unknown,unknown +BDMAP_00004526,PETCT_6016a6c3af,autoPET,unknown,unknown,unknown +BDMAP_00004527,PETCT_cb1f5e74ab,autoPET,unknown,unknown,unknown +BDMAP_00004528,LDCT-L220_0_1,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00004529,liver_49,LiTS,unhealthy,unknown,unknown +BDMAP_00004530,PETCT_3d8b79d739,autoPET,unknown,unknown,unknown +BDMAP_00004531,PETCT_3b2a4af482,autoPET,unknown,unknown,unknown +BDMAP_00004532,pancreas_460,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00004533,hepaticvessel_316,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004534,TCIAColon_0239_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004535,TCIAColon_0280_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004536,amos_0320,AMOS,unknown,unknown,unknown +BDMAP_00004537,liver_144,MSD-Liver,unknown,unknown,unknown +BDMAP_00004538,PETCT_59309d6625,autoPET,unknown,unknown,unknown +BDMAP_00004539,amos_0387,AMOS,unknown,unknown,unknown +BDMAP_00004540,amos_0307,AMOS,unknown,unknown,unknown +BDMAP_00004541,pancreas_032,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004542,hepaticvessel_301,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004543,PETCT_ba717a1f22,autoPET,unknown,unknown,unknown +BDMAP_00004544,TCIAColon_0103_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00004545,amos_0131,AMOS,unknown,unknown,unknown +BDMAP_00004546,pancreas_406,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004547,CPTAC-PDA-C3N-01907_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00004548,PETCT_b6a3c72db6,autoPET,unknown,unknown,unknown +BDMAP_00004549,pancreas_107,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004550,pancreas_300,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004551,case_00032,KiTS21,unknown,unknown,unhealthy +BDMAP_00004552,case_00468,KiTS23,unknown,unknown,unhealthy +BDMAP_00004553,Case_00856_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004554,pancreas_489,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00004555,TCIAColon_0289_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004556,TCIAColon_0094_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00004557,word_0145,WORD,unknown,unknown,unknown +BDMAP_00004558,colon_026,MSD-Colon,unknown,unknown,unknown +BDMAP_00004559,hepaticvessel_306,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004560,word_0025,WORD,unknown,unknown,unknown +BDMAP_00004561,case_00482,KiTS23,unknown,unknown,unhealthy +BDMAP_00004562,hepaticvessel_458,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004563,CPTAC-UCEC-C3L-01247_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00004564,PETCT_3d6f425a76,autoPET,unknown,unknown,unknown +BDMAP_00004565,volume-59,CT-ORG,unknown,unknown,unknown +BDMAP_00004566,hepaticvessel_337,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004567,word_0081,WORD,unknown,unknown,unknown +BDMAP_00004568,s0708,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004569,pancreas_424,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00004570,TCIAColon_0198_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00004571,PETCT_86e54ea60a,autoPET,unknown,unknown,unknown +BDMAP_00004572,s0300,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004573,hepaticvessel_117,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004574,lung_080,MSD-Lung,unknown,unknown,unknown +BDMAP_00004575,case_00027,KiTS19,unknown,unknown,unhealthy +BDMAP_00004576,hepaticvessel_246,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004577,hepaticvessel_414,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004578,case_00048,KiTS21,unknown,unknown,unhealthy +BDMAP_00004579,case_00028,KiTS21,unknown,unknown,unhealthy +BDMAP_00004580,s0218,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004581,case_00148,KiTS19,unknown,unknown,unhealthy +BDMAP_00004582,lung_031,MSD-Lung,unknown,unknown,unknown +BDMAP_00004583,s0483,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004584,TCIAColon_0076_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004585,TCIAColon_0188_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004586,case_00456,KiTS23,unknown,unknown,unhealthy +BDMAP_00004587,NIH-LYMPH-ABD-053_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00004588,NIH-LYMPH-ABD-003_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00004589,hepaticvessel_056,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004590,volume-61,CT-ORG,unknown,unknown,unknown +BDMAP_00004591,s1361,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004592,Case_00053_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004593,PETCT_63508c679d,autoPET,unknown,unknown,unknown +BDMAP_00004594,img0010,BTCV,healthy,healthy,healthy +BDMAP_00004595,PETCT_a1bc00ad60,autoPET,unknown,unknown,unknown +BDMAP_00004596,volume-89,CT-ORG,unknown,unknown,unknown +BDMAP_00004597,case_00488,KiTS23,unknown,unknown,unhealthy +BDMAP_00004598,hepaticvessel_118,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004599,s0255,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004600,liver_118,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00004601,hepaticvessel_429,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004602,Case_00436_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004603,s0053,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004604,colon_091,MSD-Colon,unknown,unknown,unknown +BDMAP_00004605,TCIAColon_0002_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004606,TCIAColon_0178_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004607,PETCT_c252d734a0,autoPET,unknown,unknown,unknown +BDMAP_00004608,case_00183,KiTS21,unknown,unknown,unhealthy +BDMAP_00004609,case_00088,KiTS19,unknown,unknown,unhealthy +BDMAP_00004610,s0236,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004611,s0452,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004612,Case_01002_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004613,hepaticvessel_055,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004614,word_0012,WORD,unknown,unknown,unknown +BDMAP_00004615,colon_124,MSD-Colon,unknown,unknown,unknown +BDMAP_00004616,case_00001,KiTS21,unknown,unknown,unhealthy +BDMAP_00004617,PETCT_c16c13211c,autoPET,unknown,unknown,unknown +BDMAP_00004618,hepaticvessel_412,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004619,amos_0379,AMOS,unknown,unknown,unknown +BDMAP_00004620,case_00114,KiTS21,unknown,unknown,unhealthy +BDMAP_00004621,PETCT_6543c58e13,autoPET,unknown,unknown,unknown +BDMAP_00004622,CPTAC-CCRCC-C3N-00435_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00004623,PETCT_9d97ac5d4d,autoPET,unknown,unknown,unknown +BDMAP_00004624,colon_088,MSD-Colon,unknown,unknown,unknown +BDMAP_00004625,PETCT_64aff75516,autoPET,unknown,unknown,unknown +BDMAP_00004626,s0204,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004627,CPTAC-PDA-C3N-02697_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00004628,amos_0137,AMOS,unknown,unknown,unknown +BDMAP_00004629,PETCT_1e43e3d692,autoPET,unknown,unknown,unknown +BDMAP_00004630,amos_0127,AMOS,unknown,unknown,unknown +BDMAP_00004631,s1207,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004632,TCIAColon_0257_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004633,CPTAC-CCRCC-C3L-00766_0_3,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00004634,PETCT_ca16242e89,autoPET,unknown,unknown,unknown +BDMAP_00004635,TCIAColon_0196_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004636,pancreas_292,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004637,s1386,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004638,PETCT_0ea07b421b,autoPET,unknown,unknown,unknown +BDMAP_00004639,liver_40,LiTS,unhealthy,unknown,unknown +BDMAP_00004640,Case_00451_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004641,pancreas_179,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004642,s0788,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004643,hepaticvessel_324,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004644,amos_0067,AMOS,unknown,unknown,unknown +BDMAP_00004645,case_00148,KiTS21,unknown,unknown,unhealthy +BDMAP_00004646,TCIAColon_0251_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004647,PETCT_04a4e1c874,autoPET,unknown,unknown,unknown +BDMAP_00004648,PETCT_a09210d96b,autoPET,unknown,unknown,unknown +BDMAP_00004649,hepaticvessel_044,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004650,colon_033,MSD-Colon,unknown,unknown,unknown +BDMAP_00004651,pancreas_102,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004652,case_00099,KiTS21,unknown,unknown,unhealthy +BDMAP_00004653,s0624,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004654,PETCT_e6f6c84ec5,autoPET,unknown,unknown,unknown +BDMAP_00004655,FLARE23_Ts_0059_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004656,TCIAColon_0242_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004657,PETCT_2922971d0f,autoPET,unknown,unknown,unknown +BDMAP_00004658,TCIAColon_0177_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004659,PETCT_7b477e7e0d,autoPET,unknown,unknown,unknown +BDMAP_00004660,word_0078,WORD,unknown,unknown,unknown +BDMAP_00004661,TCIAColon_0202_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00004662,PETCT_5c35fcbe89,autoPET,unknown,unknown,unknown +BDMAP_00004663,PETCT_e6a91fef70,autoPET,unknown,unknown,unknown +BDMAP_00004664,liver_33,LiTS,unhealthy,unknown,unknown +BDMAP_00004665,LDCT-L299_0_0,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00004666,liver_140,MSD-Liver,unknown,unknown,unknown +BDMAP_00004667,volume-67,CT-ORG,unknown,unknown,unknown +BDMAP_00004668,Case_01029_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004669,amos_0296,AMOS,unknown,unknown,unknown +BDMAP_00004670,TCIAColon_0264_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004671,case_00154,KiTS21,unknown,unknown,unhealthy +BDMAP_00004672,pancreas_035,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004673,case_00143,KiTS21,unknown,unknown,unhealthy +BDMAP_00004674,s0334,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004675,PETCT_6a3477cd9a,autoPET,unknown,unknown,unknown +BDMAP_00004676,colon_045,MSD-Colon,unknown,unknown,unknown +BDMAP_00004677,PETCT_f603eeceba,autoPET,unknown,unknown,unknown +BDMAP_00004678,NIH-LYMPH-ABD-078_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00004679,case_00267,KiTS19,unknown,unknown,unhealthy +BDMAP_00004680,hepaticvessel_353,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004681,amos_0072,AMOS,unknown,unknown,unknown +BDMAP_00004682,case_00021,KiTS19,unknown,unknown,unhealthy +BDMAP_00004683,hepaticvessel_297,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004684,amos_0025,AMOS,unknown,unknown,unknown +BDMAP_00004685,hepaticvessel_361,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004686,CPTAC-CCRCC-C3L-01465_0_2,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00004687,CPTAC-CCRCC-C3N-00380_0_10,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00004688,PETCT_6c469107a0,autoPET,unknown,unknown,unknown +BDMAP_00004689,Case_00537_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004690,TCIAColon_0273_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004691,word_0101,WORD,unknown,unknown,unknown +BDMAP_00004692,Case_01031_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004693,CPTAC-CCRCC-C3L-01459_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00004694,hepaticvessel_356,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004695,pancreas_251,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00004696,Case_00820_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004697,NIH-LYMPH-MED-010_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00004698,Case_01049_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004699,PETCT_e44480b9b8,autoPET,unknown,unknown,unknown +BDMAP_00004700,PETCT_9c68e484a7,autoPET,unknown,unknown,unknown +BDMAP_00004701,hepaticvessel_080,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004702,hepaticvessel_135,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004703,PETCT_d69eabbb20,autoPET,unknown,unknown,unknown +BDMAP_00004704,liver_58,LiTS,unhealthy,unknown,unknown +BDMAP_00004705,PETCT_5b10c3f524,autoPET,unknown,unknown,unknown +BDMAP_00004706,PETCT_e207c7a1a4,autoPET,unknown,unknown,unknown +BDMAP_00004707,word_0082,WORD,unknown,unknown,unknown +BDMAP_00004708,volume-50,CT-ORG,unknown,unknown,unknown +BDMAP_00004709,PETCT_5f569fb737,autoPET,unknown,unknown,unknown +BDMAP_00004710,TCIAColon_0288_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004711,TCIAColon_0194_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004712,case_00039,KiTS21,unknown,unknown,unhealthy +BDMAP_00004713,s1304,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004714,hepaticvessel_143,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004715,amos_0398,AMOS,unknown,unknown,unknown +BDMAP_00004716,s1155,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004717,case_00239,KiTS21,unknown,unknown,unhealthy +BDMAP_00004718,TCIAColon_0089_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00004719,pancreas_005,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004720,NIH-LYMPH-ABD-084_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00004721,TCGA-SARC-A5V2_0_1,TCGA-SARC,unknown,unknown,unknown +BDMAP_00004722,CPTAC-UCEC-C3N-00866_1_4,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00004723,TCIAColon_0039_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00004724,TCIAColon_0176_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004725,s0499,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004726,PETCT_ac75e49284,autoPET,unknown,unknown,unknown +BDMAP_00004727,hepaticvessel_446,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004728,TCIAColon_0150_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004729,Case_00959_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004730,PETCT_ed9dca00d2,autoPET,unknown,unknown,unknown +BDMAP_00004731,PETCT_c16d325d12,autoPET,unknown,unknown,unknown +BDMAP_00004732,liver_150,MSD-Liver,unknown,unknown,unknown +BDMAP_00004733,LDCT-L203_0_1,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00004734,word_0027,WORD,unknown,unknown,unknown +BDMAP_00004735,pancreas_051,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004736,CPTAC-PDA-C3N-01166_0_8,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00004737,word_0095,WORD,unknown,unknown,unknown +BDMAP_00004738,case_00056,KiTS21,unknown,unknown,unhealthy +BDMAP_00004739,pancreas_208,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00004740,hepaticvessel_269,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004741,pancreas_182,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004742,PETCT_4c9e7be363,autoPET,unknown,unknown,unknown +BDMAP_00004743,TCIAColon_0100_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004744,case_00260,KiTS21,unknown,unknown,unhealthy +BDMAP_00004745,liver_113,LiTS,unhealthy,unknown,unknown +BDMAP_00004746,case_00061,KiTS21,unknown,unknown,unhealthy +BDMAP_00004747,PETCT_5cf118ac06,autoPET,unknown,unknown,unknown +BDMAP_00004748,lung_020,MSD-Lung,unknown,unknown,unknown +BDMAP_00004749,FLARE23_Ts_0072_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004750,TCIAColon_0201_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004751,hepaticvessel_234,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004752,s0719,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004753,PETCT_0011f3deaf,autoPET,unknown,unknown,unknown +BDMAP_00004754,word_0126,WORD,unknown,unknown,unknown +BDMAP_00004755,PETCT_2d70838805,autoPET,unknown,unknown,unknown +BDMAP_00004756,TCIAColon_0098_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00004757,CPTAC-PDA-C3N-01907_0_2,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00004758,TCIAColon_0164_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004759,case_00075,KiTS19,unknown,unknown,unhealthy +BDMAP_00004760,TCIAColon_0297_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004761,Case_00829_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004762,TCIAColon_0070_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004763,PETCT_1285b86bea,autoPET,unknown,unknown,unknown +BDMAP_00004764,colon_106,MSD-Colon,unknown,unknown,unknown +BDMAP_00004765,TCIAColon_0112_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004766,hepaticvessel_440,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004767,PETCT_75d1080946,autoPET,unknown,unknown,unknown +BDMAP_00004768,TCGA-BLCA-CU-A3QU_0_1,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00004769,s0628,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004770,pancreas_061,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004771,Case_00211_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004772,PETCT_402c061122,autoPET,unknown,unknown,unknown +BDMAP_00004773,pancreas_140,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004774,s0019,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004775,case_00568,KiTS23,unknown,unknown,unhealthy +BDMAP_00004776,PETCT_bbb2df1e31,autoPET,unknown,unknown,unknown +BDMAP_00004777,pancreas_499,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00004778,s0065,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004779,amos_0370,AMOS,unknown,unknown,unknown +BDMAP_00004780,Case_00720_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004781,hepaticvessel_007,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004782,lung_028,MSD-Lung,unknown,unknown,unknown +BDMAP_00004783,colon_143,MSD-Colon,unknown,unknown,unknown +BDMAP_00004784,PETCT_ff39795341,autoPET,unknown,unknown,unknown +BDMAP_00004785,PETCT_22d07bdc49,autoPET,unknown,unknown,unknown +BDMAP_00004786,s0619,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004787,PETCT_099b3fd402,autoPET,unknown,unknown,unknown +BDMAP_00004788,hepaticvessel_014,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004789,FLARE23_Ts_0003_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004790,lung_034,MSD-Lung,unknown,unknown,unknown +BDMAP_00004791,s0150,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004792,hepaticvessel_028,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004793,pancreas_289,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004794,PETCT_d393ab6c7b,autoPET,unknown,unknown,unknown +BDMAP_00004795,s0933,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004796,pancreas_414,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004797,liver_185,MSD-Liver,unknown,unknown,unknown +BDMAP_00004798,pancreas_497,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00004799,s0994,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004800,TCIAColon_0134_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004801,CPTAC-PDA-C3N-01382_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00004802,hepaticvessel_433,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004803,PETCT_182bdeba22,autoPET,unknown,unknown,unknown +BDMAP_00004804,pancreas_028,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004805,TCIAColon_0233_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004806,pancreas_324,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00004807,hepaticvessel_299,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004808,case_00224,KiTS21,unknown,unknown,unhealthy +BDMAP_00004809,hepaticvessel_145,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004810,s0585,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004811,TCIAColon_0147_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004812,CPTAC-PDA-C3N-01165_0_5,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00004813,hepaticvessel_451,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004814,PETCT_c7fd7e3e30,autoPET,unknown,unknown,unknown +BDMAP_00004815,case_00203,KiTS21,unknown,unknown,unhealthy +BDMAP_00004816,PETCT_36bb0257fc,autoPET,unknown,unknown,unknown +BDMAP_00004817,case_00156,KiTS21,unknown,unknown,unhealthy +BDMAP_00004818,s0375,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004819,Case_00866_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004820,lung_074,MSD-Lung,unknown,unknown,unknown +BDMAP_00004821,Case_00715_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004822,pancreas_260,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00004823,Case_01013_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004824,NIH-LYMPH-ABD-061_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00004825,liver_115,LiTS,healthy,unknown,unknown +BDMAP_00004826,word_0111,WORD,unknown,unknown,unknown +BDMAP_00004827,s1206,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004828,PETCT_ca9570a0eb,autoPET,unknown,unknown,unknown +BDMAP_00004829,pancreas_305,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004830,liver_120,LiTS,unhealthy,unknown,unknown +BDMAP_00004831,s0459,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004832,s1110,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004833,s0959,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004834,case_00279,KiTS21,unknown,unknown,unhealthy +BDMAP_00004835,hepaticvessel_047,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004836,TCIAColon_0290_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004837,TCIAColon_0181_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00004838,Case_00665_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004839,liver_36,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00004840,img0005,BTCV,healthy,healthy,healthy +BDMAP_00004841,pancreas_210,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004842,hepaticvessel_154,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004843,pancreas_357,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004844,case_00076,KiTS19,unknown,unknown,unhealthy +BDMAP_00004845,TCIAColon_0041_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00004846,s0516,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004847,pancreas_193,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004848,Case_01008_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004849,PETCT_ca5406d339,autoPET,unknown,unknown,unknown +BDMAP_00004850,case_00218,KiTS21,unknown,unknown,unhealthy +BDMAP_00004851,TCGA-STAD-A8DT_0_4,TCGA-STAD,unknown,unknown,unknown +BDMAP_00004852,TCGA-BLCA-4Z-AA7S_0_3,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00004853,TCIAColon_0183_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004854,Case_00213_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004855,liver_120,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00004856,PETCT_18e8b02af3,autoPET,unknown,unknown,unknown +BDMAP_00004857,Case_01048_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004858,pancreas_129,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004859,PETCT_c517c47bed,autoPET,unknown,unknown,unknown +BDMAP_00004860,hepaticvessel_156,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004861,TCIAColon_0037_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004862,PETCT_e9be8ec30f,autoPET,unknown,unknown,unknown +BDMAP_00004863,TCIAColon_0168_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004864,s0529,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004865,TCIAColon_0176_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00004866,liver_60,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00004867,case_00168,KiTS21,unknown,unknown,unhealthy +BDMAP_00004868,PETCT_c4a686881e,autoPET,unknown,unknown,unknown +BDMAP_00004869,volume-94,CT-ORG,unknown,unknown,unknown +BDMAP_00004870,case_00181,KiTS21,unknown,unknown,unhealthy +BDMAP_00004871,PETCT_bfd89440db,autoPET,unknown,unknown,unknown +BDMAP_00004872,TCIAColon_0279_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004873,PETCT_154e94256c,autoPET,unknown,unknown,unknown +BDMAP_00004874,Case_00023_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004875,TCIAColon_0140_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004876,colon_162,MSD-Colon,unknown,unknown,unknown +BDMAP_00004877,PETCT_61663450f8,autoPET,unknown,unknown,unknown +BDMAP_00004878,liver_76,LiTS,unhealthy,unknown,unknown +BDMAP_00004879,PETCT_21853fc15b,autoPET,unknown,unknown,unknown +BDMAP_00004880,pancreas_056,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004881,PETCT_af547fa618,autoPET,unknown,unknown,unknown +BDMAP_00004882,FLARE23_Ts_0071_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004883,s0355,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004884,TCIAColon_0045_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004885,pancreas_344,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004886,case_00109,KiTS19,unknown,unknown,unhealthy +BDMAP_00004887,case_00213,KiTS21,unknown,unknown,unhealthy +BDMAP_00004888,liver_44,LiTS,unhealthy,unknown,unknown +BDMAP_00004889,hepaticvessel_349,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004890,liver_29,LiTS,unhealthy,unknown,unknown +BDMAP_00004891,CPTAC-PDA-C3N-03039_3_1,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00004892,CPTAC-CCRCC-C3N-00380_0_3,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00004893,PETCT_cd2ef932b5,autoPET,unknown,unknown,unknown +BDMAP_00004894,colon_148,MSD-Colon,unknown,unknown,unknown +BDMAP_00004895,pancreas_249,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004896,liver_151,MSD-Liver,unknown,unknown,unknown +BDMAP_00004897,case_00423,KiTS23,unknown,unknown,unhealthy +BDMAP_00004898,Case_00990_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004899,word_0059,WORD,unknown,unknown,unknown +BDMAP_00004900,s1111,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004901,case_00250,KiTS21,unknown,unknown,unhealthy +BDMAP_00004902,TCIAColon_0246_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004903,case_00534,KiTS23,unknown,unknown,unhealthy +BDMAP_00004904,CPTAC-UCEC-C3L-01247_0_2,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00004905,s1247,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004906,Case_00818_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004907,PETCT_e0aa99fa04,autoPET,unknown,unknown,unknown +BDMAP_00004908,PETCT_13f476b02b,autoPET,unknown,unknown,unknown +BDMAP_00004909,Case_00834_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004910,colon_038,MSD-Colon,unknown,unknown,unknown +BDMAP_00004911,PETCT_e4749cda88,autoPET,unknown,unknown,unknown +BDMAP_00004912,amos_0116,AMOS,unknown,unknown,unknown +BDMAP_00004913,img0027,BTCV,healthy,healthy,healthy +BDMAP_00004914,PETCT_7365362464,autoPET,unknown,unknown,unknown +BDMAP_00004915,s0141,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004916,s0462,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004917,pancreas_074,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004918,PETCT_ddca6cfba6,autoPET,unknown,unknown,unknown +BDMAP_00004919,s1124,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004920,Case_00546_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004921,s0835,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004922,case_00458,KiTS23,unknown,unknown,unhealthy +BDMAP_00004923,CPTAC-PDA-C3N-01375_0_2,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00004924,PETCT_3a4be713a1,autoPET,unknown,unknown,unknown +BDMAP_00004925,case_00206,KiTS21,unknown,unknown,unhealthy +BDMAP_00004926,CPTAC-UCEC-C3N-00866_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00004927,pancreas_086,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004928,Case_00792_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004929,CPTAC-UCEC-C3N-00866_3_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00004930,hepaticvessel_392,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004931,Case_00538_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004932,PETCT_3708f576ec,autoPET,unknown,unknown,unknown +BDMAP_00004933,PETCT_a7b323b3fd,autoPET,unknown,unknown,unknown +BDMAP_00004934,FLARE23_Ts_0025_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004935,s0403,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004936,s1262,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004937,amos_0075,AMOS,unknown,unknown,unknown +BDMAP_00004938,hepaticvessel_305,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004939,TCIAColon_0106_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00004940,FLARE23_Ts_0054_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004941,amos_0226,AMOS,unknown,unknown,unknown +BDMAP_00004942,FLARE23_Ts_0012_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004943,liver_87,LiTS,healthy,unknown,unknown +BDMAP_00004944,TCIAColon_0145_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004945,Case_00542_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004946,TCIAColon_0010_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00004947,PETCT_b52920038c,autoPET,unknown,unknown,unknown +BDMAP_00004948,PETCT_f24f3ce1da,autoPET,unknown,unknown,unknown +BDMAP_00004949,TCIAColon_0003_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00004950,colon_178,MSD-Colon,unknown,unknown,unknown +BDMAP_00004951,PETCT_b04be2846e,autoPET,unknown,unknown,unknown +BDMAP_00004952,PETCT_b1d6679284,autoPET,unknown,unknown,unknown +BDMAP_00004953,24_image,CHAOS,healthy,healthy,healthy +BDMAP_00004954,pancreas_242,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004955,hepaticvessel_335,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004956,case_00486,KiTS23,unknown,unknown,unhealthy +BDMAP_00004957,TCIAColon_0075_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004958,TCIAColon_0208_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00004959,hepaticvessel_062,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00004960,lung_051,MSD-Lung,unknown,unknown,unknown +BDMAP_00004961,s0248,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004962,s0362,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004963,TCIAColon_0108_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00004964,pancreas_093,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004965,pancreas_060,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00004966,hepaticvessel_170,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004967,Case_01026_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00004968,case_00140,KiTS19,unknown,unknown,unhealthy +BDMAP_00004969,pancreas_043,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004970,PETCT_f082a3d319,autoPET,unknown,unknown,unknown +BDMAP_00004971,hepaticvessel_030,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004972,TCIAColon_0156_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00004973,PETCT_8fea5f0537,autoPET,unknown,unknown,unknown +BDMAP_00004974,hepaticvessel_346,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00004975,PETCT_f8aac0e202,autoPET,unknown,unknown,unknown +BDMAP_00004976,hepaticvessel_235,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004977,s1131,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004978,PETCT_a2676f03c0,autoPET,unknown,unknown,unknown +BDMAP_00004979,FLARE23_Ts_0049_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00004980,case_00267,KiTS21,unknown,unknown,unhealthy +BDMAP_00004981,case_00495,KiTS23,unknown,unknown,unhealthy +BDMAP_00004982,CPTAC-PDA-C3N-01715_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00004983,TCIAColon_0142_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00004984,volume-136,CT-ORG,unknown,unknown,unknown +BDMAP_00004985,s0406,TotalSegmentator,unknown,unknown,unknown +BDMAP_00004986,PETCT_556b56485a,autoPET,unknown,unknown,unknown +BDMAP_00004987,liver_139,MSD-Liver,unknown,unknown,unknown +BDMAP_00004988,pancreas_151,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00004989,PETCT_0fa313309d,autoPET,unknown,unknown,unknown +BDMAP_00004990,case_00132,KiTS21,unknown,unknown,unhealthy +BDMAP_00004991,volume-98,CT-ORG,unknown,unknown,unknown +BDMAP_00004992,pancreas_279,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00004993,hepaticvessel_307,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00004994,PETCT_df2e16771a,autoPET,unknown,unknown,unknown +BDMAP_00004995,liver_63,LiTS,unhealthy,unknown,unknown +BDMAP_00004996,spleen_44,MSD-Spleen,unknown,unknown,unknown +BDMAP_00004997,amos_0403,AMOS,unknown,unknown,unknown +BDMAP_00004998,liver_31,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00004999,word_0004,WORD,unknown,unknown,unknown +BDMAP_00005000,volume-125,CT-ORG,unknown,unknown,unknown +BDMAP_00005001,colon_205,MSD-Colon,unknown,unknown,unknown +BDMAP_00005002,CPTAC-PDA-C3N-03426_0_5,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00005003,TCIAColon_0249_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00005004,Case_01007_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00005005,colon_089,MSD-Colon,unknown,unknown,unknown +BDMAP_00005006,case_00252,KiTS21,unknown,unknown,unhealthy +BDMAP_00005007,PETCT_631b419cef,autoPET,unknown,unknown,unknown +BDMAP_00005008,pancreas_433,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00005009,case_00430,KiTS23,unknown,unknown,unhealthy +BDMAP_00005010,PETCT_a25083ff81,autoPET,unknown,unknown,unknown +BDMAP_00005011,hepaticvessel_367,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00005012,colon_004,MSD-Colon,unknown,unknown,unknown +BDMAP_00005013,word_0141,WORD,unknown,unknown,unknown +BDMAP_00005014,hepaticvessel_162,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00005015,TCIAColon_0218_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00005016,colon_039,MSD-Colon,unknown,unknown,unknown +BDMAP_00005017,case_00435,KiTS23,unknown,unknown,unhealthy +BDMAP_00005018,PETCT_1ac497ed9d,autoPET,unknown,unknown,unknown +BDMAP_00005019,s0975,TotalSegmentator,unknown,unknown,unknown +BDMAP_00005020,pancreas_274,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00005021,NIH-LYMPH-ABD-010_0_0,NIH-Lymph,unknown,unknown,unknown +BDMAP_00005022,pancreas_138,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00005023,LDCT-L221_0_1,TCIA-LDCT,unknown,unknown,unknown +BDMAP_00005024,Case_00216_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00005025,s0408,TotalSegmentator,unknown,unknown,unknown +BDMAP_00005026,TCIAColon_0159_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00005027,PETCT_76ebd5c736,autoPET,unknown,unknown,unknown +BDMAP_00005028,word_0058,WORD,unknown,unknown,unknown +BDMAP_00005029,FLARE23_Ts_0069_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00005030,case_00053,KiTS19,unknown,unknown,unhealthy +BDMAP_00005031,PETCT_dec9ff6a91,autoPET,unknown,unknown,unknown +BDMAP_00005032,lung_036,MSD-Lung,unknown,unknown,unknown +BDMAP_00005033,CPTAC-UCEC-C3N-01008_1_7,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00005034,PETCT_62a78a061f,autoPET,unknown,unknown,unknown +BDMAP_00005035,amos_0197,AMOS,unknown,unknown,unknown +BDMAP_00005036,s0192,TotalSegmentator,unknown,unknown,unknown +BDMAP_00005037,pancreas_302,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00005038,TCGA-OV-61-2614_0_1,TCGA-OV,unknown,unknown,unknown +BDMAP_00005039,CPTAC-CCRCC-C3L-01465_0_6,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00005040,FLARE23_Ts_0034_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00005041,TCGA-BLCA-4Z-AA82_0_3,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00005042,CPTAC-UCEC-C3N-00866_3_2,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00005043,PETCT_1774857f8e,autoPET,unknown,unknown,unknown +BDMAP_00005044,word_0008,WORD,unknown,unknown,unknown +BDMAP_00005045,s0522,TotalSegmentator,unknown,unknown,unknown +BDMAP_00005046,TCGA-BLCA-DK-A1A6_0_3,TCGA-BLCA,unknown,unknown,unknown +BDMAP_00005047,colon_090,MSD-Colon,unknown,unknown,unknown +BDMAP_00005048,s0431,TotalSegmentator,unknown,unknown,unknown +BDMAP_00005049,word_0071,WORD,unknown,unknown,unknown +BDMAP_00005050,amos_0184,AMOS,unknown,unknown,unknown +BDMAP_00005051,PETCT_c852dfc0a5,autoPET,unknown,unknown,unknown +BDMAP_00005052,TCIAColon_0126_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00005053,amos_0242,AMOS,unknown,unknown,unknown +BDMAP_00005054,liver_189,MSD-Liver,unknown,unknown,unknown +BDMAP_00005055,CPTAC-CCRCC-C3L-01465_0_4,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00005056,PETCT_185da4c8b6,autoPET,unknown,unknown,unknown +BDMAP_00005057,hepaticvessel_318,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00005058,lung_073,MSD-Lung,unknown,unknown,unknown +BDMAP_00005059,FLARE23_Ts_0056_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00005060,FLARE23_Ts_0075_0000,FLARE23Val,unknown,unknown,unknown +BDMAP_00005061,PETCT_98cd91d44e,autoPET,unknown,unknown,unknown +BDMAP_00005062,s0812,TotalSegmentator,unknown,unknown,unknown +BDMAP_00005063,pancreas_264,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00005064,pancreas_295,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00005065,liver_50,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00005066,PETCT_59e6d1de22,autoPET,unknown,unknown,unknown +BDMAP_00005067,colon_108,MSD-Colon,unknown,unknown,unknown +BDMAP_00005068,hepaticvessel_179,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00005069,CPTAC-CCRCC-C3L-01958_0_9,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00005070,pancreas_217,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00005071,Case_00815_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00005072,s0120,TotalSegmentator,unknown,unknown,unknown +BDMAP_00005073,colon_161,MSD-Colon,unknown,unknown,unknown +BDMAP_00005074,pancreas_021,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00005075,pancreas_380,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00005076,TCIAColon_0204_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00005077,case_00207,KiTS21,unknown,unknown,unhealthy +BDMAP_00005078,pancreas_283,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00005079,Case_00249_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00005080,hepaticvessel_185,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00005081,case_00439,KiTS23,unknown,unknown,unhealthy +BDMAP_00005082,hepaticvessel_126,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00005083,liver_1,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00005084,hepaticvessel_149,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00005085,case_00146,KiTS21,unknown,unknown,unhealthy +BDMAP_00005086,Case_00753_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00005087,TCIAColon_0034_0_1,TCIAColon,unknown,unknown,unknown +BDMAP_00005088,PETCT_0e9a98ecda,autoPET,unknown,unknown,unknown +BDMAP_00005089,s1379,TotalSegmentator,unknown,unknown,unknown +BDMAP_00005090,hepaticvessel_444,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00005091,PETCT_f11f3d3692,autoPET,unknown,unknown,unknown +BDMAP_00005092,pancreas_025,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00005093,Case_00064_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00005094,PETCT_a37c4e231f,autoPET,unknown,unknown,unknown +BDMAP_00005095,PETCT_07b7e9abfc,autoPET,unknown,unknown,unknown +BDMAP_00005096,s0038,TotalSegmentator,unknown,unknown,unknown +BDMAP_00005097,liver_4,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00005098,s0764,TotalSegmentator,unknown,unknown,unknown +BDMAP_00005099,case_00433,KiTS23,unknown,unknown,unhealthy +BDMAP_00005100,PETCT_7ce196485f,autoPET,unknown,unknown,unknown +BDMAP_00005101,hepaticvessel_174,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00005102,PETCT_48d5467561,autoPET,unknown,unknown,unknown +BDMAP_00005103,hepaticvessel_073,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00005104,hepaticvessel_232,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00005105,case_00035,KiTS21,unknown,unknown,unhealthy +BDMAP_00005106,hepaticvessel_209,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00005107,PETCT_4d7b745a7b,autoPET,unknown,unknown,unknown +BDMAP_00005108,pancreas_278,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00005109,pancreas_163,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00005110,PANCREAS_0020,TCIA-Pancreas-CT,unknown,healthy,unknown +BDMAP_00005111,TCIAColon_0056_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00005112,hepaticvessel_336,MSD-HepaticVessel,unknown,unknown,unknown +BDMAP_00005113,case_00136,KiTS21,unknown,unknown,unhealthy +BDMAP_00005114,case_00023,KiTS21,unknown,unknown,unhealthy +BDMAP_00005115,s0728,TotalSegmentator,unknown,unknown,unknown +BDMAP_00005116,TCIAColon_0109_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00005117,s0797,TotalSegmentator,unknown,unknown,unknown +BDMAP_00005118,Case_00855_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00005119,liver_41,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00005120,case_00570,KiTS23,unknown,unknown,unhealthy +BDMAP_00005121,Case_00721_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00005122,amos_0172,AMOS,unknown,unknown,unknown +BDMAP_00005123,TCIAColon_0014_0_0,TCIAColon,unknown,unknown,unknown +BDMAP_00005124,hepaticvessel_352,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00005125,CPTAC-CCRCC-C3N-00492_0_4,TCIA-CPTAC-CCRCC,unknown,unknown,unknown +BDMAP_00005126,s0913,TotalSegmentator,unknown,unknown,unknown +BDMAP_00005127,Case_00673_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00005128,PETCT_bacc741e2c,autoPET,unknown,unknown,unknown +BDMAP_00005129,TCIAColon_0257_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00005130,liver_88,LiTS,unhealthy,unknown,unknown +BDMAP_00005131,s0578,TotalSegmentator,unknown,unknown,unknown +BDMAP_00005132,hepaticvessel_218,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00005133,TCIAColon_0035_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00005134,PETCT_c018b45a49,autoPET,unknown,unknown,unknown +BDMAP_00005135,CPTAC-UCEC-C3N-01171_0_8,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00005136,Case_00734_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00005137,PETCT_a57bd6b006,autoPET,unknown,unknown,unknown +BDMAP_00005138,TCIAColon_0085_0_2,TCIAColon,unknown,unknown,unknown +BDMAP_00005139,liver_15,MSD-Liver,unhealthy,unknown,unknown +BDMAP_00005140,pancreas_214,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00005141,pancreas_169,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00005142,img0065,BTCV,healthy,healthy,healthy +BDMAP_00005143,TCIAColon_0119_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00005144,word_0150,WORD,unknown,unknown,unknown +BDMAP_00005145,PETCT_dd68a71e0a,autoPET,unknown,unknown,unknown +BDMAP_00005146,hepaticvessel_166,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00005147,amos_0395,AMOS,unknown,unknown,unknown +BDMAP_00005148,case_00042,KiTS19,unknown,unknown,unhealthy +BDMAP_00005149,PETCT_ca89066e44,autoPET,unknown,unknown,unknown +BDMAP_00005150,case_00284,KiTS19,unknown,unknown,unhealthy +BDMAP_00005151,case_00474,KiTS23,unknown,unknown,unhealthy +BDMAP_00005152,case_00137,KiTS19,unknown,unknown,unhealthy +BDMAP_00005153,pancreas_314,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00005154,case_00244,KiTS21,unknown,unknown,unhealthy +BDMAP_00005155,pancreas_166,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00005156,PETCT_3f5a9f616f,autoPET,unknown,unknown,unknown +BDMAP_00005157,case_00290,KiTS21,unknown,unknown,unhealthy +BDMAP_00005158,TCIAColon_0059_0_4,TCIAColon,unknown,unknown,unknown +BDMAP_00005159,PETCT_44c04dcf65,autoPET,unknown,unknown,unknown +BDMAP_00005160,colon_144,MSD-Colon,unknown,unknown,unknown +BDMAP_00005161,hepaticvessel_308,MSD-Hepaticvessel,unknown,unknown,unknown +BDMAP_00005162,amos_0158,AMOS,unknown,unknown,unknown +BDMAP_00005163,pancreas_359,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00005164,s0190,TotalSegmentator,unknown,unknown,unknown +BDMAP_00005165,PETCT_36870de2f2,autoPET,unknown,unknown,unknown +BDMAP_00005166,case_00275,KiTS19,unknown,unknown,unhealthy +BDMAP_00005167,case_00422,KiTS23,unknown,unknown,unhealthy +BDMAP_00005168,liver_20,LiTS,unhealthy,unknown,unknown +BDMAP_00005169,pancreas_172,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00005170,colon_154,MSD-Colon,unknown,unknown,unknown +BDMAP_00005171,case_00067,KiTS19,unknown,unknown,unhealthy +BDMAP_00005172,PETCT_94986389d4,autoPET,unknown,unknown,unknown +BDMAP_00005173,Case_00867_0000,AbdomenCT-1K,unknown,unknown,unknown +BDMAP_00005174,case_00118,KiTS21,unknown,unknown,unhealthy +BDMAP_00005175,PETCT_caae8d63f0,autoPET,unknown,unknown,unknown +BDMAP_00005176,s0686,TotalSegmentator,unknown,unknown,unknown +BDMAP_00005177,TCIAColon_0169_0_3,TCIAColon,unknown,unknown,unknown +BDMAP_00005178,CPTAC-PDA-C3N-02998_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown +BDMAP_00005179,hepaticvessel_360,MSD-Hepatic,unknown,unknown,unknown +BDMAP_00005180,amos_0015,AMOS,unknown,unknown,unknown +BDMAP_00005181,s1370,TotalSegmentator,unknown,unknown,unknown +BDMAP_00005182,PETCT_bdd21f5590,autoPET,unknown,unknown,unknown +BDMAP_00005183,PETCT_7a8a062ed5,autoPET,unknown,unknown,unknown +BDMAP_00005184,word_0144,WORD,unknown,unknown,unknown +BDMAP_00005185,pancreas_048,MSD-Pancreas,unknown,unhealthy,unknown +BDMAP_00005186,liver_34,LiTS,healthy,unknown,unknown +BDMAP_00005187,pancreas_417,MSD-Pancreas,unknown,unknown,unknown +BDMAP_00005188,PETCT_11afab3485,autoPET,unknown,unknown,unknown +BDMAP_00005189,CPTAC-UCEC-C3N-00866_3_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown +BDMAP_00005190,colon_151,MSD-Colon,unknown,unknown,unknown +BDMAP_00005191,case_00110,KiTS21,unknown,unknown,unhealthy +BDMAP_00005192,case_00279,KiTS19,unknown,unknown,unhealthy +BDMAP_00005193,TCGA-STAD-A8DZ_0_1,TCGA-STAD,unknown,unknown,unknown +BDMAP_00005194,PETCT_642d6c78d6,autoPET,unknown,unknown,unknown +BDMAP_00005195,Case_00233_0000,AbdomenCT-1K,unknown,unknown,unknown diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/gen_json.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/gen_json.py new file mode 100644 index 0000000000000000000000000000000000000000..02cd2a0c632e0a488f9dd701350bc868f7150013 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/gen_json.py @@ -0,0 +1,64 @@ +# import os +# from batchgenerators.utilities.file_and_folder_operations import join, load_json, isfile, save_json, maybe_mkdir_p +# import nibabel as nib + +# val_liver = load_json('/storage/chenqi/cvpr25/annotated_exp/nnUNet_preprocessed/Dataset016_AbdomenAtlas2.0_base_liver/splits_final.json')[0]['val'] +# val_pancreas = load_json('/storage/chenqi/cvpr25/annotated_exp/nnUNet_preprocessed/Dataset017_AbdomenAtlas2.0_base_pancreas/splits_final.json')[0]['val'] +# val_kidney = load_json('/storage/chenqi/cvpr25/annotated_exp/nnUNet_preprocessed/Dataset018_AbdomenAtlas2.0_base_kidney/splits_final.json')[0]['val'] +# val_colon = load_json('/storage/chenqi/code/GEM-3D-ct/data_split/splits_final_colon_bdmap.json')[0]['val'] +# val_eso = load_json('/storage/chenqi/code/GEM-3D-ct/data_split/splits_final_eso_bdmap.json')[0]['val'] +# val_ute = load_json('/storage/chenqi/code/GEM-3D-ct/data_split/splits_final_uterus_bdmap.json')[0]['val'] + +# all_files = os.listdir('/storage/chenqi/data/our_data/nnUNet_preprocessed/Dataset104_AbdomenAtlas2.0_1102/gt_segmentations') +# all_files = [i.split('.')[0] for i in all_files] +# train_liver = list(set(all_files ) - set( val_liver) - set(val_pancreas) - set(val_kidney) - set(val_colon) - set(val_eso) - set(val_ute) ) +# # breakpoint() +# write_content = [] + +# valid_train_liver = [] +# for name in train_liver: +# data = nib.load(os.path.join('/storage/chenqi/data/our_data/nnUNet_preprocessed/Dataset104_AbdomenAtlas2.0_1102/gt_segmentations', name)).get_fdata() +# if (data.shape[0]==512 and data.shape[1]==512): +# valid_train_liver.append(name) + +# write_content.append({"train":train_liver, "val":val_liver}) + +# # breakpoint() + +# splits_file = 'splits_final.json' +# save_json(write_content, splits_file) + +import os +from batchgenerators.utilities.file_and_folder_operations import join, load_json, isfile, save_json, maybe_mkdir_p +import nibabel as nib +from multiprocessing import Pool, cpu_count + +def is_valid_file(name): + data = nib.load(os.path.join('/storage/chenqi/data/our_data/nnUNet_preprocessed/Dataset105_AbdomenAtlas2.0_1106/gt_segmentations', name+'.nii.gz')).get_fdata() + return name if (data.shape[0] == 512 and data.shape[1] == 512) else None + +def main(): + val_liver = load_json('/storage/chenqi/cvpr25/annotated_exp/nnUNet_preprocessed/Dataset016_AbdomenAtlas2.0_base_liver/splits_final.json')[0]['val'] + val_pancreas = load_json('/storage/chenqi/cvpr25/annotated_exp/nnUNet_preprocessed/Dataset017_AbdomenAtlas2.0_base_pancreas/splits_final.json')[0]['val'] + val_kidney = load_json('/storage/chenqi/cvpr25/annotated_exp/nnUNet_preprocessed/Dataset018_AbdomenAtlas2.0_base_kidney/splits_final.json')[0]['val'] + val_colon = load_json('/storage/chenqi/code/GEM-3D-ct/data_split/splits_final_colon_bdmap.json')[0]['val'] + val_eso = load_json('/storage/chenqi/code/GEM-3D-ct/data_split/splits_final_eso_bdmap.json')[0]['val'] + val_ute = load_json('/storage/chenqi/code/GEM-3D-ct/data_split/splits_final_uterus_bdmap.json')[0]['val'] + + all_files = os.listdir('/storage/chenqi/data/our_data/nnUNet_preprocessed/Dataset105_AbdomenAtlas2.0_1106/gt_segmentations') + all_files = [i.split('.')[0] for i in all_files] + train_liver = list(set(all_files) - set(val_liver) - set(val_pancreas) - set(val_kidney) - set(val_colon) - set(val_eso) - set(val_ute)) + + with Pool(cpu_count()) as pool: + valid_train_liver = pool.map(is_valid_file, train_liver) + + valid_train_liver = [name for name in valid_train_liver if name is not None] + + write_content = [{"train": valid_train_liver, "val": val_liver}] + + splits_file = 'splits_final.json' + save_json(write_content, splits_file) + +if __name__ == "__main__": + main() + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/kidney/splits_final.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/kidney/splits_final.json new file mode 100644 index 0000000000000000000000000000000000000000..02bf33920adba1f196e03e71feac0c0391ea012b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/kidney/splits_final.json @@ -0,0 +1,999 @@ +[ + { + "train": [ + "BDMAP_00000442", + "BDMAP_00003811", + "BDMAP_00002446", + "BDMAP_00003456", + "BDMAP_00003614", + "BDMAP_00004744", + "BDMAP_00000037", + "BDMAP_00004838", + "BDMAP_00003441", + "BDMAP_00002933", + "BDMAP_00002834", + "BDMAP_00003178", + "BDMAP_00001413", + "BDMAP_00000129", + "BDMAP_00003613", + "BDMAP_00000516", + "BDMAP_00000039", + "BDMAP_00000008", + "BDMAP_00003032", + "BDMAP_00001443", + "BDMAP_00004482", + "BDMAP_00003300", + "BDMAP_00004039", + "BDMAP_00002251", + "BDMAP_00000626", + "BDMAP_00001128", + "BDMAP_00004712", + "BDMAP_00000159", + "BDMAP_00003364", + "BDMAP_00002609", + "BDMAP_00002511", + "BDMAP_00003619", + "BDMAP_00000843", + "BDMAP_00003337", + "BDMAP_00003638", + "BDMAP_00003976", + "BDMAP_00001654", + "BDMAP_00002040", + "BDMAP_00001402", + "BDMAP_00003183", + "BDMAP_00003250", + "BDMAP_00001747", + "BDMAP_00003083", + "BDMAP_00004193", + "BDMAP_00001223", + "BDMAP_00002198", + "BDMAP_00004101", + "BDMAP_00002488", + "BDMAP_00001283", + "BDMAP_00005171", + "BDMAP_00002695", + "BDMAP_00003072", + "BDMAP_00003762", + "BDMAP_00000285", + "BDMAP_00003143", + "BDMAP_00003910", + "BDMAP_00002133", + "BDMAP_00002440", + "BDMAP_00001800", + "BDMAP_00003601", + "BDMAP_00003531", + "BDMAP_00002434", + "BDMAP_00001383", + "BDMAP_00001619", + "BDMAP_00004763", + "BDMAP_00002186", + "BDMAP_00001391", + "BDMAP_00000926", + "BDMAP_00005192", + "BDMAP_00002711", + "BDMAP_00004481", + "BDMAP_00004887", + "BDMAP_00004467", + "BDMAP_00001944", + "BDMAP_00003258", + "BDMAP_00005174", + "BDMAP_00001450", + "BDMAP_00004265", + "BDMAP_00002363", + "BDMAP_00001188", + "BDMAP_00002953", + "BDMAP_00003816", + "BDMAP_00004033", + "BDMAP_00001563", + "BDMAP_00004420", + "BDMAP_00004722", + "BDMAP_00002710", + "BDMAP_00002417", + "BDMAP_00001647", + "BDMAP_00001376", + "BDMAP_00004693", + "BDMAP_00000646", + "BDMAP_00003199", + "BDMAP_00000382", + "BDMAP_00004551", + "BDMAP_00002851", + "BDMAP_00002407", + "BDMAP_00003054", + "BDMAP_00004068", + "BDMAP_00002065", + "BDMAP_00001068", + "BDMAP_00000320", + "BDMAP_00004074", + "BDMAP_00001517", + "BDMAP_00000533", + "BDMAP_00000751", + "BDMAP_00000240", + "BDMAP_00000980", + "BDMAP_00000868", + "BDMAP_00001620", + "BDMAP_00002574", + "BDMAP_00000161", + "BDMAP_00004144", + "BDMAP_00000435", + "BDMAP_00003615", + "BDMAP_00004253", + "BDMAP_00001434", + "BDMAP_00002570", + "BDMAP_00000279", + "BDMAP_00004331", + "BDMAP_00004339", + "BDMAP_00002302", + "BDMAP_00003600", + "BDMAP_00000687", + "BDMAP_00003943", + "BDMAP_00000916", + "BDMAP_00000867", + "BDMAP_00000355", + "BDMAP_00001496", + "BDMAP_00003682", + "BDMAP_00000062", + "BDMAP_00004616", + "BDMAP_00003193", + "BDMAP_00001929", + "BDMAP_00001184", + "BDMAP_00003861", + "BDMAP_00000234", + "BDMAP_00001480", + "BDMAP_00001378", + "BDMAP_00001218", + "BDMAP_00000465", + "BDMAP_00004679", + "BDMAP_00003447", + "BDMAP_00000883", + "BDMAP_00000699", + "BDMAP_00002285", + "BDMAP_00000117", + "BDMAP_00000428", + "BDMAP_00002111", + "BDMAP_00001998", + "BDMAP_00004102", + "BDMAP_00000359", + "BDMAP_00000356", + "BDMAP_00003153", + "BDMAP_00001077", + "BDMAP_00001607", + "BDMAP_00003239", + "BDMAP_00000710", + "BDMAP_00004671", + "BDMAP_00004011", + "BDMAP_00005081", + "BDMAP_00002012", + "BDMAP_00003998", + "BDMAP_00004350", + "BDMAP_00001020", + "BDMAP_00000532", + "BDMAP_00000364", + "BDMAP_00001614", + "BDMAP_00001870", + "BDMAP_00001634", + "BDMAP_00000662", + "BDMAP_00000812", + "BDMAP_00002596", + "BDMAP_00003200", + "BDMAP_00000104", + "BDMAP_00003558", + "BDMAP_00001027", + "BDMAP_00003749", + "BDMAP_00000908", + "BDMAP_00002698", + "BDMAP_00001817", + "BDMAP_00000963", + "BDMAP_00000423", + "BDMAP_00004592", + "BDMAP_00002068", + "BDMAP_00005154", + "BDMAP_00004395", + "BDMAP_00000366", + "BDMAP_00001518", + "BDMAP_00000258", + "BDMAP_00002807", + "BDMAP_00003281", + "BDMAP_00003038", + "BDMAP_00002331", + "BDMAP_00002433", + "BDMAP_00001656", + "BDMAP_00000219", + "BDMAP_00003701", + "BDMAP_00003363", + "BDMAP_00003747", + "BDMAP_00000137", + "BDMAP_00002306", + "BDMAP_00005105", + "BDMAP_00003207", + "BDMAP_00002582", + "BDMAP_00000713", + "BDMAP_00000353", + "BDMAP_00004359", + "BDMAP_00002760", + "BDMAP_00005006", + "BDMAP_00003646", + "BDMAP_00001305", + "BDMAP_00004311", + "BDMAP_00001906", + "BDMAP_00002041", + "BDMAP_00002404", + "BDMAP_00004130", + "BDMAP_00002977", + "BDMAP_00003146", + "BDMAP_00003252", + "BDMAP_00002930", + "BDMAP_00002484", + "BDMAP_00001169", + "BDMAP_00003063", + "BDMAP_00000889", + "BDMAP_00000445", + "BDMAP_00003839", + "BDMAP_00002322", + "BDMAP_00002017", + "BDMAP_00004194", + "BDMAP_00001677", + "BDMAP_00003508", + "BDMAP_00003312", + "BDMAP_00004327", + "BDMAP_00001475", + "BDMAP_00003415", + "BDMAP_00002718", + "BDMAP_00004131", + "BDMAP_00004968", + "BDMAP_00002864", + "BDMAP_00000432", + "BDMAP_00000887", + "BDMAP_00004195", + "BDMAP_00004345", + "BDMAP_00002260", + "BDMAP_00002707", + "BDMAP_00003949", + "BDMAP_00001799", + "BDMAP_00004368", + "BDMAP_00003711", + "BDMAP_00001710", + "BDMAP_00004150", + "BDMAP_00004259", + "BDMAP_00004620", + "BDMAP_00001636", + "BDMAP_00003642", + "BDMAP_00000429", + "BDMAP_00004682", + "BDMAP_00001711", + "BDMAP_00002720", + "BDMAP_00000616", + "BDMAP_00002265", + "BDMAP_00002333", + "BDMAP_00003603", + "BDMAP_00003184", + "BDMAP_00005009", + "BDMAP_00003039", + "BDMAP_00004673", + "BDMAP_00003034", + "BDMAP_00001633", + "BDMAP_00000977", + "BDMAP_00001919", + "BDMAP_00002084", + "BDMAP_00001050", + "BDMAP_00004048", + "BDMAP_00001721", + "BDMAP_00001325", + "BDMAP_00001465", + "BDMAP_00003073", + "BDMAP_00000660", + "BDMAP_00003947", + "BDMAP_00001089", + "BDMAP_00003733", + "BDMAP_00004761", + "BDMAP_00000331", + "BDMAP_00000215", + "BDMAP_00005198", + "BDMAP_00002340", + "BDMAP_00000297", + "BDMAP_00002788", + "BDMAP_00000414", + "BDMAP_00003189", + "BDMAP_00002437", + "BDMAP_00003516", + "BDMAP_00000948", + "BDMAP_00003963", + "BDMAP_00002940", + "BDMAP_00001277", + "BDMAP_00001664", + "BDMAP_00004014", + "BDMAP_00001230", + "BDMAP_00004303", + "BDMAP_00002951", + "BDMAP_00004503", + "BDMAP_00004495", + "BDMAP_00008388", + "BDMAP_00004669", + "BDMAP_00001807", + "BDMAP_00001273", + "BDMAP_00000998", + "BDMAP_00003070", + "BDMAP_00003823", + "BDMAP_00003934", + "BDMAP_00000098", + "BDMAP_00004347", + "BDMAP_00002537", + "BDMAP_00001776", + "BDMAP_00004487", + "BDMAP_00003177", + "BDMAP_00005017", + "BDMAP_00004597", + "BDMAP_00002460", + "BDMAP_00001624", + "BDMAP_00002928", + "BDMAP_00004232", + "BDMAP_00004867", + "BDMAP_00000122", + "BDMAP_00005157", + "BDMAP_00003719", + "BDMAP_00001941", + "BDMAP_00003520", + "BDMAP_00002462", + "BDMAP_00003713", + "BDMAP_00001375", + "BDMAP_00005103", + "BDMAP_00000377", + "BDMAP_00000805", + "BDMAP_00003230", + "BDMAP_00000241", + "BDMAP_00003358", + "BDMAP_00002226", + "BDMAP_00002396", + "BDMAP_00002052", + "BDMAP_00000506", + "BDMAP_00000742", + "BDMAP_00003832", + "BDMAP_00000719", + "BDMAP_00005114", + "BDMAP_00004066", + "BDMAP_00003759", + "BDMAP_00004316", + "BDMAP_00001094", + "BDMAP_00000034", + "BDMAP_00004407", + "BDMAP_00003301", + "BDMAP_00000259", + "BDMAP_00002087", + "BDMAP_00003506", + "BDMAP_00002656", + "BDMAP_00002981", + "BDMAP_00000989", + "BDMAP_00002492", + "BDMAP_00000309", + "BDMAP_00000862", + "BDMAP_00005175", + "BDMAP_00001796", + "BDMAP_00003264", + "BDMAP_00000587", + "BDMAP_00003448", + "BDMAP_00002184", + "BDMAP_00001673", + "BDMAP_00004209", + "BDMAP_00000667", + "BDMAP_00001487", + "BDMAP_00005165", + "BDMAP_00002581", + "BDMAP_00004854", + "BDMAP_00005030", + "BDMAP_00001863", + "BDMAP_00003587", + "BDMAP_00001396", + "BDMAP_00000139", + "BDMAP_00003758", + "BDMAP_00001676", + "BDMAP_00000839", + "BDMAP_00002498", + "BDMAP_00000574", + "BDMAP_00001794", + "BDMAP_00003952", + "BDMAP_00001513", + "BDMAP_00003435", + "BDMAP_00004870", + "BDMAP_00004686", + "BDMAP_00001221", + "BDMAP_00003411", + "BDMAP_00001757", + "BDMAP_00002840", + "BDMAP_00000176", + "BDMAP_00004557", + "BDMAP_00003058", + "BDMAP_00003195", + "BDMAP_00002421", + "BDMAP_00000582", + "BDMAP_00004552", + "BDMAP_00002067", + "BDMAP_00005537", + "BDMAP_00003955", + "BDMAP_00000569", + "BDMAP_00001977", + "BDMAP_00001420", + "BDMAP_00002948", + "BDMAP_00003882", + "BDMAP_00000499", + "BDMAP_00003240", + "BDMAP_00002288", + "BDMAP_00005077", + "BDMAP_00002833", + "BDMAP_00004479", + "BDMAP_00002893", + "BDMAP_00002993", + "BDMAP_00004499", + "BDMAP_00000555", + "BDMAP_00002751", + "BDMAP_00003722", + "BDMAP_00001908", + "BDMAP_00002638", + "BDMAP_00000698", + "BDMAP_00003117", + "BDMAP_00002326", + "BDMAP_00002959", + "BDMAP_00000686", + "BDMAP_00004454", + "BDMAP_00001328", + "BDMAP_00002173", + "BDMAP_00001035", + "BDMAP_00001258", + "BDMAP_00002803", + "BDMAP_00002292", + "BDMAP_00003848", + "BDMAP_00004759", + "BDMAP_00002122", + "BDMAP_00000321", + "BDMAP_00001219", + "BDMAP_00001995", + "BDMAP_00000649", + "BDMAP_00005152", + "BDMAP_00001045", + "BDMAP_00002826", + "BDMAP_00001059", + "BDMAP_00001254", + "BDMAP_00000244", + "BDMAP_00004980", + "BDMAP_00002906", + "BDMAP_00002804", + "BDMAP_00001075", + "BDMAP_00000968", + "BDMAP_00002871", + "BDMAP_00001296", + "BDMAP_00001931", + "BDMAP_00003629", + "BDMAP_00004031", + "BDMAP_00004901", + "BDMAP_00000725", + "BDMAP_00003245", + "BDMAP_00000788", + "BDMAP_00001557", + "BDMAP_00001390", + "BDMAP_00004652", + "BDMAP_00001939", + "BDMAP_00000059", + "BDMAP_00001242", + "BDMAP_00004091", + "BDMAP_00004856", + "BDMAP_00000329", + "BDMAP_00003444", + "BDMAP_00003880", + "BDMAP_00001707", + "BDMAP_00004354", + "BDMAP_00001690", + "BDMAP_00001684", + "BDMAP_00002085", + "BDMAP_00003549", + "BDMAP_00000518", + "BDMAP_00001289", + "BDMAP_00004087", + "BDMAP_00001768", + "BDMAP_00000036", + "BDMAP_00004956", + "BDMAP_00003491", + "BDMAP_00004437", + "BDMAP_00004990", + "BDMAP_00003957", + "BDMAP_00003697", + "BDMAP_00003579", + "BDMAP_00000434", + "BDMAP_00004926", + "BDMAP_00002163", + "BDMAP_00001126", + "BDMAP_00004925", + "BDMAP_00000706", + "BDMAP_00000368", + "BDMAP_00001451", + "BDMAP_00002742", + "BDMAP_00001612", + "BDMAP_00005166", + "BDMAP_00002422", + "BDMAP_00000452", + "BDMAP_00003815", + "BDMAP_00004834", + "BDMAP_00000053", + "BDMAP_00001410", + "BDMAP_00000837", + "BDMAP_00003704", + "BDMAP_00002005", + "BDMAP_00001602", + "BDMAP_00004633", + "BDMAP_00002573", + "BDMAP_00000201", + "BDMAP_00002942", + "BDMAP_00001744", + "BDMAP_00002505", + "BDMAP_00000376", + "BDMAP_00003851", + "BDMAP_00001549", + "BDMAP_00003973", + "BDMAP_00002552", + "BDMAP_00002018", + "BDMAP_00004260", + "BDMAP_00003869", + "BDMAP_00004427", + "BDMAP_00002273", + "BDMAP_00004702", + "BDMAP_00003457", + "BDMAP_00004181", + "BDMAP_00003956", + "BDMAP_00001183", + "BDMAP_00001703", + "BDMAP_00000810", + "BDMAP_00002507", + "BDMAP_00003930", + "BDMAP_00004257", + "BDMAP_00001252", + "BDMAP_00003984", + "BDMAP_00004903", + "BDMAP_00002675", + "BDMAP_00002431", + "BDMAP_00004083", + "BDMAP_00005099", + "BDMAP_00004581", + "BDMAP_00005136", + "BDMAP_00003808", + "BDMAP_00000066", + "BDMAP_00002476", + "BDMAP_00005046", + "BDMAP_00003721", + "BDMAP_00003672", + "BDMAP_00000439", + "BDMAP_00004216", + "BDMAP_00004608", + "BDMAP_00004294", + "BDMAP_00003736", + "BDMAP_00004148", + "BDMAP_00001637", + "BDMAP_00003666", + "BDMAP_00003343", + "BDMAP_00004457", + "BDMAP_00002884", + "BDMAP_00004343", + "BDMAP_00004317", + "BDMAP_00004717", + "BDMAP_00000826", + "BDMAP_00004510", + "BDMAP_00002776", + "BDMAP_00003553", + "BDMAP_00000336", + "BDMAP_00001268", + "BDMAP_00000601", + "BDMAP_00003035", + "BDMAP_00000924", + "BDMAP_00002114", + "BDMAP_00003774", + "BDMAP_00001104", + "BDMAP_00001516", + "BDMAP_00002920", + "BDMAP_00002410", + "BDMAP_00008389", + "BDMAP_00000319", + "BDMAP_00003392", + "BDMAP_00003253", + "BDMAP_00002353", + "BDMAP_00005167", + "BDMAP_00002617", + "BDMAP_00002045", + "BDMAP_00002524", + "BDMAP_00002870", + "BDMAP_00003220", + "BDMAP_00001079", + "BDMAP_00008617", + "BDMAP_00002035", + "BDMAP_00002579", + "BDMAP_00003028", + "BDMAP_00000815", + "BDMAP_00002806", + "BDMAP_00002808", + "BDMAP_00002509", + "BDMAP_00000985", + "BDMAP_00002696", + "BDMAP_00003463", + "BDMAP_00000233", + "BDMAP_00000982", + "BDMAP_00004836", + "BDMAP_00001408", + "BDMAP_00001225", + "BDMAP_00000229", + "BDMAP_00001001", + "BDMAP_00003409", + "BDMAP_00002653", + "BDMAP_00000102", + "BDMAP_00001853", + "BDMAP_00002211", + "BDMAP_00001340", + "BDMAP_00005148", + "BDMAP_00002562", + "BDMAP_00004771", + "BDMAP_00003132", + "BDMAP_00000604", + "BDMAP_00003294", + "BDMAP_00003315", + "BDMAP_00002164", + "BDMAP_00001064", + "BDMAP_00004605", + "BDMAP_00004268", + "BDMAP_00001851", + "BDMAP_00001161", + "BDMAP_00004630", + "BDMAP_00000936", + "BDMAP_00002487", + "BDMAP_00004561", + "BDMAP_00004328", + "BDMAP_00005113", + "BDMAP_00003051", + "BDMAP_00000987", + "BDMAP_00005162", + "BDMAP_00005085", + "BDMAP_00003359", + "BDMAP_00005151", + "BDMAP_00002655", + "BDMAP_00003535", + "BDMAP_00001947", + "BDMAP_00002086", + "BDMAP_00004775", + "BDMAP_00002022", + "BDMAP_00003509", + "BDMAP_00000656", + "BDMAP_00001878", + "BDMAP_00001261", + "BDMAP_00004208", + "BDMAP_00003530", + "BDMAP_00001228", + "BDMAP_00000044", + "BDMAP_00005399", + "BDMAP_00000293", + "BDMAP_00003806", + "BDMAP_00000489", + "BDMAP_00000481", + "BDMAP_00002936", + "BDMAP_00000724", + "BDMAP_00000265", + "BDMAP_00002990", + "BDMAP_00003994", + "BDMAP_00000773", + "BDMAP_00002033", + "BDMAP_00004397", + "BDMAP_00001133", + "BDMAP_00004224", + "BDMAP_00004211", + "BDMAP_00001119", + "BDMAP_00004897", + "BDMAP_00000090", + "BDMAP_00002075", + "BDMAP_00000583", + "BDMAP_00001740", + "BDMAP_00000951", + "BDMAP_00000023", + "BDMAP_00000756", + "BDMAP_00002746", + "BDMAP_00000128", + "BDMAP_00002558", + "BDMAP_00001831", + "BDMAP_00004979", + "BDMAP_00003727", + "BDMAP_00001581", + "BDMAP_00001571", + "BDMAP_00004981", + "BDMAP_00004296", + "BDMAP_00000249", + "BDMAP_00000935", + "BDMAP_00000871", + "BDMAP_00001911", + "BDMAP_00002787", + "BDMAP_00002723", + "BDMAP_00000943", + "BDMAP_00001826", + "BDMAP_00002501", + "BDMAP_00001784", + "BDMAP_00003197", + "BDMAP_00002504", + "BDMAP_00001286", + "BDMAP_00003735", + "BDMAP_00002200", + "BDMAP_00003384", + "BDMAP_00001520", + "BDMAP_00000043", + "BDMAP_00004315", + "BDMAP_00000836", + "BDMAP_00003129", + "BDMAP_00000162", + "BDMAP_00003996", + "BDMAP_00001500", + "BDMAP_00000917", + "BDMAP_00003493", + "BDMAP_00002319", + "BDMAP_00001411", + "BDMAP_00004108", + "BDMAP_00002426", + "BDMAP_00004850", + "BDMAP_00005191", + "BDMAP_00001483", + "BDMAP_00002665", + "BDMAP_00001275", + "BDMAP_00001239", + "BDMAP_00004627", + "BDMAP_00004579", + "BDMAP_00004928", + "BDMAP_00003959", + "BDMAP_00001444", + "BDMAP_00003514", + "BDMAP_00001370", + "BDMAP_00001457", + "BDMAP_00000210", + "BDMAP_00003923", + "BDMAP_00001772", + "BDMAP_00002571", + "BDMAP_00002991", + "BDMAP_00000844", + "BDMAP_00001533", + "BDMAP_00002361", + "BDMAP_00003777", + "BDMAP_00001918", + "BDMAP_00001138", + "BDMAP_00001130", + "BDMAP_00001285", + "BDMAP_00003128", + "BDMAP_00002518", + "BDMAP_00002057", + "BDMAP_00004808", + "BDMAP_00002263", + "BDMAP_00003608", + "BDMAP_00003581", + "BDMAP_00000475", + "BDMAP_00004886", + "BDMAP_00000562", + "BDMAP_00004528", + "BDMAP_00004012", + "BDMAP_00004175", + "BDMAP_00003422", + "BDMAP_00001530", + "BDMAP_00001635", + "BDMAP_00005150", + "BDMAP_00003484", + "BDMAP_00003461", + "BDMAP_00004923", + "BDMAP_00003335", + "BDMAP_00001109", + "BDMAP_00001256", + "BDMAP_00004817", + "BDMAP_00000033", + "BDMAP_00003717", + "BDMAP_00003841", + "BDMAP_00002902", + "BDMAP_00001193", + "BDMAP_00000449", + "BDMAP_00001238", + "BDMAP_00001522", + "BDMAP_00002146", + "BDMAP_00004586", + "BDMAP_00003087", + "BDMAP_00002043", + "BDMAP_00000149", + "BDMAP_00001752", + "BDMAP_00000902", + "BDMAP_00003849", + "BDMAP_00003928", + "BDMAP_00004922", + "BDMAP_00000557", + "BDMAP_00002854", + "BDMAP_00003381", + "BDMAP_00000571", + "BDMAP_00001562", + "BDMAP_00004460", + "BDMAP_00004475", + "BDMAP_00002472", + "BDMAP_00001669", + "BDMAP_00002929", + "BDMAP_00001553", + "BDMAP_00003324", + "BDMAP_00003256", + "BDMAP_00003455", + "BDMAP_00003767", + "BDMAP_00001839", + "BDMAP_00001705", + "BDMAP_00000540", + "BDMAP_00001540", + "BDMAP_00002661", + "BDMAP_00002677", + "BDMAP_00001987", + "BDMAP_00000245", + "BDMAP_00003425", + "BDMAP_00003740", + "BDMAP_00004414", + "BDMAP_00002626", + "BDMAP_00004738", + "BDMAP_00001869", + "BDMAP_00004815", + "BDMAP_00000327", + "BDMAP_00004212", + "BDMAP_00003656", + "BDMAP_00001456", + "BDMAP_00001511", + "BDMAP_00004030", + "BDMAP_00000834", + "BDMAP_00001335", + "BDMAP_00004065", + "BDMAP_00000160", + "BDMAP_00001568", + "BDMAP_00001892", + "BDMAP_00002347", + "BDMAP_00003121", + "BDMAP_00003019", + "BDMAP_00003895", + "BDMAP_00004093", + "BDMAP_00002060", + "BDMAP_00003576", + "BDMAP_00003248", + "BDMAP_00001246", + "BDMAP_00001877", + "BDMAP_00004146", + "BDMAP_00004278", + "BDMAP_00003219", + "BDMAP_00004104", + "BDMAP_00004349", + "BDMAP_00001117", + "BDMAP_00002383", + "BDMAP_00005120", + "BDMAP_00001023", + "BDMAP_00003429", + "BDMAP_00003752", + "BDMAP_00001782", + "BDMAP_00002873", + "BDMAP_00000469", + "BDMAP_00001777", + "BDMAP_00000263", + "BDMAP_00003694", + "BDMAP_00002545", + "BDMAP_00002931", + "BDMAP_00002713", + "BDMAP_00004737", + "BDMAP_00001791", + "BDMAP_00001749", + "BDMAP_00004489", + "BDMAP_00000602", + "BDMAP_00001868", + "BDMAP_00004780", + "BDMAP_00002448", + "BDMAP_00001281", + "BDMAP_00002762", + "BDMAP_00004727", + "BDMAP_00003255", + "BDMAP_00004373", + "BDMAP_00003203", + "BDMAP_00000923", + "BDMAP_00001731", + "BDMAP_00003158", + "BDMAP_00002394", + "BDMAP_00002166", + "BDMAP_00002358", + "BDMAP_00000567", + "BDMAP_00002481", + "BDMAP_00002673", + "BDMAP_00001251", + "BDMAP_00001107", + "BDMAP_00002496", + "BDMAP_00004645", + "BDMAP_00002966", + "BDMAP_00002310", + "BDMAP_00001896", + "BDMAP_00001359", + "BDMAP_00002403", + "BDMAP_00003059", + "BDMAP_00004746", + "BDMAP_00002716", + "BDMAP_00003152", + "BDMAP_00001380", + "BDMAP_00000927", + "BDMAP_00001891", + "BDMAP_00001351", + "BDMAP_00004389", + "BDMAP_00003833", + "BDMAP_00003024", + "BDMAP_00001265", + "BDMAP_00000505", + "BDMAP_00002881", + "BDMAP_00000167", + "BDMAP_00003406", + "BDMAP_00003206", + "BDMAP_00002992", + "BDMAP_00002546", + "BDMAP_00002471", + "BDMAP_00003580", + "BDMAP_00002708", + "BDMAP_00002943", + "BDMAP_00001324", + "BDMAP_00001422", + "BDMAP_00001679", + "BDMAP_00000310", + "BDMAP_00006181", + "BDMAP_00001012", + "BDMAP_00001913", + "BDMAP_00003190", + "BDMAP_00003202", + "BDMAP_00004772", + "BDMAP_00001840", + "BDMAP_00001867", + "BDMAP_00003225", + "BDMAP_00002728", + "BDMAP_00002091", + "BDMAP_00000653", + "BDMAP_00003194", + "BDMAP_00004154", + "BDMAP_00001222", + "BDMAP_00003465", + "BDMAP_00004609", + "BDMAP_00002381", + "BDMAP_00004027", + "BDMAP_00002798", + "BDMAP_00001474", + "BDMAP_00003971", + "BDMAP_00002066", + "BDMAP_00002689", + "BDMAP_00001945", + "BDMAP_00003746", + "BDMAP_00002663", + "BDMAP_00002592", + "BDMAP_00001536", + "BDMAP_00002099", + "BDMAP_00002354", + "BDMAP_00002243", + "BDMAP_00000304", + "BDMAP_00001950", + "BDMAP_00004417", + "BDMAP_00004575", + "BDMAP_00001688", + "BDMAP_00004844", + "BDMAP_00004158", + "BDMAP_00000803", + "BDMAP_00002889", + "BDMAP_00003529" + ], + "val": [ + "BDMAP_00000487", + "BDMAP_00002631", + "BDMAP_00002744", + "BDMAP_00000833", + "BDMAP_00002648", + "BDMAP_00000375", + "BDMAP_00000608", + "BDMAP_00001352", + "BDMAP_00002775", + "BDMAP_00002474", + "BDMAP_00000458", + "BDMAP_00000511", + "BDMAP_00003150", + "BDMAP_00000794", + "BDMAP_00001255", + "BDMAP_00002242", + "BDMAP_00003205", + "BDMAP_00002181", + "BDMAP_00003486", + "BDMAP_00004250", + "BDMAP_00002453", + "BDMAP_00003164", + "BDMAP_00004578", + "BDMAP_00001735" + ] + } +] \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/liver/eval.txt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/liver/eval.txt new file mode 100644 index 0000000000000000000000000000000000000000..316828ac6df3bb23f044e2c9606b6bdd0e4a2150 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/liver/eval.txt @@ -0,0 +1,23 @@ +imagesTr/liver_26.nii.gz labelsTr/liver_26.nii.gz +imagesTr/liver_129.nii.gz labelsTr/liver_129.nii.gz +imagesTr/liver_29.nii.gz labelsTr/liver_29.nii.gz +imagesTr/liver_13.nii.gz labelsTr/liver_13.nii.gz +imagesTr/liver_66.nii.gz labelsTr/liver_66.nii.gz +imagesTr/liver_42.nii.gz labelsTr/liver_42.nii.gz +imagesTr/liver_88.nii.gz labelsTr/liver_88.nii.gz +imagesTr/liver_73.nii.gz labelsTr/liver_73.nii.gz +imagesTr/liver_58.nii.gz labelsTr/liver_58.nii.gz +imagesTr/liver_82.nii.gz labelsTr/liver_82.nii.gz +imagesTr/liver_98.nii.gz labelsTr/liver_98.nii.gz +imagesTr/liver_76.nii.gz labelsTr/liver_76.nii.gz +imagesTr/liver_71.nii.gz labelsTr/liver_71.nii.gz +imagesTr/liver_112.nii.gz labelsTr/liver_112.nii.gz +imagesTr/liver_128.nii.gz labelsTr/liver_128.nii.gz +imagesTr/liver_10.nii.gz labelsTr/liver_10.nii.gz +imagesTr/liver_22.nii.gz labelsTr/liver_22.nii.gz +imagesTr/liver_19.nii.gz labelsTr/liver_19.nii.gz +imagesTr/liver_15.nii.gz labelsTr/liver_15.nii.gz +imagesTr/liver_97.nii.gz labelsTr/liver_97.nii.gz +imagesTr/liver_61.nii.gz labelsTr/liver_61.nii.gz +imagesTr/liver_31.nii.gz labelsTr/liver_31.nii.gz +imagesTr/liver_86.nii.gz labelsTr/liver_86.nii.gz diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/liver/train.txt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/liver/train.txt new file mode 100644 index 0000000000000000000000000000000000000000..78e54c074e7dc999e652658019ee6e9a5559276e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/liver/train.txt @@ -0,0 +1,95 @@ +imagesTr/liver_95.nii.gz labelsTr/liver_95.nii.gz +imagesTr/liver_120.nii.gz labelsTr/liver_120.nii.gz +imagesTr/liver_12.nii.gz labelsTr/liver_12.nii.gz +imagesTr/liver_100.nii.gz labelsTr/liver_100.nii.gz +imagesTr/liver_50.nii.gz labelsTr/liver_50.nii.gz +imagesTr/liver_111.nii.gz labelsTr/liver_111.nii.gz +imagesTr/liver_110.nii.gz labelsTr/liver_110.nii.gz +imagesTr/liver_108.nii.gz labelsTr/liver_108.nii.gz +imagesTr/liver_72.nii.gz labelsTr/liver_72.nii.gz +imagesTr/liver_2.nii.gz labelsTr/liver_2.nii.gz +imagesTr/liver_65.nii.gz labelsTr/liver_65.nii.gz +imagesTr/liver_96.nii.gz labelsTr/liver_96.nii.gz +imagesTr/liver_81.nii.gz labelsTr/liver_81.nii.gz +imagesTr/liver_11.nii.gz labelsTr/liver_11.nii.gz +imagesTr/liver_109.nii.gz labelsTr/liver_109.nii.gz +imagesTr/liver_24.nii.gz labelsTr/liver_24.nii.gz +imagesTr/liver_92.nii.gz labelsTr/liver_92.nii.gz +imagesTr/liver_124.nii.gz labelsTr/liver_124.nii.gz +imagesTr/liver_103.nii.gz labelsTr/liver_103.nii.gz +imagesTr/liver_57.nii.gz labelsTr/liver_57.nii.gz +imagesTr/liver_63.nii.gz labelsTr/liver_63.nii.gz +imagesTr/liver_20.nii.gz labelsTr/liver_20.nii.gz +imagesTr/liver_51.nii.gz labelsTr/liver_51.nii.gz +imagesTr/liver_43.nii.gz labelsTr/liver_43.nii.gz +imagesTr/liver_90.nii.gz labelsTr/liver_90.nii.gz +imagesTr/liver_130.nii.gz labelsTr/liver_130.nii.gz +imagesTr/liver_125.nii.gz labelsTr/liver_125.nii.gz +imagesTr/liver_28.nii.gz labelsTr/liver_28.nii.gz +imagesTr/liver_53.nii.gz labelsTr/liver_53.nii.gz +imagesTr/liver_48.nii.gz labelsTr/liver_48.nii.gz +imagesTr/liver_69.nii.gz labelsTr/liver_69.nii.gz +imagesTr/liver_113.nii.gz labelsTr/liver_113.nii.gz +imagesTr/liver_118.nii.gz labelsTr/liver_118.nii.gz +imagesTr/liver_84.nii.gz labelsTr/liver_84.nii.gz +imagesTr/liver_60.nii.gz labelsTr/liver_60.nii.gz +imagesTr/liver_121.nii.gz labelsTr/liver_121.nii.gz +imagesTr/liver_18.nii.gz labelsTr/liver_18.nii.gz +imagesTr/liver_6.nii.gz labelsTr/liver_6.nii.gz +imagesTr/liver_30.nii.gz labelsTr/liver_30.nii.gz +imagesTr/liver_0.nii.gz labelsTr/liver_0.nii.gz +imagesTr/liver_107.nii.gz labelsTr/liver_107.nii.gz +imagesTr/liver_7.nii.gz labelsTr/liver_7.nii.gz +imagesTr/liver_27.nii.gz labelsTr/liver_27.nii.gz +imagesTr/liver_25.nii.gz labelsTr/liver_25.nii.gz +imagesTr/liver_5.nii.gz labelsTr/liver_5.nii.gz +imagesTr/liver_49.nii.gz labelsTr/liver_49.nii.gz +imagesTr/liver_33.nii.gz labelsTr/liver_33.nii.gz +imagesTr/liver_21.nii.gz labelsTr/liver_21.nii.gz +imagesTr/liver_94.nii.gz labelsTr/liver_94.nii.gz +imagesTr/liver_23.nii.gz labelsTr/liver_23.nii.gz +imagesTr/liver_17.nii.gz labelsTr/liver_17.nii.gz +imagesTr/liver_44.nii.gz labelsTr/liver_44.nii.gz +imagesTr/liver_45.nii.gz labelsTr/liver_45.nii.gz +imagesTr/liver_39.nii.gz labelsTr/liver_39.nii.gz +imagesTr/liver_56.nii.gz labelsTr/liver_56.nii.gz +imagesTr/liver_75.nii.gz labelsTr/liver_75.nii.gz +imagesTr/liver_122.nii.gz labelsTr/liver_122.nii.gz +imagesTr/liver_9.nii.gz labelsTr/liver_9.nii.gz +imagesTr/liver_35.nii.gz labelsTr/liver_35.nii.gz +imagesTr/liver_16.nii.gz labelsTr/liver_16.nii.gz +imagesTr/liver_36.nii.gz labelsTr/liver_36.nii.gz +imagesTr/liver_85.nii.gz labelsTr/liver_85.nii.gz +imagesTr/liver_117.nii.gz labelsTr/liver_117.nii.gz +imagesTr/liver_78.nii.gz labelsTr/liver_78.nii.gz +imagesTr/liver_14.nii.gz labelsTr/liver_14.nii.gz +imagesTr/liver_59.nii.gz labelsTr/liver_59.nii.gz +imagesTr/liver_4.nii.gz labelsTr/liver_4.nii.gz +imagesTr/liver_123.nii.gz labelsTr/liver_123.nii.gz +imagesTr/liver_37.nii.gz labelsTr/liver_37.nii.gz +imagesTr/liver_55.nii.gz labelsTr/liver_55.nii.gz +imagesTr/liver_40.nii.gz labelsTr/liver_40.nii.gz +imagesTr/liver_74.nii.gz labelsTr/liver_74.nii.gz +imagesTr/liver_101.nii.gz labelsTr/liver_101.nii.gz +imagesTr/liver_67.nii.gz labelsTr/liver_67.nii.gz +imagesTr/liver_68.nii.gz labelsTr/liver_68.nii.gz +imagesTr/liver_127.nii.gz labelsTr/liver_127.nii.gz +imagesTr/liver_102.nii.gz labelsTr/liver_102.nii.gz +imagesTr/liver_116.nii.gz labelsTr/liver_116.nii.gz +imagesTr/liver_54.nii.gz labelsTr/liver_54.nii.gz +imagesTr/liver_62.nii.gz labelsTr/liver_62.nii.gz +imagesTr/liver_70.nii.gz labelsTr/liver_70.nii.gz +imagesTr/liver_104.nii.gz labelsTr/liver_104.nii.gz +imagesTr/liver_80.nii.gz labelsTr/liver_80.nii.gz +imagesTr/liver_1.nii.gz labelsTr/liver_1.nii.gz +imagesTr/liver_8.nii.gz labelsTr/liver_8.nii.gz +imagesTr/liver_52.nii.gz labelsTr/liver_52.nii.gz +imagesTr/liver_99.nii.gz labelsTr/liver_99.nii.gz +imagesTr/liver_3.nii.gz labelsTr/liver_3.nii.gz +imagesTr/liver_77.nii.gz labelsTr/liver_77.nii.gz +imagesTr/liver_64.nii.gz labelsTr/liver_64.nii.gz +imagesTr/liver_93.nii.gz labelsTr/liver_93.nii.gz +imagesTr/liver_83.nii.gz labelsTr/liver_83.nii.gz +imagesTr/liver_46.nii.gz labelsTr/liver_46.nii.gz +imagesTr/liver_79.nii.gz labelsTr/liver_79.nii.gz +imagesTr/liver_126.nii.gz labelsTr/liver_126.nii.gz diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/pancreas/splits_final.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/pancreas/splits_final.json new file mode 100644 index 0000000000000000000000000000000000000000..b64da3ca97c3a47ccd27c2b1a38a7365f495dfce --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/pancreas/splits_final.json @@ -0,0 +1,320 @@ +[ + { + "train": [ + "BDMAP_00004015", + "BDMAP_00000438", + "BDMAP_00002815", + "BDMAP_00002855", + "BDMAP_00000714", + "BDMAP_00003438", + "BDMAP_00001214", + "BDMAP_00005444", + "BDMAP_00001584", + "BDMAP_00002232", + "BDMAP_00002332", + "BDMAP_00003525", + "BDMAP_00003592", + "BDMAP_00000859", + "BDMAP_00000338", + "BDMAP_00002947", + "BDMAP_00000732", + "BDMAP_00002244", + "BDMAP_00004297", + "BDMAP_00004447", + "BDMAP_00002313", + "BDMAP_00004672", + "BDMAP_00004198", + "BDMAP_00008525", + "BDMAP_00001704", + "BDMAP_00001504", + "BDMAP_00000589", + "BDMAP_00004231", + "BDMAP_00005078", + "BDMAP_00003900", + "BDMAP_00003508", + "BDMAP_00005169", + "BDMAP_00008526", + "BDMAP_00002362", + "BDMAP_00004964", + "BDMAP_00001565", + "BDMAP_00002295", + "BDMAP_00003812", + "BDMAP_00003254", + "BDMAP_00009367", + "BDMAP_00000324", + "BDMAP_00001096", + "BDMAP_00000696", + "BDMAP_00000972", + "BDMAP_00002216", + "BDMAP_00000087", + "BDMAP_00000940", + "BDMAP_00004106", + "BDMAP_00002126", + "BDMAP_00001288", + "BDMAP_00003479", + "BDMAP_00000416", + "BDMAP_00000192", + "BDMAP_00002076", + "BDMAP_00002387", + "BDMAP_00002411", + "BDMAP_00001441", + "BDMAP_00004796", + "BDMAP_00004804", + "BDMAP_00001836", + "BDMAP_00001701", + "BDMAP_00006623", + "BDMAP_00005185", + "BDMAP_00001419", + "BDMAP_00003133", + "BDMAP_00003781", + "BDMAP_00004641", + "BDMAP_00002896", + "BDMAP_00000093", + "BDMAP_00000614", + "BDMAP_00000447", + "BDMAP_00001912", + "BDMAP_00001931", + "BDMAP_00002233", + "BDMAP_00001921", + "BDMAP_00007200", + "BDMAP_00001408", + "BDMAP_00005022", + "BDMAP_00000052", + "BDMAP_00004398", + "BDMAP_00002688", + "BDMAP_00005141", + "BDMAP_00002278", + "BDMAP_00001521", + "BDMAP_00007398", + "BDMAP_00004880", + "BDMAP_00003889", + "BDMAP_00000771", + "BDMAP_00003451", + "BDMAP_00002237", + "BDMAP_00004982", + "BDMAP_00000618", + "BDMAP_00000956", + "BDMAP_00001862", + "BDMAP_00002188", + "BDMAP_00003822", + "BDMAP_00002460", + "BDMAP_00002793", + "BDMAP_00002120", + "BDMAP_00003443", + "BDMAP_00003551", + "BDMAP_00004077", + "BDMAP_00002475", + "BDMAP_00000236", + "BDMAP_00004229", + "BDMAP_00002945", + "BDMAP_00003824", + "BDMAP_00004549", + "BDMAP_00002523", + "BDMAP_00006534", + "BDMAP_00004735", + "BDMAP_00003934", + "BDMAP_00004359", + "BDMAP_00000541", + "BDMAP_00003326", + "BDMAP_00004511", + "BDMAP_00001590", + "BDMAP_00001823", + "BDMAP_00000470", + "BDMAP_00001828", + "BDMAP_00003017", + "BDMAP_00002227", + "BDMAP_00003347", + "BDMAP_00002402", + "BDMAP_00004097", + "BDMAP_00003853", + "BDMAP_00003543", + "BDMAP_00003744", + "BDMAP_00003400", + "BDMAP_00005075", + "BDMAP_00002616", + "BDMAP_00003244", + "BDMAP_00003633", + "BDMAP_00002021", + "BDMAP_00004773", + "BDMAP_00000037", + "BDMAP_00002309", + "BDMAP_00003356", + "BDMAP_00000774", + "BDMAP_00005064", + "BDMAP_00003385", + "BDMAP_00000993", + "BDMAP_00005092", + "BDMAP_00000715", + "BDMAP_00004262", + "BDMAP_00004719", + "BDMAP_00003168", + "BDMAP_00002250", + "BDMAP_00004264", + "BDMAP_00001632", + "BDMAP_00000388", + "BDMAP_00004286", + "BDMAP_00000154", + "BDMAP_00001461", + "BDMAP_00000683", + "BDMAP_00000309", + "BDMAP_00001125", + "BDMAP_00001898", + "BDMAP_00001845", + "BDMAP_00001464", + "BDMAP_00003658", + "BDMAP_00002844", + "BDMAP_00003427", + "BDMAP_00004636", + "BDMAP_00004129", + "BDMAP_00001842", + "BDMAP_00001646", + "BDMAP_00006043", + "BDMAP_00004288", + "BDMAP_00003631", + "BDMAP_00003440", + "BDMAP_00004550", + "BDMAP_00005070", + "BDMAP_00004829", + "BDMAP_00000225", + "BDMAP_00004060", + "BDMAP_00001092", + "BDMAP_00002619", + "BDMAP_00000701", + "BDMAP_00001247", + "BDMAP_00002304", + "BDMAP_00008128", + "BDMAP_00003376", + "BDMAP_00000431", + "BDMAP_00004546", + "BDMAP_00005898", + "BDMAP_00003685", + "BDMAP_00004992", + "BDMAP_00004954", + "BDMAP_00004494", + "BDMAP_00001617", + "BDMAP_00003886", + "BDMAP_00003776", + "BDMAP_00000692", + "BDMAP_00003840", + "BDMAP_00001414", + "BDMAP_00003277", + "BDMAP_00004969", + "BDMAP_00000623", + "BDMAP_00004847", + "BDMAP_00003590", + "BDMAP_00001712", + "BDMAP_00004895", + "BDMAP_00004651", + "BDMAP_00001605", + "BDMAP_00004183", + "BDMAP_00003918", + "BDMAP_00002029", + "BDMAP_00001597", + "BDMAP_00003612", + "BDMAP_00003138", + "BDMAP_00000558", + "BDMAP_00001905", + "BDMAP_00001736", + "BDMAP_00005063", + "BDMAP_00000391", + "BDMAP_00001440", + "BDMAP_00003613", + "BDMAP_00004841", + "BDMAP_00004917", + "BDMAP_00003329", + "BDMAP_00001331", + "BDMAP_00002737", + "BDMAP_00000197", + "BDMAP_00006472", + "BDMAP_00003650", + "BDMAP_00003260", + "BDMAP_00001564", + "BDMAP_00003396", + "BDMAP_00001057", + "BDMAP_00000462", + "BDMAP_00003657", + "BDMAP_00002580", + "BDMAP_00004541", + "BDMAP_00000809", + "BDMAP_00004023", + "BDMAP_00001637", + "BDMAP_00004885", + "BDMAP_00004184", + "BDMAP_00000855", + "BDMAP_00005108", + "BDMAP_00003769", + "BDMAP_00003215", + "BDMAP_00003036", + "BDMAP_00002171", + "BDMAP_00002298", + "BDMAP_00001040", + "BDMAP_00001368", + "BDMAP_00002758", + "BDMAP_00000744", + "BDMAP_00006533", + "BDMAP_00000542", + "BDMAP_00004843", + "BDMAP_00001804", + "BDMAP_00001806", + "BDMAP_00000243", + "BDMAP_00009738", + "BDMAP_00000882", + "BDMAP_00001175", + "BDMAP_00005037", + "BDMAP_00003319", + "BDMAP_00003598", + "BDMAP_00002829", + "BDMAP_00001754", + "BDMAP_00001476", + "BDMAP_00000411", + "BDMAP_00004514", + "BDMAP_00001545", + "BDMAP_00004293", + "BDMAP_00004927", + "BDMAP_00001618", + "BDMAP_00002690", + "BDMAP_00003130", + "BDMAP_00000427", + "BDMAP_00003141", + "BDMAP_00003483", + "BDMAP_00005020", + "BDMAP_00001067", + "BDMAP_00001523", + "BDMAP_00005140", + "BDMAP_00002863", + "BDMAP_00001649", + "BDMAP_00003683", + "BDMAP_00002328", + "BDMAP_00004295", + "BDMAP_00000676", + "BDMAP_00001064", + "BDMAP_00004793" + ], + "val": [ + "BDMAP_00000332", + "BDMAP_00004858", + "BDMAP_00005155", + "BDMAP_00001205", + "BDMAP_00004770", + "BDMAP_00001361", + "BDMAP_00002944", + "BDMAP_00003961", + "BDMAP_00000430", + "BDMAP_00000679", + "BDMAP_00003809", + "BDMAP_00004115", + "BDMAP_00003367", + "BDMAP_00002899", + "BDMAP_00003771", + "BDMAP_00003502", + "BDMAP_00001628", + "BDMAP_00003884", + "BDMAP_00005074", + "BDMAP_00003114", + "BDMAP_00004741", + "BDMAP_00001746", + "BDMAP_00002603", + "BDMAP_00004128" + ] + } +] \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final2.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final2.json new file mode 100644 index 0000000000000000000000000000000000000000..edfc56c1528307820a81411ebf43b8392f23af6e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final2.json @@ -0,0 +1,1255 @@ +[ + { + "train": [ + "BDMAP_00000008", + "BDMAP_00000023", + "BDMAP_00000030", + "BDMAP_00000034", + "BDMAP_00000036", + "BDMAP_00000039", + "BDMAP_00000043", + "BDMAP_00000044", + "BDMAP_00000052", + "BDMAP_00000059", + "BDMAP_00000062", + "BDMAP_00000066", + "BDMAP_00000069", + "BDMAP_00000084", + "BDMAP_00000087", + "BDMAP_00000090", + "BDMAP_00000091", + "BDMAP_00000093", + "BDMAP_00000102", + "BDMAP_00000104", + "BDMAP_00000113", + "BDMAP_00000117", + "BDMAP_00000122", + "BDMAP_00000128", + "BDMAP_00000129", + "BDMAP_00000132", + "BDMAP_00000137", + "BDMAP_00000138", + "BDMAP_00000139", + "BDMAP_00000140", + "BDMAP_00000149", + "BDMAP_00000152", + "BDMAP_00000154", + "BDMAP_00000159", + "BDMAP_00000161", + "BDMAP_00000162", + "BDMAP_00000167", + "BDMAP_00000176", + "BDMAP_00000190", + "BDMAP_00000192", + "BDMAP_00000197", + "BDMAP_00000205", + "BDMAP_00000219", + "BDMAP_00000225", + "BDMAP_00000229", + "BDMAP_00000232", + "BDMAP_00000233", + "BDMAP_00000236", + "BDMAP_00000240", + "BDMAP_00000241", + "BDMAP_00000243", + "BDMAP_00000244", + "BDMAP_00000245", + "BDMAP_00000247", + "BDMAP_00000249", + "BDMAP_00000259", + "BDMAP_00000263", + "BDMAP_00000264", + "BDMAP_00000273", + "BDMAP_00000279", + "BDMAP_00000285", + "BDMAP_00000297", + "BDMAP_00000304", + "BDMAP_00000319", + "BDMAP_00000320", + "BDMAP_00000321", + "BDMAP_00000324", + "BDMAP_00000329", + "BDMAP_00000331", + "BDMAP_00000336", + "BDMAP_00000338", + "BDMAP_00000345", + "BDMAP_00000347", + "BDMAP_00000353", + "BDMAP_00000355", + "BDMAP_00000356", + "BDMAP_00000359", + "BDMAP_00000362", + "BDMAP_00000364", + "BDMAP_00000366", + "BDMAP_00000368", + "BDMAP_00000373", + "BDMAP_00000388", + "BDMAP_00000400", + "BDMAP_00000411", + "BDMAP_00000413", + "BDMAP_00000414", + "BDMAP_00000416", + "BDMAP_00000427", + "BDMAP_00000428", + "BDMAP_00000429", + "BDMAP_00000431", + "BDMAP_00000432", + "BDMAP_00000434", + "BDMAP_00000435", + "BDMAP_00000437", + "BDMAP_00000438", + "BDMAP_00000439", + "BDMAP_00000447", + "BDMAP_00000449", + "BDMAP_00000452", + "BDMAP_00000462", + "BDMAP_00000465", + "BDMAP_00000469", + "BDMAP_00000470", + "BDMAP_00000480", + "BDMAP_00000481", + "BDMAP_00000516", + "BDMAP_00000518", + "BDMAP_00000532", + "BDMAP_00000540", + "BDMAP_00000541", + "BDMAP_00000542", + "BDMAP_00000547", + "BDMAP_00000552", + "BDMAP_00000555", + "BDMAP_00000558", + "BDMAP_00000562", + "BDMAP_00000567", + "BDMAP_00000568", + "BDMAP_00000569", + "BDMAP_00000571", + "BDMAP_00000572", + "BDMAP_00000574", + "BDMAP_00000582", + "BDMAP_00000587", + "BDMAP_00000589", + "BDMAP_00000604", + "BDMAP_00000607", + "BDMAP_00000614", + "BDMAP_00000616", + "BDMAP_00000618", + "BDMAP_00000623", + "BDMAP_00000626", + "BDMAP_00000642", + "BDMAP_00000646", + "BDMAP_00000649", + "BDMAP_00000653", + "BDMAP_00000656", + "BDMAP_00000660", + "BDMAP_00000662", + "BDMAP_00000667", + "BDMAP_00000671", + "BDMAP_00000676", + "BDMAP_00000683", + "BDMAP_00000687", + "BDMAP_00000690", + "BDMAP_00000692", + "BDMAP_00000696", + "BDMAP_00000698", + "BDMAP_00000701", + "BDMAP_00000706", + "BDMAP_00000709", + "BDMAP_00000710", + "BDMAP_00000713", + "BDMAP_00000714", + "BDMAP_00000715", + "BDMAP_00000716", + "BDMAP_00000724", + "BDMAP_00000725", + "BDMAP_00000751", + "BDMAP_00000756", + "BDMAP_00000771", + "BDMAP_00000773", + "BDMAP_00000774", + "BDMAP_00000778", + "BDMAP_00000788", + "BDMAP_00000805", + "BDMAP_00000809", + "BDMAP_00000810", + "BDMAP_00000812", + "BDMAP_00000826", + "BDMAP_00000827", + "BDMAP_00000828", + "BDMAP_00000834", + "BDMAP_00000836", + "BDMAP_00000837", + "BDMAP_00000839", + "BDMAP_00000843", + "BDMAP_00000851", + "BDMAP_00000855", + "BDMAP_00000859", + "BDMAP_00000867", + "BDMAP_00000871", + "BDMAP_00000873", + "BDMAP_00000874", + "BDMAP_00000881", + "BDMAP_00000882", + "BDMAP_00000883", + "BDMAP_00000887", + "BDMAP_00000889", + "BDMAP_00000902", + "BDMAP_00000907", + "BDMAP_00000913", + "BDMAP_00000916", + "BDMAP_00000918", + "BDMAP_00000923", + "BDMAP_00000926", + "BDMAP_00000935", + "BDMAP_00000936", + "BDMAP_00000939", + "BDMAP_00000940", + "BDMAP_00000941", + "BDMAP_00000942", + "BDMAP_00000948", + "BDMAP_00000956", + "BDMAP_00000965", + "BDMAP_00000968", + "BDMAP_00000971", + "BDMAP_00000972", + "BDMAP_00000977", + "BDMAP_00000980", + "BDMAP_00000982", + "BDMAP_00000987", + "BDMAP_00000989", + "BDMAP_00000993", + "BDMAP_00000998", + "BDMAP_00001001", + "BDMAP_00001010", + "BDMAP_00001015", + "BDMAP_00001020", + "BDMAP_00001024", + "BDMAP_00001025", + "BDMAP_00001027", + "BDMAP_00001035", + "BDMAP_00001040", + "BDMAP_00001045", + "BDMAP_00001050", + "BDMAP_00001055", + "BDMAP_00001057", + "BDMAP_00001059", + "BDMAP_00001067", + "BDMAP_00001068", + "BDMAP_00001075", + "BDMAP_00001077", + "BDMAP_00001078", + "BDMAP_00001089", + "BDMAP_00001092", + "BDMAP_00001093", + "BDMAP_00001095", + "BDMAP_00001096", + "BDMAP_00001102", + "BDMAP_00001104", + "BDMAP_00001107", + "BDMAP_00001109", + "BDMAP_00001114", + "BDMAP_00001119", + "BDMAP_00001122", + "BDMAP_00001125", + "BDMAP_00001126", + "BDMAP_00001128", + "BDMAP_00001130", + "BDMAP_00001138", + "BDMAP_00001161", + "BDMAP_00001169", + "BDMAP_00001171", + "BDMAP_00001175", + "BDMAP_00001183", + "BDMAP_00001184", + "BDMAP_00001185", + "BDMAP_00001200", + "BDMAP_00001209", + "BDMAP_00001212", + "BDMAP_00001214", + "BDMAP_00001215", + "BDMAP_00001218", + "BDMAP_00001223", + "BDMAP_00001225", + "BDMAP_00001230", + "BDMAP_00001236", + "BDMAP_00001237", + "BDMAP_00001238", + "BDMAP_00001242", + "BDMAP_00001246", + "BDMAP_00001247", + "BDMAP_00001251", + "BDMAP_00001256", + "BDMAP_00001258", + "BDMAP_00001261", + "BDMAP_00001265", + "BDMAP_00001268", + "BDMAP_00001270", + "BDMAP_00001273", + "BDMAP_00001275", + "BDMAP_00001281", + "BDMAP_00001283", + "BDMAP_00001286", + "BDMAP_00001288", + "BDMAP_00001289", + "BDMAP_00001296", + "BDMAP_00001305", + "BDMAP_00001316", + "BDMAP_00001324", + "BDMAP_00001325", + "BDMAP_00001331", + "BDMAP_00001333", + "BDMAP_00001343", + "BDMAP_00001359", + "BDMAP_00001362", + "BDMAP_00001368", + "BDMAP_00001370", + "BDMAP_00001376", + "BDMAP_00001379", + "BDMAP_00001380", + "BDMAP_00001383", + "BDMAP_00001396", + "BDMAP_00001397", + "BDMAP_00001410", + "BDMAP_00001414", + "BDMAP_00001419", + "BDMAP_00001420", + "BDMAP_00001422", + "BDMAP_00001426", + "BDMAP_00001434", + "BDMAP_00001438", + "BDMAP_00001440", + "BDMAP_00001441", + "BDMAP_00001444", + "BDMAP_00001445", + "BDMAP_00001456", + "BDMAP_00001461", + "BDMAP_00001464", + "BDMAP_00001465", + "BDMAP_00001471", + "BDMAP_00001474", + "BDMAP_00001475", + "BDMAP_00001476", + "BDMAP_00001483", + "BDMAP_00001487", + "BDMAP_00001496", + "BDMAP_00001502", + "BDMAP_00001504", + "BDMAP_00001511", + "BDMAP_00001514", + "BDMAP_00001516", + "BDMAP_00001517", + "BDMAP_00001518", + "BDMAP_00001520", + "BDMAP_00001521", + "BDMAP_00001522", + "BDMAP_00001523", + "BDMAP_00001530", + "BDMAP_00001533", + "BDMAP_00001539", + "BDMAP_00001545", + "BDMAP_00001549", + "BDMAP_00001557", + "BDMAP_00001562", + "BDMAP_00001563", + "BDMAP_00001564", + "BDMAP_00001565", + "BDMAP_00001584", + "BDMAP_00001590", + "BDMAP_00001597", + "BDMAP_00001598", + "BDMAP_00001602", + "BDMAP_00001605", + "BDMAP_00001607", + "BDMAP_00001612", + "BDMAP_00001617", + "BDMAP_00001618", + "BDMAP_00001620", + "BDMAP_00001624", + "BDMAP_00001632", + "BDMAP_00001635", + "BDMAP_00001636", + "BDMAP_00001646", + "BDMAP_00001647", + "BDMAP_00001649", + "BDMAP_00001656", + "BDMAP_00001664", + "BDMAP_00001676", + "BDMAP_00001679", + "BDMAP_00001688", + "BDMAP_00001692", + "BDMAP_00001697", + "BDMAP_00001699", + "BDMAP_00001701", + "BDMAP_00001704", + "BDMAP_00001705", + "BDMAP_00001707", + "BDMAP_00001710", + "BDMAP_00001711", + "BDMAP_00001712", + "BDMAP_00001732", + "BDMAP_00001736", + "BDMAP_00001737", + "BDMAP_00001747", + "BDMAP_00001752", + "BDMAP_00001753", + "BDMAP_00001754", + "BDMAP_00001757", + "BDMAP_00001766", + "BDMAP_00001768", + "BDMAP_00001769", + "BDMAP_00001772", + "BDMAP_00001782", + "BDMAP_00001784", + "BDMAP_00001785", + "BDMAP_00001791", + "BDMAP_00001794", + "BDMAP_00001802", + "BDMAP_00001804", + "BDMAP_00001806", + "BDMAP_00001807", + "BDMAP_00001809", + "BDMAP_00001810", + "BDMAP_00001817", + "BDMAP_00001823", + "BDMAP_00001826", + "BDMAP_00001828", + "BDMAP_00001831", + "BDMAP_00001834", + "BDMAP_00001835", + "BDMAP_00001836", + "BDMAP_00001842", + "BDMAP_00001845", + "BDMAP_00001851", + "BDMAP_00001853", + "BDMAP_00001862", + "BDMAP_00001863", + "BDMAP_00001865", + "BDMAP_00001867", + "BDMAP_00001868", + "BDMAP_00001875", + "BDMAP_00001878", + "BDMAP_00001891", + "BDMAP_00001892", + "BDMAP_00001898", + "BDMAP_00001905", + "BDMAP_00001906", + "BDMAP_00001907", + "BDMAP_00001908", + "BDMAP_00001911", + "BDMAP_00001912", + "BDMAP_00001913", + "BDMAP_00001917", + "BDMAP_00001918", + "BDMAP_00001919", + "BDMAP_00001921", + "BDMAP_00001924", + "BDMAP_00001941", + "BDMAP_00001945", + "BDMAP_00001957", + "BDMAP_00001966", + "BDMAP_00001977", + "BDMAP_00001982", + "BDMAP_00001985", + "BDMAP_00001987", + "BDMAP_00001995", + "BDMAP_00002017", + "BDMAP_00002021", + "BDMAP_00002022", + "BDMAP_00002029", + "BDMAP_00002035", + "BDMAP_00002039", + "BDMAP_00002041", + "BDMAP_00002055", + "BDMAP_00002057", + "BDMAP_00002060", + "BDMAP_00002065", + "BDMAP_00002067", + "BDMAP_00002068", + "BDMAP_00002075", + "BDMAP_00002076", + "BDMAP_00002085", + "BDMAP_00002087", + "BDMAP_00002091", + "BDMAP_00002099", + "BDMAP_00002103", + "BDMAP_00002114", + "BDMAP_00002117", + "BDMAP_00002120", + "BDMAP_00002122", + "BDMAP_00002133", + "BDMAP_00002147", + "BDMAP_00002152", + "BDMAP_00002158", + "BDMAP_00002163", + "BDMAP_00002164", + "BDMAP_00002166", + "BDMAP_00002167", + "BDMAP_00002171", + "BDMAP_00002172", + "BDMAP_00002173", + "BDMAP_00002184", + "BDMAP_00002185", + "BDMAP_00002188", + "BDMAP_00002199", + "BDMAP_00002211", + "BDMAP_00002216", + "BDMAP_00002226", + "BDMAP_00002227", + "BDMAP_00002230", + "BDMAP_00002232", + "BDMAP_00002233", + "BDMAP_00002237", + "BDMAP_00002244", + "BDMAP_00002250", + "BDMAP_00002251", + "BDMAP_00002252", + "BDMAP_00002253", + "BDMAP_00002260", + "BDMAP_00002265", + "BDMAP_00002267", + "BDMAP_00002271", + "BDMAP_00002273", + "BDMAP_00002275", + "BDMAP_00002278", + "BDMAP_00002282", + "BDMAP_00002283", + "BDMAP_00002288", + "BDMAP_00002289", + "BDMAP_00002295", + "BDMAP_00002298", + "BDMAP_00002302", + "BDMAP_00002304", + "BDMAP_00002305", + "BDMAP_00002309", + "BDMAP_00002310", + "BDMAP_00002313", + "BDMAP_00002318", + "BDMAP_00002319", + "BDMAP_00002326", + "BDMAP_00002328", + "BDMAP_00002332", + "BDMAP_00002333", + "BDMAP_00002347", + "BDMAP_00002349", + "BDMAP_00002354", + "BDMAP_00002359", + "BDMAP_00002361", + "BDMAP_00002362", + "BDMAP_00002363", + "BDMAP_00002373", + "BDMAP_00002383", + "BDMAP_00002387", + "BDMAP_00002396", + "BDMAP_00002401", + "BDMAP_00002402", + "BDMAP_00002403", + "BDMAP_00002404", + "BDMAP_00002407", + "BDMAP_00002410", + "BDMAP_00002411", + "BDMAP_00002417", + "BDMAP_00002419", + "BDMAP_00002421", + "BDMAP_00002422", + "BDMAP_00002426", + "BDMAP_00002433", + "BDMAP_00002434", + "BDMAP_00002437", + "BDMAP_00002440", + "BDMAP_00002446", + "BDMAP_00002451", + "BDMAP_00002458", + "BDMAP_00002465", + "BDMAP_00002471", + "BDMAP_00002472", + "BDMAP_00002475", + "BDMAP_00002476", + "BDMAP_00002479", + "BDMAP_00002481", + "BDMAP_00002484", + "BDMAP_00002485", + "BDMAP_00002487", + "BDMAP_00002492", + "BDMAP_00002495", + "BDMAP_00002496", + "BDMAP_00002498", + "BDMAP_00002501", + "BDMAP_00002504", + "BDMAP_00002509", + "BDMAP_00002511", + "BDMAP_00002518", + "BDMAP_00002523", + "BDMAP_00002524", + "BDMAP_00002529", + "BDMAP_00002545", + "BDMAP_00002552", + "BDMAP_00002562", + "BDMAP_00002570", + "BDMAP_00002571", + "BDMAP_00002574", + "BDMAP_00002580", + "BDMAP_00002582", + "BDMAP_00002583", + "BDMAP_00002592", + "BDMAP_00002598", + "BDMAP_00002609", + "BDMAP_00002612", + "BDMAP_00002616", + "BDMAP_00002619", + "BDMAP_00002626", + "BDMAP_00002638", + "BDMAP_00002653", + "BDMAP_00002654", + "BDMAP_00002655", + "BDMAP_00002656", + "BDMAP_00002661", + "BDMAP_00002663", + "BDMAP_00002665", + "BDMAP_00002688", + "BDMAP_00002689", + "BDMAP_00002690", + "BDMAP_00002695", + "BDMAP_00002696", + "BDMAP_00002699", + "BDMAP_00002704", + "BDMAP_00002707", + "BDMAP_00002708", + "BDMAP_00002710", + "BDMAP_00002712", + "BDMAP_00002719", + "BDMAP_00002720", + "BDMAP_00002728", + "BDMAP_00002730", + "BDMAP_00002737", + "BDMAP_00002739", + "BDMAP_00002742", + "BDMAP_00002746", + "BDMAP_00002748", + "BDMAP_00002751", + "BDMAP_00002758", + "BDMAP_00002760", + "BDMAP_00002776", + "BDMAP_00002788", + "BDMAP_00002791", + "BDMAP_00002793", + "BDMAP_00002798", + "BDMAP_00002803", + "BDMAP_00002805", + "BDMAP_00002807", + "BDMAP_00002815", + "BDMAP_00002826", + "BDMAP_00002828", + "BDMAP_00002829", + "BDMAP_00002833", + "BDMAP_00002834", + "BDMAP_00002841", + "BDMAP_00002844", + "BDMAP_00002845", + "BDMAP_00002846", + "BDMAP_00002849", + "BDMAP_00002854", + "BDMAP_00002855", + "BDMAP_00002856", + "BDMAP_00002863", + "BDMAP_00002870", + "BDMAP_00002871", + "BDMAP_00002873", + "BDMAP_00002875", + "BDMAP_00002884", + "BDMAP_00002889", + "BDMAP_00002893", + "BDMAP_00002896", + "BDMAP_00002902", + "BDMAP_00002906", + "BDMAP_00002909", + "BDMAP_00002918", + "BDMAP_00002920", + "BDMAP_00002924", + "BDMAP_00002928", + "BDMAP_00002930", + "BDMAP_00002933", + "BDMAP_00002936", + "BDMAP_00002940", + "BDMAP_00002942", + "BDMAP_00002945", + "BDMAP_00002947", + "BDMAP_00002948", + "BDMAP_00002953", + "BDMAP_00002959", + "BDMAP_00002981", + "BDMAP_00002986", + "BDMAP_00002990", + "BDMAP_00002991", + "BDMAP_00002992", + "BDMAP_00003002", + "BDMAP_00003017", + "BDMAP_00003019", + "BDMAP_00003031", + "BDMAP_00003034", + "BDMAP_00003036", + "BDMAP_00003052", + "BDMAP_00003058", + "BDMAP_00003063", + "BDMAP_00003070", + "BDMAP_00003073", + "BDMAP_00003074", + "BDMAP_00003109", + "BDMAP_00003111", + "BDMAP_00003113", + "BDMAP_00003128", + "BDMAP_00003129", + "BDMAP_00003130", + "BDMAP_00003133", + "BDMAP_00003138", + "BDMAP_00003140", + "BDMAP_00003141", + "BDMAP_00003151", + "BDMAP_00003153", + "BDMAP_00003168", + "BDMAP_00003172", + "BDMAP_00003178", + "BDMAP_00003183", + "BDMAP_00003189", + "BDMAP_00003193", + "BDMAP_00003194", + "BDMAP_00003195", + "BDMAP_00003200", + "BDMAP_00003202", + "BDMAP_00003215", + "BDMAP_00003225", + "BDMAP_00003236", + "BDMAP_00003240", + "BDMAP_00003244", + "BDMAP_00003245", + "BDMAP_00003250", + "BDMAP_00003252", + "BDMAP_00003254", + "BDMAP_00003255", + "BDMAP_00003256", + "BDMAP_00003268", + "BDMAP_00003277", + "BDMAP_00003281", + "BDMAP_00003287", + "BDMAP_00003294", + "BDMAP_00003299", + "BDMAP_00003300", + "BDMAP_00003301", + "BDMAP_00003312", + "BDMAP_00003315", + "BDMAP_00003319", + "BDMAP_00003324", + "BDMAP_00003326", + "BDMAP_00003327", + "BDMAP_00003329", + "BDMAP_00003330", + "BDMAP_00003333", + "BDMAP_00003343", + "BDMAP_00003347", + "BDMAP_00003356", + "BDMAP_00003357", + "BDMAP_00003358", + "BDMAP_00003359", + "BDMAP_00003361", + "BDMAP_00003363", + "BDMAP_00003364", + "BDMAP_00003373", + "BDMAP_00003376", + "BDMAP_00003377", + "BDMAP_00003381", + "BDMAP_00003384", + "BDMAP_00003385", + "BDMAP_00003392", + "BDMAP_00003396", + "BDMAP_00003400", + "BDMAP_00003406", + "BDMAP_00003409", + "BDMAP_00003411", + "BDMAP_00003412", + "BDMAP_00003422", + "BDMAP_00003425", + "BDMAP_00003427", + "BDMAP_00003435", + "BDMAP_00003438", + "BDMAP_00003440", + "BDMAP_00003441", + "BDMAP_00003443", + "BDMAP_00003444", + "BDMAP_00003447", + "BDMAP_00003448", + "BDMAP_00003451", + "BDMAP_00003455", + "BDMAP_00003457", + "BDMAP_00003461", + "BDMAP_00003465", + "BDMAP_00003479", + "BDMAP_00003482", + "BDMAP_00003483", + "BDMAP_00003484", + "BDMAP_00003491", + "BDMAP_00003493", + "BDMAP_00003497", + "BDMAP_00003506", + "BDMAP_00003510", + "BDMAP_00003513", + "BDMAP_00003514", + "BDMAP_00003516", + "BDMAP_00003520", + "BDMAP_00003524", + "BDMAP_00003525", + "BDMAP_00003529", + "BDMAP_00003530", + "BDMAP_00003531", + "BDMAP_00003535", + "BDMAP_00003543", + "BDMAP_00003549", + "BDMAP_00003551", + "BDMAP_00003553", + "BDMAP_00003556", + "BDMAP_00003558", + "BDMAP_00003560", + "BDMAP_00003564", + "BDMAP_00003569", + "BDMAP_00003576", + "BDMAP_00003580", + "BDMAP_00003581", + "BDMAP_00003590", + "BDMAP_00003592", + "BDMAP_00003598", + "BDMAP_00003600", + "BDMAP_00003603", + "BDMAP_00003608", + "BDMAP_00003612", + "BDMAP_00003614", + "BDMAP_00003615", + "BDMAP_00003631", + "BDMAP_00003633", + "BDMAP_00003634", + "BDMAP_00003640", + "BDMAP_00003650", + "BDMAP_00003657", + "BDMAP_00003658", + "BDMAP_00003664", + "BDMAP_00003672", + "BDMAP_00003680", + "BDMAP_00003683", + "BDMAP_00003685", + "BDMAP_00003694", + "BDMAP_00003701", + "BDMAP_00003713", + "BDMAP_00003717", + "BDMAP_00003721", + "BDMAP_00003722", + "BDMAP_00003727", + "BDMAP_00003735", + "BDMAP_00003736", + "BDMAP_00003740", + "BDMAP_00003744", + "BDMAP_00003749", + "BDMAP_00003752", + "BDMAP_00003759", + "BDMAP_00003762", + "BDMAP_00003763", + "BDMAP_00003767", + "BDMAP_00003769", + "BDMAP_00003774", + "BDMAP_00003776", + "BDMAP_00003781", + "BDMAP_00003798", + "BDMAP_00003806", + "BDMAP_00003808", + "BDMAP_00003811", + "BDMAP_00003812", + "BDMAP_00003815", + "BDMAP_00003822", + "BDMAP_00003823", + "BDMAP_00003824", + "BDMAP_00003827", + "BDMAP_00003832", + "BDMAP_00003833", + "BDMAP_00003840", + "BDMAP_00003847", + "BDMAP_00003849", + "BDMAP_00003851", + "BDMAP_00003853", + "BDMAP_00003857", + "BDMAP_00003867", + "BDMAP_00003869", + "BDMAP_00003880", + "BDMAP_00003882", + "BDMAP_00003886", + "BDMAP_00003890", + "BDMAP_00003898", + "BDMAP_00003900", + "BDMAP_00003911", + "BDMAP_00003918", + "BDMAP_00003920", + "BDMAP_00003923", + "BDMAP_00003928", + "BDMAP_00003930", + "BDMAP_00003932", + "BDMAP_00003943", + "BDMAP_00003946", + "BDMAP_00003947", + "BDMAP_00003952", + "BDMAP_00003955", + "BDMAP_00003956", + "BDMAP_00003957", + "BDMAP_00003963", + "BDMAP_00003971", + "BDMAP_00003972", + "BDMAP_00003973", + "BDMAP_00003976", + "BDMAP_00003994", + "BDMAP_00003996", + "BDMAP_00003998", + "BDMAP_00004011", + "BDMAP_00004014", + "BDMAP_00004015", + "BDMAP_00004016", + "BDMAP_00004017", + "BDMAP_00004023", + "BDMAP_00004027", + "BDMAP_00004028", + "BDMAP_00004030", + "BDMAP_00004031", + "BDMAP_00004033", + "BDMAP_00004039", + "BDMAP_00004060", + "BDMAP_00004065", + "BDMAP_00004066", + "BDMAP_00004074", + "BDMAP_00004077", + "BDMAP_00004087", + "BDMAP_00004097", + "BDMAP_00004101", + "BDMAP_00004103", + "BDMAP_00004104", + "BDMAP_00004106", + "BDMAP_00004121", + "BDMAP_00004129", + "BDMAP_00004130", + "BDMAP_00004131", + "BDMAP_00004147", + "BDMAP_00004148", + "BDMAP_00004150", + "BDMAP_00004154", + "BDMAP_00004158", + "BDMAP_00004163", + "BDMAP_00004165", + "BDMAP_00004175", + "BDMAP_00004181", + "BDMAP_00004183", + "BDMAP_00004184", + "BDMAP_00004185", + "BDMAP_00004187", + "BDMAP_00004195", + "BDMAP_00004196", + "BDMAP_00004198", + "BDMAP_00004199", + "BDMAP_00004212", + "BDMAP_00004216", + "BDMAP_00004228", + "BDMAP_00004229", + "BDMAP_00004231", + "BDMAP_00004232", + "BDMAP_00004253", + "BDMAP_00004257", + "BDMAP_00004262", + "BDMAP_00004264", + "BDMAP_00004265", + "BDMAP_00004278", + "BDMAP_00004286", + "BDMAP_00004288", + "BDMAP_00004293", + "BDMAP_00004294", + "BDMAP_00004295", + "BDMAP_00004296", + "BDMAP_00004297", + "BDMAP_00004303", + "BDMAP_00004304", + "BDMAP_00004315", + "BDMAP_00004317", + "BDMAP_00004327", + "BDMAP_00004328", + "BDMAP_00004331", + "BDMAP_00004343", + "BDMAP_00004354", + "BDMAP_00004373", + "BDMAP_00004374", + "BDMAP_00004384", + "BDMAP_00004389", + "BDMAP_00004395", + "BDMAP_00004397", + "BDMAP_00004398", + "BDMAP_00004407", + "BDMAP_00004414", + "BDMAP_00004415", + "BDMAP_00004416", + "BDMAP_00004417", + "BDMAP_00004420", + "BDMAP_00004427", + "BDMAP_00004431", + "BDMAP_00004435", + "BDMAP_00004437", + "BDMAP_00004447", + "BDMAP_00004450", + "BDMAP_00004457", + "BDMAP_00004459", + "BDMAP_00004462", + "BDMAP_00004467", + "BDMAP_00004475", + "BDMAP_00004479", + "BDMAP_00004481", + "BDMAP_00004482", + "BDMAP_00004489", + "BDMAP_00004491", + "BDMAP_00004493", + "BDMAP_00004494", + "BDMAP_00004495", + "BDMAP_00004499", + "BDMAP_00004508", + "BDMAP_00004509", + "BDMAP_00004510", + "BDMAP_00004511", + "BDMAP_00004514", + "BDMAP_00004529", + "BDMAP_00004541", + "BDMAP_00004546", + "BDMAP_00004549", + "BDMAP_00004550", + "BDMAP_00004552", + "BDMAP_00004558", + "BDMAP_00004561", + "BDMAP_00004575", + "BDMAP_00004579", + "BDMAP_00004581", + "BDMAP_00004586", + "BDMAP_00004597", + "BDMAP_00004600", + "BDMAP_00004604", + "BDMAP_00004608", + "BDMAP_00004609", + "BDMAP_00004615", + "BDMAP_00004616", + "BDMAP_00004620", + "BDMAP_00004624", + "BDMAP_00004636", + "BDMAP_00004639", + "BDMAP_00004641", + "BDMAP_00004645", + "BDMAP_00004650", + "BDMAP_00004651", + "BDMAP_00004652", + "BDMAP_00004664", + "BDMAP_00004671", + "BDMAP_00004672", + "BDMAP_00004673", + "BDMAP_00004676", + "BDMAP_00004679", + "BDMAP_00004682", + "BDMAP_00004712", + "BDMAP_00004717", + "BDMAP_00004719", + "BDMAP_00004735", + "BDMAP_00004738", + "BDMAP_00004744", + "BDMAP_00004745", + "BDMAP_00004759", + "BDMAP_00004764", + "BDMAP_00004773", + "BDMAP_00004775", + "BDMAP_00004783", + "BDMAP_00004793", + "BDMAP_00004796", + "BDMAP_00004804", + "BDMAP_00004808", + "BDMAP_00004815", + "BDMAP_00004817", + "BDMAP_00004825", + "BDMAP_00004829", + "BDMAP_00004830", + "BDMAP_00004834", + "BDMAP_00004839", + "BDMAP_00004841", + "BDMAP_00004843", + "BDMAP_00004847", + "BDMAP_00004850", + "BDMAP_00004855", + "BDMAP_00004866", + "BDMAP_00004867", + "BDMAP_00004870", + "BDMAP_00004876", + "BDMAP_00004880", + "BDMAP_00004885", + "BDMAP_00004886", + "BDMAP_00004887", + "BDMAP_00004888", + "BDMAP_00004894", + "BDMAP_00004895", + "BDMAP_00004897", + "BDMAP_00004901", + "BDMAP_00004903", + "BDMAP_00004910", + "BDMAP_00004917", + "BDMAP_00004922", + "BDMAP_00004925", + "BDMAP_00004927", + "BDMAP_00004943", + "BDMAP_00004954", + "BDMAP_00004956", + "BDMAP_00004964", + "BDMAP_00004968", + "BDMAP_00004969", + "BDMAP_00004980", + "BDMAP_00004981", + "BDMAP_00004990", + "BDMAP_00004992", + "BDMAP_00004995", + "BDMAP_00005001", + "BDMAP_00005005", + "BDMAP_00005006", + "BDMAP_00005009", + "BDMAP_00005016", + "BDMAP_00005017", + "BDMAP_00005020", + "BDMAP_00005022", + "BDMAP_00005037", + "BDMAP_00005063", + "BDMAP_00005064", + "BDMAP_00005065", + "BDMAP_00005067", + "BDMAP_00005070", + "BDMAP_00005073", + "BDMAP_00005075", + "BDMAP_00005077", + "BDMAP_00005078", + "BDMAP_00005081", + "BDMAP_00005083", + "BDMAP_00005085", + "BDMAP_00005092", + "BDMAP_00005097", + "BDMAP_00005099", + "BDMAP_00005105", + "BDMAP_00005108", + "BDMAP_00005113", + "BDMAP_00005114", + "BDMAP_00005119", + "BDMAP_00005120", + "BDMAP_00005140", + "BDMAP_00005141", + "BDMAP_00005148", + "BDMAP_00005150", + "BDMAP_00005151", + "BDMAP_00005152", + "BDMAP_00005154", + "BDMAP_00005157", + "BDMAP_00005160", + "BDMAP_00005166", + "BDMAP_00005167", + "BDMAP_00005168", + "BDMAP_00005169", + "BDMAP_00005170", + "BDMAP_00005174", + "BDMAP_00005185", + "BDMAP_00005186", + "BDMAP_00005191", + "BDMAP_00005192" + ], + "val": [ + "BDMAP_00000100", + "BDMAP_00000101", + "BDMAP_00000332", + "BDMAP_00000375", + "BDMAP_00000430", + "BDMAP_00000458", + "BDMAP_00000487", + "BDMAP_00000505", + "BDMAP_00000511", + "BDMAP_00000608", + "BDMAP_00000615", + "BDMAP_00000679", + "BDMAP_00000745", + "BDMAP_00000794", + "BDMAP_00000831", + "BDMAP_00000833", + "BDMAP_00000921", + "BDMAP_00001018", + "BDMAP_00001198", + "BDMAP_00001205", + "BDMAP_00001255", + "BDMAP_00001309", + "BDMAP_00001352", + "BDMAP_00001361", + "BDMAP_00001413", + "BDMAP_00001628", + "BDMAP_00001735", + "BDMAP_00001746", + "BDMAP_00001786", + "BDMAP_00001813", + "BDMAP_00001962", + "BDMAP_00001981", + "BDMAP_00002181", + "BDMAP_00002214", + "BDMAP_00002242", + "BDMAP_00002453", + "BDMAP_00002463", + "BDMAP_00002474", + "BDMAP_00002603", + "BDMAP_00002631", + "BDMAP_00002648", + "BDMAP_00002673", + "BDMAP_00002717", + "BDMAP_00002744", + "BDMAP_00002775", + "BDMAP_00002804", + "BDMAP_00002840", + "BDMAP_00002864", + "BDMAP_00002899", + "BDMAP_00002931", + "BDMAP_00002944", + "BDMAP_00002955", + "BDMAP_00003083", + "BDMAP_00003114", + "BDMAP_00003143", + "BDMAP_00003150", + "BDMAP_00003164", + "BDMAP_00003170", + "BDMAP_00003205", + "BDMAP_00003272", + "BDMAP_00003367", + "BDMAP_00003439", + "BDMAP_00003481", + "BDMAP_00003486", + "BDMAP_00003502", + "BDMAP_00003656", + "BDMAP_00003771", + "BDMAP_00003809", + "BDMAP_00003884", + "BDMAP_00003897", + "BDMAP_00003961", + "BDMAP_00004083", + "BDMAP_00004115", + "BDMAP_00004117", + "BDMAP_00004128", + "BDMAP_00004250", + "BDMAP_00004281", + "BDMAP_00004378", + "BDMAP_00004551", + "BDMAP_00004578", + "BDMAP_00004704", + "BDMAP_00004741", + "BDMAP_00004746", + "BDMAP_00004770", + "BDMAP_00004844", + "BDMAP_00004858", + "BDMAP_00004878", + "BDMAP_00004890", + "BDMAP_00004998", + "BDMAP_00005030", + "BDMAP_00005074", + "BDMAP_00005130", + "BDMAP_00005139", + "BDMAP_00005155", + "BDMAP_00005171" + ] + } +] \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_all.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_all.json new file mode 100644 index 0000000000000000000000000000000000000000..4949d7adb115020e79dcfbaf81ec0f52873f5a2d --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_all.json @@ -0,0 +1,2159 @@ +[ + { + "train": [ + "BDMAP_00004015", + "BDMAP_00000438", + "BDMAP_00002815", + "BDMAP_00002855", + "BDMAP_00000714", + "BDMAP_00003438", + "BDMAP_00001214", + "BDMAP_00005444", + "BDMAP_00001584", + "BDMAP_00002232", + "BDMAP_00002332", + "BDMAP_00003525", + "BDMAP_00003592", + "BDMAP_00000859", + "BDMAP_00000338", + "BDMAP_00002947", + "BDMAP_00000732", + "BDMAP_00002244", + "BDMAP_00004297", + "BDMAP_00004447", + "BDMAP_00002313", + "BDMAP_00004672", + "BDMAP_00004198", + "BDMAP_00008525", + "BDMAP_00001704", + "BDMAP_00001504", + "BDMAP_00000589", + "BDMAP_00004231", + "BDMAP_00005078", + "BDMAP_00003900", + "BDMAP_00003508", + "BDMAP_00005169", + "BDMAP_00008526", + "BDMAP_00002362", + "BDMAP_00004964", + "BDMAP_00001565", + "BDMAP_00002295", + "BDMAP_00003812", + "BDMAP_00003254", + "BDMAP_00009367", + "BDMAP_00000324", + "BDMAP_00001096", + "BDMAP_00000696", + "BDMAP_00000972", + "BDMAP_00002216", + "BDMAP_00000087", + "BDMAP_00000940", + "BDMAP_00004106", + "BDMAP_00002126", + "BDMAP_00001288", + "BDMAP_00003479", + "BDMAP_00000416", + "BDMAP_00000192", + "BDMAP_00002076", + "BDMAP_00002387", + "BDMAP_00002411", + "BDMAP_00001441", + "BDMAP_00004796", + "BDMAP_00004804", + "BDMAP_00001836", + "BDMAP_00001701", + "BDMAP_00006623", + "BDMAP_00005185", + "BDMAP_00001419", + "BDMAP_00003133", + "BDMAP_00003781", + "BDMAP_00004641", + "BDMAP_00002896", + "BDMAP_00000093", + "BDMAP_00000614", + "BDMAP_00000447", + "BDMAP_00001912", + "BDMAP_00001931", + "BDMAP_00002233", + "BDMAP_00001921", + "BDMAP_00007200", + "BDMAP_00001408", + "BDMAP_00005022", + "BDMAP_00000052", + "BDMAP_00004398", + "BDMAP_00002688", + "BDMAP_00005141", + "BDMAP_00002278", + "BDMAP_00001521", + "BDMAP_00007398", + "BDMAP_00004880", + "BDMAP_00003889", + "BDMAP_00000771", + "BDMAP_00003451", + "BDMAP_00002237", + "BDMAP_00004982", + "BDMAP_00000618", + "BDMAP_00000956", + "BDMAP_00001862", + "BDMAP_00002188", + "BDMAP_00003822", + "BDMAP_00002460", + "BDMAP_00002793", + "BDMAP_00002120", + "BDMAP_00003443", + "BDMAP_00003551", + "BDMAP_00004077", + "BDMAP_00002475", + "BDMAP_00000236", + "BDMAP_00004229", + "BDMAP_00002945", + "BDMAP_00003824", + "BDMAP_00004549", + "BDMAP_00002523", + "BDMAP_00006534", + "BDMAP_00004735", + "BDMAP_00003934", + "BDMAP_00004359", + "BDMAP_00000541", + "BDMAP_00003326", + "BDMAP_00004511", + "BDMAP_00001590", + "BDMAP_00001823", + "BDMAP_00000470", + "BDMAP_00001828", + "BDMAP_00003017", + "BDMAP_00002227", + "BDMAP_00003347", + "BDMAP_00002402", + "BDMAP_00004097", + "BDMAP_00003853", + "BDMAP_00003543", + "BDMAP_00003744", + "BDMAP_00003400", + "BDMAP_00005075", + "BDMAP_00002616", + "BDMAP_00003244", + "BDMAP_00003633", + "BDMAP_00002021", + "BDMAP_00004773", + "BDMAP_00000037", + "BDMAP_00002309", + "BDMAP_00003356", + "BDMAP_00000774", + "BDMAP_00005064", + "BDMAP_00003385", + "BDMAP_00000993", + "BDMAP_00005092", + "BDMAP_00000715", + "BDMAP_00004262", + "BDMAP_00004719", + "BDMAP_00003168", + "BDMAP_00002250", + "BDMAP_00004264", + "BDMAP_00001632", + "BDMAP_00000388", + "BDMAP_00004286", + "BDMAP_00000154", + "BDMAP_00001461", + "BDMAP_00000683", + "BDMAP_00000309", + "BDMAP_00001125", + "BDMAP_00001898", + "BDMAP_00001845", + "BDMAP_00001464", + "BDMAP_00003658", + "BDMAP_00002844", + "BDMAP_00003427", + "BDMAP_00004636", + "BDMAP_00004129", + "BDMAP_00001842", + "BDMAP_00001646", + "BDMAP_00006043", + "BDMAP_00004288", + "BDMAP_00003631", + "BDMAP_00003440", + "BDMAP_00004550", + "BDMAP_00005070", + "BDMAP_00004829", + "BDMAP_00000225", + "BDMAP_00004060", + "BDMAP_00001092", + "BDMAP_00002619", + "BDMAP_00000701", + "BDMAP_00001247", + "BDMAP_00002304", + "BDMAP_00008128", + "BDMAP_00003376", + "BDMAP_00000431", + "BDMAP_00004546", + "BDMAP_00005898", + "BDMAP_00003685", + "BDMAP_00004992", + "BDMAP_00004954", + "BDMAP_00004494", + "BDMAP_00001617", + "BDMAP_00003886", + "BDMAP_00003776", + "BDMAP_00000692", + "BDMAP_00003840", + "BDMAP_00001414", + "BDMAP_00003277", + "BDMAP_00004969", + "BDMAP_00000623", + "BDMAP_00004847", + "BDMAP_00003590", + "BDMAP_00001712", + "BDMAP_00004895", + "BDMAP_00004651", + "BDMAP_00001605", + "BDMAP_00004183", + "BDMAP_00003918", + "BDMAP_00002029", + "BDMAP_00001597", + "BDMAP_00003612", + "BDMAP_00003138", + "BDMAP_00000558", + "BDMAP_00001905", + "BDMAP_00001736", + "BDMAP_00005063", + "BDMAP_00000391", + "BDMAP_00001440", + "BDMAP_00003613", + "BDMAP_00004841", + "BDMAP_00004917", + "BDMAP_00003329", + "BDMAP_00001331", + "BDMAP_00002737", + "BDMAP_00000197", + "BDMAP_00006472", + "BDMAP_00003650", + "BDMAP_00003260", + "BDMAP_00001564", + "BDMAP_00003396", + "BDMAP_00001057", + "BDMAP_00000462", + "BDMAP_00003657", + "BDMAP_00002580", + "BDMAP_00004541", + "BDMAP_00000809", + "BDMAP_00004023", + "BDMAP_00001637", + "BDMAP_00004885", + "BDMAP_00004184", + "BDMAP_00000855", + "BDMAP_00005108", + "BDMAP_00003769", + "BDMAP_00003215", + "BDMAP_00003036", + "BDMAP_00002171", + "BDMAP_00002298", + "BDMAP_00001040", + "BDMAP_00001368", + "BDMAP_00002758", + "BDMAP_00000744", + "BDMAP_00006533", + "BDMAP_00000542", + "BDMAP_00004843", + "BDMAP_00001804", + "BDMAP_00001806", + "BDMAP_00000243", + "BDMAP_00009738", + "BDMAP_00000882", + "BDMAP_00001175", + "BDMAP_00005037", + "BDMAP_00003319", + "BDMAP_00003598", + "BDMAP_00002829", + "BDMAP_00001754", + "BDMAP_00001476", + "BDMAP_00000411", + "BDMAP_00004514", + "BDMAP_00001545", + "BDMAP_00004293", + "BDMAP_00004927", + "BDMAP_00001618", + "BDMAP_00002690", + "BDMAP_00003130", + "BDMAP_00000427", + "BDMAP_00003141", + "BDMAP_00003483", + "BDMAP_00005020", + "BDMAP_00001067", + "BDMAP_00001523", + "BDMAP_00005140", + "BDMAP_00002863", + "BDMAP_00001649", + "BDMAP_00003683", + "BDMAP_00002328", + "BDMAP_00004295", + "BDMAP_00000676", + "BDMAP_00001064", + "BDMAP_00004793", + "BDMAP_00000442", + "BDMAP_00003811", + "BDMAP_00002446", + "BDMAP_00003456", + "BDMAP_00003614", + "BDMAP_00004744", + "BDMAP_00000037", + "BDMAP_00004838", + "BDMAP_00003441", + "BDMAP_00002933", + "BDMAP_00002834", + "BDMAP_00003178", + "BDMAP_00001413", + "BDMAP_00000129", + "BDMAP_00003613", + "BDMAP_00000516", + "BDMAP_00000039", + "BDMAP_00000008", + "BDMAP_00003032", + "BDMAP_00001443", + "BDMAP_00004482", + "BDMAP_00003300", + "BDMAP_00004039", + "BDMAP_00002251", + "BDMAP_00000626", + "BDMAP_00001128", + "BDMAP_00004712", + "BDMAP_00000159", + "BDMAP_00003364", + "BDMAP_00002609", + "BDMAP_00002511", + "BDMAP_00003619", + "BDMAP_00000843", + "BDMAP_00003337", + "BDMAP_00003638", + "BDMAP_00003976", + "BDMAP_00001654", + "BDMAP_00002040", + "BDMAP_00001402", + "BDMAP_00003183", + "BDMAP_00003250", + "BDMAP_00001747", + "BDMAP_00003083", + "BDMAP_00004193", + "BDMAP_00001223", + "BDMAP_00002198", + "BDMAP_00004101", + "BDMAP_00002488", + "BDMAP_00001283", + "BDMAP_00005171", + "BDMAP_00002695", + "BDMAP_00003072", + "BDMAP_00003762", + "BDMAP_00000285", + "BDMAP_00003143", + "BDMAP_00003910", + "BDMAP_00002133", + "BDMAP_00002440", + "BDMAP_00001800", + "BDMAP_00003601", + "BDMAP_00003531", + "BDMAP_00002434", + "BDMAP_00001383", + "BDMAP_00001619", + "BDMAP_00004763", + "BDMAP_00002186", + "BDMAP_00001391", + "BDMAP_00000926", + "BDMAP_00005192", + "BDMAP_00002711", + "BDMAP_00004481", + "BDMAP_00004887", + "BDMAP_00004467", + "BDMAP_00001944", + "BDMAP_00003258", + "BDMAP_00005174", + "BDMAP_00001450", + "BDMAP_00004265", + "BDMAP_00002363", + "BDMAP_00001188", + "BDMAP_00002953", + "BDMAP_00003816", + "BDMAP_00004033", + "BDMAP_00001563", + "BDMAP_00004420", + "BDMAP_00004722", + "BDMAP_00002710", + "BDMAP_00002417", + "BDMAP_00001647", + "BDMAP_00001376", + "BDMAP_00004693", + "BDMAP_00000646", + "BDMAP_00003199", + "BDMAP_00000382", + "BDMAP_00004551", + "BDMAP_00002851", + "BDMAP_00002407", + "BDMAP_00003054", + "BDMAP_00004068", + "BDMAP_00002065", + "BDMAP_00001068", + "BDMAP_00000320", + "BDMAP_00004074", + "BDMAP_00001517", + "BDMAP_00000533", + "BDMAP_00000751", + "BDMAP_00000240", + "BDMAP_00000980", + "BDMAP_00000868", + "BDMAP_00001620", + "BDMAP_00002574", + "BDMAP_00000161", + "BDMAP_00004144", + "BDMAP_00000435", + "BDMAP_00003615", + "BDMAP_00004253", + "BDMAP_00001434", + "BDMAP_00002570", + "BDMAP_00000279", + "BDMAP_00004331", + "BDMAP_00004339", + "BDMAP_00002302", + "BDMAP_00003600", + "BDMAP_00000687", + "BDMAP_00003943", + "BDMAP_00000916", + "BDMAP_00000867", + "BDMAP_00000355", + "BDMAP_00001496", + "BDMAP_00003682", + "BDMAP_00000062", + "BDMAP_00004616", + "BDMAP_00003193", + "BDMAP_00001929", + "BDMAP_00001184", + "BDMAP_00003861", + "BDMAP_00000234", + "BDMAP_00001480", + "BDMAP_00001378", + "BDMAP_00001218", + "BDMAP_00000465", + "BDMAP_00004679", + "BDMAP_00003447", + "BDMAP_00000883", + "BDMAP_00000699", + "BDMAP_00002285", + "BDMAP_00000117", + "BDMAP_00000428", + "BDMAP_00002111", + "BDMAP_00001998", + "BDMAP_00004102", + "BDMAP_00000359", + "BDMAP_00000356", + "BDMAP_00003153", + "BDMAP_00001077", + "BDMAP_00001607", + "BDMAP_00003239", + "BDMAP_00000710", + "BDMAP_00004671", + "BDMAP_00004011", + "BDMAP_00005081", + "BDMAP_00002012", + "BDMAP_00003998", + "BDMAP_00004350", + "BDMAP_00001020", + "BDMAP_00000532", + "BDMAP_00000364", + "BDMAP_00001614", + "BDMAP_00001870", + "BDMAP_00001634", + "BDMAP_00000662", + "BDMAP_00000812", + "BDMAP_00002596", + "BDMAP_00003200", + "BDMAP_00000104", + "BDMAP_00003558", + "BDMAP_00001027", + "BDMAP_00003749", + "BDMAP_00000908", + "BDMAP_00002698", + "BDMAP_00001817", + "BDMAP_00000963", + "BDMAP_00000423", + "BDMAP_00004592", + "BDMAP_00002068", + "BDMAP_00005154", + "BDMAP_00004395", + "BDMAP_00000366", + "BDMAP_00001518", + "BDMAP_00000258", + "BDMAP_00002807", + "BDMAP_00003281", + "BDMAP_00003038", + "BDMAP_00002331", + "BDMAP_00002433", + "BDMAP_00001656", + "BDMAP_00000219", + "BDMAP_00003701", + "BDMAP_00003363", + "BDMAP_00003747", + "BDMAP_00000137", + "BDMAP_00002306", + "BDMAP_00005105", + "BDMAP_00003207", + "BDMAP_00002582", + "BDMAP_00000713", + "BDMAP_00000353", + "BDMAP_00004359", + "BDMAP_00002760", + "BDMAP_00005006", + "BDMAP_00003646", + "BDMAP_00001305", + "BDMAP_00004311", + "BDMAP_00001906", + "BDMAP_00002041", + "BDMAP_00002404", + "BDMAP_00004130", + "BDMAP_00002977", + "BDMAP_00003252", + "BDMAP_00002930", + "BDMAP_00002484", + "BDMAP_00001169", + "BDMAP_00003063", + "BDMAP_00000889", + "BDMAP_00000445", + "BDMAP_00003839", + "BDMAP_00002322", + "BDMAP_00002017", + "BDMAP_00004194", + "BDMAP_00001677", + "BDMAP_00003508", + "BDMAP_00003312", + "BDMAP_00004327", + "BDMAP_00001475", + "BDMAP_00003415", + "BDMAP_00002718", + "BDMAP_00004131", + "BDMAP_00004968", + "BDMAP_00002864", + "BDMAP_00000432", + "BDMAP_00000887", + "BDMAP_00004195", + "BDMAP_00004345", + "BDMAP_00002260", + "BDMAP_00002707", + "BDMAP_00003949", + "BDMAP_00001799", + "BDMAP_00004368", + "BDMAP_00003711", + "BDMAP_00001710", + "BDMAP_00004150", + "BDMAP_00004259", + "BDMAP_00004620", + "BDMAP_00001636", + "BDMAP_00003642", + "BDMAP_00000429", + "BDMAP_00004682", + "BDMAP_00001711", + "BDMAP_00002720", + "BDMAP_00000616", + "BDMAP_00002265", + "BDMAP_00002333", + "BDMAP_00003603", + "BDMAP_00003184", + "BDMAP_00005009", + "BDMAP_00003039", + "BDMAP_00004673", + "BDMAP_00003034", + "BDMAP_00001633", + "BDMAP_00000977", + "BDMAP_00001919", + "BDMAP_00002084", + "BDMAP_00001050", + "BDMAP_00004048", + "BDMAP_00001721", + "BDMAP_00001325", + "BDMAP_00001465", + "BDMAP_00003073", + "BDMAP_00000660", + "BDMAP_00003947", + "BDMAP_00001089", + "BDMAP_00003733", + "BDMAP_00004761", + "BDMAP_00000331", + "BDMAP_00000215", + "BDMAP_00005198", + "BDMAP_00002340", + "BDMAP_00000297", + "BDMAP_00002788", + "BDMAP_00000414", + "BDMAP_00003189", + "BDMAP_00002437", + "BDMAP_00003516", + "BDMAP_00000948", + "BDMAP_00003963", + "BDMAP_00002940", + "BDMAP_00001277", + "BDMAP_00001664", + "BDMAP_00004014", + "BDMAP_00001230", + "BDMAP_00004303", + "BDMAP_00002951", + "BDMAP_00004503", + "BDMAP_00004495", + "BDMAP_00008388", + "BDMAP_00004669", + "BDMAP_00001807", + "BDMAP_00001273", + "BDMAP_00000998", + "BDMAP_00003070", + "BDMAP_00003823", + "BDMAP_00003934", + "BDMAP_00000098", + "BDMAP_00004347", + "BDMAP_00002537", + "BDMAP_00001776", + "BDMAP_00004487", + "BDMAP_00003177", + "BDMAP_00005017", + "BDMAP_00004597", + "BDMAP_00002460", + "BDMAP_00001624", + "BDMAP_00002928", + "BDMAP_00004232", + "BDMAP_00004867", + "BDMAP_00000122", + "BDMAP_00005157", + "BDMAP_00003719", + "BDMAP_00001941", + "BDMAP_00003520", + "BDMAP_00002462", + "BDMAP_00003713", + "BDMAP_00001375", + "BDMAP_00005103", + "BDMAP_00000377", + "BDMAP_00000805", + "BDMAP_00003230", + "BDMAP_00000241", + "BDMAP_00003358", + "BDMAP_00002226", + "BDMAP_00002396", + "BDMAP_00002052", + "BDMAP_00000506", + "BDMAP_00000742", + "BDMAP_00003832", + "BDMAP_00000719", + "BDMAP_00005114", + "BDMAP_00004066", + "BDMAP_00003759", + "BDMAP_00004316", + "BDMAP_00001094", + "BDMAP_00000034", + "BDMAP_00004407", + "BDMAP_00003301", + "BDMAP_00000259", + "BDMAP_00002087", + "BDMAP_00003506", + "BDMAP_00002656", + "BDMAP_00002981", + "BDMAP_00000989", + "BDMAP_00002492", + "BDMAP_00000309", + "BDMAP_00000862", + "BDMAP_00005175", + "BDMAP_00001796", + "BDMAP_00003264", + "BDMAP_00000587", + "BDMAP_00003448", + "BDMAP_00002184", + "BDMAP_00001673", + "BDMAP_00004209", + "BDMAP_00000667", + "BDMAP_00001487", + "BDMAP_00005165", + "BDMAP_00002581", + "BDMAP_00004854", + "BDMAP_00005030", + "BDMAP_00001863", + "BDMAP_00003587", + "BDMAP_00001396", + "BDMAP_00000139", + "BDMAP_00003758", + "BDMAP_00001676", + "BDMAP_00000839", + "BDMAP_00002498", + "BDMAP_00000574", + "BDMAP_00001794", + "BDMAP_00003952", + "BDMAP_00001513", + "BDMAP_00003435", + "BDMAP_00004870", + "BDMAP_00004686", + "BDMAP_00001221", + "BDMAP_00003411", + "BDMAP_00001757", + "BDMAP_00002840", + "BDMAP_00000176", + "BDMAP_00004557", + "BDMAP_00003058", + "BDMAP_00003195", + "BDMAP_00002421", + "BDMAP_00000582", + "BDMAP_00004552", + "BDMAP_00002067", + "BDMAP_00005537", + "BDMAP_00003955", + "BDMAP_00000569", + "BDMAP_00001977", + "BDMAP_00001420", + "BDMAP_00002948", + "BDMAP_00003882", + "BDMAP_00000499", + "BDMAP_00003240", + "BDMAP_00002288", + "BDMAP_00005077", + "BDMAP_00002833", + "BDMAP_00004479", + "BDMAP_00002893", + "BDMAP_00002993", + "BDMAP_00004499", + "BDMAP_00000555", + "BDMAP_00002751", + "BDMAP_00003722", + "BDMAP_00001908", + "BDMAP_00002638", + "BDMAP_00000698", + "BDMAP_00003117", + "BDMAP_00002326", + "BDMAP_00002959", + "BDMAP_00000686", + "BDMAP_00004454", + "BDMAP_00001328", + "BDMAP_00002173", + "BDMAP_00001035", + "BDMAP_00001258", + "BDMAP_00002803", + "BDMAP_00002292", + "BDMAP_00003848", + "BDMAP_00004759", + "BDMAP_00002122", + "BDMAP_00000321", + "BDMAP_00001219", + "BDMAP_00001995", + "BDMAP_00000649", + "BDMAP_00005152", + "BDMAP_00001045", + "BDMAP_00002826", + "BDMAP_00001059", + "BDMAP_00001254", + "BDMAP_00000244", + "BDMAP_00004980", + "BDMAP_00002906", + "BDMAP_00002804", + "BDMAP_00001075", + "BDMAP_00000968", + "BDMAP_00002871", + "BDMAP_00001296", + "BDMAP_00001931", + "BDMAP_00003629", + "BDMAP_00004031", + "BDMAP_00004901", + "BDMAP_00000725", + "BDMAP_00003245", + "BDMAP_00000788", + "BDMAP_00001557", + "BDMAP_00001390", + "BDMAP_00004652", + "BDMAP_00001939", + "BDMAP_00000059", + "BDMAP_00001242", + "BDMAP_00004091", + "BDMAP_00004856", + "BDMAP_00000329", + "BDMAP_00003444", + "BDMAP_00003880", + "BDMAP_00001707", + "BDMAP_00004354", + "BDMAP_00001690", + "BDMAP_00001684", + "BDMAP_00002085", + "BDMAP_00003549", + "BDMAP_00000518", + "BDMAP_00001289", + "BDMAP_00004087", + "BDMAP_00001768", + "BDMAP_00000036", + "BDMAP_00004956", + "BDMAP_00003491", + "BDMAP_00004437", + "BDMAP_00004990", + "BDMAP_00003957", + "BDMAP_00003697", + "BDMAP_00003579", + "BDMAP_00000434", + "BDMAP_00004926", + "BDMAP_00002163", + "BDMAP_00001126", + "BDMAP_00004925", + "BDMAP_00000706", + "BDMAP_00000368", + "BDMAP_00001451", + "BDMAP_00002742", + "BDMAP_00001612", + "BDMAP_00005166", + "BDMAP_00002422", + "BDMAP_00000452", + "BDMAP_00003815", + "BDMAP_00004834", + "BDMAP_00000053", + "BDMAP_00001410", + "BDMAP_00000837", + "BDMAP_00003704", + "BDMAP_00002005", + "BDMAP_00001602", + "BDMAP_00004633", + "BDMAP_00002573", + "BDMAP_00000201", + "BDMAP_00002942", + "BDMAP_00001744", + "BDMAP_00002505", + "BDMAP_00000376", + "BDMAP_00003851", + "BDMAP_00001549", + "BDMAP_00003973", + "BDMAP_00002552", + "BDMAP_00002018", + "BDMAP_00004260", + "BDMAP_00003869", + "BDMAP_00004427", + "BDMAP_00002273", + "BDMAP_00004702", + "BDMAP_00003457", + "BDMAP_00004181", + "BDMAP_00003956", + "BDMAP_00001183", + "BDMAP_00001703", + "BDMAP_00000810", + "BDMAP_00002507", + "BDMAP_00003930", + "BDMAP_00004257", + "BDMAP_00001252", + "BDMAP_00003984", + "BDMAP_00004903", + "BDMAP_00002675", + "BDMAP_00002431", + "BDMAP_00004083", + "BDMAP_00005099", + "BDMAP_00004581", + "BDMAP_00005136", + "BDMAP_00003808", + "BDMAP_00000066", + "BDMAP_00002476", + "BDMAP_00005046", + "BDMAP_00003721", + "BDMAP_00003672", + "BDMAP_00000439", + "BDMAP_00004216", + "BDMAP_00004608", + "BDMAP_00004294", + "BDMAP_00003736", + "BDMAP_00004148", + "BDMAP_00001637", + "BDMAP_00003666", + "BDMAP_00003343", + "BDMAP_00004457", + "BDMAP_00002884", + "BDMAP_00004343", + "BDMAP_00004317", + "BDMAP_00004717", + "BDMAP_00000826", + "BDMAP_00004510", + "BDMAP_00002776", + "BDMAP_00003553", + "BDMAP_00000336", + "BDMAP_00001268", + "BDMAP_00000601", + "BDMAP_00003035", + "BDMAP_00000924", + "BDMAP_00002114", + "BDMAP_00003774", + "BDMAP_00001104", + "BDMAP_00001516", + "BDMAP_00002920", + "BDMAP_00002410", + "BDMAP_00008389", + "BDMAP_00000319", + "BDMAP_00003392", + "BDMAP_00003253", + "BDMAP_00002353", + "BDMAP_00005167", + "BDMAP_00002617", + "BDMAP_00002045", + "BDMAP_00002524", + "BDMAP_00002870", + "BDMAP_00003220", + "BDMAP_00001079", + "BDMAP_00008617", + "BDMAP_00002035", + "BDMAP_00002579", + "BDMAP_00003028", + "BDMAP_00000815", + "BDMAP_00002806", + "BDMAP_00002808", + "BDMAP_00002509", + "BDMAP_00000985", + "BDMAP_00002696", + "BDMAP_00003463", + "BDMAP_00000233", + "BDMAP_00000982", + "BDMAP_00004836", + "BDMAP_00001408", + "BDMAP_00001225", + "BDMAP_00000229", + "BDMAP_00001001", + "BDMAP_00003409", + "BDMAP_00002653", + "BDMAP_00000102", + "BDMAP_00001853", + "BDMAP_00002211", + "BDMAP_00001340", + "BDMAP_00005148", + "BDMAP_00002562", + "BDMAP_00004771", + "BDMAP_00003132", + "BDMAP_00000604", + "BDMAP_00003294", + "BDMAP_00003315", + "BDMAP_00002164", + "BDMAP_00001064", + "BDMAP_00004605", + "BDMAP_00004268", + "BDMAP_00001851", + "BDMAP_00001161", + "BDMAP_00004630", + "BDMAP_00000936", + "BDMAP_00002487", + "BDMAP_00004561", + "BDMAP_00004328", + "BDMAP_00005113", + "BDMAP_00003051", + "BDMAP_00000987", + "BDMAP_00005162", + "BDMAP_00005085", + "BDMAP_00003359", + "BDMAP_00005151", + "BDMAP_00002655", + "BDMAP_00003535", + "BDMAP_00001947", + "BDMAP_00002086", + "BDMAP_00004775", + "BDMAP_00002022", + "BDMAP_00003509", + "BDMAP_00000656", + "BDMAP_00001878", + "BDMAP_00001261", + "BDMAP_00004208", + "BDMAP_00003530", + "BDMAP_00001228", + "BDMAP_00000044", + "BDMAP_00005399", + "BDMAP_00000293", + "BDMAP_00003806", + "BDMAP_00000489", + "BDMAP_00000481", + "BDMAP_00002936", + "BDMAP_00000724", + "BDMAP_00000265", + "BDMAP_00002990", + "BDMAP_00003994", + "BDMAP_00000773", + "BDMAP_00002033", + "BDMAP_00004397", + "BDMAP_00001133", + "BDMAP_00004224", + "BDMAP_00004211", + "BDMAP_00001119", + "BDMAP_00004897", + "BDMAP_00000090", + "BDMAP_00002075", + "BDMAP_00000583", + "BDMAP_00001740", + "BDMAP_00000951", + "BDMAP_00000023", + "BDMAP_00000756", + "BDMAP_00002746", + "BDMAP_00000128", + "BDMAP_00002558", + "BDMAP_00001831", + "BDMAP_00004979", + "BDMAP_00003727", + "BDMAP_00001581", + "BDMAP_00001571", + "BDMAP_00004981", + "BDMAP_00004296", + "BDMAP_00000249", + "BDMAP_00000935", + "BDMAP_00000871", + "BDMAP_00001911", + "BDMAP_00002787", + "BDMAP_00002723", + "BDMAP_00000943", + "BDMAP_00001826", + "BDMAP_00002501", + "BDMAP_00001784", + "BDMAP_00003197", + "BDMAP_00002504", + "BDMAP_00001286", + "BDMAP_00003735", + "BDMAP_00002200", + "BDMAP_00003384", + "BDMAP_00001520", + "BDMAP_00000043", + "BDMAP_00004315", + "BDMAP_00000836", + "BDMAP_00003129", + "BDMAP_00000162", + "BDMAP_00003996", + "BDMAP_00001500", + "BDMAP_00000917", + "BDMAP_00003493", + "BDMAP_00002319", + "BDMAP_00001411", + "BDMAP_00004108", + "BDMAP_00002426", + "BDMAP_00004850", + "BDMAP_00005191", + "BDMAP_00001483", + "BDMAP_00002665", + "BDMAP_00001275", + "BDMAP_00001239", + "BDMAP_00004627", + "BDMAP_00004579", + "BDMAP_00004928", + "BDMAP_00003959", + "BDMAP_00001444", + "BDMAP_00003514", + "BDMAP_00001370", + "BDMAP_00001457", + "BDMAP_00000210", + "BDMAP_00003923", + "BDMAP_00001772", + "BDMAP_00002571", + "BDMAP_00002991", + "BDMAP_00000844", + "BDMAP_00001533", + "BDMAP_00002361", + "BDMAP_00003777", + "BDMAP_00001918", + "BDMAP_00001138", + "BDMAP_00001130", + "BDMAP_00001285", + "BDMAP_00003128", + "BDMAP_00002518", + "BDMAP_00002057", + "BDMAP_00004808", + "BDMAP_00002263", + "BDMAP_00003608", + "BDMAP_00003581", + "BDMAP_00000475", + "BDMAP_00004886", + "BDMAP_00000562", + "BDMAP_00004528", + "BDMAP_00004012", + "BDMAP_00004175", + "BDMAP_00003422", + "BDMAP_00001530", + "BDMAP_00001635", + "BDMAP_00005150", + "BDMAP_00003484", + "BDMAP_00003461", + "BDMAP_00004923", + "BDMAP_00003335", + "BDMAP_00001109", + "BDMAP_00001256", + "BDMAP_00004817", + "BDMAP_00000033", + "BDMAP_00003717", + "BDMAP_00003841", + "BDMAP_00002902", + "BDMAP_00001193", + "BDMAP_00000449", + "BDMAP_00001238", + "BDMAP_00001522", + "BDMAP_00002146", + "BDMAP_00004586", + "BDMAP_00003087", + "BDMAP_00002043", + "BDMAP_00000149", + "BDMAP_00001752", + "BDMAP_00000902", + "BDMAP_00003849", + "BDMAP_00003928", + "BDMAP_00004922", + "BDMAP_00000557", + "BDMAP_00002854", + "BDMAP_00003381", + "BDMAP_00000571", + "BDMAP_00001562", + "BDMAP_00004460", + "BDMAP_00004475", + "BDMAP_00002472", + "BDMAP_00001669", + "BDMAP_00002929", + "BDMAP_00001553", + "BDMAP_00003324", + "BDMAP_00003256", + "BDMAP_00003455", + "BDMAP_00003767", + "BDMAP_00001839", + "BDMAP_00001705", + "BDMAP_00000540", + "BDMAP_00001540", + "BDMAP_00002661", + "BDMAP_00002677", + "BDMAP_00001987", + "BDMAP_00000245", + "BDMAP_00003425", + "BDMAP_00003740", + "BDMAP_00004414", + "BDMAP_00002626", + "BDMAP_00004738", + "BDMAP_00001869", + "BDMAP_00004815", + "BDMAP_00000327", + "BDMAP_00004212", + "BDMAP_00003656", + "BDMAP_00001456", + "BDMAP_00001511", + "BDMAP_00004030", + "BDMAP_00000834", + "BDMAP_00001335", + "BDMAP_00004065", + "BDMAP_00000160", + "BDMAP_00001568", + "BDMAP_00001892", + "BDMAP_00002347", + "BDMAP_00003121", + "BDMAP_00003019", + "BDMAP_00003895", + "BDMAP_00004093", + "BDMAP_00002060", + "BDMAP_00003576", + "BDMAP_00003248", + "BDMAP_00001246", + "BDMAP_00001877", + "BDMAP_00004146", + "BDMAP_00004278", + "BDMAP_00003219", + "BDMAP_00004104", + "BDMAP_00004349", + "BDMAP_00001117", + "BDMAP_00002383", + "BDMAP_00005120", + "BDMAP_00001023", + "BDMAP_00003429", + "BDMAP_00003752", + "BDMAP_00001782", + "BDMAP_00002873", + "BDMAP_00000469", + "BDMAP_00001777", + "BDMAP_00000263", + "BDMAP_00003694", + "BDMAP_00002545", + "BDMAP_00002931", + "BDMAP_00002713", + "BDMAP_00004737", + "BDMAP_00001791", + "BDMAP_00001749", + "BDMAP_00004489", + "BDMAP_00000602", + "BDMAP_00001868", + "BDMAP_00004780", + "BDMAP_00002448", + "BDMAP_00001281", + "BDMAP_00002762", + "BDMAP_00004727", + "BDMAP_00003255", + "BDMAP_00004373", + "BDMAP_00003203", + "BDMAP_00000923", + "BDMAP_00001731", + "BDMAP_00003158", + "BDMAP_00002394", + "BDMAP_00002166", + "BDMAP_00002358", + "BDMAP_00000567", + "BDMAP_00002481", + "BDMAP_00002673", + "BDMAP_00001251", + "BDMAP_00001107", + "BDMAP_00002496", + "BDMAP_00004645", + "BDMAP_00002966", + "BDMAP_00002310", + "BDMAP_00001896", + "BDMAP_00001359", + "BDMAP_00002403", + "BDMAP_00003059", + "BDMAP_00004746", + "BDMAP_00002716", + "BDMAP_00003152", + "BDMAP_00001380", + "BDMAP_00000927", + "BDMAP_00001891", + "BDMAP_00001351", + "BDMAP_00004389", + "BDMAP_00003833", + "BDMAP_00003024", + "BDMAP_00001265", + "BDMAP_00000505", + "BDMAP_00002881", + "BDMAP_00000167", + "BDMAP_00003406", + "BDMAP_00003206", + "BDMAP_00002992", + "BDMAP_00002546", + "BDMAP_00002471", + "BDMAP_00003580", + "BDMAP_00002708", + "BDMAP_00002943", + "BDMAP_00001324", + "BDMAP_00001422", + "BDMAP_00001679", + "BDMAP_00000310", + "BDMAP_00006181", + "BDMAP_00001012", + "BDMAP_00001913", + "BDMAP_00003190", + "BDMAP_00003202", + "BDMAP_00004772", + "BDMAP_00001840", + "BDMAP_00001867", + "BDMAP_00003225", + "BDMAP_00002728", + "BDMAP_00002091", + "BDMAP_00000653", + "BDMAP_00003194", + "BDMAP_00004154", + "BDMAP_00001222", + "BDMAP_00003465", + "BDMAP_00004609", + "BDMAP_00002381", + "BDMAP_00004027", + "BDMAP_00002798", + "BDMAP_00001474", + "BDMAP_00003971", + "BDMAP_00002066", + "BDMAP_00002689", + "BDMAP_00001945", + "BDMAP_00003746", + "BDMAP_00002663", + "BDMAP_00002592", + "BDMAP_00001536", + "BDMAP_00002099", + "BDMAP_00002354", + "BDMAP_00002243", + "BDMAP_00000304", + "BDMAP_00001950", + "BDMAP_00004417", + "BDMAP_00004575", + "BDMAP_00001688", + "BDMAP_00004844", + "BDMAP_00004158", + "BDMAP_00000803", + "BDMAP_00002889", + "BDMAP_00003529", + "BDMAP_00000035", + "BDMAP_00001453", + "BDMAP_00004487", + "BDMAP_00002243", + "BDMAP_00004878", + "BDMAP_00003626", + "BDMAP_00002381", + "BDMAP_00001260", + "BDMAP_00000802", + "BDMAP_00008568", + "BDMAP_00003816", + "BDMAP_00000564", + "BDMAP_00001236", + "BDMAP_00007629", + "BDMAP_00002805", + "BDMAP_00000413", + "BDMAP_00001239", + "BDMAP_00004890", + "BDMAP_00000695", + "BDMAP_00003889", + "BDMAP_00004630", + "BDMAP_00001122", + "BDMAP_00004702", + "BDMAP_00003028", + "BDMAP_00002111", + "BDMAP_00004984", + "BDMAP_00002267", + "BDMAP_00004049", + "BDMAP_00005753", + "BDMAP_00004289", + "BDMAP_00004737", + "BDMAP_00001697", + "BDMAP_00000778", + "BDMAP_00001944", + "BDMAP_00002359", + "BDMAP_00000524", + "BDMAP_00004459", + "BDMAP_00003307", + "BDMAP_00008085", + "BDMAP_00003984", + "BDMAP_00004013", + "BDMAP_00001997", + "BDMAP_00003038", + "BDMAP_00002342", + "BDMAP_00001450", + "BDMAP_00003579", + "BDMAP_00000601", + "BDMAP_00001870", + "BDMAP_00000347", + "BDMAP_00002462", + "BDMAP_00002147", + "BDMAP_00001333", + "BDMAP_00001731", + "BDMAP_00000210", + "BDMAP_00002340", + "BDMAP_00002198", + "BDMAP_00002043", + "BDMAP_00000741", + "BDMAP_00001093", + "BDMAP_00009277", + "BDMAP_00004508", + "BDMAP_00003898", + "BDMAP_00000365", + "BDMAP_00001800", + "BDMAP_00000607", + "BDMAP_00000113", + "BDMAP_00004998", + "BDMAP_00003979", + "BDMAP_00001025", + "BDMAP_00002080", + "BDMAP_00003697", + "BDMAP_00004809", + "BDMAP_00003004", + "BDMAP_00003337", + "BDMAP_00002373", + "BDMAP_00003524", + "BDMAP_00009876", + "BDMAP_00004108", + "BDMAP_00008555", + "BDMAP_00000506", + "BDMAP_00004408", + "BDMAP_00002252", + "BDMAP_00002546", + "BDMAP_00004763", + "BDMAP_00000270", + "BDMAP_00003258", + "BDMAP_00004588", + "BDMAP_00000205", + "BDMAP_00001740", + "BDMAP_00004259", + "BDMAP_00002929", + "BDMAP_00001221", + "BDMAP_00003920", + "BDMAP_00000917", + "BDMAP_00003390", + "BDMAP_00000423", + "BDMAP_00004349", + "BDMAP_00002937", + "BDMAP_00008305", + "BDMAP_00004527", + "BDMAP_00003177", + "BDMAP_00007259", + "BDMAP_00004598", + "BDMAP_00003508", + "BDMAP_00000489", + "BDMAP_00003682", + "BDMAP_00003867", + "BDMAP_00000742", + "BDMAP_00003897", + "BDMAP_00001285", + "BDMAP_00005119", + "BDMAP_00004669", + "BDMAP_00001749", + "BDMAP_00002066", + "BDMAP_00001064", + "BDMAP_00007159", + "BDMAP_00004503", + "BDMAP_00004825", + "BDMAP_00000400", + "BDMAP_00003257", + "BDMAP_00007822", + "BDMAP_00001950", + "BDMAP_00001241", + "BDMAP_00001379", + "BDMAP_00005186", + "BDMAP_00004028", + "BDMAP_00001266", + "BDMAP_00000648", + "BDMAP_00001802", + "BDMAP_00001524", + "BDMAP_00002479", + "BDMAP_00002856", + "BDMAP_00001443", + "BDMAP_00002045", + "BDMAP_00001998", + "BDMAP_00002713", + "BDMAP_00005500", + "BDMAP_00004416", + "BDMAP_00003664", + "BDMAP_00006713", + "BDMAP_00002053", + "BDMAP_00004091", + "BDMAP_00003932", + "BDMAP_00001907", + "BDMAP_00002322", + "BDMAP_00000475", + "BDMAP_00002485", + "BDMAP_00002358", + "BDMAP_00004016", + "BDMAP_00002292", + "BDMAP_00002901", + "BDMAP_00001026", + "BDMAP_00004943", + "BDMAP_00001451", + "BDMAP_00000546", + "BDMAP_00007236", + "BDMAP_00000603", + "BDMAP_00000201", + "BDMAP_00003839", + "BDMAP_00003151", + "BDMAP_00000827", + "BDMAP_00002918", + "BDMAP_00006507", + "BDMAP_00001877", + "BDMAP_00008306", + "BDMAP_00004370", + "BDMAP_00000941", + "BDMAP_00003072", + "BDMAP_00002012", + "BDMAP_00004325", + "BDMAP_00004995", + "BDMAP_00001309", + "BDMAP_00003934", + "BDMAP_00004772", + "BDMAP_00001637", + "BDMAP_00000001", + "BDMAP_00003857", + "BDMAP_00003184", + "BDMAP_00002699", + "BDMAP_00005097", + "BDMAP_00001362", + "BDMAP_00005021", + "BDMAP_00003074", + "BDMAP_00005547", + "BDMAP_00001033", + "BDMAP_00000273", + "BDMAP_00003330", + "BDMAP_00003497", + "BDMAP_00002806", + "BDMAP_00005103", + "BDMAP_00001692", + "BDMAP_00001471", + "BDMAP_00001677", + "BDMAP_00003361", + "BDMAP_00000091", + "BDMAP_00009022", + "BDMAP_00001581", + "BDMAP_00004928", + "BDMAP_00001154", + "BDMAP_00001391", + "BDMAP_00000642", + "BDMAP_00004102", + "BDMAP_00003619", + "BDMAP_00001316", + "BDMAP_00000643", + "BDMAP_00001559", + "BDMAP_00000963", + "BDMAP_00003798", + "BDMAP_00002052", + "BDMAP_00004435", + "BDMAP_00000408", + "BDMAP_00001188", + "BDMAP_00002791", + "BDMAP_00003499", + "BDMAP_00003248", + "BDMAP_00002698", + "BDMAP_00004185", + "BDMAP_00002849", + "BDMAP_00003394", + "BDMAP_00000985", + "BDMAP_00003199", + "BDMAP_00005546", + "BDMAP_00002529", + "BDMAP_00004017", + "BDMAP_00000951", + "BDMAP_00004052", + "BDMAP_00003415", + "BDMAP_00002851", + "BDMAP_00003112", + "BDMAP_00001228", + "BDMAP_00001171", + "BDMAP_00000907", + "BDMAP_00001619", + "BDMAP_00002909", + "BDMAP_00004228", + "BDMAP_00003848", + "BDMAP_00002283", + "BDMAP_00003008", + "BDMAP_00002712", + "BDMAP_00002993", + "BDMAP_00000583", + "BDMAP_00006148", + "BDMAP_00002448", + "BDMAP_00003377", + "BDMAP_00000305", + "BDMAP_00004866", + "BDMAP_00003482", + "BDMAP_00002349", + "BDMAP_00004496", + "BDMAP_00003116", + "BDMAP_00001966", + "BDMAP_00001810", + "BDMAP_00002970", + "BDMAP_00005136", + "BDMAP_00003733", + "BDMAP_00003117", + "BDMAP_00003463", + "BDMAP_00002000", + "BDMAP_00002282", + "BDMAP_00007630", + "BDMAP_00002382", + "BDMAP_00003054", + "BDMAP_00002507", + "BDMAP_00000140", + "BDMAP_00000247", + "BDMAP_00002289", + "BDMAP_00004405", + "BDMAP_00004372", + "BDMAP_00004780", + "BDMAP_00007665", + "BDMAP_00005752", + "BDMAP_00001957", + "BDMAP_00005065", + "BDMAP_00002837", + "BDMAP_00005175", + "BDMAP_00002159", + "BDMAP_00003841", + "BDMAP_00001753", + "BDMAP_00001834", + "BDMAP_00002117", + "BDMAP_00003893", + "BDMAP_00003557", + "BDMAP_00002579", + "BDMAP_00000480", + "BDMAP_00004359", + "BDMAP_00004888", + "BDMAP_00001115", + "BDMAP_00000915", + "BDMAP_00001766", + "BDMAP_00001783", + "BDMAP_00004557", + "BDMAP_00000924", + "BDMAP_00003910", + "BDMAP_00005106", + "BDMAP_00000709", + "BDMAP_00004736", + "BDMAP_00001699", + "BDMAP_00002321", + "BDMAP_00004311", + "BDMAP_00001869", + "BDMAP_00004639", + "BDMAP_00001340", + "BDMAP_00001796", + "BDMAP_00004528", + "BDMAP_00003747", + "BDMAP_00000671", + "BDMAP_00002158", + "BDMAP_00001254", + "BDMAP_00000732", + "BDMAP_00002200", + "BDMAP_00004279", + "BDMAP_00000377", + "BDMAP_00000437", + "BDMAP_00003513", + "BDMAP_00001640", + "BDMAP_00002389", + "BDMAP_00003176", + "BDMAP_00002748", + "BDMAP_00003911", + "BDMAP_00001721", + "BDMAP_00003203", + "BDMAP_00002719", + "BDMAP_00002146", + "BDMAP_00007579", + "BDMAP_00000310", + "BDMAP_00003569", + "BDMAP_00004151", + "BDMAP_00003746", + "BDMAP_00004869", + "BDMAP_00000037", + "BDMAP_00009779", + "BDMAP_00004727", + "BDMAP_00004010", + "BDMAP_00006036", + "BDMAP_00002716", + "BDMAP_00008084", + "BDMAP_00001010", + "BDMAP_00003556", + "BDMAP_00007838", + "BDMAP_00000849", + "BDMAP_00001539", + "BDMAP_00003052", + "BDMAP_00004103", + "BDMAP_00006569", + "BDMAP_00002033", + "BDMAP_00003723", + "BDMAP_00002055", + "BDMAP_00002718", + "BDMAP_00002084", + "BDMAP_00001094", + "BDMAP_00002419", + "BDMAP_00000533", + "BDMAP_00000918", + "BDMAP_00003236", + "BDMAP_00004209", + "BDMAP_00004979", + "BDMAP_00008828", + "BDMAP_00003190", + "BDMAP_00002167", + "BDMAP_00003135", + "BDMAP_00001397", + "BDMAP_00002285", + "BDMAP_00000457", + "BDMAP_00001805", + "BDMAP_00002040", + "BDMAP_00005130", + "BDMAP_00004761", + "BDMAP_00003763", + "BDMAP_00000921", + "BDMAP_00004600", + "BDMAP_00003140", + "BDMAP_00003949", + "BDMAP_00001343", + "BDMAP_00007524", + "BDMAP_00003295", + "BDMAP_00003335", + "BDMAP_00004012", + "BDMAP_00004536", + "BDMAP_00000084", + "BDMAP_00005138", + "BDMAP_00001185", + "BDMAP_00000362", + "BDMAP_00004854", + "BDMAP_00004664", + "BDMAP_00004187", + "BDMAP_00001486", + "BDMAP_00002951", + "BDMAP_00001375", + "BDMAP_00007429", + "BDMAP_00003158", + "BDMAP_00007561", + "BDMAP_00001402", + "BDMAP_00000611", + "BDMAP_00001170", + "BDMAP_00005717", + "BDMAP_00001200", + "BDMAP_00004117", + "BDMAP_00003791", + "BDMAP_00002275", + "BDMAP_00000474", + "BDMAP_00002466", + "BDMAP_00000283", + "BDMAP_00003297", + "BDMAP_00002271", + "BDMAP_00000927", + "BDMAP_00005083", + "BDMAP_00003261", + "BDMAP_00004839", + "BDMAP_00004855", + "BDMAP_00004211", + "BDMAP_00001502", + "BDMAP_00003629", + "BDMAP_00004304", + "BDMAP_00000258", + "BDMAP_00004529", + "BDMAP_00003287", + "BDMAP_00004991", + "BDMAP_00000572", + "BDMAP_00003642", + "BDMAP_00002394", + "BDMAP_00002127", + "BDMAP_00004830", + "BDMAP_00002495", + "BDMAP_00000729", + "BDMAP_00003574", + "BDMAP_00002841", + "BDMAP_00001219", + "BDMAP_00008829", + "BDMAP_00001631", + "BDMAP_00003206", + "BDMAP_00000232", + "BDMAP_00004271", + "BDMAP_00001351", + "BDMAP_00001678", + "BDMAP_00004093", + "BDMAP_00004462", + "BDMAP_00000454", + "BDMAP_00004509", + "BDMAP_00000981", + "BDMAP_00004199", + "BDMAP_00001012", + "BDMAP_00001055", + "BDMAP_00002831", + "BDMAP_00001596", + "BDMAP_00004745", + "BDMAP_00001457", + "BDMAP_00003228", + "BDMAP_00003002", + "BDMAP_00001378", + "BDMAP_00008344", + "BDMAP_00000342", + "BDMAP_00000965", + "BDMAP_00001114", + "BDMAP_00003719", + "BDMAP_00002583", + "BDMAP_00001192", + "BDMAP_00003704", + "BDMAP_00005168", + "BDMAP_00000815", + "BDMAP_00000013", + "BDMAP_00001270", + "BDMAP_00001839", + "BDMAP_00000971", + "BDMAP_00005035", + "BDMAP_00000943", + "BDMAP_00002172", + "BDMAP_00004625", + "BDMAP_00004147", + "BDMAP_00004165", + "BDMAP_00002598", + "BDMAP_00003268", + "BDMAP_00005160", + "BDMAP_00003333", + "BDMAP_00003827", + "BDMAP_00004894", + "BDMAP_00002318", + "BDMAP_00002739", + "BDMAP_00000939", + "BDMAP_00004384", + "BDMAP_00000030", + "BDMAP_00002730", + "BDMAP_00000942", + "BDMAP_00000069", + "BDMAP_00004676", + "BDMAP_00003634", + "BDMAP_00000373", + "BDMAP_00003357", + "BDMAP_00001865", + "BDMAP_00003299", + "BDMAP_00001209", + "BDMAP_00001215", + "BDMAP_00002230", + "BDMAP_00002199", + "BDMAP_00002401", + "BDMAP_00000873", + "BDMAP_00002152", + "BDMAP_00002828", + "BDMAP_00002451", + "BDMAP_00000913", + "BDMAP_00001078", + "BDMAP_00001024", + "BDMAP_00001982", + "BDMAP_00003560", + "BDMAP_00004196", + "BDMAP_00004431", + "BDMAP_00002875", + "BDMAP_00004604", + "BDMAP_00004450", + "BDMAP_00002305", + "BDMAP_00005001", + "BDMAP_00004374", + "BDMAP_00001102", + "BDMAP_00001917", + "BDMAP_00002846", + "BDMAP_00001732", + "BDMAP_00004910", + "BDMAP_00000552", + "BDMAP_00002103", + "BDMAP_00002704", + "BDMAP_00004764", + "BDMAP_00003510", + "BDMAP_00003972", + "BDMAP_00003113", + "BDMAP_00004491", + "BDMAP_00004615", + "BDMAP_00005067", + "BDMAP_00003412", + "BDMAP_00001809", + "BDMAP_00001785", + "BDMAP_00000828", + "BDMAP_00002039", + "BDMAP_00004493", + "BDMAP_00000851", + "BDMAP_00002185", + "BDMAP_00001237", + "BDMAP_00004163", + "BDMAP_00003373", + "BDMAP_00000568", + "BDMAP_00001737", + "BDMAP_00002986", + "BDMAP_00000716", + "BDMAP_00003327", + "BDMAP_00000690", + "BDMAP_00000881", + "BDMAP_00004121", + "BDMAP_00002845", + "BDMAP_00004624", + "BDMAP_00003109", + "BDMAP_00004876", + "BDMAP_00005005", + "BDMAP_00003172", + "BDMAP_00001924", + "BDMAP_00005073", + "BDMAP_00003680", + "BDMAP_00000874", + "BDMAP_00000132", + "BDMAP_00001438", + "BDMAP_00004650", + "BDMAP_00005016", + "BDMAP_00002924", + "BDMAP_00002458", + "BDMAP_00000190", + "BDMAP_00003640", + "BDMAP_00001514", + "BDMAP_00003031", + "BDMAP_00001985", + "BDMAP_00004415", + "BDMAP_00001015", + "BDMAP_00014516", + "BDMAP_00014627", + "BDMAP_00014630", + "BDMAP_00014552", + "BDMAP_00014557", + "BDMAP_00014629", + "BDMAP_00014507", + "BDMAP_00014618", + "BDMAP_00014569", + "BDMAP_00014493", + "BDMAP_00014633", + "BDMAP_00014576", + "BDMAP_00014581", + "BDMAP_00014635", + "BDMAP_00014521", + "BDMAP_00014506", + "BDMAP_00014517", + "BDMAP_00014567", + "BDMAP_00014636", + "BDMAP_00014520", + "BDMAP_00014582", + "BDMAP_00014536", + "BDMAP_00014525", + "BDMAP_00014486", + "BDMAP_00014496", + "BDMAP_00014545", + "BDMAP_00014547", + "BDMAP_00014490", + "BDMAP_00014625", + "BDMAP_00014513", + "BDMAP_00014535", + "BDMAP_00014632", + "BDMAP_00014541", + "BDMAP_00014522", + "BDMAP_00014508", + "BDMAP_00014578", + "BDMAP_00014494", + "BDMAP_00014562", + "BDMAP_00014534", + "BDMAP_00014553", + "BDMAP_00014566", + "BDMAP_00014542", + "BDMAP_00014612", + "BDMAP_00014614", + "BDMAP_00014637", + "BDMAP_00014631", + "BDMAP_00014619", + "BDMAP_00014498", + "BDMAP_00014570", + "BDMAP_00014624", + "BDMAP_00014503", + "BDMAP_00014573", + "BDMAP_00014546", + "BDMAP_00014626", + "BDMAP_00014526", + "BDMAP_00014488", + "BDMAP_00014524", + "BDMAP_00014528", + "BDMAP_00014617", + "BDMAP_00014518", + "BDMAP_00014571", + "BDMAP_00014551", + "BDMAP_00014515", + "BDMAP_00014561", + "BDMAP_00014616", + "BDMAP_00014580", + "BDMAP_00014492", + "BDMAP_00014514", + "BDMAP_00014533", + "BDMAP_00014620", + "BDMAP_00014558", + "BDMAP_00014610", + "BDMAP_00014510", + "BDMAP_00014512", + "BDMAP_00014583", + "BDMAP_00014628", + "BDMAP_00014579", + "BDMAP_00014537", + "BDMAP_00014615", + "BDMAP_00014568", + "BDMAP_00014539", + "BDMAP_00014556", + "BDMAP_00014491", + "BDMAP_00014495", + "BDMAP_00014549", + "BDMAP_00014554", + "BDMAP_00014565", + "BDMAP_00014504", + "BDMAP_00014485", + "BDMAP_00014575", + "BDMAP_00014563", + "BDMAP_00014574", + "BDMAP_00014572", + "BDMAP_00014499", + "BDMAP_00014559", + "BDMAP_00014530", + "BDMAP_00014505", + "BDMAP_00014532", + "BDMAP_00014564", + "BDMAP_00014497", + "BDMAP_00014538", + "BDMAP_00014519", + "BDMAP_00014544", + "BDMAP_00014555", + "BDMAP_00014527", + "BDMAP_00014611", + "BDMAP_00014577", + "BDMAP_00014634", + "BDMAP_00014613", + "BDMAP_00014584", + "BDMAP_00014509", + "BDMAP_00014523", + "BDMAP_00014543", + "BDMAP_00014502", + "BDMAP_00014622", + "BDMAP_00014540", + "BDMAP_00014500", + "BDMAP_00014548", + "BDMAP_00014529", + "BDMAP_00014550", + "BDMAP_00014623", + "BDMAP_00014487", + "BDMAP_00014531", + "BDMAP_00014501", + "BDMAP_00014484", + "BDMAP_00014489", + "BDMAP_00014511", + "BDMAP_00014560", + "BDMAP_00014621", + "BDMAP_00022490", + "BDMAP_00022418", + "BDMAP_00022453", + "BDMAP_00022438", + "BDMAP_00022413", + "BDMAP_00022469", + "BDMAP_00022436", + "BDMAP_00022443", + "BDMAP_00022427", + "BDMAP_00022416", + "BDMAP_00022421", + "BDMAP_00022434", + "BDMAP_00022473", + "BDMAP_00022440", + "BDMAP_00022439", + "BDMAP_00022433", + "BDMAP_00022446", + "BDMAP_00022475", + "BDMAP_00022414", + "BDMAP_00022431", + "BDMAP_00022432", + "BDMAP_00022428", + "BDMAP_00022481", + "BDMAP_00022489", + "BDMAP_00022462", + "BDMAP_00022437", + "BDMAP_00022467", + "BDMAP_00022420", + "BDMAP_00022474", + "BDMAP_00022426", + "BDMAP_00022466", + "BDMAP_00022463", + "BDMAP_00022451", + "BDMAP_00022461", + "BDMAP_00022472", + "BDMAP_00022423", + "BDMAP_00022456", + "BDMAP_00022455", + "BDMAP_00022429", + "BDMAP_00022487", + "BDMAP_00022419", + "BDMAP_00022422", + "BDMAP_00022448", + "BDMAP_00022415", + "BDMAP_00022454", + "BDMAP_00022477", + "BDMAP_00022444", + "BDMAP_00022435", + "BDMAP_00022417", + "BDMAP_00022478", + "BDMAP_00022445", + "BDMAP_00022442", + "BDMAP_00022465", + "BDMAP_00022412", + "BDMAP_00022424", + "BDMAP_00022458" + ], + "val": [ + "BDMAP_00000332", + "BDMAP_00004858", + "BDMAP_00005155", + "BDMAP_00001205", + "BDMAP_00004770", + "BDMAP_00001361", + "BDMAP_00002944", + "BDMAP_00003961", + "BDMAP_00000430", + "BDMAP_00000679", + "BDMAP_00003809", + "BDMAP_00004115", + "BDMAP_00003367", + "BDMAP_00002899", + "BDMAP_00003771", + "BDMAP_00003502", + "BDMAP_00001628", + "BDMAP_00003884", + "BDMAP_00005074", + "BDMAP_00003114", + "BDMAP_00004741", + "BDMAP_00001746", + "BDMAP_00002603", + "BDMAP_00004128", + "BDMAP_00000487", + "BDMAP_00002631", + "BDMAP_00002744", + "BDMAP_00000833", + "BDMAP_00002648", + "BDMAP_00000375", + "BDMAP_00000608", + "BDMAP_00001352", + "BDMAP_00002775", + "BDMAP_00002474", + "BDMAP_00000458", + "BDMAP_00000511", + "BDMAP_00003150", + "BDMAP_00000794", + "BDMAP_00001255", + "BDMAP_00002242", + "BDMAP_00003205", + "BDMAP_00002181", + "BDMAP_00003486", + "BDMAP_00004250", + "BDMAP_00002453", + "BDMAP_00003164", + "BDMAP_00004578", + "BDMAP_00001735", + "BDMAP_00004281", + "BDMAP_00003481", + "BDMAP_00001786", + "BDMAP_00000101", + "BDMAP_00001813", + "BDMAP_00000615", + "BDMAP_00003170", + "BDMAP_00004378", + "BDMAP_00004704", + "BDMAP_00003439", + "BDMAP_00002717", + "BDMAP_00001981", + "BDMAP_00000100", + "BDMAP_00001018", + "BDMAP_00002214", + "BDMAP_00001198", + "BDMAP_00001962", + "BDMAP_00002463", + "BDMAP_00005139", + "BDMAP_00000831", + "BDMAP_00002955", + "BDMAP_00003272", + "BDMAP_00000745", + "BDMAP_00000138", + "BDMAP_00000152", + "BDMAP_00000264", + "BDMAP_00000345", + "BDMAP_00000547", + "BDMAP_00001095", + "BDMAP_00001212", + "BDMAP_00001426", + "BDMAP_00001445", + "BDMAP_00001598", + "BDMAP_00001769", + "BDMAP_00001835", + "BDMAP_00001875", + "BDMAP_00002253", + "BDMAP_00002465", + "BDMAP_00002612", + "BDMAP_00002654", + "BDMAP_00003111", + "BDMAP_00003564", + "BDMAP_00003847", + "BDMAP_00003890", + "BDMAP_00003946", + "BDMAP_00004558", + "BDMAP_00004783", + "BDMAP_00005170", + "BDMAP_00014585", + "BDMAP_00014586", + "BDMAP_00014587", + "BDMAP_00014588", + "BDMAP_00014589", + "BDMAP_00014590", + "BDMAP_00014591", + "BDMAP_00014592", + "BDMAP_00014593", + "BDMAP_00014594", + "BDMAP_00014595", + "BDMAP_00014596", + "BDMAP_00014597", + "BDMAP_00014598", + "BDMAP_00014599", + "BDMAP_00014600", + "BDMAP_00014601", + "BDMAP_00014602", + "BDMAP_00014603", + "BDMAP_00014604", + "BDMAP_00014605", + "BDMAP_00014606", + "BDMAP_00014607", + "BDMAP_00014608", + "BDMAP_00014609", + "BDMAP_00022471", + "BDMAP_00022449", + "BDMAP_00022488", + "BDMAP_00022479", + "BDMAP_00022486", + "BDMAP_00022484", + "BDMAP_00022450", + "BDMAP_00022468", + "BDMAP_00022476", + "BDMAP_00022459", + "BDMAP_00022447", + "BDMAP_00022460", + "BDMAP_00022425", + "BDMAP_00022470", + "BDMAP_00022483", + "BDMAP_00022457", + "BDMAP_00022430", + "BDMAP_00022480", + "BDMAP_00022482", + "BDMAP_00022452", + "BDMAP_00022464", + "BDMAP_00022441", + "BDMAP_00022485" + ] + } +] \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_all2.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_all2.json new file mode 100644 index 0000000000000000000000000000000000000000..2105815a1071a9c5d567c0cf4403c94138e2de89 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_all2.json @@ -0,0 +1,2208 @@ +[ + { + "train": [ + "BDMAP_00002376", + "BDMAP_00001520", + "BDMAP_00014542", + "BDMAP_00005168", + "BDMAP_00002720", + "BDMAP_00000549", + "BDMAP_00002221", + "BDMAP_00002353", + "BDMAP_00014502", + "BDMAP_00004345", + "BDMAP_00002342", + "BDMAP_00004384", + "BDMAP_00000978", + "BDMAP_00002665", + "BDMAP_00000802", + "BDMAP_00000980", + "BDMAP_00002496", + "BDMAP_00002380", + "BDMAP_00002881", + "BDMAP_00002831", + "BDMAP_00022463", + "BDMAP_00004415", + "BDMAP_00001458", + "BDMAP_00003525", + "BDMAP_00004359", + "BDMAP_00001419", + "BDMAP_00000347", + "BDMAP_00003152", + "BDMAP_00002055", + "BDMAP_00001987", + "BDMAP_00000336", + "BDMAP_00001791", + "BDMAP_00001225", + "BDMAP_00002051", + "BDMAP_00003451", + "BDMAP_00004066", + "BDMAP_00009779", + "BDMAP_00001802", + "BDMAP_00014539", + "BDMAP_00003168", + "BDMAP_00003429", + "BDMAP_00002171", + "BDMAP_00002260", + "BDMAP_00001744", + "BDMAP_00003514", + "BDMAP_00001640", + "BDMAP_00014633", + "BDMAP_00000844", + "BDMAP_00003508", + "BDMAP_00008568", + "BDMAP_00005009", + "BDMAP_00022416", + "BDMAP_00022453", + "BDMAP_00002580", + "BDMAP_00000848", + "BDMAP_00000569", + "BDMAP_00003028", + "BDMAP_00001950", + "BDMAP_00000640", + "BDMAP_00003666", + "BDMAP_00002661", + "BDMAP_00001868", + "BDMAP_00000305", + "BDMAP_00002444", + "BDMAP_00004184", + "BDMAP_00004407", + "BDMAP_00002117", + "BDMAP_00003822", + "BDMAP_00022437", + "BDMAP_00002396", + "BDMAP_00000484", + "BDMAP_00002199", + "BDMAP_00000023", + "BDMAP_00001619", + "BDMAP_00000447", + "BDMAP_00000643", + "BDMAP_00002060", + "BDMAP_00002417", + "BDMAP_00001322", + "BDMAP_00003252", + "BDMAP_00001721", + "BDMAP_00002930", + "BDMAP_00001233", + "BDMAP_00000363", + "BDMAP_00001920", + "BDMAP_00001944", + "BDMAP_00001906", + "BDMAP_00000480", + "BDMAP_00002080", + "BDMAP_00001830", + "BDMAP_00000062", + "BDMAP_00014520", + "BDMAP_00004031", + "BDMAP_00000462", + "BDMAP_00003722", + "BDMAP_00001107", + "BDMAP_00002501", + "BDMAP_00004722", + "BDMAP_00004995", + "BDMAP_00000117", + "BDMAP_00004604", + "BDMAP_00004928", + "BDMAP_00001690", + "BDMAP_00001247", + "BDMAP_00002359", + "BDMAP_00002167", + "BDMAP_00000265", + "BDMAP_00000283", + "BDMAP_00005030", + "BDMAP_00002849", + "BDMAP_00004259", + "BDMAP_00022446", + "BDMAP_00000698", + "BDMAP_00002216", + "BDMAP_00014562", + "BDMAP_00000382", + "BDMAP_00002347", + "BDMAP_00000271", + "BDMAP_00001796", + "BDMAP_00002791", + "BDMAP_00001703", + "BDMAP_00000533", + "BDMAP_00005092", + "BDMAP_00002425", + "BDMAP_00001562", + "BDMAP_00003447", + "BDMAP_00002448", + "BDMAP_00005103", + "BDMAP_00001451", + "BDMAP_00002289", + "BDMAP_00004315", + "BDMAP_00000587", + "BDMAP_00003531", + "BDMAP_00002127", + "BDMAP_00014536", + "BDMAP_00004199", + "BDMAP_00000810", + "BDMAP_00001977", + "BDMAP_00003717", + "BDMAP_00001379", + "BDMAP_00003930", + "BDMAP_00002803", + "BDMAP_00002389", + "BDMAP_00014617", + "BDMAP_00001517", + "BDMAP_00000330", + "BDMAP_00003422", + "BDMAP_00022433", + "BDMAP_00002762", + "BDMAP_00000687", + "BDMAP_00002133", + "BDMAP_00002152", + "BDMAP_00000968", + "BDMAP_00000030", + "BDMAP_00004030", + "BDMAP_00000862", + "BDMAP_00000032", + "BDMAP_00003898", + "BDMAP_00005175", + "BDMAP_00005005", + "BDMAP_00004211", + "BDMAP_00001800", + "BDMAP_00004910", + "BDMAP_00000454", + "BDMAP_00004450", + "BDMAP_00004491", + "BDMAP_00000839", + "BDMAP_00014634", + "BDMAP_00004327", + "BDMAP_00007561", + "BDMAP_00003411", + "BDMAP_00000449", + "BDMAP_00004163", + "BDMAP_00001633", + "BDMAP_00002211", + "BDMAP_00003264", + "BDMAP_00009277", + "BDMAP_00001732", + "BDMAP_00003762", + "BDMAP_00000309", + "BDMAP_00001408", + "BDMAP_00002488", + "BDMAP_00002233", + "BDMAP_00003324", + "BDMAP_00002924", + "BDMAP_00000112", + "BDMAP_00002091", + "BDMAP_00003438", + "BDMAP_00001057", + "BDMAP_00002022", + "BDMAP_00001077", + "BDMAP_00002931", + "BDMAP_00004437", + "BDMAP_00004148", + "BDMAP_00000167", + "BDMAP_00002991", + "BDMAP_00004303", + "BDMAP_00001246", + "BDMAP_00001575", + "BDMAP_00001104", + "BDMAP_00014531", + "BDMAP_00003412", + "BDMAP_00005162", + "BDMAP_00004487", + "BDMAP_00001313", + "BDMAP_00004023", + "BDMAP_00001539", + "BDMAP_00003194", + "BDMAP_00000984", + "BDMAP_00000175", + "BDMAP_00000010", + "BDMAP_00002153", + "BDMAP_00004154", + "BDMAP_00000836", + "BDMAP_00001858", + "BDMAP_00004897", + "BDMAP_00002278", + "BDMAP_00005157", + "BDMAP_00000204", + "BDMAP_00001221", + "BDMAP_00002258", + "BDMAP_00001511", + "BDMAP_00000583", + "BDMAP_00002524", + "BDMAP_00000446", + "BDMAP_00001092", + "BDMAP_00022421", + "BDMAP_00004339", + "BDMAP_00001624", + "BDMAP_00004049", + "BDMAP_00000009", + "BDMAP_00000646", + "BDMAP_00002220", + "BDMAP_00000324", + "BDMAP_00001865", + "BDMAP_00004297", + "BDMAP_00000571", + "BDMAP_00001026", + "BDMAP_00000355", + "BDMAP_00000120", + "BDMAP_00003735", + "BDMAP_00003361", + "BDMAP_00001183", + "BDMAP_00003400", + "BDMAP_00003897", + "BDMAP_00000542", + "BDMAP_00001894", + "BDMAP_00022438", + "BDMAP_00003228", + "BDMAP_00000396", + "BDMAP_00000498", + "BDMAP_00002394", + "BDMAP_00000540", + "BDMAP_00000464", + "BDMAP_00003767", + "BDMAP_00000620", + "BDMAP_00003815", + "BDMAP_00004416", + "BDMAP_00001015", + "BDMAP_00002854", + "BDMAP_00003121", + "BDMAP_00001711", + "BDMAP_00000301", + "BDMAP_00000273", + "BDMAP_00002403", + "BDMAP_00001731", + "BDMAP_00003513", + "BDMAP_00022429", + "BDMAP_00002401", + "BDMAP_00005001", + "BDMAP_00000400", + "BDMAP_00002507", + "BDMAP_00007524", + "BDMAP_00004956", + "BDMAP_00006533", + "BDMAP_00003979", + "BDMAP_00003816", + "BDMAP_00001200", + "BDMAP_00002184", + "BDMAP_00001219", + "BDMAP_00014577", + "BDMAP_00000713", + "BDMAP_00004198", + "BDMAP_00001078", + "BDMAP_00002146", + "BDMAP_00005067", + "BDMAP_00004867", + "BDMAP_00000616", + "BDMAP_00000476", + "BDMAP_00002170", + "BDMAP_00004855", + "BDMAP_00001208", + "BDMAP_00003143", + "BDMAP_00004878", + "BDMAP_00004888", + "BDMAP_00022481", + "BDMAP_00004212", + "BDMAP_00002527", + "BDMAP_00006534", + "BDMAP_00003932", + "BDMAP_00004982", + "BDMAP_00000667", + "BDMAP_00002920", + "BDMAP_00000088", + "BDMAP_00001753", + "BDMAP_00004605", + "BDMAP_00004903", + "BDMAP_00001930", + "BDMAP_00004830", + "BDMAP_00005167", + "BDMAP_00004286", + "BDMAP_00000529", + "BDMAP_00014504", + "BDMAP_00001093", + "BDMAP_00001831", + "BDMAP_00014548", + "BDMAP_00014535", + "BDMAP_00003483", + "BDMAP_00004165", + "BDMAP_00000162", + "BDMAP_00014528", + "BDMAP_00000548", + "BDMAP_00003733", + "BDMAP_00003440", + "BDMAP_00002582", + "BDMAP_00002970", + "BDMAP_00001877", + "BDMAP_00003031", + "BDMAP_00000491", + "BDMAP_00003140", + "BDMAP_00000219", + "BDMAP_00000963", + "BDMAP_00002570", + "BDMAP_00001907", + "BDMAP_00002901", + "BDMAP_00000098", + "BDMAP_00004108", + "BDMAP_00022455", + "BDMAP_00004150", + "BDMAP_00000815", + "BDMAP_00001947", + "BDMAP_00004414", + "BDMAP_00002918", + "BDMAP_00001309", + "BDMAP_00004624", + "BDMAP_00003336", + "BDMAP_00004528", + "BDMAP_00004895", + "BDMAP_00002828", + "BDMAP_00000178", + "BDMAP_00000603", + "BDMAP_00001913", + "BDMAP_00000913", + "BDMAP_00003319", + "BDMAP_00014566", + "BDMAP_00002552", + "BDMAP_00002305", + "BDMAP_00004408", + "BDMAP_00000936", + "BDMAP_00001464", + "BDMAP_00001431", + "BDMAP_00000250", + "BDMAP_00014501", + "BDMAP_00008617", + "BDMAP_00002264", + "BDMAP_00014624", + "BDMAP_00002505", + "BDMAP_00004175", + "BDMAP_00002583", + "BDMAP_00001268", + "BDMAP_00002143", + "BDMAP_00001416", + "BDMAP_00014532", + "BDMAP_00003072", + "BDMAP_00007822", + "BDMAP_00003390", + "BDMAP_00000508", + "BDMAP_00003141", + "BDMAP_00004838", + "BDMAP_00003638", + "BDMAP_00003373", + "BDMAP_00003869", + "BDMAP_00014611", + "BDMAP_00001612", + "BDMAP_00003195", + "BDMAP_00000368", + "BDMAP_00000254", + "BDMAP_00000245", + "BDMAP_00001302", + "BDMAP_00001676", + "BDMAP_00001752", + "BDMAP_00003245", + "BDMAP_00002431", + "BDMAP_00003579", + "BDMAP_00001362", + "BDMAP_00001456", + "BDMAP_00001607", + "BDMAP_00014574", + "BDMAP_00014619", + "BDMAP_00002011", + "BDMAP_00004980", + "BDMAP_00001242", + "BDMAP_00000149", + "BDMAP_00003337", + "BDMAP_00000805", + "BDMAP_00003008", + "BDMAP_00003032", + "BDMAP_00003848", + "BDMAP_00000398", + "BDMAP_00000565", + "BDMAP_00003744", + "BDMAP_00003268", + "BDMAP_00000201", + "BDMAP_00000373", + "BDMAP_00001500", + "BDMAP_00002029", + "BDMAP_00000192", + "BDMAP_00002419", + "BDMAP_00009876", + "BDMAP_00002422", + "BDMAP_00004796", + "BDMAP_00000719", + "BDMAP_00003415", + "BDMAP_00005174", + "BDMAP_00000434", + "BDMAP_00014510", + "BDMAP_00001513", + "BDMAP_00003484", + "BDMAP_00003443", + "BDMAP_00003052", + "BDMAP_00004294", + "BDMAP_00001504", + "BDMAP_00003857", + "BDMAP_00002579", + "BDMAP_00014497", + "BDMAP_00003619", + "BDMAP_00000001", + "BDMAP_00005169", + "BDMAP_00001766", + "BDMAP_00002451", + "BDMAP_00002981", + "BDMAP_00022419", + "BDMAP_00004529", + "BDMAP_00003777", + "BDMAP_00001064", + "BDMAP_00014635", + "BDMAP_00001277", + "BDMAP_00001055", + "BDMAP_00000249", + "BDMAP_00002000", + "BDMAP_00000971", + "BDMAP_00000090", + "BDMAP_00003199", + "BDMAP_00000146", + "BDMAP_00000807", + "BDMAP_00004552", + "BDMAP_00000423", + "BDMAP_00001360", + "BDMAP_00000106", + "BDMAP_00000941", + "BDMAP_00001188", + "BDMAP_00006181", + "BDMAP_00004373", + "BDMAP_00001261", + "BDMAP_00001023", + "BDMAP_00000641", + "BDMAP_00014547", + "BDMAP_00001833", + "BDMAP_00004328", + "BDMAP_00001288", + "BDMAP_00000488", + "BDMAP_00001777", + "BDMAP_00002086", + "BDMAP_00001749", + "BDMAP_00004954", + "BDMAP_00002326", + "BDMAP_00002182", + "BDMAP_00003910", + "BDMAP_00008555", + "BDMAP_00000210", + "BDMAP_00001880", + "BDMAP_00002331", + "BDMAP_00003172", + "BDMAP_00004735", + "BDMAP_00002379", + "BDMAP_00004549", + "BDMAP_00014513", + "BDMAP_00004017", + "BDMAP_00003971", + "BDMAP_00000310", + "BDMAP_00003364", + "BDMAP_00003215", + "BDMAP_00000270", + "BDMAP_00002464", + "BDMAP_00000160", + "BDMAP_00001705", + "BDMAP_00002484", + "BDMAP_00001602", + "BDMAP_00000416", + "BDMAP_00003629", + "BDMAP_00000366", + "BDMAP_00005165", + "BDMAP_00000304", + "BDMAP_00003294", + "BDMAP_00003206", + "BDMAP_00008828", + "BDMAP_00004479", + "BDMAP_00005537", + "BDMAP_00000552", + "BDMAP_00005078", + "BDMAP_00003113", + "BDMAP_00004027", + "BDMAP_00000868", + "BDMAP_00001122", + "BDMAP_00001708", + "BDMAP_00000555", + "BDMAP_00000656", + "BDMAP_00001678", + "BDMAP_00001476", + "BDMAP_00004927", + "BDMAP_00001905", + "BDMAP_00001495", + "BDMAP_00014540", + "BDMAP_00000124", + "BDMAP_00000104", + "BDMAP_00004737", + "BDMAP_00001583", + "BDMAP_00002340", + "BDMAP_00004106", + "BDMAP_00004598", + "BDMAP_00001996", + "BDMAP_00001794", + "BDMAP_00014543", + "BDMAP_00002479", + "BDMAP_00001027", + "BDMAP_00001892", + "BDMAP_00002407", + "BDMAP_00003631", + "BDMAP_00001425", + "BDMAP_00022465", + "BDMAP_00004773", + "BDMAP_00014627", + "BDMAP_00004917", + "BDMAP_00002166", + "BDMAP_00002292", + "BDMAP_00001803", + "BDMAP_00000086", + "BDMAP_00003603", + "BDMAP_00000477", + "BDMAP_00022456", + "BDMAP_00006043", + "BDMAP_00001441", + "BDMAP_00002075", + "BDMAP_00002290", + "BDMAP_00004652", + "BDMAP_00004016", + "BDMAP_00004496", + "BDMAP_00002884", + "BDMAP_00003200", + "BDMAP_00002798", + "BDMAP_00001402", + "BDMAP_00001075", + "BDMAP_00002298", + "BDMAP_00003435", + "BDMAP_00001263", + "BDMAP_00001035", + "BDMAP_00001737", + "BDMAP_00005138", + "BDMAP_00002382", + "BDMAP_00002495", + "BDMAP_00000342", + "BDMAP_00001622", + "BDMAP_00003861", + "BDMAP_00001952", + "BDMAP_00003680", + "BDMAP_00001004", + "BDMAP_00002198", + "BDMAP_00004343", + "BDMAP_00001427", + "BDMAP_00004772", + "BDMAP_00005148", + "BDMAP_00003615", + "BDMAP_00000939", + "BDMAP_00000528", + "BDMAP_00000753", + "BDMAP_00001175", + "BDMAP_00004968", + "BDMAP_00002546", + "BDMAP_00001024", + "BDMAP_00000981", + "BDMAP_00001310", + "BDMAP_00014564", + "BDMAP_00001490", + "BDMAP_00001251", + "BDMAP_00000596", + "BDMAP_00003326", + "BDMAP_00003827", + "BDMAP_00002571", + "BDMAP_00001228", + "BDMAP_00000896", + "BDMAP_00005077", + "BDMAP_00004104", + "BDMAP_00014494", + "BDMAP_00004331", + "BDMAP_00001296", + "BDMAP_00000681", + "BDMAP_00001929", + "BDMAP_00003444", + "BDMAP_00003051", + "BDMAP_00005097", + "BDMAP_00002368", + "BDMAP_00014575", + "BDMAP_00004926", + "BDMAP_00022417", + "BDMAP_00004295", + "BDMAP_00003363", + "BDMAP_00003479", + "BDMAP_00001422", + "BDMAP_00003236", + "BDMAP_00004616", + "BDMAP_00004550", + "BDMAP_00022475", + "BDMAP_00001923", + "BDMAP_00004499", + "BDMAP_00000059", + "BDMAP_00003396", + "BDMAP_00004489", + "BDMAP_00004815", + "BDMAP_00002933", + "BDMAP_00001784", + "BDMAP_00003882", + "BDMAP_00001939", + "BDMAP_00004288", + "BDMAP_00001596", + "BDMAP_00000546", + "BDMAP_00000255", + "BDMAP_00001982", + "BDMAP_00002021", + "BDMAP_00004068", + "BDMAP_00002194", + "BDMAP_00000311", + "BDMAP_00000035", + "BDMAP_00002481", + "BDMAP_00000432", + "BDMAP_00001094", + "BDMAP_00014534", + "BDMAP_00005547", + "BDMAP_00002713", + "BDMAP_00014560", + "BDMAP_00014489", + "BDMAP_00001102", + "BDMAP_00004712", + "BDMAP_00004158", + "BDMAP_00000706", + "BDMAP_00000742", + "BDMAP_00003918", + "BDMAP_00003330", + "BDMAP_00003297", + "BDMAP_00000080", + "BDMAP_00000471", + "BDMAP_00002902", + "BDMAP_00022458", + "BDMAP_00000039", + "BDMAP_00000437", + "BDMAP_00001618", + "BDMAP_00000232", + "BDMAP_00001099", + "BDMAP_00000036", + "BDMAP_00022413", + "BDMAP_00000607", + "BDMAP_00000657", + "BDMAP_00002033", + "BDMAP_00001736", + "BDMAP_00002823", + "BDMAP_00005898", + "BDMAP_00003207", + "BDMAP_00004196", + "BDMAP_00001413", + "BDMAP_00001635", + "BDMAP_00001530", + "BDMAP_00004316", + "BDMAP_00003952", + "BDMAP_00000012", + "BDMAP_00003358", + "BDMAP_00001209", + "BDMAP_00004536", + "BDMAP_00002349", + "BDMAP_00004843", + "BDMAP_00000915", + "BDMAP_00022462", + "BDMAP_00005120", + "BDMAP_00000122", + "BDMAP_00000843", + "BDMAP_00014618", + "BDMAP_00005166", + "BDMAP_00003281", + "BDMAP_00005154", + "BDMAP_00001285", + "BDMAP_00004847", + "BDMAP_00000686", + "BDMAP_00001001", + "BDMAP_00001857", + "BDMAP_00000874", + "BDMAP_00003976", + "BDMAP_00001218", + "BDMAP_00001910", + "BDMAP_00002712", + "BDMAP_00000408", + "BDMAP_00004293", + "BDMAP_00000362", + "BDMAP_00003129", + "BDMAP_00003959", + "BDMAP_00004738", + "BDMAP_00004077", + "BDMAP_00004943", + "BDMAP_00004510", + "BDMAP_00002083", + "BDMAP_00004673", + "BDMAP_00022445", + "BDMAP_00000321", + "BDMAP_00000604", + "BDMAP_00000159", + "BDMAP_00001429", + "BDMAP_00002698", + "BDMAP_00004146", + "BDMAP_00001260", + "BDMAP_00001192", + "BDMAP_00014555", + "BDMAP_00002285", + "BDMAP_00003614", + "BDMAP_00001460", + "BDMAP_00004527", + "BDMAP_00003657", + "BDMAP_00004183", + "BDMAP_00001978", + "BDMAP_00003427", + "BDMAP_00003073", + "BDMAP_00002442", + "BDMAP_00014613", + "BDMAP_00001088", + "BDMAP_00000754", + "BDMAP_00004923", + "BDMAP_00002104", + "BDMAP_00003746", + "BDMAP_00000163", + "BDMAP_00004669", + "BDMAP_00003553", + "BDMAP_00003312", + "BDMAP_00002262", + "BDMAP_00001776", + "BDMAP_00001561", + "BDMAP_00001540", + "BDMAP_00000837", + "BDMAP_00001759", + "BDMAP_00001343", + "BDMAP_00002111", + "BDMAP_00000998", + "BDMAP_00001332", + "BDMAP_00002977", + "BDMAP_00000033", + "BDMAP_00001041", + "BDMAP_00003895", + "BDMAP_00001772", + "BDMAP_00002617", + "BDMAP_00000225", + "BDMAP_00014500", + "BDMAP_00001549", + "BDMAP_00002638", + "BDMAP_00002793", + "BDMAP_00004627", + "BDMAP_00014578", + "BDMAP_00002381", + "BDMAP_00003658", + "BDMAP_00007579", + "BDMAP_00004130", + "BDMAP_00002716", + "BDMAP_00004398", + "BDMAP_00003791", + "BDMAP_00009022", + "BDMAP_00002328", + "BDMAP_00004296", + "BDMAP_00002383", + "BDMAP_00000262", + "BDMAP_00001701", + "BDMAP_00000410", + "BDMAP_00002176", + "BDMAP_00001860", + "BDMAP_00001740", + "BDMAP_00002500", + "BDMAP_00001898", + "BDMAP_00004325", + "BDMAP_00000767", + "BDMAP_00000851", + "BDMAP_00003320", + "BDMAP_00003973", + "BDMAP_00000918", + "BDMAP_00022426", + "BDMAP_00001571", + "BDMAP_00000989", + "BDMAP_00002804", + "BDMAP_00008389", + "BDMAP_00003074", + "BDMAP_00001471", + "BDMAP_00014491", + "BDMAP_00001762", + "BDMAP_00001266", + "BDMAP_00014514", + "BDMAP_00004457", + "BDMAP_00001806", + "BDMAP_00006036", + "BDMAP_00004615", + "BDMAP_00001096", + "BDMAP_00001421", + "BDMAP_00005114", + "BDMAP_00001465", + "BDMAP_00003493", + "BDMAP_00003672", + "BDMAP_00003463", + "BDMAP_00002653", + "BDMAP_00005546", + "BDMAP_00001985", + "BDMAP_00003758", + "BDMAP_00002250", + "BDMAP_00004664", + "BDMAP_00002203", + "BDMAP_00000788", + "BDMAP_00002710", + "BDMAP_00001518", + "BDMAP_00014615", + "BDMAP_00002808", + "BDMAP_00003510", + "BDMAP_00002943", + "BDMAP_00002049", + "BDMAP_00004264", + "BDMAP_00014503", + "BDMAP_00002304", + "BDMAP_00001817", + "BDMAP_00002158", + "BDMAP_00004195", + "BDMAP_00001045", + "BDMAP_00000081", + "BDMAP_00003327", + "BDMAP_00003642", + "BDMAP_00002095", + "BDMAP_00009738", + "BDMAP_00001050", + "BDMAP_00003116", + "BDMAP_00000965", + "BDMAP_00002067", + "BDMAP_00014626", + "BDMAP_00004193", + "BDMAP_00000418", + "BDMAP_00000626", + "BDMAP_00000660", + "BDMAP_00014565", + "BDMAP_00003193", + "BDMAP_00005063", + "BDMAP_00002439", + "BDMAP_00022477", + "BDMAP_00002719", + "BDMAP_00014614", + "BDMAP_00014545", + "BDMAP_00000824", + "BDMAP_00008128", + "BDMAP_00000043", + "BDMAP_00003520", + "BDMAP_00003972", + "BDMAP_00000517", + "BDMAP_00000695", + "BDMAP_00003359", + "BDMAP_00001822", + "BDMAP_00000744", + "BDMAP_00002937", + "BDMAP_00001286", + "BDMAP_00002040", + "BDMAP_00014493", + "BDMAP_00001751", + "BDMAP_00001376", + "BDMAP_00003832", + "BDMAP_00001971", + "BDMAP_00003392", + "BDMAP_00003900", + "BDMAP_00000522", + "BDMAP_00004368", + "BDMAP_00001407", + "BDMAP_00004231", + "BDMAP_00022434", + "BDMAP_00002310", + "BDMAP_00000564", + "BDMAP_00003697", + "BDMAP_00000926", + "BDMAP_00003409", + "BDMAP_00001502", + "BDMAP_00001187", + "BDMAP_00000935", + "BDMAP_00003070", + "BDMAP_00004682", + "BDMAP_00005108", + "BDMAP_00000799", + "BDMAP_00003955", + "BDMAP_00000931", + "BDMAP_00022427", + "BDMAP_00003683", + "BDMAP_00022442", + "BDMAP_00003183", + "BDMAP_00003277", + "BDMAP_00000771", + "BDMAP_00004901", + "BDMAP_00000977", + "BDMAP_00000139", + "BDMAP_00004253", + "BDMAP_00000293", + "BDMAP_00004347", + "BDMAP_00002492", + "BDMAP_00002173", + "BDMAP_00001370", + "BDMAP_00001563", + "BDMAP_00002178", + "BDMAP_00001440", + "BDMAP_00001227", + "BDMAP_00003038", + "BDMAP_00005717", + "BDMAP_00001921", + "BDMAP_00001545", + "BDMAP_00003230", + "BDMAP_00000812", + "BDMAP_00002129", + "BDMAP_00000420", + "BDMAP_00003190", + "BDMAP_00004990", + "BDMAP_00001222", + "BDMAP_00002387", + "BDMAP_00001457", + "BDMAP_00001826", + "BDMAP_00004493", + "BDMAP_00001319", + "BDMAP_00000344", + "BDMAP_00003381", + "BDMAP_00000452", + "BDMAP_00004887", + "BDMAP_00004074", + "BDMAP_00002201", + "BDMAP_00003261", + "BDMAP_00003776", + "BDMAP_00002675", + "BDMAP_00004745", + "BDMAP_00004052", + "BDMAP_00002909", + "BDMAP_00001564", + "BDMAP_00003957", + "BDMAP_00002390", + "BDMAP_00022422", + "BDMAP_00001836", + "BDMAP_00000756", + "BDMAP_00022478", + "BDMAP_00002864", + "BDMAP_00005186", + "BDMAP_00002248", + "BDMAP_00001644", + "BDMAP_00014622", + "BDMAP_00003774", + "BDMAP_00002243", + "BDMAP_00003560", + "BDMAP_00001805", + "BDMAP_00001845", + "BDMAP_00002227", + "BDMAP_00000642", + "BDMAP_00005016", + "BDMAP_00003721", + "BDMAP_00003650", + "BDMAP_00001632", + "BDMAP_00000923", + "BDMAP_00005185", + "BDMAP_00000492", + "BDMAP_00002321", + "BDMAP_00000481", + "BDMAP_00003640", + "BDMAP_00001420", + "BDMAP_00003808", + "BDMAP_00001949", + "BDMAP_00002042", + "BDMAP_00004764", + "BDMAP_00022448", + "BDMAP_00000518", + "BDMAP_00001298", + "BDMAP_00003719", + "BDMAP_00003506", + "BDMAP_00000285", + "BDMAP_00000388", + "BDMAP_00000634", + "BDMAP_00003036", + "BDMAP_00001862", + "BDMAP_00002573", + "BDMAP_00001521", + "BDMAP_00003529", + "BDMAP_00001126", + "BDMAP_00003543", + "BDMAP_00002043", + "BDMAP_00001912", + "BDMAP_00002728", + "BDMAP_00003457", + "BDMAP_00014505", + "BDMAP_00000709", + "BDMAP_00002235", + "BDMAP_00001103", + "BDMAP_00003394", + "BDMAP_00002928", + "BDMAP_00002205", + "BDMAP_00002164", + "BDMAP_00004260", + "BDMAP_00004866", + "BDMAP_00001461", + "BDMAP_00000394", + "BDMAP_00003530", + "BDMAP_00001241", + "BDMAP_00003300", + "BDMAP_00003465", + "BDMAP_00001638", + "BDMAP_00003219", + "BDMAP_00003343", + "BDMAP_00000215", + "BDMAP_00003307", + "BDMAP_00003441", + "BDMAP_00022487", + "BDMAP_00002012", + "BDMAP_00001620", + "BDMAP_00001863", + "BDMAP_00002834", + "BDMAP_00000229", + "BDMAP_00001580", + "BDMAP_00004719", + "BDMAP_00003752", + "BDMAP_00000882", + "BDMAP_00002840", + "BDMAP_00005141", + "BDMAP_00002313", + "BDMAP_00001747", + "BDMAP_00001324", + "BDMAP_00000751", + "BDMAP_00002244", + "BDMAP_00003357", + "BDMAP_00001397", + "BDMAP_00000369", + "BDMAP_00000558", + "BDMAP_00004763", + "BDMAP_00000849", + "BDMAP_00000469", + "BDMAP_00000859", + "BDMAP_00000942", + "BDMAP_00001444", + "BDMAP_00002410", + "BDMAP_00004304", + "BDMAP_00000711", + "BDMAP_00002472", + "BDMAP_00001544", + "BDMAP_00005105", + "BDMAP_00002271", + "BDMAP_00014518", + "BDMAP_00003853", + "BDMAP_00014567", + "BDMAP_00000773", + "BDMAP_00003260", + "BDMAP_00000069", + "BDMAP_00004012", + "BDMAP_00003580", + "BDMAP_00002204", + "BDMAP_00003087", + "BDMAP_00004992", + "BDMAP_00004588", + "BDMAP_00001516", + "BDMAP_00001637", + "BDMAP_00002096", + "BDMAP_00001473", + "BDMAP_00001842", + "BDMAP_00002147", + "BDMAP_00004609", + "BDMAP_00000356", + "BDMAP_00014554", + "BDMAP_00004216", + "BDMAP_00003849", + "BDMAP_00014571", + "BDMAP_00003158", + "BDMAP_00004262", + "BDMAP_00000778", + "BDMAP_00014516", + "BDMAP_00003749", + "BDMAP_00002099", + "BDMAP_00000541", + "BDMAP_00003133", + "BDMAP_00002191", + "BDMAP_00000240", + "BDMAP_00022424", + "BDMAP_00001059", + "BDMAP_00001323", + "BDMAP_00000417", + "BDMAP_00014623", + "BDMAP_00002057", + "BDMAP_00002355", + "BDMAP_00007629", + "BDMAP_00014637", + "BDMAP_00006713", + "BDMAP_00002017", + "BDMAP_00003356", + "BDMAP_00014580", + "BDMAP_00003257", + "BDMAP_00000389", + "BDMAP_00001999", + "BDMAP_00003004", + "BDMAP_00000828", + "BDMAP_00002574", + "BDMAP_00004744", + "BDMAP_00001945", + "BDMAP_00008084", + "BDMAP_00002108", + "BDMAP_00008526", + "BDMAP_00004509", + "BDMAP_00002871", + "BDMAP_00014490", + "BDMAP_00002275", + "BDMAP_00003601", + "BDMAP_00000499", + "BDMAP_00003998", + "BDMAP_00001328", + "BDMAP_00001804", + "BDMAP_00000827", + "BDMAP_00001184", + "BDMAP_00001553", + "BDMAP_00008085", + "BDMAP_00000855", + "BDMAP_00014628", + "BDMAP_00003376", + "BDMAP_00004459", + "BDMAP_00000329", + "BDMAP_00002545", + "BDMAP_00002456", + "BDMAP_00001809", + "BDMAP_00000233", + "BDMAP_00002309", + "BDMAP_00001168", + "BDMAP_00004922", + "BDMAP_00000574", + "BDMAP_00001070", + "BDMAP_00001873", + "BDMAP_00000618", + "BDMAP_00004991", + "BDMAP_00001410", + "BDMAP_00001117", + "BDMAP_00003867", + "BDMAP_00003727", + "BDMAP_00000972", + "BDMAP_00001946", + "BDMAP_00014631", + "BDMAP_00004641", + "BDMAP_00000044", + "BDMAP_00004636", + "BDMAP_00014552", + "BDMAP_00002833", + "BDMAP_00001699", + "BDMAP_00004856", + "BDMAP_00001254", + "BDMAP_00001677", + "BDMAP_00000920", + "BDMAP_00003054", + "BDMAP_00000161", + "BDMAP_00003177", + "BDMAP_00001237", + "BDMAP_00001590", + "BDMAP_00001631", + "BDMAP_00001305", + "BDMAP_00002106", + "BDMAP_00005113", + "BDMAP_00003250", + "BDMAP_00001649", + "BDMAP_00001841", + "BDMAP_00014636", + "BDMAP_00002234", + "BDMAP_00001325", + "BDMAP_00002889", + "BDMAP_00001480", + "BDMAP_00003646", + "BDMAP_00000716", + "BDMAP_00004013", + "BDMAP_00002105", + "BDMAP_00000084", + "BDMAP_00000653", + "BDMAP_00000428", + "BDMAP_00000185", + "BDMAP_00000792", + "BDMAP_00000725", + "BDMAP_00004886", + "BDMAP_00000188", + "BDMAP_00001639", + "BDMAP_00004625", + "BDMAP_00002511", + "BDMAP_00022435", + "BDMAP_00008306", + "BDMAP_00004129", + "BDMAP_00003664", + "BDMAP_00000438", + "BDMAP_00000169", + "BDMAP_00005500", + "BDMAP_00002509", + "BDMAP_00001230", + "BDMAP_00002120", + "BDMAP_00004793", + "BDMAP_00001089", + "BDMAP_00000834", + "BDMAP_00000239", + "BDMAP_00005020", + "BDMAP_00003824", + "BDMAP_00002135", + "BDMAP_00001688", + "BDMAP_00001236", + "BDMAP_00000327", + "BDMAP_00005171", + "BDMAP_00002596", + "BDMAP_00003197", + "BDMAP_00014569", + "BDMAP_00022431", + "BDMAP_00003184", + "BDMAP_00014523", + "BDMAP_00004850", + "BDMAP_00002050", + "BDMAP_00003117", + "BDMAP_00003220", + "BDMAP_00001483", + "BDMAP_00002990", + "BDMAP_00001614", + "BDMAP_00000671", + "BDMAP_00000961", + "BDMAP_00003893", + "BDMAP_00003833", + "BDMAP_00001970", + "BDMAP_00002434", + "BDMAP_00002190", + "BDMAP_00000987", + "BDMAP_00002695", + "BDMAP_00000732", + "BDMAP_00001340", + "BDMAP_00004467", + "BDMAP_00000319", + "BDMAP_00003576", + "BDMAP_00001411", + "BDMAP_00001316", + "BDMAP_00000263", + "BDMAP_00000584", + "BDMAP_00003889", + "BDMAP_00000956", + "BDMAP_00002318", + "BDMAP_00001908", + "BDMAP_00002475", + "BDMAP_00001341", + "BDMAP_00000666", + "BDMAP_00002655", + "BDMAP_00005017", + "BDMAP_00004925", + "BDMAP_00001634", + "BDMAP_00000258", + "BDMAP_00001351", + "BDMAP_00000052", + "BDMAP_00001807", + "BDMAP_00000661", + "BDMAP_00001378", + "BDMAP_00002322", + "BDMAP_00001167", + "BDMAP_00001917", + "BDMAP_00004503", + "BDMAP_00000694", + "BDMAP_00001524", + "BDMAP_00005753", + "BDMAP_00001559", + "BDMAP_00001438", + "BDMAP_00002251", + "BDMAP_00003590", + "BDMAP_00005099", + "BDMAP_00001193", + "BDMAP_00003839", + "BDMAP_00005046", + "BDMAP_00002487", + "BDMAP_00001647", + "BDMAP_00014632", + "BDMAP_00000692", + "BDMAP_00022466", + "BDMAP_00001154", + "BDMAP_00001565", + "BDMAP_00004121", + "BDMAP_00000921", + "BDMAP_00003682", + "BDMAP_00000699", + "BDMAP_00004825", + "BDMAP_00002437", + "BDMAP_00014550", + "BDMAP_00003923", + "BDMAP_00001071", + "BDMAP_00001275", + "BDMAP_00014576", + "BDMAP_00003255", + "BDMAP_00003633", + "BDMAP_00001710", + "BDMAP_00000034", + "BDMAP_00003886", + "BDMAP_00003491", + "BDMAP_00004600", + "BDMAP_00004048", + "BDMAP_00002485", + "BDMAP_00005075", + "BDMAP_00022439", + "BDMAP_00004771", + "BDMAP_00005021", + "BDMAP_00002523", + "BDMAP_00004671", + "BDMAP_00004541", + "BDMAP_00000154", + "BDMAP_00014521", + "BDMAP_00000917", + "BDMAP_00001839", + "BDMAP_00005140", + "BDMAP_00002498", + "BDMAP_00004876", + "BDMAP_00002288", + "BDMAP_00000568", + "BDMAP_00001368", + "BDMAP_00003385", + "BDMAP_00003138", + "BDMAP_00014621", + "BDMAP_00000510", + "BDMAP_00004581", + "BDMAP_00002295", + "BDMAP_00014572", + "BDMAP_00000741", + "BDMAP_00003723", + "BDMAP_00001801", + "BDMAP_00001453", + "BDMAP_00004417", + "BDMAP_00000465", + "BDMAP_00003713", + "BDMAP_00001799", + "BDMAP_00002027", + "BDMAP_00001556", + "BDMAP_00000601", + "BDMAP_00001995", + "BDMAP_00000506", + "BDMAP_00000983", + "BDMAP_00000982", + "BDMAP_00003736", + "BDMAP_00004224", + "BDMAP_00004374", + "BDMAP_00001870", + "BDMAP_00002906", + "BDMAP_00022415", + "BDMAP_00000544", + "BDMAP_00003019", + "BDMAP_00003949", + "BDMAP_00000087", + "BDMAP_00002690", + "BDMAP_00005037", + "BDMAP_00003256", + "BDMAP_00002306", + "BDMAP_00000176", + "BDMAP_00007159", + "BDMAP_00004508", + "BDMAP_00003253", + "BDMAP_00022490", + "BDMAP_00001997", + "BDMAP_00004817", + "BDMAP_00000611", + "BDMAP_00000377", + "BDMAP_00001339", + "BDMAP_00001697", + "BDMAP_00004620", + "BDMAP_00002319", + "BDMAP_00001789", + "BDMAP_00001782", + "BDMAP_00005081", + "BDMAP_00004087", + "BDMAP_00000881", + "BDMAP_00002361", + "BDMAP_00000916", + "BDMAP_00002688", + "BDMAP_00003035", + "BDMAP_00003947", + "BDMAP_00002126", + "BDMAP_00000436", + "BDMAP_00004575", + "BDMAP_00001239", + "BDMAP_00001108", + "BDMAP_00003806", + "BDMAP_00002619", + "BDMAP_00001489", + "BDMAP_00014579", + "BDMAP_00003956", + "BDMAP_00002333", + "BDMAP_00000486", + "BDMAP_00000102", + "BDMAP_00000513", + "BDMAP_00002929", + "BDMAP_00003002", + "BDMAP_00014561", + "BDMAP_00004389", + "BDMAP_00022454", + "BDMAP_00001105", + "BDMAP_00004228", + "BDMAP_00002267", + "BDMAP_00001581", + "BDMAP_00004693", + "BDMAP_00001706", + "BDMAP_00001112", + "BDMAP_00001066", + "BDMAP_00004462", + "BDMAP_00001025", + "BDMAP_00004633", + "BDMAP_00007398", + "BDMAP_00002807", + "BDMAP_00002232", + "BDMAP_00004209", + "BDMAP_00000256", + "BDMAP_00003781", + "BDMAP_00003574", + "BDMAP_00000435", + "BDMAP_00003911", + "BDMAP_00001998", + "BDMAP_00002087", + "BDMAP_00006148", + "BDMAP_00000902", + "BDMAP_00002677", + "BDMAP_00004841", + "BDMAP_00014610", + "BDMAP_00022444", + "BDMAP_00001779", + "BDMAP_00002254", + "BDMAP_00014538", + "BDMAP_00014495", + "BDMAP_00000632", + "BDMAP_00002656", + "BDMAP_00001557", + "BDMAP_00002041", + "BDMAP_00004746", + "BDMAP_00004759", + "BDMAP_00000614", + "BDMAP_00003153", + "BDMAP_00001443", + "BDMAP_00001065", + "BDMAP_00001273", + "BDMAP_00001335", + "BDMAP_00014484", + "BDMAP_00000276", + "BDMAP_00000358", + "BDMAP_00004592", + "BDMAP_00002265", + "BDMAP_00002257", + "BDMAP_00002408", + "BDMAP_00000121", + "BDMAP_00003701", + "BDMAP_00002846", + "BDMAP_00000196", + "BDMAP_00001522", + "BDMAP_00005150", + "BDMAP_00003499", + "BDMAP_00004278", + "BDMAP_00000153", + "BDMAP_00003841", + "BDMAP_00014508", + "BDMAP_00004736", + "BDMAP_00014546", + "BDMAP_00000234", + "BDMAP_00001507", + "BDMAP_00000186", + "BDMAP_00004033", + "BDMAP_00004717", + "BDMAP_00001396", + "BDMAP_00002077", + "BDMAP_00000940", + "BDMAP_00001333", + "BDMAP_00006569", + "BDMAP_00004350", + "BDMAP_00001258", + "BDMAP_00000602", + "BDMAP_00000648", + "BDMAP_00003425", + "BDMAP_00001867", + "BDMAP_00002458", + "BDMAP_00002616", + "BDMAP_00003301", + "BDMAP_00002282", + "BDMAP_00003798", + "BDMAP_00000091", + "BDMAP_00007665", + "BDMAP_00000365", + "BDMAP_00014511", + "BDMAP_00001238", + "BDMAP_00001663", + "BDMAP_00003600", + "BDMAP_00001924", + "BDMAP_00002689", + "BDMAP_00022443", + "BDMAP_00002230", + "BDMAP_00001028", + "BDMAP_00003347", + "BDMAP_00000924", + "BDMAP_00004880", + "BDMAP_00004809", + "BDMAP_00014506", + "BDMAP_00000690", + "BDMAP_00000391", + "BDMAP_00001584", + "BDMAP_00002018", + "BDMAP_00001605", + "BDMAP_00002460", + "BDMAP_00005085", + "BDMAP_00000442", + "BDMAP_00001141", + "BDMAP_00005151", + "BDMAP_00000883", + "BDMAP_00002085", + "BDMAP_00001003", + "BDMAP_00004447", + "BDMAP_00005160", + "BDMAP_00003509", + "BDMAP_00000871", + "BDMAP_00022440", + "BDMAP_00002446", + "BDMAP_00000867", + "BDMAP_00000013", + "BDMAP_00001889", + "BDMAP_00001707", + "BDMAP_00004405", + "BDMAP_00003634", + "BDMAP_00002185", + "BDMAP_00001918", + "BDMAP_00000359", + "BDMAP_00000714", + "BDMAP_00000572", + "BDMAP_00001283", + "BDMAP_00002188", + "BDMAP_00000582", + "BDMAP_00000908", + "BDMAP_00004870", + "BDMAP_00003612", + "BDMAP_00001589", + "BDMAP_00000133", + "BDMAP_00003592", + "BDMAP_00002562", + "BDMAP_00000649", + "BDMAP_00014507", + "BDMAP_00000740", + "BDMAP_00014620", + "BDMAP_00003811", + "BDMAP_00004181", + "BDMAP_00004869", + "BDMAP_00000943", + "BDMAP_00014630", + "BDMAP_00003711", + "BDMAP_00003812", + "BDMAP_00002362", + "BDMAP_00002711", + "BDMAP_00002708", + "BDMAP_00000668", + "BDMAP_00014509", + "BDMAP_00002936", + "BDMAP_00001853", + "BDMAP_00003461", + "BDMAP_00004804", + "BDMAP_00004885", + "BDMAP_00002518", + "BDMAP_00001033", + "BDMAP_00002175", + "BDMAP_00000331", + "BDMAP_00001067", + "BDMAP_00002805", + "BDMAP_00000715", + "BDMAP_00022474", + "BDMAP_00001432", + "BDMAP_00002806", + "BDMAP_00014492", + "BDMAP_00004586", + "BDMAP_00005130", + "BDMAP_00001768", + "BDMAP_00002335", + "BDMAP_00001823", + "BDMAP_00002598", + "BDMAP_00000853", + "BDMAP_00000803", + "BDMAP_00001109", + "BDMAP_00004651", + "BDMAP_00002122", + "BDMAP_00000214", + "BDMAP_00002005", + "BDMAP_00002737", + "BDMAP_00004460", + "BDMAP_00001896", + "BDMAP_00002896", + "BDMAP_00004317", + "BDMAP_00001072", + "BDMAP_00003963", + "BDMAP_00003239", + "BDMAP_00005083", + "BDMAP_00001851", + "BDMAP_00003225", + "BDMAP_00000128", + "BDMAP_00001252", + "BDMAP_00002421", + "BDMAP_00003034", + "BDMAP_00000951", + "BDMAP_00004101", + "BDMAP_00002411", + "BDMAP_00002426", + "BDMAP_00002760", + "BDMAP_00003240", + "BDMAP_00022418", + "BDMAP_00002609", + "BDMAP_00003287", + "BDMAP_00004808", + "BDMAP_00001125", + "BDMAP_00003685", + "BDMAP_00000457", + "BDMAP_00002468", + "BDMAP_00005064", + "BDMAP_00001720", + "BDMAP_00014551", + "BDMAP_00000758", + "BDMAP_00014582", + "BDMAP_00001211", + "BDMAP_00003551", + "BDMAP_00000623", + "BDMAP_00004829", + "BDMAP_00001664", + "BDMAP_00000037", + "BDMAP_00001636", + "BDMAP_00002663", + "BDMAP_00002440", + "BDMAP_00014616", + "BDMAP_00022461", + "BDMAP_00001486", + "BDMAP_00002052", + "BDMAP_00004780", + "BDMAP_00000008", + "BDMAP_00000927", + "BDMAP_00004727", + "BDMAP_00014556", + "BDMAP_00003244", + "BDMAP_00002471", + "BDMAP_00000429", + "BDMAP_00004979", + "BDMAP_00002951", + "BDMAP_00000241", + "BDMAP_00001265", + "BDMAP_00001375", + "BDMAP_00000890", + "BDMAP_00002966", + "BDMAP_00002626", + "BDMAP_00004679", + "BDMAP_00003598", + "BDMAP_00014486", + "BDMAP_00003299", + "BDMAP_00001134", + "BDMAP_00002746", + "BDMAP_00001543", + "BDMAP_00003109", + "BDMAP_00014581", + "BDMAP_00001869", + "BDMAP_00002845", + "BDMAP_00014573", + "BDMAP_00004998", + "BDMAP_00002851", + "BDMAP_00000676", + "BDMAP_00002748", + "BDMAP_00001434", + "BDMAP_00004257", + "BDMAP_00022469", + "BDMAP_00014544", + "BDMAP_00014530", + "BDMAP_00002699", + "BDMAP_00001629", + "BDMAP_00001114", + "BDMAP_00004645", + "BDMAP_00002076", + "BDMAP_00008829", + "BDMAP_00003203", + "BDMAP_00000282", + "BDMAP_00001689", + "BDMAP_00002581", + "BDMAP_00004481", + "BDMAP_00022423", + "BDMAP_00004511", + "BDMAP_00014512", + "BDMAP_00002039", + "BDMAP_00000701", + "BDMAP_00004839", + "BDMAP_00002466", + "BDMAP_00014526", + "BDMAP_00005444", + "BDMAP_00004475", + "BDMAP_00003535", + "BDMAP_00014499", + "BDMAP_00003823", + "BDMAP_00004639", + "BDMAP_00000826", + "BDMAP_00001685", + "BDMAP_00001085", + "BDMAP_00002186", + "BDMAP_00001359", + "BDMAP_00007200", + "BDMAP_00014584", + "BDMAP_00004011", + "BDMAP_00004650", + "BDMAP_00002065", + "BDMAP_00000333", + "BDMAP_00001656", + "BDMAP_00001692", + "BDMAP_00000053", + "BDMAP_00007838", + "BDMAP_00004427", + "BDMAP_00001020", + "BDMAP_00002084", + "BDMAP_00001783", + "BDMAP_00014487", + "BDMAP_00003497", + "BDMAP_00004834", + "BDMAP_00002226", + "BDMAP_00002045", + "BDMAP_00014537", + "BDMAP_00002758", + "BDMAP_00003549", + "BDMAP_00001840", + "BDMAP_00004268", + "BDMAP_00002993", + "BDMAP_00005152", + "BDMAP_00006623", + "BDMAP_00001215", + "BDMAP_00000279", + "BDMAP_00004187", + "BDMAP_00014515", + "BDMAP_00004229", + "BDMAP_00014525", + "BDMAP_00000197", + "BDMAP_00000340", + "BDMAP_00022412", + "BDMAP_00000562", + "BDMAP_00004144", + "BDMAP_00000466", + "BDMAP_00003258", + "BDMAP_00003377", + "BDMAP_00000748", + "BDMAP_00014488", + "BDMAP_00000207", + "BDMAP_00003840", + "BDMAP_00001475", + "BDMAP_00002066", + "BDMAP_00001957", + "BDMAP_00000006", + "BDMAP_00002863", + "BDMAP_00003984", + "BDMAP_00002315", + "BDMAP_00001548", + "BDMAP_00014612", + "BDMAP_00002948", + "BDMAP_00003524", + "BDMAP_00001272", + "BDMAP_00004420", + "BDMAP_00004579", + "BDMAP_00022451", + "BDMAP_00001550", + "BDMAP_00000414", + "BDMAP_00003406", + "BDMAP_00002592", + "BDMAP_00003151", + "BDMAP_00001519", + "BDMAP_00002986", + "BDMAP_00022473", + "BDMAP_00002252", + "BDMAP_00004844", + "BDMAP_00004065", + "BDMAP_00000259", + "BDMAP_00022432", + "BDMAP_00000190", + "BDMAP_00000947", + "BDMAP_00000244", + "BDMAP_00001390", + "BDMAP_00002723", + "BDMAP_00004083", + "BDMAP_00004969", + "BDMAP_00004395", + "BDMAP_00000809", + "BDMAP_00004147", + "BDMAP_00002332", + "BDMAP_00005073", + "BDMAP_00005399", + "BDMAP_00001911", + "BDMAP_00003694", + "BDMAP_00005192", + "BDMAP_00001079", + "BDMAP_00004702", + "BDMAP_00004561", + "BDMAP_00001927", + "BDMAP_00008525", + "BDMAP_00002959", + "BDMAP_00000113", + "BDMAP_00014583", + "BDMAP_00002504", + "BDMAP_00001474", + "BDMAP_00004597", + "BDMAP_00000489", + "BDMAP_00004397", + "BDMAP_00002718", + "BDMAP_00002432", + "BDMAP_00003994", + "BDMAP_00000376", + "BDMAP_00002103", + "BDMAP_00004102", + "BDMAP_00005022", + "BDMAP_00002945", + "BDMAP_00001185", + "BDMAP_00002354", + "BDMAP_00003178", + "BDMAP_00004372", + "BDMAP_00001119", + "BDMAP_00000038", + "BDMAP_00014529", + "BDMAP_00001133", + "BDMAP_00005198", + "BDMAP_00002856", + "BDMAP_00001383", + "BDMAP_00004349", + "BDMAP_00001891", + "BDMAP_00003128", + "BDMAP_00007259", + "BDMAP_00000205", + "BDMAP_00004208", + "BDMAP_00001903", + "BDMAP_00004672", + "BDMAP_00008388", + "BDMAP_00001684", + "BDMAP_00003920", + "BDMAP_00002992", + "BDMAP_00002855", + "BDMAP_00003039", + "BDMAP_00001966", + "BDMAP_00004981", + "BDMAP_00001646", + "BDMAP_00001257", + "BDMAP_00022420", + "BDMAP_00004854", + "BDMAP_00003295", + "BDMAP_00001760", + "BDMAP_00004185", + "BDMAP_00001671", + "BDMAP_00004103", + "BDMAP_00014522", + "BDMAP_00000889", + "BDMAP_00002837", + "BDMAP_00001757", + "BDMAP_00008305", + "BDMAP_00001380", + "BDMAP_00004494", + "BDMAP_00007236", + "BDMAP_00001597", + "BDMAP_00003254", + "BDMAP_00022436", + "BDMAP_00002893", + "BDMAP_00007630", + "BDMAP_00003943", + "BDMAP_00001828", + "BDMAP_00004060", + "BDMAP_00002172", + "BDMAP_00000011", + "BDMAP_00002136", + "BDMAP_00002373", + "BDMAP_00002673", + "BDMAP_00000403", + "BDMAP_00002035", + "BDMAP_00001810", + "BDMAP_00002788", + "BDMAP_00003747", + "BDMAP_00000470", + "BDMAP_00001083", + "BDMAP_00004232", + "BDMAP_00003058", + "BDMAP_00003996", + "BDMAP_00002398", + "BDMAP_00002090", + "BDMAP_00008344", + "BDMAP_00000439", + "BDMAP_00003851", + "BDMAP_00000696", + "BDMAP_00004482", + "BDMAP_00003763", + "BDMAP_00005070", + "BDMAP_00000683", + "BDMAP_00001780", + "BDMAP_00002826", + "BDMAP_00004015", + "BDMAP_00002009", + "BDMAP_00001487", + "BDMAP_00002953", + "BDMAP_00000765", + "BDMAP_00003384", + "BDMAP_00003315", + "BDMAP_00001496", + "BDMAP_00003017", + "BDMAP_00001610", + "BDMAP_00002558", + "BDMAP_00004964", + "BDMAP_00000948", + "BDMAP_00002730", + "BDMAP_00014558", + "BDMAP_00002940", + "BDMAP_00002358", + "BDMAP_00000431", + "BDMAP_00000662", + "BDMAP_00001818", + "BDMAP_00004194", + "BDMAP_00004984", + "BDMAP_00014519", + "BDMAP_00002037", + "BDMAP_00014563", + "BDMAP_00002739", + "BDMAP_00000093", + "BDMAP_00003112", + "BDMAP_00004676", + "BDMAP_00000364", + "BDMAP_00002776", + "BDMAP_00002942", + "BDMAP_00004014", + "BDMAP_00001128", + "BDMAP_00003759", + "BDMAP_00000985", + "BDMAP_00001437", + "BDMAP_00004431", + "BDMAP_00001967", + "BDMAP_00004279", + "BDMAP_00002844", + "BDMAP_00000444", + "BDMAP_00003556", + "BDMAP_00014496", + "BDMAP_00001040", + "BDMAP_00004010", + "BDMAP_00000017", + "BDMAP_00000297", + "BDMAP_00001617", + "BDMAP_00004546", + "BDMAP_00002312", + "BDMAP_00003587", + "BDMAP_00001739", + "BDMAP_00000516", + "BDMAP_00001931", + "BDMAP_00000137", + "BDMAP_00000993", + "BDMAP_00000595", + "BDMAP_00001190", + "BDMAP_00002829", + "BDMAP_00001414", + "BDMAP_00003059", + "BDMAP_00002300", + "BDMAP_00014559", + "BDMAP_00000338", + "BDMAP_00000140", + "BDMAP_00001785", + "BDMAP_00014629", + "BDMAP_00004890", + "BDMAP_00002947", + "BDMAP_00001882", + "BDMAP_00000280", + "BDMAP_00003769", + "BDMAP_00007429", + "BDMAP_00006472", + "BDMAP_00004514", + "BDMAP_00014557", + "BDMAP_00001010", + "BDMAP_00014498", + "BDMAP_00001391", + "BDMAP_00001012", + "BDMAP_00004289", + "BDMAP_00005119", + "BDMAP_00002402", + "BDMAP_00002344", + "BDMAP_00004551", + "BDMAP_00022467", + "BDMAP_00004836", + "BDMAP_00003740", + "BDMAP_00000525", + "BDMAP_00001281", + "BDMAP_00002529", + "BDMAP_00001654", + "BDMAP_00000536", + "BDMAP_00000907", + "BDMAP_00003202", + "BDMAP_00004557", + "BDMAP_00003329", + "BDMAP_00001560", + "BDMAP_00004495", + "BDMAP_00002263", + "BDMAP_00001523", + "BDMAP_00001140", + "BDMAP_00003248", + "BDMAP_00003455", + "BDMAP_00001170", + "BDMAP_00022489", + "BDMAP_00002324", + "BDMAP_00001514", + "BDMAP_00000427", + "BDMAP_00004018", + "BDMAP_00001455", + "BDMAP_00001878", + "BDMAP_00004894", + "BDMAP_00004686", + "BDMAP_00004630", + "BDMAP_00014524", + "BDMAP_00003132", + "BDMAP_00003934", + "BDMAP_00002053", + "BDMAP_00000475", + "BDMAP_00001754", + "BDMAP_00003558", + "BDMAP_00002478", + "BDMAP_00002751", + "BDMAP_00000474", + "BDMAP_00001171", + "BDMAP_00000236", + "BDMAP_00002476", + "BDMAP_00002870", + "BDMAP_00000132", + "BDMAP_00004761", + "BDMAP_00014485", + "BDMAP_00000575", + "BDMAP_00001256", + "BDMAP_00000670", + "BDMAP_00001941", + "BDMAP_00004097", + "BDMAP_00002480", + "BDMAP_00005136", + "BDMAP_00004608", + "BDMAP_00002068", + "BDMAP_00000873", + "BDMAP_00005065", + "BDMAP_00002522", + "BDMAP_00002302", + "BDMAP_00000353", + "BDMAP_00003608", + "BDMAP_00000589", + "BDMAP_00001289", + "BDMAP_00005191", + "BDMAP_00002404", + "BDMAP_00000243", + "BDMAP_00000247", + "BDMAP_00000445", + "BDMAP_00001852", + "BDMAP_00000606", + "BDMAP_00005006", + "BDMAP_00004091", + "BDMAP_00000411", + "BDMAP_00002433", + "BDMAP_00014625", + "BDMAP_00002873", + "BDMAP_00001226", + "BDMAP_00000774", + "BDMAP_00001770", + "BDMAP_00004271", + "BDMAP_00002841", + "BDMAP_00002707", + "BDMAP_00014553", + "BDMAP_00009367", + "BDMAP_00003613", + "BDMAP_00002237", + "BDMAP_00022428", + "BDMAP_00003063", + "BDMAP_00002273", + "BDMAP_00003176", + "BDMAP_00002363", + "BDMAP_00000463", + "BDMAP_00002813", + "BDMAP_00000505", + "BDMAP_00000320", + "BDMAP_00001673", + "BDMAP_00004311", + "BDMAP_00005035", + "BDMAP_00001450", + "BDMAP_00002284", + "BDMAP_00002875", + "BDMAP_00002283", + "BDMAP_00000503", + "BDMAP_00002696", + "BDMAP_00004435", + "BDMAP_00001403", + "BDMAP_00001214", + "BDMAP_00000567", + "BDMAP_00001452", + "BDMAP_00001876", + "BDMAP_00000524", + "BDMAP_00002815", + "BDMAP_00002163", + "BDMAP_00004454", + "BDMAP_00004775", + "BDMAP_00003569", + "BDMAP_00002441", + "BDMAP_00001669", + "BDMAP_00003083", + "BDMAP_00014549", + "BDMAP_00003130", + "BDMAP_00014568", + "BDMAP_00004131", + "BDMAP_00006507", + "BDMAP_00002200", + "BDMAP_00002107", + "BDMAP_00000887", + "BDMAP_00002114", + "BDMAP_00004039", + "BDMAP_00001068", + "BDMAP_00003448", + "BDMAP_00004093", + "BDMAP_00001115", + "BDMAP_00003656", + "BDMAP_00003880", + "BDMAP_00001270", + "BDMAP_00004117", + "BDMAP_00014570", + "BDMAP_00002538", + "BDMAP_00003024", + "BDMAP_00000129", + "BDMAP_00000729", + "BDMAP_00001704", + "BDMAP_00000557", + "BDMAP_00003482", + "BDMAP_00014533", + "BDMAP_00000532", + "BDMAP_00000724", + "BDMAP_00004370", + "BDMAP_00002115", + "BDMAP_00001919", + "BDMAP_00002159", + "BDMAP_00001834", + "BDMAP_00002519", + "BDMAP_00001130", + "BDMAP_00005752", + "BDMAP_00001568", + "BDMAP_00003516", + "BDMAP_00001533", + "BDMAP_00002462", + "BDMAP_00000520", + "BDMAP_00001331", + "BDMAP_00003557", + "BDMAP_00003928", + "BDMAP_00002742", + "BDMAP_00001223", + "BDMAP_00002074", + "BDMAP_00022472", + "BDMAP_00003581", + "BDMAP_00014527", + "BDMAP_00003189", + "BDMAP_00004265", + "BDMAP_00002537", + "BDMAP_00001161", + "BDMAP_00003333", + "BDMAP_00004354", + "BDMAP_00003335", + "BDMAP_00000413", + "BDMAP_00003135", + "BDMAP_00004028", + "BDMAP_00014517", + "BDMAP_00002787", + "BDMAP_00000066", + "BDMAP_00005106", + "BDMAP_00003704", + "BDMAP_00014541", + "BDMAP_00001536", + "BDMAP_00022414", + "BDMAP_00002704", + "BDMAP_00004151", + "BDMAP_00003456", + "BDMAP_00001679", + "BDMAP_00001138", + "BDMAP_00002393", + "BDMAP_00002089", + "BDMAP_00000579", + "BDMAP_00001169", + "BDMAP_00003626", + "BDMAP_00000710", + "BDMAP_00001712" + ], + "val": [ + "BDMAP_00004281", + "BDMAP_00003481", + "BDMAP_00001786", + "BDMAP_00000101", + "BDMAP_00001813", + "BDMAP_00000615", + "BDMAP_00003170", + "BDMAP_00004378", + "BDMAP_00004704", + "BDMAP_00003439", + "BDMAP_00002717", + "BDMAP_00001981", + "BDMAP_00000100", + "BDMAP_00001018", + "BDMAP_00002214", + "BDMAP_00001198", + "BDMAP_00001962", + "BDMAP_00002463", + "BDMAP_00005139", + "BDMAP_00000831", + "BDMAP_00002955", + "BDMAP_00003272", + "BDMAP_00000745" + ] + } +] \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_all3.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_all3.json new file mode 100644 index 0000000000000000000000000000000000000000..2971ee50af7d5ec33c994e2d9b4ef94578e30aa1 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_all3.json @@ -0,0 +1,2394 @@ +[ + { + "train": [ + "BDMAP_00014634", + "BDMAP_00014562", + "BDMAP_00001263", + "BDMAP_00004031", + "BDMAP_00003363", + "BDMAP_00005097", + "BDMAP_00001265", + "BDMAP_00001343", + "BDMAP_00001223", + "BDMAP_00001328", + "BDMAP_00008526", + "BDMAP_00002986", + "BDMAP_00001580", + "BDMAP_00004796", + "BDMAP_00001794", + "BDMAP_00002504", + "BDMAP_00000439", + "BDMAP_00000301", + "BDMAP_00004311", + "BDMAP_00001383", + "BDMAP_00000812", + "BDMAP_00003727", + "BDMAP_00002318", + "BDMAP_00014516", + "BDMAP_00003682", + "BDMAP_00000098", + "BDMAP_00002458", + "BDMAP_00003658", + "BDMAP_00000713", + "BDMAP_00000271", + "BDMAP_00014565", + "BDMAP_00001185", + "BDMAP_00000122", + "BDMAP_00002402", + "BDMAP_00003763", + "BDMAP_00001024", + "BDMAP_00003713", + "BDMAP_00003556", + "BDMAP_00003543", + "BDMAP_00004389", + "BDMAP_00000319", + "BDMAP_00000038", + "BDMAP_00014523", + "BDMAP_00003425", + "BDMAP_00002937", + "BDMAP_00005186", + "BDMAP_00008389", + "BDMAP_00000396", + "BDMAP_00005030", + "BDMAP_00000606", + "BDMAP_00001907", + "BDMAP_00001441", + "BDMAP_00008356", + "BDMAP_00001429", + "BDMAP_00014548", + "BDMAP_00000201", + "BDMAP_00004209", + "BDMAP_00000104", + "BDMAP_00003400", + "BDMAP_00006589", + "BDMAP_00002931", + "BDMAP_00000492", + "BDMAP_00003836", + "BDMAP_00000353", + "BDMAP_00001882", + "BDMAP_00014613", + "BDMAP_00002928", + "BDMAP_00000828", + "BDMAP_00003971", + "BDMAP_00005537", + "BDMAP_00003269", + "BDMAP_00002347", + "BDMAP_00002501", + "BDMAP_00002542", + "BDMAP_00001228", + "BDMAP_00002505", + "BDMAP_00004651", + "BDMAP_00001766", + "BDMAP_00004017", + "BDMAP_00003717", + "BDMAP_00001288", + "BDMAP_00001375", + "BDMAP_00003711", + "BDMAP_00004427", + "BDMAP_00000643", + "BDMAP_00000871", + "BDMAP_00003824", + "BDMAP_00004528", + "BDMAP_00022481", + "BDMAP_00001905", + "BDMAP_00002111", + "BDMAP_00002815", + "BDMAP_00005083", + "BDMAP_00004693", + "BDMAP_00003130", + "BDMAP_00001230", + "BDMAP_00001516", + "BDMAP_00014575", + "BDMAP_00002203", + "BDMAP_00003168", + "BDMAP_00004373", + "BDMAP_00005078", + "BDMAP_00000569", + "BDMAP_00000516", + "BDMAP_00003735", + "BDMAP_00000129", + "BDMAP_00000244", + "BDMAP_00002711", + "BDMAP_00000711", + "BDMAP_00004738", + "BDMAP_00001450", + "BDMAP_00008829", + "BDMAP_00001530", + "BDMAP_00000963", + "BDMAP_00014557", + "BDMAP_00002582", + "BDMAP_00001407", + "BDMAP_00003028", + "BDMAP_00000977", + "BDMAP_00000533", + "BDMAP_00000356", + "BDMAP_00001059", + "BDMAP_00003704", + "BDMAP_00002700", + "BDMAP_00005114", + "BDMAP_00000498", + "BDMAP_00001806", + "BDMAP_00022414", + "BDMAP_00000336", + "BDMAP_00014490", + "BDMAP_00004011", + "BDMAP_00005009", + "BDMAP_00003138", + "BDMAP_00000942", + "BDMAP_00004890", + "BDMAP_00002864", + "BDMAP_00000207", + "BDMAP_00001852", + "BDMAP_00000558", + "BDMAP_00004198", + "BDMAP_00000234", + "BDMAP_00001012", + "BDMAP_00000241", + "BDMAP_00000756", + "BDMAP_00003900", + "BDMAP_00002989", + "BDMAP_00001115", + "BDMAP_00004102", + "BDMAP_00001995", + "BDMAP_00001313", + "BDMAP_00003752", + "BDMAP_00000196", + "BDMAP_00003851", + "BDMAP_00000740", + "BDMAP_00001823", + "BDMAP_00004910", + "BDMAP_00002739", + "BDMAP_00022431", + "BDMAP_00001669", + "BDMAP_00003841", + "BDMAP_00001707", + "BDMAP_00005063", + "BDMAP_00004608", + "BDMAP_00002404", + "BDMAP_00002379", + "BDMAP_00014494", + "BDMAP_00001092", + "BDMAP_00003610", + "BDMAP_00000052", + "BDMAP_00000540", + "BDMAP_00000017", + "BDMAP_00003037", + "BDMAP_00002855", + "BDMAP_00003972", + "BDMAP_00000582", + "BDMAP_00002476", + "BDMAP_00003297", + "BDMAP_00004771", + "BDMAP_00002460", + "BDMAP_00000956", + "BDMAP_00002728", + "BDMAP_00003185", + "BDMAP_00001826", + "BDMAP_00002730", + "BDMAP_00003545", + "BDMAP_00003421", + "BDMAP_00001589", + "BDMAP_00001268", + "BDMAP_00001692", + "BDMAP_00002930", + "BDMAP_00001514", + "BDMAP_00001171", + "BDMAP_00004600", + "BDMAP_00003183", + "BDMAP_00002106", + "BDMAP_00002380", + "BDMAP_00003435", + "BDMAP_00004702", + "BDMAP_00001305", + "BDMAP_00002875", + "BDMAP_00002282", + "BDMAP_00000571", + "BDMAP_00003180", + "BDMAP_00003736", + "BDMAP_00000649", + "BDMAP_00000434", + "BDMAP_00001590", + "BDMAP_00001913", + "BDMAP_00001684", + "BDMAP_00000732", + "BDMAP_00002468", + "BDMAP_00002967", + "BDMAP_00001169", + "BDMAP_00004609", + "BDMAP_00001918", + "BDMAP_00003176", + "BDMAP_00000036", + "BDMAP_00000589", + "BDMAP_00003740", + "BDMAP_00002640", + "BDMAP_00000544", + "BDMAP_00004652", + "BDMAP_00001408", + "BDMAP_00003063", + "BDMAP_00005691", + "BDMAP_00002793", + "BDMAP_00004271", + "BDMAP_00002083", + "BDMAP_00014500", + "BDMAP_00001737", + "BDMAP_00002182", + "BDMAP_00004294", + "BDMAP_00001999", + "BDMAP_00001360", + "BDMAP_00014513", + "BDMAP_00004763", + "BDMAP_00001828", + "BDMAP_00000941", + "BDMAP_00003378", + "BDMAP_00014485", + "BDMAP_00004669", + "BDMAP_00004764", + "BDMAP_00000525", + "BDMAP_00003427", + "BDMAP_00004077", + "BDMAP_00004880", + "BDMAP_00014635", + "BDMAP_00004014", + "BDMAP_00001286", + "BDMAP_00004508", + "BDMAP_00002011", + "BDMAP_00003448", + "BDMAP_00001998", + "BDMAP_00000465", + "BDMAP_00001597", + "BDMAP_00001309", + "BDMAP_00002363", + "BDMAP_00022469", + "BDMAP_00002407", + "BDMAP_00000163", + "BDMAP_00001402", + "BDMAP_00003307", + "BDMAP_00004229", + "BDMAP_00001565", + "BDMAP_00004101", + "BDMAP_00003680", + "BDMAP_00000437", + "BDMAP_00002889", + "BDMAP_00002029", + "BDMAP_00003326", + "BDMAP_00000868", + "BDMAP_00004343", + "BDMAP_00004850", + "BDMAP_00002833", + "BDMAP_00002909", + "BDMAP_00003261", + "BDMAP_00001876", + "BDMAP_00001556", + "BDMAP_00002263", + "BDMAP_00022487", + "BDMAP_00001464", + "BDMAP_00000146", + "BDMAP_00003747", + "BDMAP_00022413", + "BDMAP_00000340", + "BDMAP_00003207", + "BDMAP_00001656", + "BDMAP_00002762", + "BDMAP_00001075", + "BDMAP_00003112", + "BDMAP_00005399", + "BDMAP_00003014", + "BDMAP_00002924", + "BDMAP_00000006", + "BDMAP_00003157", + "BDMAP_00001089", + "BDMAP_00001834", + "BDMAP_00001584", + "BDMAP_00002108", + "BDMAP_00003071", + "BDMAP_00000491", + "BDMAP_00003197", + "BDMAP_00002546", + "BDMAP_00002332", + "BDMAP_00001431", + "BDMAP_00001370", + "BDMAP_00003476", + "BDMAP_00001134", + "BDMAP_00007579", + "BDMAP_00003455", + "BDMAP_00003396", + "BDMAP_00002655", + "BDMAP_00002163", + "BDMAP_00004650", + "BDMAP_00003199", + "BDMAP_00003016", + "BDMAP_00001028", + "BDMAP_00003677", + "BDMAP_00004212", + "BDMAP_00007236", + "BDMAP_00001396", + "BDMAP_00000567", + "BDMAP_00000917", + "BDMAP_00001564", + "BDMAP_00001596", + "BDMAP_00001614", + "BDMAP_00003656", + "BDMAP_00001880", + "BDMAP_00002354", + "BDMAP_00002444", + "BDMAP_00005752", + "BDMAP_00001607", + "BDMAP_00002331", + "BDMAP_00004146", + "BDMAP_00001236", + "BDMAP_00004265", + "BDMAP_00004467", + "BDMAP_00001549", + "BDMAP_00001391", + "BDMAP_00022475", + "BDMAP_00000454", + "BDMAP_00000508", + "BDMAP_00004033", + "BDMAP_00000943", + "BDMAP_00004181", + "BDMAP_00001970", + "BDMAP_00004435", + "BDMAP_00001020", + "BDMAP_00001403", + "BDMAP_00003444", + "BDMAP_00001221", + "BDMAP_00003580", + "BDMAP_00014530", + "BDMAP_00002616", + "BDMAP_00007429", + "BDMAP_00001985", + "BDMAP_00004664", + "BDMAP_00001397", + "BDMAP_00001067", + "BDMAP_00004060", + "BDMAP_00005203", + "BDMAP_00002543", + "BDMAP_00003636", + "BDMAP_00001187", + "BDMAP_00000951", + "BDMAP_00002550", + "BDMAP_00001316", + "BDMAP_00000311", + "BDMAP_00002834", + "BDMAP_00000623", + "BDMAP_00002298", + "BDMAP_00008344", + "BDMAP_00002273", + "BDMAP_00005883", + "BDMAP_00001495", + "BDMAP_00014522", + "BDMAP_00000416", + "BDMAP_00003758", + "BDMAP_00001050", + "BDMAP_00004257", + "BDMAP_00000162", + "BDMAP_00001209", + "BDMAP_00000255", + "BDMAP_00002230", + "BDMAP_00022416", + "BDMAP_00004148", + "BDMAP_00001822", + "BDMAP_00004293", + "BDMAP_00001281", + "BDMAP_00003153", + "BDMAP_00022454", + "BDMAP_00003616", + "BDMAP_00003880", + "BDMAP_00000695", + "BDMAP_00007630", + "BDMAP_00003849", + "BDMAP_00014623", + "BDMAP_00004496", + "BDMAP_00000522", + "BDMAP_00003560", + "BDMAP_00003762", + "BDMAP_00014517", + "BDMAP_00004633", + "BDMAP_00001760", + "BDMAP_00001631", + "BDMAP_00001977", + "BDMAP_00003664", + "BDMAP_00003359", + "BDMAP_00014521", + "BDMAP_00003963", + "BDMAP_00014525", + "BDMAP_00000920", + "BDMAP_00004129", + "BDMAP_00004154", + "BDMAP_00003786", + "BDMAP_00002624", + "BDMAP_00005138", + "BDMAP_00002945", + "BDMAP_00002500", + "BDMAP_00001252", + "BDMAP_00004158", + "BDMAP_00000754", + "BDMAP_00005035", + "BDMAP_00005046", + "BDMAP_00002302", + "BDMAP_00004150", + "BDMAP_00003441", + "BDMAP_00002878", + "BDMAP_00003595", + "BDMAP_00005215", + "BDMAP_00001801", + "BDMAP_00002480", + "BDMAP_00003576", + "BDMAP_00004370", + "BDMAP_00022463", + "BDMAP_00014504", + "BDMAP_00001452", + "BDMAP_00003612", + "BDMAP_00003361", + "BDMAP_00004199", + "BDMAP_00008617", + "BDMAP_00001410", + "BDMAP_00000788", + "BDMAP_00014556", + "BDMAP_00003254", + "BDMAP_00004980", + "BDMAP_00002938", + "BDMAP_00007847", + "BDMAP_00005151", + "BDMAP_00002611", + "BDMAP_00001920", + "BDMAP_00001119", + "BDMAP_00000844", + "BDMAP_00003655", + "BDMAP_00000744", + "BDMAP_00003058", + "BDMAP_00003148", + "BDMAP_00000117", + "BDMAP_00003194", + "BDMAP_00005106", + "BDMAP_00002498", + "BDMAP_00002074", + "BDMAP_00000229", + "BDMAP_00014545", + "BDMAP_00000001", + "BDMAP_00005103", + "BDMAP_00004817", + "BDMAP_00002285", + "BDMAP_00005717", + "BDMAP_00000154", + "BDMAP_00014484", + "BDMAP_00002117", + "BDMAP_00014629", + "BDMAP_00001237", + "BDMAP_00001085", + "BDMAP_00002050", + "BDMAP_00003299", + "BDMAP_00009022", + "BDMAP_00004809", + "BDMAP_00022472", + "BDMAP_00003555", + "BDMAP_00004296", + "BDMAP_00000185", + "BDMAP_00000188", + "BDMAP_00003839", + "BDMAP_00014561", + "BDMAP_00004598", + "BDMAP_00004030", + "BDMAP_00001378", + "BDMAP_00001273", + "BDMAP_00001945", + "BDMAP_00002018", + "BDMAP_00014527", + "BDMAP_00002290", + "BDMAP_00002998", + "BDMAP_00014610", + "BDMAP_00001247", + "BDMAP_00001931", + "BDMAP_00001697", + "BDMAP_00001946", + "BDMAP_00001368", + "BDMAP_00005017", + "BDMAP_00000984", + "BDMAP_00014628", + "BDMAP_00001896", + "BDMAP_00004013", + "BDMAP_00002511", + "BDMAP_00003506", + "BDMAP_00003406", + "BDMAP_00000584", + "BDMAP_00002596", + "BDMAP_00000971", + "BDMAP_00000506", + "BDMAP_00014549", + "BDMAP_00003203", + "BDMAP_00001736", + "BDMAP_00001924", + "BDMAP_00004616", + "BDMAP_00004679", + "BDMAP_00000834", + "BDMAP_00002863", + "BDMAP_00001732", + "BDMAP_00003882", + "BDMAP_00002902", + "BDMAP_00002698", + "BDMAP_00001545", + "BDMAP_00004354", + "BDMAP_00001519", + "BDMAP_00002844", + "BDMAP_00006569", + "BDMAP_00000565", + "BDMAP_00003275", + "BDMAP_00007524", + "BDMAP_00003759", + "BDMAP_00002870", + "BDMAP_00002970", + "BDMAP_00003356", + "BDMAP_00004359", + "BDMAP_00002164", + "BDMAP_00000692", + "BDMAP_00002622", + "BDMAP_00000429", + "BDMAP_00003517", + "BDMAP_00002617", + "BDMAP_00002487", + "BDMAP_00001107", + "BDMAP_00003774", + "BDMAP_00022417", + "BDMAP_00003178", + "BDMAP_00005037", + "BDMAP_00022458", + "BDMAP_00000476", + "BDMAP_00000176", + "BDMAP_00000548", + "BDMAP_00014539", + "BDMAP_00001759", + "BDMAP_00022445", + "BDMAP_00001227", + "BDMAP_00003099", + "BDMAP_00000921", + "BDMAP_00004331", + "BDMAP_00003109", + "BDMAP_00002248", + "BDMAP_00004083", + "BDMAP_00002804", + "BDMAP_00006507", + "BDMAP_00014486", + "BDMAP_00001997", + "BDMAP_00003910", + "BDMAP_00005073", + "BDMAP_00000124", + "BDMAP_00004345", + "BDMAP_00004437", + "BDMAP_00001789", + "BDMAP_00005166", + "BDMAP_00003638", + "BDMAP_00002896", + "BDMAP_00002368", + "BDMAP_00002170", + "BDMAP_00000836", + "BDMAP_00014512", + "BDMAP_00014542", + "BDMAP_00002085", + "BDMAP_00002690", + "BDMAP_00001817", + "BDMAP_00001839", + "BDMAP_00001952", + "BDMAP_00000012", + "BDMAP_00001654", + "BDMAP_00004676", + "BDMAP_00003491", + "BDMAP_00001757", + "BDMAP_00004317", + "BDMAP_00002051", + "BDMAP_00002638", + "BDMAP_00002258", + "BDMAP_00003581", + "BDMAP_00002309", + "BDMAP_00000270", + "BDMAP_00005020", + "BDMAP_00003828", + "BDMAP_00000853", + "BDMAP_00001440", + "BDMAP_00003201", + "BDMAP_00000716", + "BDMAP_00000093", + "BDMAP_00001639", + "BDMAP_00002856", + "BDMAP_00009738", + "BDMAP_00000862", + "BDMAP_00003920", + "BDMAP_00005113", + "BDMAP_00004736", + "BDMAP_00003255", + "BDMAP_00004374", + "BDMAP_00000882", + "BDMAP_00001425", + "BDMAP_00000564", + "BDMAP_00002849", + "BDMAP_00003730", + "BDMAP_00002383", + "BDMAP_00001015", + "BDMAP_00000517", + "BDMAP_00003443", + "BDMAP_00003897", + "BDMAP_00005120", + "BDMAP_00022437", + "BDMAP_00004541", + "BDMAP_00001894", + "BDMAP_00014497", + "BDMAP_00000411", + "BDMAP_00000741", + "BDMAP_00002829", + "BDMAP_00003143", + "BDMAP_00002421", + "BDMAP_00000729", + "BDMAP_00005898", + "BDMAP_00003767", + "BDMAP_00000742", + "BDMAP_00002776", + "BDMAP_00002754", + "BDMAP_00003957", + "BDMAP_00003195", + "BDMAP_00001167", + "BDMAP_00003600", + "BDMAP_00000614", + "BDMAP_00002136", + "BDMAP_00002398", + "BDMAP_00014551", + "BDMAP_00002791", + "BDMAP_00000464", + "BDMAP_00003867", + "BDMAP_00004339", + "BDMAP_00001298", + "BDMAP_00004279", + "BDMAP_00022434", + "BDMAP_00000369", + "BDMAP_00002390", + "BDMAP_00002173", + "BDMAP_00000579", + "BDMAP_00002847", + "BDMAP_00004895", + "BDMAP_00003036", + "BDMAP_00001004", + "BDMAP_00001319", + "BDMAP_00000676", + "BDMAP_00014501", + "BDMAP_00002845", + "BDMAP_00001842", + "BDMAP_00002720", + "BDMAP_00002422", + "BDMAP_00001416", + "BDMAP_00000983", + "BDMAP_00002084", + "BDMAP_00003395", + "BDMAP_00003482", + "BDMAP_00003417", + "BDMAP_00001103", + "BDMAP_00002485", + "BDMAP_00014532", + "BDMAP_00002265", + "BDMAP_00001917", + "BDMAP_00001114", + "BDMAP_00000927", + "BDMAP_00000265", + "BDMAP_00002067", + "BDMAP_00000595", + "BDMAP_00002699", + "BDMAP_00014520", + "BDMAP_00003032", + "BDMAP_00002226", + "BDMAP_00002689", + "BDMAP_00014491", + "BDMAP_00004588", + "BDMAP_00003608", + "BDMAP_00000205", + "BDMAP_00001908", + "BDMAP_00001923", + "BDMAP_00003500", + "BDMAP_00000030", + "BDMAP_00001380", + "BDMAP_00005130", + "BDMAP_00002349", + "BDMAP_00007200", + "BDMAP_00003249", + "BDMAP_00000771", + "BDMAP_00003451", + "BDMAP_00000710", + "BDMAP_00002959", + "BDMAP_00000053", + "BDMAP_00002562", + "BDMAP_00001620", + "BDMAP_00000824", + "BDMAP_00022442", + "BDMAP_00004482", + "BDMAP_00001432", + "BDMAP_00001192", + "BDMAP_00002410", + "BDMAP_00004194", + "BDMAP_00014531", + "BDMAP_00002122", + "BDMAP_00001845", + "BDMAP_00003776", + "BDMAP_00001376", + "BDMAP_00002077", + "BDMAP_00002355", + "BDMAP_00022415", + "BDMAP_00002733", + "BDMAP_00002798", + "BDMAP_00000802", + "BDMAP_00003822", + "BDMAP_00005022", + "BDMAP_00000486", + "BDMAP_00002884", + "BDMAP_00007561", + "BDMAP_00001057", + "BDMAP_00014498", + "BDMAP_00005099", + "BDMAP_00003264", + "BDMAP_00001809", + "BDMAP_00003685", + "BDMAP_00002382", + "BDMAP_00003204", + "BDMAP_00004103", + "BDMAP_00001040", + "BDMAP_00003815", + "BDMAP_00001780", + "BDMAP_00003558", + "BDMAP_00000607", + "BDMAP_00001810", + "BDMAP_00000873", + "BDMAP_00004870", + "BDMAP_00005150", + "BDMAP_00000310", + "BDMAP_00004867", + "BDMAP_00002708", + "BDMAP_00005165", + "BDMAP_00002947", + "BDMAP_00000987", + "BDMAP_00014489", + "BDMAP_00014492", + "BDMAP_00002075", + "BDMAP_00001079", + "BDMAP_00000034", + "BDMAP_00002737", + "BDMAP_00003002", + "BDMAP_00014488", + "BDMAP_00001818", + "BDMAP_00000342", + "BDMAP_00003629", + "BDMAP_00002466", + "BDMAP_00000297", + "BDMAP_00002191", + "BDMAP_00008085", + "BDMAP_00002035", + "BDMAP_00002089", + "BDMAP_00003796", + "BDMAP_00004462", + "BDMAP_00000648", + "BDMAP_00001635", + "BDMAP_00003433", + "BDMAP_00001108", + "BDMAP_00022440", + "BDMAP_00006713", + "BDMAP_00004010", + "BDMAP_00000634", + "BDMAP_00002234", + "BDMAP_00001751", + "BDMAP_00000715", + "BDMAP_00001154", + "BDMAP_00003701", + "BDMAP_00002321", + "BDMAP_00001161", + "BDMAP_00004144", + "BDMAP_00003337", + "BDMAP_00000686", + "BDMAP_00003895", + "BDMAP_00001517", + "BDMAP_00004995", + "BDMAP_00002478", + "BDMAP_00003052", + "BDMAP_00003151", + "BDMAP_00004407", + "BDMAP_00003000", + "BDMAP_00002992", + "BDMAP_00002752", + "BDMAP_00001690", + "BDMAP_00000262", + "BDMAP_00001219", + "BDMAP_00001559", + "BDMAP_00003812", + "BDMAP_00000916", + "BDMAP_00003132", + "BDMAP_00000620", + "BDMAP_00001183", + "BDMAP_00003287", + "BDMAP_00000475", + "BDMAP_00001070", + "BDMAP_00002359", + "BDMAP_00003252", + "BDMAP_00001930", + "BDMAP_00003816", + "BDMAP_00003121", + "BDMAP_00014514", + "BDMAP_00000133", + "BDMAP_00000562", + "BDMAP_00001705", + "BDMAP_00002096", + "BDMAP_00003479", + "BDMAP_00002440", + "BDMAP_00001617", + "BDMAP_00005174", + "BDMAP_00000696", + "BDMAP_00003348", + "BDMAP_00014537", + "BDMAP_00005021", + "BDMAP_00003532", + "BDMAP_00005077", + "BDMAP_00001629", + "BDMAP_00004196", + "BDMAP_00000382", + "BDMAP_00001649", + "BDMAP_00001140", + "BDMAP_00001457", + "BDMAP_00002342", + "BDMAP_00001583", + "BDMAP_00003994", + "BDMAP_00002401", + "BDMAP_00002527", + "BDMAP_00004717", + "BDMAP_00004992", + "BDMAP_00002920", + "BDMAP_00003175", + "BDMAP_00000849", + "BDMAP_00000936", + "BDMAP_00002358", + "BDMAP_00003827", + "BDMAP_00000091", + "BDMAP_00000449", + "BDMAP_00014515", + "BDMAP_00003949", + "BDMAP_00002518", + "BDMAP_00001685", + "BDMAP_00000698", + "BDMAP_00003335", + "BDMAP_00003390", + "BDMAP_00004228", + "BDMAP_00004074", + "BDMAP_00000442", + "BDMAP_00002571", + "BDMAP_00002042", + "BDMAP_00000767", + "BDMAP_00002537", + "BDMAP_00022453", + "BDMAP_00003590", + "BDMAP_00000602", + "BDMAP_00001744", + "BDMAP_00001699", + "BDMAP_00003034", + "BDMAP_00004672", + "BDMAP_00004091", + "BDMAP_00000826", + "BDMAP_00000657", + "BDMAP_00004844", + "BDMAP_00002484", + "BDMAP_00003723", + "BDMAP_00000489", + "BDMAP_00000918", + "BDMAP_00004744", + "BDMAP_00000210", + "BDMAP_00005157", + "BDMAP_00003619", + "BDMAP_00000982", + "BDMAP_00000632", + "BDMAP_00004417", + "BDMAP_00000923", + "BDMAP_00000330", + "BDMAP_00004586", + "BDMAP_00000329", + "BDMAP_00001064", + "BDMAP_00004984", + "BDMAP_00002788", + "BDMAP_00005119", + "BDMAP_00003083", + "BDMAP_00002552", + "BDMAP_00004303", + "BDMAP_00003499", + "BDMAP_00002434", + "BDMAP_00002943", + "BDMAP_00003666", + "BDMAP_00002373", + "BDMAP_00005168", + "BDMAP_00000410", + "BDMAP_00014577", + "BDMAP_00003158", + "BDMAP_00003457", + "BDMAP_00002426", + "BDMAP_00004636", + "BDMAP_00000088", + "BDMAP_00000140", + "BDMAP_00000837", + "BDMAP_00001701", + "BDMAP_00004493", + "BDMAP_00003281", + "BDMAP_00022466", + "BDMAP_00003769", + "BDMAP_00002618", + "BDMAP_00005065", + "BDMAP_00001218", + "BDMAP_00003811", + "BDMAP_00003415", + "BDMAP_00003215", + "BDMAP_00002188", + "BDMAP_00004068", + "BDMAP_00001996", + "BDMAP_00002091", + "BDMAP_00002176", + "BDMAP_00000753", + "BDMAP_00022421", + "BDMAP_00000724", + "BDMAP_00002090", + "BDMAP_00001025", + "BDMAP_00001521", + "BDMAP_00002760", + "BDMAP_00000389", + "BDMAP_00001889", + "BDMAP_00000120", + "BDMAP_00002661", + "BDMAP_00004023", + "BDMAP_00002408", + "BDMAP_00002592", + "BDMAP_00000192", + "BDMAP_00004856", + "BDMAP_00002235", + "BDMAP_00001096", + "BDMAP_00001708", + "BDMAP_00000428", + "BDMAP_00003129", + "BDMAP_00000215", + "BDMAP_00004499", + "BDMAP_00001444", + "BDMAP_00004735", + "BDMAP_00003072", + "BDMAP_00002135", + "BDMAP_00003422", + "BDMAP_00002940", + "BDMAP_00003301", + "BDMAP_00004231", + "BDMAP_00014615", + "BDMAP_00001359", + "BDMAP_00001678", + "BDMAP_00004211", + "BDMAP_00022489", + "BDMAP_00005692", + "BDMAP_00003017", + "BDMAP_00014533", + "BDMAP_00001903", + "BDMAP_00002679", + "BDMAP_00000774", + "BDMAP_00003106", + "BDMAP_00014622", + "BDMAP_00004838", + "BDMAP_00000457", + "BDMAP_00001010", + "BDMAP_00001500", + "BDMAP_00002105", + "BDMAP_00022490", + "BDMAP_00001524", + "BDMAP_00004682", + "BDMAP_00003640", + "BDMAP_00002417", + "BDMAP_00005192", + "BDMAP_00001239", + "BDMAP_00014573", + "BDMAP_00001066", + "BDMAP_00004460", + "BDMAP_00000557", + "BDMAP_00000505", + "BDMAP_00000435", + "BDMAP_00000013", + "BDMAP_00002133", + "BDMAP_00004514", + "BDMAP_00003392", + "BDMAP_00003295", + "BDMAP_00004289", + "BDMAP_00006036", + "BDMAP_00001475", + "BDMAP_00003258", + "BDMAP_00001754", + "BDMAP_00002475", + "BDMAP_00004552", + "BDMAP_00004349", + "BDMAP_00004327", + "BDMAP_00001175", + "BDMAP_00014544", + "BDMAP_00001339", + "BDMAP_00000907", + "BDMAP_00001296", + "BDMAP_00004509", + "BDMAP_00014535", + "BDMAP_00005167", + "BDMAP_00003324", + "BDMAP_00000080", + "BDMAP_00003172", + "BDMAP_00005169", + "BDMAP_00004719", + "BDMAP_00003497", + "BDMAP_00000243", + "BDMAP_00003642", + "BDMAP_00002826", + "BDMAP_00002361", + "BDMAP_00002262", + "BDMAP_00002432", + "BDMAP_00002441", + "BDMAP_00000799", + "BDMAP_00003248", + "BDMAP_00008305", + "BDMAP_00003149", + "BDMAP_00003009", + "BDMAP_00014540", + "BDMAP_00002545", + "BDMAP_00001125", + "BDMAP_00003918", + "BDMAP_00000247", + "BDMAP_00003531", + "BDMAP_00002344", + "BDMAP_00002481", + "BDMAP_00002099", + "BDMAP_00008128", + "BDMAP_00002808", + "BDMAP_00000258", + "BDMAP_00003613", + "BDMAP_00022435", + "BDMAP_00001853", + "BDMAP_00003934", + "BDMAP_00003808", + "BDMAP_00002152", + "BDMAP_00004897", + "BDMAP_00003569", + "BDMAP_00003947", + "BDMAP_00014581", + "BDMAP_00002509", + "BDMAP_00004431", + "BDMAP_00004968", + "BDMAP_00003519", + "BDMAP_00000008", + "BDMAP_00005064", + "BDMAP_00000989", + "BDMAP_00002456", + "BDMAP_00002166", + "BDMAP_00004686", + "BDMAP_00000347", + "BDMAP_00001949", + "BDMAP_00022473", + "BDMAP_00001456", + "BDMAP_00000887", + "BDMAP_00000400", + "BDMAP_00014617", + "BDMAP_00022438", + "BDMAP_00002257", + "BDMAP_00001560", + "BDMAP_00002626", + "BDMAP_00004901", + "BDMAP_00003587", + "BDMAP_00003775", + "BDMAP_00003928", + "BDMAP_00001094", + "BDMAP_00001640", + "BDMAP_00001912", + "BDMAP_00001068", + "BDMAP_00022474", + "BDMAP_00002590", + "BDMAP_00001102", + "BDMAP_00014631", + "BDMAP_00002171", + "BDMAP_00001275", + "BDMAP_00002583", + "BDMAP_00002304", + "BDMAP_00000572", + "BDMAP_00000596", + "BDMAP_00001184", + "BDMAP_00000604", + "BDMAP_00002479", + "BDMAP_00003312", + "BDMAP_00000881", + "BDMAP_00001414", + "BDMAP_00004286", + "BDMAP_00004620", + "BDMAP_00001026", + "BDMAP_00001266", + "BDMAP_00002893", + "BDMAP_00003240", + "BDMAP_00000121", + "BDMAP_00002649", + "BDMAP_00000961", + "BDMAP_00002442", + "BDMAP_00003650", + "BDMAP_00003505", + "BDMAP_00000250", + "BDMAP_00002289", + "BDMAP_00003181", + "BDMAP_00001971", + "BDMAP_00003054", + "BDMAP_00014547", + "BDMAP_00002172", + "BDMAP_00002431", + "BDMAP_00002662", + "BDMAP_00000309", + "BDMAP_00000280", + "BDMAP_00002198", + "BDMAP_00000683", + "BDMAP_00004066", + "BDMAP_00004185", + "BDMAP_00002685", + "BDMAP_00004887", + "BDMAP_00000810", + "BDMAP_00002333", + "BDMAP_00001130", + "BDMAP_00000706", + "BDMAP_00002022", + "BDMAP_00003244", + "BDMAP_00002267", + "BDMAP_00004830", + "BDMAP_00001258", + "BDMAP_00003038", + "BDMAP_00000656", + "BDMAP_00000843", + "BDMAP_00002584", + "BDMAP_00003755", + "BDMAP_00004808", + "BDMAP_00000069", + "BDMAP_00000601", + "BDMAP_00004208", + "BDMAP_00000139", + "BDMAP_00004886", + "BDMAP_00001647", + "BDMAP_00002746", + "BDMAP_00004759", + "BDMAP_00003031", + "BDMAP_00001712", + "BDMAP_00003117", + "BDMAP_00003525", + "BDMAP_00003024", + "BDMAP_00000947", + "BDMAP_00003319", + "BDMAP_00001133", + "BDMAP_00000981", + "BDMAP_00014511", + "BDMAP_00002448", + "BDMAP_00004641", + "BDMAP_00005108", + "BDMAP_00001117", + "BDMAP_00003041", + "BDMAP_00000169", + "BDMAP_00002570", + "BDMAP_00000249", + "BDMAP_00000653", + "BDMAP_00014541", + "BDMAP_00000414", + "BDMAP_00002037", + "BDMAP_00014583", + "BDMAP_00001863", + "BDMAP_00001027", + "BDMAP_00000859", + "BDMAP_00002305", + "BDMAP_00000575", + "BDMAP_00002190", + "BDMAP_00001033", + "BDMAP_00002716", + "BDMAP_00002057", + "BDMAP_00001868", + "BDMAP_00002801", + "BDMAP_00001870", + "BDMAP_00022461", + "BDMAP_00022432", + "BDMAP_00000520", + "BDMAP_00005001", + "BDMAP_00022439", + "BDMAP_00014630", + "BDMAP_00002966", + "BDMAP_00000283", + "BDMAP_00014507", + "BDMAP_00002005", + "BDMAP_00004529", + "BDMAP_00001562", + "BDMAP_00003140", + "BDMAP_00022420", + "BDMAP_00002216", + "BDMAP_00002322", + "BDMAP_00000484", + "BDMAP_00007629", + "BDMAP_00002948", + "BDMAP_00003122", + "BDMAP_00000618", + "BDMAP_00004224", + "BDMAP_00001511", + "BDMAP_00000699", + "BDMAP_00000714", + "BDMAP_00014576", + "BDMAP_00001796", + "BDMAP_00000694", + "BDMAP_00003833", + "BDMAP_00000980", + "BDMAP_00004855", + "BDMAP_00002713", + "BDMAP_00014499", + "BDMAP_00022443", + "BDMAP_00004295", + "BDMAP_00002000", + "BDMAP_00003861", + "BDMAP_00022423", + "BDMAP_00002614", + "BDMAP_00000827", + "BDMAP_00014566", + "BDMAP_00000039", + "BDMAP_00002507", + "BDMAP_00002017", + "BDMAP_00002972", + "BDMAP_00000263", + "BDMAP_00002805", + "BDMAP_00000462", + "BDMAP_00001967", + "BDMAP_00005075", + "BDMAP_00001241", + "BDMAP_00005191", + "BDMAP_00000219", + "BDMAP_00000413", + "BDMAP_00001486", + "BDMAP_00002185", + "BDMAP_00014626", + "BDMAP_00001919", + "BDMAP_00002403", + "BDMAP_00005105", + "BDMAP_00014529", + "BDMAP_00005444", + "BDMAP_00000948", + "BDMAP_00004727", + "BDMAP_00003493", + "BDMAP_00002451", + "BDMAP_00001413", + "BDMAP_00000667", + "BDMAP_00000641", + "BDMAP_00003494", + "BDMAP_00001335", + "BDMAP_00002129", + "BDMAP_00000391", + "BDMAP_00004288", + "BDMAP_00002040", + "BDMAP_00002837", + "BDMAP_00003376", + "BDMAP_00001799", + "BDMAP_00000239", + "BDMAP_00000204", + "BDMAP_00000532", + "BDMAP_00003601", + "BDMAP_00001581", + "BDMAP_00000377", + "BDMAP_00001331", + "BDMAP_00004415", + "BDMAP_00003721", + "BDMAP_00006181", + "BDMAP_00001437", + "BDMAP_00000524", + "BDMAP_00001055", + "BDMAP_00000331", + "BDMAP_00001473", + "BDMAP_00000758", + "BDMAP_00001740", + "BDMAP_00001465", + "BDMAP_00000366", + "BDMAP_00002104", + "BDMAP_00003509", + "BDMAP_00003598", + "BDMAP_00014487", + "BDMAP_00004347", + "BDMAP_00001906", + "BDMAP_00001605", + "BDMAP_00000161", + "BDMAP_00003733", + "BDMAP_00002523", + "BDMAP_00001840", + "BDMAP_00014616", + "BDMAP_00001289", + "BDMAP_00004627", + "BDMAP_00001480", + "BDMAP_00003411", + "BDMAP_00004093", + "BDMAP_00001471", + "BDMAP_00003135", + "BDMAP_00005162", + "BDMAP_00003633", + "BDMAP_00001571", + "BDMAP_00004315", + "BDMAP_00002278", + "BDMAP_00003461", + "BDMAP_00001784", + "BDMAP_00005171", + "BDMAP_00005154", + "BDMAP_00003956", + "BDMAP_00000965", + "BDMAP_00007159", + "BDMAP_00004981", + "BDMAP_00000062", + "BDMAP_00000748", + "BDMAP_00000488", + "BDMAP_00003228", + "BDMAP_00004885", + "BDMAP_00000376", + "BDMAP_00003510", + "BDMAP_00000178", + "BDMAP_00004104", + "BDMAP_00003305", + "BDMAP_00004722", + "BDMAP_00000427", + "BDMAP_00000394", + "BDMAP_00022426", + "BDMAP_00004450", + "BDMAP_00000059", + "BDMAP_00003484", + "BDMAP_00004459", + "BDMAP_00000908", + "BDMAP_00003357", + "BDMAP_00003152", + "BDMAP_00003579", + "BDMAP_00006623", + "BDMAP_00014509", + "BDMAP_00001277", + "BDMAP_00001836", + "BDMAP_00004193", + "BDMAP_00014546", + "BDMAP_00003869", + "BDMAP_00022444", + "BDMAP_00002651", + "BDMAP_00002951", + "BDMAP_00004990", + "BDMAP_00005198", + "BDMAP_00000320", + "BDMAP_00002956", + "BDMAP_00003349", + "BDMAP_00002237", + "BDMAP_00002933", + "BDMAP_00003469", + "BDMAP_00001768", + "BDMAP_00001987", + "BDMAP_00004847", + "BDMAP_00004712", + "BDMAP_00001341", + "BDMAP_00001783", + "BDMAP_00004510", + "BDMAP_00002780", + "BDMAP_00007838", + "BDMAP_00001474", + "BDMAP_00003320", + "BDMAP_00003955", + "BDMAP_00004183", + "BDMAP_00014526", + "BDMAP_00002114", + "BDMAP_00001785", + "BDMAP_00002167", + "BDMAP_00001283", + "BDMAP_00002977", + "BDMAP_00001190", + "BDMAP_00000293", + "BDMAP_00001379", + "BDMAP_00004843", + "BDMAP_00014564", + "BDMAP_00003462", + "BDMAP_00007597", + "BDMAP_00002549", + "BDMAP_00003694", + "BDMAP_00001602", + "BDMAP_00004165", + "BDMAP_00000431", + "BDMAP_00004511", + "BDMAP_00014558", + "BDMAP_00003574", + "BDMAP_00002851", + "BDMAP_00001138", + "BDMAP_00002199", + "BDMAP_00002211", + "BDMAP_00000541", + "BDMAP_00004187", + "BDMAP_00002758", + "BDMAP_00002695", + "BDMAP_00000032", + "BDMAP_00000368", + "BDMAP_00003051", + "BDMAP_00014555", + "BDMAP_00000432", + "BDMAP_00001947", + "BDMAP_00003340", + "BDMAP_00014502", + "BDMAP_00001443", + "BDMAP_00002652", + "BDMAP_00014620", + "BDMAP_00002781", + "BDMAP_00001536", + "BDMAP_00004027", + "BDMAP_00000913", + "BDMAP_00002665", + "BDMAP_00022465", + "BDMAP_00002335", + "BDMAP_00014553", + "BDMAP_00002841", + "BDMAP_00004597", + "BDMAP_00008525", + "BDMAP_00002324", + "BDMAP_00003697", + "BDMAP_00003719", + "BDMAP_00014570", + "BDMAP_00000321", + "BDMAP_00000855", + "BDMAP_00002376", + "BDMAP_00000889", + "BDMAP_00002060", + "BDMAP_00002719", + "BDMAP_00001612", + "BDMAP_00001270", + "BDMAP_00000552", + "BDMAP_00022429", + "BDMAP_00003092", + "BDMAP_00004854", + "BDMAP_00002773", + "BDMAP_00002115", + "BDMAP_00001001", + "BDMAP_00000555", + "BDMAP_00001873", + "BDMAP_00002315", + "BDMAP_00002723", + "BDMAP_00001663", + "BDMAP_00014506", + "BDMAP_00004745", + "BDMAP_00005175", + "BDMAP_00022467", + "BDMAP_00002313", + "BDMAP_00001302", + "BDMAP_00003219", + "BDMAP_00000939", + "BDMAP_00003959", + "BDMAP_00005547", + "BDMAP_00001624", + "BDMAP_00002881", + "BDMAP_00000273", + "BDMAP_00003059", + "BDMAP_00000447", + "BDMAP_00004761", + "BDMAP_00002991", + "BDMAP_00003754", + "BDMAP_00002953", + "BDMAP_00002906", + "BDMAP_00002227", + "BDMAP_00001633", + "BDMAP_00004561", + "BDMAP_00022462", + "BDMAP_00001522", + "BDMAP_00003511", + "BDMAP_00002066", + "BDMAP_00001257", + "BDMAP_00004262", + "BDMAP_00004454", + "BDMAP_00001045", + "BDMAP_00001088", + "BDMAP_00001261", + "BDMAP_00003645", + "BDMAP_00004012", + "BDMAP_00022433", + "BDMAP_00007665", + "BDMAP_00000160", + "BDMAP_00004503", + "BDMAP_00000993", + "BDMAP_00004575", + "BDMAP_00002243", + "BDMAP_00009876", + "BDMAP_00002292", + "BDMAP_00002107", + "BDMAP_00002579", + "BDMAP_00005136", + "BDMAP_00002233", + "BDMAP_00002439", + "BDMAP_00002300", + "BDMAP_00004673", + "BDMAP_00003634", + "BDMAP_00004825", + "BDMAP_00000765", + "BDMAP_00001548", + "BDMAP_00003196", + "BDMAP_00000417", + "BDMAP_00000640", + "BDMAP_00002601", + "BDMAP_00002751", + "BDMAP_00001978", + "BDMAP_00002471", + "BDMAP_00000363", + "BDMAP_00003256", + "BDMAP_00000924", + "BDMAP_00000175", + "BDMAP_00001721", + "BDMAP_00004746", + "BDMAP_00014536", + "BDMAP_00005698", + "BDMAP_00002544", + "BDMAP_00000626", + "BDMAP_00001731", + "BDMAP_00000915", + "BDMAP_00004551", + "BDMAP_00002580", + "BDMAP_00002789", + "BDMAP_00014508", + "BDMAP_00003193", + "BDMAP_00002682", + "BDMAP_00001222", + "BDMAP_00014550", + "BDMAP_00004278", + "BDMAP_00004671", + "BDMAP_00002918", + "BDMAP_00002251", + "BDMAP_00001351", + "BDMAP_00002905", + "BDMAP_00001523", + "BDMAP_00000583", + "BDMAP_00005500", + "BDMAP_00002158", + "BDMAP_00002555", + "BDMAP_00003746", + "BDMAP_00000128", + "BDMAP_00000438", + "BDMAP_00001646", + "BDMAP_00002619", + "BDMAP_00000513", + "BDMAP_00003257", + "BDMAP_00003315", + "BDMAP_00003155", + "BDMAP_00001476", + "BDMAP_00008555", + "BDMAP_00002284", + "BDMAP_00022424", + "BDMAP_00001677", + "BDMAP_00003232", + "BDMAP_00004639", + "BDMAP_00000086", + "BDMAP_00000751", + "BDMAP_00000536", + "BDMAP_00003483", + "BDMAP_00003893", + "BDMAP_00003070", + "BDMAP_00003857", + "BDMAP_00001461", + "BDMAP_00002588", + "BDMAP_00001496", + "BDMAP_00000087", + "BDMAP_00003806", + "BDMAP_00001941", + "BDMAP_00001833", + "BDMAP_00003404", + "BDMAP_00001520", + "BDMAP_00002021", + "BDMAP_00001023", + "BDMAP_00001251", + "BDMAP_00001710", + "BDMAP_00004550", + "BDMAP_00000282", + "BDMAP_00004395", + "BDMAP_00001141", + "BDMAP_00000010", + "BDMAP_00000090", + "BDMAP_00003189", + "BDMAP_00001422", + "BDMAP_00003614", + "BDMAP_00001553", + "BDMAP_00004147", + "BDMAP_00002080", + "BDMAP_00002326", + "BDMAP_00004117", + "BDMAP_00000890", + "BDMAP_00003676", + "BDMAP_00003042", + "BDMAP_00001752", + "BDMAP_00000444", + "BDMAP_00014503", + "BDMAP_00001003", + "BDMAP_00002186", + "BDMAP_00002547", + "BDMAP_00002095", + "BDMAP_00004943", + "BDMAP_00001927", + "BDMAP_00002260", + "BDMAP_00003239", + "BDMAP_00001502", + "BDMAP_00000009", + "BDMAP_00002353", + "BDMAP_00001453", + "BDMAP_00014625", + "BDMAP_00000926", + "BDMAP_00001858", + "BDMAP_00001083", + "BDMAP_00003113", + "BDMAP_00003678", + "BDMAP_00002575", + "BDMAP_00001711", + "BDMAP_00001254", + "BDMAP_00001543", + "BDMAP_00000153", + "BDMAP_00003508", + "BDMAP_00014528", + "BDMAP_00000333", + "BDMAP_00005085", + "BDMAP_00003333", + "BDMAP_00004052", + "BDMAP_00003513", + "BDMAP_00001211", + "BDMAP_00001568", + "BDMAP_00000084", + "BDMAP_00005429", + "BDMAP_00006148", + "BDMAP_00006533", + "BDMAP_00000803", + "BDMAP_00002396", + "BDMAP_00003364", + "BDMAP_00004475", + "BDMAP_00003749", + "BDMAP_00004018", + "BDMAP_00003277", + "BDMAP_00002840", + "BDMAP_00004780", + "BDMAP_00001777", + "BDMAP_00003177", + "BDMAP_00014496", + "BDMAP_00004384", + "BDMAP_00002993", + "BDMAP_00003753", + "BDMAP_00003362", + "BDMAP_00002411", + "BDMAP_00002221", + "BDMAP_00002146", + "BDMAP_00001518", + "BDMAP_00002866", + "BDMAP_00001753", + "BDMAP_00003330", + "BDMAP_00003683", + "BDMAP_00002803", + "BDMAP_00002653", + "BDMAP_00003791", + "BDMAP_00002200", + "BDMAP_00001891", + "BDMAP_00003350", + "BDMAP_00001638", + "BDMAP_00000225", + "BDMAP_00000327", + "BDMAP_00000480", + "BDMAP_00000362", + "BDMAP_00000466", + "BDMAP_00000477", + "BDMAP_00003260", + "BDMAP_00004297", + "BDMAP_00004121", + "BDMAP_00000662", + "BDMAP_00001093", + "BDMAP_00004494", + "BDMAP_00004546", + "BDMAP_00003073", + "BDMAP_00014563", + "BDMAP_00000666", + "BDMAP_00004903", + "BDMAP_00014543", + "BDMAP_00001078", + "BDMAP_00004927", + "BDMAP_00004876", + "BDMAP_00004106", + "BDMAP_00001831", + "BDMAP_00003529", + "BDMAP_00003141", + "BDMAP_00001256", + "BDMAP_00001233", + "BDMAP_00002879", + "BDMAP_00001065", + "BDMAP_00001420", + "BDMAP_00002873", + "BDMAP_00022418", + "BDMAP_00002153", + "BDMAP_00000568", + "BDMAP_00001390", + "BDMAP_00004408", + "BDMAP_00003798", + "BDMAP_00001791", + "BDMAP_00000214", + "BDMAP_00003074", + "BDMAP_00002033", + "BDMAP_00009779", + "BDMAP_00000408", + "BDMAP_00003366", + "BDMAP_00002669", + "BDMAP_00001427", + "BDMAP_00000661", + "BDMAP_00003035", + "BDMAP_00003116", + "BDMAP_00000690", + "BDMAP_00001800", + "BDMAP_00002558", + "BDMAP_00000232", + "BDMAP_00003930", + "BDMAP_00000305", + "BDMAP_00003603", + "BDMAP_00014612", + "BDMAP_00000445", + "BDMAP_00003557", + "BDMAP_00002718", + "BDMAP_00001419", + "BDMAP_00004998", + "BDMAP_00004615", + "BDMAP_00001779", + "BDMAP_00002045", + "BDMAP_00001807", + "BDMAP_00014505", + "BDMAP_00001618", + "BDMAP_00001851", + "BDMAP_00000815", + "BDMAP_00000549", + "BDMAP_00004926", + "BDMAP_00001939", + "BDMAP_00000998", + "BDMAP_00001805", + "BDMAP_00001619", + "BDMAP_00005016", + "BDMAP_00000470", + "BDMAP_00002574", + "BDMAP_00004804", + "BDMAP_00003146", + "BDMAP_00002519", + "BDMAP_00008306", + "BDMAP_00003245", + "BDMAP_00004549", + "BDMAP_00000978", + "BDMAP_00003384", + "BDMAP_00002683", + "BDMAP_00002496", + "BDMAP_00022456", + "BDMAP_00000446", + "BDMAP_00000503", + "BDMAP_00008208", + "BDMAP_00002201", + "BDMAP_00003943", + "BDMAP_00003657", + "BDMAP_00000011", + "BDMAP_00001126", + "BDMAP_00001921", + "BDMAP_00000839", + "BDMAP_00000358", + "BDMAP_00000403", + "BDMAP_00002052", + "BDMAP_00002929", + "BDMAP_00002204", + "BDMAP_00001782", + "BDMAP_00002636", + "BDMAP_00002127", + "BDMAP_00001507", + "BDMAP_00004048", + "BDMAP_00001215", + "BDMAP_00004457", + "BDMAP_00000256", + "BDMAP_00003440", + "BDMAP_00001200", + "BDMAP_00001867", + "BDMAP_00001636", + "BDMAP_00002643", + "BDMAP_00003456", + "BDMAP_00005006", + "BDMAP_00005185", + "BDMAP_00002813", + "BDMAP_00001340", + "BDMAP_00003801", + "BDMAP_00001747", + "BDMAP_00004259", + "BDMAP_00003853", + "BDMAP_00000137", + "BDMAP_00001892", + "BDMAP_00002540", + "BDMAP_00002120", + "BDMAP_00001865", + "BDMAP_00001105", + "BDMAP_00001957", + "BDMAP_00003358", + "BDMAP_00003756", + "BDMAP_00004087", + "BDMAP_00000940", + "BDMAP_00003840", + "BDMAP_00004328", + "BDMAP_00003128", + "BDMAP_00004604", + "BDMAP_00001072", + "BDMAP_00003551", + "BDMAP_00002831", + "BDMAP_00002288", + "BDMAP_00003407", + "BDMAP_00014574", + "BDMAP_00002271", + "BDMAP_00002220", + "BDMAP_00006402", + "BDMAP_00000365", + "BDMAP_00001550", + "BDMAP_00002823", + "BDMAP_00002328", + "BDMAP_00001539", + "BDMAP_00004991", + "BDMAP_00005070", + "BDMAP_00004894", + "BDMAP_00003394", + "BDMAP_00001689", + "BDMAP_00001513", + "BDMAP_00002632", + "BDMAP_00022478", + "BDMAP_00003327", + "BDMAP_00000681", + "BDMAP_00001099", + "BDMAP_00004414", + "BDMAP_00000687", + "BDMAP_00001804", + "BDMAP_00000033", + "BDMAP_00001575", + "BDMAP_00004028", + "BDMAP_00001489", + "BDMAP_00014578", + "BDMAP_00003225", + "BDMAP_00002027", + "BDMAP_00003344", + "BDMAP_00002464", + "BDMAP_00001362", + "BDMAP_00002039", + "BDMAP_00000968", + "BDMAP_00014621", + "BDMAP_00002901", + "BDMAP_00007259", + "BDMAP_00001128", + "BDMAP_00002524", + "BDMAP_00000616", + "BDMAP_00001260", + "BDMAP_00002103", + "BDMAP_00002254", + "BDMAP_00004772", + "BDMAP_00002529", + "BDMAP_00000510", + "BDMAP_00004645", + "BDMAP_00000167", + "BDMAP_00001622", + "BDMAP_00003777", + "BDMAP_00004163", + "BDMAP_00000529", + "BDMAP_00000364", + "BDMAP_00003465", + "BDMAP_00000587", + "BDMAP_00001862", + "BDMAP_00004479", + "BDMAP_00002159", + "BDMAP_00002673", + "BDMAP_00003300", + "BDMAP_00000344", + "BDMAP_00005546", + "BDMAP_00003022", + "BDMAP_00001214", + "BDMAP_00002086", + "BDMAP_00000190", + "BDMAP_00001225", + "BDMAP_00002573", + "BDMAP_00003039", + "BDMAP_00004304", + "BDMAP_00002049", + "BDMAP_00001688", + "BDMAP_00004420", + "BDMAP_00001168", + "BDMAP_00000106", + "BDMAP_00022451", + "BDMAP_00003530", + "BDMAP_00003373", + "BDMAP_00002787", + "BDMAP_00005067", + "BDMAP_00002312", + "BDMAP_00002055", + "BDMAP_00001109", + "BDMAP_00002748", + "BDMAP_00001122", + "BDMAP_00004350", + "BDMAP_00004953", + "BDMAP_00002656", + "BDMAP_00003004", + "BDMAP_00003592", + "BDMAP_00004065", + "BDMAP_00003200", + "BDMAP_00000359", + "BDMAP_00000388", + "BDMAP_00002393", + "BDMAP_00003521", + "BDMAP_00000896", + "BDMAP_00004557", + "BDMAP_00004397", + "BDMAP_00004841", + "BDMAP_00004447", + "BDMAP_00003049", + "BDMAP_00001333", + "BDMAP_00003314", + "BDMAP_00004592", + "BDMAP_00004536", + "BDMAP_00000324", + "BDMAP_00001857", + "BDMAP_00001910", + "BDMAP_00014518", + "BDMAP_00014611", + "BDMAP_00022412", + "BDMAP_00014627", + "BDMAP_00000044", + "BDMAP_00002712", + "BDMAP_00002053", + "BDMAP_00000481", + "BDMAP_00002126", + "BDMAP_00000670", + "BDMAP_00001324", + "BDMAP_00002319", + "BDMAP_00001208", + "BDMAP_00003823", + "BDMAP_00000773", + "BDMAP_00002175", + "BDMAP_00000398", + "BDMAP_00003744", + "BDMAP_00014579", + "BDMAP_00001877", + "BDMAP_00002419", + "BDMAP_00004836", + "BDMAP_00001322", + "BDMAP_00002934", + "BDMAP_00003973", + "BDMAP_00004829", + "BDMAP_00014568", + "BDMAP_00001323", + "BDMAP_00002387", + "BDMAP_00003602", + "BDMAP_00003463", + "BDMAP_00001634", + "BDMAP_00008568", + "BDMAP_00003253", + "BDMAP_00003802", + "BDMAP_00014571", + "BDMAP_00003848", + "BDMAP_00001770", + "BDMAP_00000474", + "BDMAP_00001610", + "BDMAP_00014510", + "BDMAP_00003622", + "BDMAP_00005753", + "BDMAP_00002295", + "BDMAP_00003781", + "BDMAP_00003381", + "BDMAP_00002999", + "BDMAP_00003087", + "BDMAP_00004923", + "BDMAP_00001272", + "BDMAP_00001673", + "BDMAP_00006534", + "BDMAP_00000233", + "BDMAP_00014614", + "BDMAP_00001170", + "BDMAP_00004773", + "BDMAP_00003549", + "BDMAP_00001704", + "BDMAP_00014582", + "BDMAP_00002389", + "BDMAP_00002087", + "BDMAP_00007822", + "BDMAP_00003911", + "BDMAP_00004922", + "BDMAP_00001830", + "BDMAP_00004481", + "BDMAP_00002381", + "BDMAP_00014624", + "BDMAP_00002472", + "BDMAP_00000972", + "BDMAP_00014519", + "BDMAP_00000149", + "BDMAP_00022436", + "BDMAP_00008968", + "BDMAP_00004368", + "BDMAP_00003438", + "BDMAP_00002710", + "BDMAP_00005141", + "BDMAP_00000355", + "BDMAP_00002854", + "BDMAP_00004878", + "BDMAP_00002043", + "BDMAP_00004416", + "BDMAP_00004954", + "BDMAP_00000985", + "BDMAP_00000037", + "BDMAP_00002252", + "BDMAP_00002724", + "BDMAP_00008828", + "BDMAP_00000701", + "BDMAP_00002147", + "BDMAP_00000719", + "BDMAP_00002492", + "BDMAP_00002065", + "BDMAP_00005160", + "BDMAP_00002688", + "BDMAP_00000668", + "BDMAP_00001226", + "BDMAP_00001285", + "BDMAP_00014554", + "BDMAP_00001455", + "BDMAP_00003578", + "BDMAP_00003294", + "BDMAP_00001802", + "BDMAP_00002068", + "BDMAP_00002009", + "BDMAP_00001944", + "BDMAP_00003620", + "BDMAP_00003202", + "BDMAP_00004260", + "BDMAP_00002076", + "BDMAP_00000792", + "BDMAP_00000285", + "BDMAP_00014559", + "BDMAP_00004866", + "BDMAP_00000931", + "BDMAP_00000066", + "BDMAP_00002283", + "BDMAP_00003046", + "BDMAP_00002976", + "BDMAP_00002462", + "BDMAP_00000709", + "BDMAP_00003646", + "BDMAP_00004264", + "BDMAP_00004834", + "BDMAP_00002871", + "BDMAP_00003998", + "BDMAP_00002846", + "BDMAP_00004527", + "BDMAP_00001533", + "BDMAP_00002560", + "BDMAP_00002244", + "BDMAP_00014524", + "BDMAP_00000132", + "BDMAP_00000883", + "BDMAP_00001104", + "BDMAP_00002522", + "BDMAP_00003424", + "BDMAP_00014632", + "BDMAP_00002677", + "BDMAP_00001776", + "BDMAP_00000259", + "BDMAP_00003329", + "BDMAP_00002742", + "BDMAP_00001703", + "BDMAP_00002184", + "BDMAP_00001676", + "BDMAP_00001911", + "BDMAP_00014534", + "BDMAP_00004495", + "BDMAP_00004175", + "BDMAP_00003184", + "BDMAP_00003450", + "BDMAP_00003923", + "BDMAP_00003388", + "BDMAP_00014560", + "BDMAP_00000807", + "BDMAP_00000725", + "BDMAP_00001706", + "BDMAP_00003343", + "BDMAP_00000276", + "BDMAP_00001664", + "BDMAP_00003206", + "BDMAP_00004869", + "BDMAP_00002589", + "BDMAP_00005081", + "BDMAP_00004605", + "BDMAP_00002275", + "BDMAP_00009367", + "BDMAP_00003409", + "BDMAP_00002041", + "BDMAP_00001841", + "BDMAP_00001077", + "BDMAP_00004956", + "BDMAP_00005152", + "BDMAP_00000574", + "BDMAP_00003250", + "BDMAP_00003208", + "BDMAP_00004184", + "BDMAP_00002433", + "BDMAP_00002437", + "BDMAP_00004325", + "BDMAP_00004917", + "BDMAP_00001563", + "BDMAP_00004039", + "BDMAP_00014493", + "BDMAP_00002250", + "BDMAP_00003631", + "BDMAP_00002990", + "BDMAP_00001982", + "BDMAP_00000935", + "BDMAP_00003514", + "BDMAP_00004925", + "BDMAP_00001188", + "BDMAP_00004624", + "BDMAP_00002806", + "BDMAP_00000436", + "BDMAP_00002706", + "BDMAP_00014584", + "BDMAP_00003829", + "BDMAP_00000603", + "BDMAP_00002362", + "BDMAP_00002981", + "BDMAP_00002264", + "BDMAP_00001071", + "BDMAP_00000418", + "BDMAP_00003382", + "BDMAP_00003220", + "BDMAP_00004268", + "BDMAP_00022448", + "BDMAP_00014636", + "BDMAP_00003996", + "BDMAP_00000671", + "BDMAP_00002663", + "BDMAP_00000373", + "BDMAP_00000159", + "BDMAP_00022446", + "BDMAP_00001803", + "BDMAP_00004888", + "BDMAP_00002630", + "BDMAP_00000279", + "BDMAP_00000245", + "BDMAP_00001720", + "BDMAP_00003516", + "BDMAP_00000611", + "BDMAP_00005005", + "BDMAP_00005639", + "BDMAP_00004793", + "BDMAP_00002310", + "BDMAP_00000338", + "BDMAP_00004982", + "BDMAP_00000420", + "BDMAP_00004131", + "BDMAP_00004253", + "BDMAP_00001483", + "BDMAP_00002564", + "BDMAP_00000197", + "BDMAP_00007398", + "BDMAP_00014619", + "BDMAP_00003230", + "BDMAP_00003984", + "BDMAP_00002830", + "BDMAP_00003186", + "BDMAP_00003979", + "BDMAP_00000851", + "BDMAP_00002707", + "BDMAP_00002807", + "BDMAP_00000471", + "BDMAP_00001458", + "BDMAP_00000186", + "BDMAP_00004015", + "BDMAP_00014618", + "BDMAP_00014538", + "BDMAP_00022477", + "BDMAP_00002705", + "BDMAP_00022428", + "BDMAP_00000023", + "BDMAP_00003553", + "BDMAP_00002194", + "BDMAP_00000874", + "BDMAP_00003535", + "BDMAP_00002694", + "BDMAP_00003889", + "BDMAP_00000902", + "BDMAP_00004815", + "BDMAP_00004487", + "BDMAP_00002872", + "BDMAP_00004839", + "BDMAP_00002205", + "BDMAP_00004979", + "BDMAP_00003019", + "BDMAP_00009277", + "BDMAP_00004195", + "BDMAP_00001246", + "BDMAP_00002425", + "BDMAP_00001739", + "BDMAP_00003336", + "BDMAP_00000646", + "BDMAP_00004775", + "BDMAP_00001434", + "BDMAP_00002696", + "BDMAP_00000423", + "BDMAP_00001421", + "BDMAP_00000528", + "BDMAP_00003385", + "BDMAP_00000499", + "BDMAP_00005148", + "BDMAP_00000805", + "BDMAP_00002609", + "BDMAP_00000240", + "BDMAP_00001544", + "BDMAP_00008903", + "BDMAP_00000660", + "BDMAP_00003524", + "BDMAP_00004151", + "BDMAP_00001679", + "BDMAP_00002394", + "BDMAP_00002538", + "BDMAP_00001860", + "BDMAP_00002012", + "BDMAP_00022419", + "BDMAP_00003412", + "BDMAP_00000809", + "BDMAP_00001966", + "BDMAP_00008388", + "BDMAP_00001438", + "BDMAP_00006043", + "BDMAP_00001878", + "BDMAP_00003626", + "BDMAP_00003133", + "BDMAP_00000113", + "BDMAP_00002581", + "BDMAP_00003832", + "BDMAP_00002446", + "BDMAP_00000304", + "BDMAP_00002340", + "BDMAP_00002306", + "BDMAP_00002936", + "BDMAP_00014580", + "BDMAP_00004625", + "BDMAP_00003898", + "BDMAP_00004630", + "BDMAP_00002488", + "BDMAP_00003795", + "BDMAP_00003748", + "BDMAP_00003370", + "BDMAP_00004398", + "BDMAP_00003429", + "BDMAP_00002797", + "BDMAP_00001504", + "BDMAP_00005140", + "BDMAP_00001193", + "BDMAP_00000518", + "BDMAP_00001950", + "BDMAP_00003190", + "BDMAP_00003722", + "BDMAP_00002828", + "BDMAP_00006472", + "BDMAP_00001749", + "BDMAP_00003520", + "BDMAP_00004316", + "BDMAP_00001041", + "BDMAP_00003615", + "BDMAP_00002675", + "BDMAP_00003952", + "BDMAP_00000642", + "BDMAP_00001310", + "BDMAP_00001487", + "BDMAP_00001762", + "BDMAP_00004232", + "BDMAP_00004108", + "BDMAP_00002143", + "BDMAP_00000102", + "BDMAP_00001637", + "BDMAP_00004130", + "BDMAP_00002704", + "BDMAP_00002495", + "BDMAP_00003672", + "BDMAP_00000867", + "BDMAP_00000035", + "BDMAP_00001644", + "BDMAP_00001632", + "BDMAP_00003932", + "BDMAP_00000236", + "BDMAP_00002178", + "BDMAP_00002731", + "BDMAP_00000542", + "BDMAP_00003536", + "BDMAP_00003097", + "BDMAP_00014567", + "BDMAP_00003478", + "BDMAP_00014637", + "BDMAP_00001557", + "BDMAP_00001325", + "BDMAP_00002921", + "BDMAP_00003334", + "BDMAP_00004964", + "BDMAP_00001671", + "BDMAP_00004737", + "BDMAP_00003347", + "BDMAP_00002598", + "BDMAP_00001772", + "BDMAP_00022455", + "BDMAP_00000469", + "BDMAP_00001242", + "BDMAP_00001035", + "BDMAP_00003103", + "BDMAP_00004579", + "BDMAP_00022422", + "BDMAP_00000546", + "BDMAP_00004049", + "BDMAP_00001451", + "BDMAP_00014569", + "BDMAP_00002232", + "BDMAP_00001929", + "BDMAP_00001898", + "BDMAP_00001460", + "BDMAP_00014495", + "BDMAP_00004372", + "BDMAP_00003447", + "BDMAP_00003043", + "BDMAP_00003886", + "BDMAP_00001490", + "BDMAP_00004216", + "BDMAP_00003377", + "BDMAP_00004489", + "BDMAP_00005092", + "BDMAP_00000463", + "BDMAP_00000848", + "BDMAP_00004581", + "BDMAP_00014572", + "BDMAP_00008084", + "BDMAP_00003976", + "BDMAP_00000043", + "BDMAP_00004969", + "BDMAP_00000452", + "BDMAP_00000112", + "BDMAP_00022427", + "BDMAP_00001411", + "BDMAP_00003008", + "BDMAP_00004491", + "BDMAP_00003354", + "BDMAP_00000254", + "BDMAP_00003236", + "BDMAP_00002942", + "BDMAP_00004405", + "BDMAP_00001561", + "BDMAP_00000081", + "BDMAP_00003687", + "BDMAP_00001238", + "BDMAP_00004097", + "BDMAP_00001540", + "BDMAP_00003268", + "BDMAP_00001869", + "BDMAP_00014552", + "BDMAP_00004016", + "BDMAP_00014633", + "BDMAP_00001332", + "BDMAP_00000778", + "BDMAP_00001112" + ], + "val": [ + "BDMAP_00004281", + "BDMAP_00003481", + "BDMAP_00001786", + "BDMAP_00000101", + "BDMAP_00001813", + "BDMAP_00000615", + "BDMAP_00003170", + "BDMAP_00004378", + "BDMAP_00004704", + "BDMAP_00003439", + "BDMAP_00002717", + "BDMAP_00001981", + "BDMAP_00000100", + "BDMAP_00001018", + "BDMAP_00002214", + "BDMAP_00001198", + "BDMAP_00001962", + "BDMAP_00002463", + "BDMAP_00005139", + "BDMAP_00000831", + "BDMAP_00002955", + "BDMAP_00003272", + "BDMAP_00000745" + ] + } +] \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_colon.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_colon.json new file mode 100644 index 0000000000000000000000000000000000000000..b8b1a47188a1bd3aadcd2789dd182c8867a3b1da --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_colon.json @@ -0,0 +1,134 @@ +[ + { + "train": [ + "colon_127", + "colon_193", + "colon_155", + "colon_022", + "colon_072", + "colon_119", + "colon_131", + "colon_144", + "colon_142", + "colon_069", + "colon_187", + "colon_137", + "colon_040", + "colon_008", + "colon_161", + "colon_202", + "colon_207", + "colon_038", + "colon_107", + "colon_091", + "colon_192", + "colon_145", + "colon_024", + "colon_039", + "colon_149", + "colon_012", + "colon_164", + "colon_099", + "colon_065", + "colon_009", + "colon_138", + "colon_102", + "colon_216", + "colon_126", + "colon_006", + "colon_095", + "colon_139", + "colon_212", + "colon_159", + "colon_061", + "colon_141", + "colon_168", + "colon_129", + "colon_218", + "colon_028", + "colon_185", + "colon_171", + "colon_046", + "colon_219", + "colon_089", + "colon_001", + "colon_050", + "colon_088", + "colon_172", + "colon_194", + "colon_112", + "colon_148", + "colon_201", + "colon_136", + "colon_075", + "colon_163", + "colon_181", + "colon_054", + "colon_122", + "colon_030", + "colon_157", + "colon_203", + "colon_215", + "colon_134", + "colon_106", + "colon_133", + "colon_033", + "colon_213", + "colon_041", + "colon_045", + "colon_005", + "colon_036", + "colon_100", + "colon_120", + "colon_217", + "colon_042", + "colon_077", + "colon_064", + "colon_124", + "colon_007", + "colon_078", + "colon_011", + "colon_059", + "colon_066", + "colon_205", + "colon_114", + "colon_031", + "colon_140", + "colon_104", + "colon_108", + "colon_081", + "colon_162", + "colon_208", + "colon_032", + "colon_165", + "colon_118" + ], + "val": [ + "colon_214", + "colon_206", + "colon_026", + "colon_051", + "colon_196", + "colon_027", + "colon_098", + "colon_053", + "colon_154", + "colon_175", + "colon_092", + "colon_143", + "colon_103", + "colon_086", + "colon_166", + "colon_176", + "colon_117", + "colon_096", + "colon_015", + "colon_115", + "colon_169", + "colon_074", + "colon_111", + "colon_029", + "colon_025" + ] + } +] \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_colon_bdmap.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_colon_bdmap.json new file mode 100644 index 0000000000000000000000000000000000000000..ba9ae29d77ae00575d76f1007f36fc0370153665 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_colon_bdmap.json @@ -0,0 +1,134 @@ +[ + { + "train": [ + "BDMAP_00004147", + "BDMAP_00004165", + "BDMAP_00002598", + "BDMAP_00003268", + "BDMAP_00005160", + "BDMAP_00003333", + "BDMAP_00003827", + "BDMAP_00004894", + "BDMAP_00002318", + "BDMAP_00002739", + "BDMAP_00000939", + "BDMAP_00004384", + "BDMAP_00000030", + "BDMAP_00002730", + "BDMAP_00000942", + "BDMAP_00000069", + "BDMAP_00004676", + "BDMAP_00003634", + "BDMAP_00000373", + "BDMAP_00003357", + "BDMAP_00001865", + "BDMAP_00003299", + "BDMAP_00001209", + "BDMAP_00001215", + "BDMAP_00002230", + "BDMAP_00002199", + "BDMAP_00002401", + "BDMAP_00000873", + "BDMAP_00002152", + "BDMAP_00002828", + "BDMAP_00002451", + "BDMAP_00000913", + "BDMAP_00001078", + "BDMAP_00001024", + "BDMAP_00001982", + "BDMAP_00003560", + "BDMAP_00004196", + "BDMAP_00004431", + "BDMAP_00002875", + "BDMAP_00004604", + "BDMAP_00004450", + "BDMAP_00002305", + "BDMAP_00005001", + "BDMAP_00004374", + "BDMAP_00001102", + "BDMAP_00001917", + "BDMAP_00002846", + "BDMAP_00001732", + "BDMAP_00004910", + "BDMAP_00000552", + "BDMAP_00002103", + "BDMAP_00002704", + "BDMAP_00004764", + "BDMAP_00003510", + "BDMAP_00003972", + "BDMAP_00003113", + "BDMAP_00004491", + "BDMAP_00004615", + "BDMAP_00005067", + "BDMAP_00003412", + "BDMAP_00001809", + "BDMAP_00001785", + "BDMAP_00000828", + "BDMAP_00002039", + "BDMAP_00004493", + "BDMAP_00000851", + "BDMAP_00002185", + "BDMAP_00001237", + "BDMAP_00004163", + "BDMAP_00003373", + "BDMAP_00000568", + "BDMAP_00001737", + "BDMAP_00002986", + "BDMAP_00000716", + "BDMAP_00003327", + "BDMAP_00000690", + "BDMAP_00000881", + "BDMAP_00004121", + "BDMAP_00002845", + "BDMAP_00004624", + "BDMAP_00003109", + "BDMAP_00004876", + "BDMAP_00005005", + "BDMAP_00003172", + "BDMAP_00001924", + "BDMAP_00005073", + "BDMAP_00003680", + "BDMAP_00000874", + "BDMAP_00000132", + "BDMAP_00001438", + "BDMAP_00004650", + "BDMAP_00005016", + "BDMAP_00002924", + "BDMAP_00002458", + "BDMAP_00000190", + "BDMAP_00003640", + "BDMAP_00001514", + "BDMAP_00003031", + "BDMAP_00001985", + "BDMAP_00004415", + "BDMAP_00001015" + ], + "val": [ + "BDMAP_00000138", + "BDMAP_00000152", + "BDMAP_00000264", + "BDMAP_00000345", + "BDMAP_00000547", + "BDMAP_00001095", + "BDMAP_00001212", + "BDMAP_00001426", + "BDMAP_00001445", + "BDMAP_00001598", + "BDMAP_00001769", + "BDMAP_00001835", + "BDMAP_00001875", + "BDMAP_00002253", + "BDMAP_00002465", + "BDMAP_00002612", + "BDMAP_00002654", + "BDMAP_00003111", + "BDMAP_00003564", + "BDMAP_00003847", + "BDMAP_00003890", + "BDMAP_00003946", + "BDMAP_00004558", + "BDMAP_00004783", + "BDMAP_00005170" + ] + } +] \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_eso_bdmap.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_eso_bdmap.json new file mode 100644 index 0000000000000000000000000000000000000000..c84205e041e041ec4d524ae54cc5ad9cdac6e321 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_eso_bdmap.json @@ -0,0 +1,162 @@ +[ + { + "train": [ + "BDMAP_00014516", + "BDMAP_00014627", + "BDMAP_00014630", + "BDMAP_00014552", + "BDMAP_00014557", + "BDMAP_00014629", + "BDMAP_00014507", + "BDMAP_00014618", + "BDMAP_00014569", + "BDMAP_00014493", + "BDMAP_00014633", + "BDMAP_00014576", + "BDMAP_00014581", + "BDMAP_00014635", + "BDMAP_00014521", + "BDMAP_00014506", + "BDMAP_00014517", + "BDMAP_00014567", + "BDMAP_00014636", + "BDMAP_00014520", + "BDMAP_00014582", + "BDMAP_00014536", + "BDMAP_00014525", + "BDMAP_00014486", + "BDMAP_00014496", + "BDMAP_00014545", + "BDMAP_00014547", + "BDMAP_00014490", + "BDMAP_00014625", + "BDMAP_00014513", + "BDMAP_00014535", + "BDMAP_00014632", + "BDMAP_00014541", + "BDMAP_00014522", + "BDMAP_00014508", + "BDMAP_00014578", + "BDMAP_00014494", + "BDMAP_00014562", + "BDMAP_00014534", + "BDMAP_00014553", + "BDMAP_00014566", + "BDMAP_00014542", + "BDMAP_00014612", + "BDMAP_00014614", + "BDMAP_00014637", + "BDMAP_00014631", + "BDMAP_00014619", + "BDMAP_00014498", + "BDMAP_00014570", + "BDMAP_00014624", + "BDMAP_00014503", + "BDMAP_00014573", + "BDMAP_00014546", + "BDMAP_00014626", + "BDMAP_00014526", + "BDMAP_00014488", + "BDMAP_00014524", + "BDMAP_00014528", + "BDMAP_00014617", + "BDMAP_00014518", + "BDMAP_00014571", + "BDMAP_00014551", + "BDMAP_00014515", + "BDMAP_00014561", + "BDMAP_00014616", + "BDMAP_00014580", + "BDMAP_00014492", + "BDMAP_00014514", + "BDMAP_00014533", + "BDMAP_00014620", + "BDMAP_00014558", + "BDMAP_00014610", + "BDMAP_00014510", + "BDMAP_00014512", + "BDMAP_00014583", + "BDMAP_00014628", + "BDMAP_00014579", + "BDMAP_00014537", + "BDMAP_00014615", + "BDMAP_00014568", + "BDMAP_00014539", + "BDMAP_00014556", + "BDMAP_00014491", + "BDMAP_00014495", + "BDMAP_00014549", + "BDMAP_00014554", + "BDMAP_00014565", + "BDMAP_00014504", + "BDMAP_00014485", + "BDMAP_00014575", + "BDMAP_00014563", + "BDMAP_00014574", + "BDMAP_00014572", + "BDMAP_00014499", + "BDMAP_00014559", + "BDMAP_00014530", + "BDMAP_00014505", + "BDMAP_00014532", + "BDMAP_00014564", + "BDMAP_00014497", + "BDMAP_00014538", + "BDMAP_00014519", + "BDMAP_00014544", + "BDMAP_00014555", + "BDMAP_00014527", + "BDMAP_00014611", + "BDMAP_00014577", + "BDMAP_00014634", + "BDMAP_00014613", + "BDMAP_00014584", + "BDMAP_00014509", + "BDMAP_00014523", + "BDMAP_00014543", + "BDMAP_00014502", + "BDMAP_00014622", + "BDMAP_00014540", + "BDMAP_00014500", + "BDMAP_00014548", + "BDMAP_00014529", + "BDMAP_00014550", + "BDMAP_00014623", + "BDMAP_00014487", + "BDMAP_00014531", + "BDMAP_00014501", + "BDMAP_00014484", + "BDMAP_00014489", + "BDMAP_00014511", + "BDMAP_00014560", + "BDMAP_00014621" + ], + "val": [ + "BDMAP_00014585", + "BDMAP_00014586", + "BDMAP_00014587", + "BDMAP_00014588", + "BDMAP_00014589", + "BDMAP_00014590", + "BDMAP_00014591", + "BDMAP_00014592", + "BDMAP_00014593", + "BDMAP_00014594", + "BDMAP_00014595", + "BDMAP_00014596", + "BDMAP_00014597", + "BDMAP_00014598", + "BDMAP_00014599", + "BDMAP_00014600", + "BDMAP_00014601", + "BDMAP_00014602", + "BDMAP_00014603", + "BDMAP_00014604", + "BDMAP_00014605", + "BDMAP_00014606", + "BDMAP_00014607", + "BDMAP_00014608", + "BDMAP_00014609" + ] + } +] \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_esophagus.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_esophagus.json new file mode 100644 index 0000000000000000000000000000000000000000..34fc7d7be005319469b601dfe3b3ecc690808231 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_esophagus.json @@ -0,0 +1,134 @@ +[ + { + "train": [ + "BDMAP_esophagus_00000001", + "BDMAP_esophagus_00000002", + "BDMAP_esophagus_00000003", + "BDMAP_esophagus_00000004", + "BDMAP_esophagus_00000005", + "BDMAP_esophagus_00000006", + "BDMAP_esophagus_00000007", + "BDMAP_esophagus_00000008", + "BDMAP_esophagus_00000009", + "BDMAP_esophagus_00000010", + "BDMAP_esophagus_00000011", + "BDMAP_esophagus_00000012", + "BDMAP_esophagus_00000013", + "BDMAP_esophagus_00000014", + "BDMAP_esophagus_00000015", + "BDMAP_esophagus_00000016", + "BDMAP_esophagus_00000017", + "BDMAP_esophagus_00000018", + "BDMAP_esophagus_00000019", + "BDMAP_esophagus_00000020", + "BDMAP_esophagus_00000021", + "BDMAP_esophagus_00000022", + "BDMAP_esophagus_00000023", + "BDMAP_esophagus_00000024", + "BDMAP_esophagus_00000025", + "BDMAP_esophagus_00000026", + "BDMAP_esophagus_00000027", + "BDMAP_esophagus_00000028", + "BDMAP_esophagus_00000029", + "BDMAP_esophagus_00000030", + "BDMAP_esophagus_00000031", + "BDMAP_esophagus_00000032", + "BDMAP_esophagus_00000033", + "BDMAP_esophagus_00000034", + "BDMAP_esophagus_00000035", + "BDMAP_esophagus_00000036", + "BDMAP_esophagus_00000037", + "BDMAP_esophagus_00000038", + "BDMAP_esophagus_00000039", + "BDMAP_esophagus_00000040", + "BDMAP_esophagus_00000041", + "BDMAP_esophagus_00000042", + "BDMAP_esophagus_00000043", + "BDMAP_esophagus_00000044", + "BDMAP_esophagus_00000045", + "BDMAP_esophagus_00000046", + "BDMAP_esophagus_00000047", + "BDMAP_esophagus_00000048", + "BDMAP_esophagus_00000049", + "BDMAP_esophagus_00000050", + "BDMAP_esophagus_00000051", + "BDMAP_esophagus_00000052", + "BDMAP_esophagus_00000053", + "BDMAP_esophagus_00000054", + "BDMAP_esophagus_00000055", + "BDMAP_esophagus_00000056", + "BDMAP_esophagus_00000057", + "BDMAP_esophagus_00000058", + "BDMAP_esophagus_00000059", + "BDMAP_esophagus_00000060", + "BDMAP_esophagus_00000061", + "BDMAP_esophagus_00000062", + "BDMAP_esophagus_00000063", + "BDMAP_esophagus_00000064", + "BDMAP_esophagus_00000065", + "BDMAP_esophagus_00000066", + "BDMAP_esophagus_00000067", + "BDMAP_esophagus_00000068", + "BDMAP_esophagus_00000069", + "BDMAP_esophagus_00000070", + "BDMAP_esophagus_00000071", + "BDMAP_esophagus_00000072", + "BDMAP_esophagus_00000073", + "BDMAP_esophagus_00000074", + "BDMAP_esophagus_00000075", + "BDMAP_esophagus_00000076", + "BDMAP_esophagus_00000077", + "BDMAP_esophagus_00000078", + "BDMAP_esophagus_00000079", + "BDMAP_esophagus_00000080", + "BDMAP_esophagus_00000081", + "BDMAP_esophagus_00000082", + "BDMAP_esophagus_00000083", + "BDMAP_esophagus_00000084", + "BDMAP_esophagus_00000085", + "BDMAP_esophagus_00000086", + "BDMAP_esophagus_00000087", + "BDMAP_esophagus_00000088", + "BDMAP_esophagus_00000089", + "BDMAP_esophagus_00000090", + "BDMAP_esophagus_00000091", + "BDMAP_esophagus_00000092", + "BDMAP_esophagus_00000093", + "BDMAP_esophagus_00000094", + "BDMAP_esophagus_00000095", + "BDMAP_esophagus_00000096", + "BDMAP_esophagus_00000097", + "BDMAP_esophagus_00000098", + "BDMAP_esophagus_00000099", + "BDMAP_esophagus_00000100", + "BDMAP_esophagus_00000101" + ], + "val": [ + "BDMAP_esophagus_00000102", + "BDMAP_esophagus_00000103", + "BDMAP_esophagus_00000104", + "BDMAP_esophagus_00000105", + "BDMAP_esophagus_00000106", + "BDMAP_esophagus_00000107", + "BDMAP_esophagus_00000108", + "BDMAP_esophagus_00000109", + "BDMAP_esophagus_00000110", + "BDMAP_esophagus_00000111", + "BDMAP_esophagus_00000112", + "BDMAP_esophagus_00000113", + "BDMAP_esophagus_00000114", + "BDMAP_esophagus_00000115", + "BDMAP_esophagus_00000116", + "BDMAP_esophagus_00000117", + "BDMAP_esophagus_00000118", + "BDMAP_esophagus_00000119", + "BDMAP_esophagus_00000120", + "BDMAP_esophagus_00000121", + "BDMAP_esophagus_00000122", + "BDMAP_esophagus_00000123", + "BDMAP_esophagus_00000124", + "BDMAP_esophagus_00000125", + "BDMAP_esophagus_00000126" + ] + } +] \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_new.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_new.json new file mode 100644 index 0000000000000000000000000000000000000000..78ccb8be6929194efebb21c6c811aa3ea4417260 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_new.json @@ -0,0 +1,1800 @@ +[ + { + "train": [ + "BDMAP_00004015", + "BDMAP_00000438", + "BDMAP_00002815", + "BDMAP_00002855", + "BDMAP_00000714", + "BDMAP_00003438", + "BDMAP_00001214", + "BDMAP_00005444", + "BDMAP_00001584", + "BDMAP_00002232", + "BDMAP_00002332", + "BDMAP_00003525", + "BDMAP_00003592", + "BDMAP_00000859", + "BDMAP_00000338", + "BDMAP_00002947", + "BDMAP_00000732", + "BDMAP_00002244", + "BDMAP_00004297", + "BDMAP_00004447", + "BDMAP_00002313", + "BDMAP_00004672", + "BDMAP_00004198", + "BDMAP_00008525", + "BDMAP_00001704", + "BDMAP_00001504", + "BDMAP_00000589", + "BDMAP_00004231", + "BDMAP_00005078", + "BDMAP_00003900", + "BDMAP_00003508", + "BDMAP_00005169", + "BDMAP_00008526", + "BDMAP_00002362", + "BDMAP_00004964", + "BDMAP_00001565", + "BDMAP_00002295", + "BDMAP_00003812", + "BDMAP_00003254", + "BDMAP_00009367", + "BDMAP_00000324", + "BDMAP_00001096", + "BDMAP_00000696", + "BDMAP_00000972", + "BDMAP_00002216", + "BDMAP_00000087", + "BDMAP_00000940", + "BDMAP_00004106", + "BDMAP_00002126", + "BDMAP_00001288", + "BDMAP_00003479", + "BDMAP_00000416", + "BDMAP_00000192", + "BDMAP_00002076", + "BDMAP_00002387", + "BDMAP_00002411", + "BDMAP_00001441", + "BDMAP_00004796", + "BDMAP_00004804", + "BDMAP_00001836", + "BDMAP_00001701", + "BDMAP_00006623", + "BDMAP_00005185", + "BDMAP_00001419", + "BDMAP_00003133", + "BDMAP_00003781", + "BDMAP_00004641", + "BDMAP_00002896", + "BDMAP_00000093", + "BDMAP_00000614", + "BDMAP_00000447", + "BDMAP_00001912", + "BDMAP_00001931", + "BDMAP_00002233", + "BDMAP_00001921", + "BDMAP_00007200", + "BDMAP_00001408", + "BDMAP_00005022", + "BDMAP_00000052", + "BDMAP_00004398", + "BDMAP_00002688", + "BDMAP_00005141", + "BDMAP_00002278", + "BDMAP_00001521", + "BDMAP_00007398", + "BDMAP_00004880", + "BDMAP_00003889", + "BDMAP_00000771", + "BDMAP_00003451", + "BDMAP_00002237", + "BDMAP_00004982", + "BDMAP_00000618", + "BDMAP_00000956", + "BDMAP_00001862", + "BDMAP_00002188", + "BDMAP_00003822", + "BDMAP_00002460", + "BDMAP_00002793", + "BDMAP_00002120", + "BDMAP_00003443", + "BDMAP_00003551", + "BDMAP_00004077", + "BDMAP_00002475", + "BDMAP_00000236", + "BDMAP_00004229", + "BDMAP_00002945", + "BDMAP_00003824", + "BDMAP_00004549", + "BDMAP_00002523", + "BDMAP_00006534", + "BDMAP_00004735", + "BDMAP_00003934", + "BDMAP_00004359", + "BDMAP_00000541", + "BDMAP_00003326", + "BDMAP_00004511", + "BDMAP_00001590", + "BDMAP_00001823", + "BDMAP_00000470", + "BDMAP_00001828", + "BDMAP_00003017", + "BDMAP_00002227", + "BDMAP_00003347", + "BDMAP_00002402", + "BDMAP_00004097", + "BDMAP_00003853", + "BDMAP_00003543", + "BDMAP_00003744", + "BDMAP_00003400", + "BDMAP_00005075", + "BDMAP_00002616", + "BDMAP_00003244", + "BDMAP_00003633", + "BDMAP_00002021", + "BDMAP_00004773", + "BDMAP_00000037", + "BDMAP_00002309", + "BDMAP_00003356", + "BDMAP_00000774", + "BDMAP_00005064", + "BDMAP_00003385", + "BDMAP_00000993", + "BDMAP_00005092", + "BDMAP_00000715", + "BDMAP_00004262", + "BDMAP_00004719", + "BDMAP_00003168", + "BDMAP_00002250", + "BDMAP_00004264", + "BDMAP_00001632", + "BDMAP_00000388", + "BDMAP_00004286", + "BDMAP_00000154", + "BDMAP_00001461", + "BDMAP_00000683", + "BDMAP_00000309", + "BDMAP_00001125", + "BDMAP_00001898", + "BDMAP_00001845", + "BDMAP_00001464", + "BDMAP_00003658", + "BDMAP_00002844", + "BDMAP_00003427", + "BDMAP_00004636", + "BDMAP_00004129", + "BDMAP_00001842", + "BDMAP_00001646", + "BDMAP_00006043", + "BDMAP_00004288", + "BDMAP_00003631", + "BDMAP_00003440", + "BDMAP_00004550", + "BDMAP_00005070", + "BDMAP_00004829", + "BDMAP_00000225", + "BDMAP_00004060", + "BDMAP_00001092", + "BDMAP_00002619", + "BDMAP_00000701", + "BDMAP_00001247", + "BDMAP_00002304", + "BDMAP_00008128", + "BDMAP_00003376", + "BDMAP_00000431", + "BDMAP_00004546", + "BDMAP_00005898", + "BDMAP_00003685", + "BDMAP_00004992", + "BDMAP_00004954", + "BDMAP_00004494", + "BDMAP_00001617", + "BDMAP_00003886", + "BDMAP_00003776", + "BDMAP_00000692", + "BDMAP_00003840", + "BDMAP_00001414", + "BDMAP_00003277", + "BDMAP_00004969", + "BDMAP_00000623", + "BDMAP_00004847", + "BDMAP_00003590", + "BDMAP_00001712", + "BDMAP_00004895", + "BDMAP_00004651", + "BDMAP_00001605", + "BDMAP_00004183", + "BDMAP_00003918", + "BDMAP_00002029", + "BDMAP_00001597", + "BDMAP_00003612", + "BDMAP_00003138", + "BDMAP_00000558", + "BDMAP_00001905", + "BDMAP_00001736", + "BDMAP_00005063", + "BDMAP_00000391", + "BDMAP_00001440", + "BDMAP_00003613", + "BDMAP_00004841", + "BDMAP_00004917", + "BDMAP_00003329", + "BDMAP_00001331", + "BDMAP_00002737", + "BDMAP_00000197", + "BDMAP_00006472", + "BDMAP_00003650", + "BDMAP_00003260", + "BDMAP_00001564", + "BDMAP_00003396", + "BDMAP_00001057", + "BDMAP_00000462", + "BDMAP_00003657", + "BDMAP_00002580", + "BDMAP_00004541", + "BDMAP_00000809", + "BDMAP_00004023", + "BDMAP_00001637", + "BDMAP_00004885", + "BDMAP_00004184", + "BDMAP_00000855", + "BDMAP_00005108", + "BDMAP_00003769", + "BDMAP_00003215", + "BDMAP_00003036", + "BDMAP_00002171", + "BDMAP_00002298", + "BDMAP_00001040", + "BDMAP_00001368", + "BDMAP_00002758", + "BDMAP_00000744", + "BDMAP_00006533", + "BDMAP_00000542", + "BDMAP_00004843", + "BDMAP_00001804", + "BDMAP_00001806", + "BDMAP_00000243", + "BDMAP_00009738", + "BDMAP_00000882", + "BDMAP_00001175", + "BDMAP_00005037", + "BDMAP_00003319", + "BDMAP_00003598", + "BDMAP_00002829", + "BDMAP_00001754", + "BDMAP_00001476", + "BDMAP_00000411", + "BDMAP_00004514", + "BDMAP_00001545", + "BDMAP_00004293", + "BDMAP_00004927", + "BDMAP_00001618", + "BDMAP_00002690", + "BDMAP_00003130", + "BDMAP_00000427", + "BDMAP_00003141", + "BDMAP_00003483", + "BDMAP_00005020", + "BDMAP_00001067", + "BDMAP_00001523", + "BDMAP_00005140", + "BDMAP_00002863", + "BDMAP_00001649", + "BDMAP_00003683", + "BDMAP_00002328", + "BDMAP_00004295", + "BDMAP_00000676", + "BDMAP_00001064", + "BDMAP_00004793", + "BDMAP_00000442", + "BDMAP_00003811", + "BDMAP_00002446", + "BDMAP_00003456", + "BDMAP_00003614", + "BDMAP_00004744", + "BDMAP_00000037", + "BDMAP_00004838", + "BDMAP_00003441", + "BDMAP_00002933", + "BDMAP_00002834", + "BDMAP_00003178", + "BDMAP_00001413", + "BDMAP_00000129", + "BDMAP_00003613", + "BDMAP_00000516", + "BDMAP_00000039", + "BDMAP_00000008", + "BDMAP_00003032", + "BDMAP_00001443", + "BDMAP_00004482", + "BDMAP_00003300", + "BDMAP_00004039", + "BDMAP_00002251", + "BDMAP_00000626", + "BDMAP_00001128", + "BDMAP_00004712", + "BDMAP_00000159", + "BDMAP_00003364", + "BDMAP_00002609", + "BDMAP_00002511", + "BDMAP_00003619", + "BDMAP_00000843", + "BDMAP_00003337", + "BDMAP_00003638", + "BDMAP_00003976", + "BDMAP_00001654", + "BDMAP_00002040", + "BDMAP_00001402", + "BDMAP_00003183", + "BDMAP_00003250", + "BDMAP_00001747", + "BDMAP_00003083", + "BDMAP_00004193", + "BDMAP_00001223", + "BDMAP_00002198", + "BDMAP_00004101", + "BDMAP_00002488", + "BDMAP_00001283", + "BDMAP_00005171", + "BDMAP_00002695", + "BDMAP_00003072", + "BDMAP_00003762", + "BDMAP_00000285", + "BDMAP_00003143", + "BDMAP_00003910", + "BDMAP_00002133", + "BDMAP_00002440", + "BDMAP_00001800", + "BDMAP_00003601", + "BDMAP_00003531", + "BDMAP_00002434", + "BDMAP_00001383", + "BDMAP_00001619", + "BDMAP_00004763", + "BDMAP_00002186", + "BDMAP_00001391", + "BDMAP_00000926", + "BDMAP_00005192", + "BDMAP_00002711", + "BDMAP_00004481", + "BDMAP_00004887", + "BDMAP_00004467", + "BDMAP_00001944", + "BDMAP_00003258", + "BDMAP_00005174", + "BDMAP_00001450", + "BDMAP_00004265", + "BDMAP_00002363", + "BDMAP_00001188", + "BDMAP_00002953", + "BDMAP_00003816", + "BDMAP_00004033", + "BDMAP_00001563", + "BDMAP_00004420", + "BDMAP_00004722", + "BDMAP_00002710", + "BDMAP_00002417", + "BDMAP_00001647", + "BDMAP_00001376", + "BDMAP_00004693", + "BDMAP_00000646", + "BDMAP_00003199", + "BDMAP_00000382", + "BDMAP_00004551", + "BDMAP_00002851", + "BDMAP_00002407", + "BDMAP_00003054", + "BDMAP_00004068", + "BDMAP_00002065", + "BDMAP_00001068", + "BDMAP_00000320", + "BDMAP_00004074", + "BDMAP_00001517", + "BDMAP_00000533", + "BDMAP_00000751", + "BDMAP_00000240", + "BDMAP_00000980", + "BDMAP_00000868", + "BDMAP_00001620", + "BDMAP_00002574", + "BDMAP_00000161", + "BDMAP_00004144", + "BDMAP_00000435", + "BDMAP_00003615", + "BDMAP_00004253", + "BDMAP_00001434", + "BDMAP_00002570", + "BDMAP_00000279", + "BDMAP_00004331", + "BDMAP_00004339", + "BDMAP_00002302", + "BDMAP_00003600", + "BDMAP_00000687", + "BDMAP_00003943", + "BDMAP_00000916", + "BDMAP_00000867", + "BDMAP_00000355", + "BDMAP_00001496", + "BDMAP_00003682", + "BDMAP_00000062", + "BDMAP_00004616", + "BDMAP_00003193", + "BDMAP_00001929", + "BDMAP_00001184", + "BDMAP_00003861", + "BDMAP_00000234", + "BDMAP_00001480", + "BDMAP_00001378", + "BDMAP_00001218", + "BDMAP_00000465", + "BDMAP_00004679", + "BDMAP_00003447", + "BDMAP_00000883", + "BDMAP_00000699", + "BDMAP_00002285", + "BDMAP_00000117", + "BDMAP_00000428", + "BDMAP_00002111", + "BDMAP_00001998", + "BDMAP_00004102", + "BDMAP_00000359", + "BDMAP_00000356", + "BDMAP_00003153", + "BDMAP_00001077", + "BDMAP_00001607", + "BDMAP_00003239", + "BDMAP_00000710", + "BDMAP_00004671", + "BDMAP_00004011", + "BDMAP_00005081", + "BDMAP_00002012", + "BDMAP_00003998", + "BDMAP_00004350", + "BDMAP_00001020", + "BDMAP_00000532", + "BDMAP_00000364", + "BDMAP_00001614", + "BDMAP_00001870", + "BDMAP_00001634", + "BDMAP_00000662", + "BDMAP_00000812", + "BDMAP_00002596", + "BDMAP_00003200", + "BDMAP_00000104", + "BDMAP_00003558", + "BDMAP_00001027", + "BDMAP_00003749", + "BDMAP_00000908", + "BDMAP_00002698", + "BDMAP_00001817", + "BDMAP_00000963", + "BDMAP_00000423", + "BDMAP_00004592", + "BDMAP_00002068", + "BDMAP_00005154", + "BDMAP_00004395", + "BDMAP_00000366", + "BDMAP_00001518", + "BDMAP_00000258", + "BDMAP_00002807", + "BDMAP_00003281", + "BDMAP_00003038", + "BDMAP_00002331", + "BDMAP_00002433", + "BDMAP_00001656", + "BDMAP_00000219", + "BDMAP_00003701", + "BDMAP_00003363", + "BDMAP_00003747", + "BDMAP_00000137", + "BDMAP_00002306", + "BDMAP_00005105", + "BDMAP_00003207", + "BDMAP_00002582", + "BDMAP_00000713", + "BDMAP_00000353", + "BDMAP_00004359", + "BDMAP_00002760", + "BDMAP_00005006", + "BDMAP_00003646", + "BDMAP_00001305", + "BDMAP_00004311", + "BDMAP_00001906", + "BDMAP_00002041", + "BDMAP_00002404", + "BDMAP_00004130", + "BDMAP_00002977", + "BDMAP_00003252", + "BDMAP_00002930", + "BDMAP_00002484", + "BDMAP_00001169", + "BDMAP_00003063", + "BDMAP_00000889", + "BDMAP_00000445", + "BDMAP_00003839", + "BDMAP_00002322", + "BDMAP_00002017", + "BDMAP_00004194", + "BDMAP_00001677", + "BDMAP_00003508", + "BDMAP_00003312", + "BDMAP_00004327", + "BDMAP_00001475", + "BDMAP_00003415", + "BDMAP_00002718", + "BDMAP_00004131", + "BDMAP_00004968", + "BDMAP_00002864", + "BDMAP_00000432", + "BDMAP_00000887", + "BDMAP_00004195", + "BDMAP_00004345", + "BDMAP_00002260", + "BDMAP_00002707", + "BDMAP_00003949", + "BDMAP_00001799", + "BDMAP_00004368", + "BDMAP_00003711", + "BDMAP_00001710", + "BDMAP_00004150", + "BDMAP_00004259", + "BDMAP_00004620", + "BDMAP_00001636", + "BDMAP_00003642", + "BDMAP_00000429", + "BDMAP_00004682", + "BDMAP_00001711", + "BDMAP_00002720", + "BDMAP_00000616", + "BDMAP_00002265", + "BDMAP_00002333", + "BDMAP_00003603", + "BDMAP_00003184", + "BDMAP_00005009", + "BDMAP_00003039", + "BDMAP_00004673", + "BDMAP_00003034", + "BDMAP_00001633", + "BDMAP_00000977", + "BDMAP_00001919", + "BDMAP_00002084", + "BDMAP_00001050", + "BDMAP_00004048", + "BDMAP_00001721", + "BDMAP_00001325", + "BDMAP_00001465", + "BDMAP_00003073", + "BDMAP_00000660", + "BDMAP_00003947", + "BDMAP_00001089", + "BDMAP_00003733", + "BDMAP_00004761", + "BDMAP_00000331", + "BDMAP_00000215", + "BDMAP_00005198", + "BDMAP_00002340", + "BDMAP_00000297", + "BDMAP_00002788", + "BDMAP_00000414", + "BDMAP_00003189", + "BDMAP_00002437", + "BDMAP_00003516", + "BDMAP_00000948", + "BDMAP_00003963", + "BDMAP_00002940", + "BDMAP_00001277", + "BDMAP_00001664", + "BDMAP_00004014", + "BDMAP_00001230", + "BDMAP_00004303", + "BDMAP_00002951", + "BDMAP_00004503", + "BDMAP_00004495", + "BDMAP_00008388", + "BDMAP_00004669", + "BDMAP_00001807", + "BDMAP_00001273", + "BDMAP_00000998", + "BDMAP_00003070", + "BDMAP_00003823", + "BDMAP_00003934", + "BDMAP_00000098", + "BDMAP_00004347", + "BDMAP_00002537", + "BDMAP_00001776", + "BDMAP_00004487", + "BDMAP_00003177", + "BDMAP_00005017", + "BDMAP_00004597", + "BDMAP_00002460", + "BDMAP_00001624", + "BDMAP_00002928", + "BDMAP_00004232", + "BDMAP_00004867", + "BDMAP_00000122", + "BDMAP_00005157", + "BDMAP_00003719", + "BDMAP_00001941", + "BDMAP_00003520", + "BDMAP_00002462", + "BDMAP_00003713", + "BDMAP_00001375", + "BDMAP_00005103", + "BDMAP_00000377", + "BDMAP_00000805", + "BDMAP_00003230", + "BDMAP_00000241", + "BDMAP_00003358", + "BDMAP_00002226", + "BDMAP_00002396", + "BDMAP_00002052", + "BDMAP_00000506", + "BDMAP_00000742", + "BDMAP_00003832", + "BDMAP_00000719", + "BDMAP_00005114", + "BDMAP_00004066", + "BDMAP_00003759", + "BDMAP_00004316", + "BDMAP_00001094", + "BDMAP_00000034", + "BDMAP_00004407", + "BDMAP_00003301", + "BDMAP_00000259", + "BDMAP_00002087", + "BDMAP_00003506", + "BDMAP_00002656", + "BDMAP_00002981", + "BDMAP_00000989", + "BDMAP_00002492", + "BDMAP_00000309", + "BDMAP_00000862", + "BDMAP_00005175", + "BDMAP_00001796", + "BDMAP_00003264", + "BDMAP_00000587", + "BDMAP_00003448", + "BDMAP_00002184", + "BDMAP_00001673", + "BDMAP_00004209", + "BDMAP_00000667", + "BDMAP_00001487", + "BDMAP_00005165", + "BDMAP_00002581", + "BDMAP_00004854", + "BDMAP_00005030", + "BDMAP_00001863", + "BDMAP_00003587", + "BDMAP_00001396", + "BDMAP_00000139", + "BDMAP_00003758", + "BDMAP_00001676", + "BDMAP_00000839", + "BDMAP_00002498", + "BDMAP_00000574", + "BDMAP_00001794", + "BDMAP_00003952", + "BDMAP_00001513", + "BDMAP_00003435", + "BDMAP_00004870", + "BDMAP_00004686", + "BDMAP_00001221", + "BDMAP_00003411", + "BDMAP_00001757", + "BDMAP_00002840", + "BDMAP_00000176", + "BDMAP_00004557", + "BDMAP_00003058", + "BDMAP_00003195", + "BDMAP_00002421", + "BDMAP_00000582", + "BDMAP_00004552", + "BDMAP_00002067", + "BDMAP_00005537", + "BDMAP_00003955", + "BDMAP_00000569", + "BDMAP_00001977", + "BDMAP_00001420", + "BDMAP_00002948", + "BDMAP_00003882", + "BDMAP_00000499", + "BDMAP_00003240", + "BDMAP_00002288", + "BDMAP_00005077", + "BDMAP_00002833", + "BDMAP_00004479", + "BDMAP_00002893", + "BDMAP_00002993", + "BDMAP_00004499", + "BDMAP_00000555", + "BDMAP_00002751", + "BDMAP_00003722", + "BDMAP_00001908", + "BDMAP_00002638", + "BDMAP_00000698", + "BDMAP_00003117", + "BDMAP_00002326", + "BDMAP_00002959", + "BDMAP_00000686", + "BDMAP_00004454", + "BDMAP_00001328", + "BDMAP_00002173", + "BDMAP_00001035", + "BDMAP_00001258", + "BDMAP_00002803", + "BDMAP_00002292", + "BDMAP_00003848", + "BDMAP_00004759", + "BDMAP_00002122", + "BDMAP_00000321", + "BDMAP_00001219", + "BDMAP_00001995", + "BDMAP_00000649", + "BDMAP_00005152", + "BDMAP_00001045", + "BDMAP_00002826", + "BDMAP_00001059", + "BDMAP_00001254", + "BDMAP_00000244", + "BDMAP_00004980", + "BDMAP_00002906", + "BDMAP_00002804", + "BDMAP_00001075", + "BDMAP_00000968", + "BDMAP_00002871", + "BDMAP_00001296", + "BDMAP_00001931", + "BDMAP_00003629", + "BDMAP_00004031", + "BDMAP_00004901", + "BDMAP_00000725", + "BDMAP_00003245", + "BDMAP_00000788", + "BDMAP_00001557", + "BDMAP_00001390", + "BDMAP_00004652", + "BDMAP_00001939", + "BDMAP_00000059", + "BDMAP_00001242", + "BDMAP_00004091", + "BDMAP_00004856", + "BDMAP_00000329", + "BDMAP_00003444", + "BDMAP_00003880", + "BDMAP_00001707", + "BDMAP_00004354", + "BDMAP_00001690", + "BDMAP_00001684", + "BDMAP_00002085", + "BDMAP_00003549", + "BDMAP_00000518", + "BDMAP_00001289", + "BDMAP_00004087", + "BDMAP_00001768", + "BDMAP_00000036", + "BDMAP_00004956", + "BDMAP_00003491", + "BDMAP_00004437", + "BDMAP_00004990", + "BDMAP_00003957", + "BDMAP_00003697", + "BDMAP_00003579", + "BDMAP_00000434", + "BDMAP_00004926", + "BDMAP_00002163", + "BDMAP_00001126", + "BDMAP_00004925", + "BDMAP_00000706", + "BDMAP_00000368", + "BDMAP_00001451", + "BDMAP_00002742", + "BDMAP_00001612", + "BDMAP_00005166", + "BDMAP_00002422", + "BDMAP_00000452", + "BDMAP_00003815", + "BDMAP_00004834", + "BDMAP_00000053", + "BDMAP_00001410", + "BDMAP_00000837", + "BDMAP_00003704", + "BDMAP_00002005", + "BDMAP_00001602", + "BDMAP_00004633", + "BDMAP_00002573", + "BDMAP_00000201", + "BDMAP_00002942", + "BDMAP_00001744", + "BDMAP_00002505", + "BDMAP_00000376", + "BDMAP_00003851", + "BDMAP_00001549", + "BDMAP_00003973", + "BDMAP_00002552", + "BDMAP_00002018", + "BDMAP_00004260", + "BDMAP_00003869", + "BDMAP_00004427", + "BDMAP_00002273", + "BDMAP_00004702", + "BDMAP_00003457", + "BDMAP_00004181", + "BDMAP_00003956", + "BDMAP_00001183", + "BDMAP_00001703", + "BDMAP_00000810", + "BDMAP_00002507", + "BDMAP_00003930", + "BDMAP_00004257", + "BDMAP_00001252", + "BDMAP_00003984", + "BDMAP_00004903", + "BDMAP_00002675", + "BDMAP_00002431", + "BDMAP_00004083", + "BDMAP_00005099", + "BDMAP_00004581", + "BDMAP_00005136", + "BDMAP_00003808", + "BDMAP_00000066", + "BDMAP_00002476", + "BDMAP_00005046", + "BDMAP_00003721", + "BDMAP_00003672", + "BDMAP_00000439", + "BDMAP_00004216", + "BDMAP_00004608", + "BDMAP_00004294", + "BDMAP_00003736", + "BDMAP_00004148", + "BDMAP_00001637", + "BDMAP_00003666", + "BDMAP_00003343", + "BDMAP_00004457", + "BDMAP_00002884", + "BDMAP_00004343", + "BDMAP_00004317", + "BDMAP_00004717", + "BDMAP_00000826", + "BDMAP_00004510", + "BDMAP_00002776", + "BDMAP_00003553", + "BDMAP_00000336", + "BDMAP_00001268", + "BDMAP_00000601", + "BDMAP_00003035", + "BDMAP_00000924", + "BDMAP_00002114", + "BDMAP_00003774", + "BDMAP_00001104", + "BDMAP_00001516", + "BDMAP_00002920", + "BDMAP_00002410", + "BDMAP_00008389", + "BDMAP_00000319", + "BDMAP_00003392", + "BDMAP_00003253", + "BDMAP_00002353", + "BDMAP_00005167", + "BDMAP_00002617", + "BDMAP_00002045", + "BDMAP_00002524", + "BDMAP_00002870", + "BDMAP_00003220", + "BDMAP_00001079", + "BDMAP_00008617", + "BDMAP_00002035", + "BDMAP_00002579", + "BDMAP_00003028", + "BDMAP_00000815", + "BDMAP_00002806", + "BDMAP_00002808", + "BDMAP_00002509", + "BDMAP_00000985", + "BDMAP_00002696", + "BDMAP_00003463", + "BDMAP_00000233", + "BDMAP_00000982", + "BDMAP_00004836", + "BDMAP_00001408", + "BDMAP_00001225", + "BDMAP_00000229", + "BDMAP_00001001", + "BDMAP_00003409", + "BDMAP_00002653", + "BDMAP_00000102", + "BDMAP_00001853", + "BDMAP_00002211", + "BDMAP_00001340", + "BDMAP_00005148", + "BDMAP_00002562", + "BDMAP_00004771", + "BDMAP_00003132", + "BDMAP_00000604", + "BDMAP_00003294", + "BDMAP_00003315", + "BDMAP_00002164", + "BDMAP_00001064", + "BDMAP_00004605", + "BDMAP_00004268", + "BDMAP_00001851", + "BDMAP_00001161", + "BDMAP_00004630", + "BDMAP_00000936", + "BDMAP_00002487", + "BDMAP_00004561", + "BDMAP_00004328", + "BDMAP_00005113", + "BDMAP_00003051", + "BDMAP_00000987", + "BDMAP_00005162", + "BDMAP_00005085", + "BDMAP_00003359", + "BDMAP_00005151", + "BDMAP_00002655", + "BDMAP_00003535", + "BDMAP_00001947", + "BDMAP_00002086", + "BDMAP_00004775", + "BDMAP_00002022", + "BDMAP_00003509", + "BDMAP_00000656", + "BDMAP_00001878", + "BDMAP_00001261", + "BDMAP_00004208", + "BDMAP_00003530", + "BDMAP_00001228", + "BDMAP_00000044", + "BDMAP_00005399", + "BDMAP_00000293", + "BDMAP_00003806", + "BDMAP_00000489", + "BDMAP_00000481", + "BDMAP_00002936", + "BDMAP_00000724", + "BDMAP_00000265", + "BDMAP_00002990", + "BDMAP_00003994", + "BDMAP_00000773", + "BDMAP_00002033", + "BDMAP_00004397", + "BDMAP_00001133", + "BDMAP_00004224", + "BDMAP_00004211", + "BDMAP_00001119", + "BDMAP_00004897", + "BDMAP_00000090", + "BDMAP_00002075", + "BDMAP_00000583", + "BDMAP_00001740", + "BDMAP_00000951", + "BDMAP_00000023", + "BDMAP_00000756", + "BDMAP_00002746", + "BDMAP_00000128", + "BDMAP_00002558", + "BDMAP_00001831", + "BDMAP_00004979", + "BDMAP_00003727", + "BDMAP_00001581", + "BDMAP_00001571", + "BDMAP_00004981", + "BDMAP_00004296", + "BDMAP_00000249", + "BDMAP_00000935", + "BDMAP_00000871", + "BDMAP_00001911", + "BDMAP_00002787", + "BDMAP_00002723", + "BDMAP_00000943", + "BDMAP_00001826", + "BDMAP_00002501", + "BDMAP_00001784", + "BDMAP_00003197", + "BDMAP_00002504", + "BDMAP_00001286", + "BDMAP_00003735", + "BDMAP_00002200", + "BDMAP_00003384", + "BDMAP_00001520", + "BDMAP_00000043", + "BDMAP_00004315", + "BDMAP_00000836", + "BDMAP_00003129", + "BDMAP_00000162", + "BDMAP_00003996", + "BDMAP_00001500", + "BDMAP_00000917", + "BDMAP_00003493", + "BDMAP_00002319", + "BDMAP_00001411", + "BDMAP_00004108", + "BDMAP_00002426", + "BDMAP_00004850", + "BDMAP_00005191", + "BDMAP_00001483", + "BDMAP_00002665", + "BDMAP_00001275", + "BDMAP_00001239", + "BDMAP_00004627", + "BDMAP_00004579", + "BDMAP_00004928", + "BDMAP_00003959", + "BDMAP_00001444", + "BDMAP_00003514", + "BDMAP_00001370", + "BDMAP_00001457", + "BDMAP_00000210", + "BDMAP_00003923", + "BDMAP_00001772", + "BDMAP_00002571", + "BDMAP_00002991", + "BDMAP_00000844", + "BDMAP_00001533", + "BDMAP_00002361", + "BDMAP_00003777", + "BDMAP_00001918", + "BDMAP_00001138", + "BDMAP_00001130", + "BDMAP_00001285", + "BDMAP_00003128", + "BDMAP_00002518", + "BDMAP_00002057", + "BDMAP_00004808", + "BDMAP_00002263", + "BDMAP_00003608", + "BDMAP_00003581", + "BDMAP_00000475", + "BDMAP_00004886", + "BDMAP_00000562", + "BDMAP_00004528", + "BDMAP_00004012", + "BDMAP_00004175", + "BDMAP_00003422", + "BDMAP_00001530", + "BDMAP_00001635", + "BDMAP_00005150", + "BDMAP_00003484", + "BDMAP_00003461", + "BDMAP_00004923", + "BDMAP_00003335", + "BDMAP_00001109", + "BDMAP_00001256", + "BDMAP_00004817", + "BDMAP_00000033", + "BDMAP_00003717", + "BDMAP_00003841", + "BDMAP_00002902", + "BDMAP_00001193", + "BDMAP_00000449", + "BDMAP_00001238", + "BDMAP_00001522", + "BDMAP_00002146", + "BDMAP_00004586", + "BDMAP_00003087", + "BDMAP_00002043", + "BDMAP_00000149", + "BDMAP_00001752", + "BDMAP_00000902", + "BDMAP_00003849", + "BDMAP_00003928", + "BDMAP_00004922", + "BDMAP_00000557", + "BDMAP_00002854", + "BDMAP_00003381", + "BDMAP_00000571", + "BDMAP_00001562", + "BDMAP_00004460", + "BDMAP_00004475", + "BDMAP_00002472", + "BDMAP_00001669", + "BDMAP_00002929", + "BDMAP_00001553", + "BDMAP_00003324", + "BDMAP_00003256", + "BDMAP_00003455", + "BDMAP_00003767", + "BDMAP_00001839", + "BDMAP_00001705", + "BDMAP_00000540", + "BDMAP_00001540", + "BDMAP_00002661", + "BDMAP_00002677", + "BDMAP_00001987", + "BDMAP_00000245", + "BDMAP_00003425", + "BDMAP_00003740", + "BDMAP_00004414", + "BDMAP_00002626", + "BDMAP_00004738", + "BDMAP_00001869", + "BDMAP_00004815", + "BDMAP_00000327", + "BDMAP_00004212", + "BDMAP_00003656", + "BDMAP_00001456", + "BDMAP_00001511", + "BDMAP_00004030", + "BDMAP_00000834", + "BDMAP_00001335", + "BDMAP_00004065", + "BDMAP_00000160", + "BDMAP_00001568", + "BDMAP_00001892", + "BDMAP_00002347", + "BDMAP_00003121", + "BDMAP_00003019", + "BDMAP_00003895", + "BDMAP_00004093", + "BDMAP_00002060", + "BDMAP_00003576", + "BDMAP_00003248", + "BDMAP_00001246", + "BDMAP_00001877", + "BDMAP_00004146", + "BDMAP_00004278", + "BDMAP_00003219", + "BDMAP_00004104", + "BDMAP_00004349", + "BDMAP_00001117", + "BDMAP_00002383", + "BDMAP_00005120", + "BDMAP_00001023", + "BDMAP_00003429", + "BDMAP_00003752", + "BDMAP_00001782", + "BDMAP_00002873", + "BDMAP_00000469", + "BDMAP_00001777", + "BDMAP_00000263", + "BDMAP_00003694", + "BDMAP_00002545", + "BDMAP_00002931", + "BDMAP_00002713", + "BDMAP_00004737", + "BDMAP_00001791", + "BDMAP_00001749", + "BDMAP_00004489", + "BDMAP_00000602", + "BDMAP_00001868", + "BDMAP_00004780", + "BDMAP_00002448", + "BDMAP_00001281", + "BDMAP_00002762", + "BDMAP_00004727", + "BDMAP_00003255", + "BDMAP_00004373", + "BDMAP_00003203", + "BDMAP_00000923", + "BDMAP_00001731", + "BDMAP_00003158", + "BDMAP_00002394", + "BDMAP_00002166", + "BDMAP_00002358", + "BDMAP_00000567", + "BDMAP_00002481", + "BDMAP_00002673", + "BDMAP_00001251", + "BDMAP_00001107", + "BDMAP_00002496", + "BDMAP_00004645", + "BDMAP_00002966", + "BDMAP_00002310", + "BDMAP_00001896", + "BDMAP_00001359", + "BDMAP_00002403", + "BDMAP_00003059", + "BDMAP_00004746", + "BDMAP_00002716", + "BDMAP_00003152", + "BDMAP_00001380", + "BDMAP_00000927", + "BDMAP_00001891", + "BDMAP_00001351", + "BDMAP_00004389", + "BDMAP_00003833", + "BDMAP_00003024", + "BDMAP_00001265", + "BDMAP_00000505", + "BDMAP_00002881", + "BDMAP_00000167", + "BDMAP_00003406", + "BDMAP_00003206", + "BDMAP_00002992", + "BDMAP_00002546", + "BDMAP_00002471", + "BDMAP_00003580", + "BDMAP_00002708", + "BDMAP_00002943", + "BDMAP_00001324", + "BDMAP_00001422", + "BDMAP_00001679", + "BDMAP_00000310", + "BDMAP_00006181", + "BDMAP_00001012", + "BDMAP_00001913", + "BDMAP_00003190", + "BDMAP_00003202", + "BDMAP_00004772", + "BDMAP_00001840", + "BDMAP_00001867", + "BDMAP_00003225", + "BDMAP_00002728", + "BDMAP_00002091", + "BDMAP_00000653", + "BDMAP_00003194", + "BDMAP_00004154", + "BDMAP_00001222", + "BDMAP_00003465", + "BDMAP_00004609", + "BDMAP_00002381", + "BDMAP_00004027", + "BDMAP_00002798", + "BDMAP_00001474", + "BDMAP_00003971", + "BDMAP_00002066", + "BDMAP_00002689", + "BDMAP_00001945", + "BDMAP_00003746", + "BDMAP_00002663", + "BDMAP_00002592", + "BDMAP_00001536", + "BDMAP_00002099", + "BDMAP_00002354", + "BDMAP_00002243", + "BDMAP_00000304", + "BDMAP_00001950", + "BDMAP_00004417", + "BDMAP_00004575", + "BDMAP_00001688", + "BDMAP_00004844", + "BDMAP_00004158", + "BDMAP_00000803", + "BDMAP_00002889", + "BDMAP_00003529", + "BDMAP_00000035", + "BDMAP_00001453", + "BDMAP_00004487", + "BDMAP_00002243", + "BDMAP_00004878", + "BDMAP_00003626", + "BDMAP_00002381", + "BDMAP_00001260", + "BDMAP_00000802", + "BDMAP_00008568", + "BDMAP_00003816", + "BDMAP_00000564", + "BDMAP_00001236", + "BDMAP_00007629", + "BDMAP_00002805", + "BDMAP_00000413", + "BDMAP_00001239", + "BDMAP_00004890", + "BDMAP_00000695", + "BDMAP_00003889", + "BDMAP_00004630", + "BDMAP_00001122", + "BDMAP_00004702", + "BDMAP_00003028", + "BDMAP_00002111", + "BDMAP_00004984", + "BDMAP_00002267", + "BDMAP_00004049", + "BDMAP_00005753", + "BDMAP_00004289", + "BDMAP_00004737", + "BDMAP_00001697", + "BDMAP_00000778", + "BDMAP_00001944", + "BDMAP_00002359", + "BDMAP_00000524", + "BDMAP_00004459", + "BDMAP_00003307", + "BDMAP_00008085", + "BDMAP_00003984", + "BDMAP_00004013", + "BDMAP_00001997", + "BDMAP_00003038", + "BDMAP_00002342", + "BDMAP_00001450", + "BDMAP_00003579", + "BDMAP_00000601", + "BDMAP_00001870", + "BDMAP_00000347", + "BDMAP_00002462", + "BDMAP_00002147", + "BDMAP_00001333", + "BDMAP_00001731", + "BDMAP_00000210", + "BDMAP_00002340", + "BDMAP_00002198", + "BDMAP_00002043", + "BDMAP_00000741", + "BDMAP_00001093", + "BDMAP_00009277", + "BDMAP_00004508", + "BDMAP_00003898", + "BDMAP_00000365", + "BDMAP_00001800", + "BDMAP_00000607", + "BDMAP_00000113", + "BDMAP_00004998", + "BDMAP_00003979", + "BDMAP_00001025", + "BDMAP_00002080", + "BDMAP_00003697", + "BDMAP_00004809", + "BDMAP_00003004", + "BDMAP_00003337", + "BDMAP_00002373", + "BDMAP_00003524", + "BDMAP_00009876", + "BDMAP_00004108", + "BDMAP_00008555", + "BDMAP_00000506", + "BDMAP_00004408", + "BDMAP_00002252", + "BDMAP_00002546", + "BDMAP_00004763", + "BDMAP_00000270", + "BDMAP_00003258", + "BDMAP_00004588", + "BDMAP_00000205", + "BDMAP_00001740", + "BDMAP_00004259", + "BDMAP_00002929", + "BDMAP_00001221", + "BDMAP_00003920", + "BDMAP_00000917", + "BDMAP_00003390", + "BDMAP_00000423", + "BDMAP_00004349", + "BDMAP_00002937", + "BDMAP_00008305", + "BDMAP_00004527", + "BDMAP_00003177", + "BDMAP_00007259", + "BDMAP_00004598", + "BDMAP_00003508", + "BDMAP_00000489", + "BDMAP_00003682", + "BDMAP_00003867", + "BDMAP_00000742", + "BDMAP_00003897", + "BDMAP_00001285", + "BDMAP_00005119", + "BDMAP_00004669", + "BDMAP_00001749", + "BDMAP_00002066", + "BDMAP_00001064", + "BDMAP_00007159", + "BDMAP_00004503", + "BDMAP_00004825", + "BDMAP_00000400", + "BDMAP_00003257", + "BDMAP_00007822", + "BDMAP_00001950", + "BDMAP_00001241", + "BDMAP_00001379", + "BDMAP_00005186", + "BDMAP_00004028", + "BDMAP_00001266", + "BDMAP_00000648", + "BDMAP_00001802", + "BDMAP_00001524", + "BDMAP_00002479", + "BDMAP_00002856", + "BDMAP_00001443", + "BDMAP_00002045", + "BDMAP_00001998", + "BDMAP_00002713", + "BDMAP_00005500", + "BDMAP_00004416", + "BDMAP_00003664", + "BDMAP_00006713", + "BDMAP_00002053", + "BDMAP_00004091", + "BDMAP_00003932", + "BDMAP_00001907", + "BDMAP_00002322", + "BDMAP_00000475", + "BDMAP_00002485", + "BDMAP_00002358", + "BDMAP_00004016", + "BDMAP_00002292", + "BDMAP_00002901", + "BDMAP_00001026", + "BDMAP_00004943", + "BDMAP_00001451", + "BDMAP_00000546", + "BDMAP_00007236", + "BDMAP_00000603", + "BDMAP_00000201", + "BDMAP_00003839", + "BDMAP_00003151", + "BDMAP_00000827", + "BDMAP_00002918", + "BDMAP_00006507", + "BDMAP_00001877", + "BDMAP_00008306", + "BDMAP_00004370", + "BDMAP_00000941", + "BDMAP_00003072", + "BDMAP_00002012", + "BDMAP_00004325", + "BDMAP_00004995", + "BDMAP_00001309", + "BDMAP_00003934", + "BDMAP_00004772", + "BDMAP_00001637", + "BDMAP_00000001", + "BDMAP_00003857", + "BDMAP_00003184", + "BDMAP_00002699", + "BDMAP_00005097", + "BDMAP_00001362", + "BDMAP_00005021", + "BDMAP_00003074", + "BDMAP_00005547", + "BDMAP_00001033", + "BDMAP_00000273", + "BDMAP_00003330", + "BDMAP_00003497", + "BDMAP_00002806", + "BDMAP_00005103", + "BDMAP_00001692", + "BDMAP_00001471", + "BDMAP_00001677", + "BDMAP_00003361", + "BDMAP_00000091", + "BDMAP_00009022", + "BDMAP_00001581", + "BDMAP_00004928", + "BDMAP_00001154", + "BDMAP_00001391", + "BDMAP_00000642", + "BDMAP_00004102", + "BDMAP_00003619", + "BDMAP_00001316", + "BDMAP_00000643", + "BDMAP_00001559", + "BDMAP_00000963", + "BDMAP_00003798", + "BDMAP_00002052", + "BDMAP_00004435", + "BDMAP_00000408", + "BDMAP_00001188", + "BDMAP_00002791", + "BDMAP_00003499", + "BDMAP_00003248", + "BDMAP_00002698", + "BDMAP_00004185", + "BDMAP_00002849", + "BDMAP_00003394", + "BDMAP_00000985", + "BDMAP_00003199", + "BDMAP_00005546", + "BDMAP_00002529", + "BDMAP_00004017", + "BDMAP_00000951", + "BDMAP_00004052", + "BDMAP_00003415", + "BDMAP_00002851", + "BDMAP_00003112", + "BDMAP_00001228", + "BDMAP_00001171", + "BDMAP_00000907", + "BDMAP_00001619", + "BDMAP_00002909", + "BDMAP_00004228", + "BDMAP_00003848", + "BDMAP_00002283", + "BDMAP_00003008", + "BDMAP_00002712", + "BDMAP_00002993", + "BDMAP_00000583", + "BDMAP_00006148", + "BDMAP_00002448", + "BDMAP_00003377", + "BDMAP_00000305", + "BDMAP_00004866", + "BDMAP_00003482", + "BDMAP_00002349", + "BDMAP_00004496", + "BDMAP_00003116", + "BDMAP_00001966", + "BDMAP_00001810", + "BDMAP_00002970", + "BDMAP_00005136", + "BDMAP_00003733", + "BDMAP_00003117", + "BDMAP_00003463", + "BDMAP_00002000", + "BDMAP_00002282", + "BDMAP_00007630", + "BDMAP_00002382", + "BDMAP_00003054", + "BDMAP_00002507", + "BDMAP_00000140", + "BDMAP_00000247", + "BDMAP_00002289", + "BDMAP_00004405", + "BDMAP_00004372", + "BDMAP_00004780", + "BDMAP_00007665", + "BDMAP_00005752", + "BDMAP_00001957", + "BDMAP_00005065", + "BDMAP_00002837", + "BDMAP_00005175", + "BDMAP_00002159", + "BDMAP_00003841", + "BDMAP_00001753", + "BDMAP_00001834", + "BDMAP_00002117", + "BDMAP_00003893", + "BDMAP_00003557", + "BDMAP_00002579", + "BDMAP_00000480", + "BDMAP_00004359", + "BDMAP_00004888", + "BDMAP_00001115", + "BDMAP_00000915", + "BDMAP_00001766", + "BDMAP_00001783", + "BDMAP_00004557", + "BDMAP_00000924", + "BDMAP_00003910", + "BDMAP_00005106", + "BDMAP_00000709", + "BDMAP_00004736", + "BDMAP_00001699", + "BDMAP_00002321", + "BDMAP_00004311", + "BDMAP_00001869", + "BDMAP_00004639", + "BDMAP_00001340", + "BDMAP_00001796", + "BDMAP_00004528", + "BDMAP_00003747", + "BDMAP_00000671", + "BDMAP_00002158", + "BDMAP_00001254", + "BDMAP_00000732", + "BDMAP_00002200", + "BDMAP_00004279", + "BDMAP_00000377", + "BDMAP_00000437", + "BDMAP_00003513", + "BDMAP_00001640", + "BDMAP_00002389", + "BDMAP_00003176", + "BDMAP_00002748", + "BDMAP_00003911", + "BDMAP_00001721", + "BDMAP_00003203", + "BDMAP_00002719", + "BDMAP_00002146", + "BDMAP_00007579", + "BDMAP_00000310", + "BDMAP_00003569", + "BDMAP_00004151", + "BDMAP_00003746", + "BDMAP_00004869", + "BDMAP_00000037", + "BDMAP_00009779", + "BDMAP_00004727", + "BDMAP_00004010", + "BDMAP_00006036", + "BDMAP_00002716", + "BDMAP_00008084", + "BDMAP_00001010", + "BDMAP_00003556", + "BDMAP_00007838", + "BDMAP_00000849", + "BDMAP_00001539", + "BDMAP_00003052", + "BDMAP_00004103", + "BDMAP_00006569", + "BDMAP_00002033", + "BDMAP_00003723", + "BDMAP_00002055", + "BDMAP_00002718", + "BDMAP_00002084", + "BDMAP_00001094", + "BDMAP_00002419", + "BDMAP_00000533", + "BDMAP_00000918", + "BDMAP_00003236", + "BDMAP_00004209", + "BDMAP_00004979", + "BDMAP_00008828", + "BDMAP_00003190", + "BDMAP_00002167", + "BDMAP_00003135", + "BDMAP_00001397", + "BDMAP_00002285", + "BDMAP_00000457", + "BDMAP_00001805", + "BDMAP_00002040", + "BDMAP_00005130", + "BDMAP_00004761", + "BDMAP_00003763", + "BDMAP_00000921", + "BDMAP_00004600", + "BDMAP_00003140", + "BDMAP_00003949", + "BDMAP_00001343", + "BDMAP_00007524", + "BDMAP_00003295", + "BDMAP_00003335", + "BDMAP_00004012", + "BDMAP_00004536", + "BDMAP_00000084", + "BDMAP_00005138", + "BDMAP_00001185", + "BDMAP_00000362", + "BDMAP_00004854", + "BDMAP_00004664", + "BDMAP_00004187", + "BDMAP_00001486", + "BDMAP_00002951", + "BDMAP_00001375", + "BDMAP_00007429", + "BDMAP_00003158", + "BDMAP_00007561", + "BDMAP_00001402", + "BDMAP_00000611", + "BDMAP_00001170", + "BDMAP_00005717", + "BDMAP_00001200", + "BDMAP_00004117", + "BDMAP_00003791", + "BDMAP_00002275", + "BDMAP_00000474", + "BDMAP_00002466", + "BDMAP_00000283", + "BDMAP_00003297", + "BDMAP_00002271", + "BDMAP_00000927", + "BDMAP_00005083", + "BDMAP_00003261", + "BDMAP_00004839", + "BDMAP_00004855", + "BDMAP_00004211", + "BDMAP_00001502", + "BDMAP_00003629", + "BDMAP_00004304", + "BDMAP_00000258", + "BDMAP_00004529", + "BDMAP_00003287", + "BDMAP_00004991", + "BDMAP_00000572", + "BDMAP_00003642", + "BDMAP_00002394", + "BDMAP_00002127", + "BDMAP_00004830", + "BDMAP_00002495", + "BDMAP_00000729", + "BDMAP_00003574", + "BDMAP_00002841", + "BDMAP_00001219", + "BDMAP_00008829", + "BDMAP_00001631", + "BDMAP_00003206", + "BDMAP_00000232", + "BDMAP_00004271", + "BDMAP_00001351", + "BDMAP_00001678", + "BDMAP_00004093", + "BDMAP_00004462", + "BDMAP_00000454", + "BDMAP_00004509", + "BDMAP_00000981", + "BDMAP_00004199", + "BDMAP_00001012", + "BDMAP_00001055", + "BDMAP_00002831", + "BDMAP_00001596", + "BDMAP_00004745", + "BDMAP_00001457", + "BDMAP_00003228", + "BDMAP_00003002", + "BDMAP_00001378", + "BDMAP_00008344", + "BDMAP_00000342", + "BDMAP_00000965", + "BDMAP_00001114", + "BDMAP_00003719", + "BDMAP_00002583", + "BDMAP_00001192", + "BDMAP_00003704", + "BDMAP_00005168", + "BDMAP_00000815", + "BDMAP_00000013", + "BDMAP_00001270", + "BDMAP_00001839", + "BDMAP_00000971", + "BDMAP_00005035", + "BDMAP_00000943", + "BDMAP_00002172", + "BDMAP_00004625" + ], + "val": [ + "BDMAP_00000332", + "BDMAP_00004858", + "BDMAP_00005155", + "BDMAP_00001205", + "BDMAP_00004770", + "BDMAP_00001361", + "BDMAP_00002944", + "BDMAP_00003961", + "BDMAP_00000430", + "BDMAP_00000679", + "BDMAP_00003809", + "BDMAP_00004115", + "BDMAP_00003367", + "BDMAP_00002899", + "BDMAP_00003771", + "BDMAP_00003502", + "BDMAP_00001628", + "BDMAP_00003884", + "BDMAP_00005074", + "BDMAP_00003114", + "BDMAP_00004741", + "BDMAP_00001746", + "BDMAP_00002603", + "BDMAP_00004128", + "BDMAP_00000487", + "BDMAP_00002631", + "BDMAP_00002744", + "BDMAP_00000833", + "BDMAP_00002648", + "BDMAP_00000375", + "BDMAP_00000608", + "BDMAP_00001352", + "BDMAP_00002775", + "BDMAP_00002474", + "BDMAP_00000458", + "BDMAP_00000511", + "BDMAP_00003150", + "BDMAP_00000794", + "BDMAP_00001255", + "BDMAP_00002242", + "BDMAP_00003205", + "BDMAP_00002181", + "BDMAP_00003486", + "BDMAP_00004250", + "BDMAP_00002453", + "BDMAP_00003164", + "BDMAP_00004578", + "BDMAP_00001735", + "BDMAP_00004281", + "BDMAP_00003481", + "BDMAP_00001786", + "BDMAP_00000101", + "BDMAP_00001813", + "BDMAP_00000615", + "BDMAP_00003170", + "BDMAP_00004378", + "BDMAP_00004704", + "BDMAP_00003439", + "BDMAP_00002717", + "BDMAP_00001981", + "BDMAP_00000100", + "BDMAP_00001018", + "BDMAP_00002214", + "BDMAP_00001198", + "BDMAP_00001962", + "BDMAP_00002463", + "BDMAP_00005139", + "BDMAP_00000831", + "BDMAP_00002955", + "BDMAP_00003272", + "BDMAP_00000745" + ] + } +] \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_uterus.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_uterus.json new file mode 100644 index 0000000000000000000000000000000000000000..15fdfd5f85dd4464b93319a647b02e8368860eeb --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_uterus.json @@ -0,0 +1,87 @@ +[ + { + "train": [ + "BDMAP_endometrioma_00000023", + "BDMAP_endometrioma_00000003", + "BDMAP_endometrioma_00000035", + "BDMAP_endometrioma_00000054", + "BDMAP_endometrioma_00000001", + "BDMAP_endometrioma_00000012", + "BDMAP_endometrioma_00000011", + "BDMAP_endometrioma_00000013", + "BDMAP_endometrioma_00000070", + "BDMAP_endometrioma_00000055", + "BDMAP_endometrioma_00000016", + "BDMAP_endometrioma_00000033", + "BDMAP_endometrioma_00000034", + "BDMAP_endometrioma_00000040", + "BDMAP_endometrioma_00000005", + "BDMAP_endometrioma_00000079", + "BDMAP_endometrioma_00000028", + "BDMAP_endometrioma_00000076", + "BDMAP_endometrioma_00000050", + "BDMAP_endometrioma_00000043", + "BDMAP_endometrioma_00000066", + "BDMAP_endometrioma_00000006", + "BDMAP_endometrioma_00000027", + "BDMAP_endometrioma_00000004", + "BDMAP_endometrioma_00000078", + "BDMAP_endometrioma_00000007", + "BDMAP_endometrioma_00000025", + "BDMAP_endometrioma_00000002", + "BDMAP_endometrioma_00000032", + "BDMAP_endometrioma_00000037", + "BDMAP_endometrioma_00000010", + "BDMAP_endometrioma_00000063", + "BDMAP_endometrioma_00000018", + "BDMAP_endometrioma_00000026", + "BDMAP_endometrioma_00000064", + "BDMAP_endometrioma_00000058", + "BDMAP_endometrioma_00000045", + "BDMAP_endometrioma_00000044", + "BDMAP_endometrioma_00000047", + "BDMAP_endometrioma_00000042", + "BDMAP_endometrioma_00000067", + "BDMAP_endometrioma_00000052", + "BDMAP_endometrioma_00000031", + "BDMAP_endometrioma_00000020", + "BDMAP_endometrioma_00000015", + "BDMAP_endometrioma_00000061", + "BDMAP_endometrioma_00000024", + "BDMAP_endometrioma_00000022", + "BDMAP_endometrioma_00000009", + "BDMAP_endometrioma_00000056", + "BDMAP_endometrioma_00000008", + "BDMAP_endometrioma_00000029", + "BDMAP_endometrioma_00000017", + "BDMAP_endometrioma_00000062", + "BDMAP_endometrioma_00000051", + "BDMAP_endometrioma_00000021" + ], + "val": [ + "BDMAP_endometrioma_00000060", + "BDMAP_endometrioma_00000038", + "BDMAP_endometrioma_00000077", + "BDMAP_endometrioma_00000068", + "BDMAP_endometrioma_00000075", + "BDMAP_endometrioma_00000073", + "BDMAP_endometrioma_00000039", + "BDMAP_endometrioma_00000057", + "BDMAP_endometrioma_00000065", + "BDMAP_endometrioma_00000048", + "BDMAP_endometrioma_00000036", + "BDMAP_endometrioma_00000049", + "BDMAP_endometrioma_00000014", + "BDMAP_endometrioma_00000059", + "BDMAP_endometrioma_00000072", + "BDMAP_endometrioma_00000046", + "BDMAP_endometrioma_00000019", + "BDMAP_endometrioma_00000069", + "BDMAP_endometrioma_00000071", + "BDMAP_endometrioma_00000041", + "BDMAP_endometrioma_00000053", + "BDMAP_endometrioma_00000030", + "BDMAP_endometrioma_00000074" + ] + } +] \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_uterus_bdmap.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_uterus_bdmap.json new file mode 100644 index 0000000000000000000000000000000000000000..3be5e950d651a5b43033b8174c7b722e766a0c11 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_uterus_bdmap.json @@ -0,0 +1,87 @@ +[ + { + "train": [ + "BDMAP_00022490", + "BDMAP_00022418", + "BDMAP_00022453", + "BDMAP_00022438", + "BDMAP_00022413", + "BDMAP_00022469", + "BDMAP_00022436", + "BDMAP_00022443", + "BDMAP_00022427", + "BDMAP_00022416", + "BDMAP_00022421", + "BDMAP_00022434", + "BDMAP_00022473", + "BDMAP_00022440", + "BDMAP_00022439", + "BDMAP_00022433", + "BDMAP_00022446", + "BDMAP_00022475", + "BDMAP_00022414", + "BDMAP_00022431", + "BDMAP_00022432", + "BDMAP_00022428", + "BDMAP_00022481", + "BDMAP_00022489", + "BDMAP_00022462", + "BDMAP_00022437", + "BDMAP_00022467", + "BDMAP_00022420", + "BDMAP_00022474", + "BDMAP_00022426", + "BDMAP_00022466", + "BDMAP_00022463", + "BDMAP_00022451", + "BDMAP_00022461", + "BDMAP_00022472", + "BDMAP_00022423", + "BDMAP_00022456", + "BDMAP_00022455", + "BDMAP_00022429", + "BDMAP_00022487", + "BDMAP_00022419", + "BDMAP_00022422", + "BDMAP_00022448", + "BDMAP_00022415", + "BDMAP_00022454", + "BDMAP_00022477", + "BDMAP_00022444", + "BDMAP_00022435", + "BDMAP_00022417", + "BDMAP_00022478", + "BDMAP_00022445", + "BDMAP_00022442", + "BDMAP_00022465", + "BDMAP_00022412", + "BDMAP_00022424", + "BDMAP_00022458" + ], + "val": [ + "BDMAP_00022471", + "BDMAP_00022449", + "BDMAP_00022488", + "BDMAP_00022479", + "BDMAP_00022486", + "BDMAP_00022484", + "BDMAP_00022450", + "BDMAP_00022468", + "BDMAP_00022476", + "BDMAP_00022459", + "BDMAP_00022447", + "BDMAP_00022460", + "BDMAP_00022425", + "BDMAP_00022470", + "BDMAP_00022483", + "BDMAP_00022457", + "BDMAP_00022430", + "BDMAP_00022480", + "BDMAP_00022482", + "BDMAP_00022452", + "BDMAP_00022464", + "BDMAP_00022441", + "BDMAP_00022485" + ] + } +] \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/uterus_json.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/uterus_json.py new file mode 100644 index 0000000000000000000000000000000000000000..8d1bd86dfaab7c096830b33f3918eebe07ee095a --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/uterus_json.py @@ -0,0 +1,24 @@ +import os +from batchgenerators.utilities.file_and_folder_operations import join, load_json, isfile, save_json, maybe_mkdir_p +import csv + + +train_files = load_json('/storage/chenqi/code/GEM-3D-ct/data_split/splits_final_uterus.json')[0]['train'] +val_files = load_json('/storage/chenqi/code/GEM-3D-ct/data_split/splits_final_uterus.json')[0]['val'] + +with open('/storage/chenqi/X_data/annotatedtumor_txt/endometrioma_tumor_cases.txt', 'r') as f: + all_files=f.readlines() +all_files = [os.path.basename(i.split(' ')[0]).split('.')[0] for i in all_files] +all_files = [i.split('\n')[0] for i in all_files] +print(val_files) +val_files = ['BDMAP_'+str(int(i.split('BDMAP_endometrioma_')[1])+22411).zfill(8) for i in val_files] + +write_content = [] +train_liver = list(set(all_files) - set(val_files)) +breakpoint() +write_content.append({"train":train_liver, "val":val_files}) + +# breakpoint() + +splits_file = 'splits_uterus.json' +save_json(write_content, splits_file) diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/environment.yml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/environment.yml new file mode 100644 index 0000000000000000000000000000000000000000..9fd50656e9218f87ed5c58ad72995d1c9b9dac7e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/environment.yml @@ -0,0 +1,40 @@ +name: gem_ct +channels: + - pytorch + - defaults +dependencies: + - cudatoolkit=11.3 + - pip=22.3.1 + - python=3.9.18 + - pytorch=2.0.0 + - torchaudio=2.0.0 + - torchtriton=2.0.0 + - torchvision=0.15.0 + - yaml=0.2.5 + - pip: + - argparse==1.4.0 + - easydict==1.11 + - einops==0.7.0 + - imageio==2.31.6 + - lightning-utilities==0.9.0 + - lpips==0.1.4 + - nibabel==5.2.0 + - numpy==1.26.1 + - omegaconf==2.1.1 + - open-clip-torch==2.7.0 + - opencv-python==4.8.1.78 + - pandas==2.1.2 + - pyparsing==3.1.1 + - pytorch-lightning==1.4.2 + - scikit-image==0.22.0 + - scikit-learn==1.3.2 + - scipy==1.11.3 + - seaborn==0.13.0 + - test-tube + - tensorboard==2.15.1 + - tensorboardx==2.6.2.2 + - torch==2.1.0 + - torchmetrics==0.5.0 + - tqdm==4.66.1 + - transformers==4.29.2 + - volumentations-3D diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/exp.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/exp.png new file mode 100644 index 0000000000000000000000000000000000000000..c918291052dba03dfa3705c9cac9e857859d319f --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/exp.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8b04878e46317cce0a4b90ae9c445196add2b6cbc9474c473958b055b122742 +size 112278 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d.py new file mode 100644 index 0000000000000000000000000000000000000000..2ab9aec087745e0ec59be19fe0263076f44ad6f9 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d.py @@ -0,0 +1,178 @@ +import glob +import nibabel as nib +import numpy as np +import os +import torch + +from einops import rearrange +from omegaconf import OmegaConf +from torch.utils.data import DataLoader +from tqdm import tqdm + +from ldm.util import instantiate_from_config +import argparse + +def compute_orientation(init_axcodes, final_axcodes): + """ + A thin wrapper around ``nib.orientations.ornt_transform`` + + :param init_axcodes: Initial orientation codes + :param final_axcodes: Target orientation codes + :return: orientations array, start_ornt, end_ornt + """ + ornt_init = nib.orientations.axcodes2ornt(init_axcodes) + ornt_fin = nib.orientations.axcodes2ornt(final_axcodes) + + ornt_transf = nib.orientations.ornt_transform(ornt_init, ornt_fin) + + return ornt_transf, ornt_init, ornt_fin + +def do_reorientation(data_array, init_axcodes, final_axcodes): + """ + source: https://niftynet.readthedocs.io/en/dev/_modules/niftynet/io/misc_io.html#do_reorientation + Performs the reorientation (changing order of axes) + + :param data_array: 3D Array to reorient + :param init_axcodes: Initial orientation + :param final_axcodes: Target orientation + :return data_reoriented: New data array in its reoriented form + """ + ornt_transf, ornt_init, ornt_fin = compute_orientation(init_axcodes, final_axcodes) + if np.array_equal(ornt_init, ornt_fin): + return data_array + + return nib.orientations.apply_orientation(data_array, ornt_transf) + +parser = argparse.ArgumentParser() +parser.add_argument( + "-t", + "--time_steps", + type=int, + default=20, +) +args = parser.parse_args() +ddim_steps=args.time_steps +# breakpoint() + +logdir = 'logs/full_ct_3d_with_body_mask' +ckpt = os.path.join(logdir, "checkpoints", "epoch=000053.ckpt") + +configs_file = "configs/latent-diffusion/full_ct_3d_with_body_mask.yaml" +configs = OmegaConf.load(configs_file) +model = instantiate_from_config(configs.model) +model.init_from_ckpt(ckpt) +model.eval() + +device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") +print("Using device", device) +model = model.to(device) + +config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask.yaml') +data = instantiate_from_config(config.data) +data.prepare_data() +data.setup() + +save_path = f'3d_results_step{ddim_steps}_train_latest' +save_path = os.path.join(logdir, save_path) +if not os.path.exists(save_path): + os.makedirs(save_path) + +val_dataset = data.datasets['validation'] +batch_size = 1 +valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True) +val_num = len(val_dataset) +save_gt = True + +for idx, data in tqdm(enumerate(valloader)): + + if idx >= val_num: + break + + name=data['name'][0].split('.')[0] + volume_data = data['volume_data'] + volume_seg = data['volume_seg'] + # breakpoint() + + window_length = 65 + latent_lenght=17 + h = 1 + slice_num =volume_data.shape[2] + + upper_iters = (slice_num-h) // (window_length-h)+1 if (slice_num-h)%(window_length-h) != 0 else (slice_num-h) // (window_length-h) + result = torch.zeros((batch_size, upper_iters*latent_lenght, 16, 64, 64)).cuda() + print('upper_iters', upper_iters) + # breakpoint() + for i in range(upper_iters): + print('i', i) + input_data={} + if i == upper_iters-1: + input_data['name'] = data['name'] + input_data['volume_data'] = data['volume_data'][:, :, -window_length:].to(device) + input_data['volume_seg'] = data['volume_seg'][:, :, -window_length:].to(device) + input_data['input_text'] = data['input_text'] + else: + input_data['volume_data'] = data['volume_data'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device) + input_data['volume_seg'] = data['volume_seg'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device) + input_data['input_text'] = data['input_text'] + # breakpoint() + with torch.no_grad(): + _, c = model.get_input(input_data, model.first_stage_key) + # breakpoint() + if i == 0: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps) + else: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1) + + samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght) + + if i == upper_iters-1: + result[:, -latent_lenght+h:] = samples_i[:,h:,...] + else: + if i == 0: + result[:, :latent_lenght] = samples_i + else: + # breakpoint() + result[:, i*latent_lenght-i*h+h:(i+1)*latent_lenght-i*h] = samples_i[:, h:] + x_minus1 = samples_i[:, -h:,...] + # breakpoint() + # result = rearrange(result, 'b z c h w -> (b z) c h w') + result = result.permute(0,2,1,3,4) + x_result = torch.zeros((3,slice_num,512,512)) + dec_unit = 65 + dec_latent_unit=17 + num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit + for i in range(num_dec_iter): + if i == num_dec_iter - 1: + x_result[:,-dec_unit:] = model.decode_first_stage(result[:,:,-latent_lenght:])[0] + # breakpoint() + else: + x_result[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:,:,i*latent_lenght:(i+1)*latent_lenght])[0] + # x_result[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:,:,i*latent_lenght:(i+1)*latent_lenght])[0] + x_result = x_result*2 + x_result[x_result>1.0] = 1.0 + x_result[x_result<-1.0] = -1.0 + x_result = (x_result+1)/2 + # breakpoint() + + x_result_ = x_result.mean(axis=0).detach().cpu().numpy() + # x_result = x_result[0,:,0,...].detach().cpu().numpy() + # breakpoint() + x_result = x_result_.transpose(1,2,0) + # x_result = np.rot90(x_result, k=1, axes=(0,1)) + # x_result = np.flip(x_result,axis=(0,1)) + # import imageio as io + # io.imsave('exp.png', (x_result[:,:,400]*255).astype(np.uint8)) + + # breakpoint() + ref_root = '/sd/shuhan/CT-RATE/dataset/valid_fixed' + ref_nii = os.path.join(ref_root, name.split('_')[0]+'_'+name.split('_')[1], name.split('_')[0]+'_'+name.split('_')[1]+'_'+name.split('_')[2],name+'.nii.gz') + affine = nib.load(ref_nii).affine + + x_result = x_result*2000.0 - 1000.0 + data_path = os.path.join(save_path, str(f'{name}.nii.gz')) + data_nii = nib.Nifti1Image(x_result.astype(np.int16), affine) + + nib.save(data_nii, data_path) + + breakpoint() + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_2.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_2.py new file mode 100644 index 0000000000000000000000000000000000000000..18b0e32df562fb8cf06a627eae04edddf656ee0b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_2.py @@ -0,0 +1,207 @@ +import glob +import nibabel as nib +import numpy as np +import os +import torch + +from einops import rearrange +from omegaconf import OmegaConf +from torch.utils.data import DataLoader +from tqdm import tqdm + +from ldm.util import instantiate_from_config +import argparse + +def compute_orientation(init_axcodes, final_axcodes): + """ + A thin wrapper around ``nib.orientations.ornt_transform`` + + :param init_axcodes: Initial orientation codes + :param final_axcodes: Target orientation codes + :return: orientations array, start_ornt, end_ornt + """ + ornt_init = nib.orientations.axcodes2ornt(init_axcodes) + ornt_fin = nib.orientations.axcodes2ornt(final_axcodes) + + ornt_transf = nib.orientations.ornt_transform(ornt_init, ornt_fin) + + return ornt_transf, ornt_init, ornt_fin + +def do_reorientation(data_array, init_axcodes, final_axcodes): + """ + source: https://niftynet.readthedocs.io/en/dev/_modules/niftynet/io/misc_io.html#do_reorientation + Performs the reorientation (changing order of axes) + + :param data_array: 3D Array to reorient + :param init_axcodes: Initial orientation + :param final_axcodes: Target orientation + :return data_reoriented: New data array in its reoriented form + """ + ornt_transf, ornt_init, ornt_fin = compute_orientation(init_axcodes, final_axcodes) + if np.array_equal(ornt_init, ornt_fin): + return data_array + + return nib.orientations.apply_orientation(data_array, ornt_transf) + +parser = argparse.ArgumentParser() +parser.add_argument( + "-t", + "--time_steps", + type=int, + default=20, +) +args = parser.parse_args() +ddim_steps=args.time_steps +# breakpoint() + +logdir = 'logs/full_ct_3d_with_body_mask' +ckpt = os.path.join(logdir, "checkpoints", "epoch=000070.ckpt") + +configs_file = "configs/latent-diffusion/full_ct_3d_with_body_mask.yaml" +configs = OmegaConf.load(configs_file) +model = instantiate_from_config(configs.model) +model.init_from_ckpt(ckpt) +model.eval() + +device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") +print("Using device", device) +model = model.to(device) + +config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask.yaml') +data = instantiate_from_config(config.data) +data.prepare_data() +data.setup() + +save_path = f'3d_results_step{ddim_steps}_train_latest' +save_path = os.path.join(logdir, save_path) +if not os.path.exists(save_path): + os.makedirs(save_path) + +val_dataset = data.datasets['validation'] +batch_size = 1 +valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True) +val_num = len(val_dataset) +save_gt = True + +for idx, data in tqdm(enumerate(valloader)): + + if idx >= val_num: + break + + name=data['name'][0].split('.')[0] + volume_data = data['volume_data'] + volume_seg = data['volume_seg'] + # breakpoint() + + import math + # ---- 必要参数 ---- + window_length = 65 # 输入窗口长度(切片数) + latent_lenght = 17 # 每窗输出长度(latent 轴) + overleap_lengh = 1 # ★ 输出侧希望的重叠(用于融合) + slice_num = volume_data.shape[2] + device = next(model.parameters()).device + + # 1) 输出重叠 -> 输入重叠(按比例换算) + overlap_in = int(round(overleap_lengh * window_length / max(1, latent_lenght))) + overlap_in = max(0, min(window_length - 1, overlap_in)) # 保证 0 <= overlap_in < window_length + + # 2) 输入步长 & upper_iters(首窗从0开始,末窗贴尾) + step_in = window_length - overlap_in + extra = max(0, slice_num - window_length) + upper_iters = 1 + (extra + step_in - 1) // step_in # 等价于 ceil(extra/step_in) + print(f"[plan] overlap_in={overlap_in}, step_in={step_in}, upper_iters={upper_iters}") + + # 3) 输出侧拼接步长(latent轴) + stride_out = max(1, latent_lenght - overleap_lengh) + total_len = latent_lenght + (upper_iters - 1) * stride_out + print(f"[plan] stride_out={stride_out}, total_len={total_len}") + + B = batch_size + C, H, W = 16, 64, 64 + + result_sum = torch.zeros((B, total_len, C, H, W), device=device, dtype=torch.float32) + weight_sum = torch.zeros((1, total_len, 1, 1, 1), device=device, dtype=torch.float32) + + x_minus1 = None # 如不需要历史条件,保持 None 即可 + cond_h = 0 # 若要保留历史条件,可设为 >0,并在采样后取 samples_i[:, -cond_h:] + + for i in range(upper_iters): + # ---- 取片:普通窗走 step_in,末窗贴尾 ---- + if i < upper_iters - 1: + st = i * step_in + st = max(0, min(st, slice_num - window_length)) + ed = st + window_length + vol_i = data['volume_data'][:, :, st:ed].to(device) + seg_i = data['volume_seg'][:, :, st:ed].to(device) + else: + vol_i = data['volume_data'][:, :, -window_length:].to(device) + seg_i = data['volume_seg'][:, :, -window_length:].to(device) + + input_data = {'name': data.get('name', None), + 'volume_data': vol_i, 'volume_seg': seg_i, + 'input_text': data['input_text']} + + with torch.no_grad(): + _, c = model.get_input(input_data, model.first_stage_key) + if x_minus1 is None or cond_h == 0: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps) + else: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1) + + samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght) + + # ---- 输出侧拼接:平均融合 ---- + gstart = i * stride_out + gend = gstart + latent_lenght + result_sum[:, gstart:gend] += samples_i + weight_sum[:, gstart:gend] += 1.0 + + # 如需历史条件 + x_minus1 = samples_i[:, -cond_h:, ...] if cond_h > 0 else None + + # 归一化 + result = result_sum / torch.clamp_min(weight_sum, 1.0) + + + + + # result = rearrange(result, 'b z c h w -> (b z) c h w') + result = result.permute(0,2,1,3,4) + x_result = torch.zeros((3,slice_num,512,512)) + dec_unit = 65 + res_unit = window_length-dec_unit + num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit + for i in range(num_dec_iter): + if i == num_dec_iter - 1: + x_result[:,-dec_unit:] = model.decode_first_stage(result[:,:,-latent_lenght:])[0][:,res_unit:] + else: + # breakpoint() + x_result[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:,:,i*latent_lenght:(i+1)*latent_lenght])[0][:,res_unit:] + x_result = x_result*2 + x_result[x_result>1.0] = 1.0 + x_result[x_result<-1.0] = -1.0 + x_result = (x_result+1)/2 + # breakpoint() + + x_result_ = x_result.mean(axis=0).detach().cpu().numpy() + # x_result = x_result[0,:,0,...].detach().cpu().numpy() + # breakpoint() + x_result = x_result_.transpose(1,2,0) + # x_result = np.rot90(x_result, k=1, axes=(0,1)) + # x_result = np.flip(x_result,axis=(0,1)) + # import imageio as io + # io.imsave('exp.png', (x_result[:,:,400]*255).astype(np.uint8)) + + # breakpoint() + ref_root = '/sd/shuhan/CT-RATE/dataset/valid_fixed' + ref_nii = os.path.join(ref_root, name.split('_')[0]+'_'+name.split('_')[1], name.split('_')[0]+'_'+name.split('_')[1]+'_'+name.split('_')[2],name+'.nii.gz') + affine = nib.load(ref_nii).affine + + x_result = x_result*2000.0 - 1000.0 + data_path = os.path.join(save_path, str(f'{name}.nii.gz')) + data_nii = nib.Nifti1Image(x_result.astype(np.int16), affine) + + nib.save(data_nii, data_path) + + breakpoint() + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_3.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_3.py new file mode 100644 index 0000000000000000000000000000000000000000..771d1bbdccc466cc21a15209378848f13be8b59f --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_3.py @@ -0,0 +1,211 @@ +import glob +import nibabel as nib +import numpy as np +import os +import torch + +from einops import rearrange +from omegaconf import OmegaConf +from torch.utils.data import DataLoader +from tqdm import tqdm + +from ldm.util import instantiate_from_config +import argparse + +def compute_orientation(init_axcodes, final_axcodes): + """ + A thin wrapper around ``nib.orientations.ornt_transform`` + + :param init_axcodes: Initial orientation codes + :param final_axcodes: Target orientation codes + :return: orientations array, start_ornt, end_ornt + """ + ornt_init = nib.orientations.axcodes2ornt(init_axcodes) + ornt_fin = nib.orientations.axcodes2ornt(final_axcodes) + + ornt_transf = nib.orientations.ornt_transform(ornt_init, ornt_fin) + + return ornt_transf, ornt_init, ornt_fin + +def do_reorientation(data_array, init_axcodes, final_axcodes): + """ + source: https://niftynet.readthedocs.io/en/dev/_modules/niftynet/io/misc_io.html#do_reorientation + Performs the reorientation (changing order of axes) + + :param data_array: 3D Array to reorient + :param init_axcodes: Initial orientation + :param final_axcodes: Target orientation + :return data_reoriented: New data array in its reoriented form + """ + ornt_transf, ornt_init, ornt_fin = compute_orientation(init_axcodes, final_axcodes) + if np.array_equal(ornt_init, ornt_fin): + return data_array + + return nib.orientations.apply_orientation(data_array, ornt_transf) + +parser = argparse.ArgumentParser() +parser.add_argument( + "-t", + "--time_steps", + type=int, + default=20, +) +args = parser.parse_args() +ddim_steps=args.time_steps +# breakpoint() + +logdir = 'logs/full_ct_3d_with_body_mask' +ckpt = os.path.join(logdir, "checkpoints", "epoch=000070.ckpt") + +configs_file = "configs/latent-diffusion/full_ct_3d_with_body_mask.yaml" +configs = OmegaConf.load(configs_file) +model = instantiate_from_config(configs.model) +model.init_from_ckpt(ckpt) +model.eval() + +device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") +print("Using device", device) +model = model.to(device) + +config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask.yaml') +data = instantiate_from_config(config.data) +data.prepare_data() +data.setup() + +save_path = f'3d_results_step{ddim_steps}_train_latest' +save_path = os.path.join(logdir, save_path) +if not os.path.exists(save_path): + os.makedirs(save_path) + +val_dataset = data.datasets['validation'] +batch_size = 1 +valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True) +val_num = len(val_dataset) +save_gt = True + +for idx, data in tqdm(enumerate(valloader)): + + if idx >= val_num: + break + + name=data['name'][0].split('.')[0] + volume_data = data['volume_data'] + volume_seg = data['volume_seg'] + # breakpoint() + + import math + # ---- 必要参数 ---- + window_length = 65 # 输入窗口长度(切片数) + latent_lenght = 17 # 每窗输出长度(latent 轴) + overleap_lengh = 8 # ★ 输出侧希望的重叠(用于融合) + slice_num = volume_data.shape[2] + device = next(model.parameters()).device + + # 1) 输出重叠 -> 输入重叠(按比例换算) + overlap_in = int(round(overleap_lengh * window_length / max(1, latent_lenght))) + overlap_in = max(0, min(window_length - 1, overlap_in)) # 保证 0 <= overlap_in < window_length + + # 2) 输入步长 & upper_iters(首窗从0开始,末窗贴尾) + step_in = window_length - overlap_in + extra = max(0, slice_num - window_length) + upper_iters = 1 + (extra + step_in - 1) // step_in # 等价于 ceil(extra/step_in) + print(f"[plan] overlap_in={overlap_in}, step_in={step_in}, upper_iters={upper_iters}") + + # 3) 输出侧拼接步长(latent轴) + stride_out = max(1, latent_lenght - overleap_lengh) + total_len = latent_lenght + (upper_iters - 1) * stride_out + print(f"[plan] stride_out={stride_out}, total_len={total_len}") + + B = batch_size + C, H, W = 16, 64, 64 + + result_sum = torch.zeros((B, total_len, C, H, W), device=device, dtype=torch.float32) + weight_sum = torch.zeros((1, total_len, 1, 1, 1), device=device, dtype=torch.float32) + + # 1D 高斯权重(长度=latent_lenght);sigma 可随重叠自适应 + z = torch.arange(latent_lenght, device=device, dtype=torch.float32) + center = (latent_lenght - 1) / 2.0 + sigma = max(overleap_lengh / 2.0, 1.0) # 重叠越大,sigma 越大;下限1.0避免过尖 + g = torch.exp(-0.5 * ((z - center) / sigma) ** 2) + g = g / g.max() + g = g.view(1, latent_lenght, 1, 1, 1) + + x_minus1 = None + cond_h = 0 # 同上,是否启用历史条件 + + for i in range(upper_iters): + if i < upper_iters - 1: + st = i * step_in + st = max(0, min(st, slice_num - window_length)) + ed = st + window_length + vol_i = data['volume_data'][:, :, st:ed].to(device) + seg_i = data['volume_seg'][:, :, st:ed].to(device) + else: + vol_i = data['volume_data'][:, :, -window_length:].to(device) + seg_i = data['volume_seg'][:, :, -window_length:].to(device) + + input_data = {'name': data.get('name', None), + 'volume_data': vol_i, 'volume_seg': seg_i, + 'input_text': data['input_text']} + + with torch.no_grad(): + _, c = model.get_input(input_data, model.first_stage_key) + if x_minus1 is None or cond_h == 0: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps) + else: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1) + + samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght) + + gstart = i * stride_out + gend = gstart + latent_lenght + result_sum[:, gstart:gend] += samples_i * g + weight_sum[:, gstart:gend] += g + + x_minus1 = samples_i[:, -cond_h:, ...] if cond_h > 0 else None + + result = result_sum / torch.clamp_min(weight_sum, 1e-8) + + + + + # result = rearrange(result, 'b z c h w -> (b z) c h w') + result = result.permute(0,2,1,3,4) + x_result = torch.zeros((3,slice_num,512,512)) + dec_unit = 65 + res_unit = window_length-dec_unit + num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit + for i in range(num_dec_iter): + if i == num_dec_iter - 1: + x_result[:,-dec_unit:] = model.decode_first_stage(result[:,:,-latent_lenght:])[0][:,res_unit:] + else: + # breakpoint() + x_result[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:,:,i*latent_lenght:(i+1)*latent_lenght])[0][:,res_unit:] + x_result = x_result*2 + x_result[x_result>1.0] = 1.0 + x_result[x_result<-1.0] = -1.0 + x_result = (x_result+1)/2 + # breakpoint() + + x_result_ = x_result.mean(axis=0).detach().cpu().numpy() + # x_result = x_result[0,:,0,...].detach().cpu().numpy() + # breakpoint() + x_result = x_result_.transpose(1,2,0) + # x_result = np.rot90(x_result, k=1, axes=(0,1)) + # x_result = np.flip(x_result,axis=(0,1)) + # import imageio as io + # io.imsave('exp.png', (x_result[:,:,400]*255).astype(np.uint8)) + + # breakpoint() + ref_root = '/sd/shuhan/CT-RATE/dataset/valid_fixed' + ref_nii = os.path.join(ref_root, name.split('_')[0]+'_'+name.split('_')[1], name.split('_')[0]+'_'+name.split('_')[1]+'_'+name.split('_')[2],name+'.nii.gz') + affine = nib.load(ref_nii).affine + + x_result = x_result*2000.0 - 1000.0 + data_path = os.path.join(save_path, str(f'{name}.nii.gz')) + data_nii = nib.Nifti1Image(x_result.astype(np.int16), affine) + + nib.save(data_nii, data_path) + + breakpoint() + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_4.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_4.py new file mode 100644 index 0000000000000000000000000000000000000000..0b31102794d585b4d1436fdd731557b03a267925 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_4.py @@ -0,0 +1,203 @@ +import glob +import nibabel as nib +import numpy as np +import os +import torch + +from einops import rearrange +from omegaconf import OmegaConf +from torch.utils.data import DataLoader +from tqdm import tqdm + +from ldm.util import instantiate_from_config +import argparse + +def compute_orientation(init_axcodes, final_axcodes): + """ + A thin wrapper around ``nib.orientations.ornt_transform`` + + :param init_axcodes: Initial orientation codes + :param final_axcodes: Target orientation codes + :return: orientations array, start_ornt, end_ornt + """ + ornt_init = nib.orientations.axcodes2ornt(init_axcodes) + ornt_fin = nib.orientations.axcodes2ornt(final_axcodes) + + ornt_transf = nib.orientations.ornt_transform(ornt_init, ornt_fin) + + return ornt_transf, ornt_init, ornt_fin + +def do_reorientation(data_array, init_axcodes, final_axcodes): + """ + source: https://niftynet.readthedocs.io/en/dev/_modules/niftynet/io/misc_io.html#do_reorientation + Performs the reorientation (changing order of axes) + + :param data_array: 3D Array to reorient + :param init_axcodes: Initial orientation + :param final_axcodes: Target orientation + :return data_reoriented: New data array in its reoriented form + """ + ornt_transf, ornt_init, ornt_fin = compute_orientation(init_axcodes, final_axcodes) + if np.array_equal(ornt_init, ornt_fin): + return data_array + + return nib.orientations.apply_orientation(data_array, ornt_transf) + +parser = argparse.ArgumentParser() +parser.add_argument( + "-t", + "--time_steps", + type=int, + default=20, +) +args = parser.parse_args() +ddim_steps=args.time_steps +# breakpoint() + +logdir = 'logs/full_ct_3d_with_body_mask' +ckpt = os.path.join(logdir, "checkpoints", "epoch=000070.ckpt") + +configs_file = "configs/latent-diffusion/full_ct_3d_with_body_mask.yaml" +configs = OmegaConf.load(configs_file) +model = instantiate_from_config(configs.model) +model.init_from_ckpt(ckpt) +model.eval() + +device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") +print("Using device", device) +model = model.to(device) + +config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask.yaml') +data = instantiate_from_config(config.data) +data.prepare_data() +data.setup() + +save_path = f'3d_results_step{ddim_steps}_train_latest' +save_path = os.path.join(logdir, save_path) +if not os.path.exists(save_path): + os.makedirs(save_path) + +val_dataset = data.datasets['validation'] +batch_size = 1 +valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True) +val_num = len(val_dataset) +save_gt = True + +for idx, data in tqdm(enumerate(valloader)): + + if idx >= val_num: + break + + name=data['name'][0].split('.')[0] + volume_data = data['volume_data'] + volume_seg = data['volume_seg'] + # breakpoint() + + import math + + window_length = 65 + latent_lenght = 17 # 每窗输出 17 + keep_len = latent_lenght - 1 # 只保留后 16 + overlap_slices = 4 # 输入体素重叠,>=1 避免断层 + slice_num = volume_data.shape[2] + device = next(model.parameters()).device + + # 输出长度(以“17通道”为单位)与总写入长度 + result_len = slice_num // window_length + 1 + result_total_len = result_len * latent_lenght # 你要求的 result 第二维 + needed_iters = math.ceil(result_total_len / keep_len) # = ceil(result_len*17/16) + + # 体素维 stride(考虑重叠) + stride = max(1, window_length - overlap_slices) + + # 结果缓冲 + result = torch.zeros((batch_size, result_total_len, 16, 64, 64), device='cuda') + print(f"result_total_len={result_total_len}, needed_iters={needed_iters}, stride={stride}") + + write_ptr = 0 + x_minus1 = None + + for i in range(needed_iters): + # 体素窗口 [start:end),越界则钉在最后一个完整窗 + start = min(i * stride, max(0, slice_num - window_length)) + end = start + window_length + + input_data = { + 'input_text' : data['input_text'], + 'volume_data': data['volume_data'][:, :, start:end].to(device), + 'volume_seg' : data['volume_seg'][:, :, start:end].to(device) + } + if 'name' in data: + input_data['name'] = data['name'] + + with torch.no_grad(): + _, c = model.get_input(input_data, model.first_stage_key) + + if x_minus1 is None: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, + ddim=True, eta=1., ddim_steps=ddim_steps) + else: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, + ddim=True, eta=1., ddim_steps=ddim_steps, + previous=x_minus1) + + # (b*z) c h w -> b z c h w + samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght) + samples_keep = samples_i[:, 1:, ...] # 丢弃第0个,只保留后16 -> [B,16,16,64,64] + + # 本窗最多写入 keep_len=16,但可能最后一窗只需一部分 + n_take = min(keep_len, result_total_len - write_ptr) + if n_take <= 0: + break + + result[:, write_ptr:write_ptr + n_take] = samples_keep[:, :n_take] + write_ptr += n_take + + # 传递上一窗最后1个作为 previous,保证跨窗连续 + x_minus1 = samples_i[:, -1:, ...] # [B,1,16,64,64] + + + + # breakpoint() + # result = rearrange(result, 'b z c h w -> (b z) c h w') + result = result.permute(0,2,1,3,4) + x_result = torch.zeros((3,slice_num,512,512)) + dec_unit = 65 + dec_latent_unit=17 + num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit + for i in range(num_dec_iter): + if i == num_dec_iter - 1: + x_result[:,-dec_unit:] = model.decode_first_stage(result[:,:,-latent_lenght:])[0] + # breakpoint() + else: + # breakpoint() + x_result[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:,:,i*latent_lenght:(i+1)*latent_lenght])[0] + # x_result[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:,:,i*latent_lenght:(i+1)*latent_lenght])[0] + x_result = x_result*2 + x_result[x_result>1.0] = 1.0 + x_result[x_result<-1.0] = -1.0 + x_result = (x_result+1)/2 + # breakpoint() + + x_result_ = x_result.mean(axis=0).detach().cpu().numpy() + # x_result = x_result[0,:,0,...].detach().cpu().numpy() + # breakpoint() + x_result = x_result_.transpose(1,2,0) + # x_result = np.rot90(x_result, k=1, axes=(0,1)) + # x_result = np.flip(x_result,axis=(0,1)) + # import imageio as io + # io.imsave('exp.png', (x_result[:,:,400]*255).astype(np.uint8)) + + # breakpoint() + ref_root = '/sd/shuhan/CT-RATE/dataset/valid_fixed' + ref_nii = os.path.join(ref_root, name.split('_')[0]+'_'+name.split('_')[1], name.split('_')[0]+'_'+name.split('_')[1]+'_'+name.split('_')[2],name+'.nii.gz') + affine = nib.load(ref_nii).affine + + x_result = x_result*2000.0 - 1000.0 + data_path = os.path.join(save_path, str(f'{name}.nii.gz')) + data_nii = nib.Nifti1Image(x_result.astype(np.int16), affine) + + nib.save(data_nii, data_path) + + breakpoint() + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_5.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_5.py new file mode 100644 index 0000000000000000000000000000000000000000..1fc912d026a45a28704c9f185908ba256023baa2 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_5.py @@ -0,0 +1,220 @@ +import glob +import nibabel as nib +import numpy as np +import os +import torch + +from einops import rearrange +from omegaconf import OmegaConf +from torch.utils.data import DataLoader +from tqdm import tqdm + +from ldm.util import instantiate_from_config +import argparse + +def compute_orientation(init_axcodes, final_axcodes): + """ + A thin wrapper around ``nib.orientations.ornt_transform`` + + :param init_axcodes: Initial orientation codes + :param final_axcodes: Target orientation codes + :return: orientations array, start_ornt, end_ornt + """ + ornt_init = nib.orientations.axcodes2ornt(init_axcodes) + ornt_fin = nib.orientations.axcodes2ornt(final_axcodes) + + ornt_transf = nib.orientations.ornt_transform(ornt_init, ornt_fin) + + return ornt_transf, ornt_init, ornt_fin + +def do_reorientation(data_array, init_axcodes, final_axcodes): + """ + source: https://niftynet.readthedocs.io/en/dev/_modules/niftynet/io/misc_io.html#do_reorientation + Performs the reorientation (changing order of axes) + + :param data_array: 3D Array to reorient + :param init_axcodes: Initial orientation + :param final_axcodes: Target orientation + :return data_reoriented: New data array in its reoriented form + """ + ornt_transf, ornt_init, ornt_fin = compute_orientation(init_axcodes, final_axcodes) + if np.array_equal(ornt_init, ornt_fin): + return data_array + + return nib.orientations.apply_orientation(data_array, ornt_transf) + +parser = argparse.ArgumentParser() +parser.add_argument( + "-t", + "--time_steps", + type=int, + default=20, +) +args = parser.parse_args() +ddim_steps=args.time_steps +# breakpoint() + +logdir = 'logs/full_ct_3d_with_body_mask' +ckpt = os.path.join(logdir, "checkpoints", "epoch=000070.ckpt") + +configs_file = "configs/latent-diffusion/full_ct_3d_with_body_mask.yaml" +configs = OmegaConf.load(configs_file) +model = instantiate_from_config(configs.model) +model.init_from_ckpt(ckpt) +model.eval() + +device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") +print("Using device", device) +model = model.to(device) + +config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask.yaml') +data = instantiate_from_config(config.data) +data.prepare_data() +data.setup() + +save_path = f'3d_results_step{ddim_steps}_train_latest' +save_path = os.path.join(logdir, save_path) +if not os.path.exists(save_path): + os.makedirs(save_path) + +val_dataset = data.datasets['validation'] +batch_size = 1 +valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True) +val_num = len(val_dataset) +save_gt = True + +for idx, data in tqdm(enumerate(valloader)): + + if idx >= val_num: + break + + name=data['name'][0].split('.')[0] + volume_data = data['volume_data'] + volume_seg = data['volume_seg'] + # breakpoint() + + import math + # ---- 必要参数 ---- + window_length = 65 # 输入窗口长度(切片数) + latent_lenght = 17 # 每窗原始输出长度(latent 轴) + overleap_lengh = 1 # ★ 输出侧希望的重叠(用于融合) + slice_num = volume_data.shape[2] + device = next(model.parameters()).device + + # === 仅保留后16个(丢弃第0个) === + keep_len = max(0, latent_lenght - 1) + + # 1) 输出重叠 -> 输入重叠(按比例换算;用 keep_len) + overlap_in = int(round(overleap_lengh * window_length / max(1, keep_len))) + overlap_in = max(0, min(window_length - 1, overlap_in)) # 保证 0 <= overlap_in < window_length + + # 2) 输入步长 & upper_iters(首窗从0开始,末窗贴尾) + step_in = window_length - overlap_in + extra = max(0, slice_num - window_length) + upper_iters = 1 + (extra + step_in - 1) // step_in # 等价于 ceil(extra/step_in) + print(f"[plan] overlap_in={overlap_in}, step_in={step_in}, upper_iters={upper_iters}") + + # 3) 输出侧拼接步长(latent轴,用 keep_len) + stride_out = max(1, keep_len - overleap_lengh) + total_len = keep_len + (upper_iters - 1) * stride_out + print(f"[plan] stride_out={stride_out}, total_len={total_len}") + + B = batch_size + C, H, W = 16, 64, 64 + + result_sum = torch.zeros((B, total_len, C, H, W), device=device, dtype=torch.float32) + weight_sum = torch.zeros((1, total_len, 1, 1, 1), device=device, dtype=torch.float32) + + # 1D 高斯权重(长度=keep_len);sigma 可随重叠自适应 + z = torch.arange(keep_len, device=device, dtype=torch.float32) + center = (keep_len - 1) / 2.0 if keep_len > 0 else 0.0 + sigma = max(overleap_lengh / 2.0, 1.0) # 重叠越大,sigma 越大;下限1.0避免过尖 + g = torch.exp(-0.5 * ((z - center) / sigma) ** 2) if keep_len > 0 else torch.ones(1, device=device) + g = g / g.max() if keep_len > 0 else g + g = g.view(1, keep_len, 1, 1, 1) + + x_minus1 = None + cond_h = 0 # 是否启用历史条件 + + for i in range(upper_iters): + if i < upper_iters - 1: + st = i * step_in + st = max(0, min(st, slice_num - window_length)) + ed = st + window_length + vol_i = data['volume_data'][:, :, st:ed].to(device) + seg_i = data['volume_seg'][:, :, st:ed].to(device) + else: + vol_i = data['volume_data'][:, :, -window_length:].to(device) + seg_i = data['volume_seg'][:, :, -window_length:].to(device) + + input_data = { + 'name': data.get('name', None), + 'volume_data': vol_i, 'volume_seg': seg_i, + 'input_text': data['input_text'] + } + + with torch.no_grad(): + _, c = model.get_input(input_data, model.first_stage_key) + if x_minus1 is None or cond_h == 0: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps) + else: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1) + + # (b*z, c, h, w) -> (b, z, c, h, w) + samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght) + + # === 关键改动:只拼接后 keep_len 个(丢弃第0个)=== + kept = samples_i[:, 1:, ...] # shape: (B, keep_len, C, H, W) + + gstart = i * stride_out + gend = gstart + keep_len + result_sum[:, gstart:gend] += kept * g + weight_sum[:, gstart:gend] += g + + # 历史条件(若启用),通常取“保留段”的尾部 + x_minus1 = kept[:, -cond_h:, ...] if cond_h > 0 else None + + # 融合 + result = result_sum / torch.clamp_min(weight_sum, 1e-8) + + + # result = rearrange(result, 'b z c h w -> (b z) c h w') + result = result.permute(0,2,1,3,4) + x_result = torch.zeros((3,slice_num,512,512)) + dec_unit = 65 + res_unit = window_length-dec_unit + num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit + for i in range(num_dec_iter): + if i == num_dec_iter - 1: + x_result[:,-dec_unit:] = model.decode_first_stage(result[:,:,-latent_lenght:])[0][:,res_unit:] + else: + # breakpoint() + x_result[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:,:,i*latent_lenght:(i+1)*latent_lenght])[0][:,res_unit:] + x_result = x_result*2 + x_result[x_result>1.0] = 1.0 + x_result[x_result<-1.0] = -1.0 + x_result = (x_result+1)/2 + # breakpoint() + + x_result_ = x_result.mean(axis=0).detach().cpu().numpy() + # x_result = x_result[0,:,0,...].detach().cpu().numpy() + # breakpoint() + x_result = x_result_.transpose(1,2,0) + # x_result = np.rot90(x_result, k=1, axes=(0,1)) + # x_result = np.flip(x_result,axis=(0,1)) + # import imageio as io + # io.imsave('exp.png', (x_result[:,:,400]*255).astype(np.uint8)) + + # breakpoint() + ref_root = '/sd/shuhan/CT-RATE/dataset/valid_fixed' + ref_nii = os.path.join(ref_root, name.split('_')[0]+'_'+name.split('_')[1], name.split('_')[0]+'_'+name.split('_')[1]+'_'+name.split('_')[2],name+'.nii.gz') + affine = nib.load(ref_nii).affine + + x_result = x_result*2000.0 - 1000.0 + data_path = os.path.join(save_path, str(f'{name}.nii.gz')) + data_nii = nib.Nifti1Image(x_result.astype(np.int16), affine) + + nib.save(data_nii, data_path) + + breakpoint() + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new.py new file mode 100644 index 0000000000000000000000000000000000000000..bdd712d6be125c1130f010f046565fc74f0bdbeb --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new.py @@ -0,0 +1,285 @@ +import glob +import nibabel as nib +import numpy as np +import os +import torch + +from einops import rearrange +from omegaconf import OmegaConf +from torch.utils.data import DataLoader +from tqdm import tqdm + +from ldm.util import instantiate_from_config +import argparse + +def compute_orientation(init_axcodes, final_axcodes): + """ + A thin wrapper around ``nib.orientations.ornt_transform`` + + :param init_axcodes: Initial orientation codes + :param final_axcodes: Target orientation codes + :return: orientations array, start_ornt, end_ornt + """ + ornt_init = nib.orientations.axcodes2ornt(init_axcodes) + ornt_fin = nib.orientations.axcodes2ornt(final_axcodes) + + ornt_transf = nib.orientations.ornt_transform(ornt_init, ornt_fin) + + return ornt_transf, ornt_init, ornt_fin + +def do_reorientation(data_array, init_axcodes, final_axcodes): + """ + source: https://niftynet.readthedocs.io/en/dev/_modules/niftynet/io/misc_io.html#do_reorientation + Performs the reorientation (changing order of axes) + + :param data_array: 3D Array to reorient + :param init_axcodes: Initial orientation + :param final_axcodes: Target orientation + :return data_reoriented: New data array in its reoriented form + """ + ornt_transf, ornt_init, ornt_fin = compute_orientation(init_axcodes, final_axcodes) + if np.array_equal(ornt_init, ornt_fin): + return data_array + + return nib.orientations.apply_orientation(data_array, ornt_transf) + +def alternating_volume_fusion(vol1, vol2, offset=32): + """ + Fuse two volumes by alternating between them in segments + Rule: z[0-48] from vol1, z[49-80] from vol2 (offset by 32), and so on + + :param vol1: First volume with shape (x, y, z) + :param vol2: Second volume with shape (x, y, z-32), offset by 32 slices + :param offset: Offset between vol1 and vol2 (default 32) + :return: Fused volume with alternating segments, shape (x, y, z) + """ + x, y, total_slices = vol1.shape + fused = np.zeros_like(vol1) + + # First segment: z[0:49] from vol1 (49 slices) + segment_1_end = 49 + fused[:, :, 0:segment_1_end] = vol1[:, :, 0:segment_1_end] + + current_pos = segment_1_end + use_vol2 = True + + while current_pos < total_slices: + if use_vol2: + # Use vol2: z[49-80] from vol2, which corresponds to vol2's z[17:49] + vol2_start = current_pos - offset # 49 - 32 = 17 + segment_length = 32 # z[49:81] is 32 slices + segment_end = min(current_pos + segment_length, total_slices) + vol2_end = vol2_start + (segment_end - current_pos) + + if vol2_start >= 0 and vol2_start < vol2.shape[2]: + actual_end = min(vol2_end, vol2.shape[2]) + copy_length = actual_end - vol2_start + fused[:, :, current_pos:current_pos+copy_length] = vol2[:, :, vol2_start:actual_end] + current_pos += copy_length + else: + break + + else: + # Use vol1: z[81:130] from vol1 (49 slices) + segment_length = 49 + segment_end = min(current_pos + segment_length, total_slices) + fused[:, :, current_pos:segment_end] = vol1[:, :, current_pos:segment_end] + current_pos = segment_end + + use_vol2 = not use_vol2 + + return fused + +parser = argparse.ArgumentParser() +parser.add_argument( + "-t", + "--time_steps", + type=int, + default=20, +) +args = parser.parse_args() +ddim_steps=args.time_steps + +logdir = 'logs/full_ct_3d_with_body_mask' +ckpt = os.path.join(logdir, "checkpoints", "epoch=000070.ckpt") + +configs_file = "configs/latent-diffusion/full_ct_3d_with_body_mask.yaml" +configs = OmegaConf.load(configs_file) +model = instantiate_from_config(configs.model) +model.init_from_ckpt(ckpt) +model.eval() + +device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") +print("Using device", device) +model = model.to(device) + +config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask.yaml') +data = instantiate_from_config(config.data) +data.prepare_data() +data.setup() + +save_path = f'3d_results_step{ddim_steps}_train_latest' +save_path = os.path.join(logdir, save_path) +if not os.path.exists(save_path): + os.makedirs(save_path) + +val_dataset = data.datasets['validation'] +batch_size = 1 +valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True) +val_num = len(val_dataset) +save_gt = True + +for idx, data in tqdm(enumerate(valloader)): + + if idx >= val_num: + break + + name=data['name'][0].split('.')[0] + volume_data = data['volume_data'] + volume_seg = data['volume_seg'] + + window_length = 65 + latent_lenght=17 + h = 1 + slice_num =volume_data.shape[2] + + upper_iters = (slice_num-h) // (window_length-h)+1 if (slice_num-h)%(window_length-h) != 0 else (slice_num-h) // (window_length-h) + result = torch.zeros((batch_size, upper_iters*latent_lenght, 16, 64, 64)).cuda() + print('upper_iters', upper_iters) + + for i in range(upper_iters): + print('i', i) + input_data={} + if i == upper_iters-1: + input_data['name'] = data['name'] + input_data['volume_data'] = data['volume_data'][:, :, -window_length:].to(device) + input_data['volume_seg'] = data['volume_seg'][:, :, -window_length:].to(device) + input_data['input_text'] = data['input_text'] + else: + input_data['volume_data'] = data['volume_data'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device) + input_data['volume_seg'] = data['volume_seg'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device) + input_data['input_text'] = data['input_text'] + + with torch.no_grad(): + _, c = model.get_input(input_data, model.first_stage_key) + + if i == 0: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps) + else: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1) + + samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght) + + if i == upper_iters-1: + result[:, -latent_lenght+h:] = samples_i[:,h:,...] + else: + if i == 0: + result[:, :latent_lenght] = samples_i + else: + result[:, i*latent_lenght-i*h+h:(i+1)*latent_lenght-i*h] = samples_i[:, h:] + x_minus1 = samples_i[:, -h:,...] + + result = result.permute(0,2,1,3,4) + x_result = torch.zeros((3,slice_num,512,512)) + dec_unit = 65 + dec_latent_unit=17 + num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit + for i in range(num_dec_iter): + if i == num_dec_iter - 1: + x_result[:,-dec_unit:] = model.decode_first_stage(result[:,:,-latent_lenght:])[0] + else: + x_result[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:,:,i*latent_lenght:(i+1)*latent_lenght])[0] + + x_result = x_result*2 + x_result[x_result>1.0] = 1.0 + x_result[x_result<-1.0] = -1.0 + x_result = (x_result+1)/2 + x_result_ = x_result.mean(axis=0).detach().cpu().numpy() + x_result = x_result_.transpose(1,2,0) + + # Process second volume with offset + data2={} + data2['volume_data'] = data['volume_data'][:, :, 32:] # Fixed: should slice all dimensions properly + data2['volume_seg'] = data['volume_seg'][:, :, 32:] + data2['name'] = data['name'] + data2['input_text'] = data['input_text'] + + volume_data = data2['volume_data'] + volume_seg = data2['volume_seg'] + + window_length = 65 + latent_lenght=17 + h = 1 + slice_num =volume_data.shape[2] + + upper_iters = (slice_num-h) // (window_length-h)+1 if (slice_num-h)%(window_length-h) != 0 else (slice_num-h) // (window_length-h) + result2 = torch.zeros((batch_size, upper_iters*latent_lenght, 16, 64, 64)).cuda() + print('upper_iters', upper_iters) + + for i in range(upper_iters): + print('i', i) + input_data={} + if i == upper_iters-1: + input_data['name'] = data2['name'] + input_data['volume_data'] = data2['volume_data'][:, :, -window_length:].to(device) + input_data['volume_seg'] = data2['volume_seg'][:, :, -window_length:].to(device) + input_data['input_text'] = data2['input_text'] + else: + input_data['volume_data'] = data2['volume_data'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device) + input_data['volume_seg'] = data2['volume_seg'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device) + input_data['input_text'] = data2['input_text'] + + with torch.no_grad(): + _, c = model.get_input(input_data, model.first_stage_key) + + if i == 0: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps) + else: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1) + + samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght) + + if i == upper_iters-1: + result2[:, -latent_lenght+h:] = samples_i[:,h:,...] + else: + if i == 0: + result2[:, :latent_lenght] = samples_i + else: + result2[:, i*latent_lenght-i*h+h:(i+1)*latent_lenght-i*h] = samples_i[:, h:] + x_minus1 = samples_i[:, -h:,...] + + result2 = result2.permute(0,2,1,3,4) + x_result2 = torch.zeros((3,slice_num,512,512)) + dec_unit = 65 + dec_latent_unit=17 + num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit + for i in range(num_dec_iter): + if i == num_dec_iter - 1: + x_result2[:,-dec_unit:] = model.decode_first_stage(result2[:,:,-latent_lenght:])[0] # Fixed: was using result instead of result2 + else: + x_result2[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result2[:,:,i*latent_lenght:(i+1)*latent_lenght])[0] # Fixed: same here + + x_result2 = x_result2*2 + x_result2[x_result2>1.0] = 1.0 + x_result2[x_result2<-1.0] = -1.0 + x_result2 = (x_result2+1)/2 # Fixed: typo was x_resul2t + x_result2_ = x_result2.mean(axis=0).detach().cpu().numpy() + x_result2 = x_result2_.transpose(1,2,0) + + # Fuse volumes using alternating segments + # Rule: z[0-48] from x_result, z[49-80] from x_result2, and so on + print("Fusing volumes with alternating segments (0-48 from vol1, 49-80 from vol2)...") + x_result_fused = alternating_volume_fusion(x_result, x_result2, offset=32) + + # Load reference and save fused result + ref_root = '/sd/shuhan/CT-RATE/dataset/valid_fixed' + ref_nii = os.path.join(ref_root, name.split('_')[0]+'_'+name.split('_')[1], name.split('_')[0]+'_'+name.split('_')[1]+'_'+name.split('_')[2],name+'.nii.gz') + affine = nib.load(ref_nii).affine + + x_result_fused = x_result_fused*2000.0 - 1000.0 + data_path = os.path.join(save_path, str(f'{name}_fused.nii.gz')) + data_nii = nib.Nifti1Image(x_result_fused.astype(np.int16), affine) + + nib.save(data_nii, data_path) + print(f"Saved fused volume: {data_path}") + breakpoint() \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new2.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new2.py new file mode 100644 index 0000000000000000000000000000000000000000..925687f91f340560497ba522feb46a53dbe4c8a6 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new2.py @@ -0,0 +1,326 @@ +import glob +import nibabel as nib +import numpy as np +import os +import torch + +from einops import rearrange +from omegaconf import OmegaConf +from torch.utils.data import DataLoader +from tqdm import tqdm + +from ldm.util import instantiate_from_config +import argparse + +def compute_orientation(init_axcodes, final_axcodes): + """ + A thin wrapper around ``nib.orientations.ornt_transform`` + + :param init_axcodes: Initial orientation codes + :param final_axcodes: Target orientation codes + :return: orientations array, start_ornt, end_ornt + """ + ornt_init = nib.orientations.axcodes2ornt(init_axcodes) + ornt_fin = nib.orientations.axcodes2ornt(final_axcodes) + + ornt_transf = nib.orientations.ornt_transform(ornt_init, ornt_fin) + + return ornt_transf, ornt_init, ornt_fin + +def do_reorientation(data_array, init_axcodes, final_axcodes): + """ + source: https://niftynet.readthedocs.io/en/dev/_modules/niftynet/io/misc_io.html#do_reorientation + Performs the reorientation (changing order of axes) + + :param data_array: 3D Array to reorient + :param init_axcodes: Initial orientation + :param final_axcodes: Target orientation + :return data_reoriented: New data array in its reoriented form + """ + ornt_transf, ornt_init, ornt_fin = compute_orientation(init_axcodes, final_axcodes) + if np.array_equal(ornt_init, ornt_fin): + return data_array + + return nib.orientations.apply_orientation(data_array, ornt_transf) + +def compute_fusion_boundaries(upper_iters, latent_length, h, decode_ratio=4, blend_width=16): + """ + Compute fusion boundaries based on result segments + + :param upper_iters: Number of iterations in the generation loop + :param latent_length: Length of latent dimension (17) + :param h: Overlap parameter (1) + :param decode_ratio: Ratio between decoded and latent dimensions (4) + :param blend_width: Width of blending region on each side (16 slices) + :return: List of boundary dictionaries for fusion + """ + boundaries = [] + + for i in range(1, upper_iters): + # Calculate boundary position in latent space + latent_boundary = i * latent_length - i * h + + # Convert to decoded space (multiply by decode_ratio) + decoded_boundary = latent_boundary * decode_ratio + + # Define blending region: boundary ± blend_width + blend_start = max(0, decoded_boundary - blend_width) + blend_end = decoded_boundary + blend_width + + boundaries.append({ + 'boundary': decoded_boundary, + 'blend_start': blend_start, + 'blend_end': blend_end + }) + + return boundaries + + +def alternating_volume_fusion_with_boundaries(vol1, vol2, boundaries, offset=32, replace_width=16): + """ + Fuse two volumes by replacing regions around boundaries + + :param vol1: First volume with shape (x, y, z) - used as base + :param vol2: Second volume with shape (x, y, z-offset), offset by 32 slices + :param boundaries: List of boundary dictionaries from compute_fusion_boundaries + :param offset: Offset between vol1 and vol2 (default 32) + :param replace_width: Width on each side of boundary to replace (default 16) + :return: Fused volume with vol2 replacing vol1 at boundary regions + """ + x, y, total_slices = vol1.shape + fused = vol1.copy() # Start with vol1 as base + + # Sort boundaries by position + sorted_boundaries = sorted(boundaries, key=lambda b: b['boundary']) + + print(f"Fusion starting with vol1 as base") + + for i, boundary_info in enumerate(sorted_boundaries): + boundary = boundary_info['boundary'] + + # Define replacement region: boundary ± replace_width + replace_start = max(0, boundary - replace_width) + replace_end = min(boundary + replace_width, total_slices) + + # Map to vol2 coordinates + vol2_start = replace_start - offset + vol2_end = replace_end - offset + + # Replace this region with vol2 if valid + if vol2_start >= 0 and vol2_end <= vol2.shape[2]: + fused[:, :, replace_start:replace_end] = vol2[:, :, vol2_start:vol2_end] + print(f" Boundary {i+1}: z={boundary}, replaced z[{replace_start}:{replace_end}] with vol2[{vol2_start}:{vol2_end}]") + else: + print(f" Boundary {i+1}: z={boundary}, skipped (vol2 out of range)") + + print(f"Fusion complete with {len(sorted_boundaries)} boundaries") + + return fused + +parser = argparse.ArgumentParser() +parser.add_argument( + "-t", + "--time_steps", + type=int, + default=20, +) +args = parser.parse_args() +ddim_steps=args.time_steps + +logdir = 'logs/full_ct_3d_with_body_mask' +ckpt = os.path.join(logdir, "checkpoints", "epoch=000070.ckpt") + +configs_file = "configs/latent-diffusion/full_ct_3d_with_body_mask.yaml" +configs = OmegaConf.load(configs_file) +model = instantiate_from_config(configs.model) +model.init_from_ckpt(ckpt) +model.eval() + +device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") +print("Using device", device) +model = model.to(device) + +config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask.yaml') +data = instantiate_from_config(config.data) +data.prepare_data() +data.setup() + +save_path = f'3d_results_step{ddim_steps}_train_latest' +save_path = os.path.join(logdir, save_path) +if not os.path.exists(save_path): + os.makedirs(save_path) + +val_dataset = data.datasets['validation'] +batch_size = 1 +valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True) +val_num = len(val_dataset) +save_gt = True + +for idx, data in tqdm(enumerate(valloader)): + + if idx >= val_num: + break + + name=data['name'][0].split('.')[0] + volume_data = data['volume_data'] + volume_seg = data['volume_seg'] + + window_length = 65 + latent_lenght=17 + h = 1 + slice_num =volume_data.shape[2] + + upper_iters = (slice_num-h) // (window_length-h)+1 if (slice_num-h)%(window_length-h) != 0 else (slice_num-h) // (window_length-h) + result = torch.zeros((batch_size, upper_iters*latent_lenght, 16, 64, 64)).cuda() + print('upper_iters', upper_iters) + + for i in range(upper_iters): + print('i', i) + input_data={} + if i == upper_iters-1: + input_data['name'] = data['name'] + input_data['volume_data'] = data['volume_data'][:, :, -window_length:].to(device) + input_data['volume_seg'] = data['volume_seg'][:, :, -window_length:].to(device) + input_data['input_text'] = data['input_text'] + else: + input_data['volume_data'] = data['volume_data'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device) + input_data['volume_seg'] = data['volume_seg'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device) + input_data['input_text'] = data['input_text'] + + with torch.no_grad(): + _, c = model.get_input(input_data, model.first_stage_key) + + if i == 0: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps) + else: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1) + + samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght) + + if i == upper_iters-1: + result[:, -latent_lenght+h:] = samples_i[:,h:,...] + else: + if i == 0: + result[:, :latent_lenght] = samples_i + else: + result[:, i*latent_lenght-i*h+h:(i+1)*latent_lenght-i*h] = samples_i[:, h:] + x_minus1 = samples_i[:, -h:,...] + + result = result.permute(0,2,1,3,4) + x_result = torch.zeros((3,slice_num,512,512)) + dec_unit = 65 + dec_latent_unit=17 + num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit + for i in range(num_dec_iter): + if i == num_dec_iter - 1: + x_result[:,-dec_unit:] = model.decode_first_stage(result[:,:,-latent_lenght:])[0] + else: + x_result[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:,:,i*latent_lenght:(i+1)*latent_lenght])[0] + + x_result = x_result*2 + x_result[x_result>1.0] = 1.0 + x_result[x_result<-1.0] = -1.0 + x_result = (x_result+1)/2 + x_result_ = x_result.mean(axis=0).detach().cpu().numpy() + x_result = x_result_.transpose(1,2,0) + + # Process second volume with offset + data2={} + data2['volume_data'] = data['volume_data'][:, :, 32:] + data2['volume_seg'] = data['volume_seg'][:, :, 32:] + data2['name'] = data['name'] + data2['input_text'] = data['input_text'] + + volume_data = data2['volume_data'] + volume_seg = data2['volume_seg'] + + window_length = 65 + latent_lenght=17 + h = 1 + slice_num2 = volume_data.shape[2] + + upper_iters2 = (slice_num2-h) // (window_length-h)+1 if (slice_num2-h)%(window_length-h) != 0 else (slice_num2-h) // (window_length-h) + result2 = torch.zeros((batch_size, upper_iters2*latent_lenght, 16, 64, 64)).cuda() + print('upper_iters2', upper_iters2) + + for i in range(upper_iters2): + print('i', i) + input_data={} + if i == upper_iters2-1: + input_data['name'] = data2['name'] + input_data['volume_data'] = data2['volume_data'][:, :, -window_length:].to(device) + input_data['volume_seg'] = data2['volume_seg'][:, :, -window_length:].to(device) + input_data['input_text'] = data2['input_text'] + else: + input_data['volume_data'] = data2['volume_data'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device) + input_data['volume_seg'] = data2['volume_seg'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device) + input_data['input_text'] = data2['input_text'] + + with torch.no_grad(): + _, c = model.get_input(input_data, model.first_stage_key) + + if i == 0: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps) + else: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1) + + samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght) + + if i == upper_iters2-1: + result2[:, -latent_lenght+h:] = samples_i[:,h:,...] + else: + if i == 0: + result2[:, :latent_lenght] = samples_i + else: + result2[:, i*latent_lenght-i*h+h:(i+1)*latent_lenght-i*h] = samples_i[:, h:] + x_minus1 = samples_i[:, -h:,...] + + result2 = result2.permute(0,2,1,3,4) + x_result2 = torch.zeros((3,slice_num2,512,512)) + dec_unit = 65 + dec_latent_unit=17 + num_dec_iter = slice_num2 // dec_unit + 1 if slice_num2 % dec_unit != 0 else slice_num2 // dec_unit + for i in range(num_dec_iter): + if i == num_dec_iter - 1: + x_result2[:,-dec_unit:] = model.decode_first_stage(result2[:,:,-latent_lenght:])[0] + else: + x_result2[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result2[:,:,i*latent_lenght:(i+1)*latent_lenght])[0] + + x_result2 = x_result2*2 + x_result2[x_result2>1.0] = 1.0 + x_result2[x_result2<-1.0] = -1.0 + x_result2 = (x_result2+1)/2 + x_result2_ = x_result2.mean(axis=0).detach().cpu().numpy() + x_result2 = x_result2_.transpose(1,2,0) + + # Compute fusion boundaries based on result segments + boundaries = compute_fusion_boundaries( + upper_iters=upper_iters, + latent_length=latent_lenght, + h=h, + decode_ratio=4, + blend_width=16 + ) + + # Fuse volumes: start with vol1, replace regions around boundaries with vol2 + print("Fusing volumes: replacing boundary regions with vol2...") + x_result_fused = alternating_volume_fusion_with_boundaries( + x_result, + x_result2, + boundaries, + offset=32, + replace_width=8 + ) + + # Load reference and save fused result + ref_root = '/sd/shuhan/CT-RATE/dataset/valid_fixed' + ref_nii = os.path.join(ref_root, name.split('_')[0]+'_'+name.split('_')[1], name.split('_')[0]+'_'+name.split('_')[1]+'_'+name.split('_')[2],name+'.nii.gz') + affine = nib.load(ref_nii).affine + + x_result_fused = x_result_fused*2000.0 - 1000.0 + data_path = os.path.join(save_path, str(f'{name}_fused.nii.gz')) + data_nii = nib.Nifti1Image(x_result_fused.astype(np.int16), affine) + + nib.save(data_nii, data_path) + print(f"Saved fused volume: {data_path}") + breakpoint() \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new3.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new3.py new file mode 100644 index 0000000000000000000000000000000000000000..abb2cef44d45b1b1509f53580f3fca7a7bc20aeb --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new3.py @@ -0,0 +1,334 @@ +import glob +import nibabel as nib +import numpy as np +import os +import torch + +from einops import rearrange +from omegaconf import OmegaConf +from torch.utils.data import DataLoader +from tqdm import tqdm + +from ldm.util import instantiate_from_config +import argparse + +def compute_orientation(init_axcodes, final_axcodes): + """ + A thin wrapper around ``nib.orientations.ornt_transform`` + + :param init_axcodes: Initial orientation codes + :param final_axcodes: Target orientation codes + :return: orientations array, start_ornt, end_ornt + """ + ornt_init = nib.orientations.axcodes2ornt(init_axcodes) + ornt_fin = nib.orientations.axcodes2ornt(final_axcodes) + + ornt_transf = nib.orientations.ornt_transform(ornt_init, ornt_fin) + + return ornt_transf, ornt_init, ornt_fin + +def do_reorientation(data_array, init_axcodes, final_axcodes): + """ + source: https://niftynet.readthedocs.io/en/dev/_modules/niftynet/io/misc_io.html#do_reorientation + Performs the reorientation (changing order of axes) + + :param data_array: 3D Array to reorient + :param init_axcodes: Initial orientation + :param final_axcodes: Target orientation + :return data_reoriented: New data array in its reoriented form + """ + ornt_transf, ornt_init, ornt_fin = compute_orientation(init_axcodes, final_axcodes) + if np.array_equal(ornt_init, ornt_fin): + return data_array + + return nib.orientations.apply_orientation(data_array, ornt_transf) + +def compute_fusion_boundaries(upper_iters, latent_length, h, decode_ratio=4, blend_width=16): + """ + Compute fusion boundaries based on result segments + + :param upper_iters: Number of iterations in the generation loop + :param latent_length: Length of latent dimension (17) + :param h: Overlap parameter (1) + :param decode_ratio: Ratio between decoded and latent dimensions (4) + :param blend_width: Width of blending region on each side (16 slices) + :return: List of boundary dictionaries for fusion + """ + boundaries = [] + + for i in range(1, upper_iters): + # Calculate boundary position in latent space + latent_boundary = i * latent_length - i * h + + # Convert to decoded space (multiply by decode_ratio) + decoded_boundary = latent_boundary * decode_ratio + + # Define blending region: boundary ± blend_width + blend_start = max(0, decoded_boundary - blend_width) + blend_end = decoded_boundary + blend_width + + boundaries.append({ + 'boundary': decoded_boundary, + 'blend_start': blend_start, + 'blend_end': blend_end + }) + + return boundaries + + +def alternating_volume_fusion_with_boundaries(vol1, vol2, boundaries, offset=32, replace_width=16): + """ + Fuse two volumes by replacing regions around boundaries + + :param vol1: First volume with shape (x, y, z) - used as base + :param vol2: Second volume with shape (x, y, z-offset), offset by 32 slices + :param boundaries: List of boundary dictionaries from compute_fusion_boundaries + :param offset: Offset between vol1 and vol2 (default 32) + :param replace_width: Width on each side of boundary to replace (default 16) + :return: Fused volume with vol2 replacing vol1 at boundary regions + """ + x, y, total_slices = vol1.shape + fused = vol1.copy() # Start with vol1 as base + + # Sort boundaries by position + sorted_boundaries = sorted(boundaries, key=lambda b: b['boundary']) + + print(f"Fusion starting with vol1 as base") + + for i, boundary_info in enumerate(sorted_boundaries): + boundary = boundary_info['boundary'] + + # Define replacement region: boundary ± replace_width + replace_start = max(0, boundary - replace_width) + replace_end = min(boundary + replace_width, total_slices) + + # Map to vol2 coordinates + vol2_start = replace_start - offset + vol2_end = replace_end - offset + + # Replace this region with vol2 if valid + if vol2_start >= 0 and vol2_end <= vol2.shape[2]: + fused[:, :, replace_start:replace_end] = vol2[:, :, vol2_start:vol2_end] + print(f" Boundary {i+1}: z={boundary}, replaced z[{replace_start}:{replace_end}] with vol2[{vol2_start}:{vol2_end}]") + else: + print(f" Boundary {i+1}: z={boundary}, skipped (vol2 out of range)") + + print(f"Fusion complete with {len(sorted_boundaries)} boundaries") + + return fused + +parser = argparse.ArgumentParser() +parser.add_argument( + "-t", + "--time_steps", + type=int, + default=20, +) +args = parser.parse_args() +ddim_steps=args.time_steps + +logdir = 'logs/full_ct_3d_with_body_mask' +ckpt = os.path.join(logdir, "checkpoints", "epoch=000070.ckpt") + +configs_file = "configs/latent-diffusion/full_ct_3d_with_body_mask.yaml" +configs = OmegaConf.load(configs_file) +model = instantiate_from_config(configs.model) +model.init_from_ckpt(ckpt) +model.eval() + +device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") +print("Using device", device) +model = model.to(device) + +config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask.yaml') +data = instantiate_from_config(config.data) +data.prepare_data() +data.setup() + +save_path = f'3d_results_step{ddim_steps}_train_latest' +save_path = os.path.join(logdir, save_path) +if not os.path.exists(save_path): + os.makedirs(save_path) + +val_dataset = data.datasets['validation'] +batch_size = 1 +valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True) +val_num = len(val_dataset) +save_gt = True + +for idx, data in tqdm(enumerate(valloader)): + + if idx >= val_num: + break + + name=data['name'][0].split('.')[0] + volume_data = data['volume_data'] + volume_seg = data['volume_seg'] + + window_length = 65 + latent_lenght=17 + h = 1 + slice_num =volume_data.shape[2] + + upper_iters = (slice_num-h) // (window_length-h)+1 if (slice_num-h)%(window_length-h) != 0 else (slice_num-h) // (window_length-h) + result = torch.zeros((batch_size, upper_iters*latent_lenght, 16, 64, 64)).cuda() + print('upper_iters', upper_iters) + + for i in range(upper_iters): + print('i', i) + input_data={} + if i == upper_iters-1: + input_data['name'] = data['name'] + input_data['volume_data'] = data['volume_data'][:, :, -window_length:].to(device) + input_data['volume_seg'] = data['volume_seg'][:, :, -window_length:].to(device) + input_data['input_text'] = data['input_text'] + else: + input_data['volume_data'] = data['volume_data'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device) + input_data['volume_seg'] = data['volume_seg'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device) + input_data['input_text'] = data['input_text'] + + with torch.no_grad(): + _, c = model.get_input(input_data, model.first_stage_key) + + if i == 0: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps) + else: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1) + + samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght) + + if i == upper_iters-1: + result[:, -latent_lenght+h:] = samples_i[:,h:,...] + else: + if i == 0: + result[:, :latent_lenght] = samples_i + else: + result[:, i*latent_lenght-i*h+h:(i+1)*latent_lenght-i*h] = samples_i[:, h:] + x_minus1 = samples_i[:, -h:,...] + + result = result.permute(0,2,1,3,4) + x_result = torch.zeros((3,slice_num,512,512)) + dec_unit = 65 + dec_latent_unit=17 + num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit + + for i in range(num_dec_iter): + if i == num_dec_iter - 1: + # 计算最后一次迭代需要处理的实际切片数 + remaining_slices = slice_num % dec_unit if slice_num % dec_unit != 0 else dec_unit + # 从结果的末尾取对应数量的切片 + x_result[:, -remaining_slices:] = model.decode_first_stage(result[:, :, -latent_lenght:])[0][:, -remaining_slices:] + else: + x_result[:, i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:, :, i*latent_lenght:(i+1)*latent_lenght])[0] + + + x_result = x_result*2 + x_result[x_result>1.0] = 1.0 + x_result[x_result<-1.0] = -1.0 + x_result = (x_result+1)/2 + x_result_ = x_result.mean(axis=0).detach().cpu().numpy() + x_result = x_result_.transpose(1,2,0) + + # Process second volume with offset + data2={} + data2['volume_data'] = data['volume_data'][:, :, 32:] + data2['volume_seg'] = data['volume_seg'][:, :, 32:] + data2['name'] = data['name'] + data2['input_text'] = data['input_text'] + + volume_data = data2['volume_data'] + volume_seg = data2['volume_seg'] + + window_length = 65 + latent_lenght=17 + h = 1 + slice_num2 = volume_data.shape[2] + + upper_iters2 = (slice_num2-h) // (window_length-h)+1 if (slice_num2-h)%(window_length-h) != 0 else (slice_num2-h) // (window_length-h) + result2 = torch.zeros((batch_size, upper_iters2*latent_lenght, 16, 64, 64)).cuda() + print('upper_iters2', upper_iters2) + + for i in range(upper_iters2): + print('i', i) + input_data={} + if i == upper_iters2-1: + input_data['name'] = data2['name'] + input_data['volume_data'] = data2['volume_data'][:, :, -window_length:].to(device) + input_data['volume_seg'] = data2['volume_seg'][:, :, -window_length:].to(device) + input_data['input_text'] = data2['input_text'] + else: + input_data['volume_data'] = data2['volume_data'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device) + input_data['volume_seg'] = data2['volume_seg'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device) + input_data['input_text'] = data2['input_text'] + + with torch.no_grad(): + _, c = model.get_input(input_data, model.first_stage_key) + + if i == 0: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps) + else: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1) + + samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght) + + if i == upper_iters2-1: + result2[:, -latent_lenght+h:] = samples_i[:,h:,...] + else: + if i == 0: + result2[:, :latent_lenght] = samples_i + else: + result2[:, i*latent_lenght-i*h+h:(i+1)*latent_lenght-i*h] = samples_i[:, h:] + x_minus1 = samples_i[:, -h:,...] + + result2 = result2.permute(0,2,1,3,4) + x_result2 = torch.zeros((3,slice_num2,512,512)) + dec_unit = 65 + dec_latent_unit=17 + num_dec_iter = slice_num2 // dec_unit + 1 if slice_num2 % dec_unit != 0 else slice_num2 // dec_unit + + for i in range(num_dec_iter): + if i == num_dec_iter - 1: + remaining_slices = slice_num2 % dec_unit if slice_num2 % dec_unit != 0 else dec_unit + x_result2[:, -remaining_slices:] = model.decode_first_stage(result2[:, :, -latent_lenght:])[0][:, -remaining_slices:] + else: + x_result2[:, i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result2[:, :, i*latent_lenght:(i+1)*latent_lenght])[0] + + + x_result2 = x_result2*2 + x_result2[x_result2>1.0] = 1.0 + x_result2[x_result2<-1.0] = -1.0 + x_result2 = (x_result2+1)/2 + x_result2_ = x_result2.mean(axis=0).detach().cpu().numpy() + x_result2 = x_result2_.transpose(1,2,0) + + # Compute fusion boundaries based on result segments + boundaries = compute_fusion_boundaries( + upper_iters=upper_iters, + latent_length=latent_lenght, + h=h, + decode_ratio=4, + blend_width=16 + ) + + # Fuse volumes: start with vol1, replace regions around boundaries with vol2 + print("Fusing volumes: replacing boundary regions with vol2...") + x_result_fused = alternating_volume_fusion_with_boundaries( + x_result, + x_result2, + boundaries, + offset=32, + replace_width=8 + ) + + # Load reference and save fused result + ref_root = '/sd/shuhan/CT-RATE/dataset/valid_fixed' + ref_nii = os.path.join(ref_root, name.split('_')[0]+'_'+name.split('_')[1], name.split('_')[0]+'_'+name.split('_')[1]+'_'+name.split('_')[2],name+'.nii.gz') + affine = nib.load(ref_nii).affine + + x_result_fused = x_result_fused*2000.0 - 1000.0 + data_path = os.path.join(save_path, str(f'{name}_fused.nii.gz')) + data_nii = nib.Nifti1Image(x_result_fused.astype(np.int16), affine) + + nib.save(data_nii, data_path) + print(f"Saved fused volume: {data_path}") + breakpoint() \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new4.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new4.py new file mode 100644 index 0000000000000000000000000000000000000000..fca8cfc9b4342f1764749409fd765a3da88d7330 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new4.py @@ -0,0 +1,320 @@ +import glob +import nibabel as nib +import numpy as np +import os +import torch + +from einops import rearrange +from omegaconf import OmegaConf +from torch.utils.data import DataLoader +from tqdm import tqdm + +from ldm.util import instantiate_from_config +import argparse + +def compute_orientation(init_axcodes, final_axcodes): + """ + A thin wrapper around ``nib.orientations.ornt_transform`` + + :param init_axcodes: Initial orientation codes + :param final_axcodes: Target orientation codes + :return: orientations array, start_ornt, end_ornt + """ + ornt_init = nib.orientations.axcodes2ornt(init_axcodes) + ornt_fin = nib.orientations.axcodes2ornt(final_axcodes) + + ornt_transf = nib.orientations.ornt_transform(ornt_init, ornt_fin) + + return ornt_transf, ornt_init, ornt_fin + +def do_reorientation(data_array, init_axcodes, final_axcodes): + """ + source: https://niftynet.readthedocs.io/en/dev/_modules/niftynet/io/misc_io.html#do_reorientation + Performs the reorientation (changing order of axes) + + :param data_array: 3D Array to reorient + :param init_axcodes: Initial orientation + :param final_axcodes: Target orientation + :return data_reoriented: New data array in its reoriented form + """ + ornt_transf, ornt_init, ornt_fin = compute_orientation(init_axcodes, final_axcodes) + if np.array_equal(ornt_init, ornt_fin): + return data_array + + return nib.orientations.apply_orientation(data_array, ornt_transf) + +def compute_fusion_boundaries(upper_iters, latent_length, decode_ratio=4, blend_width=16): + """ + Compute fusion boundaries based on result segments + + :param upper_iters: Number of iterations in the generation loop + :param latent_length: Length of latent dimension (17) + :param decode_ratio: Ratio between decoded and latent dimensions (4) + :param blend_width: Width of blending region on each side (16 slices) + :return: List of boundary dictionaries for fusion + """ + boundaries = [] + + for i in range(1, upper_iters): + # Calculate boundary position in latent space + latent_boundary = i * latent_length + + # Convert to decoded space (multiply by decode_ratio) + decoded_boundary = latent_boundary * decode_ratio + 1 + + # Define blending region: boundary ± blend_width + blend_start = max(0, decoded_boundary - blend_width) + blend_end = decoded_boundary + blend_width + + boundaries.append({ + 'boundary': decoded_boundary, + 'blend_start': blend_start, + 'blend_end': blend_end + }) + + return boundaries + + +def alternating_volume_fusion_with_boundaries(vol1, vol2, boundaries, offset=32, replace_width=16): + """ + Fuse two volumes by replacing regions around boundaries + + :param vol1: First volume with shape (x, y, z) - used as base + :param vol2: Second volume with shape (x, y, z-offset), offset by 32 slices + :param boundaries: List of boundary dictionaries from compute_fusion_boundaries + :param offset: Offset between vol1 and vol2 (default 32) + :param replace_width: Width on each side of boundary to replace (default 16) + :return: Fused volume with vol2 replacing vol1 at boundary regions + """ + x, y, total_slices = vol1.shape + fused = vol1.copy() # Start with vol1 as base + + # Sort boundaries by position + sorted_boundaries = sorted(boundaries, key=lambda b: b['boundary']) + + print(f"Fusion starting with vol1 as base") + + for i, boundary_info in enumerate(sorted_boundaries): + boundary = boundary_info['boundary'] + + # Define replacement region: boundary ± replace_width + replace_start = max(0, boundary - replace_width) + replace_end = min(boundary + replace_width, total_slices) + + # Map to vol2 coordinates + vol2_start = replace_start - offset + vol2_end = replace_end - offset + + # Replace this region with vol2 if valid + if vol2_start >= 0 and vol2_end <= vol2.shape[2]: + fused[:, :, replace_start:replace_end] = vol2[:, :, vol2_start:vol2_end] + print(f" Boundary {i+1}: z={boundary}, replaced z[{replace_start}:{replace_end}] with vol2[{vol2_start}:{vol2_end}]") + else: + print(f" Boundary {i+1}: z={boundary}, skipped (vol2 out of range)") + + print(f"Fusion complete with {len(sorted_boundaries)} boundaries") + + return fused + +parser = argparse.ArgumentParser() +parser.add_argument( + "-t", + "--time_steps", + type=int, + default=20, +) +args = parser.parse_args() +ddim_steps=args.time_steps + +logdir = 'logs/full_ct_3d_with_body_mask2' +ckpt = os.path.join(logdir, "checkpoints", "epoch=000063.ckpt") + +configs_file = "configs/latent-diffusion/full_ct_3d_with_body_mask2.yaml" +configs = OmegaConf.load(configs_file) +model = instantiate_from_config(configs.model) +model.init_from_ckpt(ckpt) +model.eval() + +device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") +print("Using device", device) +model = model.to(device) + +config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask2.yaml') +data = instantiate_from_config(config.data) +data.prepare_data() +data.setup() + +save_path = f'3d_results_step{ddim_steps}_train_latest' +save_path = os.path.join(logdir, save_path) +if not os.path.exists(save_path): + os.makedirs(save_path) + +val_dataset = data.datasets['validation'] +batch_size = 1 +valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True) +val_num = len(val_dataset) +save_gt = True + +for idx, data in tqdm(enumerate(valloader)): + + if idx >= val_num: + break + + name=data['name'][0].split('.')[0] + volume_data = data['volume_data'] + volume_seg = data['volume_seg'] + + window_length = 65 + latent_lenght=17 + slice_num = volume_data.shape[2] + + upper_iters = slice_num // window_length + 1 if slice_num % window_length != 0 else slice_num // window_length + result = torch.zeros((batch_size, upper_iters*latent_lenght, 16, 64, 64)).cuda() + print('upper_iters', upper_iters) + + for i in range(upper_iters): + print('i', i) + input_data={} + if i == upper_iters-1: + input_data['name'] = data['name'] + input_data['volume_data'] = data['volume_data'][:, :, -window_length:].to(device) + input_data['volume_seg'] = data['volume_seg'][:, :, -window_length:].to(device) + input_data['input_text'] = data['input_text'] + else: + input_data['volume_data'] = data['volume_data'][:, :, i*window_length:(i+1)*window_length].to(device) + input_data['volume_seg'] = data['volume_seg'][:, :, i*window_length:(i+1)*window_length].to(device) + input_data['input_text'] = data['input_text'] + + with torch.no_grad(): + _, c = model.get_input(input_data, model.first_stage_key) + + if i == 0: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps) + else: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1) + + samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght) + + if i == upper_iters-1: + result[:, -latent_lenght:] = samples_i + else: + result[:, i*latent_lenght:(i+1)*latent_lenght] = samples_i + x_minus1 = samples_i[:, -1:, ...] # Take last slice for next iteration + + result = result.permute(0,2,1,3,4) + x_result = torch.zeros((3,slice_num,512,512)) + dec_unit = 65 + dec_latent_unit=17 + num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit + + for i in range(num_dec_iter): + if i == num_dec_iter - 1: + remaining_slices = slice_num % dec_unit if slice_num % dec_unit != 0 else dec_unit + x_result[:, -remaining_slices:] = model.decode_first_stage(result[:, :, -latent_lenght:])[0][:, -remaining_slices:] + else: + x_result[:, i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:, :, i*latent_lenght:(i+1)*latent_lenght])[0] + + x_result = x_result*2 + x_result[x_result>1.0] = 1.0 + x_result[x_result<-1.0] = -1.0 + x_result = (x_result+1)/2 + x_result_ = x_result.mean(axis=0).detach().cpu().numpy() + x_result = x_result_.transpose(1,2,0) + + # Process second volume with offset + data2={} + data2['volume_data'] = data['volume_data'][:, :, 32:] + data2['volume_seg'] = data['volume_seg'][:, :, 32:] + data2['name'] = data['name'] + data2['input_text'] = data['input_text'] + + volume_data = data2['volume_data'] + volume_seg = data2['volume_seg'] + + window_length = 65 + latent_lenght=17 + slice_num2 = volume_data.shape[2] + + upper_iters2 = slice_num2 // window_length + 1 if slice_num2 % window_length != 0 else slice_num2 // window_length + result2 = torch.zeros((batch_size, upper_iters2*latent_lenght, 16, 64, 64)).cuda() + print('upper_iters2', upper_iters2) + + for i in range(upper_iters2): + print('i', i) + input_data={} + if i == upper_iters2-1: + input_data['name'] = data2['name'] + input_data['volume_data'] = data2['volume_data'][:, :, -window_length:].to(device) + input_data['volume_seg'] = data2['volume_seg'][:, :, -window_length:].to(device) + input_data['input_text'] = data2['input_text'] + else: + input_data['volume_data'] = data2['volume_data'][:, :, i*window_length:(i+1)*window_length].to(device) + input_data['volume_seg'] = data2['volume_seg'][:, :, i*window_length:(i+1)*window_length].to(device) + input_data['input_text'] = data2['input_text'] + + with torch.no_grad(): + _, c = model.get_input(input_data, model.first_stage_key) + + if i == 0: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps) + else: + samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1) + + samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght) + + if i == upper_iters2-1: + result2[:, -latent_lenght:] = samples_i + else: + result2[:, i*latent_lenght:(i+1)*latent_lenght] = samples_i + x_minus1 = samples_i[:, -1:, ...] # Take last slice for next iteration + + result2 = result2.permute(0,2,1,3,4) + x_result2 = torch.zeros((3,slice_num2,512,512)) + dec_unit = 65 + dec_latent_unit=17 + num_dec_iter = slice_num2 // dec_unit + 1 if slice_num2 % dec_unit != 0 else slice_num2 // dec_unit + + for i in range(num_dec_iter): + if i == num_dec_iter - 1: + remaining_slices = slice_num2 % dec_unit if slice_num2 % dec_unit != 0 else dec_unit + x_result2[:, -remaining_slices:] = model.decode_first_stage(result2[:, :, -latent_lenght:])[0][:, -remaining_slices:] + else: + x_result2[:, i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result2[:, :, i*latent_lenght:(i+1)*latent_lenght])[0] + + x_result2 = x_result2*2 + x_result2[x_result2>1.0] = 1.0 + x_result2[x_result2<-1.0] = -1.0 + x_result2 = (x_result2+1)/2 + x_result2_ = x_result2.mean(axis=0).detach().cpu().numpy() + x_result2 = x_result2_.transpose(1,2,0) + + # Compute fusion boundaries based on result segments + boundaries = compute_fusion_boundaries( + upper_iters=upper_iters, + latent_length=16, + decode_ratio=4, + blend_width=16 + ) + + # Fuse volumes: start with vol1, replace regions around boundaries with vol2 + print("Fusing volumes: replacing boundary regions with vol2...") + x_result_fused = alternating_volume_fusion_with_boundaries( + x_result, + x_result2, + boundaries, + offset=32, + replace_width=16 + ) + + # Load reference and save fused result + ref_root = '/sd/shuhan/CT-RATE/dataset/train_fixed' + ref_nii = os.path.join(ref_root, name.split('_')[0]+'_'+name.split('_')[1], name.split('_')[0]+'_'+name.split('_')[1]+'_'+name.split('_')[2],name+'.nii.gz') + affine = nib.load(ref_nii).affine + + x_result_fused = x_result_fused*2000.0 - 1000.0 + data_path = os.path.join(save_path, str(f'{name}_fused.nii.gz')) + data_nii = nib.Nifti1Image(x_result_fused.astype(np.int16), affine) + + nib.save(data_nii, data_path) + print(f"Saved fused volume: {data_path}") + breakpoint() \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_full_ct_2d_with_body_mask.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_full_ct_2d_with_body_mask.py new file mode 100644 index 0000000000000000000000000000000000000000..93cdb65e63122f50fdaff9a32fa944efb83301f1 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_full_ct_2d_with_body_mask.py @@ -0,0 +1,80 @@ +import glob +import nibabel as nib +import numpy as np +import os +import torch +from skimage import io +from einops import rearrange +from omegaconf import OmegaConf +from torch.utils.data import DataLoader +from tqdm import tqdm + +from ldm.util import instantiate_from_config + + +logdir = 'logs/full_ct_2d_with_body_mask/' +ckpt = os.path.join(logdir, "checkpoints", "epoch=000999.ckpt") + +configs_file = sorted(glob.glob(os.path.join(logdir, "configs/*.yaml")))[1] +configs = OmegaConf.load(configs_file) +model = instantiate_from_config(configs.model) +model.init_from_ckpt(ckpt) +model.eval() + +device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") +print("Using device", device) +model = model.to(device) + +config = OmegaConf.load('./configs/latent-diffusion/full_ct_2d_with_body_mask.yaml') +data = instantiate_from_config(config.data) +data.prepare_data() +data.setup() + +save_path = 'inference' +save_path = os.path.join(logdir, save_path) +if not os.path.exists(save_path): + os.makedirs(save_path) + +val_dataset = data.datasets['validation'] +batch_size = 1 +valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=0, pin_memory=True) +val_num = len(val_dataset) +save_gt = True +# val_num = 10 +# breakpoint() +for idx, data in tqdm(enumerate(valloader)): + # if idx >= val_num: + # break + name=data['name'][0].split('.')[0] + data['volume_data'] = data['volume_data'].to(device) + data['volume_seg'] = data['volume_seg'].to(device) + input_text = data['input_text'] + # .to(device) + + x, c = model.get_input(data, model.first_stage_key) + # breakpoint() + samples, _ = model.sample_log(cond=c, batch_size=17, ddim=True, eta=1., ddim_steps=100) + samples=samples.permute(1,0,2,3) + + res = model.decode_first_stage(samples[None,:]) + res = res*2 + # breakpoint() + res[res>1.0] = 1.0 + res[res<-1.0] = -1.0 + res = (res+1)/2 + # breakpoint() + res = res[0].mean(axis=0).detach().cpu().numpy() + # slice_ct=(slice_ct+1)/2 + # slice_seg=(slice_seg+1)/2 + for z_slice in range(res.shape[0]): + # input_img = np.clip(np.repeat(slice_ct[0,0].detach().cpu().numpy(), 3, 0),0,1) * 255 + res_slice = np.repeat(res[z_slice][None,], 3, 0).transpose(1,2,0)* 255 + # slice_seg = np.clip(np.repeat(slice_seg[0,0].detach().cpu().numpy(), 3, 0),0,1) * 255 + + io.imsave(os.path.join(save_path, str(name) + f'_sample_{z_slice}.png'), res_slice.astype(np.uint8)) + # io.imsave(os.path.join(save_path, str(name) + f'_input_img_{z_slice}.png'), input_img.astype(np.uint8)) + # io.imsave(os.path.join(save_path, str(name) + f'_seg_{z_slice}.png'), slice_seg.astype(np.uint8)) + + break + + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_full_ct_3d_with_body_mask.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_full_ct_3d_with_body_mask.py new file mode 100644 index 0000000000000000000000000000000000000000..9db23d841299b4667798128f8c3bdfa53958117b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_full_ct_3d_with_body_mask.py @@ -0,0 +1,92 @@ +import glob +import nibabel as nib +import numpy as np +import os +import torch +from skimage import io +from einops import rearrange +from omegaconf import OmegaConf +from torch.utils.data import DataLoader +from tqdm import tqdm + +from ldm.util import instantiate_from_config + + +logdir = '/sd/qichen/full_ct_gen/GEM-3D-ct-text4/logs/full_ct_3d_with_body_mask' +ckpt = os.path.join(logdir, "checkpoints", "epoch=000365.ckpt") + +configs_file = sorted(glob.glob(os.path.join(logdir, "configs/*.yaml")))[1] +configs = OmegaConf.load(configs_file) +model = instantiate_from_config(configs.model) +model.init_from_ckpt(ckpt) +model.eval() + +device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") +print("Using device", device) +model = model.to(device) + +config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask.yaml') +data = instantiate_from_config(config.data) +data.prepare_data() +data.setup() + +save_path = 'inference' +save_path = os.path.join(logdir, save_path) +if not os.path.exists(save_path): + os.makedirs(save_path) + +val_dataset = data.datasets['validation'] +batch_size = 1 +valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=0, pin_memory=True) +val_num = len(val_dataset) +save_gt = True +# val_num = 10 +# breakpoint() +for idx, data in tqdm(enumerate(valloader)): + # if idx >= val_num: + # break + name=data['name'][0].split('.')[0] + volume_data = data['volume_data'] + volume_seg = data['volume_seg'] + input_text = data['input_text'] + # breakpoint() + + for z_slice in range(16): + slice_seg = volume_seg[:,:,z_slice:z_slice+16] + slice_ct = volume_data[:,:,z_slice:z_slice+16] + # print("shape:", slice_ct.shape) + # print("class:", torch.unique(slice_seg)) + # breakpoint() + input_data = {} + input_data['volume_data']=slice_ct.to(device) + input_data['volume_seg']=slice_seg.to(device) + input_data['input_text']=input_text + # breakpoint() + x, c = model.get_input(input_data, model.first_stage_key) + # breakpoint() + samples, _ = model.sample_log(cond=c, batch_size=16, ddim=True, eta=1., ddim_steps=200) + + res = model.decode_first_stage(samples) + res[res>1.0] = 1.0 + res[res<-1.0] = -1.0 + res = (res+1)/2 + # breakpoint() + res = res.mean(axis=1).detach().cpu().numpy() + # breakpoint() + slice_ct=(slice_ct+1)/2 + slice_seg=(slice_seg+1)/2 + # breakpoint() + for z_id in range(16): + input_img = np.clip(np.repeat(slice_ct[0,0,z_id][None,:].detach().cpu().numpy(), 3, 0),0,1) * 255 + res_ = np.repeat(res[z_id][None,:], 3, 0).transpose(1,2,0)* 255 + slice_seg_ = np.clip(np.repeat(slice_seg[0,0,z_id][None,:].detach().cpu().numpy(), 3, 0),0,1) * 255 + + io.imsave(os.path.join(save_path, str(name) + f'_sample_{z_id}.png'), res_.astype(np.uint8)) + io.imsave(os.path.join(save_path, str(name) + f'_input_img_{z_id}.png'), input_img.astype(np.uint8)) + io.imsave(os.path.join(save_path, str(name) + f'_seg_{z_id}.png'), slice_seg_.astype(np.uint8)) + + break + + break + + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f915b5f8a0e4d7498dfd635deb34d94d7709cb5b Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ff862daa159d7c546c3719da6905116660de319c Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..96e0ac2a8e7def359ff3af8e7f65b9312577fe5e Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-38.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e453f2d5b0036df3ee7c38365874e8752e63f1a3 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__init__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6492a7c954131215fcca1d5e5c4352dbb0e349ed Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..279a50d919c6c282545eb0a893cafc3c22bb9d2c Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8c6854e4985da7553d59e54ee49a86df6de25deb Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-38.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7ef82a572cef815fc1fcde1f218f75329bf1c31a Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4a26bc07a188b785fa1e48e3a518598a4412684f Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3a07ad34eccab31cff5c1327e501f50ae03ff867 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8613aefbbece2be667c6928efc9bbc079a7d6f6f Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-38.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ac78a5efdd9ff24288213b089e2e3116d6221763 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7ce55f78c5702287b305c30ee676246ea5f77919 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_inference.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_inference.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ca58a3bdb6bc1bdef0cb2ffc8023f706ef857721 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_inference.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_inference.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_inference.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c829d488b1d5356741e3bfca54407b4e991753a1 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_inference.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_inference.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_inference.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3e7a779e0cbf83389c659f6b4463681bc42e7096 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_inference.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_train.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_train.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..641f230e28e8bd32eedc70bba0ad91cf59c26ed2 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_train.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_train.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_train.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eab434c6fb9820d168fec783f683e819875e9bcc Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_train.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_train.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_train.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4e5674bbb45c7810b1012329385adcc4c572d7c7 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_train.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ed383f6fd9c95c3c7469958670bfc7354ed9843d Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_28class.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_28class.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1907a2c3f7e622bfbd30ed4d1695ae84d6a05fe2 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_28class.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_28class_randomclass.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_28class_randomclass.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8540131846ede266575be8b28cf01613ea708a73 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_28class_randomclass.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_28class_randomclass_kl4.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_28class_randomclass_kl4.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e9882abf3a382bac957126a313357c8e71fbe076 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_28class_randomclass_kl4.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_resize.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_resize.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f7d0fba4c518af0b3301a66c4927dd453a8731be Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_resize.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_infer.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_infer.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4f1a0012cb67644b03ecf1e84a4bb91e38220d60 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_infer.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_infer_28class_randomclass.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_infer_28class_randomclass.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..713c768d44b86eb6daace82ae15860befec32ff2 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_infer_28class_randomclass.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_resize.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_resize.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8fd615e3cb140d3415099665880401c4c71c594b Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_resize.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b7a0f67b0431fdf0c298f0c0ec005907d613caf7 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_13class_randomclass.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_13class_randomclass.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..caeaee882bb9e97f249cb917220d7777d049b3e0 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_13class_randomclass.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_28class_randomclass.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_28class_randomclass.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d13b4f6de861140cbccb08d6d90e0a0afd93a459 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_28class_randomclass.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_infer.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_infer.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..896c3e3c012ba432feb5514623797bc129705c77 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_infer.cpython-38.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_infer.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_infer.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7bb6423a19965a0d23fbb13b7c6f8391860e9f89 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_infer.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/base.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/base.py new file mode 100644 index 0000000000000000000000000000000000000000..8d0b0a1a55a9b58d716ce7caeaa041070a77546d --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/base.py @@ -0,0 +1,23 @@ +from abc import abstractmethod +from torch.utils.data import Dataset, ConcatDataset, ChainDataset, IterableDataset + + +class Txt2ImgIterableBaseDataset(IterableDataset): + ''' + Define an interface to make the IterableDatasets for text2img data chainable + ''' + def __init__(self, num_records=0, valid_ids=None, size=256): + super().__init__() + self.num_records = num_records + self.valid_ids = valid_ids + self.sample_ids = valid_ids + self.size = size + + print(f'{self.__class__.__name__} dataset contains {self.__len__()} examples.') + + def __len__(self): + return self.num_records + + @abstractmethod + def __iter__(self): + pass diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/ct_clip_data_inference.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/ct_clip_data_inference.py new file mode 100644 index 0000000000000000000000000000000000000000..dbe92ae1b925bcb2020e622c3cc8ab08f5fbfbf3 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/ct_clip_data_inference.py @@ -0,0 +1,348 @@ +import os +import glob +import json +import torch +import pandas as pd +import numpy as np +from PIL import Image +from torch.utils.data import Dataset +import torchvision.transforms as transforms +from functools import partial +import torch.nn.functional as F +import tqdm +import nibabel as nib +import copy +def resize_array(array, current_spacing): + """ + Resize the array to match the target spacing. + + Args: + array (torch.Tensor): Input array to be resized. + current_spacing (tuple): Current voxel spacing (z_spacing, xy_spacing, xy_spacing). + target_spacing (tuple): Target voxel spacing (target_z_spacing, target_x_spacing, target_y_spacing). + + Returns: + np.ndarray: Resized array. + """ + # Calculate new dimensions + original_shape = array.shape[2:] + + + new_shape = [original_shape[0], 512, 512] + scaling_factors = [new_shape[i] / original_shape[i] for i in range(len(original_shape))] + resized_spacing = [current_spacing[i] / scaling_factors[i] for i in range(len(original_shape))] + # Resize the array + resized_array = F.interpolate(array, size=new_shape, mode='trilinear', align_corners=False).cpu().numpy() + # breakpoint() + return resized_array, resized_spacing + +def resize_mask(array, current_spacing): + """ + Resize the array to match the target spacing. + + Args: + array (torch.Tensor): Input array to be resized. + current_spacing (tuple): Current voxel spacing (z_spacing, xy_spacing, xy_spacing). + target_spacing (tuple): Target voxel spacing (target_z_spacing, target_x_spacing, target_y_spacing). + + Returns: + np.ndarray: Resized array. + """ + # Calculate new dimensions + original_shape = array.shape[2:] + + new_shape = [original_shape[0], 512, 512] + + resized_array = F.interpolate(array, size=new_shape, mode='nearest').cpu().numpy() + # breakpoint() + return resized_array + +class CTReportDatasetinfer(Dataset): + def __init__(self, data_folder, csv_file, min_slices=20, resize_dim=500, force_num_frames=True, labels = "labels.csv"): + self.data_folder = data_folder + self.min_slices = min_slices + self.labels = labels + self.accession_to_text = self.load_accession_text(csv_file) + self.paths=[] + self.samples = self.prepare_samples() + self.transform = transforms.Compose([ + transforms.Resize((resize_dim,resize_dim)), + transforms.ToTensor() + ]) + self.nii_to_tensor = partial(self.nii_img_to_tensor, transform = self.transform) + self.sample_length=65 + + def load_accession_text(self, csv_file): + df = pd.read_csv(csv_file) + accession_to_text = {} + for index, row in df.iterrows(): + accession_to_text[row['VolumeName']] = row["Findings_EN"],row['Impressions_EN'] + return accession_to_text + + + def prepare_samples(self): + samples = [] + # patient_folders = glob.glob(os.path.join(self.data_folder, '*')) + + # Read labels once outside the loop + test_df = pd.read_csv(self.labels) + test_label_cols = list(test_df.columns[1:]) + test_df['one_hot_labels'] = list(test_df[test_label_cols].values) + + import json + + # with open('/sd/qichen/full_ct_gen/CT-RATE/valid_no_disease_2_checked.json', 'r') as f: + # items = [json.loads(line) for line in f] + + # # 2. 提取所有 volume_path + # volume_paths = [item['volume_path'] + # for item in items + # if 'volume_path' in item] + # organ_masks = [item['organ_mask'] + # for item in items + # if 'organ_mask' in item] + + # for nii_file, organ_mask in tqdm.tqdm(zip(volume_paths, organ_masks)): + + # accession_number = nii_file.split("/")[-1] + + # seg_file = '/sd/shuhan/CT-RATE/'+organ_mask + # nii_file = '/sd/shuhan/CT-RATE/'+nii_file + # # accession_number = accession_number.replace(".npz", ".nii.gz") + # if accession_number not in self.accession_to_text: + # continue + + # impression_text = self.accession_to_text[accession_number] + # text_final = "" + # for text in list(impression_text): + # text = str(text) + # if text == "Not given.": + # text = "" + + # text_final = text_final + text + + # samples.append((nii_file, seg_file, None, text_final, None, None, None)) + + with open('/sd/qichen/full_ct_gen/CT-RATE/disease_mask_json/disease_valid_single_prompt_checked_label.json', 'r') as f: + items = [json.loads(line) for line in f] + + # 2. 提取所有 volume_path + volume_paths = [item['volume_path'] + for item in items + if 'volume_path' in item] + + disease_mask_paths = [item['disease_mask'] + for item in items + if 'disease_mask' in item] + + organ_mask_paths = [item['organ_mask'] + for item in items + if 'organ_mask' in item] + + disease_findings_list = [item['disease_findings'] + for item in items + if 'disease_findings' in item] + disease_mask_channels = [item['disease_mask_channel'] + for item in items + if 'disease_mask_channel' in item] + disease_labels = [item['disease_label'] + for item in items + if 'disease_label' in item] + disease_classes = [item['disease_class'] + for item in items + if 'disease_class' in item] + # breakpoint() + for (ct_file, organ_mask_file, disease_mask_file, disease_findings, disease_mask_channel, disease_label, disease_class) in tqdm.tqdm(zip(volume_paths, organ_mask_paths, disease_mask_paths, disease_findings_list, disease_mask_channels, disease_labels, disease_classes)): + + accession_number = organ_mask_file.split("/")[-1] + + ct_file = '/sd/shuhan/CT-RATE/'+ct_file + organ_file = '/sd/shuhan/CT-RATE/'+organ_mask_file + disease_file = '/sd/shuhan/CT-RATE/'+disease_mask_file + + text_final = disease_findings + + + + samples.append((ct_file, organ_file, disease_file, text_final, disease_mask_channel, disease_label, disease_class)) + + + return samples + + def __len__(self): + return len(self.samples) + + def nii_img_to_tensor(self, ct_file, organ_file, disease_file, disease_mask_channel, disease_label, disease_class, transform): + if disease_file == None: + + nii_img = nib.load(str(ct_file)) + img_data = nii_img.get_fdata() + + df = pd.read_csv("/sd/shuhan/CT-RATE/metadata/all_metadata.csv") #select the metadata + file_name = ct_file.split("/")[-1] + row = df[df['VolumeName'] == file_name] + slope = float(row["RescaleSlope"].iloc[0]) + intercept = float(row["RescaleIntercept"].iloc[0]) + xy_spacing = float(row["XYSpacing"].iloc[0][1:][:-2].split(",")[0]) + z_spacing = float(row["ZSpacing"].iloc[0]) + + nii_seg = nib.load(str(organ_file)) + mask_data = nii_seg.get_fdata() + + current = (z_spacing, xy_spacing, xy_spacing) + + img_data = img_data.transpose(2, 0, 1) + tensor = torch.tensor(img_data) + tensor = tensor.unsqueeze(0).unsqueeze(0) + img_data, target_spacing = resize_array(tensor, current) + img_data = img_data[0][0] + + mask_data = mask_data.transpose(2, 0, 1) + tensor = torch.tensor(mask_data) + tensor = tensor.unsqueeze(0).unsqueeze(0) + mask_data = resize_mask(tensor, current) + mask_data = mask_data[0][0] + # breakpoint() + assert mask_data.shape == img_data.shape + fg_mask = (mask_data>0).astype(np.uint8) + mask_data = (((mask_data ) / 300)).astype(np.float32) * 2 -1 + + hu_min, hu_max = -1000, 1000 + img_data = np.clip(img_data, hu_min, hu_max) + + bg_np = np.ones_like(img_data) * -1000 + + img_data = img_data*fg_mask + bg_np*(1-fg_mask) + + + img_data = (((img_data ) / 1000)).astype(np.float32) + start_id = np.random.randint(0, img_data.shape[0]-self.sample_length) + img_data = img_data[start_id:start_id+self.sample_length] + mask_data = mask_data[start_id:start_id+self.sample_length] + + # slices=[] + img_data = img_data/2.0 + mask_data = mask_data/2.0 + + img_data = torch.tensor(img_data) + mask_data = torch.tensor(mask_data) + + + img_data = img_data.unsqueeze(0) + mask_data = mask_data.unsqueeze(0) + + return img_data, mask_data, target_spacing, file_name + else: + ct_nii = nib.load(str(ct_file)) + img_data = ct_nii.get_fdata() + + df = pd.read_csv("/sd/shuhan/CT-RATE/metadata/all_metadata.csv") #select the metadata + file_name = ct_file.split("/")[-1] + row = df[df['VolumeName'] == file_name] + slope = float(row["RescaleSlope"].iloc[0]) + intercept = float(row["RescaleIntercept"].iloc[0]) + xy_spacing = float(row["XYSpacing"].iloc[0][1:][:-2].split(",")[0]) + z_spacing = float(row["ZSpacing"].iloc[0]) + + current = (z_spacing, xy_spacing, xy_spacing) + img_data = img_data.transpose(2, 0, 1) + tensor = torch.tensor(img_data) + tensor = tensor.unsqueeze(0).unsqueeze(0) + img_data, target_spacing = resize_array(tensor, current) + img_data = img_data[0][0] + + organ_nii = nib.load(str(organ_file)) + organ_mask = organ_nii.get_fdata() + organ_mask = organ_mask.transpose(2, 0, 1) + tensor = torch.tensor(organ_mask) + tensor = tensor.unsqueeze(0).unsqueeze(0) + organ_mask = resize_mask(tensor, current) + organ_mask = organ_mask[0][0] + + disease_nii = nib.load(str(disease_file)) + disease_mask = disease_nii.get_fdata()[int(disease_mask_channel)] + disease_mask = disease_mask.transpose(2, 0, 1) + tensor = torch.tensor(disease_mask) + tensor = tensor.unsqueeze(0).unsqueeze(0) + disease_mask = resize_mask(tensor, current) + disease_mask = disease_mask[0][0] + + assert organ_mask.shape == img_data.shape + + num_slices = img_data.shape[0] + + # 找到 mask>0 的切片索引 + valid_indices = np.where(disease_mask.sum(axis=(1, 2)) > 0)[0] + + if len(valid_indices) > 0: + # 只保留能完整取 sample_length 的起点 + valid_start_ids = valid_indices[valid_indices <= num_slices - self.sample_length] + + if len(valid_start_ids) > 0: + start_id = np.random.choice(valid_start_ids) + else: + # 如果没有合法起点就退化到随机,但保证能取 sample_length + start_id = np.random.randint(0, num_slices - self.sample_length + 1) + else: + # 如果 mask 全部为0,则完全随机 + start_id = np.random.randint(0, num_slices - self.sample_length + 1) + + end_id = start_id + self.sample_length # 保证长度严格等于 sample_length + img_data = img_data[start_id:end_id] + organ_mask = organ_mask[start_id:end_id] + disease_mask = disease_mask[start_id:end_id] + # img_data = img_data[start_id] + # organ_mask = organ_mask[start_id] + # disease_mask = disease_mask[start_id] + + organ_disease_mask = copy.deepcopy(organ_mask) + organ_disease_mask[disease_mask>0] = disease_class+100 + + organ_mask = (((organ_mask ) / 300)).astype(np.float32) * 2 -1 + organ_disease_mask = (((organ_disease_mask ) / 300)).astype(np.float32) * 2 -1 + + hu_min, hu_max = -1000, 1000 + img_data = np.clip(img_data, hu_min, hu_max) + img_data = (((img_data ) / 1000)).astype(np.float32) + + img_data = torch.tensor(img_data) + organ_mask = torch.tensor(organ_mask) + organ_disease_mask = torch.tensor(organ_disease_mask) + + img_data = img_data/2.0 + organ_mask = organ_mask/2.0 + organ_disease_mask = organ_disease_mask/2.0 + + img_data = img_data.unsqueeze(0) + organ_mask = organ_mask.unsqueeze(0) + organ_disease_mask = organ_disease_mask.unsqueeze(0) + + + # img_data=img_data.repeat(3,1,1,1) + # organ_mask=organ_mask.repeat(3,1,1,1) + # organ_disease_mask=organ_disease_mask.repeat(3,1,1,1) + + + # return img_data, organ_mask, organ_disease_mask, target_spacing, file_name + # return img_data, organ_mask, target_spacing, file_name + return img_data, organ_disease_mask, target_spacing, file_name + + + + def __getitem__(self, index): + ct_file, organ_file, disease_file, input_text, disease_mask_channel, disease_label, disease_class = self.samples[index] + video_tensor, volume_seg, spacing, file_name = self.nii_to_tensor(ct_file, organ_file, disease_file, disease_mask_channel, disease_label, disease_class) + input_text = str(input_text) + input_text = input_text.replace('"', '') + input_text = input_text.replace('\'', '') + input_text = input_text.replace('(', '') + input_text = input_text.replace(')', '') + + # return video_tensor, input_text + example = {} + example['name'] = file_name + example['volume_data'] = video_tensor.float() + example['volume_seg'] = volume_seg.float() + example['spacing'] = spacing + example['input_text'] = input_text + return example \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/ct_clip_data_train.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/ct_clip_data_train.py new file mode 100644 index 0000000000000000000000000000000000000000..2996c2a3cee767aee0a68a397171360b4debceea --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/ct_clip_data_train.py @@ -0,0 +1,352 @@ +import os +import glob +import json +import torch +import pandas as pd +import numpy as np +from PIL import Image +from torch.utils.data import Dataset +import torchvision.transforms as transforms +from functools import partial +import torch.nn.functional as F +import nibabel as nib +import tqdm +import copy +def resize_array(array, current_spacing): + """ + Resize the array to match the target spacing. + + Args: + array (torch.Tensor): Input array to be resized. + current_spacing (tuple): Current voxel spacing (z_spacing, xy_spacing, xy_spacing). + target_spacing (tuple): Target voxel spacing (target_z_spacing, target_x_spacing, target_y_spacing). + + Returns: + np.ndarray: Resized array. + """ + # Calculate new dimensions + original_shape = array.shape[2:] + + + new_shape = [original_shape[0], 512, 512] + scaling_factors = [new_shape[i] / original_shape[i] for i in range(len(original_shape))] + resized_spacing = [current_spacing[i] / scaling_factors[i] for i in range(len(original_shape))] + # Resize the array + resized_array = F.interpolate(array, size=new_shape, mode='trilinear', align_corners=False).cpu().numpy() + # breakpoint() + return resized_array, resized_spacing + +def resize_mask(array, current_spacing): + """ + Resize the array to match the target spacing. + + Args: + array (torch.Tensor): Input array to be resized. + current_spacing (tuple): Current voxel spacing (z_spacing, xy_spacing, xy_spacing). + target_spacing (tuple): Target voxel spacing (target_z_spacing, target_x_spacing, target_y_spacing). + + Returns: + np.ndarray: Resized array. + """ + # Calculate new dimensions + original_shape = array.shape[2:] + + new_shape = [original_shape[0], 512, 512] + + resized_array = F.interpolate(array, size=new_shape, mode='nearest').cpu().numpy() + # breakpoint() + return resized_array + +class CTReportDataset(Dataset): + def __init__(self, data_folder, csv_file, min_slices=20, resize_dim=500, force_num_frames=True): + self.data_folder = data_folder + self.min_slices = min_slices + self.accession_to_text = self.load_accession_text(csv_file) + self.paths=[] + self.samples = self.prepare_samples() + percent = 80 + num_files = int((len(self.samples) * percent) / 100) + #num_files = 2286 + self.samples = self.samples[:num_files] + print(len(self.samples)) + self.count = 0 + + + #self.resize_dim = resize_dim + #self.resize_transform = transforms.Resize((resize_dim, resize_dim)) + self.transform = transforms.Compose([ + transforms.Resize((resize_dim,resize_dim)), + transforms.ToTensor() + ]) + self.nii_to_tensor = partial(self.nii_img_to_tensor, transform = self.transform) + self.sample_length=65 + + def load_accession_text(self, csv_file): + df = pd.read_csv(csv_file) + accession_to_text = {} + for index, row in df.iterrows(): + # breakpoint() + accession_to_text[row['VolumeName']] = row["Findings_EN"],row['Impressions_EN'] + + return accession_to_text + + + def prepare_samples(self): + samples = [] + import json + + # with open('/sd/qichen/full_ct_gen/CT-RATE/train_no_disease_2_checked.json', 'r') as f: + # items = [json.loads(line) for line in f] + + # # 2. 提取所有 volume_path + # volume_paths = [item['volume_path'] + # for item in items + # if 'volume_path' in item] + # organ_masks = [item['organ_mask'] + # for item in items + # if 'organ_mask' in item] + # for nii_file, organ_mask in tqdm.tqdm(zip(volume_paths, organ_masks)): + + # accession_number = nii_file.split("/")[-1] + + # seg_file = '/sd/shuhan/CT-RATE/'+ organ_mask + # nii_file = '/sd/shuhan/CT-RATE/'+nii_file + + # if accession_number not in self.accession_to_text: + # continue + + # impression_text = self.accession_to_text[accession_number] + + # if impression_text == "Not given.": + # impression_text="" + + # input_text_concat = "" + # for text in impression_text: + # input_text_concat = input_text_concat + str(text) + # input_text_concat = impression_text[0] + # input_text = f'{impression_text}' + # samples.append((nii_file, seg_file, None, input_text_concat, None, None, None)) + # self.paths.append(nii_file) + + with open('/sd/qichen/full_ct_gen/CT-RATE/disease_mask_json/disease_train_single_prompt_checked_label.json', 'r') as f: + items = [json.loads(line) for line in f] + + # 2. 提取所有 volume_path + volume_paths = [item['volume_path'] + for item in items + if 'volume_path' in item] + + effusion_mask_paths = [item['disease_mask'] + for item in items + if 'disease_mask' in item] + + organ_mask_paths = [item['organ_mask'] + for item in items + if 'organ_mask' in item] + + disease_findings_list = [item['disease_findings'] + for item in items + if 'disease_findings' in item] + + disease_mask_channels = [item['disease_mask_channel'] + for item in items + if 'disease_mask_channel' in item] + disease_labels = [item['disease_label'] + for item in items + if 'disease_label' in item] + disease_classes = [item['disease_class'] + for item in items + if 'disease_class' in item] + + for (ct_file, organ_mask_file, disease_mask_file, disease_findings, disease_mask_channel, disease_label, disease_class) in tqdm.tqdm(zip(volume_paths, organ_mask_paths, effusion_mask_paths, disease_findings_list, disease_mask_channels, disease_labels, disease_classes)): + + accession_number = organ_mask_file.split("/")[-1] + + ct_file = '/sd/shuhan/CT-RATE/'+ct_file + organ_file = '/sd/shuhan/CT-RATE/'+organ_mask_file + disease_file = '/sd/shuhan/CT-RATE/'+disease_mask_file + + impression_text = disease_findings + + samples.append((ct_file, organ_file, disease_file, impression_text, disease_mask_channel, disease_label, disease_class)) + + return samples + + def __len__(self): + return len(self.samples) + + + def nii_img_to_tensor(self, ct_file, organ_file, disease_file, disease_mask_channel, disease_label, disease_class, transform): + if disease_file == None: + + nii_img = nib.load(str(ct_file)) + img_data = nii_img.get_fdata() + + df = pd.read_csv("/sd/shuhan/CT-RATE/metadata/all_metadata.csv") #select the metadata + file_name = ct_file.split("/")[-1] + row = df[df['VolumeName'] == file_name] + slope = float(row["RescaleSlope"].iloc[0]) + intercept = float(row["RescaleIntercept"].iloc[0]) + xy_spacing = float(row["XYSpacing"].iloc[0][1:][:-2].split(",")[0]) + z_spacing = float(row["ZSpacing"].iloc[0]) + + nii_seg = nib.load(str(organ_file)) + mask_data = nii_seg.get_fdata() + + current = (z_spacing, xy_spacing, xy_spacing) + + img_data = img_data.transpose(2, 0, 1) + tensor = torch.tensor(img_data) + tensor = tensor.unsqueeze(0).unsqueeze(0) + img_data, target_spacing = resize_array(tensor, current) + img_data = img_data[0][0] + + mask_data = mask_data.transpose(2, 0, 1) + tensor = torch.tensor(mask_data) + tensor = tensor.unsqueeze(0).unsqueeze(0) + mask_data = resize_mask(tensor, current) + mask_data = mask_data[0][0] + # breakpoint() + assert mask_data.shape == img_data.shape + fg_mask = (mask_data>0).astype(np.uint8) + mask_data = (((mask_data ) / 300)).astype(np.float32) * 2 -1 + + hu_min, hu_max = -1000, 1000 + img_data = np.clip(img_data, hu_min, hu_max) + + bg_np = np.ones_like(img_data) * -1000 + + img_data = img_data*fg_mask + bg_np*(1-fg_mask) + + + img_data = (((img_data ) / 1000)).astype(np.float32) + start_id = np.random.randint(0, img_data.shape[0]-self.sample_length) + img_data = img_data[start_id:start_id+self.sample_length] + mask_data = mask_data[start_id:start_id+self.sample_length] + + # slices=[] + img_data = img_data/2.0 + mask_data = mask_data/2.0 + + img_data = torch.tensor(img_data) + mask_data = torch.tensor(mask_data) + + + img_data = img_data.unsqueeze(0) + mask_data = mask_data.unsqueeze(0) + + return img_data, mask_data, target_spacing, file_name + else: + ct_nii = nib.load(str(ct_file)) + img_data = ct_nii.get_fdata() + + df = pd.read_csv("/sd/shuhan/CT-RATE/metadata/all_metadata.csv") #select the metadata + file_name = ct_file.split("/")[-1] + row = df[df['VolumeName'] == file_name] + slope = float(row["RescaleSlope"].iloc[0]) + intercept = float(row["RescaleIntercept"].iloc[0]) + xy_spacing = float(row["XYSpacing"].iloc[0][1:][:-2].split(",")[0]) + z_spacing = float(row["ZSpacing"].iloc[0]) + + current = (z_spacing, xy_spacing, xy_spacing) + img_data = img_data.transpose(2, 0, 1) + tensor = torch.tensor(img_data) + tensor = tensor.unsqueeze(0).unsqueeze(0) + img_data, target_spacing = resize_array(tensor, current) + img_data = img_data[0][0] + + organ_nii = nib.load(str(organ_file)) + organ_mask = organ_nii.get_fdata() + organ_mask = organ_mask.transpose(2, 0, 1) + tensor = torch.tensor(organ_mask) + tensor = tensor.unsqueeze(0).unsqueeze(0) + organ_mask = resize_mask(tensor, current) + organ_mask = organ_mask[0][0] + + disease_nii = nib.load(str(disease_file)) + disease_mask = disease_nii.get_fdata()[int(disease_mask_channel)] + disease_mask = disease_mask.transpose(2, 0, 1) + tensor = torch.tensor(disease_mask) + tensor = tensor.unsqueeze(0).unsqueeze(0) + disease_mask = resize_mask(tensor, current) + disease_mask = disease_mask[0][0] + + assert organ_mask.shape == img_data.shape + + num_slices = img_data.shape[0] + + # 找到 mask>0 的切片索引 + valid_indices = np.where(disease_mask.sum(axis=(1, 2)) > 0)[0] + + if len(valid_indices) > 0: + # 只保留能完整取 sample_length 的起点 + valid_start_ids = valid_indices[valid_indices <= num_slices - self.sample_length] + + if len(valid_start_ids) > 0: + start_id = np.random.choice(valid_start_ids) + else: + # 如果没有合法起点就退化到随机,但保证能取 sample_length + start_id = np.random.randint(0, num_slices - self.sample_length + 1) + else: + # 如果 mask 全部为0,则完全随机 + start_id = np.random.randint(0, num_slices - self.sample_length + 1) + + end_id = start_id + self.sample_length # 保证长度严格等于 sample_length + img_data = img_data[start_id:end_id] + organ_mask = organ_mask[start_id:end_id] + disease_mask = disease_mask[start_id:end_id] + # img_data = img_data[start_id] + # organ_mask = organ_mask[start_id] + # disease_mask = disease_mask[start_id] + + organ_disease_mask = copy.deepcopy(organ_mask) + organ_disease_mask[disease_mask>0] = disease_class+100 + + organ_mask = (((organ_mask ) / 300)).astype(np.float32) * 2 -1 + organ_disease_mask = (((organ_disease_mask ) / 300)).astype(np.float32) * 2 -1 + + hu_min, hu_max = -1000, 1000 + img_data = np.clip(img_data, hu_min, hu_max) + img_data = (((img_data ) / 1000)).astype(np.float32) + + img_data = torch.tensor(img_data) + organ_mask = torch.tensor(organ_mask) + organ_disease_mask = torch.tensor(organ_disease_mask) + + img_data = img_data/2.0 + organ_mask = organ_mask/2.0 + organ_disease_mask = organ_disease_mask/2.0 + + img_data = img_data.unsqueeze(0) + organ_mask = organ_mask.unsqueeze(0) + organ_disease_mask = organ_disease_mask.unsqueeze(0) + + + # img_data=img_data.repeat(3,1,1,1) + # organ_mask=organ_mask.repeat(3,1,1,1) + # organ_disease_mask=organ_disease_mask.repeat(3,1,1,1) + + + # return img_data, organ_mask, organ_disease_mask, target_spacing, file_name + # return img_data, organ_mask, target_spacing, file_name + return img_data, organ_disease_mask, target_spacing, file_name + + + + def __getitem__(self, index): + ct_file, organ_file, disease_file, input_text, disease_mask_channel, disease_label, disease_class = self.samples[index] + video_tensor, volume_seg, spacing, file_name = self.nii_to_tensor(ct_file, organ_file, disease_file, disease_mask_channel, disease_label, disease_class) + input_text = str(input_text) + input_text = input_text.replace('"', '') + input_text = input_text.replace('\'', '') + input_text = input_text.replace('(', '') + input_text = input_text.replace(')', '') + + # return video_tensor, input_text + example = {} + example['name'] = file_name + example['volume_data'] = video_tensor.float() + example['volume_seg'] = volume_seg.float() + example['spacing'] = spacing + example['input_text'] = input_text + return example \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/mask_generation.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/mask_generation.py new file mode 100644 index 0000000000000000000000000000000000000000..c8ac71405628b5dd6fdc9ab2c599ead4c260845b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/mask_generation.py @@ -0,0 +1,61 @@ +import os +import numpy as np +from skimage.transform import resize +import cv2 +from torch.utils.data import Dataset +import copy + +class volume_base(Dataset): + def __init__(self, + data_root, + data_name, + data_file, + data_repeat=1 + ): + + self.data_root = data_root + planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres + data_root = os.path.join(data_root, data_name , planner) + file_list = [] + for line in open(data_file): + name = line.strip().split()[1].split('.nii.gz')[0] + name = name.split('/')[-1] + file_list.append(name) + + self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list] + + self._length = len(self.list) + self.sample_length=16 + self.sample=False + self._data_repeat = data_repeat + + + def __len__(self): + return self._length * self._data_repeat + + def __getitem__(self, i): + i = i % self._length + + npz_file = os.path.join(self.data_root, self.list[i]) + seg_npz = np.load(npz_file)['seg'][0] + + volume_seg = volume_seg.astype(np.float32) + + return volume_seg + +class volume_train(volume_base): + def __init__(self, data_file='data_split/liver/train.txt', **kwargs): + super().__init__(data_file=data_file, **kwargs) + + +class volume_val(volume_base): + def __init__(self, data_file='data_split/liver/eval.txt', **kwargs): + super().__init__(data_file=data_file, **kwargs) + + # def __len__(self): + # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000 + +class volume_test(volume_base): + def __init__(self, data_file='data_splits/test.txt', **kwargs): + super().__init__(**kwargs) + \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset.py new file mode 100644 index 0000000000000000000000000000000000000000..e9387be62d79305474c66be20b32ce6b5d8e9014 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset.py @@ -0,0 +1,103 @@ +import os +import numpy as np +# from skimage.transform import resize +import cv2 +from torch.utils.data import Dataset +import copy +from batchgenerators.utilities.file_and_folder_operations import join, load_json, isfile, save_json, maybe_mkdir_p + + +class slice_base(Dataset): + def __init__(self, + data_root, + data_name, + data_repeat=1, + planner='nnUNetPlans_3d_fullres', + data_file='data_split/liver/train.txt', + phase='train', + ): + + self.data_root = data_root + # planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres + data_root = os.path.join(data_root, data_name , planner) + # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')] + + file_list = [] + if 'liver' in data_file: + for line in open(data_file): + name = line.strip().split()[1].split('.nii.gz')[0] + name = name.split('/')[-1] + file_list.append(name) + else: + file_list = load_json(data_file)[0][phase] + + self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list] + + self._length = len(self.list) + self._data_repeat = data_repeat + + + def __len__(self): + return self._length * self._data_repeat + + def __getitem__(self, i): + i = i % self._length + + npz_file = os.path.join(self.data_root, self.list[i]) + data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg'] + seg_npz = np.load(npz_file)['seg'][0] + # print('data_npz', data_npz.shape) + # print('seg_npz', seg_npz.shape) + # breakpoint() + pos_id = np.random.randint(0, data_npz.shape[0]) + # pos_id = data_npz.shape[0]//2 + slice_data = data_npz[pos_id] + slice_seg = seg_npz[pos_id] + + # slice_data = np.pad(slice_data,((0,0),(8,8),(8,8)),'constant') + # breakpoint() + slice_data[slice_data <= -175] = -175 + slice_data[slice_data >= 250] = 250 + # breakpoint() + slice_data = (slice_data+175)/425.0 + + # tumor_mask = (slice_seg==2).astype(np.float32) + slice_seg = slice_seg.astype(np.float32) + foreground_mask = (slice_seg>0).astype(np.float32) + masked_data = (1-foreground_mask)*slice_data + + slice_data = slice_data[:,:,None].astype(np.float32) + masked_data = masked_data[:,:,None].astype(np.float32) + + # tumor_mask = resize(tumor_mask, (64,64), order=0) + slice_seg = cv2.resize(slice_seg,(64,64),interpolation=cv2.INTER_NEAREST) + slice_seg = slice_seg[:,:,None].astype(np.float32) + # print(np.unique(slice_seg)) + # breakpoint() + if (slice_data.shape[0] != 512) or (slice_data.shape[1] != 512): + print(self.list[i],slice_data.shape,masked_data.shape,slice_seg.shape) + example = {} + example['name'] = self.list[i].split('/')[-1].split('.')[0] + # example['pos_id'] = pos_id + example['slice_data'] = slice_data * 2 - 1 + example['masked_data'] = masked_data * 2 - 1 + example['tumor_mask'] = slice_seg + # breakpoint() + return example + +class slice_train(slice_base): + def __init__(self, phase='train', **kwargs): + super().__init__(phase=phase, **kwargs) + + +class slice_val(slice_base): + def __init__(self, phase='val', **kwargs): + super().__init__(phase=phase, **kwargs) + + # def __len__(self): + # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000 + +class slice_test(slice_base): + def __init__(self, data_file='data_splits/test.txt', **kwargs): + super().__init__(**kwargs) + \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset__.py new file mode 100644 index 0000000000000000000000000000000000000000..2e53d2b753b22444d3415c651efad0771dca662d --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset__.py @@ -0,0 +1,81 @@ +import os +import numpy as np +# from skimage.transform import resize +import cv2 +from torch.utils.data import Dataset +import copy + +class slice_base(Dataset): + def __init__(self, + data_root, + data_name, + # data_file, + data_repeat=1 + ): + + self.data_root = data_root + planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres + data_root = os.path.join(data_root, data_name , planner) + self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')] + self.list.sort() + # breakpoint() + self.list = self.list[:5] + # file_list = [] + # with open(data_file, 'r') as f: + # file_list = f.readlines() + # file_list = [i.split('\n')[0] for i in file_list] + # self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list] + # breakpoint() + self._length = len(self.list) + self._data_repeat = data_repeat + + + def __len__(self): + return self._length * self._data_repeat + + def __getitem__(self, i): + i = i % self._length + + npz_file = os.path.join(self.data_root, self.list[i]) + data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg'] + seg_npz = np.load(npz_file)['seg'][0] + + # pos_id = np.random.randint(0, data_npz.shape[0]) + # pos_id = data_npz.shape[0]//2 + # slice_data = data_npz[pos_id] + # slice_seg = seg_npz[pos_id] + + # slice_data = np.pad(slice_data,((0,0),(8,8),(8,8)),'constant') + # breakpoint() + data_npz[data_npz <= -175] = -175 + data_npz[data_npz >= 250] = 250 + # breakpoint() + data_npz = (data_npz+175)/425.0 + + data_npz = data_npz[:,:,:,None].astype(np.float32) + + # breakpoint() + example = {} + example['name'] = self.list[i].split('/')[-1].split('.')[0] + # example['pos_id'] = pos_id + example['slice_data'] = data_npz * 2 - 1 + + # breakpoint() + return example + +class slice_train(slice_base): + def __init__(self, **kwargs): + super().__init__( **kwargs) + + +class slice_val(slice_base): + def __init__(self, **kwargs): + super().__init__(**kwargs) + + # def __len__(self): + # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000 + +class slice_test(slice_base): + def __init__(self, data_file='data_splits/test.txt', **kwargs): + super().__init__(**kwargs) + \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_28class.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_28class.py new file mode 100644 index 0000000000000000000000000000000000000000..de79231129330e28794129304585ca12e9b1476c --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_28class.py @@ -0,0 +1,99 @@ +import os +import numpy as np +from skimage.transform import resize +import cv2 +from torch.utils.data import Dataset +import copy +from batchgenerators.utilities.file_and_folder_operations import load_json + +class slice_base(Dataset): + def __init__(self, + data_root, + data_name, + data_file, + data_repeat=1, + phase='train', + planner='nnUNetPlans_3d_fullres' + ): + + self.data_root = data_root + # planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres + data_root = os.path.join(data_root, data_name , planner) + # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')] + + data_splits = load_json(data_file) + file_list = data_splits[0][phase] + # breakpoint() + self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list] + + self._length = len(self.list) + self._data_repeat = data_repeat + + + def __len__(self): + return self._length * self._data_repeat + + def __getitem__(self, i): + i = i % self._length + + npz_file = os.path.join(self.data_root, self.list[i]) + data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg'] + seg_npz = np.load(npz_file)['seg'][0] + # print(npz_file, data_npz.shape, seg_npz.shape) + # breakpoint() + pos_id = np.random.randint(0, data_npz.shape[0]) + # pos_id = data_npz.shape[0]//2 + slice_data = data_npz[pos_id] + slice_seg = seg_npz[pos_id] + + # slice_data = np.pad(slice_data,((0,0),(8,8),(8,8)),'constant') + # breakpoint() + slice_data[slice_data <= -175] = -175 + slice_data[slice_data >= 250] = 250 + # breakpoint() + slice_data = (slice_data+175)/425.0 + + + # slice_data = resize(slice_data, (512,512)) + # slice_seg = resize(slice_seg.astype(np.float32), (512,512), order=0, anti_aliasing=False) + # breakpoint() + + # tumor_mask = (slice_seg==2).astype(np.float32) + slice_seg = slice_seg.astype(np.float32) + foreground_mask = (slice_seg>0).astype(np.float32) + masked_data = (1-foreground_mask)*slice_data + + slice_data = slice_data[:,:,None].astype(np.float32) + masked_data = masked_data[:,:,None].astype(np.float32) + + # breakpoint() + # tumor_mask = resize(tumor_mask, (64,64), order=0) + slice_seg = cv2.resize(slice_seg,(64,64),interpolation=cv2.INTER_NEAREST) + slice_seg = slice_seg[:,:,None].astype(np.float32) + # print(np.unique(slice_seg)) + # breakpoint() + example = {} + example['name'] = self.list[i].split('/')[-1].split('.')[0] + # example['pos_id'] = pos_id + example['slice_data'] = slice_data * 2 - 1 + example['masked_data'] = masked_data * 2 - 1 + example['tumor_mask'] = slice_seg + # breakpoint() + return example + +class slice_train(slice_base): + def __init__(self, data_file='data_split/splits_final2.json', phase='train', **kwargs): + super().__init__(data_file=data_file, **kwargs) + + +class slice_val(slice_base): + def __init__(self, data_file='data_split/splits_final2.json', phase='val', **kwargs): + super().__init__(data_file=data_file,phase=phase, **kwargs) + + # def __len__(self): + # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000 + +class slice_test(slice_base): + def __init__(self, data_file='data_splits/test.txt', **kwargs): + super().__init__(**kwargs) + \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_28class_randomclass.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_28class_randomclass.py new file mode 100644 index 0000000000000000000000000000000000000000..7d2095b5a685e098685ee2028c817634cf28feb4 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_28class_randomclass.py @@ -0,0 +1,127 @@ +import os +import numpy as np +from skimage.transform import resize +import cv2 +from torch.utils.data import Dataset +import copy +# from batchgenerators.utilities.file_and_folder_operations import load_json + +import random +import itertools + +def get_random_classes_from_mask(mask): + # 分析 mask 中有哪些类别 + unique_classes = np.unique(mask) + unique_classes = unique_classes[unique_classes != 0] # 去除背景类(假设背景类为0) + + # 获取所有可能的类别组合 + all_combinations = [] + for i in range(1, len(unique_classes) + 1): + all_combinations.extend(itertools.combinations(unique_classes, i)) + + # 随机选择一个组合 + selected_combination = random.choice(all_combinations) + return selected_combination + +def get_filtered_mask(mask, selected_classes): + # 创建只包含选定类别的 mask + filtered_mask = np.isin(mask, selected_classes) * mask + return filtered_mask + +class slice_base(Dataset): + def __init__(self, + data_root, + data_name, + data_repeat=1, + phase='train', + planner='nnUNetPlans_3d_fullres', + data_file=None + ): + + self.data_root = data_root + # planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres + data_root = os.path.join(data_root, data_name , planner) + # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')] + + data_splits = load_json(data_file) + file_list = data_splits[0][phase] + # breakpoint() + self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list] + + self._length = len(self.list) + self._data_repeat = data_repeat + self.class_num = 28 + + def __len__(self): + return self._length * self._data_repeat + + def __getitem__(self, i): + i = i % self._length + + npz_file = os.path.join(self.data_root, self.list[i]) + data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg'] + seg_npz = np.load(npz_file)['seg'][0] + # print(npz_file, data_npz.shape, seg_npz.shape) + # breakpoint() + pos_id = np.random.randint(0, data_npz.shape[0]) + slice_data = data_npz[pos_id] + slice_seg = seg_npz[pos_id] + + # breakpoint() + slice_data[slice_data <= -175] = -175 + slice_data[slice_data >= 250] = 250 + slice_data = (slice_data+175)/425.0 + + # print(np.unique(slice_seg)) + if len(np.unique(slice_seg)) > 1: + selected_classes = get_random_classes_from_mask(slice_seg) + slice_seg = get_filtered_mask(slice_seg, selected_classes) + # print(np.unique(slice_seg)) + + # breakpoint() + + # slice_data = resize(slice_data, (512,512)) + # slice_seg = resize(slice_seg.astype(np.float32), (512,512), order=0, anti_aliasing=False) + # breakpoint() + + # tumor_mask = (slice_seg==2).astype(np.float32) + slice_seg = slice_seg.astype(np.float32) + foreground_mask = (slice_seg>0).astype(np.float32) + masked_data = (1-foreground_mask)*slice_data + + slice_data = slice_data[:,:,None].astype(np.float32) + masked_data = masked_data[:,:,None].astype(np.float32) + + # breakpoint() + # tumor_mask = resize(tumor_mask, (64,64), order=0) + slice_seg = cv2.resize(slice_seg,(64,64),interpolation=cv2.INTER_NEAREST) + slice_seg = slice_seg[:,:,None].astype(np.float32) + if (slice_data.shape[0] != 512) or (slice_data.shape[1] != 512): + print(self.list[i],slice_data.shape,masked_data.shape,slice_seg.shape) + # print(np.unique(slice_seg)) + # breakpoint() + example = {} + example['name'] = self.list[i].split('/')[-1].split('.')[0] + # example['pos_id'] = pos_id + example['slice_data'] = slice_data * 2 - 1 + example['masked_data'] = masked_data * 2 - 1 + example['tumor_mask'] = slice_seg + # breakpoint() + return example + +class slice_train(slice_base): + def __init__(self, phase='train', **kwargs): + super().__init__(**kwargs) + + +class slice_val(slice_base): + def __init__(self, phase='val', **kwargs): + super().__init__(phase=phase, **kwargs) + + # def __len__(self): + # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000 + +class slice_test(slice_base): + def __init__(self, data_file='data_splits/test.txt', **kwargs): + super().__init__(**kwargs) + \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_28class_randomclass_kl4.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_28class_randomclass_kl4.py new file mode 100644 index 0000000000000000000000000000000000000000..433c1f35318ec318496c4397c1b6b3bdb1c73831 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_28class_randomclass_kl4.py @@ -0,0 +1,127 @@ +import os +import numpy as np +from skimage.transform import resize +import cv2 +from torch.utils.data import Dataset +import copy +from batchgenerators.utilities.file_and_folder_operations import load_json + +import random +import itertools + +def get_random_classes_from_mask(mask): + # 分析 mask 中有哪些类别 + unique_classes = np.unique(mask) + unique_classes = unique_classes[unique_classes != 0] # 去除背景类(假设背景类为0) + + # 获取所有可能的类别组合 + all_combinations = [] + for i in range(1, len(unique_classes) + 1): + all_combinations.extend(itertools.combinations(unique_classes, i)) + + # 随机选择一个组合 + selected_combination = random.choice(all_combinations) + return selected_combination + +def get_filtered_mask(mask, selected_classes): + # 创建只包含选定类别的 mask + filtered_mask = np.isin(mask, selected_classes) * mask + return filtered_mask + +class slice_base(Dataset): + def __init__(self, + data_root, + data_name, + data_repeat=1, + phase='train', + planner='nnUNetPlans_3d_fullres', + data_file=None + ): + + self.data_root = data_root + # planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres + data_root = os.path.join(data_root, data_name , planner) + # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')] + + data_splits = load_json(data_file) + file_list = data_splits[0][phase] + # breakpoint() + self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list] + + self._length = len(self.list) + self._data_repeat = data_repeat + self.class_num = 28 + + def __len__(self): + return self._length * self._data_repeat + + def __getitem__(self, i): + i = i % self._length + + npz_file = os.path.join(self.data_root, self.list[i]) + data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg'] + seg_npz = np.load(npz_file)['seg'][0] + # print(npz_file, data_npz.shape, seg_npz.shape) + # breakpoint() + pos_id = np.random.randint(0, data_npz.shape[0]) + slice_data = data_npz[pos_id] + slice_seg = seg_npz[pos_id] + + # breakpoint() + slice_data[slice_data <= -175] = -175 + slice_data[slice_data >= 250] = 250 + slice_data = (slice_data+175)/425.0 + + # print(np.unique(slice_seg)) + if len(np.unique(slice_seg)) > 1: + selected_classes = get_random_classes_from_mask(slice_seg) + slice_seg = get_filtered_mask(slice_seg, selected_classes) + # print(np.unique(slice_seg)) + + # breakpoint() + + # slice_data = resize(slice_data, (512,512)) + # slice_seg = resize(slice_seg.astype(np.float32), (512,512), order=0, anti_aliasing=False) + # breakpoint() + + # tumor_mask = (slice_seg==2).astype(np.float32) + slice_seg = slice_seg.astype(np.float32) + foreground_mask = (slice_seg>0).astype(np.float32) + masked_data = (1-foreground_mask)*slice_data + + slice_data = slice_data[:,:,None].astype(np.float32) + masked_data = masked_data[:,:,None].astype(np.float32) + + # breakpoint() + # tumor_mask = resize(tumor_mask, (64,64), order=0) + slice_seg = cv2.resize(slice_seg,(128,128),interpolation=cv2.INTER_NEAREST) + slice_seg = slice_seg[:,:,None].astype(np.float32) + if (slice_data.shape[0] != 512) or (slice_data.shape[1] != 512): + print(self.list[i],slice_data.shape,masked_data.shape,slice_seg.shape) + # print(np.unique(slice_seg)) + # breakpoint() + example = {} + example['name'] = self.list[i].split('/')[-1].split('.')[0] + # example['pos_id'] = pos_id + example['slice_data'] = slice_data * 2 - 1 + example['masked_data'] = masked_data * 2 - 1 + example['tumor_mask'] = slice_seg + # breakpoint() + return example + +class slice_train(slice_base): + def __init__(self, phase='train', **kwargs): + super().__init__(**kwargs) + + +class slice_val(slice_base): + def __init__(self, phase='val', **kwargs): + super().__init__(phase=phase, **kwargs) + + # def __len__(self): + # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000 + +class slice_test(slice_base): + def __init__(self, data_file='data_splits/test.txt', **kwargs): + super().__init__(**kwargs) + \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_resize.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_resize.py new file mode 100644 index 0000000000000000000000000000000000000000..c6a1947ac15fb14f791800d0746a7ae1e796e429 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_resize.py @@ -0,0 +1,97 @@ +import os +import numpy as np +from skimage.transform import resize +import cv2 +from torch.utils.data import Dataset +import copy +from batchgenerators.utilities.file_and_folder_operations import load_json + +class slice_base(Dataset): + def __init__(self, + data_root, + data_name, + data_file, + data_repeat=1, + phase='train' + ): + + self.data_root = data_root + planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres + data_root = os.path.join(data_root, data_name , planner) + # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')] + + data_splits = load_json(data_file) + file_list = data_splits[0][phase] + # breakpoint() + self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list] + + self._length = len(self.list) + self._data_repeat = data_repeat + + + def __len__(self): + return self._length * self._data_repeat + + def __getitem__(self, i): + i = i % self._length + + npz_file = os.path.join(self.data_root, self.list[i]) + data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg'] + seg_npz = np.load(npz_file)['seg'][0] + # breakpoint() + pos_id = np.random.randint(0, data_npz.shape[0]) + # pos_id = data_npz.shape[0]//2 + slice_data = data_npz[pos_id] + slice_seg = seg_npz[pos_id] + + # slice_data = np.pad(slice_data,((0,0),(8,8),(8,8)),'constant') + # breakpoint() + slice_data[slice_data <= -175] = -175 + slice_data[slice_data >= 250] = 250 + # breakpoint() + slice_data = (slice_data+175)/425.0 + + + slice_data = resize(slice_data, (512,512)) + slice_seg = resize(slice_seg.astype(np.float32), (512,512), order=0, anti_aliasing=False) + # breakpoint() + + # tumor_mask = (slice_seg==2).astype(np.float32) + slice_seg = slice_seg.astype(np.float32) + foreground_mask = (slice_seg>0).astype(np.float32) + masked_data = (1-foreground_mask)*slice_data + + slice_data = slice_data[:,:,None].astype(np.float32) + masked_data = masked_data[:,:,None].astype(np.float32) + + # breakpoint() + # tumor_mask = resize(tumor_mask, (64,64), order=0) + slice_seg = cv2.resize(slice_seg,(64,64),interpolation=cv2.INTER_NEAREST) + slice_seg = slice_seg[:,:,None].astype(np.float32) + # print(np.unique(slice_seg)) + # breakpoint() + example = {} + example['name'] = self.list[i].split('/')[-1].split('.')[0] + # example['pos_id'] = pos_id + example['slice_data'] = slice_data * 2 - 1 + example['masked_data'] = masked_data * 2 - 1 + example['tumor_mask'] = slice_seg + # breakpoint() + return example + +class slice_train(slice_base): + def __init__(self, data_file='data_split/splits_final.json', phase='train', **kwargs): + super().__init__(data_file=data_file, **kwargs) + + +class slice_val(slice_base): + def __init__(self, data_file='data_split/splits_final.json', phase='val', **kwargs): + super().__init__(data_file=data_file,phase=phase, **kwargs) + + # def __len__(self): + # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000 + +class slice_test(slice_base): + def __init__(self, data_file='data_splits/test.txt', **kwargs): + super().__init__(**kwargs) + \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_infer.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_infer.py new file mode 100644 index 0000000000000000000000000000000000000000..4416966f0e6355055edeb71164fb956153aaae14 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_infer.py @@ -0,0 +1,94 @@ +import os +import numpy as np +# from skimage.transform import resize +import cv2 +from torch.utils.data import Dataset +import copy + +class slice_base(Dataset): + def __init__(self, + data_root, + data_name, + data_file, + data_repeat=1 + ): + + self.data_root = data_root + planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres + data_root = os.path.join(data_root, data_name , planner) + # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')] + file_list = [] + for line in open(data_file): + name = line.strip().split()[1].split('.nii.gz')[0] + name = name.split('/')[-1] + file_list.append(name) + # breakpoint() + self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list] + + self._length = len(self.list) + self._data_repeat = data_repeat + + + def __len__(self): + return self._length * self._data_repeat + + def __getitem__(self, i): + i = i % self._length + + npz_file = os.path.join(self.data_root, self.list[i]) + data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg'] + seg_npz = np.load(npz_file)['seg'][0] + # breakpoint() + # pos_id = np.random.randint(0, data_npz.shape[0]) + # pos_id = data_npz.shape[0]//2 + pos_id_list = np.where(np.any(data_npz==2, axis=(1, 2)))[0] + pos_id = pos_id_list[len(pos_id_list)//2] + # breakpoint() + slice_data = data_npz[pos_id] + slice_seg = seg_npz[pos_id] + # breakpoint() + # slice_data = np.pad(slice_data,((0,0),(8,8),(8,8)),'constant') + # breakpoint() + slice_data[slice_data <= -175] = -175 + slice_data[slice_data >= 250] = 250 + # breakpoint() + slice_data = (slice_data+175)/425.0 + + # tumor_mask = (slice_seg==2).astype(np.float32) + slice_seg = slice_seg.astype(np.float32) + foreground_mask = (slice_seg>0).astype(np.float32) + masked_data = (1-foreground_mask)*slice_data + + slice_data = slice_data[:,:,None].astype(np.float32) + masked_data = masked_data[:,:,None].astype(np.float32) + + # tumor_mask = resize(tumor_mask, (64,64), order=0) + slice_seg = cv2.resize(slice_seg,(64,64),interpolation=cv2.INTER_NEAREST) + slice_seg = slice_seg[:,:,None].astype(np.float32) + # print(np.unique(slice_seg)) + # breakpoint() + example = {} + example['name'] = self.list[i].split('/')[-1].split('.')[0] + # example['pos_id'] = pos_id + example['slice_data'] = slice_data * 2 - 1 + example['masked_data'] = masked_data * 2 - 1 + example['tumor_mask'] = slice_seg + # breakpoint() + return example + +class slice_train(slice_base): + def __init__(self, data_file='data_split/liver/train.txt', **kwargs): + super().__init__(data_file=data_file, **kwargs) + + +class slice_val(slice_base): + def __init__(self, data_file='data_split/liver/eval.txt', **kwargs): + super().__init__(data_file=data_file, **kwargs) + + # def __len__(self): + # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000 + +class slice_test(slice_base): + def __init__(self, data_file='data_splits/test.txt', **kwargs): + super().__init__(**kwargs) + \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_infer_28class_randomclass.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_infer_28class_randomclass.py new file mode 100644 index 0000000000000000000000000000000000000000..85a7a9bc7054e71e59c62a25e6f3fdeb31c1b2bf --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_infer_28class_randomclass.py @@ -0,0 +1,99 @@ +import os +import numpy as np +# from skimage.transform import resize +import cv2 +from torch.utils.data import Dataset +import copy + +def get_filtered_mask(mask, selected_classes): + # 创建只包含选定类别的 mask + filtered_mask = np.isin(mask, selected_classes) * mask + return filtered_mask + +class slice_base(Dataset): + def __init__(self, + data_root, + data_name, + data_file, + data_repeat=1 + ): + + self.data_root = data_root + planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres + data_root = os.path.join(data_root, data_name , planner) + # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')] + file_list = [] + for line in open(data_file): + name = line.strip().split()[1].split('.nii.gz')[0] + name = name.split('/')[-1] + file_list.append(name) + # breakpoint() + self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list] + + self._length = len(self.list) + self._data_repeat = data_repeat + + + def __len__(self): + return self._length * self._data_repeat + + def __getitem__(self, i): + i = i % self._length + + npz_file = os.path.join(self.data_root, self.list[i]) + data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg'] + seg_npz = np.load(npz_file)['seg'][0] + # breakpoint() + # pos_id = np.random.randint(0, data_npz.shape[0]) + # pos_id = data_npz.shape[0]//2 + pos_id_list = np.where(np.any(data_npz==2, axis=(1, 2)))[0] + pos_id = pos_id_list[len(pos_id_list)//2] + # breakpoint() + slice_data = data_npz[pos_id] + slice_seg = seg_npz[pos_id] + + slice_data[slice_data <= -175] = -175 + slice_data[slice_data >= 250] = 250 + slice_data = (slice_data+175)/425.0 + + slice_seg[slice_seg==1] = 5 + slice_seg[slice_seg==2] = 26 + + # tumor_mask = (slice_seg==2).astype(np.float32) + slice_seg = slice_seg.astype(np.float32) + foreground_mask = (slice_seg>0).astype(np.float32) + masked_data = (1-foreground_mask)*slice_data + + slice_data = slice_data[:,:,None].astype(np.float32) + masked_data = masked_data[:,:,None].astype(np.float32) + + # tumor_mask = resize(tumor_mask, (64,64), order=0) + slice_seg = cv2.resize(slice_seg,(64,64),interpolation=cv2.INTER_NEAREST) + slice_seg = slice_seg[:,:,None].astype(np.float32) + # print(np.unique(slice_seg)) + # breakpoint() + example = {} + example['name'] = self.list[i].split('/')[-1].split('.')[0] + # example['pos_id'] = pos_id + example['slice_data'] = slice_data * 2 - 1 + example['masked_data'] = masked_data * 2 - 1 + example['tumor_mask'] = slice_seg + # breakpoint() + return example + +class slice_train(slice_base): + def __init__(self, data_file='data_split/liver/train.txt', **kwargs): + super().__init__(data_file=data_file, **kwargs) + + +class slice_val(slice_base): + def __init__(self, data_file='data_split/liver/eval.txt', **kwargs): + super().__init__(data_file=data_file, **kwargs) + + # def __len__(self): + # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000 + +class slice_test(slice_base): + def __init__(self, data_file='data_splits/test.txt', **kwargs): + super().__init__(**kwargs) + \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset copy.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset copy.py new file mode 100644 index 0000000000000000000000000000000000000000..9c011677e051b1ea7ac4c555c456c1bd979232fa --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset copy.py @@ -0,0 +1,83 @@ +import os +import numpy as np +from skimage.transform import resize +from torch.utils.data import Dataset + + +class volume_base(Dataset): + def __init__(self, + data_root, + data_name, + sample=True, + sample_length=16, + data_repeat=1 + ): + + self.data_root = data_root + self.data_name = data_name + self.sample = sample + self.sample_length = sample_length + + data_root = os.path.join(data_root, data_name + '/nnUNetPlans_3d_fullres') + self.list = [os.path.join(data_name + '/nnUNetPlans_3d_fullres',f) for f in os.listdir(data_root) if f.endswith('.npz')] + self._length = len(self.list) + self._data_repeat = data_repeat + + def __len__(self): + return self._length * self._data_repeat + + def __getitem__(self, i): + i = i % self._length + + npz_file = os.path.join(self.data_root, self.list[i]) + data_npz = np.load(npz_file)['data'] + seg_npz = np.load(npz_file)['seg'] + + volume_data = data_npz[0, :, :, :] + volume_seg = seg_npz[0, :, :, :] + + volume_data = (volume_data - np.min(data_npz)) / (np.max(data_npz)-np.min(data_npz)) + if 'Abdomen' in self.data_name: + max_seg = 4 + elif 'Brain' in self.data_name: + max_seg = 3 + volume_seg = volume_seg / max_seg + + volume_data = resize(volume_data, (volume_data.shape[0],512,512)) + volume_seg = resize(volume_seg, (volume_seg.shape[0],512,512), order=0, anti_aliasing=False) + + volume_data = volume_data[:, :, :, None].astype(np.float32) + volume_seg = volume_seg[:, :, :, None].astype(np.float32) + + if self.sample: + start_id = np.random.randint(0, data_npz.shape[1]-self.sample_length) + volume_data = volume_data[start_id:start_id+self.sample_length] + volume_seg = volume_seg[start_id:start_id+self.sample_length] + + rand_idx = np.random.randint(0, volume_data.shape[0]) + volume_ref = volume_data[rand_idx:rand_idx+1] + + example = {} + example['name'] = self.list[i].split('/')[-1].split('.')[0] + example['volume_data'] = volume_data * 2 - 1 + example['volume_seg'] = volume_seg * 2 - 1 + example['volume_ref'] = volume_ref * 2 - 1 + + return example + +class volume_train(volume_base): + def __init__(self, **kwargs): + super().__init__(**kwargs) + + +class volume_val(volume_base): + def __init__(self, **kwargs): + super().__init__(**kwargs) + + def __len__(self): + return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000 + +class volume_test(volume_base): + def __init__(self, **kwargs): + super().__init__(sample=False, **kwargs) + \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset.py new file mode 100644 index 0000000000000000000000000000000000000000..e9362a689c518d4716dbbdae17c6b18f06e7b2d6 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset.py @@ -0,0 +1,98 @@ +import os +import numpy as np +from skimage.transform import resize +import cv2 +from torch.utils.data import Dataset +import copy +from batchgenerators.utilities.file_and_folder_operations import join, load_json, isfile, save_json, maybe_mkdir_p + +class volume_base(Dataset): + def __init__(self, + data_root, + data_name, + data_file, + data_repeat=1, + planner='nnUNetPlans_3d_fullres', + phase='train', + ): + + self.data_root = data_root + # planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres + data_root = os.path.join(data_root, data_name , planner) + # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')] + file_list = [] + if 'liver' in data_file: + for line in open(data_file): + name = line.strip().split()[1].split('.nii.gz')[0] + name = name.split('/')[-1] + file_list.append(name) + else: + file_list = load_json(data_file)[0][phase] + # breakpoint() + self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list] + + self._length = len(self.list) + self.sample_length=16 + self.sample=True + self._data_repeat = data_repeat + + + def __len__(self): + return self._length * self._data_repeat + + def __getitem__(self, i): + i = i % self._length + + npz_file = os.path.join(self.data_root, self.list[i]) + data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg'] + seg_npz = np.load(npz_file)['seg'][0] + + # breakpoint() + + if self.sample: + start_id = np.random.randint(0, data_npz.shape[0]-self.sample_length) + volume_data = data_npz[start_id:start_id+self.sample_length] + volume_seg = seg_npz[start_id:start_id+self.sample_length] + + volume_data[volume_data <= -175] = -175 + volume_data[volume_data >= 250] = 250 + volume_data = (volume_data+175)/425.0 + + + volume_seg = volume_seg.astype(np.float32) + foreground_mask = (volume_seg>0).astype(np.float32) + masked_data = (1-foreground_mask)*volume_data + + volume_data = volume_data[:,:,:,None].astype(np.float32) + masked_data = masked_data[:,:,:,None].astype(np.float32) + + # breakpoint() + volume_seg = resize(volume_seg, (volume_seg.shape[0],64,64), order=0, anti_aliasing=False) + # print(np.unique(resize(volume_seg, (volume_seg.shape[0],64,64), order=0, anti_aliasing=False))) + volume_seg = volume_seg[:,:,:,None].astype(np.float32) + + example = {} + example['name'] = self.list[i].split('/')[-1].split('.')[0] + # example['pos_id'] = pos_id + example['volume_data'] = volume_data * 2 - 1 + example['masked_data'] = masked_data * 2 - 1 + example['tumor_mask'] = volume_seg + # breakpoint() + return example + +class volume_train(volume_base): + def __init__(self, phase='train', **kwargs): + super().__init__(phase=phase, **kwargs) + + +class volume_val(volume_base): + def __init__(self, phase='val', **kwargs): + super().__init__(phase=phase, **kwargs) + + # def __len__(self): + # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000 + +class volume_test(volume_base): + def __init__(self, data_file='data_splits/test.txt', **kwargs): + super().__init__(**kwargs) + \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_13class_randomclass.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_13class_randomclass.py new file mode 100644 index 0000000000000000000000000000000000000000..12c02a0588538a0a4376761ef44f9d6c059329fa --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_13class_randomclass.py @@ -0,0 +1,122 @@ +import os +import numpy as np +from skimage.transform import resize +import cv2 +from torch.utils.data import Dataset +import copy +import random +import itertools +from batchgenerators.utilities.file_and_folder_operations import load_json + +def get_random_classes_from_mask(mask): + # 分析 mask 中有哪些类别 + unique_classes = np.unique(mask) + unique_classes = unique_classes[unique_classes != 0] # 去除背景类(假设背景类为0) + + # 获取所有可能的类别组合 + all_combinations = [] + for i in range(1, len(unique_classes) + 1): + all_combinations.extend(itertools.combinations(unique_classes, i)) + + # 随机选择一个组合 + selected_combination = random.choice(all_combinations) + return selected_combination + +def get_filtered_mask(mask, selected_classes): + # 创建只包含选定类别的 mask + filtered_mask = np.isin(mask, selected_classes) * mask + return filtered_mask + +class volume_base(Dataset): + def __init__(self, + data_root, + data_name, + data_file, + data_repeat=1, + phase='train' + ): + + self.data_root = data_root + planner = 'nnUNetPlans_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres + data_root = os.path.join(data_root, data_name , planner) + # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')] + + data_splits = load_json(data_file) + file_list = data_splits[0][phase] + # breakpoint() + self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list] + + self._length = len(self.list) + self.class_num = 13 + + self.sample_length=16 + self.sample=True + self._data_repeat = data_repeat + + + def __len__(self): + return self._length * self._data_repeat + + def __getitem__(self, i): + i = i % self._length + + npz_file = os.path.join(self.data_root, self.list[i]) + data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg'] + seg_npz = np.load(npz_file)['seg'][0] + + # breakpoint() + + if self.sample: + start_id = np.random.randint(0, data_npz.shape[0]-self.sample_length) + volume_data = data_npz[start_id:start_id+self.sample_length] + volume_seg = seg_npz[start_id:start_id+self.sample_length] + + # breakpoint() + + + volume_data[volume_data <= -175] = -175 + volume_data[volume_data >= 250] = 250 + volume_data = (volume_data+175)/425.0 + + if len(np.unique(volume_seg)) > 1: + selected_classes = get_random_classes_from_mask(volume_seg) + volume_seg = get_filtered_mask(volume_seg, selected_classes) + + + volume_seg = volume_seg.astype(np.float32) + foreground_mask = (volume_seg>0).astype(np.float32) + masked_data = (1-foreground_mask)*volume_data + + volume_data = volume_data[:,:,:,None].astype(np.float32) + masked_data = masked_data[:,:,:,None].astype(np.float32) + + # breakpoint() + volume_seg = resize(volume_seg, (volume_seg.shape[0],64,64), order=0, anti_aliasing=False) + # print(np.unique(resize(volume_seg, (volume_seg.shape[0],64,64), order=0, anti_aliasing=False))) + volume_seg = volume_seg[:,:,:,None].astype(np.float32) + + example = {} + example['name'] = self.list[i].split('/')[-1].split('.')[0] + # example['pos_id'] = pos_id + example['volume_data'] = volume_data * 2 - 1 + example['masked_data'] = masked_data * 2 - 1 + example['tumor_mask'] = volume_seg + # breakpoint() + return example + +class volume_train(volume_base): + def __init__(self, phase='train', **kwargs): + super().__init__( phase=phase, **kwargs) + + +class volume_val(volume_base): + def __init__(self, phase='val', **kwargs): + super().__init__(phase=phase, **kwargs) + + # def __len__(self): + # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000 + +class volume_test(volume_base): + def __init__(self, data_file='data_splits/test.txt', **kwargs): + super().__init__(**kwargs) + \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_28class_randomclass.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_28class_randomclass.py new file mode 100644 index 0000000000000000000000000000000000000000..16224ea7b6d4d164626aa478f51788dbdcf32210 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_28class_randomclass.py @@ -0,0 +1,122 @@ +import os +import numpy as np +from skimage.transform import resize +import cv2 +from torch.utils.data import Dataset +import copy +import random +import itertools +from batchgenerators.utilities.file_and_folder_operations import load_json + +def get_random_classes_from_mask(mask): + # 分析 mask 中有哪些类别 + unique_classes = np.unique(mask) + unique_classes = unique_classes[unique_classes != 0] # 去除背景类(假设背景类为0) + + # 获取所有可能的类别组合 + all_combinations = [] + for i in range(1, len(unique_classes) + 1): + all_combinations.extend(itertools.combinations(unique_classes, i)) + + # 随机选择一个组合 + selected_combination = random.choice(all_combinations) + return selected_combination + +def get_filtered_mask(mask, selected_classes): + # 创建只包含选定类别的 mask + filtered_mask = np.isin(mask, selected_classes) * mask + return filtered_mask + +class volume_base(Dataset): + def __init__(self, + data_root, + data_name, + data_file, + data_repeat=1, + phase='train' + ): + + self.data_root = data_root + planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres + data_root = os.path.join(data_root, data_name , planner) + # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')] + + data_splits = load_json(data_file) + file_list = data_splits[0][phase] + # breakpoint() + self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list] + + self._length = len(self.list) + self.class_num = 28 + + self.sample_length=16 + self.sample=True + self._data_repeat = data_repeat + + + def __len__(self): + return self._length * self._data_repeat + + def __getitem__(self, i): + i = i % self._length + + npz_file = os.path.join(self.data_root, self.list[i]) + data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg'] + seg_npz = np.load(npz_file)['seg'][0] + + # breakpoint() + + if self.sample: + start_id = np.random.randint(0, data_npz.shape[0]-self.sample_length) + volume_data = data_npz[start_id:start_id+self.sample_length] + volume_seg = seg_npz[start_id:start_id+self.sample_length] + + # breakpoint() + + + volume_data[volume_data <= -175] = -175 + volume_data[volume_data >= 250] = 250 + volume_data = (volume_data+175)/425.0 + + if len(np.unique(volume_seg)) > 1: + selected_classes = get_random_classes_from_mask(volume_seg) + volume_seg = get_filtered_mask(volume_seg, selected_classes) + + + volume_seg = volume_seg.astype(np.float32) + foreground_mask = (volume_seg>0).astype(np.float32) + masked_data = (1-foreground_mask)*volume_data + + volume_data = volume_data[:,:,:,None].astype(np.float32) + masked_data = masked_data[:,:,:,None].astype(np.float32) + + # breakpoint() + volume_seg = resize(volume_seg, (volume_seg.shape[0],64,64), order=0, anti_aliasing=False) + # print(np.unique(resize(volume_seg, (volume_seg.shape[0],64,64), order=0, anti_aliasing=False))) + volume_seg = volume_seg[:,:,:,None].astype(np.float32) + + example = {} + example['name'] = self.list[i].split('/')[-1].split('.')[0] + # example['pos_id'] = pos_id + example['volume_data'] = volume_data * 2 - 1 + example['masked_data'] = masked_data * 2 - 1 + example['tumor_mask'] = volume_seg + # breakpoint() + return example + +class volume_train(volume_base): + def __init__(self, data_file='data_split/splits_final2.json', phase='train', **kwargs): + super().__init__(data_file=data_file, phase=phase, **kwargs) + + +class volume_val(volume_base): + def __init__(self, data_file='data_split/splits_final2.json', phase='val', **kwargs): + super().__init__(data_file=data_file, phase=phase, **kwargs) + + # def __len__(self): + # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000 + +class volume_test(volume_base): + def __init__(self, data_file='data_splits/test.txt', **kwargs): + super().__init__(**kwargs) + \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_base.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_base.py new file mode 100644 index 0000000000000000000000000000000000000000..fb62286c96eea7e2b0cda0d0ab58197dbae2263e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_base.py @@ -0,0 +1,79 @@ +import os +import numpy as np +from skimage.transform import resize +from torch.utils.data import Dataset + + +class volume_base(Dataset): + def __init__(self, + data_root, + data_name, + sample=True, + sample_length=16, + data_repeat=1 + ): + + self.data_root = data_root + self.data_name = data_name + self.sample = sample + self.sample_length = sample_length + + data_root = os.path.join(data_root, data_name + '/nnUNetPlans_3d_fullres') + self.list = [os.path.join(data_name + '/nnUNetPlans_3d_fullres',f) for f in os.listdir(data_root) if f.endswith('.npz')] + self._length = len(self.list) + self._data_repeat = data_repeat + + def __len__(self): + return self._length * self._data_repeat + + def __getitem__(self, i): + i = i % self._length + + npz_file = os.path.join(self.data_root, self.list[i]) + data_npz = np.load(npz_file)['data'] + seg_npz = np.load(npz_file)['seg'] + + volume_data = data_npz[0, :, :, :] + volume_seg = seg_npz[0, :, :, :] + + volume_data = (volume_data - np.min(data_npz)) / (np.max(data_npz)-np.min(data_npz)) + if 'Abdomen' in self.data_name: + max_seg = 4 + elif 'Brain' in self.data_name: + max_seg = 3 + volume_seg = volume_seg / max_seg + + volume_data = resize(volume_data, (volume_data.shape[0],512,512)) + volume_seg = resize(volume_seg, (volume_seg.shape[0],512,512), order=0, anti_aliasing=False) + + volume_data = volume_data[:, :, :, None].astype(np.float32) + volume_seg = volume_seg[:, :, :, None].astype(np.float32) + + if self.sample: + start_id = np.random.randint(0, data_npz.shape[1]-self.sample_length) + volume_data = volume_data[start_id:start_id+self.sample_length] + volume_seg = volume_seg[start_id:start_id+self.sample_length] + + example = {} + example['name'] = self.list[i].split('/')[-1].split('.')[0] + example['volume_data'] = volume_data * 2 - 1 + example['volume_seg'] = volume_seg * 2 - 1 + + return example + +class volume_train(volume_base): + def __init__(self, **kwargs): + super().__init__(**kwargs) + + +class volume_val(volume_base): + def __init__(self, **kwargs): + super().__init__(**kwargs) + + def __len__(self): + return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000 + +class volume_test(volume_base): + def __init__(self, **kwargs): + super().__init__(sample=False, **kwargs) + \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_infer.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_infer.py new file mode 100644 index 0000000000000000000000000000000000000000..162569c1ce5d07b9d918ac4c15a0b12949188e7b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_infer.py @@ -0,0 +1,96 @@ +import os +import numpy as np +from skimage.transform import resize +import cv2 +from torch.utils.data import Dataset +import copy + +class volume_base(Dataset): + def __init__(self, + data_root, + data_name, + data_file, + data_repeat=1 + ): + + self.data_root = data_root + planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres + data_root = os.path.join(data_root, data_name , planner) + # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')] + file_list = [] + for line in open(data_file): + name = line.strip().split()[1].split('.nii.gz')[0] + name = name.split('/')[-1] + file_list.append(name) + # breakpoint() + self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list] + + self._length = len(self.list) + self.sample_length=16 + self.sample=False + self._data_repeat = data_repeat + + + def __len__(self): + return self._length * self._data_repeat + + def __getitem__(self, i): + i = i % self._length + + npz_file = os.path.join(self.data_root, self.list[i]) + data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg'] + seg_npz = np.load(npz_file)['seg'][0] + # breakpoint() + + if self.sample: + start_id = np.random.randint(0, data_npz.shape[0]-self.sample_length) + volume_data = data_npz[start_id:start_id+self.sample_length] + volume_seg = seg_npz[start_id:start_id+self.sample_length] + else: + volume_data=data_npz + volume_seg = seg_npz + # breakpoint() + + + volume_data[volume_data <= -175] = -175 + volume_data[volume_data >= 250] = 250 + volume_data = (volume_data+175)/425.0 + + + volume_seg = volume_seg.astype(np.float32) + foreground_mask = (volume_seg>0).astype(np.float32) + masked_data = (1-foreground_mask)*volume_data + + volume_data = volume_data[:,:,:,None].astype(np.float32) + masked_data = masked_data[:,:,:,None].astype(np.float32) + + # breakpoint() + volume_seg = resize(volume_seg, (volume_seg.shape[0],64,64), order=0, anti_aliasing=False) + # print(np.unique(resize(volume_seg, (volume_seg.shape[0],64,64), order=0, anti_aliasing=False))) + volume_seg = volume_seg[:,:,:,None].astype(np.float32) + + example = {} + example['name'] = self.list[i].split('/')[-1].split('.')[0] + # example['pos_id'] = pos_id + example['volume_data'] = volume_data * 2 - 1 + example['masked_data'] = masked_data * 2 - 1 + example['tumor_mask'] = volume_seg + # breakpoint() + return example + +class volume_train(volume_base): + def __init__(self, data_file='data_split/liver/train.txt', **kwargs): + super().__init__(data_file=data_file, **kwargs) + + +class volume_val(volume_base): + def __init__(self, data_file='data_split/liver/eval.txt', **kwargs): + super().__init__(data_file=data_file, **kwargs) + + # def __len__(self): + # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000 + +class volume_test(volume_base): + def __init__(self, data_file='data_splits/test.txt', **kwargs): + super().__init__(**kwargs) + \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/lr_scheduler.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/lr_scheduler.py new file mode 100644 index 0000000000000000000000000000000000000000..be39da9ca6dacc22bf3df9c7389bbb403a4a3ade --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/lr_scheduler.py @@ -0,0 +1,98 @@ +import numpy as np + + +class LambdaWarmUpCosineScheduler: + """ + note: use with a base_lr of 1.0 + """ + def __init__(self, warm_up_steps, lr_min, lr_max, lr_start, max_decay_steps, verbosity_interval=0): + self.lr_warm_up_steps = warm_up_steps + self.lr_start = lr_start + self.lr_min = lr_min + self.lr_max = lr_max + self.lr_max_decay_steps = max_decay_steps + self.last_lr = 0. + self.verbosity_interval = verbosity_interval + + def schedule(self, n, **kwargs): + if self.verbosity_interval > 0: + if n % self.verbosity_interval == 0: print(f"current step: {n}, recent lr-multiplier: {self.last_lr}") + if n < self.lr_warm_up_steps: + lr = (self.lr_max - self.lr_start) / self.lr_warm_up_steps * n + self.lr_start + self.last_lr = lr + return lr + else: + t = (n - self.lr_warm_up_steps) / (self.lr_max_decay_steps - self.lr_warm_up_steps) + t = min(t, 1.0) + lr = self.lr_min + 0.5 * (self.lr_max - self.lr_min) * ( + 1 + np.cos(t * np.pi)) + self.last_lr = lr + return lr + + def __call__(self, n, **kwargs): + return self.schedule(n,**kwargs) + + +class LambdaWarmUpCosineScheduler2: + """ + supports repeated iterations, configurable via lists + note: use with a base_lr of 1.0. + """ + def __init__(self, warm_up_steps, f_min, f_max, f_start, cycle_lengths, verbosity_interval=0): + assert len(warm_up_steps) == len(f_min) == len(f_max) == len(f_start) == len(cycle_lengths) + self.lr_warm_up_steps = warm_up_steps + self.f_start = f_start + self.f_min = f_min + self.f_max = f_max + self.cycle_lengths = cycle_lengths + self.cum_cycles = np.cumsum([0] + list(self.cycle_lengths)) + self.last_f = 0. + self.verbosity_interval = verbosity_interval + + def find_in_interval(self, n): + interval = 0 + for cl in self.cum_cycles[1:]: + if n <= cl: + return interval + interval += 1 + + def schedule(self, n, **kwargs): + cycle = self.find_in_interval(n) + n = n - self.cum_cycles[cycle] + if self.verbosity_interval > 0: + if n % self.verbosity_interval == 0: print(f"current step: {n}, recent lr-multiplier: {self.last_f}, " + f"current cycle {cycle}") + if n < self.lr_warm_up_steps[cycle]: + f = (self.f_max[cycle] - self.f_start[cycle]) / self.lr_warm_up_steps[cycle] * n + self.f_start[cycle] + self.last_f = f + return f + else: + t = (n - self.lr_warm_up_steps[cycle]) / (self.cycle_lengths[cycle] - self.lr_warm_up_steps[cycle]) + t = min(t, 1.0) + f = self.f_min[cycle] + 0.5 * (self.f_max[cycle] - self.f_min[cycle]) * ( + 1 + np.cos(t * np.pi)) + self.last_f = f + return f + + def __call__(self, n, **kwargs): + return self.schedule(n, **kwargs) + + +class LambdaLinearScheduler(LambdaWarmUpCosineScheduler2): + + def schedule(self, n, **kwargs): + cycle = self.find_in_interval(n) + n = n - self.cum_cycles[cycle] + if self.verbosity_interval > 0: + if n % self.verbosity_interval == 0: print(f"current step: {n}, recent lr-multiplier: {self.last_f}, " + f"current cycle {cycle}") + + if n < self.lr_warm_up_steps[cycle]: + f = (self.f_max[cycle] - self.f_start[cycle]) / self.lr_warm_up_steps[cycle] * n + self.f_start[cycle] + self.last_f = f + return f + else: + f = self.f_min[cycle] + (self.f_max[cycle] - self.f_min[cycle]) * (self.cycle_lengths[cycle] - n) / (self.cycle_lengths[cycle]) + self.last_f = f + return f + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..41ffd02260fe635ecbea56fff1513e94b1668afb Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2035524d62afa1bdef50c6b75e0965bcb822617f Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d84b58ad9835b249e19129ffe50be21843d6e494 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-38.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d0f1eacb84946c54a671166a60fb0cac7bcc9dec Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/autoencoder.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/autoencoder.py new file mode 100644 index 0000000000000000000000000000000000000000..d122549995ce2cd64092c81a58419ed4a15a02fd --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/autoencoder.py @@ -0,0 +1,219 @@ +import torch +import pytorch_lightning as pl +import torch.nn.functional as F +from contextlib import contextmanager + +from ldm.modules.diffusionmodules.model import Encoder, Decoder +from ldm.modules.distributions.distributions import DiagonalGaussianDistribution + +from ldm.util import instantiate_from_config +from ldm.modules.ema import LitEma + + +class AutoencoderKL(pl.LightningModule): + def __init__(self, + ddconfig, + lossconfig, + embed_dim, + ckpt_path=None, + ignore_keys=[], + image_key="image", + colorize_nlabels=None, + monitor=None, + ema_decay=None, + learn_logvar=False + ): + super().__init__() + self.learn_logvar = learn_logvar + self.image_key = image_key + self.encoder = Encoder(**ddconfig) + self.decoder = Decoder(**ddconfig) + self.loss = instantiate_from_config(lossconfig) + assert ddconfig["double_z"] + self.quant_conv = torch.nn.Conv2d(2*ddconfig["z_channels"], 2*embed_dim, 1) + self.post_quant_conv = torch.nn.Conv2d(embed_dim, ddconfig["z_channels"], 1) + self.embed_dim = embed_dim + if colorize_nlabels is not None: + assert type(colorize_nlabels)==int + self.register_buffer("colorize", torch.randn(3, colorize_nlabels, 1, 1)) + if monitor is not None: + self.monitor = monitor + + self.use_ema = ema_decay is not None + if self.use_ema: + self.ema_decay = ema_decay + assert 0. < ema_decay < 1. + self.model_ema = LitEma(self, decay=ema_decay) + print(f"Keeping EMAs of {len(list(self.model_ema.buffers()))}.") + + if ckpt_path is not None: + self.init_from_ckpt(ckpt_path, ignore_keys=ignore_keys) + + def init_from_ckpt(self, path, ignore_keys=list()): + sd = torch.load(path, map_location="cpu")["state_dict"] + keys = list(sd.keys()) + for k in keys: + for ik in ignore_keys: + if k.startswith(ik): + print("Deleting key {} from state_dict.".format(k)) + del sd[k] + self.load_state_dict(sd, strict=False) + print(f"Restored from {path}") + + @contextmanager + def ema_scope(self, context=None): + if self.use_ema: + self.model_ema.store(self.parameters()) + self.model_ema.copy_to(self) + if context is not None: + print(f"{context}: Switched to EMA weights") + try: + yield None + finally: + if self.use_ema: + self.model_ema.restore(self.parameters()) + if context is not None: + print(f"{context}: Restored training weights") + + def on_train_batch_end(self, *args, **kwargs): + if self.use_ema: + self.model_ema(self) + + def encode(self, x): + h = self.encoder(x) + moments = self.quant_conv(h) + posterior = DiagonalGaussianDistribution(moments) + return posterior + + def decode(self, z): + z = self.post_quant_conv(z) + dec = self.decoder(z) + return dec + + def forward(self, input, sample_posterior=True): + posterior = self.encode(input) + if sample_posterior: + z = posterior.sample() + else: + z = posterior.mode() + dec = self.decode(z) + return dec, posterior + + def get_input(self, batch, k): + x = batch[k] + if len(x.shape) == 3: + x = x[..., None] + x = x.permute(0, 3, 1, 2).to(memory_format=torch.contiguous_format).float() + return x + + def training_step(self, batch, batch_idx, optimizer_idx): + inputs = self.get_input(batch, self.image_key) + reconstructions, posterior = self(inputs) + + if optimizer_idx == 0: + # train encoder+decoder+logvar + aeloss, log_dict_ae = self.loss(inputs, reconstructions, posterior, optimizer_idx, self.global_step, + last_layer=self.get_last_layer(), split="train") + self.log("aeloss", aeloss, prog_bar=True, logger=True, on_step=True, on_epoch=True) + self.log_dict(log_dict_ae, prog_bar=False, logger=True, on_step=True, on_epoch=False) + return aeloss + + if optimizer_idx == 1: + # train the discriminator + discloss, log_dict_disc = self.loss(inputs, reconstructions, posterior, optimizer_idx, self.global_step, + last_layer=self.get_last_layer(), split="train") + + self.log("discloss", discloss, prog_bar=True, logger=True, on_step=True, on_epoch=True) + self.log_dict(log_dict_disc, prog_bar=False, logger=True, on_step=True, on_epoch=False) + return discloss + + def validation_step(self, batch, batch_idx): + log_dict = self._validation_step(batch, batch_idx) + with self.ema_scope(): + log_dict_ema = self._validation_step(batch, batch_idx, postfix="_ema") + return log_dict + + def _validation_step(self, batch, batch_idx, postfix=""): + inputs = self.get_input(batch, self.image_key) + reconstructions, posterior = self(inputs) + aeloss, log_dict_ae = self.loss(inputs, reconstructions, posterior, 0, self.global_step, + last_layer=self.get_last_layer(), split="val"+postfix) + + discloss, log_dict_disc = self.loss(inputs, reconstructions, posterior, 1, self.global_step, + last_layer=self.get_last_layer(), split="val"+postfix) + + self.log(f"val{postfix}/rec_loss", log_dict_ae[f"val{postfix}/rec_loss"]) + self.log_dict(log_dict_ae) + self.log_dict(log_dict_disc) + return self.log_dict + + def configure_optimizers(self): + lr = self.learning_rate + ae_params_list = list(self.encoder.parameters()) + list(self.decoder.parameters()) + list( + self.quant_conv.parameters()) + list(self.post_quant_conv.parameters()) + if self.learn_logvar: + print(f"{self.__class__.__name__}: Learning logvar") + ae_params_list.append(self.loss.logvar) + opt_ae = torch.optim.Adam(ae_params_list, + lr=lr, betas=(0.5, 0.9)) + opt_disc = torch.optim.Adam(self.loss.discriminator.parameters(), + lr=lr, betas=(0.5, 0.9)) + return [opt_ae, opt_disc], [] + + def get_last_layer(self): + return self.decoder.conv_out.weight + + @torch.no_grad() + def log_images(self, batch, only_inputs=False, log_ema=False, **kwargs): + log = dict() + x = self.get_input(batch, self.image_key) + x = x.to(self.device) + if not only_inputs: + xrec, posterior = self(x) + if x.shape[1] > 3: + # colorize with random projection + assert xrec.shape[1] > 3 + x = self.to_rgb(x) + xrec = self.to_rgb(xrec) + log["samples"] = self.decode(torch.randn_like(posterior.sample())) + log["reconstructions"] = xrec + if log_ema or self.use_ema: + with self.ema_scope(): + xrec_ema, posterior_ema = self(x) + if x.shape[1] > 3: + # colorize with random projection + assert xrec_ema.shape[1] > 3 + xrec_ema = self.to_rgb(xrec_ema) + log["samples_ema"] = self.decode(torch.randn_like(posterior_ema.sample())) + log["reconstructions_ema"] = xrec_ema + log["inputs"] = x + return log + + def to_rgb(self, x): + assert self.image_key == "segmentation" + if not hasattr(self, "colorize"): + self.register_buffer("colorize", torch.randn(3, x.shape[1], 1, 1).to(x)) + x = F.conv2d(x, weight=self.colorize) + x = 2.*(x-x.min())/(x.max()-x.min()) - 1. + return x + + +class IdentityFirstStage(torch.nn.Module): + def __init__(self, *args, vq_interface=False, **kwargs): + self.vq_interface = vq_interface + super().__init__() + + def encode(self, x, *args, **kwargs): + return x + + def decode(self, x, *args, **kwargs): + return x + + def quantize(self, x, *args, **kwargs): + if self.vq_interface: + return x, None, [None, None, None] + return x + + def forward(self, x, *args, **kwargs): + return x + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/autoencoder__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/autoencoder__.py new file mode 100644 index 0000000000000000000000000000000000000000..6a9c4f45498561953b8085981609b2a3298a5473 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/autoencoder__.py @@ -0,0 +1,443 @@ +import torch +import pytorch_lightning as pl +import torch.nn.functional as F +from contextlib import contextmanager + +from taming.modules.vqvae.quantize import VectorQuantizer2 as VectorQuantizer + +from ldm.modules.diffusionmodules.model import Encoder, Decoder +from ldm.modules.distributions.distributions import DiagonalGaussianDistribution + +from ldm.util import instantiate_from_config + + +class VQModel(pl.LightningModule): + def __init__(self, + ddconfig, + lossconfig, + n_embed, + embed_dim, + ckpt_path=None, + ignore_keys=[], + image_key="image", + colorize_nlabels=None, + monitor=None, + batch_resize_range=None, + scheduler_config=None, + lr_g_factor=1.0, + remap=None, + sane_index_shape=False, # tell vector quantizer to return indices as bhw + use_ema=False + ): + super().__init__() + self.embed_dim = embed_dim + self.n_embed = n_embed + self.image_key = image_key + self.encoder = Encoder(**ddconfig) + self.decoder = Decoder(**ddconfig) + self.loss = instantiate_from_config(lossconfig) + self.quantize = VectorQuantizer(n_embed, embed_dim, beta=0.25, + remap=remap, + sane_index_shape=sane_index_shape) + self.quant_conv = torch.nn.Conv2d(ddconfig["z_channels"], embed_dim, 1) + self.post_quant_conv = torch.nn.Conv2d(embed_dim, ddconfig["z_channels"], 1) + if colorize_nlabels is not None: + assert type(colorize_nlabels)==int + self.register_buffer("colorize", torch.randn(3, colorize_nlabels, 1, 1)) + if monitor is not None: + self.monitor = monitor + self.batch_resize_range = batch_resize_range + if self.batch_resize_range is not None: + print(f"{self.__class__.__name__}: Using per-batch resizing in range {batch_resize_range}.") + + self.use_ema = use_ema + if self.use_ema: + self.model_ema = LitEma(self) + print(f"Keeping EMAs of {len(list(self.model_ema.buffers()))}.") + + if ckpt_path is not None: + self.init_from_ckpt(ckpt_path, ignore_keys=ignore_keys) + self.scheduler_config = scheduler_config + self.lr_g_factor = lr_g_factor + + @contextmanager + def ema_scope(self, context=None): + if self.use_ema: + self.model_ema.store(self.parameters()) + self.model_ema.copy_to(self) + if context is not None: + print(f"{context}: Switched to EMA weights") + try: + yield None + finally: + if self.use_ema: + self.model_ema.restore(self.parameters()) + if context is not None: + print(f"{context}: Restored training weights") + + def init_from_ckpt(self, path, ignore_keys=list()): + sd = torch.load(path, map_location="cpu")["state_dict"] + keys = list(sd.keys()) + for k in keys: + for ik in ignore_keys: + if k.startswith(ik): + print("Deleting key {} from state_dict.".format(k)) + del sd[k] + missing, unexpected = self.load_state_dict(sd, strict=False) + print(f"Restored from {path} with {len(missing)} missing and {len(unexpected)} unexpected keys") + if len(missing) > 0: + print(f"Missing Keys: {missing}") + print(f"Unexpected Keys: {unexpected}") + + def on_train_batch_end(self, *args, **kwargs): + if self.use_ema: + self.model_ema(self) + + def encode(self, x): + h = self.encoder(x) + h = self.quant_conv(h) + quant, emb_loss, info = self.quantize(h) + return quant, emb_loss, info + + def encode_to_prequant(self, x): + h = self.encoder(x) + h = self.quant_conv(h) + return h + + def decode(self, quant): + quant = self.post_quant_conv(quant) + dec = self.decoder(quant) + return dec + + def decode_code(self, code_b): + quant_b = self.quantize.embed_code(code_b) + dec = self.decode(quant_b) + return dec + + def forward(self, input, return_pred_indices=False): + quant, diff, (_,_,ind) = self.encode(input) + dec = self.decode(quant) + if return_pred_indices: + return dec, diff, ind + return dec, diff + + def get_input(self, batch, k): + x = batch[k] + if len(x.shape) == 3: + x = x[..., None] + x = x.permute(0, 3, 1, 2).to(memory_format=torch.contiguous_format).float() + if self.batch_resize_range is not None: + lower_size = self.batch_resize_range[0] + upper_size = self.batch_resize_range[1] + if self.global_step <= 4: + # do the first few batches with max size to avoid later oom + new_resize = upper_size + else: + new_resize = np.random.choice(np.arange(lower_size, upper_size+16, 16)) + if new_resize != x.shape[2]: + x = F.interpolate(x, size=new_resize, mode="bicubic") + x = x.detach() + return x + + def training_step(self, batch, batch_idx, optimizer_idx): + # https://github.com/pytorch/pytorch/issues/37142 + # try not to fool the heuristics + x = self.get_input(batch, self.image_key) + xrec, qloss, ind = self(x, return_pred_indices=True) + + if optimizer_idx == 0: + # autoencode + aeloss, log_dict_ae = self.loss(qloss, x, xrec, optimizer_idx, self.global_step, + last_layer=self.get_last_layer(), split="train", + predicted_indices=ind) + + self.log_dict(log_dict_ae, prog_bar=False, logger=True, on_step=True, on_epoch=True) + return aeloss + + if optimizer_idx == 1: + # discriminator + discloss, log_dict_disc = self.loss(qloss, x, xrec, optimizer_idx, self.global_step, + last_layer=self.get_last_layer(), split="train") + self.log_dict(log_dict_disc, prog_bar=False, logger=True, on_step=True, on_epoch=True) + return discloss + + def validation_step(self, batch, batch_idx): + log_dict = self._validation_step(batch, batch_idx) + with self.ema_scope(): + log_dict_ema = self._validation_step(batch, batch_idx, suffix="_ema") + return log_dict + + def _validation_step(self, batch, batch_idx, suffix=""): + x = self.get_input(batch, self.image_key) + xrec, qloss, ind = self(x, return_pred_indices=True) + aeloss, log_dict_ae = self.loss(qloss, x, xrec, 0, + self.global_step, + last_layer=self.get_last_layer(), + split="val"+suffix, + predicted_indices=ind + ) + + discloss, log_dict_disc = self.loss(qloss, x, xrec, 1, + self.global_step, + last_layer=self.get_last_layer(), + split="val"+suffix, + predicted_indices=ind + ) + rec_loss = log_dict_ae[f"val{suffix}/rec_loss"] + self.log(f"val{suffix}/rec_loss", rec_loss, + prog_bar=True, logger=True, on_step=False, on_epoch=True, sync_dist=True) + self.log(f"val{suffix}/aeloss", aeloss, + prog_bar=True, logger=True, on_step=False, on_epoch=True, sync_dist=True) + if version.parse(pl.__version__) >= version.parse('1.4.0'): + del log_dict_ae[f"val{suffix}/rec_loss"] + self.log_dict(log_dict_ae) + self.log_dict(log_dict_disc) + return self.log_dict + + def configure_optimizers(self): + lr_d = self.learning_rate + lr_g = self.lr_g_factor*self.learning_rate + print("lr_d", lr_d) + print("lr_g", lr_g) + opt_ae = torch.optim.Adam(list(self.encoder.parameters())+ + list(self.decoder.parameters())+ + list(self.quantize.parameters())+ + list(self.quant_conv.parameters())+ + list(self.post_quant_conv.parameters()), + lr=lr_g, betas=(0.5, 0.9)) + opt_disc = torch.optim.Adam(self.loss.discriminator.parameters(), + lr=lr_d, betas=(0.5, 0.9)) + + if self.scheduler_config is not None: + scheduler = instantiate_from_config(self.scheduler_config) + + print("Setting up LambdaLR scheduler...") + scheduler = [ + { + 'scheduler': LambdaLR(opt_ae, lr_lambda=scheduler.schedule), + 'interval': 'step', + 'frequency': 1 + }, + { + 'scheduler': LambdaLR(opt_disc, lr_lambda=scheduler.schedule), + 'interval': 'step', + 'frequency': 1 + }, + ] + return [opt_ae, opt_disc], scheduler + return [opt_ae, opt_disc], [] + + def get_last_layer(self): + return self.decoder.conv_out.weight + + def log_images(self, batch, only_inputs=False, plot_ema=False, **kwargs): + log = dict() + x = self.get_input(batch, self.image_key) + x = x.to(self.device) + if only_inputs: + log["inputs"] = x + return log + xrec, _ = self(x) + if x.shape[1] > 3: + # colorize with random projection + assert xrec.shape[1] > 3 + x = self.to_rgb(x) + xrec = self.to_rgb(xrec) + log["inputs"] = x + log["reconstructions"] = xrec + if plot_ema: + with self.ema_scope(): + xrec_ema, _ = self(x) + if x.shape[1] > 3: xrec_ema = self.to_rgb(xrec_ema) + log["reconstructions_ema"] = xrec_ema + return log + + def to_rgb(self, x): + assert self.image_key == "segmentation" + if not hasattr(self, "colorize"): + self.register_buffer("colorize", torch.randn(3, x.shape[1], 1, 1).to(x)) + x = F.conv2d(x, weight=self.colorize) + x = 2.*(x-x.min())/(x.max()-x.min()) - 1. + return x + + +class VQModelInterface(VQModel): + def __init__(self, embed_dim, *args, **kwargs): + super().__init__(embed_dim=embed_dim, *args, **kwargs) + self.embed_dim = embed_dim + + def encode(self, x): + h = self.encoder(x) + h = self.quant_conv(h) + return h + + def decode(self, h, force_not_quantize=False): + # also go through quantization layer + if not force_not_quantize: + quant, emb_loss, info = self.quantize(h) + else: + quant = h + quant = self.post_quant_conv(quant) + dec = self.decoder(quant) + return dec + + +class AutoencoderKL(pl.LightningModule): + def __init__(self, + ddconfig, + lossconfig, + embed_dim, + ckpt_path=None, + ignore_keys=[], + image_key="image", + colorize_nlabels=None, + monitor=None, + ): + super().__init__() + self.image_key = image_key + self.encoder = Encoder(**ddconfig) + self.decoder = Decoder(**ddconfig) + self.loss = instantiate_from_config(lossconfig) + assert ddconfig["double_z"] + self.quant_conv = torch.nn.Conv2d(2*ddconfig["z_channels"], 2*embed_dim, 1) + self.post_quant_conv = torch.nn.Conv2d(embed_dim, ddconfig["z_channels"], 1) + self.embed_dim = embed_dim + if colorize_nlabels is not None: + assert type(colorize_nlabels)==int + self.register_buffer("colorize", torch.randn(3, colorize_nlabels, 1, 1)) + if monitor is not None: + self.monitor = monitor + if ckpt_path is not None: + self.init_from_ckpt(ckpt_path, ignore_keys=ignore_keys) + + def init_from_ckpt(self, path, ignore_keys=list()): + sd = torch.load(path, map_location="cpu")["state_dict"] + keys = list(sd.keys()) + for k in keys: + for ik in ignore_keys: + if k.startswith(ik): + print("Deleting key {} from state_dict.".format(k)) + del sd[k] + self.load_state_dict(sd, strict=False) + print(f"Restored from {path}") + + def encode(self, x): + h = self.encoder(x) + moments = self.quant_conv(h) + posterior = DiagonalGaussianDistribution(moments) + return posterior + + def decode(self, z): + z = self.post_quant_conv(z) + dec = self.decoder(z) + return dec + + def forward(self, input, sample_posterior=True): + posterior = self.encode(input) + if sample_posterior: + z = posterior.sample() + else: + z = posterior.mode() + dec = self.decode(z) + return dec, posterior + + def get_input(self, batch, k): + x = batch[k] + if len(x.shape) == 3: + x = x[..., None] + x = x.permute(0, 3, 1, 2).to(memory_format=torch.contiguous_format).float() + return x + + def training_step(self, batch, batch_idx, optimizer_idx): + inputs = self.get_input(batch, self.image_key) + reconstructions, posterior = self(inputs) + + if optimizer_idx == 0: + # train encoder+decoder+logvar + aeloss, log_dict_ae = self.loss(inputs, reconstructions, posterior, optimizer_idx, self.global_step, + last_layer=self.get_last_layer(), split="train") + self.log("aeloss", aeloss, prog_bar=True, logger=True, on_step=True, on_epoch=True) + self.log_dict(log_dict_ae, prog_bar=False, logger=True, on_step=True, on_epoch=False) + return aeloss + + if optimizer_idx == 1: + # train the discriminator + discloss, log_dict_disc = self.loss(inputs, reconstructions, posterior, optimizer_idx, self.global_step, + last_layer=self.get_last_layer(), split="train") + + self.log("discloss", discloss, prog_bar=True, logger=True, on_step=True, on_epoch=True) + self.log_dict(log_dict_disc, prog_bar=False, logger=True, on_step=True, on_epoch=False) + return discloss + + def validation_step(self, batch, batch_idx): + inputs = self.get_input(batch, self.image_key) + reconstructions, posterior = self(inputs) + aeloss, log_dict_ae = self.loss(inputs, reconstructions, posterior, 0, self.global_step, + last_layer=self.get_last_layer(), split="val") + + discloss, log_dict_disc = self.loss(inputs, reconstructions, posterior, 1, self.global_step, + last_layer=self.get_last_layer(), split="val") + + self.log("val/rec_loss", log_dict_ae["val/rec_loss"]) + self.log_dict(log_dict_ae) + self.log_dict(log_dict_disc) + return self.log_dict + + def configure_optimizers(self): + lr = self.learning_rate + opt_ae = torch.optim.Adam(list(self.encoder.parameters())+ + list(self.decoder.parameters())+ + list(self.quant_conv.parameters())+ + list(self.post_quant_conv.parameters()), + lr=lr, betas=(0.5, 0.9)) + opt_disc = torch.optim.Adam(self.loss.discriminator.parameters(), + lr=lr, betas=(0.5, 0.9)) + return [opt_ae, opt_disc], [] + + def get_last_layer(self): + return self.decoder.conv_out.weight + + @torch.no_grad() + def log_images(self, batch, only_inputs=False, **kwargs): + log = dict() + x = self.get_input(batch, self.image_key) + x = x.to(self.device) + if not only_inputs: + xrec, posterior = self(x) + if x.shape[1] > 3: + # colorize with random projection + assert xrec.shape[1] > 3 + x = self.to_rgb(x) + xrec = self.to_rgb(xrec) + log["samples"] = self.decode(torch.randn_like(posterior.sample())) + log["reconstructions"] = xrec + log["inputs"] = x + return log + + def to_rgb(self, x): + assert self.image_key == "segmentation" + if not hasattr(self, "colorize"): + self.register_buffer("colorize", torch.randn(3, x.shape[1], 1, 1).to(x)) + x = F.conv2d(x, weight=self.colorize) + x = 2.*(x-x.min())/(x.max()-x.min()) - 1. + return x + + +class IdentityFirstStage(torch.nn.Module): + def __init__(self, *args, vq_interface=False, **kwargs): + self.vq_interface = vq_interface # TODO: Should be true by default but check to not break older stuff + super().__init__() + + def encode(self, x, *args, **kwargs): + return x + + def decode(self, x, *args, **kwargs): + return x + + def quantize(self, x, *args, **kwargs): + if self.vq_interface: + return x, None, [None, None, None] + return x + + def forward(self, x, *args, **kwargs): + return x diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__init__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a0a6c5c8498f6e90048a498af4a5e3c5ac80fdbc Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..637c33777116551129bb05e302eb660b05d59459 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fdae1ed7cee83d48e8c8da0502f9d6d048099152 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-38.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e64ea9ed5c8cf9cd22ad6701249f73db2cb49cb7 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..860460279ad6ce385fca9f904da19c0cbd7e3e3b Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..72d470aa6db2b4645e46c053ca2b75f66cb86565 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0316ec9509ea087b0d264008c784fe1f519842fc Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-38.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cd777be03502553fefc2db70a66ea688fa79b5d7 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..569d059b4be416d9d043d85dc6a6fe3b69b95b57 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f2f904e735b4824dba6d06163d16650289c754b1 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cc99d3087e2b2258db410c0915387a68f4885e6d Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4bebcfb4d47aa615a0dfca4cc440e74ec7b8f0dc Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5aa90ee9132f4b54874dc62c3011ad487bdbec69 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c0cfebea6c912269ad5524fec1bd9ce1f5d366a4 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-38.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bd5e4df69943c22f5b92822523f6fb0fb2ee6f26 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_recon.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_recon.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5e3c632485f61af3ee9dacdf071f27d03cbbfdcc Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_recon.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_recon_vq.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_recon_vq.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2da866830c272f6486c94762e9c5937e0d1d67a7 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_recon_vq.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddim.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddim.py new file mode 100644 index 0000000000000000000000000000000000000000..9f8dc584daffe533c0a02a721daa35918a9487f9 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddim.py @@ -0,0 +1,365 @@ +"""SAMPLING ONLY.""" + +import torch +import numpy as np +from tqdm import tqdm +from einops import rearrange + +from ldm.modules.diffusionmodules.util import make_ddim_sampling_parameters, make_ddim_timesteps, noise_like, extract_into_tensor + + +class DDIMSampler(object): + def __init__(self, model, schedule="linear", **kwargs): + super().__init__() + self.model = model + self.ddpm_num_timesteps = model.num_timesteps + self.schedule = schedule + + def register_buffer(self, name, attr): + if type(attr) == torch.Tensor: + if attr.device != torch.device("cuda"): + attr = attr.to(torch.device("cuda")) + setattr(self, name, attr) + + def make_schedule(self, ddim_num_steps, ddim_discretize="uniform", ddim_eta=0., verbose=True): + self.ddim_timesteps = make_ddim_timesteps(ddim_discr_method=ddim_discretize, num_ddim_timesteps=ddim_num_steps, + num_ddpm_timesteps=self.ddpm_num_timesteps,verbose=verbose) + alphas_cumprod = self.model.alphas_cumprod + assert alphas_cumprod.shape[0] == self.ddpm_num_timesteps, 'alphas have to be defined for each timestep' + to_torch = lambda x: x.clone().detach().to(torch.float32).to(self.model.device) + + self.register_buffer('betas', to_torch(self.model.betas)) + self.register_buffer('alphas_cumprod', to_torch(alphas_cumprod)) + self.register_buffer('alphas_cumprod_prev', to_torch(self.model.alphas_cumprod_prev)) + + # calculations for diffusion q(x_t | x_{t-1}) and others + self.register_buffer('sqrt_alphas_cumprod', to_torch(np.sqrt(alphas_cumprod.cpu()))) + self.register_buffer('sqrt_one_minus_alphas_cumprod', to_torch(np.sqrt(1. - alphas_cumprod.cpu()))) + self.register_buffer('log_one_minus_alphas_cumprod', to_torch(np.log(1. - alphas_cumprod.cpu()))) + self.register_buffer('sqrt_recip_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod.cpu()))) + self.register_buffer('sqrt_recipm1_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod.cpu() - 1))) + + # ddim sampling parameters + ddim_sigmas, ddim_alphas, ddim_alphas_prev = make_ddim_sampling_parameters(alphacums=alphas_cumprod.cpu(), + ddim_timesteps=self.ddim_timesteps, + eta=ddim_eta,verbose=verbose) + self.register_buffer('ddim_sigmas', ddim_sigmas) + self.register_buffer('ddim_alphas', ddim_alphas) + self.register_buffer('ddim_alphas_prev', ddim_alphas_prev) + self.register_buffer('ddim_sqrt_one_minus_alphas', np.sqrt(1. - ddim_alphas)) + sigmas_for_original_sampling_steps = ddim_eta * torch.sqrt( + (1 - self.alphas_cumprod_prev) / (1 - self.alphas_cumprod) * ( + 1 - self.alphas_cumprod / self.alphas_cumprod_prev)) + self.register_buffer('ddim_sigmas_for_original_num_steps', sigmas_for_original_sampling_steps) + + @torch.no_grad() + def sample(self, + S, + batch_size, + shape, + conditioning=None, + callback=None, + normals_sequence=None, + img_callback=None, + quantize_x0=False, + eta=0., + mask=None, + x0=None, + temperature=1., + noise_dropout=0., + score_corrector=None, + corrector_kwargs=None, + verbose=True, + x_T=None, + log_every_t=100, + unconditional_guidance_scale=1., + unconditional_conditioning=None, # this has to come in the same format as the conditioning, # e.g. as encoded tokens, ... + dynamic_threshold=None, + ucg_schedule=None, + previous=None, + previous_reverse=False, + **kwargs + ): + if conditioning is not None: + if isinstance(conditioning, dict): + ctmp = conditioning[list(conditioning.keys())[0]] + while isinstance(ctmp, list): ctmp = ctmp[0] + cbs = ctmp.shape[0] + if cbs != batch_size: + print(f"Warning: Got {cbs} conditionings but batch-size is {batch_size}") + + elif isinstance(conditioning, list): + for ctmp in conditioning: + if ctmp.shape[0] != batch_size: + print(f"Warning: Got {cbs} conditionings but batch-size is {batch_size}") + + else: + if conditioning.shape[0] != batch_size: + print(f"Warning: Got {conditioning.shape[0]} conditionings but batch-size is {batch_size}") + + self.make_schedule(ddim_num_steps=S, ddim_eta=eta, verbose=verbose) + # sampling + C, H, W = shape + size = (batch_size, C, H, W) + print(f'Data shape for DDIM sampling is {size}, eta {eta}') + # breakpoint() + samples, intermediates = self.ddim_sampling(conditioning, size, + callback=callback, + img_callback=img_callback, + quantize_denoised=quantize_x0, + mask=mask, x0=x0, + ddim_use_original_steps=False, + noise_dropout=noise_dropout, + temperature=temperature, + score_corrector=score_corrector, + corrector_kwargs=corrector_kwargs, + x_T=x_T, + log_every_t=log_every_t, + previous=previous, + previous_reverse=previous_reverse, + unconditional_guidance_scale=unconditional_guidance_scale, + unconditional_conditioning=unconditional_conditioning, + dynamic_threshold=dynamic_threshold, + ucg_schedule=ucg_schedule + ) + return samples, intermediates + + @torch.no_grad() + def ddim_sampling(self, cond, shape, + x_T=None, ddim_use_original_steps=False, + callback=None, timesteps=None, quantize_denoised=False, + mask=None, x0=None, img_callback=None, log_every_t=100, + temperature=1., noise_dropout=0., score_corrector=None, corrector_kwargs=None, + unconditional_guidance_scale=1., unconditional_conditioning=None, dynamic_threshold=None, + ucg_schedule=None, previous=None, previous_reverse=False): + device = self.model.betas.device + b = shape[0] + if x_T is None: + img = torch.randn(shape, device=device) + else: + img = x_T + + if previous is not None: + img = rearrange(img, '(b t) c h w -> b t c h w', b=previous.shape[0]) + alphas = self.model.alphas_cumprod + c0 = torch.sqrt(alphas[-1]) + c1 = torch.sqrt(1-alphas[-1]) + previous_noisy = c0*previous+c1*torch.randn_like(previous) + if not previous_reverse: + img[:, :previous.shape[1]] = previous_noisy + else: + img[:, -previous.shape[1]:] = previous_noisy + img = rearrange(img, 'b t c h w -> (b t) c h w') + + if timesteps is None: + timesteps = self.ddpm_num_timesteps if ddim_use_original_steps else self.ddim_timesteps + elif timesteps is not None and not ddim_use_original_steps: + subset_end = int(min(timesteps / self.ddim_timesteps.shape[0], 1) * self.ddim_timesteps.shape[0]) - 1 + timesteps = self.ddim_timesteps[:subset_end] + + intermediates = {'x_inter': [img], 'pred_x0': [img]} + time_range = reversed(range(0,timesteps)) if ddim_use_original_steps else np.flip(timesteps) + total_steps = timesteps if ddim_use_original_steps else timesteps.shape[0] + print(f"Running DDIM Sampling with {total_steps} timesteps") + + iterator = tqdm(time_range, desc='DDIM Sampler', total=total_steps) + + for i, step in enumerate(iterator): + index = total_steps - i - 1 + ts = torch.full((b,), step, device=device, dtype=torch.long) + + if mask is not None: + assert x0 is not None + img_orig = self.model.q_sample(x0, ts) + img = img_orig * mask + (1. - mask) * img + + if ucg_schedule is not None: + assert len(ucg_schedule) == len(time_range) + unconditional_guidance_scale = ucg_schedule[i] + + outs = self.p_sample_ddim(img, cond, ts, index=index, use_original_steps=ddim_use_original_steps, + quantize_denoised=quantize_denoised, temperature=temperature, + noise_dropout=noise_dropout, score_corrector=score_corrector, + corrector_kwargs=corrector_kwargs, + unconditional_guidance_scale=unconditional_guidance_scale, + unconditional_conditioning=unconditional_conditioning, + dynamic_threshold=dynamic_threshold) + img, pred_x0 = outs + if callback: callback(i) + if img_callback: img_callback(pred_x0, i) + + if previous is not None: + img = rearrange(img, '(b t) c h w -> b t c h w', b=previous.shape[0]) + alphas = self.model.alphas_cumprod + c0 = torch.sqrt(alphas[index]) + c1 = torch.sqrt(1-alphas[index]) + previous_noisy = c0*previous+c1*torch.randn_like(previous) + if not previous_reverse: + img[:, :previous.shape[1]] = previous_noisy + else: + img[:, -previous.shape[1]:] = previous_noisy + img = rearrange(img, 'b t c h w -> (b t) c h w') + + if index % log_every_t == 0 or index == total_steps - 1: + intermediates['x_inter'].append(img) + intermediates['pred_x0'].append(pred_x0) + + return img, intermediates + + @torch.no_grad() + def p_sample_ddim(self, x, c, t, index, repeat_noise=False, use_original_steps=False, quantize_denoised=False, + temperature=1., noise_dropout=0., score_corrector=None, corrector_kwargs=None, + unconditional_guidance_scale=1., unconditional_conditioning=None, + dynamic_threshold=None): + b, *_, device = *x.shape, x.device + + if unconditional_conditioning is None or unconditional_guidance_scale == 1.: + model_output = self.model.apply_model(x, t, c) + else: + x_in = torch.cat([x] * 2) + t_in = torch.cat([t] * 2) + if isinstance(c, dict): + assert isinstance(unconditional_conditioning, dict) + c_in = dict() + for k in c: + if isinstance(c[k], list): + c_in[k] = [torch.cat([ + unconditional_conditioning[k][i], + c[k][i]]) for i in range(len(c[k]))] + else: + c_in[k] = torch.cat([ + unconditional_conditioning[k], + c[k]]) + elif isinstance(c, list): + c_in = list() + assert isinstance(unconditional_conditioning, list) + for i in range(len(c)): + c_in.append(torch.cat([unconditional_conditioning[i], c[i]])) + else: + c_in = torch.cat([unconditional_conditioning, c]) + model_uncond, model_t = self.model.apply_model(x_in, t_in, c_in).chunk(2) + model_output = model_uncond + unconditional_guidance_scale * (model_t - model_uncond) + + if self.model.parameterization == "v": + e_t = self.model.predict_eps_from_z_and_v(x, t, model_output) + else: + e_t = model_output + + if score_corrector is not None: + assert self.model.parameterization == "eps", 'not implemented' + e_t = score_corrector.modify_score(self.model, e_t, x, t, c, **corrector_kwargs) + + alphas = self.model.alphas_cumprod if use_original_steps else self.ddim_alphas + alphas_prev = self.model.alphas_cumprod_prev if use_original_steps else self.ddim_alphas_prev + sqrt_one_minus_alphas = self.model.sqrt_one_minus_alphas_cumprod if use_original_steps else self.ddim_sqrt_one_minus_alphas + sigmas = self.model.ddim_sigmas_for_original_num_steps if use_original_steps else self.ddim_sigmas + # select parameters corresponding to the currently considered timestep + a_t = torch.full((b, 1, 1, 1), alphas[index], device=device) + a_prev = torch.full((b, 1, 1, 1), alphas_prev[index], device=device) + sigma_t = torch.full((b, 1, 1, 1), sigmas[index], device=device) + sqrt_one_minus_at = torch.full((b, 1, 1, 1), sqrt_one_minus_alphas[index],device=device) + + # current prediction for x_0 + if self.model.parameterization != "v": + pred_x0 = (x - sqrt_one_minus_at * e_t) / a_t.sqrt() + else: + pred_x0 = self.model.predict_start_from_z_and_v(x, t, model_output) + + if quantize_denoised: + pred_x0, _, *_ = self.model.first_stage_model.quantize(pred_x0) + + if dynamic_threshold is not None: + raise NotImplementedError() + + # direction pointing to x_t + dir_xt = (1. - a_prev - sigma_t**2).sqrt() * e_t + noise = sigma_t * noise_like(x.shape, device, repeat_noise) * temperature + if noise_dropout > 0.: + noise = torch.nn.functional.dropout(noise, p=noise_dropout) + x_prev = a_prev.sqrt() * pred_x0 + dir_xt + noise + return x_prev, pred_x0 + + @torch.no_grad() + def encode(self, x0, c, t_enc, use_original_steps=False, return_intermediates=None, + unconditional_guidance_scale=1.0, unconditional_conditioning=None, callback=None): + num_reference_steps = self.ddpm_num_timesteps if use_original_steps else self.ddim_timesteps.shape[0] + + assert t_enc <= num_reference_steps + num_steps = t_enc + + if use_original_steps: + alphas_next = self.alphas_cumprod[:num_steps] + alphas = self.alphas_cumprod_prev[:num_steps] + else: + alphas_next = self.ddim_alphas[:num_steps] + alphas = torch.tensor(self.ddim_alphas_prev[:num_steps]) + + x_next = x0 + intermediates = [] + inter_steps = [] + for i in tqdm(range(num_steps), desc='Encoding Image'): + t = torch.full((x0.shape[0],), i, device=self.model.device, dtype=torch.long) + if unconditional_guidance_scale == 1.: + noise_pred = self.model.apply_model(x_next, t, c) + else: + assert unconditional_conditioning is not None + e_t_uncond, noise_pred = torch.chunk( + self.model.apply_model(torch.cat((x_next, x_next)), torch.cat((t, t)), + torch.cat((unconditional_conditioning, c))), 2) + noise_pred = e_t_uncond + unconditional_guidance_scale * (noise_pred - e_t_uncond) + + xt_weighted = (alphas_next[i] / alphas[i]).sqrt() * x_next + weighted_noise_pred = alphas_next[i].sqrt() * ( + (1 / alphas_next[i] - 1).sqrt() - (1 / alphas[i] - 1).sqrt()) * noise_pred + x_next = xt_weighted + weighted_noise_pred + if return_intermediates and i % ( + num_steps // return_intermediates) == 0 and i < num_steps - 1: + intermediates.append(x_next) + inter_steps.append(i) + elif return_intermediates and i >= num_steps - 2: + intermediates.append(x_next) + inter_steps.append(i) + if callback: callback(i) + + out = {'x_encoded': x_next, 'intermediate_steps': inter_steps} + if return_intermediates: + out.update({'intermediates': intermediates}) + return x_next, out + + @torch.no_grad() + def stochastic_encode(self, x0, t, use_original_steps=False, noise=None): + # fast, but does not allow for exact reconstruction + # t serves as an index to gather the correct alphas + if use_original_steps: + sqrt_alphas_cumprod = self.sqrt_alphas_cumprod + sqrt_one_minus_alphas_cumprod = self.sqrt_one_minus_alphas_cumprod + else: + sqrt_alphas_cumprod = torch.sqrt(self.ddim_alphas) + sqrt_one_minus_alphas_cumprod = self.ddim_sqrt_one_minus_alphas + + if noise is None: + noise = torch.randn_like(x0) + return (extract_into_tensor(sqrt_alphas_cumprod, t, x0.shape) * x0 + + extract_into_tensor(sqrt_one_minus_alphas_cumprod, t, x0.shape) * noise) + + @torch.no_grad() + def decode(self, x_latent, cond, t_start, unconditional_guidance_scale=1.0, unconditional_conditioning=None, + use_original_steps=False, callback=None): + + timesteps = np.arange(self.ddpm_num_timesteps) if use_original_steps else self.ddim_timesteps + timesteps = timesteps[:t_start] + + time_range = np.flip(timesteps) + total_steps = timesteps.shape[0] + print(f"Running DDIM Sampling with {total_steps} timesteps") + + iterator = tqdm(time_range, desc='Decoding image', total=total_steps) + x_dec = x_latent + for i, step in enumerate(iterator): + index = total_steps - i - 1 + ts = torch.full((x_latent.shape[0],), step, device=x_latent.device, dtype=torch.long) + x_dec, _ = self.p_sample_ddim(x_dec, cond, ts, index=index, use_original_steps=use_original_steps, + unconditional_guidance_scale=unconditional_guidance_scale, + unconditional_conditioning=unconditional_conditioning) + if callback: callback(i) + return x_dec \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm.py new file mode 100644 index 0000000000000000000000000000000000000000..a48c20da2b526c989996ce755d280f3c9c63d2ef --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm.py @@ -0,0 +1,1447 @@ +""" +wild mixture of +https://github.com/lucidrains/denoising-diffusion-pytorch/blob/7706bdfc6f527f58d33f84b7b522e61e6e3164b3/denoising_diffusion_pytorch/denoising_diffusion_pytorch.py +https://github.com/openai/improved-diffusion/blob/e94489283bb876ac1477d5dd7709bbbd2d9902ce/improved_diffusion/gaussian_diffusion.py +https://github.com/CompVis/taming-transformers +-- merci +""" + +import torch +import torch.nn as nn +import numpy as np + +import enum + +# 保存原始实现(可选,用于调试或回滚) +_enum_format_orig = enum.Enum.__format__ + +def _enum_format_value(self, format_spec: str) -> str: + # 如果指定了 format 规范,就交给 value 本身的格式化;否则直接返回 value + return format(self.value, format_spec) if format_spec else str(self.value) + +# 全局替换 Enum.__format__ +enum.Enum.__format__ = _enum_format_value + +import pytorch_lightning as pl +from torch.optim.lr_scheduler import LambdaLR +from einops import rearrange, repeat +from contextlib import contextmanager, nullcontext +from functools import partial +import itertools +from tqdm import tqdm +from torchvision.utils import make_grid +from pytorch_lightning.utilities.distributed import rank_zero_only +from omegaconf import ListConfig + +from ldm.util import log_txt_as_img, exists, default, ismap, isimage, mean_flat, count_params, instantiate_from_config +from ldm.modules.ema import LitEma +from ldm.modules.distributions.distributions import normal_kl, DiagonalGaussianDistribution +from ldm.models.autoencoder import IdentityFirstStage, AutoencoderKL +from ldm.modules.diffusionmodules.util import make_beta_schedule, extract_into_tensor, noise_like +from ldm.models.diffusion.ddim import DDIMSampler +from transformers import BertTokenizer,BertModel + +__conditioning_keys__ = {'concat': 'c_concat', + 'crossattn': 'c_crossattn', + 'adm': 'y'} + + +def disabled_train(self, mode=True): + """Overwrite model.train with this function to make sure train/eval mode + does not change anymore.""" + return self + + +def uniform_on_device(r1, r2, shape, device): + return (r1 - r2) * torch.rand(*shape, device=device) + r2 + + +class DDPM(pl.LightningModule): + # classic DDPM with Gaussian diffusion, in image space + def __init__(self, + unet_config, + timesteps=1000, + beta_schedule="linear", + loss_type="l2", + ckpt_path=None, + ignore_keys=[], + load_only_unet=False, + monitor="val/loss", + use_ema=True, + first_stage_key="image", + image_size=256, + channels=3, + log_every_t=100, + clip_denoised=True, + linear_start=1e-4, + linear_end=2e-2, + cosine_s=8e-3, + given_betas=None, + original_elbo_weight=0., + v_posterior=0., # weight for choosing posterior variance as sigma = (1-v) * beta_tilde + v * beta + l_simple_weight=1., + conditioning_key=None, + parameterization="eps", # all assuming fixed variance schedules + scheduler_config=None, + use_positional_encodings=False, + learn_logvar=False, + logvar_init=0., + make_it_fit=False, + ucg_training=None, + reset_ema=False, + reset_num_ema_updates=False, + ): + super().__init__() + assert parameterization in ["eps", "x0", "v"], 'currently only supporting "eps" and "x0" and "v"' + self.parameterization = parameterization + print(f"{self.__class__.__name__}: Running in {self.parameterization}-prediction mode") + self.cond_stage_model = None + self.clip_denoised = clip_denoised + self.log_every_t = log_every_t + self.first_stage_key = first_stage_key + self.image_size = image_size # try conv? + self.channels = channels + + self.use_positional_encodings = use_positional_encodings + self.model = DiffusionWrapper(unet_config, conditioning_key) + count_params(self.model, verbose=True) + self.use_ema = use_ema + if self.use_ema: + self.model_ema = LitEma(self.model) + print(f"Keeping EMAs of {len(list(self.model_ema.buffers()))}.") + + self.use_scheduler = scheduler_config is not None + if self.use_scheduler: + self.scheduler_config = scheduler_config + + self.v_posterior = v_posterior + self.original_elbo_weight = original_elbo_weight + self.l_simple_weight = l_simple_weight + + if monitor is not None: + self.monitor = monitor + self.make_it_fit = make_it_fit + if reset_ema: assert exists(ckpt_path) + if ckpt_path is not None: + self.init_from_ckpt(ckpt_path, ignore_keys=ignore_keys, only_model=load_only_unet) + if reset_ema: + assert self.use_ema + print(f"Resetting ema to pure model weights. This is useful when restoring from an ema-only checkpoint.") + self.model_ema = LitEma(self.model) + if reset_num_ema_updates: + print(" +++++++++++ WARNING: RESETTING NUM_EMA UPDATES TO ZERO +++++++++++ ") + assert self.use_ema + self.model_ema.reset_num_updates() + + self.register_schedule(given_betas=given_betas, beta_schedule=beta_schedule, timesteps=timesteps, + linear_start=linear_start, linear_end=linear_end, cosine_s=cosine_s) + + self.loss_type = loss_type + + self.learn_logvar = learn_logvar + logvar = torch.full(fill_value=logvar_init, size=(self.num_timesteps,)) + if self.learn_logvar: + self.logvar = nn.Parameter(self.logvar, requires_grad=True) + else: + self.register_buffer('logvar', logvar) + + self.ucg_training = ucg_training or dict() + if self.ucg_training: + self.ucg_prng = np.random.RandomState() + + def register_schedule(self, given_betas=None, beta_schedule="linear", timesteps=1000, + linear_start=1e-4, linear_end=2e-2, cosine_s=8e-3): + if exists(given_betas): + betas = given_betas + else: + betas = make_beta_schedule(beta_schedule, timesteps, linear_start=linear_start, linear_end=linear_end, + cosine_s=cosine_s) + alphas = 1. - betas + alphas_cumprod = np.cumprod(alphas, axis=0) + alphas_cumprod_prev = np.append(1., alphas_cumprod[:-1]) + + timesteps, = betas.shape + self.num_timesteps = int(timesteps) + self.linear_start = linear_start + self.linear_end = linear_end + assert alphas_cumprod.shape[0] == self.num_timesteps, 'alphas have to be defined for each timestep' + + to_torch = partial(torch.tensor, dtype=torch.float32) + + self.register_buffer('betas', to_torch(betas)) + self.register_buffer('alphas_cumprod', to_torch(alphas_cumprod)) + self.register_buffer('alphas_cumprod_prev', to_torch(alphas_cumprod_prev)) + + # calculations for diffusion q(x_t | x_{t-1}) and others + self.register_buffer('sqrt_alphas_cumprod', to_torch(np.sqrt(alphas_cumprod))) + self.register_buffer('sqrt_one_minus_alphas_cumprod', to_torch(np.sqrt(1. - alphas_cumprod))) + self.register_buffer('log_one_minus_alphas_cumprod', to_torch(np.log(1. - alphas_cumprod))) + self.register_buffer('sqrt_recip_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod))) + self.register_buffer('sqrt_recipm1_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod - 1))) + + # calculations for posterior q(x_{t-1} | x_t, x_0) + posterior_variance = (1 - self.v_posterior) * betas * (1. - alphas_cumprod_prev) / ( + 1. - alphas_cumprod) + self.v_posterior * betas + # above: equal to 1. / (1. / (1. - alpha_cumprod_tm1) + alpha_t / beta_t) + self.register_buffer('posterior_variance', to_torch(posterior_variance)) + # below: log calculation clipped because the posterior variance is 0 at the beginning of the diffusion chain + self.register_buffer('posterior_log_variance_clipped', to_torch(np.log(np.maximum(posterior_variance, 1e-20)))) + self.register_buffer('posterior_mean_coef1', to_torch( + betas * np.sqrt(alphas_cumprod_prev) / (1. - alphas_cumprod))) + self.register_buffer('posterior_mean_coef2', to_torch( + (1. - alphas_cumprod_prev) * np.sqrt(alphas) / (1. - alphas_cumprod))) + + if self.parameterization == "eps": + lvlb_weights = self.betas ** 2 / ( + 2 * self.posterior_variance * to_torch(alphas) * (1 - self.alphas_cumprod)) + elif self.parameterization == "x0": + lvlb_weights = 0.5 * np.sqrt(torch.Tensor(alphas_cumprod)) / (2. * 1 - torch.Tensor(alphas_cumprod)) + elif self.parameterization == "v": + lvlb_weights = torch.ones_like(self.betas ** 2 / ( + 2 * self.posterior_variance * to_torch(alphas) * (1 - self.alphas_cumprod))) + else: + raise NotImplementedError("mu not supported") + lvlb_weights[0] = lvlb_weights[1] + self.register_buffer('lvlb_weights', lvlb_weights, persistent=False) + assert not torch.isnan(self.lvlb_weights).all() + + @contextmanager + def ema_scope(self, context=None): + if self.use_ema: + self.model_ema.store(self.model.parameters()) + self.model_ema.copy_to(self.model) + if context is not None: + print(f"{context}: Switched to EMA weights") + try: + yield None + finally: + if self.use_ema: + self.model_ema.restore(self.model.parameters()) + if context is not None: + print(f"{context}: Restored training weights") + + @torch.no_grad() + def init_from_ckpt(self, path, ignore_keys=list(), only_model=False): + sd = torch.load(path, map_location="cpu") + if "state_dict" in list(sd.keys()): + sd = sd["state_dict"] + keys = list(sd.keys()) + for k in keys: + for ik in ignore_keys: + if k.startswith(ik): + print("Deleting key {} from state_dict.".format(k)) + del sd[k] + if self.make_it_fit: + n_params = len([name for name, _ in + itertools.chain(self.named_parameters(), + self.named_buffers())]) + for name, param in tqdm( + itertools.chain(self.named_parameters(), + self.named_buffers()), + desc="Fitting old weights to new weights", + total=n_params + ): + if not name in sd: + continue + old_shape = sd[name].shape + new_shape = param.shape + assert len(old_shape) == len(new_shape) + if len(new_shape) > 2: + # we only modify first two axes + assert new_shape[2:] == old_shape[2:] + # assumes first axis corresponds to output dim + if not new_shape == old_shape: + new_param = param.clone() + old_param = sd[name] + if len(new_shape) == 1: + for i in range(new_param.shape[0]): + new_param[i] = old_param[i % old_shape[0]] + elif len(new_shape) >= 2: + for i in range(new_param.shape[0]): + for j in range(new_param.shape[1]): + new_param[i, j] = old_param[i % old_shape[0], j % old_shape[1]] + + n_used_old = torch.ones(old_shape[1]) + for j in range(new_param.shape[1]): + n_used_old[j % old_shape[1]] += 1 + n_used_new = torch.zeros(new_shape[1]) + for j in range(new_param.shape[1]): + n_used_new[j] = n_used_old[j % old_shape[1]] + + n_used_new = n_used_new[None, :] + while len(n_used_new.shape) < len(new_shape): + n_used_new = n_used_new.unsqueeze(-1) + new_param /= n_used_new + + sd[name] = new_param + + missing, unexpected = self.load_state_dict(sd, strict=False) if not only_model else self.model.load_state_dict( + sd, strict=False) + print(f"Restored from {path} with {len(missing)} missing and {len(unexpected)} unexpected keys") + if len(missing) > 0: + print(f"Missing Keys:\n {missing}") + if len(unexpected) > 0: + print(f"\nUnexpected Keys:\n {unexpected}") + + def q_mean_variance(self, x_start, t): + """ + Get the distribution q(x_t | x_0). + :param x_start: the [N x C x ...] tensor of noiseless inputs. + :param t: the number of diffusion steps (minus 1). Here, 0 means one step. + :return: A tuple (mean, variance, log_variance), all of x_start's shape. + """ + mean = (extract_into_tensor(self.sqrt_alphas_cumprod, t, x_start.shape) * x_start) + variance = extract_into_tensor(1.0 - self.alphas_cumprod, t, x_start.shape) + log_variance = extract_into_tensor(self.log_one_minus_alphas_cumprod, t, x_start.shape) + return mean, variance, log_variance + + def predict_start_from_noise(self, x_t, t, noise): + return ( + extract_into_tensor(self.sqrt_recip_alphas_cumprod, t, x_t.shape) * x_t - + extract_into_tensor(self.sqrt_recipm1_alphas_cumprod, t, x_t.shape) * noise + ) + + def predict_start_from_z_and_v(self, x_t, t, v): + # self.register_buffer('sqrt_alphas_cumprod', to_torch(np.sqrt(alphas_cumprod))) + # self.register_buffer('sqrt_one_minus_alphas_cumprod', to_torch(np.sqrt(1. - alphas_cumprod))) + return ( + extract_into_tensor(self.sqrt_alphas_cumprod, t, x_t.shape) * x_t - + extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x_t.shape) * v + ) + + def predict_eps_from_z_and_v(self, x_t, t, v): + return ( + extract_into_tensor(self.sqrt_alphas_cumprod, t, x_t.shape) * v + + extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x_t.shape) * x_t + ) + + def q_posterior(self, x_start, x_t, t): + posterior_mean = ( + extract_into_tensor(self.posterior_mean_coef1, t, x_t.shape) * x_start + + extract_into_tensor(self.posterior_mean_coef2, t, x_t.shape) * x_t + ) + posterior_variance = extract_into_tensor(self.posterior_variance, t, x_t.shape) + posterior_log_variance_clipped = extract_into_tensor(self.posterior_log_variance_clipped, t, x_t.shape) + return posterior_mean, posterior_variance, posterior_log_variance_clipped + + def p_mean_variance(self, x, t, clip_denoised: bool): + model_out = self.model(x, t) + if self.parameterization == "eps": + x_recon = self.predict_start_from_noise(x, t=t, noise=model_out) + elif self.parameterization == "x0": + x_recon = model_out + if clip_denoised: + x_recon.clamp_(-1., 1.) + + model_mean, posterior_variance, posterior_log_variance = self.q_posterior(x_start=x_recon, x_t=x, t=t) + return model_mean, posterior_variance, posterior_log_variance + + @torch.no_grad() + def p_sample(self, x, t, clip_denoised=True, repeat_noise=False): + b, *_, device = *x.shape, x.device + model_mean, _, model_log_variance = self.p_mean_variance(x=x, t=t, clip_denoised=clip_denoised) + noise = noise_like(x.shape, device, repeat_noise) + # no noise when t == 0 + nonzero_mask = (1 - (t == 0).float()).reshape(b, *((1,) * (len(x.shape) - 1))) + return model_mean + nonzero_mask * (0.5 * model_log_variance).exp() * noise + + @torch.no_grad() + def p_sample_loop(self, shape, return_intermediates=False): + device = self.betas.device + b = shape[0] + img = torch.randn(shape, device=device) + intermediates = [img] + for i in tqdm(reversed(range(0, self.num_timesteps)), desc='Sampling t', total=self.num_timesteps): + img = self.p_sample(img, torch.full((b,), i, device=device, dtype=torch.long), + clip_denoised=self.clip_denoised) + if i % self.log_every_t == 0 or i == self.num_timesteps - 1: + intermediates.append(img) + if return_intermediates: + return img, intermediates + return img + + @torch.no_grad() + def sample(self, batch_size=16, return_intermediates=False): + image_size = self.image_size + channels = self.channels + return self.p_sample_loop((batch_size, channels, image_size, image_size), + return_intermediates=return_intermediates) + + def q_sample(self, x_start, t, noise=None): + noise = default(noise, lambda: torch.randn_like(x_start)) + return (extract_into_tensor(self.sqrt_alphas_cumprod, t, x_start.shape) * x_start + + extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x_start.shape) * noise) + + def get_v(self, x, noise, t): + return ( + extract_into_tensor(self.sqrt_alphas_cumprod, t, x.shape) * noise - + extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x.shape) * x + ) + + def get_loss(self, pred, target, mean=True): + if self.loss_type == 'l1': + loss = (target - pred).abs() + if mean: + loss = loss.mean() + elif self.loss_type == 'l2': + if mean: + loss = torch.nn.functional.mse_loss(target, pred) + else: + loss = torch.nn.functional.mse_loss(target, pred, reduction='none') + else: + raise NotImplementedError("unknown loss type '{loss_type}'") + + return loss + + def p_losses(self, x_start, t, noise=None): + noise = default(noise, lambda: torch.randn_like(x_start)) + x_noisy = self.q_sample(x_start=x_start, t=t, noise=noise) + model_out = self.model(x_noisy, t) + + loss_dict = {} + if self.parameterization == "eps": + target = noise + elif self.parameterization == "x0": + target = x_start + elif self.parameterization == "v": + target = self.get_v(x_start, noise, t) + else: + raise NotImplementedError(f"Parameterization {self.parameterization} not yet supported") + + loss = self.get_loss(model_out, target, mean=False).mean(dim=[1, 2, 3]) + + log_prefix = 'train' if self.training else 'val' + + loss_dict.update({f'{log_prefix}/loss_simple': loss.mean()}) + loss_simple = loss.mean() * self.l_simple_weight + + loss_vlb = (self.lvlb_weights[t] * loss).mean() + loss_dict.update({f'{log_prefix}/loss_vlb': loss_vlb}) + + loss = loss_simple + self.original_elbo_weight * loss_vlb + + loss_dict.update({f'{log_prefix}/loss': loss}) + + return loss, loss_dict + + def forward(self, x, *args, **kwargs): + # b, c, h, w, device, img_size, = *x.shape, x.device, self.image_size + # assert h == img_size and w == img_size, f'height and width of image must be {img_size}' + t = torch.randint(0, self.num_timesteps, (x.shape[0],), device=self.device).long() + return self.p_losses(x, t, *args, **kwargs) + + def get_input(self, batch, k): + x = batch[k] + if len(x.shape) == 3: + x = x[..., None] + x = rearrange(x, 'b h w c -> b c h w') + x = x.to(memory_format=torch.contiguous_format).float() + return x + + def shared_step(self, batch): + x = self.get_input(batch, self.first_stage_key) + loss, loss_dict = self(x) + return loss, loss_dict + + def training_step(self, batch, batch_idx): + for k in self.ucg_training: + p = self.ucg_training[k]["p"] + val = self.ucg_training[k]["val"] + if val is None: + val = "" + for i in range(len(batch[k])): + if self.ucg_prng.choice(2, p=[1 - p, p]): + batch[k][i] = val + + loss, loss_dict = self.shared_step(batch) + + self.log_dict(loss_dict, prog_bar=True, + logger=True, on_step=True, on_epoch=True) + + self.log("global_step", self.global_step, + prog_bar=True, logger=True, on_step=True, on_epoch=False) + + if self.use_scheduler: + lr = self.optimizers().param_groups[0]['lr'] + self.log('lr_abs', lr, prog_bar=True, logger=True, on_step=True, on_epoch=False) + + return loss + + @torch.no_grad() + def validation_step(self, batch, batch_idx): + _, loss_dict_no_ema = self.shared_step(batch) + with self.ema_scope(): + _, loss_dict_ema = self.shared_step(batch) + loss_dict_ema = {key + '_ema': loss_dict_ema[key] for key in loss_dict_ema} + self.log_dict(loss_dict_no_ema, prog_bar=False, logger=True, on_step=False, on_epoch=True) + self.log_dict(loss_dict_ema, prog_bar=False, logger=True, on_step=False, on_epoch=True) + + def on_train_batch_end(self, *args, **kwargs): + if self.use_ema: + self.model_ema(self.model) + + def _get_rows_from_list(self, samples): + n_imgs_per_row = len(samples) + denoise_grid = rearrange(samples, 'n b c h w -> b n c h w') + denoise_grid = rearrange(denoise_grid, 'b n c h w -> (b n) c h w') + denoise_grid = make_grid(denoise_grid, nrow=n_imgs_per_row) + return denoise_grid + + @torch.no_grad() + def log_images(self, batch, N=8, n_row=2, sample=True, return_keys=None, **kwargs): + log = dict() + x = self.get_input(batch, self.first_stage_key) + N = min(x.shape[0], N) + n_row = min(x.shape[0], n_row) + x = x.to(self.device)[:N] + log["inputs"] = x + + # get diffusion row + diffusion_row = list() + x_start = x[:n_row] + + for t in range(self.num_timesteps): + if t % self.log_every_t == 0 or t == self.num_timesteps - 1: + t = repeat(torch.tensor([t]), '1 -> b', b=n_row) + t = t.to(self.device).long() + noise = torch.randn_like(x_start) + x_noisy = self.q_sample(x_start=x_start, t=t, noise=noise) + diffusion_row.append(x_noisy) + + log["diffusion_row"] = self._get_rows_from_list(diffusion_row) + + if sample: + # get denoise row + with self.ema_scope("Plotting"): + samples, denoise_row = self.sample(batch_size=N, return_intermediates=True) + + log["samples"] = samples + log["denoise_row"] = self._get_rows_from_list(denoise_row) + + if return_keys: + if np.intersect1d(list(log.keys()), return_keys).shape[0] == 0: + return log + else: + return {key: log[key] for key in return_keys} + return log + + def configure_optimizers(self): + lr = self.learning_rate + params = list(self.model.parameters()) + if self.learn_logvar: + params = params + [self.logvar] + opt = torch.optim.AdamW(params, lr=lr) + return opt + + +class LatentDiffusion(DDPM): + """main class""" + + def __init__(self, + num_timesteps_cond=None, + cond_stage_key="image", + cond_stage_trainable=False, + concat_mode=True, + cond_stage_forward=None, + conditioning_key=None, + scale_factor=1.0, + scale_by_std=False, + force_null_conditioning=False, + text_enc='custom', + *args, **kwargs): + self.force_null_conditioning = force_null_conditioning + self.num_timesteps_cond = default(num_timesteps_cond, 1) + self.scale_by_std = scale_by_std + assert self.num_timesteps_cond <= kwargs['timesteps'] + # for backwards compatibility after implementation of DiffusionWrapper + if conditioning_key is None: + conditioning_key = 'concat' if concat_mode else 'crossattn' + + ckpt_path = kwargs.pop("ckpt_path", None) + reset_ema = kwargs.pop("reset_ema", False) + reset_num_ema_updates = kwargs.pop("reset_num_ema_updates", False) + ignore_keys = kwargs.pop("ignore_keys", []) + super().__init__(conditioning_key=conditioning_key, *args, **kwargs) + self.concat_mode = concat_mode + self.cond_stage_trainable = cond_stage_trainable + self.cond_stage_key = cond_stage_key + + if not scale_by_std: + self.scale_factor = scale_factor + else: + self.register_buffer('scale_factor', torch.tensor(scale_factor)) + # breakpoint() + self.instantiate_first_stage() + # self.instantiate_cond_stage() + + self.cond_stage_forward = cond_stage_forward + self.clip_denoised = False + self.bbox_tokenizer = None + self.tokenizer=BertTokenizer.from_pretrained('microsoft/BiomedVLP-CXR-BERT-specialized',do_lower_case=True) + self.text_encode_without_mask=False + self.text_transformer=BertModel.from_pretrained("microsoft/BiomedVLP-CXR-BERT-specialized") + self.text_enc=text_enc + + self.restarted_from_ckpt = False + if ckpt_path is not None: + self.init_from_ckpt(ckpt_path, ignore_keys) + self.restarted_from_ckpt = True + if reset_ema: + assert self.use_ema + print( + f"Resetting ema to pure model weights. This is useful when restoring from an ema-only checkpoint.") + self.model_ema = LitEma(self.model) + if reset_num_ema_updates: + print(" +++++++++++ WARNING: RESETTING NUM_EMA UPDATES TO ZERO +++++++++++ ") + assert self.use_ema + self.model_ema.reset_num_updates() + + + def make_cond_schedule(self, ): + self.cond_ids = torch.full(size=(self.num_timesteps,), fill_value=self.num_timesteps - 1, dtype=torch.long) + ids = torch.round(torch.linspace(0, self.num_timesteps - 1, self.num_timesteps_cond)).long() + self.cond_ids[:self.num_timesteps_cond] = ids + + @rank_zero_only + @torch.no_grad() + def on_train_batch_start(self, batch, batch_idx, dataloader_idx): + # only for very first batch + if self.scale_by_std and self.current_epoch == 0 and self.global_step == 0 and batch_idx == 0 and not self.restarted_from_ckpt: + assert self.scale_factor == 1., 'rather not use custom rescaling and std-rescaling simultaneously' + # set rescale weight to 1./std of encodings + # breakpoint() + print("### USING STD-RESCALING ###") + x = super().get_input(batch, self.first_stage_key) + x = x.to(self.device) + encoder_posterior = self.encode_first_stage(x) + z = self.get_first_stage_encoding(encoder_posterior).detach() + del self.scale_factor + self.register_buffer('scale_factor', 1. / z.flatten().std()) + print(f"setting self.scale_factor to {self.scale_factor}") + print("### USING STD-RESCALING ###") + + def register_schedule(self, + given_betas=None, beta_schedule="linear", timesteps=1000, + linear_start=1e-4, linear_end=2e-2, cosine_s=8e-3): + super().register_schedule(given_betas, beta_schedule, timesteps, linear_start, linear_end, cosine_s) + + self.shorten_cond_schedule = self.num_timesteps_cond > 1 + if self.shorten_cond_schedule: + self.make_cond_schedule() + + def instantiate_first_stage(self): + from LeanVAE import LeanVAE + vqgan_ckpt='LeanVAE/ckpts/LeanVAE-dim16.ckpt' + model = LeanVAE.load_from_checkpoint(vqgan_ckpt, strict=False) + self.first_stage_model = model.eval() + self.first_stage_model.train = disabled_train + for param in self.first_stage_model.parameters(): + param.requires_grad = False + + def instantiate_cond_stage(self, config): + # breakpoint() + if not self.cond_stage_trainable: + if config == "__is_first_stage__": + print("Using first stage also as cond stage.") + self.cond_stage_model = self.first_stage_model + elif config == "__is_unconditional__": + print(f"Training {self.__class__.__name__} as an unconditional model.") + self.cond_stage_model = None + # self.be_unconditional = True + else: + model = instantiate_from_config(config) + self.cond_stage_model = model.eval() + self.cond_stage_model.train = disabled_train + for param in self.cond_stage_model.parameters(): + param.requires_grad = False + else: + assert config != '__is_first_stage__' + assert config != '__is_unconditional__' + model = instantiate_from_config(config) + self.cond_stage_model = model + + def _get_denoise_row_from_list(self, samples, desc='', force_no_decoder_quantization=False): + denoise_row = [] + for zd in tqdm(samples, desc=desc): + denoise_row.append(self.decode_first_stage(zd.to(self.device), + force_not_quantize=force_no_decoder_quantization)) + n_imgs_per_row = len(denoise_row) + denoise_row = torch.stack(denoise_row) # n_log_step, n_row, C, H, W + denoise_grid = rearrange(denoise_row, 'n b c h w -> b n c h w') + denoise_grid = rearrange(denoise_grid, 'b n c h w -> (b n) c h w') + denoise_grid = make_grid(denoise_grid, nrow=n_imgs_per_row) + return denoise_grid + + def get_first_stage_encoding(self, encoder_posterior): + # breakpoint() + if isinstance(encoder_posterior, DiagonalGaussianDistribution): + z = encoder_posterior.sample() + elif isinstance(encoder_posterior, torch.Tensor): + z = encoder_posterior + else: + raise NotImplementedError(f"encoder_posterior of type '{type(encoder_posterior)}' not yet implemented") + return self.scale_factor * z + + def get_learned_conditioning(self, c): + if self.cond_stage_forward is None: + if hasattr(self.cond_stage_model, 'encode') and callable(self.cond_stage_model.encode): + c = self.cond_stage_model.encode(c) + if isinstance(c, DiagonalGaussianDistribution): + c = c.mode() + else: + c = self.cond_stage_model(c) + else: + assert hasattr(self.cond_stage_model, self.cond_stage_forward) + c = getattr(self.cond_stage_model, self.cond_stage_forward)(c) + return c + + def meshgrid(self, h, w): + y = torch.arange(0, h).view(h, 1, 1).repeat(1, w, 1) + x = torch.arange(0, w).view(1, w, 1).repeat(h, 1, 1) + + arr = torch.cat([y, x], dim=-1) + return arr + + def delta_border(self, h, w): + """ + :param h: height + :param w: width + :return: normalized distance to image border, + wtith min distance = 0 at border and max dist = 0.5 at image center + """ + lower_right_corner = torch.tensor([h - 1, w - 1]).view(1, 1, 2) + arr = self.meshgrid(h, w) / lower_right_corner + dist_left_up = torch.min(arr, dim=-1, keepdims=True)[0] + dist_right_down = torch.min(1 - arr, dim=-1, keepdims=True)[0] + edge_dist = torch.min(torch.cat([dist_left_up, dist_right_down], dim=-1), dim=-1)[0] + return edge_dist + + def get_weighting(self, h, w, Ly, Lx, device): + weighting = self.delta_border(h, w) + weighting = torch.clip(weighting, self.split_input_params["clip_min_weight"], + self.split_input_params["clip_max_weight"], ) + weighting = weighting.view(1, h * w, 1).repeat(1, 1, Ly * Lx).to(device) + + if self.split_input_params["tie_braker"]: + L_weighting = self.delta_border(Ly, Lx) + L_weighting = torch.clip(L_weighting, + self.split_input_params["clip_min_tie_weight"], + self.split_input_params["clip_max_tie_weight"]) + + L_weighting = L_weighting.view(1, 1, Ly * Lx).to(device) + weighting = weighting * L_weighting + return weighting + + def get_fold_unfold(self, x, kernel_size, stride, uf=1, df=1): # todo load once not every time, shorten code + """ + :param x: img of size (bs, c, h, w) + :return: n img crops of size (n, bs, c, kernel_size[0], kernel_size[1]) + """ + bs, nc, h, w = x.shape + + # number of crops in image + Ly = (h - kernel_size[0]) // stride[0] + 1 + Lx = (w - kernel_size[1]) // stride[1] + 1 + + if uf == 1 and df == 1: + fold_params = dict(kernel_size=kernel_size, dilation=1, padding=0, stride=stride) + unfold = torch.nn.Unfold(**fold_params) + + fold = torch.nn.Fold(output_size=x.shape[2:], **fold_params) + + weighting = self.get_weighting(kernel_size[0], kernel_size[1], Ly, Lx, x.device).to(x.dtype) + normalization = fold(weighting).view(1, 1, h, w) # normalizes the overlap + weighting = weighting.view((1, 1, kernel_size[0], kernel_size[1], Ly * Lx)) + + elif uf > 1 and df == 1: + fold_params = dict(kernel_size=kernel_size, dilation=1, padding=0, stride=stride) + unfold = torch.nn.Unfold(**fold_params) + + fold_params2 = dict(kernel_size=(kernel_size[0] * uf, kernel_size[0] * uf), + dilation=1, padding=0, + stride=(stride[0] * uf, stride[1] * uf)) + fold = torch.nn.Fold(output_size=(x.shape[2] * uf, x.shape[3] * uf), **fold_params2) + + weighting = self.get_weighting(kernel_size[0] * uf, kernel_size[1] * uf, Ly, Lx, x.device).to(x.dtype) + normalization = fold(weighting).view(1, 1, h * uf, w * uf) # normalizes the overlap + weighting = weighting.view((1, 1, kernel_size[0] * uf, kernel_size[1] * uf, Ly * Lx)) + + elif df > 1 and uf == 1: + fold_params = dict(kernel_size=kernel_size, dilation=1, padding=0, stride=stride) + unfold = torch.nn.Unfold(**fold_params) + + fold_params2 = dict(kernel_size=(kernel_size[0] // df, kernel_size[0] // df), + dilation=1, padding=0, + stride=(stride[0] // df, stride[1] // df)) + fold = torch.nn.Fold(output_size=(x.shape[2] // df, x.shape[3] // df), **fold_params2) + + weighting = self.get_weighting(kernel_size[0] // df, kernel_size[1] // df, Ly, Lx, x.device).to(x.dtype) + normalization = fold(weighting).view(1, 1, h // df, w // df) # normalizes the overlap + weighting = weighting.view((1, 1, kernel_size[0] // df, kernel_size[1] // df, Ly * Lx)) + + else: + raise NotImplementedError + + return fold, unfold, normalization, weighting + + @torch.no_grad() + def get_input(self, batch, k, return_first_stage_outputs=False, force_c_encode=False, + cond_key=None, return_original_cond=False, bs=None, return_x=False): + # breakpoint() + if k != 'volume_data' and k != 'slice_data': + x = super().get_input(batch, k) + elif k == 'volume_data': + x = batch[k] + x = x.repeat(1,3,1,1,1) + x = x.to(memory_format=torch.contiguous_format).float() + + if bs is not None: + x = x[:bs] + x = x.to(self.device) + + encoder_posterior = self.encode_first_stage(x) + z = self.get_first_stage_encoding(encoder_posterior).detach() + z = rearrange(z, 'b c z h w -> (b z) c h w') + # breakpoint() + + if self.model.conditioning_key is not None and not self.force_null_conditioning: + if cond_key is None: + cond_key = self.cond_stage_key + if cond_key != self.first_stage_key: + if cond_key in ['caption', 'coordinates_bbox', "txt", "pos_id"]: + xc = batch[cond_key] + elif cond_key in ['class_label', 'cls']: + xc = batch + elif cond_key == 'volume_seg_and_text': + xc = batch['volume_seg'] + xc = xc.repeat(1,3,1,1,1) + + if bs is not None: + xc = xc[:bs] + xc = self.get_first_stage_encoding(self.encode_first_stage(xc)).detach() + z_len=xc.shape[2] + xc = rearrange(xc, 'b c z h w -> (b z) c h w') + xc = xc.to(memory_format=torch.contiguous_format).float() + + # breakpoint() + text = batch['input_text'] + text = list(text) + text_tokens=self.tokenizer(text, return_tensors="pt", padding="max_length", truncation=True, max_length=512).to(self.device) + text_embeddings = self.text_transformer(text_tokens.input_ids, attention_mask = text_tokens.attention_mask ) + enc_text = text_embeddings[0] + enc_text=enc_text[:,None] + enc_text = enc_text.repeat(1,z_len,1,1) + enc_text = rearrange(enc_text, 'b z l c -> (b z) l c') + xc={'c_concat': xc, 'c_crossattn': enc_text} + # breakpoint() + + elif cond_key == 'ref_and_volume_seg': + xc1 = batch['volume_seg'] + slice_num = xc1.shape[1] + xc1 = rearrange(xc1, 'b z h w c -> (b z) c h w') + xc1 = xc1.repeat(1,3,1,1) + if bs is not None: + xc1 = xc1[:bs] + xc1 = self.get_first_stage_encoding(self.encode_first_stage(xc1)).detach() + xc1 = xc1.to(memory_format=torch.contiguous_format).float() + xc2 = batch['volume_ref'] + xc2 = xc2.repeat(1,slice_num,1,1,1) + xc2 = rearrange(xc2, 'b z h w c -> (b z) c h w') + xc2 = xc2.repeat(1,3,1,1) + if bs is not None: + xc2 = xc2[:bs] + xc2 = self.get_first_stage_encoding(self.encode_first_stage(xc2)).detach() + xc2 = xc2.to(memory_format=torch.contiguous_format).float() + xc = torch.cat([xc1, xc2], dim=1) + else: + xc = super().get_input(batch, cond_key).to(self.device) + else: + xc = x + # breakpoint() + if (not self.cond_stage_trainable or force_c_encode) and k != 'volume_data' and cond_key != 'masked_slice' and cond_key != 'masked_slice': + if isinstance(xc, dict) or isinstance(xc, list): + c = self.get_learned_conditioning(xc) + else: + c = self.get_learned_conditioning(xc.to(self.device)) + else: + c = xc + if bs is not None: + c = c[:bs] + # breakpoint() + if self.use_positional_encodings: + pos_x, pos_y = self.compute_latent_shifts(batch) + ckey = __conditioning_keys__[self.model.conditioning_key] + c = {ckey: c, 'pos_x': pos_x, 'pos_y': pos_y} + + else: + c = None + xc = None + if self.use_positional_encodings: + pos_x, pos_y = self.compute_latent_shifts(batch) + c = {'pos_x': pos_x, 'pos_y': pos_y} + out = [z, c] + if return_first_stage_outputs: + xrec = self.decode_first_stage(z) + out.extend([x, xrec]) + if return_x: + out.extend([x]) + if return_original_cond: + out.append(xc) + return out + + @torch.no_grad() + def decode_first_stage(self, z, predict_cids=False, force_not_quantize=False): + if predict_cids: + if z.dim() == 4: + z = torch.argmax(z.exp(), dim=1).long() + z = self.first_stage_model.quantize.get_codebook_entry(z, shape=None) + z = rearrange(z, 'b h w c -> b c h w').contiguous() + + z = 1. / self.scale_factor * z + return self.first_stage_model.decode(z) + + @torch.no_grad() + def encode_first_stage(self, x): + return self.first_stage_model.encode(x) + + def shared_step(self, batch, **kwargs): + x, c = self.get_input(batch, self.first_stage_key) + loss = self(x, c) + return loss + + def forward(self, x, c, *args, **kwargs): + t = torch.randint(0, self.num_timesteps, (x.shape[0],), device=self.device).long() + if self.model.conditioning_key is not None: + assert c is not None + if self.cond_stage_trainable: + c = self.get_learned_conditioning(c) + if self.shorten_cond_schedule: # TODO: drop this option + tc = self.cond_ids[t].to(self.device) + c = self.q_sample(x_start=c, t=tc, noise=torch.randn_like(c.float())) + return self.p_losses(x, c, t, *args, **kwargs) + + def apply_model(self, x_noisy, t, cond, return_ids=False): + if isinstance(cond, dict): + # hybrid case, cond is expected to be a dict + pass + else: + if not isinstance(cond, list): + cond = [cond] + key = 'c_concat' if self.model.conditioning_key == 'concat' else 'c_crossattn' + cond = {key: cond} + # breakpoint() + x_recon = self.model(x_noisy, t, **cond) + + if isinstance(x_recon, tuple) and not return_ids: + return x_recon[0] + else: + return x_recon + + def _predict_eps_from_xstart(self, x_t, t, pred_xstart): + return (extract_into_tensor(self.sqrt_recip_alphas_cumprod, t, x_t.shape) * x_t - pred_xstart) / \ + extract_into_tensor(self.sqrt_recipm1_alphas_cumprod, t, x_t.shape) + + def _prior_bpd(self, x_start): + """ + Get the prior KL term for the variational lower-bound, measured in + bits-per-dim. + This term can't be optimized, as it only depends on the encoder. + :param x_start: the [N x C x ...] tensor of inputs. + :return: a batch of [N] KL values (in bits), one per batch element. + """ + batch_size = x_start.shape[0] + t = torch.tensor([self.num_timesteps - 1] * batch_size, device=x_start.device) + qt_mean, _, qt_log_variance = self.q_mean_variance(x_start, t) + kl_prior = normal_kl(mean1=qt_mean, logvar1=qt_log_variance, mean2=0.0, logvar2=0.0) + return mean_flat(kl_prior) / np.log(2.0) + + def p_losses(self, x_start, cond, t, noise=None): + noise = default(noise, lambda: torch.randn_like(x_start)) + x_noisy = self.q_sample(x_start=x_start, t=t, noise=noise) + model_output = self.apply_model(x_noisy, t, cond) + + loss_dict = {} + prefix = 'train' if self.training else 'val' + + if self.parameterization == "x0": + target = x_start + elif self.parameterization == "eps": + target = noise + elif self.parameterization == "v": + target = self.get_v(x_start, noise, t) + else: + raise NotImplementedError() + + loss_simple = self.get_loss(model_output, target, mean=False).mean([1, 2, 3]) + loss_dict.update({f'{prefix}/loss_simple': loss_simple.mean()}) + + logvar_t = self.logvar[t].to(self.device) + loss = loss_simple / torch.exp(logvar_t) + logvar_t + # loss = loss_simple / torch.exp(self.logvar) + self.logvar + if self.learn_logvar: + loss_dict.update({f'{prefix}/loss_gamma': loss.mean()}) + loss_dict.update({'logvar': self.logvar.data.mean()}) + + loss = self.l_simple_weight * loss.mean() + + loss_vlb = self.get_loss(model_output, target, mean=False).mean(dim=(1, 2, 3)) + loss_vlb = (self.lvlb_weights[t] * loss_vlb).mean() + loss_dict.update({f'{prefix}/loss_vlb': loss_vlb}) + loss += (self.original_elbo_weight * loss_vlb) + loss_dict.update({f'{prefix}/loss': loss}) + + return loss, loss_dict + + def p_mean_variance(self, x, c, t, clip_denoised: bool, return_codebook_ids=False, quantize_denoised=False, + return_x0=False, score_corrector=None, corrector_kwargs=None): + t_in = t + # breakpoint() + model_out = self.apply_model(x, t_in, c, return_ids=return_codebook_ids) + + if score_corrector is not None: + assert self.parameterization == "eps" + model_out = score_corrector.modify_score(self, model_out, x, t, c, **corrector_kwargs) + + if return_codebook_ids: + model_out, logits = model_out + + if self.parameterization == "eps": + x_recon = self.predict_start_from_noise(x, t=t, noise=model_out) + elif self.parameterization == "x0": + x_recon = model_out + else: + raise NotImplementedError() + + if clip_denoised: + x_recon.clamp_(-1., 1.) + if quantize_denoised: + x_recon, _, [_, _, indices] = self.first_stage_model.quantize(x_recon) + model_mean, posterior_variance, posterior_log_variance = self.q_posterior(x_start=x_recon, x_t=x, t=t) + if return_codebook_ids: + return model_mean, posterior_variance, posterior_log_variance, logits + elif return_x0: + return model_mean, posterior_variance, posterior_log_variance, x_recon + else: + return model_mean, posterior_variance, posterior_log_variance + + @torch.no_grad() + def p_sample(self, x, c, t, clip_denoised=False, repeat_noise=False, + return_codebook_ids=False, quantize_denoised=False, return_x0=False, + temperature=1., noise_dropout=0., score_corrector=None, corrector_kwargs=None): + b, *_, device = *x.shape, x.device + outputs = self.p_mean_variance(x=x, c=c, t=t, clip_denoised=clip_denoised, + return_codebook_ids=return_codebook_ids, + quantize_denoised=quantize_denoised, + return_x0=return_x0, + score_corrector=score_corrector, corrector_kwargs=corrector_kwargs) + if return_codebook_ids: + raise DeprecationWarning("Support dropped.") + model_mean, _, model_log_variance, logits = outputs + elif return_x0: + model_mean, _, model_log_variance, x0 = outputs + else: + model_mean, _, model_log_variance = outputs + + noise = noise_like(x.shape, device, repeat_noise) * temperature + if noise_dropout > 0.: + noise = torch.nn.functional.dropout(noise, p=noise_dropout) + # no noise when t == 0 + nonzero_mask = (1 - (t == 0).float()).reshape(b, *((1,) * (len(x.shape) - 1))) + + if return_codebook_ids: + return model_mean + nonzero_mask * (0.5 * model_log_variance).exp() * noise, logits.argmax(dim=1) + if return_x0: + return model_mean + nonzero_mask * (0.5 * model_log_variance).exp() * noise, x0 + else: + return model_mean + nonzero_mask * (0.5 * model_log_variance).exp() * noise + + @torch.no_grad() + def progressive_denoising(self, cond, shape, verbose=True, callback=None, quantize_denoised=False, + img_callback=None, mask=None, x0=None, temperature=1., noise_dropout=0., + score_corrector=None, corrector_kwargs=None, batch_size=None, x_T=None, start_T=None, + log_every_t=None): + if not log_every_t: + log_every_t = self.log_every_t + timesteps = self.num_timesteps + if batch_size is not None: + b = batch_size if batch_size is not None else shape[0] + shape = [batch_size] + list(shape) + else: + b = batch_size = shape[0] + if x_T is None: + img = torch.randn(shape, device=self.device) + else: + img = x_T + intermediates = [] + if cond is not None: + if isinstance(cond, dict): + cond = {key: cond[key][:batch_size] if not isinstance(cond[key], list) else + list(map(lambda x: x[:batch_size], cond[key])) for key in cond} + else: + cond = [c[:batch_size] for c in cond] if isinstance(cond, list) else cond[:batch_size] + + if start_T is not None: + timesteps = min(timesteps, start_T) + iterator = tqdm(reversed(range(0, timesteps)), desc='Progressive Generation', + total=timesteps) if verbose else reversed( + range(0, timesteps)) + if type(temperature) == float: + temperature = [temperature] * timesteps + + for i in iterator: + ts = torch.full((b,), i, device=self.device, dtype=torch.long) + if self.shorten_cond_schedule: + assert self.model.conditioning_key != 'hybrid' + tc = self.cond_ids[ts].to(cond.device) + cond = self.q_sample(x_start=cond, t=tc, noise=torch.randn_like(cond)) + + img, x0_partial = self.p_sample(img, cond, ts, + clip_denoised=self.clip_denoised, + quantize_denoised=quantize_denoised, return_x0=True, + temperature=temperature[i], noise_dropout=noise_dropout, + score_corrector=score_corrector, corrector_kwargs=corrector_kwargs) + if mask is not None: + assert x0 is not None + img_orig = self.q_sample(x0, ts) + img = img_orig * mask + (1. - mask) * img + + if i % log_every_t == 0 or i == timesteps - 1: + intermediates.append(x0_partial) + if callback: callback(i) + if img_callback: img_callback(img, i) + return img, intermediates + + @torch.no_grad() + def p_sample_loop(self, cond, shape, return_intermediates=False, + x_T=None, verbose=True, callback=None, timesteps=None, quantize_denoised=False, + mask=None, x0=None, img_callback=None, start_T=None, + log_every_t=None): + + if not log_every_t: + log_every_t = self.log_every_t + device = self.betas.device + b = shape[0] + if x_T is None: + img = torch.randn(shape, device=device) + else: + img = x_T + + intermediates = [img] + if timesteps is None: + timesteps = self.num_timesteps + + if start_T is not None: + timesteps = min(timesteps, start_T) + iterator = tqdm(reversed(range(0, timesteps)), desc='Sampling t', total=timesteps) if verbose else reversed( + range(0, timesteps)) + + if mask is not None: + assert x0 is not None + assert x0.shape[2:3] == mask.shape[2:3] # spatial size has to match + + for i in iterator: + ts = torch.full((b,), i, device=device, dtype=torch.long) + if self.shorten_cond_schedule: + assert self.model.conditioning_key != 'hybrid' + tc = self.cond_ids[ts].to(cond.device) + cond = self.q_sample(x_start=cond, t=tc, noise=torch.randn_like(cond)) + # breakpoint() + img = self.p_sample(img, cond, ts, + clip_denoised=self.clip_denoised, + quantize_denoised=quantize_denoised) + if mask is not None: + img_orig = self.q_sample(x0, ts) + img = img_orig * mask + (1. - mask) * img + + if i % log_every_t == 0 or i == timesteps - 1: + intermediates.append(img) + if callback: callback(i) + if img_callback: img_callback(img, i) + + if return_intermediates: + return img, intermediates + return img + + @torch.no_grad() + def sample(self, cond, batch_size=16, return_intermediates=False, x_T=None, + verbose=True, timesteps=None, quantize_denoised=False, + mask=None, x0=None, shape=None, **kwargs): + if shape is None: + shape = (batch_size, self.channels, self.image_size, self.image_size) + if cond is not None: + if isinstance(cond, dict): + cond = {key: cond[key][:batch_size] if not isinstance(cond[key], list) else + list(map(lambda x: x[:batch_size], cond[key])) for key in cond} + else: + cond = [c[:batch_size] for c in cond] if isinstance(cond, list) else cond[:batch_size] + return self.p_sample_loop(cond, + shape, + return_intermediates=return_intermediates, x_T=x_T, + verbose=verbose, timesteps=timesteps, quantize_denoised=quantize_denoised, + mask=mask, x0=x0) + + @torch.no_grad() + def sample_log(self, cond, batch_size, ddim, ddim_steps, **kwargs): + if ddim: + ddim_sampler = DDIMSampler(self) + # breakpoint() + # if self.model.conditioning_key == 'crossattn' or self.model.conditioning_key == 'hybrid': + # shape = (self.channels, self.image_size, self.image_size) + # else: + # shape = ((self.channels)//2, self.image_size, self.image_size) + # breakpoint() + shape = (16, self.image_size, self.image_size) + samples, intermediates = ddim_sampler.sample(ddim_steps, batch_size, + shape, cond, verbose=False, **kwargs) + + else: + samples, intermediates = self.sample(cond=cond, batch_size=batch_size, + return_intermediates=True, **kwargs) + + return samples, intermediates + + @torch.no_grad() + def get_unconditional_conditioning(self, batch_size, null_label=None): + if null_label is not None: + xc = null_label + if isinstance(xc, ListConfig): + xc = list(xc) + if isinstance(xc, dict) or isinstance(xc, list): + c = self.get_learned_conditioning(xc) + else: + if hasattr(xc, "to"): + xc = xc.to(self.device) + c = self.get_learned_conditioning(xc) + else: + if self.cond_stage_key in ["class_label", "cls"]: + xc = self.cond_stage_model.get_unconditional_conditioning(batch_size, device=self.device) + return self.get_learned_conditioning(xc) + else: + raise NotImplementedError("todo") + if isinstance(c, list): # in case the encoder gives us a list + for i in range(len(c)): + c[i] = repeat(c[i], '1 ... -> b ...', b=batch_size).to(self.device) + else: + c = repeat(c, '1 ... -> b ...', b=batch_size).to(self.device) + return c + + @torch.no_grad() + def log_images(self, batch, N=32, n_row=4, sample=True, ddim_steps=20, ddim_eta=0., return_keys=None, + quantize_denoised=True, inpaint=True, plot_denoise_rows=False, plot_progressive_rows=True, + plot_diffusion_rows=True, unconditional_guidance_scale=1., unconditional_guidance_label=None, + use_ema_scope=True, + **kwargs): + ema_scope = self.ema_scope if use_ema_scope else nullcontext + use_ddim = ddim_steps is not None + + plot_diffusion_rows = False + plot_progressive_rows = False + inpaint = False + + log = dict() + + z, c, x, xrec, xc = self.get_input(batch, self.first_stage_key, + return_first_stage_outputs=True, + force_c_encode=True, + return_original_cond=True, + # bs=N + ) + N = x.shape[0] + # N = min(x.shape[0], N) + n_row = min(x.shape[0], n_row) + # breakpoint() + log["inputs"] = x + log["reconstruction"] = xrec + # if self.model.conditioning_key is not None: + # if hasattr(self.cond_stage_model, "decode"): + # # xc = self.cond_stage_model.decode(c) + # if c.shape[1] == 8: + # xc = self.decode_first_stage(c[:,:4]) + # elif c.shape[1] == 6: + # xc = self.decode_first_stage(c[:, :3]) + # else: + # xc = self.decode_first_stage(c) + # log["conditioning"] = xc + # elif self.cond_stage_key in ["caption", "txt"]: + # xc = log_txt_as_img((x.shape[2], x.shape[3]), batch[self.cond_stage_key], size=x.shape[2] // 25) + # log["conditioning"] = xc + # elif self.cond_stage_key in ['class_label', "cls"]: + # try: + # xc = log_txt_as_img((x.shape[2], x.shape[3]), batch["human_label"], size=x.shape[2] // 25) + # log['conditioning'] = xc + # except KeyError: + # # probably no "human_label" in batch + # pass + # elif isimage(xc): + # log["conditioning"] = xc + # if ismap(xc): + # log["original_conditioning"] = self.to_rgb(xc) + + if plot_diffusion_rows: + # get diffusion row + diffusion_row = list() + z_start = z[:n_row] + for t in range(self.num_timesteps): + if t % self.log_every_t == 0 or t == self.num_timesteps - 1: + t = repeat(torch.tensor([t]), '1 -> b', b=n_row) + t = t.to(self.device).long() + noise = torch.randn_like(z_start) + z_noisy = self.q_sample(x_start=z_start, t=t, noise=noise) + diffusion_row.append(self.decode_first_stage(z_noisy)) + + diffusion_row = torch.stack(diffusion_row) # n_log_step, n_row, C, H, W + diffusion_grid = rearrange(diffusion_row, 'n b c h w -> b n c h w') + diffusion_grid = rearrange(diffusion_grid, 'b n c h w -> (b n) c h w') + diffusion_grid = make_grid(diffusion_grid, nrow=diffusion_row.shape[0]) + log["diffusion_row"] = diffusion_grid + + # breakpoint() + if sample: + # get denoise row + with ema_scope("Sampling"): + # breakpoint() + samples, z_denoise_row = self.sample_log(cond=c, batch_size=N, ddim=use_ddim, + ddim_steps=ddim_steps, eta=ddim_eta) + # samples, z_denoise_row = self.sample(cond=c, batch_size=N, return_intermediates=True) + x_samples = self.decode_first_stage(samples) + log["samples"] = x_samples + if plot_denoise_rows: + denoise_grid = self._get_denoise_row_from_list(z_denoise_row) + log["denoise_row"] = denoise_grid + + if quantize_denoised and not isinstance(self.first_stage_model, AutoencoderKL) and not isinstance( + self.first_stage_model, IdentityFirstStage): + # also display when quantizing x0 while sampling + with ema_scope("Plotting Quantized Denoised"): + samples, z_denoise_row = self.sample_log(cond=c, batch_size=N, ddim=use_ddim, + ddim_steps=ddim_steps, eta=ddim_eta, + quantize_denoised=True) + # samples, z_denoise_row = self.sample(cond=c, batch_size=N, return_intermediates=True, + # quantize_denoised=True) + x_samples = self.decode_first_stage(samples.to(self.device)) + log["samples_x0_quantized"] = x_samples + + if unconditional_guidance_scale > 1.0: + uc = self.get_unconditional_conditioning(N, unconditional_guidance_label) + if self.model.conditioning_key == "crossattn-adm": + uc = {"c_crossattn": [uc], "c_adm": c["c_adm"]} + with ema_scope("Sampling with classifier-free guidance"): + samples_cfg, _ = self.sample_log(cond=c, batch_size=N, ddim=use_ddim, + ddim_steps=ddim_steps, eta=ddim_eta, + unconditional_guidance_scale=unconditional_guidance_scale, + unconditional_conditioning=uc, + ) + x_samples_cfg = self.decode_first_stage(samples_cfg) + log[f"samples_cfg_scale_{unconditional_guidance_scale:.2f}"] = x_samples_cfg + + if inpaint: + # make a simple center square + b, h, w = z.shape[0], z.shape[2], z.shape[3] + mask = torch.ones(N, h, w).to(self.device) + # zeros will be filled in + mask[:, h // 4:3 * h // 4, w // 4:3 * w // 4] = 0. + mask = mask[:, None, ...] + with ema_scope("Plotting Inpaint"): + samples, _ = self.sample_log(cond=c, batch_size=N, ddim=use_ddim, eta=ddim_eta, + ddim_steps=ddim_steps, x0=z[:N], mask=mask) + x_samples = self.decode_first_stage(samples.to(self.device)) + log["samples_inpainting"] = x_samples + log["mask"] = mask + + # outpaint + mask = 1. - mask + with ema_scope("Plotting Outpaint"): + samples, _ = self.sample_log(cond=c, batch_size=N, ddim=use_ddim, eta=ddim_eta, + ddim_steps=ddim_steps, x0=z[:N], mask=mask) + x_samples = self.decode_first_stage(samples.to(self.device)) + log["samples_outpainting"] = x_samples + + if plot_progressive_rows: + with ema_scope("Plotting Progressives"): + img, progressives = self.progressive_denoising(c, + shape=(self.channels, self.image_size, self.image_size), + batch_size=N) + prog_row = self._get_denoise_row_from_list(progressives, desc="Progressive Generation") + log["progressive_row"] = prog_row + + if return_keys: + if np.intersect1d(list(log.keys()), return_keys).shape[0] == 0: + return log + else: + return {key: log[key] for key in return_keys} + return log + + def configure_optimizers(self): + lr = self.learning_rate + params = list(self.model.parameters()) + if self.cond_stage_trainable: + print(f"{self.__class__.__name__}: Also optimizing conditioner params!") + params = params + list(self.cond_stage_model.parameters()) + if self.learn_logvar: + print('Diffusion model optimizing logvar') + params.append(self.logvar) + opt = torch.optim.AdamW(params, lr=lr) + if self.use_scheduler: + assert 'target' in self.scheduler_config + scheduler = instantiate_from_config(self.scheduler_config) + + print("Setting up LambdaLR scheduler...") + scheduler = [ + { + 'scheduler': LambdaLR(opt, lr_lambda=scheduler.schedule), + 'interval': 'step', + 'frequency': 1 + }] + return [opt], scheduler + return opt + + @torch.no_grad() + def to_rgb(self, x): + x = x.float() + if not hasattr(self, "colorize"): + self.colorize = torch.randn(3, x.shape[1], 1, 1).to(x) + x = nn.functional.conv2d(x, weight=self.colorize) + x = 2. * (x - x.min()) / (x.max() - x.min()) - 1. + return x + + +class DiffusionWrapper(pl.LightningModule): + def __init__(self, diff_model_config, conditioning_key): + super().__init__() + self.sequential_cross_attn = diff_model_config.pop("sequential_crossattn", False) + self.diffusion_model = instantiate_from_config(diff_model_config) + self.conditioning_key = conditioning_key + assert self.conditioning_key in [None, 'concat', 'crossattn', 'hybrid', 'adm', 'hybrid-adm', 'crossattn-adm'] + + def forward(self, x, t, c_concat: list = None, c_crossattn: list = None, c_adm=None): + # breakpoint() + if self.conditioning_key is None: + out = self.diffusion_model(x, t) + elif self.conditioning_key == 'concat': + xc = torch.cat([x] + c_concat, dim=1) + out = self.diffusion_model(xc, t) + elif self.conditioning_key == 'crossattn': + # breakpoint() + xc = torch.cat([x] + [c_concat], dim=1) + cc = torch.cat([c_crossattn], 1) + out = self.diffusion_model(xc, t, context=cc) + elif self.conditioning_key == 'hybrid': + xc = torch.cat([x] + c_crossattn, dim=1) + cc = torch.cat(c_crossattn, 1) + out = self.diffusion_model(xc, t, context=cc) + elif self.conditioning_key == 'hybrid-adm': + assert c_adm is not None + xc = torch.cat([x] + c_concat, dim=1) + cc = torch.cat(c_crossattn, 1) + out = self.diffusion_model(xc, t, context=cc, y=c_adm) + elif self.conditioning_key == 'crossattn-adm': + assert c_adm is not None + cc = torch.cat(c_crossattn, 1) + out = self.diffusion_model(x, t, context=cc, y=c_adm) + elif self.conditioning_key == 'adm': + cc = c_crossattn[0] + out = self.diffusion_model(x, t, y=cc) + else: + raise NotImplementedError() + + return out diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm_pseudo3D.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm_pseudo3D.py new file mode 100644 index 0000000000000000000000000000000000000000..fb42735f1851b9e50450ea481657fbeddcdaea54 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm_pseudo3D.py @@ -0,0 +1,1463 @@ +""" +wild mixture of +https://github.com/lucidrains/denoising-diffusion-pytorch/blob/7706bdfc6f527f58d33f84b7b522e61e6e3164b3/denoising_diffusion_pytorch/denoising_diffusion_pytorch.py +https://github.com/openai/improved-diffusion/blob/e94489283bb876ac1477d5dd7709bbbd2d9902ce/improved_diffusion/gaussian_diffusion.py +https://github.com/CompVis/taming-transformers +-- merci +""" + +import torch +import torch.nn as nn +import numpy as np +import pytorch_lightning as pl +from torch.optim.lr_scheduler import LambdaLR +from einops import rearrange, repeat +from contextlib import contextmanager, nullcontext +from functools import partial +import itertools +from tqdm import tqdm +from torchvision.utils import make_grid +from pytorch_lightning.utilities.distributed import rank_zero_only +from omegaconf import ListConfig + +from ldm.util import log_txt_as_img, exists, default, ismap, isimage, mean_flat, count_params, instantiate_from_config +from ldm.modules.ema import LitEma +from ldm.modules.distributions.distributions import normal_kl, DiagonalGaussianDistribution +from ldm.models.autoencoder import IdentityFirstStage, AutoencoderKL +from ldm.modules.diffusionmodules.util import make_beta_schedule, extract_into_tensor, noise_like +from ldm.models.diffusion.ddim import DDIMSampler +from transformers import BertTokenizer,BertModel + + +__conditioning_keys__ = {'concat': 'c_concat', + 'crossattn': 'c_crossattn', + 'adm': 'y'} + +weights = [2000 - i for i in range(1000)] +weights = torch.tensor(weights, dtype=torch.float) + +def disabled_train(self, mode=True): + """Overwrite model.train with this function to make sure train/eval mode + does not change anymore.""" + return self + + +def uniform_on_device(r1, r2, shape, device): + return (r1 - r2) * torch.rand(*shape, device=device) + r2 + + +class DDPM(pl.LightningModule): + # classic DDPM with Gaussian diffusion, in image space + def __init__(self, + unet_config, + timesteps=1000, + beta_schedule="linear", + loss_type="l2", + ckpt_path=None, + ignore_keys=[], + load_only_unet=False, + monitor="val/loss", + use_ema=True, + first_stage_key="image", + image_size=256, + channels=3, + log_every_t=100, + clip_denoised=True, + linear_start=1e-4, + linear_end=2e-2, + cosine_s=8e-3, + given_betas=None, + original_elbo_weight=0., + v_posterior=0., # weight for choosing posterior variance as sigma = (1-v) * beta_tilde + v * beta + l_simple_weight=1., + conditioning_key=None, + parameterization="eps", # all assuming fixed variance schedules + scheduler_config=None, + use_positional_encodings=False, + learn_logvar=False, + logvar_init=0., + make_it_fit=False, + ucg_training=None, + reset_ema=False, + reset_num_ema_updates=False, + ): + super().__init__() + assert parameterization in ["eps", "x0", "v"], 'currently only supporting "eps" and "x0" and "v"' + self.parameterization = parameterization + print(f"{self.__class__.__name__}: Running in {self.parameterization}-prediction mode") + self.cond_stage_model = None + self.clip_denoised = clip_denoised + self.log_every_t = log_every_t + self.first_stage_key = first_stage_key + self.image_size = image_size # try conv? + self.channels = channels + self.use_positional_encodings = use_positional_encodings + self.model = DiffusionWrapper(unet_config, conditioning_key) + count_params(self.model, verbose=True) + self.use_ema = use_ema + if self.use_ema: + self.model_ema = LitEma(self.model) + print(f"Keeping EMAs of {len(list(self.model_ema.buffers()))}.") + + self.use_scheduler = scheduler_config is not None + if self.use_scheduler: + self.scheduler_config = scheduler_config + + self.v_posterior = v_posterior + self.original_elbo_weight = original_elbo_weight + self.l_simple_weight = l_simple_weight + + if monitor is not None: + self.monitor = monitor + self.make_it_fit = make_it_fit + if reset_ema: assert exists(ckpt_path) + if ckpt_path is not None: + self.init_from_ckpt(ckpt_path, ignore_keys=ignore_keys, only_model=load_only_unet) + if reset_ema: + assert self.use_ema + print(f"Resetting ema to pure model weights. This is useful when restoring from an ema-only checkpoint.") + self.model_ema = LitEma(self.model) + if reset_num_ema_updates: + print(" +++++++++++ WARNING: RESETTING NUM_EMA UPDATES TO ZERO +++++++++++ ") + assert self.use_ema + self.model_ema.reset_num_updates() + + self.register_schedule(given_betas=given_betas, beta_schedule=beta_schedule, timesteps=timesteps, + linear_start=linear_start, linear_end=linear_end, cosine_s=cosine_s) + + self.loss_type = loss_type + + self.learn_logvar = learn_logvar + logvar = torch.full(fill_value=logvar_init, size=(self.num_timesteps,)) + if self.learn_logvar: + self.logvar = nn.Parameter(self.logvar, requires_grad=True) + else: + self.register_buffer('logvar', logvar) + + self.ucg_training = ucg_training or dict() + if self.ucg_training: + self.ucg_prng = np.random.RandomState() + + def register_schedule(self, given_betas=None, beta_schedule="linear", timesteps=1000, + linear_start=1e-4, linear_end=2e-2, cosine_s=8e-3): + if exists(given_betas): + betas = given_betas + else: + betas = make_beta_schedule(beta_schedule, timesteps, linear_start=linear_start, linear_end=linear_end, + cosine_s=cosine_s) + alphas = 1. - betas + alphas_cumprod = np.cumprod(alphas, axis=0) + alphas_cumprod_prev = np.append(1., alphas_cumprod[:-1]) + + timesteps, = betas.shape + self.num_timesteps = int(timesteps) + self.linear_start = linear_start + self.linear_end = linear_end + assert alphas_cumprod.shape[0] == self.num_timesteps, 'alphas have to be defined for each timestep' + + to_torch = partial(torch.tensor, dtype=torch.float32) + + self.register_buffer('betas', to_torch(betas)) + self.register_buffer('alphas_cumprod', to_torch(alphas_cumprod)) + self.register_buffer('alphas_cumprod_prev', to_torch(alphas_cumprod_prev)) + + # calculations for diffusion q(x_t | x_{t-1}) and others + self.register_buffer('sqrt_alphas_cumprod', to_torch(np.sqrt(alphas_cumprod))) + self.register_buffer('sqrt_one_minus_alphas_cumprod', to_torch(np.sqrt(1. - alphas_cumprod))) + self.register_buffer('log_one_minus_alphas_cumprod', to_torch(np.log(1. - alphas_cumprod))) + self.register_buffer('sqrt_recip_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod))) + self.register_buffer('sqrt_recipm1_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod - 1))) + + # calculations for posterior q(x_{t-1} | x_t, x_0) + posterior_variance = (1 - self.v_posterior) * betas * (1. - alphas_cumprod_prev) / ( + 1. - alphas_cumprod) + self.v_posterior * betas + # above: equal to 1. / (1. / (1. - alpha_cumprod_tm1) + alpha_t / beta_t) + self.register_buffer('posterior_variance', to_torch(posterior_variance)) + # below: log calculation clipped because the posterior variance is 0 at the beginning of the diffusion chain + self.register_buffer('posterior_log_variance_clipped', to_torch(np.log(np.maximum(posterior_variance, 1e-20)))) + self.register_buffer('posterior_mean_coef1', to_torch( + betas * np.sqrt(alphas_cumprod_prev) / (1. - alphas_cumprod))) + self.register_buffer('posterior_mean_coef2', to_torch( + (1. - alphas_cumprod_prev) * np.sqrt(alphas) / (1. - alphas_cumprod))) + + if self.parameterization == "eps": + lvlb_weights = self.betas ** 2 / ( + 2 * self.posterior_variance * to_torch(alphas) * (1 - self.alphas_cumprod)) + elif self.parameterization == "x0": + lvlb_weights = 0.5 * np.sqrt(torch.Tensor(alphas_cumprod)) / (2. * 1 - torch.Tensor(alphas_cumprod)) + elif self.parameterization == "v": + lvlb_weights = torch.ones_like(self.betas ** 2 / ( + 2 * self.posterior_variance * to_torch(alphas) * (1 - self.alphas_cumprod))) + else: + raise NotImplementedError("mu not supported") + lvlb_weights[0] = lvlb_weights[1] + self.register_buffer('lvlb_weights', lvlb_weights, persistent=False) + assert not torch.isnan(self.lvlb_weights).all() + + @contextmanager + def ema_scope(self, context=None): + if self.use_ema: + self.model_ema.store(self.model.parameters()) + self.model_ema.copy_to(self.model) + if context is not None: + print(f"{context}: Switched to EMA weights") + try: + yield None + finally: + if self.use_ema: + self.model_ema.restore(self.model.parameters()) + if context is not None: + print(f"{context}: Restored training weights") + + @torch.no_grad() + def init_from_ckpt(self, path, ignore_keys=list(), only_model=False): + sd = torch.load(path, map_location="cpu") + if "state_dict" in list(sd.keys()): + sd = sd["state_dict"] + keys = list(sd.keys()) + for k in keys: + for ik in ignore_keys: + if k.startswith(ik): + print("Deleting key {} from state_dict.".format(k)) + del sd[k] + if self.make_it_fit: + n_params = len([name for name, _ in + itertools.chain(self.named_parameters(), + self.named_buffers())]) + for name, param in tqdm( + itertools.chain(self.named_parameters(), + self.named_buffers()), + desc="Fitting old weights to new weights", + total=n_params + ): + if not name in sd: + continue + old_shape = sd[name].shape + new_shape = param.shape + assert len(old_shape) == len(new_shape) + if len(new_shape) > 2: + # we only modify first two axes + assert new_shape[2:] == old_shape[2:] + # assumes first axis corresponds to output dim + if not new_shape == old_shape: + new_param = param.clone() + old_param = sd[name] + if len(new_shape) == 1: + for i in range(new_param.shape[0]): + new_param[i] = old_param[i % old_shape[0]] + elif len(new_shape) >= 2: + for i in range(new_param.shape[0]): + for j in range(new_param.shape[1]): + new_param[i, j] = old_param[i % old_shape[0], j % old_shape[1]] + + n_used_old = torch.ones(old_shape[1]) + for j in range(new_param.shape[1]): + n_used_old[j % old_shape[1]] += 1 + n_used_new = torch.zeros(new_shape[1]) + for j in range(new_param.shape[1]): + n_used_new[j] = n_used_old[j % old_shape[1]] + + n_used_new = n_used_new[None, :] + while len(n_used_new.shape) < len(new_shape): + n_used_new = n_used_new.unsqueeze(-1) + new_param /= n_used_new + + sd[name] = new_param + + missing, unexpected = self.load_state_dict(sd, strict=False) if not only_model else self.model.load_state_dict( + sd, strict=False) + print(f"Restored from {path} with {len(missing)} missing and {len(unexpected)} unexpected keys") + if len(missing) > 0: + print(f"Missing Keys:\n {missing}") + if len(unexpected) > 0: + print(f"\nUnexpected Keys:\n {unexpected}") + + def q_mean_variance(self, x_start, t): + """ + Get the distribution q(x_t | x_0). + :param x_start: the [N x C x ...] tensor of noiseless inputs. + :param t: the number of diffusion steps (minus 1). Here, 0 means one step. + :return: A tuple (mean, variance, log_variance), all of x_start's shape. + """ + mean = (extract_into_tensor(self.sqrt_alphas_cumprod, t, x_start.shape) * x_start) + variance = extract_into_tensor(1.0 - self.alphas_cumprod, t, x_start.shape) + log_variance = extract_into_tensor(self.log_one_minus_alphas_cumprod, t, x_start.shape) + return mean, variance, log_variance + + def predict_start_from_noise(self, x_t, t, noise): + return ( + extract_into_tensor(self.sqrt_recip_alphas_cumprod, t, x_t.shape) * x_t - + extract_into_tensor(self.sqrt_recipm1_alphas_cumprod, t, x_t.shape) * noise + ) + + def predict_start_from_z_and_v(self, x_t, t, v): + # self.register_buffer('sqrt_alphas_cumprod', to_torch(np.sqrt(alphas_cumprod))) + # self.register_buffer('sqrt_one_minus_alphas_cumprod', to_torch(np.sqrt(1. - alphas_cumprod))) + return ( + extract_into_tensor(self.sqrt_alphas_cumprod, t, x_t.shape) * x_t - + extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x_t.shape) * v + ) + + def predict_eps_from_z_and_v(self, x_t, t, v): + return ( + extract_into_tensor(self.sqrt_alphas_cumprod, t, x_t.shape) * v + + extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x_t.shape) * x_t + ) + + def q_posterior(self, x_start, x_t, t): + posterior_mean = ( + extract_into_tensor(self.posterior_mean_coef1, t, x_t.shape) * x_start + + extract_into_tensor(self.posterior_mean_coef2, t, x_t.shape) * x_t + ) + posterior_variance = extract_into_tensor(self.posterior_variance, t, x_t.shape) + posterior_log_variance_clipped = extract_into_tensor(self.posterior_log_variance_clipped, t, x_t.shape) + return posterior_mean, posterior_variance, posterior_log_variance_clipped + + def p_mean_variance(self, x, t, clip_denoised: bool): + model_out = self.model(x, t) + if self.parameterization == "eps": + x_recon = self.predict_start_from_noise(x, t=t, noise=model_out) + elif self.parameterization == "x0": + x_recon = model_out + if clip_denoised: + x_recon.clamp_(-1., 1.) + + model_mean, posterior_variance, posterior_log_variance = self.q_posterior(x_start=x_recon, x_t=x, t=t) + return model_mean, posterior_variance, posterior_log_variance + + @torch.no_grad() + def p_sample(self, x, t, clip_denoised=True, repeat_noise=False): + b, *_, device = *x.shape, x.device + model_mean, _, model_log_variance = self.p_mean_variance(x=x, t=t, clip_denoised=clip_denoised) + noise = noise_like(x.shape, device, repeat_noise) + # no noise when t == 0 + nonzero_mask = (1 - (t == 0).float()).reshape(b, *((1,) * (len(x.shape) - 1))) + return model_mean + nonzero_mask * (0.5 * model_log_variance).exp() * noise + + @torch.no_grad() + def p_sample_loop(self, shape, return_intermediates=False): + device = self.betas.device + b = shape[0] + img = torch.randn(shape, device=device) + intermediates = [img] + for i in tqdm(reversed(range(0, self.num_timesteps)), desc='Sampling t', total=self.num_timesteps): + img = self.p_sample(img, torch.full((b,), i, device=device, dtype=torch.long), + clip_denoised=self.clip_denoised) + if i % self.log_every_t == 0 or i == self.num_timesteps - 1: + intermediates.append(img) + if return_intermediates: + return img, intermediates + return img + + @torch.no_grad() + def sample(self, batch_size=16, return_intermediates=False): + image_size = self.image_size + channels = self.channels + return self.p_sample_loop((batch_size, channels, image_size, image_size), + return_intermediates=return_intermediates) + + def q_sample(self, x_start, t, noise=None): + noise = default(noise, lambda: torch.randn_like(x_start)) + # breakpoint() + return (extract_into_tensor(self.sqrt_alphas_cumprod, t, x_start.shape) * x_start + + extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x_start.shape) * noise) + + def get_v(self, x, noise, t): + return ( + extract_into_tensor(self.sqrt_alphas_cumprod, t, x.shape) * noise - + extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x.shape) * x + ) + + def get_loss(self, pred, target, mean=True): + if self.loss_type == 'l1': + loss = (target - pred).abs() + if mean: + loss = loss.mean() + elif self.loss_type == 'l2': + if mean: + loss = torch.nn.functional.mse_loss(target, pred) + else: + loss = torch.nn.functional.mse_loss(target, pred, reduction='none') + else: + raise NotImplementedError("unknown loss type '{loss_type}'") + + return loss + + def p_losses(self, x_start, t, noise=None): + noise = default(noise, lambda: torch.randn_like(x_start)) + x_noisy = self.q_sample(x_start=x_start, t=t, noise=noise) + model_out = self.model(x_noisy, t) + + loss_dict = {} + if self.parameterization == "eps": + target = noise + elif self.parameterization == "x0": + target = x_start + elif self.parameterization == "v": + target = self.get_v(x_start, noise, t) + else: + raise NotImplementedError(f"Parameterization {self.parameterization} not yet supported") + + loss = self.get_loss(model_out, target, mean=False).mean(dim=[1, 2, 3]) + + log_prefix = 'train' if self.training else 'val' + + loss_dict.update({f'{log_prefix}/loss_simple': loss.mean()}) + loss_simple = loss.mean() * self.l_simple_weight + + loss_vlb = (self.lvlb_weights[t] * loss).mean() + loss_dict.update({f'{log_prefix}/loss_vlb': loss_vlb}) + + loss = loss_simple + self.original_elbo_weight * loss_vlb + + loss_dict.update({f'{log_prefix}/loss': loss}) + + return loss, loss_dict + + def forward(self, x, *args, **kwargs): + # b, c, h, w, device, img_size, = *x.shape, x.device, self.image_size + # assert h == img_size and w == img_size, f'height and width of image must be {img_size}' + t = torch.randint(0, self.num_timesteps, (x.shape[0],), device=self.device).long() + return self.p_losses(x, t, *args, **kwargs) + + def get_input(self, batch, k): + x = batch[k] + if len(x.shape) == 3: + x = x[..., None] + x = rearrange(x, 'b h w c -> b c h w') + x = x.to(memory_format=torch.contiguous_format).float() + return x + + def shared_step(self, batch): + x = self.get_input(batch, self.first_stage_key) + loss, loss_dict = self(x) + return loss, loss_dict + + def training_step(self, batch, batch_idx): + for k in self.ucg_training: + p = self.ucg_training[k]["p"] + val = self.ucg_training[k]["val"] + if val is None: + val = "" + for i in range(len(batch[k])): + if self.ucg_prng.choice(2, p=[1 - p, p]): + batch[k][i] = val + + loss, loss_dict = self.shared_step(batch) + + self.log_dict(loss_dict, prog_bar=True, + logger=True, on_step=True, on_epoch=True) + + self.log("global_step", self.global_step, + prog_bar=True, logger=True, on_step=True, on_epoch=False) + + if self.use_scheduler: + lr = self.optimizers().param_groups[0]['lr'] + self.log('lr_abs', lr, prog_bar=True, logger=True, on_step=True, on_epoch=False) + + return loss + + @torch.no_grad() + def validation_step(self, batch, batch_idx): + _, loss_dict_no_ema = self.shared_step(batch) + with self.ema_scope(): + _, loss_dict_ema = self.shared_step(batch) + loss_dict_ema = {key + '_ema': loss_dict_ema[key] for key in loss_dict_ema} + self.log_dict(loss_dict_no_ema, prog_bar=False, logger=True, on_step=False, on_epoch=True) + self.log_dict(loss_dict_ema, prog_bar=False, logger=True, on_step=False, on_epoch=True) + + def on_train_batch_end(self, *args, **kwargs): + if self.use_ema: + self.model_ema(self.model) + + def _get_rows_from_list(self, samples): + n_imgs_per_row = len(samples) + denoise_grid = rearrange(samples, 'n b c h w -> b n c h w') + denoise_grid = rearrange(denoise_grid, 'b n c h w -> (b n) c h w') + denoise_grid = make_grid(denoise_grid, nrow=n_imgs_per_row) + return denoise_grid + + @torch.no_grad() + def log_images(self, batch, N=8, n_row=2, sample=True, return_keys=None, **kwargs): + log = dict() + x = self.get_input(batch, self.first_stage_key) + N = min(x.shape[0], N) + n_row = min(x.shape[0], n_row) + x = x.to(self.device)[:N] + log["inputs"] = x + + # get diffusion row + diffusion_row = list() + x_start = x[:n_row] + + for t in range(self.num_timesteps): + if t % self.log_every_t == 0 or t == self.num_timesteps - 1: + t = repeat(torch.tensor([t]), '1 -> b', b=n_row) + t = t.to(self.device).long() + noise = torch.randn_like(x_start) + x_noisy = self.q_sample(x_start=x_start, t=t, noise=noise) + diffusion_row.append(x_noisy) + + log["diffusion_row"] = self._get_rows_from_list(diffusion_row) + + if sample: + # get denoise row + with self.ema_scope("Plotting"): + samples, denoise_row = self.sample(batch_size=N, return_intermediates=True) + + log["samples"] = samples + log["denoise_row"] = self._get_rows_from_list(denoise_row) + + if return_keys: + if np.intersect1d(list(log.keys()), return_keys).shape[0] == 0: + return log + else: + return {key: log[key] for key in return_keys} + return log + + def configure_optimizers(self): + lr = self.learning_rate + params = list(self.model.parameters()) + if self.learn_logvar: + params = params + [self.logvar] + opt = torch.optim.AdamW(params, lr=lr) + return opt + + +class LatentDiffusion(DDPM): + """main class""" + + def __init__(self, + num_timesteps_cond=None, + cond_stage_key="image", + cond_stage_trainable=False, + concat_mode=True, + cond_stage_forward=None, + conditioning_key=None, + scale_factor=1.0, + scale_by_std=False, + force_null_conditioning=False, + fix_t=False, + text_enc='custom', + *args, **kwargs): + self.force_null_conditioning = force_null_conditioning + self.num_timesteps_cond = default(num_timesteps_cond, 1) + self.scale_by_std = scale_by_std + assert self.num_timesteps_cond <= kwargs['timesteps'] + # for backwards compatibility after implementation of DiffusionWrapper + if conditioning_key is None: + conditioning_key = 'concat' if concat_mode else 'crossattn' + + ckpt_path = kwargs.pop("ckpt_path", None) + reset_ema = kwargs.pop("reset_ema", False) + reset_num_ema_updates = kwargs.pop("reset_num_ema_updates", False) + ignore_keys = kwargs.pop("ignore_keys", []) + super().__init__(conditioning_key=conditioning_key, *args, **kwargs) + self.concat_mode = concat_mode + self.cond_stage_trainable = cond_stage_trainable + self.cond_stage_key = cond_stage_key + + if not scale_by_std: + self.scale_factor = scale_factor + else: + self.register_buffer('scale_factor', torch.tensor(scale_factor)) + self.instantiate_first_stage() + # self.instantiate_cond_stage() + self.cond_stage_forward = cond_stage_forward + self.clip_denoised = False + self.bbox_tokenizer = None + self.tokenizer=BertTokenizer.from_pretrained('microsoft/BiomedVLP-CXR-BERT-specialized',do_lower_case=True) + self.text_encode_without_mask=False + self.text_transformer=BertModel.from_pretrained("microsoft/BiomedVLP-CXR-BERT-specialized") + + self.restarted_from_ckpt = False + if ckpt_path is not None: + self.init_from_ckpt(ckpt_path, ignore_keys) + self.restarted_from_ckpt = True + if reset_ema: + assert self.use_ema + print( + f"Resetting ema to pure model weights. This is useful when restoring from an ema-only checkpoint.") + self.model_ema = LitEma(self.model) + if reset_num_ema_updates: + print(" +++++++++++ WARNING: RESETTING NUM_EMA UPDATES TO ZERO +++++++++++ ") + assert self.use_ema + self.model_ema.reset_num_updates() + + self.fix_t = fix_t + + def make_cond_schedule(self, ): + self.cond_ids = torch.full(size=(self.num_timesteps,), fill_value=self.num_timesteps - 1, dtype=torch.long) + ids = torch.round(torch.linspace(0, self.num_timesteps - 1, self.num_timesteps_cond)).long() + self.cond_ids[:self.num_timesteps_cond] = ids + + @rank_zero_only + @torch.no_grad() + def on_train_batch_start(self, batch, batch_idx, dataloader_idx): + # only for very first batch + if self.scale_by_std and self.current_epoch == 0 and self.global_step == 0 and batch_idx == 0 and not self.restarted_from_ckpt: + assert self.scale_factor == 1., 'rather not use custom rescaling and std-rescaling simultaneously' + # set rescale weight to 1./std of encodings + print("### USING STD-RESCALING ###") + x = super().get_input(batch, self.first_stage_key) + x = x.to(self.device) + encoder_posterior = self.encode_first_stage(x) + z = self.get_first_stage_encoding(encoder_posterior).detach() + del self.scale_factor + self.register_buffer('scale_factor', 1. / z.flatten().std()) + print(f"setting self.scale_factor to {self.scale_factor}") + print("### USING STD-RESCALING ###") + + def register_schedule(self, + given_betas=None, beta_schedule="linear", timesteps=1000, + linear_start=1e-4, linear_end=2e-2, cosine_s=8e-3): + super().register_schedule(given_betas, beta_schedule, timesteps, linear_start, linear_end, cosine_s) + + self.shorten_cond_schedule = self.num_timesteps_cond > 1 + if self.shorten_cond_schedule: + self.make_cond_schedule() + + def instantiate_first_stage(self): + from LeanVAE import LeanVAE + vqgan_ckpt='LeanVAE/ckpts/LeanVAE-dim16.ckpt' + model = LeanVAE.load_from_checkpoint(vqgan_ckpt, strict=False) + self.first_stage_model = model.eval() + self.first_stage_model.train = disabled_train + for param in self.first_stage_model.parameters(): + param.requires_grad = False + + def instantiate_cond_stage(self, config): + if not self.cond_stage_trainable: + if config == "__is_first_stage__": + print("Using first stage also as cond stage.") + self.cond_stage_model = self.first_stage_model + elif config == "__is_unconditional__": + print(f"Training {self.__class__.__name__} as an unconditional model.") + self.cond_stage_model = None + # self.be_unconditional = True + else: + model = instantiate_from_config(config) + self.cond_stage_model = model.eval() + self.cond_stage_model.train = disabled_train + for param in self.cond_stage_model.parameters(): + param.requires_grad = False + else: + assert config != '__is_first_stage__' + assert config != '__is_unconditional__' + model = instantiate_from_config(config) + self.cond_stage_model = model + + def _get_denoise_row_from_list(self, samples, desc='', force_no_decoder_quantization=False): + denoise_row = [] + for zd in tqdm(samples, desc=desc): + denoise_row.append(self.decode_first_stage(zd.to(self.device), + force_not_quantize=force_no_decoder_quantization)) + n_imgs_per_row = len(denoise_row) + denoise_row = torch.stack(denoise_row) # n_log_step, n_row, C, H, W + denoise_grid = rearrange(denoise_row, 'n b c h w -> b n c h w') + denoise_grid = rearrange(denoise_grid, 'b n c h w -> (b n) c h w') + denoise_grid = make_grid(denoise_grid, nrow=n_imgs_per_row) + return denoise_grid + + def get_first_stage_encoding(self, encoder_posterior): + if isinstance(encoder_posterior, DiagonalGaussianDistribution): + z = encoder_posterior.sample() + elif isinstance(encoder_posterior, torch.Tensor): + z = encoder_posterior + else: + raise NotImplementedError(f"encoder_posterior of type '{type(encoder_posterior)}' not yet implemented") + return self.scale_factor * z + + def get_learned_conditioning(self, c): + if self.cond_stage_forward is None: + if hasattr(self.cond_stage_model, 'encode') and callable(self.cond_stage_model.encode): + c = self.cond_stage_model.encode(c) + if isinstance(c, DiagonalGaussianDistribution): + c = c.mode() + else: + c = self.cond_stage_model(c) + else: + assert hasattr(self.cond_stage_model, self.cond_stage_forward) + c = getattr(self.cond_stage_model, self.cond_stage_forward)(c) + return c + + def meshgrid(self, h, w): + y = torch.arange(0, h).view(h, 1, 1).repeat(1, w, 1) + x = torch.arange(0, w).view(1, w, 1).repeat(h, 1, 1) + + arr = torch.cat([y, x], dim=-1) + return arr + + def delta_border(self, h, w): + """ + :param h: height + :param w: width + :return: normalized distance to image border, + wtith min distance = 0 at border and max dist = 0.5 at image center + """ + lower_right_corner = torch.tensor([h - 1, w - 1]).view(1, 1, 2) + arr = self.meshgrid(h, w) / lower_right_corner + dist_left_up = torch.min(arr, dim=-1, keepdims=True)[0] + dist_right_down = torch.min(1 - arr, dim=-1, keepdims=True)[0] + edge_dist = torch.min(torch.cat([dist_left_up, dist_right_down], dim=-1), dim=-1)[0] + return edge_dist + + def get_weighting(self, h, w, Ly, Lx, device): + weighting = self.delta_border(h, w) + weighting = torch.clip(weighting, self.split_input_params["clip_min_weight"], + self.split_input_params["clip_max_weight"], ) + weighting = weighting.view(1, h * w, 1).repeat(1, 1, Ly * Lx).to(device) + + if self.split_input_params["tie_braker"]: + L_weighting = self.delta_border(Ly, Lx) + L_weighting = torch.clip(L_weighting, + self.split_input_params["clip_min_tie_weight"], + self.split_input_params["clip_max_tie_weight"]) + + L_weighting = L_weighting.view(1, 1, Ly * Lx).to(device) + weighting = weighting * L_weighting + return weighting + + def get_fold_unfold(self, x, kernel_size, stride, uf=1, df=1): # todo load once not every time, shorten code + """ + :param x: img of size (bs, c, h, w) + :return: n img crops of size (n, bs, c, kernel_size[0], kernel_size[1]) + """ + bs, nc, h, w = x.shape + + # number of crops in image + Ly = (h - kernel_size[0]) // stride[0] + 1 + Lx = (w - kernel_size[1]) // stride[1] + 1 + + if uf == 1 and df == 1: + fold_params = dict(kernel_size=kernel_size, dilation=1, padding=0, stride=stride) + unfold = torch.nn.Unfold(**fold_params) + + fold = torch.nn.Fold(output_size=x.shape[2:], **fold_params) + + weighting = self.get_weighting(kernel_size[0], kernel_size[1], Ly, Lx, x.device).to(x.dtype) + normalization = fold(weighting).view(1, 1, h, w) # normalizes the overlap + weighting = weighting.view((1, 1, kernel_size[0], kernel_size[1], Ly * Lx)) + + elif uf > 1 and df == 1: + fold_params = dict(kernel_size=kernel_size, dilation=1, padding=0, stride=stride) + unfold = torch.nn.Unfold(**fold_params) + + fold_params2 = dict(kernel_size=(kernel_size[0] * uf, kernel_size[0] * uf), + dilation=1, padding=0, + stride=(stride[0] * uf, stride[1] * uf)) + fold = torch.nn.Fold(output_size=(x.shape[2] * uf, x.shape[3] * uf), **fold_params2) + + weighting = self.get_weighting(kernel_size[0] * uf, kernel_size[1] * uf, Ly, Lx, x.device).to(x.dtype) + normalization = fold(weighting).view(1, 1, h * uf, w * uf) # normalizes the overlap + weighting = weighting.view((1, 1, kernel_size[0] * uf, kernel_size[1] * uf, Ly * Lx)) + + elif df > 1 and uf == 1: + fold_params = dict(kernel_size=kernel_size, dilation=1, padding=0, stride=stride) + unfold = torch.nn.Unfold(**fold_params) + + fold_params2 = dict(kernel_size=(kernel_size[0] // df, kernel_size[0] // df), + dilation=1, padding=0, + stride=(stride[0] // df, stride[1] // df)) + fold = torch.nn.Fold(output_size=(x.shape[2] // df, x.shape[3] // df), **fold_params2) + + weighting = self.get_weighting(kernel_size[0] // df, kernel_size[1] // df, Ly, Lx, x.device).to(x.dtype) + normalization = fold(weighting).view(1, 1, h // df, w // df) # normalizes the overlap + weighting = weighting.view((1, 1, kernel_size[0] // df, kernel_size[1] // df, Ly * Lx)) + + else: + raise NotImplementedError + + return fold, unfold, normalization, weighting + + @torch.no_grad() + def get_input(self, batch, k, return_first_stage_outputs=False, force_c_encode=False, + cond_key=None, return_original_cond=False, bs=None, return_x=False): + # breakpoint() + if k != 'volume_data': + x = super().get_input(batch, k) + else: + x = batch[k] + x = x.repeat(1,3,1,1,1) + x = x.to(memory_format=torch.contiguous_format).float() + if bs is not None: + x = x[:bs] + x = x.to(self.device) + # breakpoint() + encoder_posterior = self.encode_first_stage(x) + z = self.get_first_stage_encoding(encoder_posterior).detach() + z = rearrange(z, 'b c z h w -> (b z) c h w') + + if self.model.conditioning_key is not None and not self.force_null_conditioning: + if cond_key is None: + cond_key = self.cond_stage_key + if cond_key != self.first_stage_key: + if cond_key in ['caption', 'coordinates_bbox', "txt"]: + xc = batch[cond_key] + elif cond_key in ['class_label', 'cls']: + xc = batch + elif cond_key == 'volume_seg': + xc = batch['volume_seg'] + xc = rearrange(xc, 'b z h w c -> (b z) c h w') + xc = xc.repeat(1,3,1,1) + if bs is not None: + xc = xc[:bs] + xc = self.get_first_stage_encoding(self.encode_first_stage(xc)).detach() + xc = xc.to(memory_format=torch.contiguous_format).float() + elif cond_key == 'volume_seg_and_text': + xc = batch['volume_seg'] + xc = xc.repeat(1,3,1,1,1) + + if bs is not None: + xc = xc[:bs] + xc = self.get_first_stage_encoding(self.encode_first_stage(xc)).detach() + z_len=xc.shape[2] + xc = rearrange(xc, 'b c z h w -> (b z) c h w') + xc = xc.to(memory_format=torch.contiguous_format).float() + + # breakpoint() + text = batch['input_text'] + text = list(text) + text_tokens=self.tokenizer(text, return_tensors="pt", padding="max_length", truncation=True, max_length=512).to(self.device) + text_embeddings = self.text_transformer(text_tokens.input_ids, attention_mask = text_tokens.attention_mask ) + enc_text = text_embeddings[0] + enc_text=enc_text[:,None] + enc_text = enc_text.repeat(1,z_len,1,1) + enc_text = rearrange(enc_text, 'b z l c -> (b z) l c') + xc={'c_concat': xc, 'c_crossattn': enc_text} + + elif cond_key == 'ref_and_volume_seg': + xc1 = batch['volume_seg'] + slice_num = xc1.shape[1] + xc1 = rearrange(xc1, 'b z h w c -> (b z) c h w') + xc1 = xc1.repeat(1,3,1,1) + if bs is not None: + xc1 = xc1[:bs] + xc1 = self.get_first_stage_encoding(self.encode_first_stage(xc1)).detach() + xc1 = xc1.to(memory_format=torch.contiguous_format).float() + xc2 = batch['volume_ref'] + xc2 = xc2.repeat(1,slice_num,1,1,1) + xc2 = rearrange(xc2, 'b z h w c -> (b z) c h w') + xc2 = xc2.repeat(1,3,1,1) + if bs is not None: + xc2 = xc2[:bs] + xc2 = self.get_first_stage_encoding(self.encode_first_stage(xc2)).detach() + xc2 = xc2.to(memory_format=torch.contiguous_format).float() + xc = torch.cat([xc1, xc2], dim=1) + elif cond_key == 'masked_volume': + xc = batch['masked_data'] + mask_tumor = batch['tumor_mask'] + # breakpoint() + mask_tumor = rearrange(mask_tumor, 'b z h w c -> (b z) c h w') + xc = rearrange(xc, 'b z h w c -> (b z) c h w') + xc = xc.repeat(1,3,1,1) + if bs is not None: + xc = xc[:bs] + mask_tumor=mask_tumor[:bs] + xc = self.get_first_stage_encoding(self.encode_first_stage(xc)).detach() + # breakpoint() + xc = torch.cat([xc, mask_tumor], dim=1).detach() + xc = xc.to(memory_format=torch.contiguous_format).float() + else: + xc = super().get_input(batch, cond_key).to(self.device) + else: + xc = x + if (not self.cond_stage_trainable or force_c_encode) and k != 'volume_data': + if isinstance(xc, dict) or isinstance(xc, list): + c = self.get_learned_conditioning(xc) + else: + c = self.get_learned_conditioning(xc.to(self.device)) + else: + c = xc + if bs is not None: + c = c[:bs] + + if self.use_positional_encodings: + pos_x, pos_y = self.compute_latent_shifts(batch) + ckey = __conditioning_keys__[self.model.conditioning_key] + c = {ckey: c, 'pos_x': pos_x, 'pos_y': pos_y} + + else: + c = None + xc = None + if self.use_positional_encodings: + pos_x, pos_y = self.compute_latent_shifts(batch) + c = {'pos_x': pos_x, 'pos_y': pos_y} + out = [z, c] + if return_first_stage_outputs: + xrec = self.decode_first_stage(z) + out.extend([x, xrec]) + if return_x: + out.extend([x]) + if return_original_cond: + out.append(xc) + return out + + @torch.no_grad() + def decode_first_stage(self, z, predict_cids=False, force_not_quantize=False): + if predict_cids: + if z.dim() == 4: + z = torch.argmax(z.exp(), dim=1).long() + z = self.first_stage_model.quantize.get_codebook_entry(z, shape=None) + z = rearrange(z, 'b h w c -> b c h w').contiguous() + + z = 1. / self.scale_factor * z + return self.first_stage_model.decode(z) + + @torch.no_grad() + def encode_first_stage(self, x): + return self.first_stage_model.encode(x) + + def shared_step(self, batch, **kwargs): + x, c = self.get_input(batch, self.first_stage_key) + loss = self(x, c) + return loss + + def forward(self, x, c, *args, **kwargs): + if not self.fix_t: + t = torch.randint(0, self.num_timesteps, (x.shape[0],), device=self.device).long() + else: + t = torch.multinomial(weights, x.shape[0]//17, replacement=True) + t = t.reshape(((x.shape[0]//17,))).long().to(self.device) + t = t.unsqueeze(1) + t = t.repeat(1,17) + t = rearrange(t, 'b t-> (b t)') + # breakpoint() + if self.model.conditioning_key is not None: + assert c is not None + if self.cond_stage_trainable: + c = self.get_learned_conditioning(c) + if self.shorten_cond_schedule: # TODO: drop this option + tc = self.cond_ids[t].to(self.device) + c = self.q_sample(x_start=c, t=tc, noise=torch.randn_like(c.float())) + return self.p_losses(x, c, t, *args, **kwargs) + + def apply_model(self, x_noisy, t, cond, return_ids=False): + if isinstance(cond, dict): + # hybrid case, cond is expected to be a dict + pass + else: + if not isinstance(cond, list): + cond = [cond] + key = 'c_concat' if self.model.conditioning_key == 'concat' else 'c_crossattn' + cond = {key: cond} + + x_recon = self.model(x_noisy, t, **cond) + + if isinstance(x_recon, tuple) and not return_ids: + return x_recon[0] + else: + return x_recon + + def _predict_eps_from_xstart(self, x_t, t, pred_xstart): + return (extract_into_tensor(self.sqrt_recip_alphas_cumprod, t, x_t.shape) * x_t - pred_xstart) / \ + extract_into_tensor(self.sqrt_recipm1_alphas_cumprod, t, x_t.shape) + + def _prior_bpd(self, x_start): + """ + Get the prior KL term for the variational lower-bound, measured in + bits-per-dim. + This term can't be optimized, as it only depends on the encoder. + :param x_start: the [N x C x ...] tensor of inputs. + :return: a batch of [N] KL values (in bits), one per batch element. + """ + batch_size = x_start.shape[0] + t = torch.tensor([self.num_timesteps - 1] * batch_size, device=x_start.device) + qt_mean, _, qt_log_variance = self.q_mean_variance(x_start, t) + kl_prior = normal_kl(mean1=qt_mean, logvar1=qt_log_variance, mean2=0.0, logvar2=0.0) + return mean_flat(kl_prior) / np.log(2.0) + + def p_losses(self, x_start, cond, t, noise=None): + noise = default(noise, lambda: torch.randn_like(x_start)) + x_noisy = self.q_sample(x_start=x_start, t=t, noise=noise) + model_output = self.apply_model(x_noisy, t, cond) + + loss_dict = {} + prefix = 'train' if self.training else 'val' + + if self.parameterization == "x0": + target = x_start + elif self.parameterization == "eps": + target = noise + elif self.parameterization == "v": + target = self.get_v(x_start, noise, t) + else: + raise NotImplementedError() + + loss_simple = self.get_loss(model_output, target, mean=False).mean([1, 2, 3]) + loss_dict.update({f'{prefix}/loss_simple': loss_simple.mean()}) + + logvar_t = self.logvar[t].to(self.device) + loss = loss_simple / torch.exp(logvar_t) + logvar_t + # loss = loss_simple / torch.exp(self.logvar) + self.logvar + if self.learn_logvar: + loss_dict.update({f'{prefix}/loss_gamma': loss.mean()}) + loss_dict.update({'logvar': self.logvar.data.mean()}) + + loss = self.l_simple_weight * loss.mean() + + loss_vlb = self.get_loss(model_output, target, mean=False).mean(dim=(1, 2, 3)) + loss_vlb = (self.lvlb_weights[t] * loss_vlb).mean() + loss_dict.update({f'{prefix}/loss_vlb': loss_vlb}) + loss += (self.original_elbo_weight * loss_vlb) + loss_dict.update({f'{prefix}/loss': loss}) + + return loss, loss_dict + + def p_mean_variance(self, x, c, t, clip_denoised: bool, return_codebook_ids=False, quantize_denoised=False, + return_x0=False, score_corrector=None, corrector_kwargs=None): + t_in = t + model_out = self.apply_model(x, t_in, c, return_ids=return_codebook_ids) + + if score_corrector is not None: + assert self.parameterization == "eps" + model_out = score_corrector.modify_score(self, model_out, x, t, c, **corrector_kwargs) + + if return_codebook_ids: + model_out, logits = model_out + + if self.parameterization == "eps": + x_recon = self.predict_start_from_noise(x, t=t, noise=model_out) + elif self.parameterization == "x0": + x_recon = model_out + else: + raise NotImplementedError() + + if clip_denoised: + x_recon.clamp_(-1., 1.) + if quantize_denoised: + x_recon, _, [_, _, indices] = self.first_stage_model.quantize(x_recon) + model_mean, posterior_variance, posterior_log_variance = self.q_posterior(x_start=x_recon, x_t=x, t=t) + if return_codebook_ids: + return model_mean, posterior_variance, posterior_log_variance, logits + elif return_x0: + return model_mean, posterior_variance, posterior_log_variance, x_recon + else: + return model_mean, posterior_variance, posterior_log_variance + + @torch.no_grad() + def p_sample(self, x, c, t, clip_denoised=False, repeat_noise=False, + return_codebook_ids=False, quantize_denoised=False, return_x0=False, + temperature=1., noise_dropout=0., score_corrector=None, corrector_kwargs=None): + b, *_, device = *x.shape, x.device + outputs = self.p_mean_variance(x=x, c=c, t=t, clip_denoised=clip_denoised, + return_codebook_ids=return_codebook_ids, + quantize_denoised=quantize_denoised, + return_x0=return_x0, + score_corrector=score_corrector, corrector_kwargs=corrector_kwargs) + if return_codebook_ids: + raise DeprecationWarning("Support dropped.") + model_mean, _, model_log_variance, logits = outputs + elif return_x0: + model_mean, _, model_log_variance, x0 = outputs + else: + model_mean, _, model_log_variance = outputs + + noise = noise_like(x.shape, device, repeat_noise) * temperature + if noise_dropout > 0.: + noise = torch.nn.functional.dropout(noise, p=noise_dropout) + # no noise when t == 0 + nonzero_mask = (1 - (t == 0).float()).reshape(b, *((1,) * (len(x.shape) - 1))) + + if return_codebook_ids: + return model_mean + nonzero_mask * (0.5 * model_log_variance).exp() * noise, logits.argmax(dim=1) + if return_x0: + return model_mean + nonzero_mask * (0.5 * model_log_variance).exp() * noise, x0 + else: + return model_mean + nonzero_mask * (0.5 * model_log_variance).exp() * noise + + @torch.no_grad() + def progressive_denoising(self, cond, shape, verbose=True, callback=None, quantize_denoised=False, + img_callback=None, mask=None, x0=None, temperature=1., noise_dropout=0., + score_corrector=None, corrector_kwargs=None, batch_size=None, x_T=None, start_T=None, + log_every_t=None): + if not log_every_t: + log_every_t = self.log_every_t + timesteps = self.num_timesteps + if batch_size is not None: + b = batch_size if batch_size is not None else shape[0] + shape = [batch_size] + list(shape) + else: + b = batch_size = shape[0] + if x_T is None: + img = torch.randn(shape, device=self.device) + else: + img = x_T + intermediates = [] + if cond is not None: + if isinstance(cond, dict): + cond = {key: cond[key][:batch_size] if not isinstance(cond[key], list) else + list(map(lambda x: x[:batch_size], cond[key])) for key in cond} + else: + cond = [c[:batch_size] for c in cond] if isinstance(cond, list) else cond[:batch_size] + + if start_T is not None: + timesteps = min(timesteps, start_T) + iterator = tqdm(reversed(range(0, timesteps)), desc='Progressive Generation', + total=timesteps) if verbose else reversed( + range(0, timesteps)) + if type(temperature) == float: + temperature = [temperature] * timesteps + + for i in iterator: + ts = torch.full((b,), i, device=self.device, dtype=torch.long) + if self.shorten_cond_schedule: + assert self.model.conditioning_key != 'hybrid' + tc = self.cond_ids[ts].to(cond.device) + cond = self.q_sample(x_start=cond, t=tc, noise=torch.randn_like(cond)) + + img, x0_partial = self.p_sample(img, cond, ts, + clip_denoised=self.clip_denoised, + quantize_denoised=quantize_denoised, return_x0=True, + temperature=temperature[i], noise_dropout=noise_dropout, + score_corrector=score_corrector, corrector_kwargs=corrector_kwargs) + if mask is not None: + assert x0 is not None + img_orig = self.q_sample(x0, ts) + img = img_orig * mask + (1. - mask) * img + + if i % log_every_t == 0 or i == timesteps - 1: + intermediates.append(x0_partial) + if callback: callback(i) + if img_callback: img_callback(img, i) + return img, intermediates + + @torch.no_grad() + def p_sample_loop(self, cond, shape, return_intermediates=False, + x_T=None, verbose=True, callback=None, timesteps=None, quantize_denoised=False, + mask=None, x0=None, img_callback=None, start_T=None, + log_every_t=None): + + if not log_every_t: + log_every_t = self.log_every_t + device = self.betas.device + b = shape[0] + if x_T is None: + img = torch.randn(shape, device=device) + else: + img = x_T + + intermediates = [img] + if timesteps is None: + timesteps = self.num_timesteps + + if start_T is not None: + timesteps = min(timesteps, start_T) + iterator = tqdm(reversed(range(0, timesteps)), desc='Sampling t', total=timesteps) if verbose else reversed( + range(0, timesteps)) + + if mask is not None: + assert x0 is not None + assert x0.shape[2:3] == mask.shape[2:3] # spatial size has to match + + for i in iterator: + ts = torch.full((b,), i, device=device, dtype=torch.long) + if self.shorten_cond_schedule: + assert self.model.conditioning_key != 'hybrid' + tc = self.cond_ids[ts].to(cond.device) + cond = self.q_sample(x_start=cond, t=tc, noise=torch.randn_like(cond)) + + img = self.p_sample(img, cond, ts, + clip_denoised=self.clip_denoised, + quantize_denoised=quantize_denoised) + if mask is not None: + img_orig = self.q_sample(x0, ts) + img = img_orig * mask + (1. - mask) * img + + if i % log_every_t == 0 or i == timesteps - 1: + intermediates.append(img) + if callback: callback(i) + if img_callback: img_callback(img, i) + + if return_intermediates: + return img, intermediates + return img + + @torch.no_grad() + def sample(self, cond, batch_size=16, return_intermediates=False, x_T=None, + verbose=True, timesteps=None, quantize_denoised=False, + mask=None, x0=None, shape=None, **kwargs): + if shape is None: + shape = (batch_size, self.channels, self.image_size, self.image_size) + if cond is not None: + if isinstance(cond, dict): + cond = {key: cond[key][:batch_size] if not isinstance(cond[key], list) else + list(map(lambda x: x[:batch_size], cond[key])) for key in cond} + else: + cond = [c[:batch_size] for c in cond] if isinstance(cond, list) else cond[:batch_size] + return self.p_sample_loop(cond, + shape, + return_intermediates=return_intermediates, x_T=x_T, + verbose=verbose, timesteps=timesteps, quantize_denoised=quantize_denoised, + mask=mask, x0=x0) + + @torch.no_grad() + def sample_log(self, cond, batch_size, ddim, ddim_steps, **kwargs): + if ddim: + ddim_sampler = DDIMSampler(self) + if self.model.conditioning_key == 'crossattn' or self.model.conditioning_key == 'hybrid': + shape = (self.channels, self.image_size, self.image_size) + else: + shape = ((self.channels)//2, self.image_size, self.image_size) + samples, intermediates = ddim_sampler.sample(ddim_steps, batch_size, + shape, cond, verbose=False, **kwargs) + + else: + samples, intermediates = self.sample(cond=cond, batch_size=batch_size, + return_intermediates=True, **kwargs) + + return samples, intermediates + + @torch.no_grad() + def get_unconditional_conditioning(self, batch_size, null_label=None): + if null_label is not None: + xc = null_label + if isinstance(xc, ListConfig): + xc = list(xc) + if isinstance(xc, dict) or isinstance(xc, list): + c = self.get_learned_conditioning(xc) + else: + if hasattr(xc, "to"): + xc = xc.to(self.device) + c = self.get_learned_conditioning(xc) + else: + if self.cond_stage_key in ["class_label", "cls"]: + xc = self.cond_stage_model.get_unconditional_conditioning(batch_size, device=self.device) + return self.get_learned_conditioning(xc) + else: + raise NotImplementedError("todo") + if isinstance(c, list): # in case the encoder gives us a list + for i in range(len(c)): + c[i] = repeat(c[i], '1 ... -> b ...', b=batch_size).to(self.device) + else: + c = repeat(c, '1 ... -> b ...', b=batch_size).to(self.device) + return c + + @torch.no_grad() + def log_images(self, batch, N=16, n_row=4, sample=True, ddim_steps=50, ddim_eta=0., return_keys=None, + quantize_denoised=True, inpaint=True, plot_denoise_rows=False, plot_progressive_rows=True, + plot_diffusion_rows=True, unconditional_guidance_scale=1., unconditional_guidance_label=None, + use_ema_scope=True, + **kwargs): + ema_scope = self.ema_scope if use_ema_scope else nullcontext + use_ddim = ddim_steps is not None + + if self.fix_t == True: + sample = True + plot_denoise_rows = False + plot_progressive_rows = False + plot_diffusion_rows = False + inpaint = False + + log = dict() + z, c, x, xrec, xc = self.get_input(batch, self.first_stage_key, + return_first_stage_outputs=True, + force_c_encode=True, + return_original_cond=True, + bs=N) + N = min(x.shape[0], N) + n_row = min(x.shape[0], n_row) + log["inputs"] = x + log["reconstruction"] = xrec + # if self.model.conditioning_key is not None: + # if hasattr(self.cond_stage_model, "decode"): + # # xc = self.cond_stage_model.decode(c) + # if c.shape[1] == 8: + # xc = self.decode_first_stage(c[:,:4]) + # elif c.shape[1] == 6: + # xc = self.decode_first_stage(c[:, :3]) + # else: + # xc = self.decode_first_stage(c) + # log["conditioning"] = xc + # elif self.cond_stage_key in ["caption", "txt"]: + # xc = log_txt_as_img((x.shape[2], x.shape[3]), batch[self.cond_stage_key], size=x.shape[2] // 25) + # log["conditioning"] = xc + # elif self.cond_stage_key in ['class_label', "cls"]: + # try: + # xc = log_txt_as_img((x.shape[2], x.shape[3]), batch["human_label"], size=x.shape[2] // 25) + # log['conditioning'] = xc + # except KeyError: + # # probably no "human_label" in batch + # pass + # elif isimage(xc): + # log["conditioning"] = xc + # if ismap(xc): + # log["original_conditioning"] = self.to_rgb(xc) + + if plot_diffusion_rows: + # get diffusion row + diffusion_row = list() + z_start = z[:n_row] + for t in range(self.num_timesteps): + if t % self.log_every_t == 0 or t == self.num_timesteps - 1: + t = repeat(torch.tensor([t]), '1 -> b', b=n_row) + t = t.to(self.device).long() + noise = torch.randn_like(z_start) + z_noisy = self.q_sample(x_start=z_start, t=t, noise=noise) + diffusion_row.append(self.decode_first_stage(z_noisy)) + + diffusion_row = torch.stack(diffusion_row) # n_log_step, n_row, C, H, W + diffusion_grid = rearrange(diffusion_row, 'n b c h w -> b n c h w') + diffusion_grid = rearrange(diffusion_grid, 'b n c h w -> (b n) c h w') + diffusion_grid = make_grid(diffusion_grid, nrow=diffusion_row.shape[0]) + log["diffusion_row"] = diffusion_grid + + if sample: + # get denoise row + with ema_scope("Sampling"): + samples, z_denoise_row = self.sample_log(cond=c, batch_size=N, ddim=use_ddim, + ddim_steps=ddim_steps, eta=ddim_eta) + # samples, z_denoise_row = self.sample(cond=c, batch_size=N, return_intermediates=True) + x_samples = self.decode_first_stage(samples) + log["samples"] = x_samples + if plot_denoise_rows: + denoise_grid = self._get_denoise_row_from_list(z_denoise_row) + log["denoise_row"] = denoise_grid + + if quantize_denoised and not isinstance(self.first_stage_model, AutoencoderKL) and not isinstance( + self.first_stage_model, IdentityFirstStage): + # also display when quantizing x0 while sampling + with ema_scope("Plotting Quantized Denoised"): + samples, z_denoise_row = self.sample_log(cond=c, batch_size=N, ddim=use_ddim, + ddim_steps=ddim_steps, eta=ddim_eta, + quantize_denoised=True) + # samples, z_denoise_row = self.sample(cond=c, batch_size=N, return_intermediates=True, + # quantize_denoised=True) + x_samples = self.decode_first_stage(samples.to(self.device)) + log["samples_x0_quantized"] = x_samples + + if unconditional_guidance_scale > 1.0: + uc = self.get_unconditional_conditioning(N, unconditional_guidance_label) + if self.model.conditioning_key == "crossattn-adm": + uc = {"c_crossattn": [uc], "c_adm": c["c_adm"]} + with ema_scope("Sampling with classifier-free guidance"): + samples_cfg, _ = self.sample_log(cond=c, batch_size=N, ddim=use_ddim, + ddim_steps=ddim_steps, eta=ddim_eta, + unconditional_guidance_scale=unconditional_guidance_scale, + unconditional_conditioning=uc, + ) + x_samples_cfg = self.decode_first_stage(samples_cfg) + log[f"samples_cfg_scale_{unconditional_guidance_scale:.2f}"] = x_samples_cfg + + if c.shape[1] == 8 or c.shape[1] == 6: + inpaint = False + if inpaint: + # make a simple center square + b, h, w = z.shape[0], z.shape[2], z.shape[3] + mask = torch.ones(N, h, w).to(self.device) + # zeros will be filled in + mask[:, h // 4:3 * h // 4, w // 4:3 * w // 4] = 0. + mask = mask[:, None, ...] + with ema_scope("Plotting Inpaint"): + samples, _ = self.sample_log(cond=c, batch_size=N, ddim=use_ddim, eta=ddim_eta, + ddim_steps=ddim_steps, x0=z[:N], mask=mask) + x_samples = self.decode_first_stage(samples.to(self.device)) + log["samples_inpainting"] = x_samples + log["mask"] = mask + + # outpaint + mask = 1. - mask + with ema_scope("Plotting Outpaint"): + samples, _ = self.sample_log(cond=c, batch_size=N, ddim=use_ddim, eta=ddim_eta, + ddim_steps=ddim_steps, x0=z[:N], mask=mask) + x_samples = self.decode_first_stage(samples.to(self.device)) + log["samples_outpainting"] = x_samples + + if plot_progressive_rows: + with ema_scope("Plotting Progressives"): + img, progressives = self.progressive_denoising(c, + shape=(self.channels, self.image_size, self.image_size), + batch_size=N) + prog_row = self._get_denoise_row_from_list(progressives, desc="Progressive Generation") + log["progressive_row"] = prog_row + + if return_keys: + if np.intersect1d(list(log.keys()), return_keys).shape[0] == 0: + return log + else: + return {key: log[key] for key in return_keys} + return log + + def configure_optimizers(self): + lr = self.learning_rate + params = [] + for name, p in self.model.named_parameters(): + if 'tem' in name: + params.append(p) + # params = list(self.model.parameters()) + if self.cond_stage_trainable: + print(f"{self.__class__.__name__}: Also optimizing conditioner params!") + params = params + list(self.cond_stage_model.parameters()) + if self.learn_logvar: + print('Diffusion model optimizing logvar') + params.append(self.logvar) + opt = torch.optim.AdamW(params, lr=lr) + if self.use_scheduler: + assert 'target' in self.scheduler_config + scheduler = instantiate_from_config(self.scheduler_config) + + print("Setting up LambdaLR scheduler...") + scheduler = [ + { + 'scheduler': LambdaLR(opt, lr_lambda=scheduler.schedule), + 'interval': 'step', + 'frequency': 1 + }] + return [opt], scheduler + return opt + + @torch.no_grad() + def to_rgb(self, x): + x = x.float() + if not hasattr(self, "colorize"): + self.colorize = torch.randn(3, x.shape[1], 1, 1).to(x) + x = nn.functional.conv2d(x, weight=self.colorize) + x = 2. * (x - x.min()) / (x.max() - x.min()) - 1. + return x + + +class DiffusionWrapper(pl.LightningModule): + def __init__(self, diff_model_config, conditioning_key): + super().__init__() + self.sequential_cross_attn = diff_model_config.pop("sequential_crossattn", False) + self.diffusion_model = instantiate_from_config(diff_model_config) + self.conditioning_key = conditioning_key + assert self.conditioning_key in [None, 'concat', 'crossattn', 'hybrid', 'adm', 'hybrid-adm', 'crossattn-adm'] + + def forward(self, x, t, c_concat: list = None, c_crossattn: list = None, c_adm=None): + if self.conditioning_key is None: + out = self.diffusion_model(x, t) + elif self.conditioning_key == 'concat': + # breakpoint() + xc = torch.cat([x] + c_concat, dim=1) + out = self.diffusion_model(xc, t) + elif self.conditioning_key == 'crossattn': + # if not self.sequential_cross_attn: + # cc = torch.cat(c_crossattn, 1) + # else: + # cc = c_crossattn + # out = self.diffusion_model(x, t, context=cc) + # breakpoint() + xc = torch.cat([x] + [c_concat], dim=1) + cc = torch.cat([c_crossattn], 1) + out = self.diffusion_model(xc, t, context=cc) + elif self.conditioning_key == 'hybrid': + xc = torch.cat([x] + c_crossattn, dim=1) + cc = torch.cat(c_crossattn, 1) + out = self.diffusion_model(xc, t, context=cc) + elif self.conditioning_key == 'hybrid-adm': + assert c_adm is not None + xc = torch.cat([x] + c_concat, dim=1) + cc = torch.cat(c_crossattn, 1) + out = self.diffusion_model(xc, t, context=cc, y=c_adm) + elif self.conditioning_key == 'crossattn-adm': + assert c_adm is not None + cc = torch.cat(c_crossattn, 1) + out = self.diffusion_model(x, t, context=cc, y=c_adm) + elif self.conditioning_key == 'adm': + cc = c_crossattn[0] + out = self.diffusion_model(x, t, y=cc) + else: + raise NotImplementedError() + + return out diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm_recon.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm_recon.py new file mode 100644 index 0000000000000000000000000000000000000000..af03934332de891dee007853077d9de5f57d1641 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm_recon.py @@ -0,0 +1,141 @@ +""" +wild mixture of +https://github.com/lucidrains/denoising-diffusion-pytorch/blob/7706bdfc6f527f58d33f84b7b522e61e6e3164b3/denoising_diffusion_pytorch/denoising_diffusion_pytorch.py +https://github.com/openai/improved-diffusion/blob/e94489283bb876ac1477d5dd7709bbbd2d9902ce/improved_diffusion/gaussian_diffusion.py +https://github.com/CompVis/taming-transformers +-- merci +""" + +import torch +import torch.nn as nn +import numpy as np +import pytorch_lightning as pl +from torch.optim.lr_scheduler import LambdaLR +from einops import rearrange, repeat +from contextlib import contextmanager, nullcontext +from functools import partial +import itertools +from tqdm import tqdm +from torchvision.utils import make_grid +from pytorch_lightning.utilities.distributed import rank_zero_only +from omegaconf import ListConfig + +from ldm.util import log_txt_as_img, exists, default, ismap, isimage, mean_flat, count_params, instantiate_from_config +from ldm.modules.ema import LitEma +from ldm.modules.distributions.distributions import normal_kl, DiagonalGaussianDistribution +from ldm.models.autoencoder import IdentityFirstStage, AutoencoderKL +from ldm.modules.diffusionmodules.util import make_beta_schedule, extract_into_tensor, noise_like +from ldm.models.diffusion.ddim import DDIMSampler + + +__conditioning_keys__ = {'concat': 'c_concat', + 'crossattn': 'c_crossattn', + 'adm': 'y'} + + +def disabled_train(self, mode=True): + """Overwrite model.train with this function to make sure train/eval mode + does not change anymore.""" + return self + + +def uniform_on_device(r1, r2, shape, device): + return (r1 - r2) * torch.rand(*shape, device=device) + r2 + + + +class Latent_Recon(pl.LightningModule): + """main class""" + + def __init__(self, + first_stage_config, + cond_stage_config, + num_timesteps_cond=None, + cond_stage_key="image", + cond_stage_trainable=False, + concat_mode=True, + cond_stage_forward=None, + conditioning_key=None, + scale_factor=1.0, + scale_by_std=False, + force_null_conditioning=False, + *args, **kwargs): + super().__init__() + self.scale_by_std = scale_by_std + + try: + self.num_downs = len(first_stage_config.params.ddconfig.ch_mult) - 1 + except: + self.num_downs = 0 + if not scale_by_std: + self.scale_factor = scale_factor + else: + self.register_buffer('scale_factor', torch.tensor(scale_factor)) + # breakpoint() + self.instantiate_first_stage(first_stage_config) + + def instantiate_first_stage(self, config): + model = instantiate_from_config(config) + self.first_stage_model = model.eval() + self.first_stage_model.train = disabled_train + for param in self.first_stage_model.parameters(): + param.requires_grad = False + + def get_first_stage_encoding(self, encoder_posterior): + # breakpoint() + if isinstance(encoder_posterior, DiagonalGaussianDistribution): + z = encoder_posterior.sample() + elif isinstance(encoder_posterior, torch.Tensor): + z = encoder_posterior + else: + raise NotImplementedError(f"encoder_posterior of type '{type(encoder_posterior)}' not yet implemented") + return self.scale_factor * z + + + @torch.no_grad() + def get_input(self, batch): + + x = rearrange(batch, 'b h w c -> b c h w') + x = x.repeat(1,3,1,1) + x = x.to(memory_format=torch.contiguous_format).float() + + x = x.to(self.device) + encoder_posterior = self.encode_first_stage(x) + z = self.get_first_stage_encoding(encoder_posterior).detach() + + xrec = self.decode_first_stage(z) + return xrec + + @torch.no_grad() + def decode_first_stage(self, z, predict_cids=False, force_not_quantize=False): + if predict_cids: + if z.dim() == 4: + z = torch.argmax(z.exp(), dim=1).long() + z = self.first_stage_model.quantize.get_codebook_entry(z, shape=None) + z = rearrange(z, 'b h w c -> b c h w').contiguous() + + z = 1. / self.scale_factor * z + return self.first_stage_model.decode(z) + + @torch.no_grad() + def encode_first_stage(self, x): + return self.first_stage_model.encode(x) + + def forward(self, batch, *args, **kwargs): + xrec = self.get_input(batch) + return xrec + + @torch.no_grad() + def validation_step(self, batch, batch_idx): + xrec = self.forward(batch) + return xrec + + @torch.no_grad() + def to_rgb(self, x): + x = x.float() + if not hasattr(self, "colorize"): + self.colorize = torch.randn(3, x.shape[1], 1, 1).to(x) + x = nn.functional.conv2d(x, weight=self.colorize) + x = 2. * (x - x.min()) / (x.max() - x.min()) - 1. + return x + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm_recon_vq.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm_recon_vq.py new file mode 100644 index 0000000000000000000000000000000000000000..7bf3d28fb83fafcf8a2c3017df6c717f9eacc1f9 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm_recon_vq.py @@ -0,0 +1,144 @@ +""" +wild mixture of +https://github.com/lucidrains/denoising-diffusion-pytorch/blob/7706bdfc6f527f58d33f84b7b522e61e6e3164b3/denoising_diffusion_pytorch/denoising_diffusion_pytorch.py +https://github.com/openai/improved-diffusion/blob/e94489283bb876ac1477d5dd7709bbbd2d9902ce/improved_diffusion/gaussian_diffusion.py +https://github.com/CompVis/taming-transformers +-- merci +""" + +import torch +import torch.nn as nn +import numpy as np +import pytorch_lightning as pl +from torch.optim.lr_scheduler import LambdaLR +from einops import rearrange, repeat +from contextlib import contextmanager, nullcontext +from functools import partial +import itertools +from tqdm import tqdm +from torchvision.utils import make_grid +from pytorch_lightning.utilities.distributed import rank_zero_only +from omegaconf import ListConfig + +from ldm.util import log_txt_as_img, exists, default, ismap, isimage, mean_flat, count_params, instantiate_from_config +from ldm.modules.ema import LitEma +from ldm.modules.distributions.distributions import normal_kl, DiagonalGaussianDistribution +from ldm.models.autoencoder import IdentityFirstStage, AutoencoderKL +from ldm.modules.diffusionmodules.util import make_beta_schedule, extract_into_tensor, noise_like +from ldm.models.diffusion.ddim import DDIMSampler + + +__conditioning_keys__ = {'concat': 'c_concat', + 'crossattn': 'c_crossattn', + 'adm': 'y'} + + +def disabled_train(self, mode=True): + """Overwrite model.train with this function to make sure train/eval mode + does not change anymore.""" + return self + + +def uniform_on_device(r1, r2, shape, device): + return (r1 - r2) * torch.rand(*shape, device=device) + r2 + + + +class Latent_Recon(pl.LightningModule): + """main class""" + + def __init__(self, + first_stage_config, + cond_stage_config, + num_timesteps_cond=None, + cond_stage_key="image", + cond_stage_trainable=False, + concat_mode=True, + cond_stage_forward=None, + conditioning_key=None, + scale_factor=1.0, + scale_by_std=False, + force_null_conditioning=False, + *args, **kwargs): + super().__init__() + self.scale_by_std = scale_by_std + + try: + self.num_downs = len(first_stage_config.params.ddconfig.ch_mult) - 1 + except: + self.num_downs = 0 + if not scale_by_std: + self.scale_factor = scale_factor + else: + self.register_buffer('scale_factor', torch.tensor(scale_factor)) + # breakpoint() + self.instantiate_first_stage(first_stage_config) + + def instantiate_first_stage(self, config): + model = instantiate_from_config(config) + self.first_stage_model = model.eval() + self.first_stage_model.train = disabled_train + for param in self.first_stage_model.parameters(): + param.requires_grad = False + + def get_first_stage_encoding(self, encoder_posterior): + # breakpoint() + if isinstance(encoder_posterior, DiagonalGaussianDistribution): + z = encoder_posterior.sample() + elif isinstance(encoder_posterior, torch.Tensor): + z = encoder_posterior + elif isinstance(encoder_posterior, tuple): + z = encoder_posterior[0] + else: + raise NotImplementedError(f"encoder_posterior of type '{type(encoder_posterior)}' not yet implemented") + # breakpoint() + return self.scale_factor * z + + + @torch.no_grad() + def get_input(self, batch): + + x = rearrange(batch, 'b h w c -> b c h w') + x = x.repeat(1,3,1,1) + x = x.to(memory_format=torch.contiguous_format).float() + + x = x.to(self.device) + encoder_posterior = self.encode_first_stage(x) + z = self.get_first_stage_encoding(encoder_posterior).detach() + + xrec = self.decode_first_stage(z) + return xrec + + @torch.no_grad() + def decode_first_stage(self, z, predict_cids=False, force_not_quantize=False): + if predict_cids: + if z.dim() == 4: + z = torch.argmax(z.exp(), dim=1).long() + z = self.first_stage_model.quantize.get_codebook_entry(z, shape=None) + z = rearrange(z, 'b h w c -> b c h w').contiguous() + + z = 1. / self.scale_factor * z + return self.first_stage_model.decode(z) + + @torch.no_grad() + def encode_first_stage(self, x): + return self.first_stage_model.encode(x) + + def forward(self, batch, *args, **kwargs): + xrec = self.get_input(batch) + return xrec + + @torch.no_grad() + def validation_step(self, batch, batch_idx): + xrec = self.forward(batch) + return xrec + + @torch.no_grad() + def to_rgb(self, x): + x = x.float() + if not hasattr(self, "colorize"): + self.colorize = torch.randn(3, x.shape[1], 1, 1).to(x) + x = nn.functional.conv2d(x, weight=self.colorize) + x = 2. * (x - x.min()) / (x.max() - x.min()) - 1. + return x + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/plms.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/plms.py new file mode 100644 index 0000000000000000000000000000000000000000..7002a365d27168ced0a04e9a4d83e088f8284eae --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/plms.py @@ -0,0 +1,244 @@ +"""SAMPLING ONLY.""" + +import torch +import numpy as np +from tqdm import tqdm +from functools import partial + +from ldm.modules.diffusionmodules.util import make_ddim_sampling_parameters, make_ddim_timesteps, noise_like +from ldm.models.diffusion.sampling_util import norm_thresholding + + +class PLMSSampler(object): + def __init__(self, model, schedule="linear", **kwargs): + super().__init__() + self.model = model + self.ddpm_num_timesteps = model.num_timesteps + self.schedule = schedule + + def register_buffer(self, name, attr): + if type(attr) == torch.Tensor: + if attr.device != torch.device("cuda"): + attr = attr.to(torch.device("cuda")) + setattr(self, name, attr) + + def make_schedule(self, ddim_num_steps, ddim_discretize="uniform", ddim_eta=0., verbose=True): + if ddim_eta != 0: + raise ValueError('ddim_eta must be 0 for PLMS') + self.ddim_timesteps = make_ddim_timesteps(ddim_discr_method=ddim_discretize, num_ddim_timesteps=ddim_num_steps, + num_ddpm_timesteps=self.ddpm_num_timesteps,verbose=verbose) + alphas_cumprod = self.model.alphas_cumprod + assert alphas_cumprod.shape[0] == self.ddpm_num_timesteps, 'alphas have to be defined for each timestep' + to_torch = lambda x: x.clone().detach().to(torch.float32).to(self.model.device) + + self.register_buffer('betas', to_torch(self.model.betas)) + self.register_buffer('alphas_cumprod', to_torch(alphas_cumprod)) + self.register_buffer('alphas_cumprod_prev', to_torch(self.model.alphas_cumprod_prev)) + + # calculations for diffusion q(x_t | x_{t-1}) and others + self.register_buffer('sqrt_alphas_cumprod', to_torch(np.sqrt(alphas_cumprod.cpu()))) + self.register_buffer('sqrt_one_minus_alphas_cumprod', to_torch(np.sqrt(1. - alphas_cumprod.cpu()))) + self.register_buffer('log_one_minus_alphas_cumprod', to_torch(np.log(1. - alphas_cumprod.cpu()))) + self.register_buffer('sqrt_recip_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod.cpu()))) + self.register_buffer('sqrt_recipm1_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod.cpu() - 1))) + + # ddim sampling parameters + ddim_sigmas, ddim_alphas, ddim_alphas_prev = make_ddim_sampling_parameters(alphacums=alphas_cumprod.cpu(), + ddim_timesteps=self.ddim_timesteps, + eta=ddim_eta,verbose=verbose) + self.register_buffer('ddim_sigmas', ddim_sigmas) + self.register_buffer('ddim_alphas', ddim_alphas) + self.register_buffer('ddim_alphas_prev', ddim_alphas_prev) + self.register_buffer('ddim_sqrt_one_minus_alphas', np.sqrt(1. - ddim_alphas)) + sigmas_for_original_sampling_steps = ddim_eta * torch.sqrt( + (1 - self.alphas_cumprod_prev) / (1 - self.alphas_cumprod) * ( + 1 - self.alphas_cumprod / self.alphas_cumprod_prev)) + self.register_buffer('ddim_sigmas_for_original_num_steps', sigmas_for_original_sampling_steps) + + @torch.no_grad() + def sample(self, + S, + batch_size, + shape, + conditioning=None, + callback=None, + normals_sequence=None, + img_callback=None, + quantize_x0=False, + eta=0., + mask=None, + x0=None, + temperature=1., + noise_dropout=0., + score_corrector=None, + corrector_kwargs=None, + verbose=True, + x_T=None, + log_every_t=100, + unconditional_guidance_scale=1., + unconditional_conditioning=None, + # this has to come in the same format as the conditioning, # e.g. as encoded tokens, ... + dynamic_threshold=None, + **kwargs + ): + if conditioning is not None: + if isinstance(conditioning, dict): + cbs = conditioning[list(conditioning.keys())[0]].shape[0] + if cbs != batch_size: + print(f"Warning: Got {cbs} conditionings but batch-size is {batch_size}") + else: + if conditioning.shape[0] != batch_size: + print(f"Warning: Got {conditioning.shape[0]} conditionings but batch-size is {batch_size}") + + self.make_schedule(ddim_num_steps=S, ddim_eta=eta, verbose=verbose) + # sampling + C, H, W = shape + size = (batch_size, C, H, W) + print(f'Data shape for PLMS sampling is {size}') + + samples, intermediates = self.plms_sampling(conditioning, size, + callback=callback, + img_callback=img_callback, + quantize_denoised=quantize_x0, + mask=mask, x0=x0, + ddim_use_original_steps=False, + noise_dropout=noise_dropout, + temperature=temperature, + score_corrector=score_corrector, + corrector_kwargs=corrector_kwargs, + x_T=x_T, + log_every_t=log_every_t, + unconditional_guidance_scale=unconditional_guidance_scale, + unconditional_conditioning=unconditional_conditioning, + dynamic_threshold=dynamic_threshold, + ) + return samples, intermediates + + @torch.no_grad() + def plms_sampling(self, cond, shape, + x_T=None, ddim_use_original_steps=False, + callback=None, timesteps=None, quantize_denoised=False, + mask=None, x0=None, img_callback=None, log_every_t=100, + temperature=1., noise_dropout=0., score_corrector=None, corrector_kwargs=None, + unconditional_guidance_scale=1., unconditional_conditioning=None, + dynamic_threshold=None): + device = self.model.betas.device + b = shape[0] + if x_T is None: + img = torch.randn(shape, device=device) + else: + img = x_T + + if timesteps is None: + timesteps = self.ddpm_num_timesteps if ddim_use_original_steps else self.ddim_timesteps + elif timesteps is not None and not ddim_use_original_steps: + subset_end = int(min(timesteps / self.ddim_timesteps.shape[0], 1) * self.ddim_timesteps.shape[0]) - 1 + timesteps = self.ddim_timesteps[:subset_end] + + intermediates = {'x_inter': [img], 'pred_x0': [img]} + time_range = list(reversed(range(0,timesteps))) if ddim_use_original_steps else np.flip(timesteps) + total_steps = timesteps if ddim_use_original_steps else timesteps.shape[0] + print(f"Running PLMS Sampling with {total_steps} timesteps") + + iterator = tqdm(time_range, desc='PLMS Sampler', total=total_steps) + old_eps = [] + + for i, step in enumerate(iterator): + index = total_steps - i - 1 + ts = torch.full((b,), step, device=device, dtype=torch.long) + ts_next = torch.full((b,), time_range[min(i + 1, len(time_range) - 1)], device=device, dtype=torch.long) + + if mask is not None: + assert x0 is not None + img_orig = self.model.q_sample(x0, ts) # TODO: deterministic forward pass? + img = img_orig * mask + (1. - mask) * img + + outs = self.p_sample_plms(img, cond, ts, index=index, use_original_steps=ddim_use_original_steps, + quantize_denoised=quantize_denoised, temperature=temperature, + noise_dropout=noise_dropout, score_corrector=score_corrector, + corrector_kwargs=corrector_kwargs, + unconditional_guidance_scale=unconditional_guidance_scale, + unconditional_conditioning=unconditional_conditioning, + old_eps=old_eps, t_next=ts_next, + dynamic_threshold=dynamic_threshold) + img, pred_x0, e_t = outs + old_eps.append(e_t) + if len(old_eps) >= 4: + old_eps.pop(0) + if callback: callback(i) + if img_callback: img_callback(pred_x0, i) + + if index % log_every_t == 0 or index == total_steps - 1: + intermediates['x_inter'].append(img) + intermediates['pred_x0'].append(pred_x0) + + return img, intermediates + + @torch.no_grad() + def p_sample_plms(self, x, c, t, index, repeat_noise=False, use_original_steps=False, quantize_denoised=False, + temperature=1., noise_dropout=0., score_corrector=None, corrector_kwargs=None, + unconditional_guidance_scale=1., unconditional_conditioning=None, old_eps=None, t_next=None, + dynamic_threshold=None): + b, *_, device = *x.shape, x.device + + def get_model_output(x, t): + if unconditional_conditioning is None or unconditional_guidance_scale == 1.: + e_t = self.model.apply_model(x, t, c) + else: + x_in = torch.cat([x] * 2) + t_in = torch.cat([t] * 2) + c_in = torch.cat([unconditional_conditioning, c]) + e_t_uncond, e_t = self.model.apply_model(x_in, t_in, c_in).chunk(2) + e_t = e_t_uncond + unconditional_guidance_scale * (e_t - e_t_uncond) + + if score_corrector is not None: + assert self.model.parameterization == "eps" + e_t = score_corrector.modify_score(self.model, e_t, x, t, c, **corrector_kwargs) + + return e_t + + alphas = self.model.alphas_cumprod if use_original_steps else self.ddim_alphas + alphas_prev = self.model.alphas_cumprod_prev if use_original_steps else self.ddim_alphas_prev + sqrt_one_minus_alphas = self.model.sqrt_one_minus_alphas_cumprod if use_original_steps else self.ddim_sqrt_one_minus_alphas + sigmas = self.model.ddim_sigmas_for_original_num_steps if use_original_steps else self.ddim_sigmas + + def get_x_prev_and_pred_x0(e_t, index): + # select parameters corresponding to the currently considered timestep + a_t = torch.full((b, 1, 1, 1), alphas[index], device=device) + a_prev = torch.full((b, 1, 1, 1), alphas_prev[index], device=device) + sigma_t = torch.full((b, 1, 1, 1), sigmas[index], device=device) + sqrt_one_minus_at = torch.full((b, 1, 1, 1), sqrt_one_minus_alphas[index],device=device) + + # current prediction for x_0 + pred_x0 = (x - sqrt_one_minus_at * e_t) / a_t.sqrt() + if quantize_denoised: + pred_x0, _, *_ = self.model.first_stage_model.quantize(pred_x0) + if dynamic_threshold is not None: + pred_x0 = norm_thresholding(pred_x0, dynamic_threshold) + # direction pointing to x_t + dir_xt = (1. - a_prev - sigma_t**2).sqrt() * e_t + noise = sigma_t * noise_like(x.shape, device, repeat_noise) * temperature + if noise_dropout > 0.: + noise = torch.nn.functional.dropout(noise, p=noise_dropout) + x_prev = a_prev.sqrt() * pred_x0 + dir_xt + noise + return x_prev, pred_x0 + + e_t = get_model_output(x, t) + if len(old_eps) == 0: + # Pseudo Improved Euler (2nd order) + x_prev, pred_x0 = get_x_prev_and_pred_x0(e_t, index) + e_t_next = get_model_output(x_prev, t_next) + e_t_prime = (e_t + e_t_next) / 2 + elif len(old_eps) == 1: + # 2nd order Pseudo Linear Multistep (Adams-Bashforth) + e_t_prime = (3 * e_t - old_eps[-1]) / 2 + elif len(old_eps) == 2: + # 3nd order Pseudo Linear Multistep (Adams-Bashforth) + e_t_prime = (23 * e_t - 16 * old_eps[-1] + 5 * old_eps[-2]) / 12 + elif len(old_eps) >= 3: + # 4nd order Pseudo Linear Multistep (Adams-Bashforth) + e_t_prime = (55 * e_t - 59 * old_eps[-1] + 37 * old_eps[-2] - 9 * old_eps[-3]) / 24 + + x_prev, pred_x0 = get_x_prev_and_pred_x0(e_t_prime, index) + + return x_prev, pred_x0, e_t diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/sampling_util.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/sampling_util.py new file mode 100644 index 0000000000000000000000000000000000000000..7eff02be6d7c54d43ee6680636ac0698dd3b3f33 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/sampling_util.py @@ -0,0 +1,22 @@ +import torch +import numpy as np + + +def append_dims(x, target_dims): + """Appends dimensions to the end of a tensor until it has target_dims dimensions. + From https://github.com/crowsonkb/k-diffusion/blob/master/k_diffusion/utils.py""" + dims_to_append = target_dims - x.ndim + if dims_to_append < 0: + raise ValueError(f'input has {x.ndim} dims but target_dims is {target_dims}, which is less') + return x[(...,) + (None,) * dims_to_append] + + +def norm_thresholding(x0, value): + s = append_dims(x0.pow(2).flatten(1).mean(1).sqrt().clamp(min=value), x0.ndim) + return x0 * (value / s) + + +def spatial_norm_thresholding(x0, value): + # b c h w + s = x0.pow(2).mean(1, keepdim=True).sqrt().clamp(min=value) + return x0 * (value / s) \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dc6da1ca0710f1c11fdbbb23ded10dd414cbd066 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..37f27f96b5a7a70aa2de04cd439254c22e147de2 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..22c3e3bcb8395144e8c7bd913c3fccb1bc18a717 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-38.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dec0489a60f5a6563bdfe81433924bdaba6a3319 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..165ffd736a946ec55b8450475b70932a55812c44 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dc2a97436638fa66053e444623533a5f508a48ba Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cb5d95d9d420f8dd12da9e371f2a4759ba154c6c Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-38.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..582c95fee5adf36f598de6d429741356467eec38 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/x_transformer.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/x_transformer.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c2c2a2ec545e54abefcdaf23888e8f71b8d6d818 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/x_transformer.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/x_transformer.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/x_transformer.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bf29a02ee530dabdb5a83ca9d0f4399dbba31b03 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/x_transformer.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/x_transformer.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/x_transformer.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cc6d13c74e812e9ef09f0ba7b230505d15e0ce55 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/x_transformer.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/attention.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/attention.py new file mode 100644 index 0000000000000000000000000000000000000000..c7e06ed79f47b0b7b869531e69e1f9de6f69c2a7 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/attention.py @@ -0,0 +1,354 @@ +from inspect import isfunction +import math +import torch +import torch.nn.functional as F +from torch import nn, einsum +from einops import rearrange, repeat +from typing import Optional, Any + +from ldm.modules.diffusionmodules.util import checkpoint + + +try: + import xformers + import xformers.ops + XFORMERS_IS_AVAILBLE = True +except: + XFORMERS_IS_AVAILBLE = False + +# CrossAttn precision handling +import os +_ATTN_PRECISION = os.environ.get("ATTN_PRECISION", "fp32") + +def exists(val): + return val is not None + + +def uniq(arr): + return{el: True for el in arr}.keys() + + +def default(val, d): + if exists(val): + return val + return d() if isfunction(d) else d + + +def max_neg_value(t): + return -torch.finfo(t.dtype).max + + +def init_(tensor): + dim = tensor.shape[-1] + std = 1 / math.sqrt(dim) + tensor.uniform_(-std, std) + return tensor + + +# feedforward +class GEGLU(nn.Module): + def __init__(self, dim_in, dim_out): + super().__init__() + self.proj = nn.Linear(dim_in, dim_out * 2) + + def forward(self, x): + x, gate = self.proj(x).chunk(2, dim=-1) + return x * F.gelu(gate) + + +class FeedForward(nn.Module): + def __init__(self, dim, dim_out=None, mult=4, glu=False, dropout=0.): + super().__init__() + inner_dim = int(dim * mult) + dim_out = default(dim_out, dim) + project_in = nn.Sequential( + nn.Linear(dim, inner_dim), + nn.GELU() + ) if not glu else GEGLU(dim, inner_dim) + + self.net = nn.Sequential( + project_in, + nn.Dropout(dropout), + nn.Linear(inner_dim, dim_out) + ) + + def forward(self, x): + return self.net(x) + + +def zero_module(module): + """ + Zero out the parameters of a module and return it. + """ + for p in module.parameters(): + p.detach().zero_() + return module + + +def Normalize(in_channels): + return torch.nn.GroupNorm(num_groups=32, num_channels=in_channels, eps=1e-6, affine=True) + + +class SpatialSelfAttention(nn.Module): + def __init__(self, in_channels): + super().__init__() + self.in_channels = in_channels + + self.norm = Normalize(in_channels) + self.q = torch.nn.Conv2d(in_channels, + in_channels, + kernel_size=1, + stride=1, + padding=0) + self.k = torch.nn.Conv2d(in_channels, + in_channels, + kernel_size=1, + stride=1, + padding=0) + self.v = torch.nn.Conv2d(in_channels, + in_channels, + kernel_size=1, + stride=1, + padding=0) + self.proj_out = torch.nn.Conv2d(in_channels, + in_channels, + kernel_size=1, + stride=1, + padding=0) + + def forward(self, x): + h_ = x + h_ = self.norm(h_) + q = self.q(h_) + k = self.k(h_) + v = self.v(h_) + + # compute attention + b,c,h,w = q.shape + q = rearrange(q, 'b c h w -> b (h w) c') + k = rearrange(k, 'b c h w -> b c (h w)') + w_ = torch.einsum('bij,bjk->bik', q, k) + + w_ = w_ * (int(c)**(-0.5)) + w_ = torch.nn.functional.softmax(w_, dim=2) + + # attend to values + v = rearrange(v, 'b c h w -> b c (h w)') + w_ = rearrange(w_, 'b i j -> b j i') + h_ = torch.einsum('bij,bjk->bik', v, w_) + h_ = rearrange(h_, 'b c (h w) -> b c h w', h=h) + h_ = self.proj_out(h_) + + return x+h_ + + +class CrossAttention(nn.Module): + def __init__(self, query_dim, context_dim=None, heads=8, dim_head=64, dropout=0.): + super().__init__() + inner_dim = dim_head * heads + context_dim = default(context_dim, query_dim) + + self.scale = dim_head ** -0.5 + self.heads = heads + + self.to_q = nn.Linear(query_dim, inner_dim, bias=False) + self.to_k = nn.Linear(context_dim, inner_dim, bias=False) + self.to_v = nn.Linear(context_dim, inner_dim, bias=False) + + self.to_out = nn.Sequential( + nn.Linear(inner_dim, query_dim), + nn.Dropout(dropout) + ) + + def forward(self, x, context=None, mask=None): + + h = self.heads + + # breakpoint() + q = self.to_q(x) + context = default(context, x) + k = self.to_k(context) + v = self.to_v(context) + # breakpoint() + if len(k.shape) == 2: + k = rearrange(k, 'b d -> b 1 d') + v = rearrange(v, 'b d -> b 1 d') + k = repeat(k, 'b 1 d -> b n d', n=q.shape[1]) + v = repeat(v, 'b 1 d -> b n d', n=q.shape[1]) + + q, k, v = map(lambda t: rearrange(t, 'b n (h d) -> (b h) n d', h=h), (q, k, v)) + + # force cast to fp32 to avoid overflowing + if _ATTN_PRECISION =="fp32": + with torch.autocast(enabled=False, device_type = 'cuda'): + q, k = q.float(), k.float() + sim = einsum('b i d, b j d -> b i j', q, k) * self.scale + else: + sim = einsum('b i d, b j d -> b i j', q, k) * self.scale + + del q, k + + if exists(mask): + mask = rearrange(mask, 'b ... -> b (...)') + max_neg_value = -torch.finfo(sim.dtype).max + mask = repeat(mask, 'b j -> (b h) () j', h=h) + sim.masked_fill_(~mask, max_neg_value) + + # attention, what we cannot get enough of + sim = sim.softmax(dim=-1) + + out = einsum('b i j, b j d -> b i d', sim, v) + out = rearrange(out, '(b h) n d -> b n (h d)', h=h) + return self.to_out(out) + + +class MemoryEfficientCrossAttention(nn.Module): + # https://github.com/MatthieuTPHR/diffusers/blob/d80b531ff8060ec1ea982b65a1b8df70f73aa67c/src/diffusers/models/attention.py#L223 + def __init__(self, query_dim, context_dim=None, heads=8, dim_head=64, dropout=0.0): + super().__init__() + print(f"Setting up {self.__class__.__name__}. Query dim is {query_dim}, context_dim is {context_dim} and using " + f"{heads} heads.") + inner_dim = dim_head * heads + context_dim = default(context_dim, query_dim) + + self.heads = heads + self.dim_head = dim_head + + self.to_q = nn.Linear(query_dim, inner_dim, bias=False) + self.to_k = nn.Linear(context_dim, inner_dim, bias=False) + self.to_v = nn.Linear(context_dim, inner_dim, bias=False) + + self.to_out = nn.Sequential(nn.Linear(inner_dim, query_dim), nn.Dropout(dropout)) + self.attention_op: Optional[Any] = None + + def forward(self, x, context=None, mask=None): + q = self.to_q(x) + context = default(context, x) + k = self.to_k(context) + v = self.to_v(context) + + b, _, _ = q.shape + q, k, v = map( + lambda t: t.unsqueeze(3) + .reshape(b, t.shape[1], self.heads, self.dim_head) + .permute(0, 2, 1, 3) + .reshape(b * self.heads, t.shape[1], self.dim_head) + .contiguous(), + (q, k, v), + ) + + # actually compute the attention, what we cannot get enough of + out = xformers.ops.memory_efficient_attention(q, k, v, attn_bias=None, op=self.attention_op) + + if exists(mask): + raise NotImplementedError + out = ( + out.unsqueeze(0) + .reshape(b, self.heads, out.shape[1], self.dim_head) + .permute(0, 2, 1, 3) + .reshape(b, out.shape[1], self.heads * self.dim_head) + ) + return self.to_out(out) + + +class BasicTransformerBlock(nn.Module): + ATTENTION_MODES = { + "softmax": CrossAttention, # vanilla attention + "softmax-xformers": MemoryEfficientCrossAttention + } + def __init__(self, dim, n_heads, d_head, dropout=0., context_dim=None, gated_ff=True, checkpoint=True, + disable_self_attn=False): + super().__init__() + attn_mode = "softmax-xformers" if XFORMERS_IS_AVAILBLE else "softmax" + # breakpoint() + assert attn_mode in self.ATTENTION_MODES + attn_cls = self.ATTENTION_MODES[attn_mode] + self.disable_self_attn = disable_self_attn + self.attn1 = attn_cls(query_dim=dim, heads=n_heads, dim_head=d_head, dropout=dropout, + context_dim=context_dim if self.disable_self_attn else None) # is a self-attention if not self.disable_self_attn + self.ff = FeedForward(dim, dropout=dropout, glu=gated_ff) + self.attn2 = attn_cls(query_dim=dim, context_dim=context_dim, + heads=n_heads, dim_head=d_head, dropout=dropout) # is self-attn if context is none + self.norm1 = nn.LayerNorm(dim) + self.norm2 = nn.LayerNorm(dim) + self.norm3 = nn.LayerNorm(dim) + self.checkpoint = checkpoint + + def forward(self, x, context=None): + return checkpoint(self._forward, (x, context), self.parameters(), self.checkpoint) + + def _forward(self, x, context=None): + x = self.attn1(self.norm1(x), context=context if self.disable_self_attn else None) + x + x = self.attn2(self.norm2(x), context=context) + x + x = self.ff(self.norm3(x)) + x + return x + + +class SpatialTransformer(nn.Module): + """ + Transformer block for image-like data. + First, project the input (aka embedding) + and reshape to b, t, d. + Then apply standard transformer action. + Finally, reshape to image + NEW: use_linear for more efficiency instead of the 1x1 convs + """ + def __init__(self, in_channels, n_heads, d_head, + depth=1, dropout=0., context_dim=None, + disable_self_attn=False, use_linear=False, + use_checkpoint=True): + super().__init__() + if exists(context_dim) and not isinstance(context_dim, list): + context_dim = [context_dim] + self.in_channels = in_channels + inner_dim = n_heads * d_head + self.norm = Normalize(in_channels) + if not use_linear: + self.proj_in = nn.Conv2d(in_channels, + inner_dim, + kernel_size=1, + stride=1, + padding=0) + else: + self.proj_in = nn.Linear(in_channels, inner_dim) + + self.transformer_blocks = nn.ModuleList( + [BasicTransformerBlock(inner_dim, n_heads, d_head, dropout=dropout, context_dim=context_dim[d], + disable_self_attn=disable_self_attn, checkpoint=use_checkpoint) + for d in range(depth)] + ) + if not use_linear: + self.proj_out = zero_module(nn.Conv2d(inner_dim, + in_channels, + kernel_size=1, + stride=1, + padding=0)) + else: + self.proj_out = zero_module(nn.Linear(in_channels, inner_dim)) + self.use_linear = use_linear + + def forward(self, x, context=None): + # note: if no context is given, cross-attention defaults to self-attention + if not isinstance(context, list): + context = [context] + b, c, h, w = x.shape + x_in = x + x = self.norm(x) + # breakpoint() + if not self.use_linear: + x = self.proj_in(x) + + x = rearrange(x, 'b c h w -> b (h w) c').contiguous() + # context = [rearrange(context[0], 'b c h w -> b (h w) c').contiguous()] + # breakpoint() + if self.use_linear: + x = self.proj_in(x) + for i, block in enumerate(self.transformer_blocks): + x = block(x, context=context[i]) + if self.use_linear: + x = self.proj_out(x) + x = rearrange(x, 'b (h w) c -> b c h w', h=h, w=w).contiguous() + if not self.use_linear: + x = self.proj_out(x) + return x + x_in + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__init__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..49a11c2752f92edbc14c7b3df671c720d42180d7 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8c359b9488fb5fc2134d55474aad213191ee2292 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9957382e78468ef32a1d8741dbf6f3bf42201adf Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-38.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6c8af124f58363874b0927ff071ba512044b52d7 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..64db44bbe625f72da0d16aaa90e077061cfdc3cf Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..05650ecad54d999d1d83d0416cd56d114fd0c872 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..257ffc36147da91e109292741e4caa563f7e233b Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-38.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c5f4af2aaef32b8316ff9620f4e0f0570be42739 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..919763cc23b5b24743d806f167b473ea6efd1625 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2ea3eb89a04e9066f5418b31ff36f46b84e3e100 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b1b2a1d87cae92f1d970d97836b45fb6d25e7faa Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1dbbf969af1bd91ac773f53d7976d732437fde48 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c6e03d4eae6781bf0c7d5559a6836cb571fb099c Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..abf2bfb8f352a95d08363657a505c2b8567f1847 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-38.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7e4845d6b37f0a7e72cc860455d8894270513c3a Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..558f0947a6a9f11b2ae0a3bc453eeccb47ae3b02 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..61e75c17047da86fe39b94797519fcd907667ba6 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b92fc5516110d956ef16841845c5ae5e47649b74 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-38.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0cc3b0af0e71f88f664c7cf56fed8f392d0b93a5 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/model.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/model.py new file mode 100644 index 0000000000000000000000000000000000000000..b089eebbe1676d8249005bb9def002ff5180715b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/model.py @@ -0,0 +1,852 @@ +# pytorch_diffusion + derived encoder decoder +import math +import torch +import torch.nn as nn +import numpy as np +from einops import rearrange +from typing import Optional, Any + +from ldm.modules.attention import MemoryEfficientCrossAttention + +try: + import xformers + import xformers.ops + XFORMERS_IS_AVAILBLE = True +except: + XFORMERS_IS_AVAILBLE = False + print("No module 'xformers'. Proceeding without it.") + + +def get_timestep_embedding(timesteps, embedding_dim): + """ + This matches the implementation in Denoising Diffusion Probabilistic Models: + From Fairseq. + Build sinusoidal embeddings. + This matches the implementation in tensor2tensor, but differs slightly + from the description in Section 3.5 of "Attention Is All You Need". + """ + assert len(timesteps.shape) == 1 + + half_dim = embedding_dim // 2 + emb = math.log(10000) / (half_dim - 1) + emb = torch.exp(torch.arange(half_dim, dtype=torch.float32) * -emb) + emb = emb.to(device=timesteps.device) + emb = timesteps.float()[:, None] * emb[None, :] + emb = torch.cat([torch.sin(emb), torch.cos(emb)], dim=1) + if embedding_dim % 2 == 1: # zero pad + emb = torch.nn.functional.pad(emb, (0,1,0,0)) + return emb + + +def nonlinearity(x): + # swish + return x*torch.sigmoid(x) + + +def Normalize(in_channels, num_groups=32): + return torch.nn.GroupNorm(num_groups=num_groups, num_channels=in_channels, eps=1e-6, affine=True) + + +class Upsample(nn.Module): + def __init__(self, in_channels, with_conv): + super().__init__() + self.with_conv = with_conv + if self.with_conv: + self.conv = torch.nn.Conv2d(in_channels, + in_channels, + kernel_size=3, + stride=1, + padding=1) + + def forward(self, x): + x = torch.nn.functional.interpolate(x, scale_factor=2.0, mode="nearest") + if self.with_conv: + x = self.conv(x) + return x + + +class Downsample(nn.Module): + def __init__(self, in_channels, with_conv): + super().__init__() + self.with_conv = with_conv + if self.with_conv: + # no asymmetric padding in torch conv, must do it ourselves + self.conv = torch.nn.Conv2d(in_channels, + in_channels, + kernel_size=3, + stride=2, + padding=0) + + def forward(self, x): + if self.with_conv: + pad = (0,1,0,1) + x = torch.nn.functional.pad(x, pad, mode="constant", value=0) + x = self.conv(x) + else: + x = torch.nn.functional.avg_pool2d(x, kernel_size=2, stride=2) + return x + + +class ResnetBlock(nn.Module): + def __init__(self, *, in_channels, out_channels=None, conv_shortcut=False, + dropout, temb_channels=512): + super().__init__() + self.in_channels = in_channels + out_channels = in_channels if out_channels is None else out_channels + self.out_channels = out_channels + self.use_conv_shortcut = conv_shortcut + + self.norm1 = Normalize(in_channels) + self.conv1 = torch.nn.Conv2d(in_channels, + out_channels, + kernel_size=3, + stride=1, + padding=1) + if temb_channels > 0: + self.temb_proj = torch.nn.Linear(temb_channels, + out_channels) + self.norm2 = Normalize(out_channels) + self.dropout = torch.nn.Dropout(dropout) + self.conv2 = torch.nn.Conv2d(out_channels, + out_channels, + kernel_size=3, + stride=1, + padding=1) + if self.in_channels != self.out_channels: + if self.use_conv_shortcut: + self.conv_shortcut = torch.nn.Conv2d(in_channels, + out_channels, + kernel_size=3, + stride=1, + padding=1) + else: + self.nin_shortcut = torch.nn.Conv2d(in_channels, + out_channels, + kernel_size=1, + stride=1, + padding=0) + + def forward(self, x, temb): + h = x + h = self.norm1(h) + h = nonlinearity(h) + h = self.conv1(h) + + if temb is not None: + h = h + self.temb_proj(nonlinearity(temb))[:,:,None,None] + + h = self.norm2(h) + h = nonlinearity(h) + h = self.dropout(h) + h = self.conv2(h) + + if self.in_channels != self.out_channels: + if self.use_conv_shortcut: + x = self.conv_shortcut(x) + else: + x = self.nin_shortcut(x) + + return x+h + + +class AttnBlock(nn.Module): + def __init__(self, in_channels): + super().__init__() + self.in_channels = in_channels + + self.norm = Normalize(in_channels) + self.q = torch.nn.Conv2d(in_channels, + in_channels, + kernel_size=1, + stride=1, + padding=0) + self.k = torch.nn.Conv2d(in_channels, + in_channels, + kernel_size=1, + stride=1, + padding=0) + self.v = torch.nn.Conv2d(in_channels, + in_channels, + kernel_size=1, + stride=1, + padding=0) + self.proj_out = torch.nn.Conv2d(in_channels, + in_channels, + kernel_size=1, + stride=1, + padding=0) + + def forward(self, x): + h_ = x + h_ = self.norm(h_) + q = self.q(h_) + k = self.k(h_) + v = self.v(h_) + + # compute attention + b,c,h,w = q.shape + q = q.reshape(b,c,h*w) + q = q.permute(0,2,1) # b,hw,c + k = k.reshape(b,c,h*w) # b,c,hw + w_ = torch.bmm(q,k) # b,hw,hw w[b,i,j]=sum_c q[b,i,c]k[b,c,j] + w_ = w_ * (int(c)**(-0.5)) + w_ = torch.nn.functional.softmax(w_, dim=2) + + # attend to values + v = v.reshape(b,c,h*w) + w_ = w_.permute(0,2,1) # b,hw,hw (first hw of k, second of q) + h_ = torch.bmm(v,w_) # b, c,hw (hw of q) h_[b,c,j] = sum_i v[b,c,i] w_[b,i,j] + h_ = h_.reshape(b,c,h,w) + + h_ = self.proj_out(h_) + + return x+h_ + +class MemoryEfficientAttnBlock(nn.Module): + """ + Uses xformers efficient implementation, + see https://github.com/MatthieuTPHR/diffusers/blob/d80b531ff8060ec1ea982b65a1b8df70f73aa67c/src/diffusers/models/attention.py#L223 + Note: this is a single-head self-attention operation + """ + # + def __init__(self, in_channels): + super().__init__() + self.in_channels = in_channels + + self.norm = Normalize(in_channels) + self.q = torch.nn.Conv2d(in_channels, + in_channels, + kernel_size=1, + stride=1, + padding=0) + self.k = torch.nn.Conv2d(in_channels, + in_channels, + kernel_size=1, + stride=1, + padding=0) + self.v = torch.nn.Conv2d(in_channels, + in_channels, + kernel_size=1, + stride=1, + padding=0) + self.proj_out = torch.nn.Conv2d(in_channels, + in_channels, + kernel_size=1, + stride=1, + padding=0) + self.attention_op: Optional[Any] = None + + def forward(self, x): + h_ = x + h_ = self.norm(h_) + q = self.q(h_) + k = self.k(h_) + v = self.v(h_) + + # compute attention + B, C, H, W = q.shape + q, k, v = map(lambda x: rearrange(x, 'b c h w -> b (h w) c'), (q, k, v)) + + q, k, v = map( + lambda t: t.unsqueeze(3) + .reshape(B, t.shape[1], 1, C) + .permute(0, 2, 1, 3) + .reshape(B * 1, t.shape[1], C) + .contiguous(), + (q, k, v), + ) + out = xformers.ops.memory_efficient_attention(q, k, v, attn_bias=None, op=self.attention_op) + + out = ( + out.unsqueeze(0) + .reshape(B, 1, out.shape[1], C) + .permute(0, 2, 1, 3) + .reshape(B, out.shape[1], C) + ) + out = rearrange(out, 'b (h w) c -> b c h w', b=B, h=H, w=W, c=C) + out = self.proj_out(out) + return x+out + + +class MemoryEfficientCrossAttentionWrapper(MemoryEfficientCrossAttention): + def forward(self, x, context=None, mask=None): + b, c, h, w = x.shape + x = rearrange(x, 'b c h w -> b (h w) c') + out = super().forward(x, context=context, mask=mask) + out = rearrange(out, 'b (h w) c -> b c h w', h=h, w=w, c=c) + return x + out + + +def make_attn(in_channels, attn_type="vanilla", attn_kwargs=None): + assert attn_type in ["vanilla", "vanilla-xformers", "memory-efficient-cross-attn", "linear", "none"], f'attn_type {attn_type} unknown' + if XFORMERS_IS_AVAILBLE and attn_type == "vanilla": + attn_type = "vanilla-xformers" + print(f"making attention of type '{attn_type}' with {in_channels} in_channels") + if attn_type == "vanilla": + assert attn_kwargs is None + return AttnBlock(in_channels) + elif attn_type == "vanilla-xformers": + print(f"building MemoryEfficientAttnBlock with {in_channels} in_channels...") + return MemoryEfficientAttnBlock(in_channels) + elif type == "memory-efficient-cross-attn": + attn_kwargs["query_dim"] = in_channels + return MemoryEfficientCrossAttentionWrapper(**attn_kwargs) + elif attn_type == "none": + return nn.Identity(in_channels) + else: + raise NotImplementedError() + + +class Model(nn.Module): + def __init__(self, *, ch, out_ch, ch_mult=(1,2,4,8), num_res_blocks, + attn_resolutions, dropout=0.0, resamp_with_conv=True, in_channels, + resolution, use_timestep=True, use_linear_attn=False, attn_type="vanilla"): + super().__init__() + if use_linear_attn: attn_type = "linear" + self.ch = ch + self.temb_ch = self.ch*4 + self.num_resolutions = len(ch_mult) + self.num_res_blocks = num_res_blocks + self.resolution = resolution + self.in_channels = in_channels + + self.use_timestep = use_timestep + if self.use_timestep: + # timestep embedding + self.temb = nn.Module() + self.temb.dense = nn.ModuleList([ + torch.nn.Linear(self.ch, + self.temb_ch), + torch.nn.Linear(self.temb_ch, + self.temb_ch), + ]) + + # downsampling + self.conv_in = torch.nn.Conv2d(in_channels, + self.ch, + kernel_size=3, + stride=1, + padding=1) + + curr_res = resolution + in_ch_mult = (1,)+tuple(ch_mult) + self.down = nn.ModuleList() + for i_level in range(self.num_resolutions): + block = nn.ModuleList() + attn = nn.ModuleList() + block_in = ch*in_ch_mult[i_level] + block_out = ch*ch_mult[i_level] + for i_block in range(self.num_res_blocks): + block.append(ResnetBlock(in_channels=block_in, + out_channels=block_out, + temb_channels=self.temb_ch, + dropout=dropout)) + block_in = block_out + if curr_res in attn_resolutions: + attn.append(make_attn(block_in, attn_type=attn_type)) + down = nn.Module() + down.block = block + down.attn = attn + if i_level != self.num_resolutions-1: + down.downsample = Downsample(block_in, resamp_with_conv) + curr_res = curr_res // 2 + self.down.append(down) + + # middle + self.mid = nn.Module() + self.mid.block_1 = ResnetBlock(in_channels=block_in, + out_channels=block_in, + temb_channels=self.temb_ch, + dropout=dropout) + self.mid.attn_1 = make_attn(block_in, attn_type=attn_type) + self.mid.block_2 = ResnetBlock(in_channels=block_in, + out_channels=block_in, + temb_channels=self.temb_ch, + dropout=dropout) + + # upsampling + self.up = nn.ModuleList() + for i_level in reversed(range(self.num_resolutions)): + block = nn.ModuleList() + attn = nn.ModuleList() + block_out = ch*ch_mult[i_level] + skip_in = ch*ch_mult[i_level] + for i_block in range(self.num_res_blocks+1): + if i_block == self.num_res_blocks: + skip_in = ch*in_ch_mult[i_level] + block.append(ResnetBlock(in_channels=block_in+skip_in, + out_channels=block_out, + temb_channels=self.temb_ch, + dropout=dropout)) + block_in = block_out + if curr_res in attn_resolutions: + attn.append(make_attn(block_in, attn_type=attn_type)) + up = nn.Module() + up.block = block + up.attn = attn + if i_level != 0: + up.upsample = Upsample(block_in, resamp_with_conv) + curr_res = curr_res * 2 + self.up.insert(0, up) # prepend to get consistent order + + # end + self.norm_out = Normalize(block_in) + self.conv_out = torch.nn.Conv2d(block_in, + out_ch, + kernel_size=3, + stride=1, + padding=1) + + def forward(self, x, t=None, context=None): + #assert x.shape[2] == x.shape[3] == self.resolution + if context is not None: + # assume aligned context, cat along channel axis + x = torch.cat((x, context), dim=1) + if self.use_timestep: + # timestep embedding + assert t is not None + temb = get_timestep_embedding(t, self.ch) + temb = self.temb.dense[0](temb) + temb = nonlinearity(temb) + temb = self.temb.dense[1](temb) + else: + temb = None + + # downsampling + hs = [self.conv_in(x)] + for i_level in range(self.num_resolutions): + for i_block in range(self.num_res_blocks): + h = self.down[i_level].block[i_block](hs[-1], temb) + if len(self.down[i_level].attn) > 0: + h = self.down[i_level].attn[i_block](h) + hs.append(h) + if i_level != self.num_resolutions-1: + hs.append(self.down[i_level].downsample(hs[-1])) + + # middle + h = hs[-1] + h = self.mid.block_1(h, temb) + h = self.mid.attn_1(h) + h = self.mid.block_2(h, temb) + + # upsampling + for i_level in reversed(range(self.num_resolutions)): + for i_block in range(self.num_res_blocks+1): + h = self.up[i_level].block[i_block]( + torch.cat([h, hs.pop()], dim=1), temb) + if len(self.up[i_level].attn) > 0: + h = self.up[i_level].attn[i_block](h) + if i_level != 0: + h = self.up[i_level].upsample(h) + + # end + h = self.norm_out(h) + h = nonlinearity(h) + h = self.conv_out(h) + return h + + def get_last_layer(self): + return self.conv_out.weight + + +class Encoder(nn.Module): + def __init__(self, *, ch, out_ch, ch_mult=(1,2,4,8), num_res_blocks, + attn_resolutions, dropout=0.0, resamp_with_conv=True, in_channels, + resolution, z_channels, double_z=True, use_linear_attn=False, attn_type="vanilla", + **ignore_kwargs): + super().__init__() + if use_linear_attn: attn_type = "linear" + self.ch = ch + self.temb_ch = 0 + self.num_resolutions = len(ch_mult) + self.num_res_blocks = num_res_blocks + self.resolution = resolution + self.in_channels = in_channels + + # downsampling + self.conv_in = torch.nn.Conv2d(in_channels, + self.ch, + kernel_size=3, + stride=1, + padding=1) + + curr_res = resolution + in_ch_mult = (1,)+tuple(ch_mult) + self.in_ch_mult = in_ch_mult + self.down = nn.ModuleList() + for i_level in range(self.num_resolutions): + block = nn.ModuleList() + attn = nn.ModuleList() + block_in = ch*in_ch_mult[i_level] + block_out = ch*ch_mult[i_level] + for i_block in range(self.num_res_blocks): + block.append(ResnetBlock(in_channels=block_in, + out_channels=block_out, + temb_channels=self.temb_ch, + dropout=dropout)) + block_in = block_out + if curr_res in attn_resolutions: + attn.append(make_attn(block_in, attn_type=attn_type)) + down = nn.Module() + down.block = block + down.attn = attn + if i_level != self.num_resolutions-1: + down.downsample = Downsample(block_in, resamp_with_conv) + curr_res = curr_res // 2 + self.down.append(down) + + # middle + self.mid = nn.Module() + self.mid.block_1 = ResnetBlock(in_channels=block_in, + out_channels=block_in, + temb_channels=self.temb_ch, + dropout=dropout) + self.mid.attn_1 = make_attn(block_in, attn_type=attn_type) + self.mid.block_2 = ResnetBlock(in_channels=block_in, + out_channels=block_in, + temb_channels=self.temb_ch, + dropout=dropout) + + # end + self.norm_out = Normalize(block_in) + self.conv_out = torch.nn.Conv2d(block_in, + 2*z_channels if double_z else z_channels, + kernel_size=3, + stride=1, + padding=1) + + def forward(self, x): + # timestep embedding + temb = None + + # downsampling + hs = [self.conv_in(x)] + for i_level in range(self.num_resolutions): + for i_block in range(self.num_res_blocks): + h = self.down[i_level].block[i_block](hs[-1], temb) + if len(self.down[i_level].attn) > 0: + h = self.down[i_level].attn[i_block](h) + hs.append(h) + if i_level != self.num_resolutions-1: + hs.append(self.down[i_level].downsample(hs[-1])) + + # middle + h = hs[-1] + h = self.mid.block_1(h, temb) + h = self.mid.attn_1(h) + h = self.mid.block_2(h, temb) + + # end + h = self.norm_out(h) + h = nonlinearity(h) + h = self.conv_out(h) + return h + + +class Decoder(nn.Module): + def __init__(self, *, ch, out_ch, ch_mult=(1,2,4,8), num_res_blocks, + attn_resolutions, dropout=0.0, resamp_with_conv=True, in_channels, + resolution, z_channels, give_pre_end=False, tanh_out=False, use_linear_attn=False, + attn_type="vanilla", **ignorekwargs): + super().__init__() + if use_linear_attn: attn_type = "linear" + self.ch = ch + self.temb_ch = 0 + self.num_resolutions = len(ch_mult) + self.num_res_blocks = num_res_blocks + self.resolution = resolution + self.in_channels = in_channels + self.give_pre_end = give_pre_end + self.tanh_out = tanh_out + + # compute in_ch_mult, block_in and curr_res at lowest res + in_ch_mult = (1,)+tuple(ch_mult) + block_in = ch*ch_mult[self.num_resolutions-1] + curr_res = resolution // 2**(self.num_resolutions-1) + self.z_shape = (1,z_channels,curr_res,curr_res) + print("Working with z of shape {} = {} dimensions.".format( + self.z_shape, np.prod(self.z_shape))) + + # z to block_in + self.conv_in = torch.nn.Conv2d(z_channels, + block_in, + kernel_size=3, + stride=1, + padding=1) + + # middle + self.mid = nn.Module() + self.mid.block_1 = ResnetBlock(in_channels=block_in, + out_channels=block_in, + temb_channels=self.temb_ch, + dropout=dropout) + self.mid.attn_1 = make_attn(block_in, attn_type=attn_type) + self.mid.block_2 = ResnetBlock(in_channels=block_in, + out_channels=block_in, + temb_channels=self.temb_ch, + dropout=dropout) + + # upsampling + self.up = nn.ModuleList() + for i_level in reversed(range(self.num_resolutions)): + block = nn.ModuleList() + attn = nn.ModuleList() + block_out = ch*ch_mult[i_level] + for i_block in range(self.num_res_blocks+1): + block.append(ResnetBlock(in_channels=block_in, + out_channels=block_out, + temb_channels=self.temb_ch, + dropout=dropout)) + block_in = block_out + if curr_res in attn_resolutions: + attn.append(make_attn(block_in, attn_type=attn_type)) + up = nn.Module() + up.block = block + up.attn = attn + if i_level != 0: + up.upsample = Upsample(block_in, resamp_with_conv) + curr_res = curr_res * 2 + self.up.insert(0, up) # prepend to get consistent order + + # end + self.norm_out = Normalize(block_in) + self.conv_out = torch.nn.Conv2d(block_in, + out_ch, + kernel_size=3, + stride=1, + padding=1) + + def forward(self, z): + #assert z.shape[1:] == self.z_shape[1:] + self.last_z_shape = z.shape + + # timestep embedding + temb = None + + # z to block_in + h = self.conv_in(z) + + # middle + h = self.mid.block_1(h, temb) + h = self.mid.attn_1(h) + h = self.mid.block_2(h, temb) + + # upsampling + for i_level in reversed(range(self.num_resolutions)): + for i_block in range(self.num_res_blocks+1): + h = self.up[i_level].block[i_block](h, temb) + if len(self.up[i_level].attn) > 0: + h = self.up[i_level].attn[i_block](h) + if i_level != 0: + h = self.up[i_level].upsample(h) + + # end + if self.give_pre_end: + return h + + h = self.norm_out(h) + h = nonlinearity(h) + h = self.conv_out(h) + if self.tanh_out: + h = torch.tanh(h) + return h + + +class SimpleDecoder(nn.Module): + def __init__(self, in_channels, out_channels, *args, **kwargs): + super().__init__() + self.model = nn.ModuleList([nn.Conv2d(in_channels, in_channels, 1), + ResnetBlock(in_channels=in_channels, + out_channels=2 * in_channels, + temb_channels=0, dropout=0.0), + ResnetBlock(in_channels=2 * in_channels, + out_channels=4 * in_channels, + temb_channels=0, dropout=0.0), + ResnetBlock(in_channels=4 * in_channels, + out_channels=2 * in_channels, + temb_channels=0, dropout=0.0), + nn.Conv2d(2*in_channels, in_channels, 1), + Upsample(in_channels, with_conv=True)]) + # end + self.norm_out = Normalize(in_channels) + self.conv_out = torch.nn.Conv2d(in_channels, + out_channels, + kernel_size=3, + stride=1, + padding=1) + + def forward(self, x): + for i, layer in enumerate(self.model): + if i in [1,2,3]: + x = layer(x, None) + else: + x = layer(x) + + h = self.norm_out(x) + h = nonlinearity(h) + x = self.conv_out(h) + return x + + +class UpsampleDecoder(nn.Module): + def __init__(self, in_channels, out_channels, ch, num_res_blocks, resolution, + ch_mult=(2,2), dropout=0.0): + super().__init__() + # upsampling + self.temb_ch = 0 + self.num_resolutions = len(ch_mult) + self.num_res_blocks = num_res_blocks + block_in = in_channels + curr_res = resolution // 2 ** (self.num_resolutions - 1) + self.res_blocks = nn.ModuleList() + self.upsample_blocks = nn.ModuleList() + for i_level in range(self.num_resolutions): + res_block = [] + block_out = ch * ch_mult[i_level] + for i_block in range(self.num_res_blocks + 1): + res_block.append(ResnetBlock(in_channels=block_in, + out_channels=block_out, + temb_channels=self.temb_ch, + dropout=dropout)) + block_in = block_out + self.res_blocks.append(nn.ModuleList(res_block)) + if i_level != self.num_resolutions - 1: + self.upsample_blocks.append(Upsample(block_in, True)) + curr_res = curr_res * 2 + + # end + self.norm_out = Normalize(block_in) + self.conv_out = torch.nn.Conv2d(block_in, + out_channels, + kernel_size=3, + stride=1, + padding=1) + + def forward(self, x): + # upsampling + h = x + for k, i_level in enumerate(range(self.num_resolutions)): + for i_block in range(self.num_res_blocks + 1): + h = self.res_blocks[i_level][i_block](h, None) + if i_level != self.num_resolutions - 1: + h = self.upsample_blocks[k](h) + h = self.norm_out(h) + h = nonlinearity(h) + h = self.conv_out(h) + return h + + +class LatentRescaler(nn.Module): + def __init__(self, factor, in_channels, mid_channels, out_channels, depth=2): + super().__init__() + # residual block, interpolate, residual block + self.factor = factor + self.conv_in = nn.Conv2d(in_channels, + mid_channels, + kernel_size=3, + stride=1, + padding=1) + self.res_block1 = nn.ModuleList([ResnetBlock(in_channels=mid_channels, + out_channels=mid_channels, + temb_channels=0, + dropout=0.0) for _ in range(depth)]) + self.attn = AttnBlock(mid_channels) + self.res_block2 = nn.ModuleList([ResnetBlock(in_channels=mid_channels, + out_channels=mid_channels, + temb_channels=0, + dropout=0.0) for _ in range(depth)]) + + self.conv_out = nn.Conv2d(mid_channels, + out_channels, + kernel_size=1, + ) + + def forward(self, x): + x = self.conv_in(x) + for block in self.res_block1: + x = block(x, None) + x = torch.nn.functional.interpolate(x, size=(int(round(x.shape[2]*self.factor)), int(round(x.shape[3]*self.factor)))) + x = self.attn(x) + for block in self.res_block2: + x = block(x, None) + x = self.conv_out(x) + return x + + +class MergedRescaleEncoder(nn.Module): + def __init__(self, in_channels, ch, resolution, out_ch, num_res_blocks, + attn_resolutions, dropout=0.0, resamp_with_conv=True, + ch_mult=(1,2,4,8), rescale_factor=1.0, rescale_module_depth=1): + super().__init__() + intermediate_chn = ch * ch_mult[-1] + self.encoder = Encoder(in_channels=in_channels, num_res_blocks=num_res_blocks, ch=ch, ch_mult=ch_mult, + z_channels=intermediate_chn, double_z=False, resolution=resolution, + attn_resolutions=attn_resolutions, dropout=dropout, resamp_with_conv=resamp_with_conv, + out_ch=None) + self.rescaler = LatentRescaler(factor=rescale_factor, in_channels=intermediate_chn, + mid_channels=intermediate_chn, out_channels=out_ch, depth=rescale_module_depth) + + def forward(self, x): + x = self.encoder(x) + x = self.rescaler(x) + return x + + +class MergedRescaleDecoder(nn.Module): + def __init__(self, z_channels, out_ch, resolution, num_res_blocks, attn_resolutions, ch, ch_mult=(1,2,4,8), + dropout=0.0, resamp_with_conv=True, rescale_factor=1.0, rescale_module_depth=1): + super().__init__() + tmp_chn = z_channels*ch_mult[-1] + self.decoder = Decoder(out_ch=out_ch, z_channels=tmp_chn, attn_resolutions=attn_resolutions, dropout=dropout, + resamp_with_conv=resamp_with_conv, in_channels=None, num_res_blocks=num_res_blocks, + ch_mult=ch_mult, resolution=resolution, ch=ch) + self.rescaler = LatentRescaler(factor=rescale_factor, in_channels=z_channels, mid_channels=tmp_chn, + out_channels=tmp_chn, depth=rescale_module_depth) + + def forward(self, x): + x = self.rescaler(x) + x = self.decoder(x) + return x + + +class Upsampler(nn.Module): + def __init__(self, in_size, out_size, in_channels, out_channels, ch_mult=2): + super().__init__() + assert out_size >= in_size + num_blocks = int(np.log2(out_size//in_size))+1 + factor_up = 1.+ (out_size % in_size) + print(f"Building {self.__class__.__name__} with in_size: {in_size} --> out_size {out_size} and factor {factor_up}") + self.rescaler = LatentRescaler(factor=factor_up, in_channels=in_channels, mid_channels=2*in_channels, + out_channels=in_channels) + self.decoder = Decoder(out_ch=out_channels, resolution=out_size, z_channels=in_channels, num_res_blocks=2, + attn_resolutions=[], in_channels=None, ch=in_channels, + ch_mult=[ch_mult for _ in range(num_blocks)]) + + def forward(self, x): + x = self.rescaler(x) + x = self.decoder(x) + return x + + +class Resize(nn.Module): + def __init__(self, in_channels=None, learned=False, mode="bilinear"): + super().__init__() + self.with_conv = learned + self.mode = mode + if self.with_conv: + print(f"Note: {self.__class__.__name} uses learned downsampling and will ignore the fixed {mode} mode") + raise NotImplementedError() + assert in_channels is not None + # no asymmetric padding in torch conv, must do it ourselves + self.conv = torch.nn.Conv2d(in_channels, + in_channels, + kernel_size=4, + stride=2, + padding=1) + + def forward(self, x, scale_factor=1.0): + if scale_factor==1.0: + return x + else: + x = torch.nn.functional.interpolate(x, mode=self.mode, align_corners=False, scale_factor=scale_factor) + return x diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/openaimodel.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/openaimodel.py new file mode 100644 index 0000000000000000000000000000000000000000..af442ac6b189aa0cc558126373e7a104afd31556 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/openaimodel.py @@ -0,0 +1,788 @@ +from abc import abstractmethod +import math + +import numpy as np +import torch as th +import torch.nn as nn +import torch.nn.functional as F + +from ldm.modules.diffusionmodules.util import ( + checkpoint, + conv_nd, + linear, + avg_pool_nd, + zero_module, + normalization, + timestep_embedding, +) +from ldm.modules.attention import SpatialTransformer +from ldm.util import exists + + +# dummy replace +def convert_module_to_f16(x): + pass + +def convert_module_to_f32(x): + pass + + +## go +class AttentionPool2d(nn.Module): + """ + Adapted from CLIP: https://github.com/openai/CLIP/blob/main/clip/model.py + """ + + def __init__( + self, + spacial_dim: int, + embed_dim: int, + num_heads_channels: int, + output_dim: int = None, + ): + super().__init__() + self.positional_embedding = nn.Parameter(th.randn(embed_dim, spacial_dim ** 2 + 1) / embed_dim ** 0.5) + self.qkv_proj = conv_nd(1, embed_dim, 3 * embed_dim, 1) + self.c_proj = conv_nd(1, embed_dim, output_dim or embed_dim, 1) + self.num_heads = embed_dim // num_heads_channels + self.attention = QKVAttention(self.num_heads) + + def forward(self, x): + b, c, *_spatial = x.shape + x = x.reshape(b, c, -1) # NC(HW) + x = th.cat([x.mean(dim=-1, keepdim=True), x], dim=-1) # NC(HW+1) + x = x + self.positional_embedding[None, :, :].to(x.dtype) # NC(HW+1) + x = self.qkv_proj(x) + x = self.attention(x) + x = self.c_proj(x) + return x[:, :, 0] + + +class TimestepBlock(nn.Module): + """ + Any module where forward() takes timestep embeddings as a second argument. + """ + + @abstractmethod + def forward(self, x, emb): + """ + Apply the module to `x` given `emb` timestep embeddings. + """ + + +class TimestepEmbedSequential(nn.Sequential, TimestepBlock): + """ + A sequential module that passes timestep embeddings to the children that + support it as an extra input. + """ + + def forward(self, x, emb, context=None): + for layer in self: + if isinstance(layer, TimestepBlock): + x = layer(x, emb) + elif isinstance(layer, SpatialTransformer): + x = layer(x, context) + else: + x = layer(x) + return x + + +class Upsample(nn.Module): + """ + An upsampling layer with an optional convolution. + :param channels: channels in the inputs and outputs. + :param use_conv: a bool determining if a convolution is applied. + :param dims: determines if the signal is 1D, 2D, or 3D. If 3D, then + upsampling occurs in the inner-two dimensions. + """ + + def __init__(self, channels, use_conv, dims=2, out_channels=None, padding=1): + super().__init__() + self.channels = channels + self.out_channels = out_channels or channels + self.use_conv = use_conv + self.dims = dims + if use_conv: + self.conv = conv_nd(dims, self.channels, self.out_channels, 3, padding=padding) + + def forward(self, x): + assert x.shape[1] == self.channels + if self.dims == 3: + x = F.interpolate( + x, (x.shape[2], x.shape[3] * 2, x.shape[4] * 2), mode="nearest" + ) + else: + x = F.interpolate(x, scale_factor=2, mode="nearest") + if self.use_conv: + x = self.conv(x) + return x + +class TransposedUpsample(nn.Module): + 'Learned 2x upsampling without padding' + def __init__(self, channels, out_channels=None, ks=5): + super().__init__() + self.channels = channels + self.out_channels = out_channels or channels + + self.up = nn.ConvTranspose2d(self.channels,self.out_channels,kernel_size=ks,stride=2) + + def forward(self,x): + return self.up(x) + + +class Downsample(nn.Module): + """ + A downsampling layer with an optional convolution. + :param channels: channels in the inputs and outputs. + :param use_conv: a bool determining if a convolution is applied. + :param dims: determines if the signal is 1D, 2D, or 3D. If 3D, then + downsampling occurs in the inner-two dimensions. + """ + + def __init__(self, channels, use_conv, dims=2, out_channels=None,padding=1): + super().__init__() + self.channels = channels + self.out_channels = out_channels or channels + self.use_conv = use_conv + self.dims = dims + stride = 2 if dims != 3 else (1, 2, 2) + if use_conv: + self.op = conv_nd( + dims, self.channels, self.out_channels, 3, stride=stride, padding=padding + ) + else: + assert self.channels == self.out_channels + self.op = avg_pool_nd(dims, kernel_size=stride, stride=stride) + + def forward(self, x): + assert x.shape[1] == self.channels + return self.op(x) + + +class ResBlock(TimestepBlock): + """ + A residual block that can optionally change the number of channels. + :param channels: the number of input channels. + :param emb_channels: the number of timestep embedding channels. + :param dropout: the rate of dropout. + :param out_channels: if specified, the number of out channels. + :param use_conv: if True and out_channels is specified, use a spatial + convolution instead of a smaller 1x1 convolution to change the + channels in the skip connection. + :param dims: determines if the signal is 1D, 2D, or 3D. + :param use_checkpoint: if True, use gradient checkpointing on this module. + :param up: if True, use this block for upsampling. + :param down: if True, use this block for downsampling. + """ + + def __init__( + self, + channels, + emb_channels, + dropout, + out_channels=None, + use_conv=False, + use_scale_shift_norm=False, + dims=2, + use_checkpoint=False, + up=False, + down=False, + ): + super().__init__() + self.channels = channels + self.emb_channels = emb_channels + self.dropout = dropout + self.out_channels = out_channels or channels + self.use_conv = use_conv + self.use_checkpoint = use_checkpoint + self.use_scale_shift_norm = use_scale_shift_norm + + self.in_layers = nn.Sequential( + normalization(channels), + nn.SiLU(), + conv_nd(dims, channels, self.out_channels, 3, padding=1), + ) + + self.updown = up or down + + if up: + self.h_upd = Upsample(channels, False, dims) + self.x_upd = Upsample(channels, False, dims) + elif down: + self.h_upd = Downsample(channels, False, dims) + self.x_upd = Downsample(channels, False, dims) + else: + self.h_upd = self.x_upd = nn.Identity() + + self.emb_layers = nn.Sequential( + nn.SiLU(), + linear( + emb_channels, + 2 * self.out_channels if use_scale_shift_norm else self.out_channels, + ), + ) + self.out_layers = nn.Sequential( + normalization(self.out_channels), + nn.SiLU(), + nn.Dropout(p=dropout), + zero_module( + conv_nd(dims, self.out_channels, self.out_channels, 3, padding=1) + ), + ) + + if self.out_channels == channels: + self.skip_connection = nn.Identity() + elif use_conv: + self.skip_connection = conv_nd( + dims, channels, self.out_channels, 3, padding=1 + ) + else: + self.skip_connection = conv_nd(dims, channels, self.out_channels, 1) + + def forward(self, x, emb): + """ + Apply the block to a Tensor, conditioned on a timestep embedding. + :param x: an [N x C x ...] Tensor of features. + :param emb: an [N x emb_channels] Tensor of timestep embeddings. + :return: an [N x C x ...] Tensor of outputs. + """ + return checkpoint( + self._forward, (x, emb), self.parameters(), self.use_checkpoint + ) + + + def _forward(self, x, emb): + if self.updown: + in_rest, in_conv = self.in_layers[:-1], self.in_layers[-1] + h = in_rest(x) + h = self.h_upd(h) + x = self.x_upd(x) + h = in_conv(h) + else: + h = self.in_layers(x) + emb_out = self.emb_layers(emb).type(h.dtype) + while len(emb_out.shape) < len(h.shape): + emb_out = emb_out[..., None] + if self.use_scale_shift_norm: + out_norm, out_rest = self.out_layers[0], self.out_layers[1:] + scale, shift = th.chunk(emb_out, 2, dim=1) + h = out_norm(h) * (1 + scale) + shift + h = out_rest(h) + else: + h = h + emb_out + h = self.out_layers(h) + return self.skip_connection(x) + h + + +class AttentionBlock(nn.Module): + """ + An attention block that allows spatial positions to attend to each other. + Originally ported from here, but adapted to the N-d case. + https://github.com/hojonathanho/diffusion/blob/1e0dceb3b3495bbe19116a5e1b3596cd0706c543/diffusion_tf/models/unet.py#L66. + """ + + def __init__( + self, + channels, + num_heads=1, + num_head_channels=-1, + use_checkpoint=False, + use_new_attention_order=False, + ): + super().__init__() + self.channels = channels + if num_head_channels == -1: + self.num_heads = num_heads + else: + assert ( + channels % num_head_channels == 0 + ), f"q,k,v channels {channels} is not divisible by num_head_channels {num_head_channels}" + self.num_heads = channels // num_head_channels + self.use_checkpoint = use_checkpoint + self.norm = normalization(channels) + self.qkv = conv_nd(1, channels, channels * 3, 1) + if use_new_attention_order: + # split qkv before split heads + self.attention = QKVAttention(self.num_heads) + else: + # split heads before split qkv + self.attention = QKVAttentionLegacy(self.num_heads) + + self.proj_out = zero_module(conv_nd(1, channels, channels, 1)) + + def forward(self, x): + return checkpoint(self._forward, (x,), self.parameters(), True) # TODO: check checkpoint usage, is True # TODO: fix the .half call!!! + #return pt_checkpoint(self._forward, x) # pytorch + + def _forward(self, x): + b, c, *spatial = x.shape + x = x.reshape(b, c, -1) + qkv = self.qkv(self.norm(x)) + h = self.attention(qkv) + h = self.proj_out(h) + return (x + h).reshape(b, c, *spatial) + + +def count_flops_attn(model, _x, y): + """ + A counter for the `thop` package to count the operations in an + attention operation. + Meant to be used like: + macs, params = thop.profile( + model, + inputs=(inputs, timestamps), + custom_ops={QKVAttention: QKVAttention.count_flops}, + ) + """ + b, c, *spatial = y[0].shape + num_spatial = int(np.prod(spatial)) + # We perform two matmuls with the same number of ops. + # The first computes the weight matrix, the second computes + # the combination of the value vectors. + matmul_ops = 2 * b * (num_spatial ** 2) * c + model.total_ops += th.DoubleTensor([matmul_ops]) + + +class QKVAttentionLegacy(nn.Module): + """ + A module which performs QKV attention. Matches legacy QKVAttention + input/ouput heads shaping + """ + + def __init__(self, n_heads): + super().__init__() + self.n_heads = n_heads + + def forward(self, qkv): + """ + Apply QKV attention. + :param qkv: an [N x (H * 3 * C) x T] tensor of Qs, Ks, and Vs. + :return: an [N x (H * C) x T] tensor after attention. + """ + bs, width, length = qkv.shape + assert width % (3 * self.n_heads) == 0 + ch = width // (3 * self.n_heads) + q, k, v = qkv.reshape(bs * self.n_heads, ch * 3, length).split(ch, dim=1) + scale = 1 / math.sqrt(math.sqrt(ch)) + weight = th.einsum( + "bct,bcs->bts", q * scale, k * scale + ) # More stable with f16 than dividing afterwards + weight = th.softmax(weight.float(), dim=-1).type(weight.dtype) + a = th.einsum("bts,bcs->bct", weight, v) + return a.reshape(bs, -1, length) + + @staticmethod + def count_flops(model, _x, y): + return count_flops_attn(model, _x, y) + + +class QKVAttention(nn.Module): + """ + A module which performs QKV attention and splits in a different order. + """ + + def __init__(self, n_heads): + super().__init__() + self.n_heads = n_heads + + def forward(self, qkv): + """ + Apply QKV attention. + :param qkv: an [N x (3 * H * C) x T] tensor of Qs, Ks, and Vs. + :return: an [N x (H * C) x T] tensor after attention. + """ + bs, width, length = qkv.shape + assert width % (3 * self.n_heads) == 0 + ch = width // (3 * self.n_heads) + q, k, v = qkv.chunk(3, dim=1) + scale = 1 / math.sqrt(math.sqrt(ch)) + weight = th.einsum( + "bct,bcs->bts", + (q * scale).view(bs * self.n_heads, ch, length), + (k * scale).view(bs * self.n_heads, ch, length), + ) # More stable with f16 than dividing afterwards + weight = th.softmax(weight.float(), dim=-1).type(weight.dtype) + a = th.einsum("bts,bcs->bct", weight, v.reshape(bs * self.n_heads, ch, length)) + return a.reshape(bs, -1, length) + + @staticmethod + def count_flops(model, _x, y): + return count_flops_attn(model, _x, y) + + +class UNetModel(nn.Module): + """ + The full UNet model with attention and timestep embedding. + :param in_channels: channels in the input Tensor. + :param model_channels: base channel count for the model. + :param out_channels: channels in the output Tensor. + :param num_res_blocks: number of residual blocks per downsample. + :param attention_resolutions: a collection of downsample rates at which + attention will take place. May be a set, list, or tuple. + For example, if this contains 4, then at 4x downsampling, attention + will be used. + :param dropout: the dropout probability. + :param channel_mult: channel multiplier for each level of the UNet. + :param conv_resample: if True, use learned convolutions for upsampling and + downsampling. + :param dims: determines if the signal is 1D, 2D, or 3D. + :param num_classes: if specified (as an int), then this model will be + class-conditional with `num_classes` classes. + :param use_checkpoint: use gradient checkpointing to reduce memory usage. + :param num_heads: the number of attention heads in each attention layer. + :param num_heads_channels: if specified, ignore num_heads and instead use + a fixed channel width per attention head. + :param num_heads_upsample: works with num_heads to set a different number + of heads for upsampling. Deprecated. + :param use_scale_shift_norm: use a FiLM-like conditioning mechanism. + :param resblock_updown: use residual blocks for up/downsampling. + :param use_new_attention_order: use a different attention pattern for potentially + increased efficiency. + """ + + def __init__( + self, + image_size, + in_channels, + model_channels, + out_channels, + num_res_blocks, + attention_resolutions, + dropout=0, + channel_mult=(1, 2, 4, 8), + conv_resample=True, + dims=2, + num_classes=None, + use_checkpoint=False, + use_fp16=False, + num_heads=-1, + num_head_channels=-1, + num_heads_upsample=-1, + use_scale_shift_norm=False, + resblock_updown=False, + use_new_attention_order=False, + use_spatial_transformer=False, # custom transformer support + transformer_depth=1, # custom transformer support + context_dim=None, # custom transformer support + n_embed=None, # custom support for prediction of discrete ids into codebook of first stage vq model + legacy=True, + disable_self_attentions=None, + num_attention_blocks=None, + disable_middle_self_attn=False, + use_linear_in_transformer=False, + ): + super().__init__() + if use_spatial_transformer: + assert context_dim is not None, 'Fool!! You forgot to include the dimension of your cross-attention conditioning...' + + if context_dim is not None: + assert use_spatial_transformer, 'Fool!! You forgot to use the spatial transformer for your cross-attention conditioning...' + from omegaconf.listconfig import ListConfig + if type(context_dim) == ListConfig: + context_dim = list(context_dim) + + if num_heads_upsample == -1: + num_heads_upsample = num_heads + + if num_heads == -1: + assert num_head_channels != -1, 'Either num_heads or num_head_channels has to be set' + + if num_head_channels == -1: + assert num_heads != -1, 'Either num_heads or num_head_channels has to be set' + + self.image_size = image_size + self.in_channels = in_channels + self.model_channels = model_channels + self.out_channels = out_channels + if isinstance(num_res_blocks, int): + self.num_res_blocks = len(channel_mult) * [num_res_blocks] + else: + if len(num_res_blocks) != len(channel_mult): + raise ValueError("provide num_res_blocks either as an int (globally constant) or " + "as a list/tuple (per-level) with the same length as channel_mult") + self.num_res_blocks = num_res_blocks + if disable_self_attentions is not None: + # should be a list of booleans, indicating whether to disable self-attention in TransformerBlocks or not + assert len(disable_self_attentions) == len(channel_mult) + if num_attention_blocks is not None: + assert len(num_attention_blocks) == len(self.num_res_blocks) + assert all(map(lambda i: self.num_res_blocks[i] >= num_attention_blocks[i], range(len(num_attention_blocks)))) + print(f"Constructor of UNetModel received num_attention_blocks={num_attention_blocks}. " + f"This option has LESS priority than attention_resolutions {attention_resolutions}, " + f"i.e., in cases where num_attention_blocks[i] > 0 but 2**i not in attention_resolutions, " + f"attention will still not be set.") + + self.attention_resolutions = attention_resolutions + self.dropout = dropout + self.channel_mult = channel_mult + self.conv_resample = conv_resample + self.num_classes = num_classes + self.use_checkpoint = use_checkpoint + self.dtype = th.float16 if use_fp16 else th.float32 + self.num_heads = num_heads + self.num_head_channels = num_head_channels + self.num_heads_upsample = num_heads_upsample + self.predict_codebook_ids = n_embed is not None + + time_embed_dim = model_channels * 4 + self.time_embed = nn.Sequential( + linear(model_channels, time_embed_dim), + nn.SiLU(), + linear(time_embed_dim, time_embed_dim), + ) + + if self.num_classes is not None: + if isinstance(self.num_classes, int): + self.label_emb = nn.Embedding(num_classes, time_embed_dim) + elif self.num_classes == "continuous": + print("setting up linear c_adm embedding layer") + self.label_emb = nn.Linear(1, time_embed_dim) + else: + raise ValueError() + + self.input_blocks = nn.ModuleList( + [ + TimestepEmbedSequential( + conv_nd(dims, in_channels, model_channels, 3, padding=1) + ) + ] + ) + self._feature_size = model_channels + input_block_chans = [model_channels] + ch = model_channels + ds = 1 + for level, mult in enumerate(channel_mult): + for nr in range(self.num_res_blocks[level]): + layers = [ + ResBlock( + ch, + time_embed_dim, + dropout, + out_channels=mult * model_channels, + dims=dims, + use_checkpoint=use_checkpoint, + use_scale_shift_norm=use_scale_shift_norm, + ) + ] + ch = mult * model_channels + if ds in attention_resolutions: + if num_head_channels == -1: + dim_head = ch // num_heads + else: + num_heads = ch // num_head_channels + dim_head = num_head_channels + if legacy: + #num_heads = 1 + dim_head = ch // num_heads if use_spatial_transformer else num_head_channels + if exists(disable_self_attentions): + disabled_sa = disable_self_attentions[level] + else: + disabled_sa = False + + if not exists(num_attention_blocks) or nr < num_attention_blocks[level]: + layers.append( + AttentionBlock( + ch, + use_checkpoint=use_checkpoint, + num_heads=num_heads, + num_head_channels=dim_head, + use_new_attention_order=use_new_attention_order, + ) if not use_spatial_transformer else SpatialTransformer( + ch, num_heads, dim_head, depth=transformer_depth, context_dim=context_dim, + disable_self_attn=disabled_sa, use_linear=use_linear_in_transformer, + use_checkpoint=use_checkpoint + ) + ) + self.input_blocks.append(TimestepEmbedSequential(*layers)) + self._feature_size += ch + input_block_chans.append(ch) + if level != len(channel_mult) - 1: + out_ch = ch + self.input_blocks.append( + TimestepEmbedSequential( + ResBlock( + ch, + time_embed_dim, + dropout, + out_channels=out_ch, + dims=dims, + use_checkpoint=use_checkpoint, + use_scale_shift_norm=use_scale_shift_norm, + down=True, + ) + if resblock_updown + else Downsample( + ch, conv_resample, dims=dims, out_channels=out_ch + ) + ) + ) + ch = out_ch + input_block_chans.append(ch) + ds *= 2 + self._feature_size += ch + + if num_head_channels == -1: + dim_head = ch // num_heads + else: + num_heads = ch // num_head_channels + dim_head = num_head_channels + if legacy: + #num_heads = 1 + dim_head = ch // num_heads if use_spatial_transformer else num_head_channels + self.middle_block = TimestepEmbedSequential( + ResBlock( + ch, + time_embed_dim, + dropout, + dims=dims, + use_checkpoint=use_checkpoint, + use_scale_shift_norm=use_scale_shift_norm, + ), + AttentionBlock( + ch, + use_checkpoint=use_checkpoint, + num_heads=num_heads, + num_head_channels=dim_head, + use_new_attention_order=use_new_attention_order, + ) if not use_spatial_transformer else SpatialTransformer( # always uses a self-attn + ch, num_heads, dim_head, depth=transformer_depth, context_dim=context_dim, + disable_self_attn=disable_middle_self_attn, use_linear=use_linear_in_transformer, + use_checkpoint=use_checkpoint + ), + ResBlock( + ch, + time_embed_dim, + dropout, + dims=dims, + use_checkpoint=use_checkpoint, + use_scale_shift_norm=use_scale_shift_norm, + ), + ) + self._feature_size += ch + + self.output_blocks = nn.ModuleList([]) + for level, mult in list(enumerate(channel_mult))[::-1]: + for i in range(self.num_res_blocks[level] + 1): + ich = input_block_chans.pop() + layers = [ + ResBlock( + ch + ich, + time_embed_dim, + dropout, + out_channels=model_channels * mult, + dims=dims, + use_checkpoint=use_checkpoint, + use_scale_shift_norm=use_scale_shift_norm, + ) + ] + ch = model_channels * mult + if ds in attention_resolutions: + if num_head_channels == -1: + dim_head = ch // num_heads + else: + num_heads = ch // num_head_channels + dim_head = num_head_channels + if legacy: + #num_heads = 1 + dim_head = ch // num_heads if use_spatial_transformer else num_head_channels + if exists(disable_self_attentions): + disabled_sa = disable_self_attentions[level] + else: + disabled_sa = False + + if not exists(num_attention_blocks) or i < num_attention_blocks[level]: + layers.append( + AttentionBlock( + ch, + use_checkpoint=use_checkpoint, + num_heads=num_heads_upsample, + num_head_channels=dim_head, + use_new_attention_order=use_new_attention_order, + ) if not use_spatial_transformer else SpatialTransformer( + ch, num_heads, dim_head, depth=transformer_depth, context_dim=context_dim, + disable_self_attn=disabled_sa, use_linear=use_linear_in_transformer, + use_checkpoint=use_checkpoint + ) + ) + if level and i == self.num_res_blocks[level]: + out_ch = ch + layers.append( + ResBlock( + ch, + time_embed_dim, + dropout, + out_channels=out_ch, + dims=dims, + use_checkpoint=use_checkpoint, + use_scale_shift_norm=use_scale_shift_norm, + up=True, + ) + if resblock_updown + else Upsample(ch, conv_resample, dims=dims, out_channels=out_ch) + ) + ds //= 2 + self.output_blocks.append(TimestepEmbedSequential(*layers)) + self._feature_size += ch + + self.out = nn.Sequential( + normalization(ch), + nn.SiLU(), + zero_module(conv_nd(dims, model_channels, out_channels, 3, padding=1)), + ) + if self.predict_codebook_ids: + self.id_predictor = nn.Sequential( + normalization(ch), + conv_nd(dims, model_channels, n_embed, 1), + #nn.LogSoftmax(dim=1) # change to cross_entropy and produce non-normalized logits + ) + + def convert_to_fp16(self): + """ + Convert the torso of the model to float16. + """ + self.input_blocks.apply(convert_module_to_f16) + self.middle_block.apply(convert_module_to_f16) + self.output_blocks.apply(convert_module_to_f16) + + def convert_to_fp32(self): + """ + Convert the torso of the model to float32. + """ + self.input_blocks.apply(convert_module_to_f32) + self.middle_block.apply(convert_module_to_f32) + self.output_blocks.apply(convert_module_to_f32) + + def forward(self, x, timesteps=None, context=None, y=None,**kwargs): + """ + Apply the model to an input batch. + :param x: an [N x C x ...] Tensor of inputs. + :param timesteps: a 1-D batch of timesteps. + :param context: conditioning plugged in via crossattn + :param y: an [N] Tensor of labels, if class-conditional. + :return: an [N x C x ...] Tensor of outputs. + """ + # breakpoint() + assert (y is not None) == ( + self.num_classes is not None + ), "must specify y if and only if the model is class-conditional" + hs = [] + t_emb = timestep_embedding(timesteps, self.model_channels, repeat_only=False) + emb = self.time_embed(t_emb) + + if self.num_classes is not None: + assert y.shape[0] == x.shape[0] + emb = emb + self.label_emb(y) + + h = x.type(self.dtype) + # breakpoint() + for module in self.input_blocks: + h = module(h, emb, context) + hs.append(h) + h = self.middle_block(h, emb, context) + for module in self.output_blocks: + h = th.cat([h, hs.pop()], dim=1) + h = module(h, emb, context) + h = h.type(x.dtype) + if self.predict_codebook_ids: + return self.id_predictor(h) + else: + return self.out(h) diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/openaimodel_pseudo3D.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/openaimodel_pseudo3D.py new file mode 100644 index 0000000000000000000000000000000000000000..8035f9e5cd3197e7f79a23fb484300605e0d118b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/openaimodel_pseudo3D.py @@ -0,0 +1,818 @@ +from abc import abstractmethod +from functools import partial +import math +from typing import Iterable + +from einops import rearrange +import numpy as np +import torch as th +import torch.nn as nn +import torch.nn.functional as F + +from ldm.modules.diffusionmodules.util import ( + checkpoint, + conv_nd, + linear, + avg_pool_nd, + zero_module, + normalization, + timestep_embedding, +) +from ldm.modules.attention import SpatialTransformer + + +def exists(val): + return val is not None + +def default(val, d): + return val if exists(val) else d + +# dummy replace +def convert_module_to_f16(x): + pass + +def convert_module_to_f32(x): + pass + +class PseudoConv3d(nn.Module): + def __init__( + self, + dim, + dim_out = None, + kernel_size = 3, + *, + temporal_kernel_size = None, + **kwargs + ): + super().__init__() + dim_out = default(dim_out, dim) + temporal_kernel_size = default(temporal_kernel_size, kernel_size) + + self.temporal_conv = nn.Conv1d(dim_out, dim_out, kernel_size = temporal_kernel_size, padding = temporal_kernel_size // 2) if kernel_size > 1 else None + + if exists(self.temporal_conv): + nn.init.dirac_(self.temporal_conv.weight.data) # initialized to be identity + nn.init.zeros_(self.temporal_conv.bias.data) + + def forward( + self, + x, + enable_time = True + ): + _, _, h, w = x.shape + + if not enable_time or not exists(self.temporal_conv): + return x + + x = rearrange(x, '(b f) c h w -> (b h w) c f', f = 17) + x = self.temporal_conv(x) + x = rearrange(x, '(b h w) c f -> (b f) c h w', h = h, w = w) + + return x + + +## go +class AttentionPool2d(nn.Module): + """ + Adapted from CLIP: https://github.com/openai/CLIP/blob/main/clip/model.py + """ + + def __init__( + self, + spacial_dim: int, + embed_dim: int, + num_heads_channels: int, + output_dim: int = None, + ): + super().__init__() + self.positional_embedding = nn.Parameter(th.randn(embed_dim, spacial_dim ** 2 + 1) / embed_dim ** 0.5) + self.qkv_proj = conv_nd(1, embed_dim, 3 * embed_dim, 1) + self.c_proj = conv_nd(1, embed_dim, output_dim or embed_dim, 1) + self.num_heads = embed_dim // num_heads_channels + self.attention = QKVAttention(self.num_heads) + + def forward(self, x): + b, c, *_spatial = x.shape + x = x.reshape(b, c, -1) # NC(HW) + x = th.cat([x.mean(dim=-1, keepdim=True), x], dim=-1) # NC(HW+1) + x = x + self.positional_embedding[None, :, :].to(x.dtype) # NC(HW+1) + x = self.qkv_proj(x) + x = self.attention(x) + x = self.c_proj(x) + return x[:, :, 0] + + +class TimestepBlock(nn.Module): + """ + Any module where forward() takes timestep embeddings as a second argument. + """ + + @abstractmethod + def forward(self, x, emb): + """ + Apply the module to `x` given `emb` timestep embeddings. + """ + + +class TimestepEmbedSequential(nn.Sequential, TimestepBlock): + """ + A sequential module that passes timestep embeddings to the children that + support it as an extra input. + """ + + def forward(self, x, emb, context=None): + for layer in self: + if isinstance(layer, TimestepBlock): + x = layer(x, emb) + elif isinstance(layer, SpatialTransformer): + x = layer(x, context) + else: + x = layer(x) + return x + + +class Upsample(nn.Module): + """ + An upsampling layer with an optional convolution. + :param channels: channels in the inputs and outputs. + :param use_conv: a bool determining if a convolution is applied. + :param dims: determines if the signal is 1D, 2D, or 3D. If 3D, then + upsampling occurs in the inner-two dimensions. + """ + + def __init__(self, channels, use_conv, dims=2, out_channels=None, padding=1): + super().__init__() + self.channels = channels + self.out_channels = out_channels or channels + self.use_conv = use_conv + self.dims = dims + if use_conv: + self.conv = conv_nd(dims, self.channels, self.out_channels, 3, padding=padding) + self.conv_tem = PseudoConv3d(self.out_channels, self.out_channels, 3) + + def forward(self, x): + assert x.shape[1] == self.channels + if self.dims == 3: + x = F.interpolate( + x, (x.shape[2], x.shape[3] * 2, x.shape[4] * 2), mode="nearest" + ) + else: + x = F.interpolate(x, scale_factor=2, mode="nearest") + if self.use_conv: + x = self.conv(x) + x = self.conv_tem(x) + return x + +class TransposedUpsample(nn.Module): + 'Learned 2x upsampling without padding' + def __init__(self, channels, out_channels=None, ks=5): + super().__init__() + self.channels = channels + self.out_channels = out_channels or channels + + self.up = nn.ConvTranspose2d(self.channels,self.out_channels,kernel_size=ks,stride=2) + + def forward(self,x): + return self.up(x) + + +class Downsample(nn.Module): + """ + A downsampling layer with an optional convolution. + :param channels: channels in the inputs and outputs. + :param use_conv: a bool determining if a convolution is applied. + :param dims: determines if the signal is 1D, 2D, or 3D. If 3D, then + downsampling occurs in the inner-two dimensions. + """ + + def __init__(self, channels, use_conv, dims=2, out_channels=None,padding=1): + super().__init__() + self.channels = channels + self.out_channels = out_channels or channels + self.use_conv = use_conv + self.dims = dims + stride = 2 if dims != 3 else (1, 2, 2) + if use_conv: + self.op = conv_nd( + dims, self.channels, self.out_channels, 3, stride=stride, padding=padding + ) + self.op_tem = PseudoConv3d(self.out_channels, self.out_channels, 3) + else: + assert self.channels == self.out_channels + self.op = avg_pool_nd(dims, kernel_size=stride, stride=stride) + + def forward(self, x): + assert x.shape[1] == self.channels + if self.use_conv: + x = self.op(x) + x = self.op_tem(x) + else: + x = self.op(x) + return x + + +class ResBlock(TimestepBlock): + """ + A residual block that can optionally change the number of channels. + :param channels: the number of input channels. + :param emb_channels: the number of timestep embedding channels. + :param dropout: the rate of dropout. + :param out_channels: if specified, the number of out channels. + :param use_conv: if True and out_channels is specified, use a spatial + convolution instead of a smaller 1x1 convolution to change the + channels in the skip connection. + :param dims: determines if the signal is 1D, 2D, or 3D. + :param use_checkpoint: if True, use gradient checkpointing on this module. + :param up: if True, use this block for upsampling. + :param down: if True, use this block for downsampling. + """ + + def __init__( + self, + channels, + emb_channels, + dropout, + out_channels=None, + use_conv=False, + use_scale_shift_norm=False, + dims=2, + use_checkpoint=False, + up=False, + down=False, + ): + super().__init__() + self.channels = channels + self.emb_channels = emb_channels + self.dropout = dropout + self.out_channels = out_channels or channels + self.use_conv = use_conv + self.use_checkpoint = use_checkpoint + self.use_scale_shift_norm = use_scale_shift_norm + + self.in_layers = nn.Sequential( + normalization(channels), + nn.SiLU(), + conv_nd(dims, channels, self.out_channels, 3, padding=1), + ) + self.in_layers_tem = PseudoConv3d(channels, self.out_channels, 3) + + self.updown = up or down + + if up: + self.h_upd = Upsample(channels, False, dims) + self.x_upd = Upsample(channels, False, dims) + elif down: + self.h_upd = Downsample(channels, False, dims) + self.x_upd = Downsample(channels, False, dims) + else: + self.h_upd = self.x_upd = nn.Identity() + + self.emb_layers = nn.Sequential( + nn.SiLU(), + linear( + emb_channels, + 2 * self.out_channels if use_scale_shift_norm else self.out_channels, + ), + ) + self.out_layers = nn.Sequential( + normalization(self.out_channels), + nn.SiLU(), + nn.Dropout(p=dropout), + zero_module( + conv_nd(dims, self.out_channels, self.out_channels, 3, padding=1) + ), + ) + self.out_layers_tem = PseudoConv3d(self.out_channels, self.out_channels, 3) + + if self.out_channels == channels: + self.skip_connection = nn.Identity() + elif use_conv: + self.skip_connection = conv_nd( + dims, channels, self.out_channels, 3, padding=1 + ) + else: + self.skip_connection = conv_nd(dims, channels, self.out_channels, 1) + + def forward(self, x, emb): + """ + Apply the block to a Tensor, conditioned on a timestep embedding. + :param x: an [N x C x ...] Tensor of features. + :param emb: an [N x emb_channels] Tensor of timestep embeddings. + :return: an [N x C x ...] Tensor of outputs. + """ + return checkpoint( + self._forward, (x, emb), self.parameters(), self.use_checkpoint + ) + + + def _forward(self, x, emb): + if self.updown: + in_rest, in_conv = self.in_layers[:-1], self.in_layers[-1] + h = in_rest(x) + h = self.h_upd(h) + x = self.x_upd(x) + h = in_conv(h) + h = self.in_layers_tem(h) + else: + h = self.in_layers(x) + h = self.in_layers_tem(h) + emb_out = self.emb_layers(emb).type(h.dtype) + while len(emb_out.shape) < len(h.shape): + emb_out = emb_out[..., None] + if self.use_scale_shift_norm: + out_norm, out_rest = self.out_layers[0], self.out_layers[1:] + scale, shift = th.chunk(emb_out, 2, dim=1) + h = out_norm(h) * (1 + scale) + shift + h = out_rest(h) + h = self.out_layers_tem(h) + else: + h = h + emb_out + h = self.out_layers(h) + h = self.out_layers_tem(h) + return self.skip_connection(x) + h + + +class AttentionBlock(nn.Module): + """ + An attention block that allows spatial positions to attend to each other. + Originally ported from here, but adapted to the N-d case. + https://github.com/hojonathanho/diffusion/blob/1e0dceb3b3495bbe19116a5e1b3596cd0706c543/diffusion_tf/models/unet.py#L66. + """ + + def __init__( + self, + channels, + num_heads=1, + num_head_channels=-1, + use_checkpoint=False, + use_new_attention_order=False, + ): + super().__init__() + self.channels = channels + if num_head_channels == -1: + self.num_heads = num_heads + else: + assert ( + channels % num_head_channels == 0 + ), f"q,k,v channels {channels} is not divisible by num_head_channels {num_head_channels}" + self.num_heads = channels // num_head_channels + self.use_checkpoint = use_checkpoint + self.norm = normalization(channels) + self.qkv = conv_nd(1, channels, channels * 3, 1) + self.qkv_tem = conv_nd(1, channels, channels * 3, 1) + + if use_new_attention_order: + # split qkv before split heads + self.attention = QKVAttention(self.num_heads) + self.attention_tem = QKVAttention(self.num_heads) + else: + # split heads before split qkv + self.attention = QKVAttentionLegacy(self.num_heads) + self.attention_tem = QKVAttentionLegacy(self.num_heads) + + self.proj_out = zero_module(conv_nd(1, channels, channels, 1)) + self.proj_out_tem = zero_module(conv_nd(1, channels, channels, 1)) + + def forward(self, x): + return checkpoint(self._forward, (x,), self.parameters(), True) # TODO: check checkpoint usage, is True # TODO: fix the .half call!!! + #return pt_checkpoint(self._forward, x) # pytorch + + def _forward(self, x): + b, c, *spatial = x.shape + x = x.reshape(b, c, -1) + qkv = self.qkv(self.norm(x)) + h = self.attention(qkv) + h = self.proj_out(h) + + x = (x + h).reshape(b, c, *spatial) + x = rearrange(x, '(b f) c h w -> (b h w) c f', f = 16) + + qkv_tem = self.qkv_tem(self.norm(x)) + h_tem = self.attention_tem(qkv_tem) + h_tem = self.proj_out_tem(h_tem) + + x = x+h_tem + x = rearrange(x, '(b h w) c f -> (b f) c h w', w = spatial[0], h = spatial[1]) + return x + + +def count_flops_attn(model, _x, y): + """ + A counter for the `thop` package to count the operations in an + attention operation. + Meant to be used like: + macs, params = thop.profile( + model, + inputs=(inputs, timestamps), + custom_ops={QKVAttention: QKVAttention.count_flops}, + ) + """ + b, c, *spatial = y[0].shape + num_spatial = int(np.prod(spatial)) + # We perform two matmuls with the same number of ops. + # The first computes the weight matrix, the second computes + # the combination of the value vectors. + matmul_ops = 2 * b * (num_spatial ** 2) * c + model.total_ops += th.DoubleTensor([matmul_ops]) + + +class QKVAttentionLegacy(nn.Module): + """ + A module which performs QKV attention. Matches legacy QKVAttention + input/ouput heads shaping + """ + + def __init__(self, n_heads): + super().__init__() + self.n_heads = n_heads + + def forward(self, qkv): + """ + Apply QKV attention. + :param qkv: an [N x (H * 3 * C) x T] tensor of Qs, Ks, and Vs. + :return: an [N x (H * C) x T] tensor after attention. + """ + bs, width, length = qkv.shape + assert width % (3 * self.n_heads) == 0 + ch = width // (3 * self.n_heads) + q, k, v = qkv.reshape(bs * self.n_heads, ch * 3, length).split(ch, dim=1) + scale = 1 / math.sqrt(math.sqrt(ch)) + weight = th.einsum( + "bct,bcs->bts", q * scale, k * scale + ) # More stable with f16 than dividing afterwards + weight = th.softmax(weight.float(), dim=-1).type(weight.dtype) + a = th.einsum("bts,bcs->bct", weight, v) + return a.reshape(bs, -1, length) + + @staticmethod + def count_flops(model, _x, y): + return count_flops_attn(model, _x, y) + + +class QKVAttention(nn.Module): + """ + A module which performs QKV attention and splits in a different order. + """ + + def __init__(self, n_heads): + super().__init__() + self.n_heads = n_heads + + def forward(self, qkv): + """ + Apply QKV attention. + :param qkv: an [N x (3 * H * C) x T] tensor of Qs, Ks, and Vs. + :return: an [N x (H * C) x T] tensor after attention. + """ + bs, width, length = qkv.shape + assert width % (3 * self.n_heads) == 0 + ch = width // (3 * self.n_heads) + q, k, v = qkv.chunk(3, dim=1) + scale = 1 / math.sqrt(math.sqrt(ch)) + weight = th.einsum( + "bct,bcs->bts", + (q * scale).view(bs * self.n_heads, ch, length), + (k * scale).view(bs * self.n_heads, ch, length), + ) # More stable with f16 than dividing afterwards + weight = th.softmax(weight.float(), dim=-1).type(weight.dtype) + a = th.einsum("bts,bcs->bct", weight, v.reshape(bs * self.n_heads, ch, length)) + return a.reshape(bs, -1, length) + + @staticmethod + def count_flops(model, _x, y): + return count_flops_attn(model, _x, y) + + +class UNetModel(nn.Module): + """ + The full UNet model with attention and timestep embedding. + :param in_channels: channels in the input Tensor. + :param model_channels: base channel count for the model. + :param out_channels: channels in the output Tensor. + :param num_res_blocks: number of residual blocks per downsample. + :param attention_resolutions: a collection of downsample rates at which + attention will take place. May be a set, list, or tuple. + For example, if this contains 4, then at 4x downsampling, attention + will be used. + :param dropout: the dropout probability. + :param channel_mult: channel multiplier for each level of the UNet. + :param conv_resample: if True, use learned convolutions for upsampling and + downsampling. + :param dims: determines if the signal is 1D, 2D, or 3D. + :param num_classes: if specified (as an int), then this model will be + class-conditional with `num_classes` classes. + :param use_checkpoint: use gradient checkpointing to reduce memory usage. + :param num_heads: the number of attention heads in each attention layer. + :param num_heads_channels: if specified, ignore num_heads and instead use + a fixed channel width per attention head. + :param num_heads_upsample: works with num_heads to set a different number + of heads for upsampling. Deprecated. + :param use_scale_shift_norm: use a FiLM-like conditioning mechanism. + :param resblock_updown: use residual blocks for up/downsampling. + :param use_new_attention_order: use a different attention pattern for potentially + increased efficiency. + """ + + def __init__( + self, + image_size, + in_channels, + model_channels, + out_channels, + num_res_blocks, + attention_resolutions, + dropout=0, + channel_mult=(1, 2, 4, 8), + conv_resample=True, + dims=2, + num_classes=None, + use_checkpoint=False, + use_fp16=False, + num_heads=-1, + num_head_channels=-1, + num_heads_upsample=-1, + use_scale_shift_norm=False, + resblock_updown=False, + use_new_attention_order=False, + use_spatial_transformer=False, # custom transformer support + transformer_depth=1, # custom transformer support + context_dim=None, # custom transformer support + n_embed=None, # custom support for prediction of discrete ids into codebook of first stage vq model + legacy=True, + ): + super().__init__() + if use_spatial_transformer: + assert context_dim is not None, 'Fool!! You forgot to include the dimension of your cross-attention conditioning...' + + if context_dim is not None: + assert use_spatial_transformer, 'Fool!! You forgot to use the spatial transformer for your cross-attention conditioning...' + from omegaconf.listconfig import ListConfig + if type(context_dim) == ListConfig: + context_dim = list(context_dim) + + if num_heads_upsample == -1: + num_heads_upsample = num_heads + + if num_heads == -1: + assert num_head_channels != -1, 'Either num_heads or num_head_channels has to be set' + + if num_head_channels == -1: + assert num_heads != -1, 'Either num_heads or num_head_channels has to be set' + + self.image_size = image_size + self.in_channels = in_channels + self.model_channels = model_channels + self.out_channels = out_channels + self.num_res_blocks = num_res_blocks + self.attention_resolutions = attention_resolutions + self.dropout = dropout + self.channel_mult = channel_mult + self.conv_resample = conv_resample + self.num_classes = num_classes + self.use_checkpoint = use_checkpoint + self.dtype = th.float16 if use_fp16 else th.float32 + self.num_heads = num_heads + self.num_head_channels = num_head_channels + self.num_heads_upsample = num_heads_upsample + self.predict_codebook_ids = n_embed is not None + + time_embed_dim = model_channels * 4 + self.time_embed = nn.Sequential( + linear(model_channels, time_embed_dim), + nn.SiLU(), + linear(time_embed_dim, time_embed_dim), + ) + + if self.num_classes is not None: + self.label_emb = nn.Embedding(num_classes, time_embed_dim) + + self.input_blocks = nn.ModuleList( + [ + TimestepEmbedSequential( + conv_nd(dims, in_channels, model_channels, 3, padding=1), + PseudoConv3d(model_channels, model_channels, 3) + ) + ] + ) + + self._feature_size = model_channels + input_block_chans = [model_channels] + ch = model_channels + ds = 1 + for level, mult in enumerate(channel_mult): + for _ in range(num_res_blocks): + layers = [ + ResBlock( + ch, + time_embed_dim, + dropout, + out_channels=mult * model_channels, + dims=dims, + use_checkpoint=use_checkpoint, + use_scale_shift_norm=use_scale_shift_norm, + ) + ] + ch = mult * model_channels + if ds in attention_resolutions: + if num_head_channels == -1: + dim_head = ch // num_heads + else: + num_heads = ch // num_head_channels + dim_head = num_head_channels + if legacy: + #num_heads = 1 + dim_head = ch // num_heads if use_spatial_transformer else num_head_channels + layers.append( + AttentionBlock( + ch, + use_checkpoint=use_checkpoint, + num_heads=num_heads, + num_head_channels=dim_head, + use_new_attention_order=use_new_attention_order, + ) if not use_spatial_transformer else SpatialTransformer( + ch, num_heads, dim_head, depth=transformer_depth, context_dim=context_dim, use_checkpoint=use_checkpoint + ) + ) + self.input_blocks.append(TimestepEmbedSequential(*layers)) + self._feature_size += ch + input_block_chans.append(ch) + if level != len(channel_mult) - 1: + out_ch = ch + self.input_blocks.append( + TimestepEmbedSequential( + ResBlock( + ch, + time_embed_dim, + dropout, + out_channels=out_ch, + dims=dims, + use_checkpoint=use_checkpoint, + use_scale_shift_norm=use_scale_shift_norm, + down=True, + ) + if resblock_updown + else Downsample( + ch, conv_resample, dims=dims, out_channels=out_ch + ) + ) + ) + ch = out_ch + input_block_chans.append(ch) + ds *= 2 + self._feature_size += ch + + if num_head_channels == -1: + dim_head = ch // num_heads + else: + num_heads = ch // num_head_channels + dim_head = num_head_channels + if legacy: + #num_heads = 1 + dim_head = ch // num_heads if use_spatial_transformer else num_head_channels + self.middle_block = TimestepEmbedSequential( + ResBlock( + ch, + time_embed_dim, + dropout, + dims=dims, + use_checkpoint=use_checkpoint, + use_scale_shift_norm=use_scale_shift_norm, + ), + AttentionBlock( + ch, + use_checkpoint=use_checkpoint, + num_heads=num_heads, + num_head_channels=dim_head, + use_new_attention_order=use_new_attention_order, + ) if not use_spatial_transformer else SpatialTransformer( + ch, num_heads, dim_head, depth=transformer_depth, context_dim=context_dim, use_checkpoint=use_checkpoint + ), + ResBlock( + ch, + time_embed_dim, + dropout, + dims=dims, + use_checkpoint=use_checkpoint, + use_scale_shift_norm=use_scale_shift_norm, + ), + ) + self._feature_size += ch + + self.output_blocks = nn.ModuleList([]) + for level, mult in list(enumerate(channel_mult))[::-1]: + for i in range(num_res_blocks + 1): + ich = input_block_chans.pop() + layers = [ + ResBlock( + ch + ich, + time_embed_dim, + dropout, + out_channels=model_channels * mult, + dims=dims, + use_checkpoint=use_checkpoint, + use_scale_shift_norm=use_scale_shift_norm, + ) + ] + ch = model_channels * mult + if ds in attention_resolutions: + if num_head_channels == -1: + dim_head = ch // num_heads + else: + num_heads = ch // num_head_channels + dim_head = num_head_channels + if legacy: + #num_heads = 1 + dim_head = ch // num_heads if use_spatial_transformer else num_head_channels + layers.append( + AttentionBlock( + ch, + use_checkpoint=use_checkpoint, + num_heads=num_heads_upsample, + num_head_channels=dim_head, + use_new_attention_order=use_new_attention_order, + ) if not use_spatial_transformer else SpatialTransformer( + ch, num_heads, dim_head, depth=transformer_depth, context_dim=context_dim, use_checkpoint=use_checkpoint + ) + ) + if level and i == num_res_blocks: + out_ch = ch + layers.append( + ResBlock( + ch, + time_embed_dim, + dropout, + out_channels=out_ch, + dims=dims, + use_checkpoint=use_checkpoint, + use_scale_shift_norm=use_scale_shift_norm, + up=True, + ) + if resblock_updown + else Upsample(ch, conv_resample, dims=dims, out_channels=out_ch) + ) + ds //= 2 + self.output_blocks.append(TimestepEmbedSequential(*layers)) + self._feature_size += ch + + self.out = nn.Sequential( + normalization(ch), + nn.SiLU(), + zero_module(conv_nd(dims, model_channels, out_channels, 3, padding=1)), + ) + self.out_tem = PseudoConv3d(out_channels, out_channels, 3) + + if self.predict_codebook_ids: + self.id_predictor = nn.Sequential( + normalization(ch), + conv_nd(dims, model_channels, n_embed, 1), + #nn.LogSoftmax(dim=1) # change to cross_entropy and produce non-normalized logits + ) + + def convert_to_fp16(self): + """ + Convert the torso of the model to float16. + """ + self.input_blocks.apply(convert_module_to_f16) + self.middle_block.apply(convert_module_to_f16) + self.output_blocks.apply(convert_module_to_f16) + + def convert_to_fp32(self): + """ + Convert the torso of the model to float32. + """ + self.input_blocks.apply(convert_module_to_f32) + self.middle_block.apply(convert_module_to_f32) + self.output_blocks.apply(convert_module_to_f32) + + def forward(self, x, timesteps=None, context=None, y=None,**kwargs): + """ + Apply the model to an input batch. + :param x: an [N x C x ...] Tensor of inputs. + :param timesteps: a 1-D batch of timesteps. + :param context: conditioning plugged in via crossattn + :param y: an [N] Tensor of labels, if class-conditional. + :return: an [N x C x ...] Tensor of outputs. + """ + assert (y is not None) == ( + self.num_classes is not None + ), "must specify y if and only if the model is class-conditional" + hs = [] + t_emb = timestep_embedding(timesteps, self.model_channels, repeat_only=False) + emb = self.time_embed(t_emb) + + if self.num_classes is not None: + assert y.shape == (x.shape[0],) + emb = emb + self.label_emb(y) + + h = x.type(self.dtype) + for module in self.input_blocks: + h = module(h, emb, context) + hs.append(h) + h = self.middle_block(h, emb, context) + for module in self.output_blocks: + h = th.cat([h, hs.pop()], dim=1) + h = module(h, emb, context) + h = h.type(x.dtype) + if self.predict_codebook_ids: + return self.id_predictor(h) + else: + return self.out_tem(self.out(h)) \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/upscaling.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/upscaling.py new file mode 100644 index 0000000000000000000000000000000000000000..03816662098ce1ffac79bd939b892e867ab91988 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/upscaling.py @@ -0,0 +1,81 @@ +import torch +import torch.nn as nn +import numpy as np +from functools import partial + +from ldm.modules.diffusionmodules.util import extract_into_tensor, make_beta_schedule +from ldm.util import default + + +class AbstractLowScaleModel(nn.Module): + # for concatenating a downsampled image to the latent representation + def __init__(self, noise_schedule_config=None): + super(AbstractLowScaleModel, self).__init__() + if noise_schedule_config is not None: + self.register_schedule(**noise_schedule_config) + + def register_schedule(self, beta_schedule="linear", timesteps=1000, + linear_start=1e-4, linear_end=2e-2, cosine_s=8e-3): + betas = make_beta_schedule(beta_schedule, timesteps, linear_start=linear_start, linear_end=linear_end, + cosine_s=cosine_s) + alphas = 1. - betas + alphas_cumprod = np.cumprod(alphas, axis=0) + alphas_cumprod_prev = np.append(1., alphas_cumprod[:-1]) + + timesteps, = betas.shape + self.num_timesteps = int(timesteps) + self.linear_start = linear_start + self.linear_end = linear_end + assert alphas_cumprod.shape[0] == self.num_timesteps, 'alphas have to be defined for each timestep' + + to_torch = partial(torch.tensor, dtype=torch.float32) + + self.register_buffer('betas', to_torch(betas)) + self.register_buffer('alphas_cumprod', to_torch(alphas_cumprod)) + self.register_buffer('alphas_cumprod_prev', to_torch(alphas_cumprod_prev)) + + # calculations for diffusion q(x_t | x_{t-1}) and others + self.register_buffer('sqrt_alphas_cumprod', to_torch(np.sqrt(alphas_cumprod))) + self.register_buffer('sqrt_one_minus_alphas_cumprod', to_torch(np.sqrt(1. - alphas_cumprod))) + self.register_buffer('log_one_minus_alphas_cumprod', to_torch(np.log(1. - alphas_cumprod))) + self.register_buffer('sqrt_recip_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod))) + self.register_buffer('sqrt_recipm1_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod - 1))) + + def q_sample(self, x_start, t, noise=None): + noise = default(noise, lambda: torch.randn_like(x_start)) + return (extract_into_tensor(self.sqrt_alphas_cumprod, t, x_start.shape) * x_start + + extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x_start.shape) * noise) + + def forward(self, x): + return x, None + + def decode(self, x): + return x + + +class SimpleImageConcat(AbstractLowScaleModel): + # no noise level conditioning + def __init__(self): + super(SimpleImageConcat, self).__init__(noise_schedule_config=None) + self.max_noise_level = 0 + + def forward(self, x): + # fix to constant noise level + return x, torch.zeros(x.shape[0], device=x.device).long() + + +class ImageConcatWithNoiseAugmentation(AbstractLowScaleModel): + def __init__(self, noise_schedule_config, max_noise_level=1000, to_cuda=False): + super().__init__(noise_schedule_config=noise_schedule_config) + self.max_noise_level = max_noise_level + + def forward(self, x, noise_level=None): + if noise_level is None: + noise_level = torch.randint(0, self.max_noise_level, (x.shape[0],), device=x.device).long() + else: + assert isinstance(noise_level, torch.Tensor) + z = self.q_sample(x, noise_level) + return z, noise_level + + + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/util.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/util.py new file mode 100644 index 0000000000000000000000000000000000000000..637363dfe34799e70cfdbcd11445212df9d9ca1f --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/util.py @@ -0,0 +1,270 @@ +# adopted from +# https://github.com/openai/improved-diffusion/blob/main/improved_diffusion/gaussian_diffusion.py +# and +# https://github.com/lucidrains/denoising-diffusion-pytorch/blob/7706bdfc6f527f58d33f84b7b522e61e6e3164b3/denoising_diffusion_pytorch/denoising_diffusion_pytorch.py +# and +# https://github.com/openai/guided-diffusion/blob/0ba878e517b276c45d1195eb29f6f5f72659a05b/guided_diffusion/nn.py +# +# thanks! + + +import os +import math +import torch +import torch.nn as nn +import numpy as np +from einops import repeat + +from ldm.util import instantiate_from_config + + +def make_beta_schedule(schedule, n_timestep, linear_start=1e-4, linear_end=2e-2, cosine_s=8e-3): + if schedule == "linear": + betas = ( + torch.linspace(linear_start ** 0.5, linear_end ** 0.5, n_timestep, dtype=torch.float64) ** 2 + ) + + elif schedule == "cosine": + timesteps = ( + torch.arange(n_timestep + 1, dtype=torch.float64) / n_timestep + cosine_s + ) + alphas = timesteps / (1 + cosine_s) * np.pi / 2 + alphas = torch.cos(alphas).pow(2) + alphas = alphas / alphas[0] + betas = 1 - alphas[1:] / alphas[:-1] + betas = np.clip(betas, a_min=0, a_max=0.999) + + elif schedule == "sqrt_linear": + betas = torch.linspace(linear_start, linear_end, n_timestep, dtype=torch.float64) + elif schedule == "sqrt": + betas = torch.linspace(linear_start, linear_end, n_timestep, dtype=torch.float64) ** 0.5 + else: + raise ValueError(f"schedule '{schedule}' unknown.") + return betas.numpy() + + +def make_ddim_timesteps(ddim_discr_method, num_ddim_timesteps, num_ddpm_timesteps, verbose=True): + if ddim_discr_method == 'uniform': + c = num_ddpm_timesteps // num_ddim_timesteps + ddim_timesteps = np.asarray(list(range(0, num_ddpm_timesteps, c))) + elif ddim_discr_method == 'quad': + ddim_timesteps = ((np.linspace(0, np.sqrt(num_ddpm_timesteps * .8), num_ddim_timesteps)) ** 2).astype(int) + else: + raise NotImplementedError(f'There is no ddim discretization method called "{ddim_discr_method}"') + + # assert ddim_timesteps.shape[0] == num_ddim_timesteps + # add one to get the final alpha values right (the ones from first scale to data during sampling) + steps_out = ddim_timesteps + 1 + if verbose: + print(f'Selected timesteps for ddim sampler: {steps_out}') + return steps_out + + +def make_ddim_sampling_parameters(alphacums, ddim_timesteps, eta, verbose=True): + # select alphas for computing the variance schedule + alphas = alphacums[ddim_timesteps] + alphas_prev = np.asarray([alphacums[0]] + alphacums[ddim_timesteps[:-1]].tolist()) + + # according the the formula provided in https://arxiv.org/abs/2010.02502 + sigmas = eta * np.sqrt((1 - alphas_prev) / (1 - alphas) * (1 - alphas / alphas_prev)) + if verbose: + print(f'Selected alphas for ddim sampler: a_t: {alphas}; a_(t-1): {alphas_prev}') + print(f'For the chosen value of eta, which is {eta}, ' + f'this results in the following sigma_t schedule for ddim sampler {sigmas}') + return sigmas, alphas, alphas_prev + + +def betas_for_alpha_bar(num_diffusion_timesteps, alpha_bar, max_beta=0.999): + """ + Create a beta schedule that discretizes the given alpha_t_bar function, + which defines the cumulative product of (1-beta) over time from t = [0,1]. + :param num_diffusion_timesteps: the number of betas to produce. + :param alpha_bar: a lambda that takes an argument t from 0 to 1 and + produces the cumulative product of (1-beta) up to that + part of the diffusion process. + :param max_beta: the maximum beta to use; use values lower than 1 to + prevent singularities. + """ + betas = [] + for i in range(num_diffusion_timesteps): + t1 = i / num_diffusion_timesteps + t2 = (i + 1) / num_diffusion_timesteps + betas.append(min(1 - alpha_bar(t2) / alpha_bar(t1), max_beta)) + return np.array(betas) + + +def extract_into_tensor(a, t, x_shape): + b, *_ = t.shape + out = a.gather(-1, t) + return out.reshape(b, *((1,) * (len(x_shape) - 1))) + + +def checkpoint(func, inputs, params, flag): + """ + Evaluate a function without caching intermediate activations, allowing for + reduced memory at the expense of extra compute in the backward pass. + :param func: the function to evaluate. + :param inputs: the argument sequence to pass to `func`. + :param params: a sequence of parameters `func` depends on but does not + explicitly take as arguments. + :param flag: if False, disable gradient checkpointing. + """ + if flag: + args = tuple(inputs) + tuple(params) + return CheckpointFunction.apply(func, len(inputs), *args) + else: + return func(*inputs) + + +class CheckpointFunction(torch.autograd.Function): + @staticmethod + def forward(ctx, run_function, length, *args): + ctx.run_function = run_function + ctx.input_tensors = list(args[:length]) + ctx.input_params = list(args[length:]) + ctx.gpu_autocast_kwargs = {"enabled": torch.is_autocast_enabled(), + "dtype": torch.get_autocast_gpu_dtype(), + "cache_enabled": torch.is_autocast_cache_enabled()} + with torch.no_grad(): + output_tensors = ctx.run_function(*ctx.input_tensors) + return output_tensors + + @staticmethod + def backward(ctx, *output_grads): + ctx.input_tensors = [x.detach().requires_grad_(True) for x in ctx.input_tensors] + with torch.enable_grad(), \ + torch.cuda.amp.autocast(**ctx.gpu_autocast_kwargs): + # Fixes a bug where the first op in run_function modifies the + # Tensor storage in place, which is not allowed for detach()'d + # Tensors. + shallow_copies = [x.view_as(x) for x in ctx.input_tensors] + output_tensors = ctx.run_function(*shallow_copies) + input_grads = torch.autograd.grad( + output_tensors, + ctx.input_tensors + ctx.input_params, + output_grads, + allow_unused=True, + ) + del ctx.input_tensors + del ctx.input_params + del output_tensors + return (None, None) + input_grads + + +def timestep_embedding(timesteps, dim, max_period=10000, repeat_only=False): + """ + Create sinusoidal timestep embeddings. + :param timesteps: a 1-D Tensor of N indices, one per batch element. + These may be fractional. + :param dim: the dimension of the output. + :param max_period: controls the minimum frequency of the embeddings. + :return: an [N x dim] Tensor of positional embeddings. + """ + if not repeat_only: + half = dim // 2 + freqs = torch.exp( + -math.log(max_period) * torch.arange(start=0, end=half, dtype=torch.float32) / half + ).to(device=timesteps.device) + args = timesteps[:, None].float() * freqs[None] + embedding = torch.cat([torch.cos(args), torch.sin(args)], dim=-1) + if dim % 2: + embedding = torch.cat([embedding, torch.zeros_like(embedding[:, :1])], dim=-1) + else: + embedding = repeat(timesteps, 'b -> b d', d=dim) + return embedding + + +def zero_module(module): + """ + Zero out the parameters of a module and return it. + """ + for p in module.parameters(): + p.detach().zero_() + return module + + +def scale_module(module, scale): + """ + Scale the parameters of a module and return it. + """ + for p in module.parameters(): + p.detach().mul_(scale) + return module + + +def mean_flat(tensor): + """ + Take the mean over all non-batch dimensions. + """ + return tensor.mean(dim=list(range(1, len(tensor.shape)))) + + +def normalization(channels): + """ + Make a standard normalization layer. + :param channels: number of input channels. + :return: an nn.Module for normalization. + """ + return GroupNorm32(32, channels) + + +# PyTorch 1.7 has SiLU, but we support PyTorch 1.5. +class SiLU(nn.Module): + def forward(self, x): + return x * torch.sigmoid(x) + + +class GroupNorm32(nn.GroupNorm): + def forward(self, x): + return super().forward(x.float()).type(x.dtype) + +def conv_nd(dims, *args, **kwargs): + """ + Create a 1D, 2D, or 3D convolution module. + """ + if dims == 1: + return nn.Conv1d(*args, **kwargs) + elif dims == 2: + return nn.Conv2d(*args, **kwargs) + elif dims == 3: + return nn.Conv3d(*args, **kwargs) + raise ValueError(f"unsupported dimensions: {dims}") + + +def linear(*args, **kwargs): + """ + Create a linear module. + """ + return nn.Linear(*args, **kwargs) + + +def avg_pool_nd(dims, *args, **kwargs): + """ + Create a 1D, 2D, or 3D average pooling module. + """ + if dims == 1: + return nn.AvgPool1d(*args, **kwargs) + elif dims == 2: + return nn.AvgPool2d(*args, **kwargs) + elif dims == 3: + return nn.AvgPool3d(*args, **kwargs) + raise ValueError(f"unsupported dimensions: {dims}") + + +class HybridConditioner(nn.Module): + + def __init__(self, c_concat_config, c_crossattn_config): + super().__init__() + self.concat_conditioner = instantiate_from_config(c_concat_config) + self.crossattn_conditioner = instantiate_from_config(c_crossattn_config) + + def forward(self, c_concat, c_crossattn): + c_concat = self.concat_conditioner(c_concat) + c_crossattn = self.crossattn_conditioner(c_crossattn) + return {'c_concat': [c_concat], 'c_crossattn': [c_crossattn]} + + +def noise_like(shape, device, repeat=False): + repeat_noise = lambda: torch.randn((1, *shape[1:]), device=device).repeat(shape[0], *((1,) * (len(shape) - 1))) + noise = lambda: torch.randn(shape, device=device) + return repeat_noise() if repeat else noise() \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__init__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..98676e95492b2119335ff29a40f02181eadf0e14 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..86fd0b910406c73f2a34abc1bfb5d6e4f2555068 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..652d35e878b348b105b4de9eddeccf69d23c3bb1 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-38.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5bd8de4aaa0706d0326e6ff87bed9b8fb0b67401 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fee865dcaa5bec079a38e471be7c8ffdffa4ba23 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c313ef0d6b10119090b4811459618a91c3bdf55e Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4aaa94beadf284e8388b61bd73162c4bcea2fb45 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-38.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e9a7d7584504255eb5a6abcbe0d95f27963dc0ef Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/distributions.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/distributions.py new file mode 100644 index 0000000000000000000000000000000000000000..f2b8ef901130efc171aa69742ca0244d94d3f2e9 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/distributions.py @@ -0,0 +1,92 @@ +import torch +import numpy as np + + +class AbstractDistribution: + def sample(self): + raise NotImplementedError() + + def mode(self): + raise NotImplementedError() + + +class DiracDistribution(AbstractDistribution): + def __init__(self, value): + self.value = value + + def sample(self): + return self.value + + def mode(self): + return self.value + + +class DiagonalGaussianDistribution(object): + def __init__(self, parameters, deterministic=False): + self.parameters = parameters + self.mean, self.logvar = torch.chunk(parameters, 2, dim=1) + self.logvar = torch.clamp(self.logvar, -30.0, 20.0) + self.deterministic = deterministic + self.std = torch.exp(0.5 * self.logvar) + self.var = torch.exp(self.logvar) + if self.deterministic: + self.var = self.std = torch.zeros_like(self.mean).to(device=self.parameters.device) + + def sample(self): + x = self.mean + self.std * torch.randn(self.mean.shape).to(device=self.parameters.device) + return x + + def kl(self, other=None): + if self.deterministic: + return torch.Tensor([0.]) + else: + if other is None: + return 0.5 * torch.sum(torch.pow(self.mean, 2) + + self.var - 1.0 - self.logvar, + dim=[1, 2, 3]) + else: + return 0.5 * torch.sum( + torch.pow(self.mean - other.mean, 2) / other.var + + self.var / other.var - 1.0 - self.logvar + other.logvar, + dim=[1, 2, 3]) + + def nll(self, sample, dims=[1,2,3]): + if self.deterministic: + return torch.Tensor([0.]) + logtwopi = np.log(2.0 * np.pi) + return 0.5 * torch.sum( + logtwopi + self.logvar + torch.pow(sample - self.mean, 2) / self.var, + dim=dims) + + def mode(self): + return self.mean + + +def normal_kl(mean1, logvar1, mean2, logvar2): + """ + source: https://github.com/openai/guided-diffusion/blob/27c20a8fab9cb472df5d6bdd6c8d11c8f430b924/guided_diffusion/losses.py#L12 + Compute the KL divergence between two gaussians. + Shapes are automatically broadcasted, so batches can be compared to + scalars, among other use cases. + """ + tensor = None + for obj in (mean1, logvar1, mean2, logvar2): + if isinstance(obj, torch.Tensor): + tensor = obj + break + assert tensor is not None, "at least one argument must be a Tensor" + + # Force variances to be Tensors. Broadcasting helps convert scalars to + # Tensors, but it does not work for torch.exp(). + logvar1, logvar2 = [ + x if isinstance(x, torch.Tensor) else torch.tensor(x).to(tensor) + for x in (logvar1, logvar2) + ] + + return 0.5 * ( + -1.0 + + logvar2 + - logvar1 + + torch.exp(logvar1 - logvar2) + + ((mean1 - mean2) ** 2) * torch.exp(-logvar2) + ) diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/ema.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/ema.py new file mode 100644 index 0000000000000000000000000000000000000000..bded25019b9bcbcd0260f0b8185f8c7859ca58c4 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/ema.py @@ -0,0 +1,80 @@ +import torch +from torch import nn + + +class LitEma(nn.Module): + def __init__(self, model, decay=0.9999, use_num_upates=True): + super().__init__() + if decay < 0.0 or decay > 1.0: + raise ValueError('Decay must be between 0 and 1') + + self.m_name2s_name = {} + self.register_buffer('decay', torch.tensor(decay, dtype=torch.float32)) + self.register_buffer('num_updates', torch.tensor(0, dtype=torch.int) if use_num_upates + else torch.tensor(-1, dtype=torch.int)) + + for name, p in model.named_parameters(): + if p.requires_grad: + # remove as '.'-character is not allowed in buffers + s_name = name.replace('.', '') + self.m_name2s_name.update({name: s_name}) + self.register_buffer(s_name, p.clone().detach().data) + + self.collected_params = [] + + def reset_num_updates(self): + del self.num_updates + self.register_buffer('num_updates', torch.tensor(0, dtype=torch.int)) + + def forward(self, model): + decay = self.decay + + if self.num_updates >= 0: + self.num_updates += 1 + decay = min(self.decay, (1 + self.num_updates) / (10 + self.num_updates)) + + one_minus_decay = 1.0 - decay + + with torch.no_grad(): + m_param = dict(model.named_parameters()) + shadow_params = dict(self.named_buffers()) + + for key in m_param: + if m_param[key].requires_grad: + sname = self.m_name2s_name[key] + shadow_params[sname] = shadow_params[sname].type_as(m_param[key]) + shadow_params[sname].sub_(one_minus_decay * (shadow_params[sname] - m_param[key])) + else: + assert not key in self.m_name2s_name + + def copy_to(self, model): + m_param = dict(model.named_parameters()) + shadow_params = dict(self.named_buffers()) + for key in m_param: + if m_param[key].requires_grad: + m_param[key].data.copy_(shadow_params[self.m_name2s_name[key]].data) + else: + assert not key in self.m_name2s_name + + def store(self, parameters): + """ + Save the current parameters for restoring later. + Args: + parameters: Iterable of `torch.nn.Parameter`; the parameters to be + temporarily stored. + """ + self.collected_params = [param.clone() for param in parameters] + + def restore(self, parameters): + """ + Restore the parameters stored with the `store` method. + Useful to validate the model with EMA parameters without affecting the + original optimization process. Store the parameters before the + `copy_to` method. After validation (or model saving), use this to + restore the former parameters. + Args: + parameters: Iterable of `torch.nn.Parameter`; the parameters to be + updated with the stored parameters. + """ + for c_param, param in zip(self.collected_params, parameters): + param.data.copy_(c_param.data) diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__init__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/__init__.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f0f2db9adbe03f872cf78cfe7890e20a3d3b45f3 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/__init__.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/__init__.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..98fefd770808fa400d8e74b088ed3a03cba259b5 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/__init__.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/__init__.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a00e9eb2741fdd4ce6fbe50e1351b3bb88b21b73 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/__init__.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/modules.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/modules.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c03de9673812f97b1be31252cd88ddd4040ae263 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/modules.cpython-310.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/modules.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/modules.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5524a54a81d3833a29cc4d4e47e149f74dae2da2 Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/modules.cpython-311.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/modules.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/modules.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..91e9295f47a03c6286a0100b39751a41570920aa Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/modules.cpython-39.pyc differ diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/modules.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/modules.py new file mode 100644 index 0000000000000000000000000000000000000000..6b51d5ed9737f017ba6a16c742e36aafc86958b0 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/modules.py @@ -0,0 +1,325 @@ +import math +import torch +import torch.nn as nn +from torch.utils.checkpoint import checkpoint + +from transformers import T5Tokenizer, T5EncoderModel, CLIPTokenizer, CLIPTextModel +from ldm.modules.x_transformer import Encoder, TransformerWrapper # TODO: can we directly rely on lucidrains code and simply add this as a reuirement? --> test + +import open_clip +from ldm.util import default, count_params +from einops import repeat + +class AbstractEncoder(nn.Module): + def __init__(self): + super().__init__() + + def encode(self, *args, **kwargs): + raise NotImplementedError + + +class IdentityEncoder(AbstractEncoder): + + def encode(self, x): + return x + + +class ClassEmbedder(nn.Module): + def __init__(self, embed_dim, n_classes=1000, key='class', ucg_rate=0.1): + super().__init__() + self.key = key + self.embedding = nn.Embedding(n_classes, embed_dim) + self.n_classes = n_classes + self.ucg_rate = ucg_rate + + def forward(self, batch, key=None, disable_dropout=False): + if key is None: + key = self.key + # this is for use in crossattn + c = batch[key][:, None] + if self.ucg_rate > 0. and not disable_dropout: + mask = 1. - torch.bernoulli(torch.ones_like(c) * self.ucg_rate) + c = mask * c + (1-mask) * torch.ones_like(c)*(self.n_classes-1) + c = c.long() + c = self.embedding(c) + return c + + def get_unconditional_conditioning(self, bs, device="cuda"): + uc_class = self.n_classes - 1 # 1000 classes --> 0 ... 999, one extra class for ucg (class 1000) + uc = torch.ones((bs,), device=device) * uc_class + uc = {self.key: uc} + return uc + + +def disabled_train(self, mode=True): + """Overwrite model.train with this function to make sure train/eval mode + does not change anymore.""" + return self + +class BERTTokenizer(AbstractEncoder): + """ Uses a pretrained BERT tokenizer by huggingface. Vocab size: 30522 (?)""" + def __init__(self, device="cuda", vq_interface=True, max_length=77): + super().__init__() + from transformers import BertTokenizerFast # TODO: add to reuquirements + self.tokenizer = BertTokenizerFast.from_pretrained("bert-base-uncased") + self.device = device + self.vq_interface = vq_interface + self.max_length = max_length + + def forward(self, text): + batch_encoding = self.tokenizer(text, truncation=True, max_length=self.max_length, return_length=True, + return_overflowing_tokens=False, padding="max_length", return_tensors="pt") + tokens = batch_encoding["input_ids"].to(self.device) + return tokens + + @torch.no_grad() + def encode(self, text): + tokens = self(text) + if not self.vq_interface: + return tokens + return None, None, [None, None, tokens] + + def decode(self, text): + return text + +class BERTEmbedder(AbstractEncoder): + """Uses the BERT tokenizr model and add some transformer encoder layers""" + def __init__(self, n_embed, n_layer, vocab_size=30522, max_seq_len=77, + device="cuda",use_tokenizer=True, embedding_dropout=0.0): + super().__init__() + self.use_tknz_fn = use_tokenizer + if self.use_tknz_fn: + self.tknz_fn = BERTTokenizer(vq_interface=False, max_length=max_seq_len) + self.device = device + self.transformer = TransformerWrapper(num_tokens=vocab_size, max_seq_len=max_seq_len, + attn_layers=Encoder(dim=n_embed, depth=n_layer), + emb_dropout=embedding_dropout) + + def forward(self, text): + if self.use_tknz_fn: + tokens = self.tknz_fn(text)#.to(self.device) + else: + tokens = text + z = self.transformer(tokens, return_embeddings=True) + return z + + def encode(self, text): + # output of length 77 + return self(text) + +class MedBERTEmbedder(AbstractEncoder): + """Uses the BERT tokenizr model and add some transformer encoder layers""" + def __init__(self, n_embed, n_layer, vocab_size=30522, max_seq_len=77, + device="cuda",use_tokenizer=True, embedding_dropout=0.0): + super().__init__() + self.use_tknz_fn = use_tokenizer + if self.use_tknz_fn: + self.tknz_fn = BERTTokenizer(vq_interface=False, max_length=max_seq_len) + self.device = device + self.transformer = TransformerWrapper(num_tokens=vocab_size, max_seq_len=max_seq_len, + attn_layers=Encoder(dim=n_embed, depth=n_layer), + emb_dropout=embedding_dropout) + + def forward(self, text): + if self.use_tknz_fn: + tokens = self.tknz_fn(text)#.to(self.device) + else: + tokens = text + z = self.transformer(tokens, return_embeddings=True) + return z + + def encode(self, text): + # output of length 77 + return self(text) + +class FrozenT5Embedder(AbstractEncoder): + """Uses the T5 transformer encoder for text""" + def __init__(self, version="google/t5-v1_1-large", device="cuda", max_length=77, freeze=True): # others are google/t5-v1_1-xl and google/t5-v1_1-xxl + super().__init__() + self.tokenizer = T5Tokenizer.from_pretrained(version) + self.transformer = T5EncoderModel.from_pretrained(version) + self.device = device + self.max_length = max_length # TODO: typical value? + if freeze: + self.freeze() + + def freeze(self): + self.transformer = self.transformer.eval() + #self.train = disabled_train + for param in self.parameters(): + param.requires_grad = False + + def forward(self, text): + batch_encoding = self.tokenizer(text, truncation=True, max_length=self.max_length, return_length=True, + return_overflowing_tokens=False, padding="max_length", return_tensors="pt") + tokens = batch_encoding["input_ids"].to(self.device) + outputs = self.transformer(input_ids=tokens) + + z = outputs.last_hidden_state + return z + + def encode(self, text): + return self(text) + + +class FrozenCLIPEmbedder(AbstractEncoder): + """Uses the CLIP transformer encoder for text (from huggingface)""" + LAYERS = [ + "last", + "pooled", + "hidden" + ] + def __init__(self, version="openai/clip-vit-large-patch14", device="cuda", max_length=77, + freeze=True, layer="last", layer_idx=None): # clip-vit-base-patch32 + super().__init__() + assert layer in self.LAYERS + self.tokenizer = CLIPTokenizer.from_pretrained(version) + self.transformer = CLIPTextModel.from_pretrained(version) + self.device = device + self.max_length = max_length + if freeze: + self.freeze() + self.layer = layer + self.layer_idx = layer_idx + if layer == "hidden": + assert layer_idx is not None + assert 0 <= abs(layer_idx) <= 12 + + def freeze(self): + self.transformer = self.transformer.eval() + #self.train = disabled_train + for param in self.parameters(): + param.requires_grad = False + + def forward(self, text): + batch_encoding = self.tokenizer(text, truncation=True, max_length=self.max_length, return_length=True, + return_overflowing_tokens=False, padding="max_length", return_tensors="pt") + tokens = batch_encoding["input_ids"].to(self.device) + outputs = self.transformer(input_ids=tokens, output_hidden_states=self.layer=="hidden") + if self.layer == "last": + z = outputs.last_hidden_state + elif self.layer == "pooled": + z = outputs.pooler_output[:, None, :] + else: + z = outputs.hidden_states[self.layer_idx] + return z + + def encode(self, text): + return self(text) + + +class FrozenOpenCLIPEmbedder(AbstractEncoder): + """ + Uses the OpenCLIP transformer encoder for text + """ + LAYERS = [ + #"pooled", + "last", + "penultimate" + ] + def __init__(self, arch="ViT-H-14", version="laion2b_s32b_b79k", device="cuda", max_length=77, + freeze=True, layer="last"): + super().__init__() + assert layer in self.LAYERS + model, _, _ = open_clip.create_model_and_transforms(arch, device=torch.device('cpu'), pretrained=version) + del model.visual + self.model = model + + self.device = device + self.max_length = max_length + if freeze: + self.freeze() + self.layer = layer + if self.layer == "last": + self.layer_idx = 0 + elif self.layer == "penultimate": + self.layer_idx = 1 + else: + raise NotImplementedError() + + def freeze(self): + self.model = self.model.eval() + for param in self.parameters(): + param.requires_grad = False + + def forward(self, text): + tokens = open_clip.tokenize(text) + z = self.encode_with_transformer(tokens.to(self.device)) + return z + + def encode_with_transformer(self, text): + x = self.model.token_embedding(text) # [batch_size, n_ctx, d_model] + x = x + self.model.positional_embedding + x = x.permute(1, 0, 2) # NLD -> LND + x = self.text_transformer_forward(x, attn_mask=self.model.attn_mask) + x = x.permute(1, 0, 2) # LND -> NLD + x = self.model.ln_final(x) + return x + + def text_transformer_forward(self, x: torch.Tensor, attn_mask = None): + for i, r in enumerate(self.model.transformer.resblocks): + if i == len(self.model.transformer.resblocks) - self.layer_idx: + break + if self.model.transformer.grad_checkpointing and not torch.jit.is_scripting(): + x = checkpoint(r, x, attn_mask) + else: + x = r(x, attn_mask=attn_mask) + return x + + def encode(self, text): + return self(text) + + +class FrozenCLIPT5Encoder(AbstractEncoder): + def __init__(self, clip_version="openai/clip-vit-large-patch14", t5_version="google/t5-v1_1-xl", device="cuda", + clip_max_length=77, t5_max_length=77): + super().__init__() + self.clip_encoder = FrozenCLIPEmbedder(clip_version, device, max_length=clip_max_length) + self.t5_encoder = FrozenT5Embedder(t5_version, device, max_length=t5_max_length) + print(f"{self.clip_encoder.__class__.__name__} has {count_params(self.clip_encoder)*1.e-6:.2f} M parameters, " + f"{self.t5_encoder.__class__.__name__} comes with {count_params(self.t5_encoder)*1.e-6:.2f} M params.") + + def encode(self, text): + return self(text) + + def forward(self, text): + clip_z = self.clip_encoder.encode(text) + t5_z = self.t5_encoder.encode(text) + return [clip_z, t5_z] + + +def timestep_embedding(timesteps, dim, max_period=10000, repeat_only=False): + """ + Create sinusoidal timestep embeddings. + :param timesteps: a 1-D Tensor of N indices, one per batch element. + These may be fractional. + :param dim: the dimension of the output. + :param max_period: controls the minimum frequency of the embeddings. + :return: an [N x dim] Tensor of positional embeddings. + """ + if not repeat_only: + half = dim // 2 + freqs = torch.exp( + -math.log(max_period) * torch.arange(start=0, end=half, dtype=torch.float32) / half + ).to(device=timesteps.device) + args = timesteps[:, None].float() * freqs[None] + embedding = torch.cat([torch.cos(args), torch.sin(args)], dim=-1) + if dim % 2: + embedding = torch.cat([embedding, torch.zeros_like(embedding[:, :1])], dim=-1) + else: + embedding = repeat(timesteps, 'b -> b d', d=dim) + return embedding + + +class PositionalEmbedder(AbstractEncoder): + def __init__(self, dim, max_period=10000, repeat_only=False): + super().__init__() + self.dim = dim + self.max_period = max_period + self.repeat_only = repeat_only + + def encode(self, positional_id): + return self(positional_id) + + def forward(self, positional_id): + return timestep_embedding(1000*positional_id, self.dim, self.max_period, self.repeat_only) \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/x_transformer.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/x_transformer.py new file mode 100644 index 0000000000000000000000000000000000000000..5fc15bf9cfe0111a910e7de33d04ffdec3877576 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/x_transformer.py @@ -0,0 +1,641 @@ +"""shout-out to https://github.com/lucidrains/x-transformers/tree/main/x_transformers""" +import torch +from torch import nn, einsum +import torch.nn.functional as F +from functools import partial +from inspect import isfunction +from collections import namedtuple +from einops import rearrange, repeat, reduce + +# constants + +DEFAULT_DIM_HEAD = 64 + +Intermediates = namedtuple('Intermediates', [ + 'pre_softmax_attn', + 'post_softmax_attn' +]) + +LayerIntermediates = namedtuple('Intermediates', [ + 'hiddens', + 'attn_intermediates' +]) + + +class AbsolutePositionalEmbedding(nn.Module): + def __init__(self, dim, max_seq_len): + super().__init__() + self.emb = nn.Embedding(max_seq_len, dim) + self.init_() + + def init_(self): + nn.init.normal_(self.emb.weight, std=0.02) + + def forward(self, x): + n = torch.arange(x.shape[1], device=x.device) + return self.emb(n)[None, :, :] + + +class FixedPositionalEmbedding(nn.Module): + def __init__(self, dim): + super().__init__() + inv_freq = 1. / (10000 ** (torch.arange(0, dim, 2).float() / dim)) + self.register_buffer('inv_freq', inv_freq) + + def forward(self, x, seq_dim=1, offset=0): + t = torch.arange(x.shape[seq_dim], device=x.device).type_as(self.inv_freq) + offset + sinusoid_inp = torch.einsum('i , j -> i j', t, self.inv_freq) + emb = torch.cat((sinusoid_inp.sin(), sinusoid_inp.cos()), dim=-1) + return emb[None, :, :] + + +# helpers + +def exists(val): + return val is not None + + +def default(val, d): + if exists(val): + return val + return d() if isfunction(d) else d + + +def always(val): + def inner(*args, **kwargs): + return val + return inner + + +def not_equals(val): + def inner(x): + return x != val + return inner + + +def equals(val): + def inner(x): + return x == val + return inner + + +def max_neg_value(tensor): + return -torch.finfo(tensor.dtype).max + + +# keyword argument helpers + +def pick_and_pop(keys, d): + values = list(map(lambda key: d.pop(key), keys)) + return dict(zip(keys, values)) + + +def group_dict_by_key(cond, d): + return_val = [dict(), dict()] + for key in d.keys(): + match = bool(cond(key)) + ind = int(not match) + return_val[ind][key] = d[key] + return (*return_val,) + + +def string_begins_with(prefix, str): + return str.startswith(prefix) + + +def group_by_key_prefix(prefix, d): + return group_dict_by_key(partial(string_begins_with, prefix), d) + + +def groupby_prefix_and_trim(prefix, d): + kwargs_with_prefix, kwargs = group_dict_by_key(partial(string_begins_with, prefix), d) + kwargs_without_prefix = dict(map(lambda x: (x[0][len(prefix):], x[1]), tuple(kwargs_with_prefix.items()))) + return kwargs_without_prefix, kwargs + + +# classes +class Scale(nn.Module): + def __init__(self, value, fn): + super().__init__() + self.value = value + self.fn = fn + + def forward(self, x, **kwargs): + x, *rest = self.fn(x, **kwargs) + return (x * self.value, *rest) + + +class Rezero(nn.Module): + def __init__(self, fn): + super().__init__() + self.fn = fn + self.g = nn.Parameter(torch.zeros(1)) + + def forward(self, x, **kwargs): + x, *rest = self.fn(x, **kwargs) + return (x * self.g, *rest) + + +class ScaleNorm(nn.Module): + def __init__(self, dim, eps=1e-5): + super().__init__() + self.scale = dim ** -0.5 + self.eps = eps + self.g = nn.Parameter(torch.ones(1)) + + def forward(self, x): + norm = torch.norm(x, dim=-1, keepdim=True) * self.scale + return x / norm.clamp(min=self.eps) * self.g + + +class RMSNorm(nn.Module): + def __init__(self, dim, eps=1e-8): + super().__init__() + self.scale = dim ** -0.5 + self.eps = eps + self.g = nn.Parameter(torch.ones(dim)) + + def forward(self, x): + norm = torch.norm(x, dim=-1, keepdim=True) * self.scale + return x / norm.clamp(min=self.eps) * self.g + + +class Residual(nn.Module): + def forward(self, x, residual): + return x + residual + + +class GRUGating(nn.Module): + def __init__(self, dim): + super().__init__() + self.gru = nn.GRUCell(dim, dim) + + def forward(self, x, residual): + gated_output = self.gru( + rearrange(x, 'b n d -> (b n) d'), + rearrange(residual, 'b n d -> (b n) d') + ) + + return gated_output.reshape_as(x) + + +# feedforward + +class GEGLU(nn.Module): + def __init__(self, dim_in, dim_out): + super().__init__() + self.proj = nn.Linear(dim_in, dim_out * 2) + + def forward(self, x): + x, gate = self.proj(x).chunk(2, dim=-1) + return x * F.gelu(gate) + + +class FeedForward(nn.Module): + def __init__(self, dim, dim_out=None, mult=4, glu=False, dropout=0.): + super().__init__() + inner_dim = int(dim * mult) + dim_out = default(dim_out, dim) + project_in = nn.Sequential( + nn.Linear(dim, inner_dim), + nn.GELU() + ) if not glu else GEGLU(dim, inner_dim) + + self.net = nn.Sequential( + project_in, + nn.Dropout(dropout), + nn.Linear(inner_dim, dim_out) + ) + + def forward(self, x): + return self.net(x) + + +# attention. +class Attention(nn.Module): + def __init__( + self, + dim, + dim_head=DEFAULT_DIM_HEAD, + heads=8, + causal=False, + mask=None, + talking_heads=False, + sparse_topk=None, + use_entmax15=False, + num_mem_kv=0, + dropout=0., + on_attn=False + ): + super().__init__() + if use_entmax15: + raise NotImplementedError("Check out entmax activation instead of softmax activation!") + self.scale = dim_head ** -0.5 + self.heads = heads + self.causal = causal + self.mask = mask + + inner_dim = dim_head * heads + + self.to_q = nn.Linear(dim, inner_dim, bias=False) + self.to_k = nn.Linear(dim, inner_dim, bias=False) + self.to_v = nn.Linear(dim, inner_dim, bias=False) + self.dropout = nn.Dropout(dropout) + + # talking heads + self.talking_heads = talking_heads + if talking_heads: + self.pre_softmax_proj = nn.Parameter(torch.randn(heads, heads)) + self.post_softmax_proj = nn.Parameter(torch.randn(heads, heads)) + + # explicit topk sparse attention + self.sparse_topk = sparse_topk + + # entmax + #self.attn_fn = entmax15 if use_entmax15 else F.softmax + self.attn_fn = F.softmax + + # add memory key / values + self.num_mem_kv = num_mem_kv + if num_mem_kv > 0: + self.mem_k = nn.Parameter(torch.randn(heads, num_mem_kv, dim_head)) + self.mem_v = nn.Parameter(torch.randn(heads, num_mem_kv, dim_head)) + + # attention on attention + self.attn_on_attn = on_attn + self.to_out = nn.Sequential(nn.Linear(inner_dim, dim * 2), nn.GLU()) if on_attn else nn.Linear(inner_dim, dim) + + def forward( + self, + x, + context=None, + mask=None, + context_mask=None, + rel_pos=None, + sinusoidal_emb=None, + prev_attn=None, + mem=None + ): + b, n, _, h, talking_heads, device = *x.shape, self.heads, self.talking_heads, x.device + kv_input = default(context, x) + + q_input = x + k_input = kv_input + v_input = kv_input + + if exists(mem): + k_input = torch.cat((mem, k_input), dim=-2) + v_input = torch.cat((mem, v_input), dim=-2) + + if exists(sinusoidal_emb): + # in shortformer, the query would start at a position offset depending on the past cached memory + offset = k_input.shape[-2] - q_input.shape[-2] + q_input = q_input + sinusoidal_emb(q_input, offset=offset) + k_input = k_input + sinusoidal_emb(k_input) + + q = self.to_q(q_input) + k = self.to_k(k_input) + v = self.to_v(v_input) + + q, k, v = map(lambda t: rearrange(t, 'b n (h d) -> b h n d', h=h), (q, k, v)) + + input_mask = None + if any(map(exists, (mask, context_mask))): + q_mask = default(mask, lambda: torch.ones((b, n), device=device).bool()) + k_mask = q_mask if not exists(context) else context_mask + k_mask = default(k_mask, lambda: torch.ones((b, k.shape[-2]), device=device).bool()) + q_mask = rearrange(q_mask, 'b i -> b () i ()') + k_mask = rearrange(k_mask, 'b j -> b () () j') + input_mask = q_mask * k_mask + + if self.num_mem_kv > 0: + mem_k, mem_v = map(lambda t: repeat(t, 'h n d -> b h n d', b=b), (self.mem_k, self.mem_v)) + k = torch.cat((mem_k, k), dim=-2) + v = torch.cat((mem_v, v), dim=-2) + if exists(input_mask): + input_mask = F.pad(input_mask, (self.num_mem_kv, 0), value=True) + + dots = einsum('b h i d, b h j d -> b h i j', q, k) * self.scale + mask_value = max_neg_value(dots) + + if exists(prev_attn): + dots = dots + prev_attn + + pre_softmax_attn = dots + + if talking_heads: + dots = einsum('b h i j, h k -> b k i j', dots, self.pre_softmax_proj).contiguous() + + if exists(rel_pos): + dots = rel_pos(dots) + + if exists(input_mask): + dots.masked_fill_(~input_mask, mask_value) + del input_mask + + if self.causal: + i, j = dots.shape[-2:] + r = torch.arange(i, device=device) + mask = rearrange(r, 'i -> () () i ()') < rearrange(r, 'j -> () () () j') + mask = F.pad(mask, (j - i, 0), value=False) + dots.masked_fill_(mask, mask_value) + del mask + + if exists(self.sparse_topk) and self.sparse_topk < dots.shape[-1]: + top, _ = dots.topk(self.sparse_topk, dim=-1) + vk = top[..., -1].unsqueeze(-1).expand_as(dots) + mask = dots < vk + dots.masked_fill_(mask, mask_value) + del mask + + attn = self.attn_fn(dots, dim=-1) + post_softmax_attn = attn + + attn = self.dropout(attn) + + if talking_heads: + attn = einsum('b h i j, h k -> b k i j', attn, self.post_softmax_proj).contiguous() + + out = einsum('b h i j, b h j d -> b h i d', attn, v) + out = rearrange(out, 'b h n d -> b n (h d)') + + intermediates = Intermediates( + pre_softmax_attn=pre_softmax_attn, + post_softmax_attn=post_softmax_attn + ) + + return self.to_out(out), intermediates + + +class AttentionLayers(nn.Module): + def __init__( + self, + dim, + depth, + heads=8, + causal=False, + cross_attend=False, + only_cross=False, + use_scalenorm=False, + use_rmsnorm=False, + use_rezero=False, + rel_pos_num_buckets=32, + rel_pos_max_distance=128, + position_infused_attn=False, + custom_layers=None, + sandwich_coef=None, + par_ratio=None, + residual_attn=False, + cross_residual_attn=False, + macaron=False, + pre_norm=True, + gate_residual=False, + **kwargs + ): + super().__init__() + ff_kwargs, kwargs = groupby_prefix_and_trim('ff_', kwargs) + attn_kwargs, _ = groupby_prefix_and_trim('attn_', kwargs) + + dim_head = attn_kwargs.get('dim_head', DEFAULT_DIM_HEAD) + + self.dim = dim + self.depth = depth + self.layers = nn.ModuleList([]) + + self.has_pos_emb = position_infused_attn + self.pia_pos_emb = FixedPositionalEmbedding(dim) if position_infused_attn else None + self.rotary_pos_emb = always(None) + + assert rel_pos_num_buckets <= rel_pos_max_distance, 'number of relative position buckets must be less than the relative position max distance' + self.rel_pos = None + + self.pre_norm = pre_norm + + self.residual_attn = residual_attn + self.cross_residual_attn = cross_residual_attn + + norm_class = ScaleNorm if use_scalenorm else nn.LayerNorm + norm_class = RMSNorm if use_rmsnorm else norm_class + norm_fn = partial(norm_class, dim) + + norm_fn = nn.Identity if use_rezero else norm_fn + branch_fn = Rezero if use_rezero else None + + if cross_attend and not only_cross: + default_block = ('a', 'c', 'f') + elif cross_attend and only_cross: + default_block = ('c', 'f') + else: + default_block = ('a', 'f') + + if macaron: + default_block = ('f',) + default_block + + if exists(custom_layers): + layer_types = custom_layers + elif exists(par_ratio): + par_depth = depth * len(default_block) + assert 1 < par_ratio <= par_depth, 'par ratio out of range' + default_block = tuple(filter(not_equals('f'), default_block)) + par_attn = par_depth // par_ratio + depth_cut = par_depth * 2 // 3 # 2 / 3 attention layer cutoff suggested by PAR paper + par_width = (depth_cut + depth_cut // par_attn) // par_attn + assert len(default_block) <= par_width, 'default block is too large for par_ratio' + par_block = default_block + ('f',) * (par_width - len(default_block)) + par_head = par_block * par_attn + layer_types = par_head + ('f',) * (par_depth - len(par_head)) + elif exists(sandwich_coef): + assert sandwich_coef > 0 and sandwich_coef <= depth, 'sandwich coefficient should be less than the depth' + layer_types = ('a',) * sandwich_coef + default_block * (depth - sandwich_coef) + ('f',) * sandwich_coef + else: + layer_types = default_block * depth + + self.layer_types = layer_types + self.num_attn_layers = len(list(filter(equals('a'), layer_types))) + + for layer_type in self.layer_types: + if layer_type == 'a': + layer = Attention(dim, heads=heads, causal=causal, **attn_kwargs) + elif layer_type == 'c': + layer = Attention(dim, heads=heads, **attn_kwargs) + elif layer_type == 'f': + layer = FeedForward(dim, **ff_kwargs) + layer = layer if not macaron else Scale(0.5, layer) + else: + raise Exception(f'invalid layer type {layer_type}') + + if isinstance(layer, Attention) and exists(branch_fn): + layer = branch_fn(layer) + + if gate_residual: + residual_fn = GRUGating(dim) + else: + residual_fn = Residual() + + self.layers.append(nn.ModuleList([ + norm_fn(), + layer, + residual_fn + ])) + + def forward( + self, + x, + context=None, + mask=None, + context_mask=None, + mems=None, + return_hiddens=False + ): + hiddens = [] + intermediates = [] + prev_attn = None + prev_cross_attn = None + + mems = mems.copy() if exists(mems) else [None] * self.num_attn_layers + + for ind, (layer_type, (norm, block, residual_fn)) in enumerate(zip(self.layer_types, self.layers)): + is_last = ind == (len(self.layers) - 1) + + if layer_type == 'a': + hiddens.append(x) + layer_mem = mems.pop(0) + + residual = x + + if self.pre_norm: + x = norm(x) + + if layer_type == 'a': + out, inter = block(x, mask=mask, sinusoidal_emb=self.pia_pos_emb, rel_pos=self.rel_pos, + prev_attn=prev_attn, mem=layer_mem) + elif layer_type == 'c': + out, inter = block(x, context=context, mask=mask, context_mask=context_mask, prev_attn=prev_cross_attn) + elif layer_type == 'f': + out = block(x) + + x = residual_fn(out, residual) + + if layer_type in ('a', 'c'): + intermediates.append(inter) + + if layer_type == 'a' and self.residual_attn: + prev_attn = inter.pre_softmax_attn + elif layer_type == 'c' and self.cross_residual_attn: + prev_cross_attn = inter.pre_softmax_attn + + if not self.pre_norm and not is_last: + x = norm(x) + + if return_hiddens: + intermediates = LayerIntermediates( + hiddens=hiddens, + attn_intermediates=intermediates + ) + + return x, intermediates + + return x + + +class Encoder(AttentionLayers): + def __init__(self, **kwargs): + assert 'causal' not in kwargs, 'cannot set causality on encoder' + super().__init__(causal=False, **kwargs) + + + +class TransformerWrapper(nn.Module): + def __init__( + self, + *, + num_tokens, + max_seq_len, + attn_layers, + emb_dim=None, + max_mem_len=0., + emb_dropout=0., + num_memory_tokens=None, + tie_embedding=False, + use_pos_emb=True + ): + super().__init__() + assert isinstance(attn_layers, AttentionLayers), 'attention layers must be one of Encoder or Decoder' + + dim = attn_layers.dim + emb_dim = default(emb_dim, dim) + + self.max_seq_len = max_seq_len + self.max_mem_len = max_mem_len + self.num_tokens = num_tokens + + self.token_emb = nn.Embedding(num_tokens, emb_dim) + self.pos_emb = AbsolutePositionalEmbedding(emb_dim, max_seq_len) if ( + use_pos_emb and not attn_layers.has_pos_emb) else always(0) + self.emb_dropout = nn.Dropout(emb_dropout) + + self.project_emb = nn.Linear(emb_dim, dim) if emb_dim != dim else nn.Identity() + self.attn_layers = attn_layers + self.norm = nn.LayerNorm(dim) + + self.init_() + + self.to_logits = nn.Linear(dim, num_tokens) if not tie_embedding else lambda t: t @ self.token_emb.weight.t() + + # memory tokens (like [cls]) from Memory Transformers paper + num_memory_tokens = default(num_memory_tokens, 0) + self.num_memory_tokens = num_memory_tokens + if num_memory_tokens > 0: + self.memory_tokens = nn.Parameter(torch.randn(num_memory_tokens, dim)) + + # let funnel encoder know number of memory tokens, if specified + if hasattr(attn_layers, 'num_memory_tokens'): + attn_layers.num_memory_tokens = num_memory_tokens + + def init_(self): + nn.init.normal_(self.token_emb.weight, std=0.02) + + def forward( + self, + x, + return_embeddings=False, + mask=None, + return_mems=False, + return_attn=False, + mems=None, + **kwargs + ): + b, n, device, num_mem = *x.shape, x.device, self.num_memory_tokens + x = self.token_emb(x) + x += self.pos_emb(x) + x = self.emb_dropout(x) + + x = self.project_emb(x) + + if num_mem > 0: + mem = repeat(self.memory_tokens, 'n d -> b n d', b=b) + x = torch.cat((mem, x), dim=1) + + # auto-handle masking after appending memory tokens + if exists(mask): + mask = F.pad(mask, (num_mem, 0), value=True) + + x, intermediates = self.attn_layers(x, mask=mask, mems=mems, return_hiddens=True, **kwargs) + x = self.norm(x) + + mem, x = x[:, :num_mem], x[:, num_mem:] + + out = self.to_logits(x) if not return_embeddings else x + + if return_mems: + hiddens = intermediates.hiddens + new_mems = list(map(lambda pair: torch.cat(pair, dim=-2), zip(mems, hiddens))) if exists(mems) else hiddens + new_mems = list(map(lambda t: t[..., -self.max_mem_len:, :].detach(), new_mems)) + return out, new_mems + + if return_attn: + attn_maps = list(map(lambda t: t.post_softmax_attn, intermediates.attn_intermediates)) + return out, attn_maps + + return out + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/util.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/util.py new file mode 100644 index 0000000000000000000000000000000000000000..45cb050ece6f401a22dde098ce3f1ff663c5eb6a --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/util.py @@ -0,0 +1,197 @@ +import importlib + +import torch +from torch import optim +import numpy as np + +from inspect import isfunction +from PIL import Image, ImageDraw, ImageFont + + +def log_txt_as_img(wh, xc, size=10): + # wh a tuple of (width, height) + # xc a list of captions to plot + b = len(xc) + txts = list() + for bi in range(b): + txt = Image.new("RGB", wh, color="white") + draw = ImageDraw.Draw(txt) + font = ImageFont.truetype('font/DejaVuSans.ttf', size=size) + nc = int(40 * (wh[0] / 256)) + lines = "\n".join(xc[bi][start:start + nc] for start in range(0, len(xc[bi]), nc)) + + try: + draw.text((0, 0), lines, fill="black", font=font) + except UnicodeEncodeError: + print("Cant encode string for logging. Skipping.") + + txt = np.array(txt).transpose(2, 0, 1) / 127.5 - 1.0 + txts.append(txt) + txts = np.stack(txts) + txts = torch.tensor(txts) + return txts + + +def ismap(x): + if not isinstance(x, torch.Tensor): + return False + return (len(x.shape) == 4) and (x.shape[1] > 3) + + +def isimage(x): + if not isinstance(x,torch.Tensor): + return False + return (len(x.shape) == 4) and (x.shape[1] == 3 or x.shape[1] == 1) + + +def exists(x): + return x is not None + + +def default(val, d): + if exists(val): + return val + return d() if isfunction(d) else d + + +def mean_flat(tensor): + """ + https://github.com/openai/guided-diffusion/blob/27c20a8fab9cb472df5d6bdd6c8d11c8f430b924/guided_diffusion/nn.py#L86 + Take the mean over all non-batch dimensions. + """ + return tensor.mean(dim=list(range(1, len(tensor.shape)))) + + +def count_params(model, verbose=False): + total_params = sum(p.numel() for p in model.parameters()) + if verbose: + print(f"{model.__class__.__name__} has {total_params*1.e-6:.2f} M params.") + return total_params + + +def instantiate_from_config(config): + if not "target" in config: + if config == '__is_first_stage__': + return None + elif config == "__is_unconditional__": + return None + raise KeyError("Expected key `target` to instantiate.") + return get_obj_from_str(config["target"])(**config.get("params", dict())) + + +def get_obj_from_str(string, reload=False): + module, cls = string.rsplit(".", 1) + if reload: + module_imp = importlib.import_module(module) + importlib.reload(module_imp) + return getattr(importlib.import_module(module, package=None), cls) + + +class AdamWwithEMAandWings(optim.Optimizer): + # credit to https://gist.github.com/crowsonkb/65f7265353f403714fce3b2595e0b298 + def __init__(self, params, lr=1.e-3, betas=(0.9, 0.999), eps=1.e-8, # TODO: check hyperparameters before using + weight_decay=1.e-2, amsgrad=False, ema_decay=0.9999, # ema decay to match previous code + ema_power=1., param_names=()): + """AdamW that saves EMA versions of the parameters.""" + if not 0.0 <= lr: + raise ValueError("Invalid learning rate: {}".format(lr)) + if not 0.0 <= eps: + raise ValueError("Invalid epsilon value: {}".format(eps)) + if not 0.0 <= betas[0] < 1.0: + raise ValueError("Invalid beta parameter at index 0: {}".format(betas[0])) + if not 0.0 <= betas[1] < 1.0: + raise ValueError("Invalid beta parameter at index 1: {}".format(betas[1])) + if not 0.0 <= weight_decay: + raise ValueError("Invalid weight_decay value: {}".format(weight_decay)) + if not 0.0 <= ema_decay <= 1.0: + raise ValueError("Invalid ema_decay value: {}".format(ema_decay)) + defaults = dict(lr=lr, betas=betas, eps=eps, + weight_decay=weight_decay, amsgrad=amsgrad, ema_decay=ema_decay, + ema_power=ema_power, param_names=param_names) + super().__init__(params, defaults) + + def __setstate__(self, state): + super().__setstate__(state) + for group in self.param_groups: + group.setdefault('amsgrad', False) + + @torch.no_grad() + def step(self, closure=None): + """Performs a single optimization step. + Args: + closure (callable, optional): A closure that reevaluates the model + and returns the loss. + """ + loss = None + if closure is not None: + with torch.enable_grad(): + loss = closure() + + for group in self.param_groups: + params_with_grad = [] + grads = [] + exp_avgs = [] + exp_avg_sqs = [] + ema_params_with_grad = [] + state_sums = [] + max_exp_avg_sqs = [] + state_steps = [] + amsgrad = group['amsgrad'] + beta1, beta2 = group['betas'] + ema_decay = group['ema_decay'] + ema_power = group['ema_power'] + + for p in group['params']: + if p.grad is None: + continue + params_with_grad.append(p) + if p.grad.is_sparse: + raise RuntimeError('AdamW does not support sparse gradients') + grads.append(p.grad) + + state = self.state[p] + + # State initialization + if len(state) == 0: + state['step'] = 0 + # Exponential moving average of gradient values + state['exp_avg'] = torch.zeros_like(p, memory_format=torch.preserve_format) + # Exponential moving average of squared gradient values + state['exp_avg_sq'] = torch.zeros_like(p, memory_format=torch.preserve_format) + if amsgrad: + # Maintains max of all exp. moving avg. of sq. grad. values + state['max_exp_avg_sq'] = torch.zeros_like(p, memory_format=torch.preserve_format) + # Exponential moving average of parameter values + state['param_exp_avg'] = p.detach().float().clone() + + exp_avgs.append(state['exp_avg']) + exp_avg_sqs.append(state['exp_avg_sq']) + ema_params_with_grad.append(state['param_exp_avg']) + + if amsgrad: + max_exp_avg_sqs.append(state['max_exp_avg_sq']) + + # update the steps for each param group update + state['step'] += 1 + # record the step after step update + state_steps.append(state['step']) + + optim._functional.adamw(params_with_grad, + grads, + exp_avgs, + exp_avg_sqs, + max_exp_avg_sqs, + state_steps, + amsgrad=amsgrad, + beta1=beta1, + beta2=beta2, + lr=group['lr'], + weight_decay=group['weight_decay'], + eps=group['eps'], + maximize=False) + + cur_ema_decay = min(ema_decay, 1 - state['step'] ** -ema_power) + for param, ema_param in zip(params_with_grad, ema_params_with_grad): + ema_param.mul_(cur_ema_decay).add_(param.float(), alpha=1 - cur_ema_decay) + + return loss \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000723.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000723.ckpt new file mode 100644 index 0000000000000000000000000000000000000000..1b6f5dec5f587c0636b283c13f6c4b8b6acb87d0 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000723.ckpt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e80356e7e689dde5669b42aeda58676985d967b17ac06cf8749ffc1178d0f55f +size 7325151006 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000847.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000847.ckpt new file mode 100644 index 0000000000000000000000000000000000000000..5f8ae131557a6fffa1cd50f1828f29d4cfd99b44 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000847.ckpt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21a82d682b3452c522bd202f3eac5e0e0602cfe09d75e9a03414655e7d951a3e +size 7325151006 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000931.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000931.ckpt new file mode 100644 index 0000000000000000000000000000000000000000..0d427a5122614fa819140c7c05c71a53bb7b252e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000931.ckpt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed30f6c4649b39308b03bfbeb8ba8d1a07029ab02d2c5120544a632d464376a4 +size 7325158367 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt new file mode 100644 index 0000000000000000000000000000000000000000..22cc28daea3f6a6d82cdae7c89070a62adb83d40 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2be78b7c1e808649d1f56377ed269dcd452e2105c5cd7458ddee0933829bb04 +size 7325158558 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/last.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/last.ckpt new file mode 100644 index 0000000000000000000000000000000000000000..22cc28daea3f6a6d82cdae7c89070a62adb83d40 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/last.ckpt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2be78b7c1e808649d1f56377ed269dcd452e2105c5cd7458ddee0933829bb04 +size 7325158558 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T15-52-32-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T15-52-32-lightning.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9b88d453925a3fab5830877d511e0665c0ac8e7b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T15-52-32-lightning.yaml @@ -0,0 +1,12 @@ +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: false + trainer: + benchmark: true + accelerator: ddp + gpus: 0, diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T15-52-32-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T15-52-32-project.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0818df4c2ab0bb444ad6babe59b9bce57001c083 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T15-52-32-project.yaml @@ -0,0 +1,58 @@ +model: + base_learning_rate: 5.0e-07 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.012 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + conditioning_key: crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.52 + use_ema: true + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 32 + out_channels: 16 + model_channels: 224 + attention_resolutions: + - 8 + - 4 + - 2 + num_res_blocks: 2 + channel_mult: + - 1 + - 2 + - 3 + - 4 + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: true + legacy: false +data: + target: main.DataModuleFromConfig + params: + batch_size: 8 + num_workers: 12 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv + labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-52-29-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-52-29-lightning.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9b88d453925a3fab5830877d511e0665c0ac8e7b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-52-29-lightning.yaml @@ -0,0 +1,12 @@ +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: false + trainer: + benchmark: true + accelerator: ddp + gpus: 0, diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-52-29-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-52-29-project.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0818df4c2ab0bb444ad6babe59b9bce57001c083 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-52-29-project.yaml @@ -0,0 +1,58 @@ +model: + base_learning_rate: 5.0e-07 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.012 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + conditioning_key: crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.52 + use_ema: true + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 32 + out_channels: 16 + model_channels: 224 + attention_resolutions: + - 8 + - 4 + - 2 + num_res_blocks: 2 + channel_mult: + - 1 + - 2 + - 3 + - 4 + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: true + legacy: false +data: + target: main.DataModuleFromConfig + params: + batch_size: 8 + num_workers: 12 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv + labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-59-11-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-59-11-lightning.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9b88d453925a3fab5830877d511e0665c0ac8e7b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-59-11-lightning.yaml @@ -0,0 +1,12 @@ +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: false + trainer: + benchmark: true + accelerator: ddp + gpus: 0, diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-59-11-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-59-11-project.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0818df4c2ab0bb444ad6babe59b9bce57001c083 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-59-11-project.yaml @@ -0,0 +1,58 @@ +model: + base_learning_rate: 5.0e-07 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.012 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + conditioning_key: crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.52 + use_ema: true + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 32 + out_channels: 16 + model_channels: 224 + attention_resolutions: + - 8 + - 4 + - 2 + num_res_blocks: 2 + channel_mult: + - 1 + - 2 + - 3 + - 4 + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: true + legacy: false +data: + target: main.DataModuleFromConfig + params: + batch_size: 8 + num_workers: 12 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv + labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T18-34-00-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T18-34-00-lightning.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ae4e23f6ed7bf2ea789aa6df326117a0e04c9f0e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T18-34-00-lightning.yaml @@ -0,0 +1,13 @@ +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: false + trainer: + benchmark: true + accelerator: ddp + gpus: 0,1,2,3, + resume_from_checkpoint: ./logs/full_ct_2d_with_body_mask/checkpoints/last.ckpt diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T18-34-00-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T18-34-00-project.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0818df4c2ab0bb444ad6babe59b9bce57001c083 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T18-34-00-project.yaml @@ -0,0 +1,58 @@ +model: + base_learning_rate: 5.0e-07 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.012 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + conditioning_key: crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.52 + use_ema: true + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 32 + out_channels: 16 + model_channels: 224 + attention_resolutions: + - 8 + - 4 + - 2 + num_res_blocks: 2 + channel_mult: + - 1 + - 2 + - 3 + - 4 + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: true + legacy: false +data: + target: main.DataModuleFromConfig + params: + batch_size: 8 + num_workers: 12 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv + labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-22T21-36-50-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-22T21-36-50-lightning.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ae4e23f6ed7bf2ea789aa6df326117a0e04c9f0e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-22T21-36-50-lightning.yaml @@ -0,0 +1,13 @@ +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: false + trainer: + benchmark: true + accelerator: ddp + gpus: 0,1,2,3, + resume_from_checkpoint: ./logs/full_ct_2d_with_body_mask/checkpoints/last.ckpt diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-22T21-36-50-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-22T21-36-50-project.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0818df4c2ab0bb444ad6babe59b9bce57001c083 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-22T21-36-50-project.yaml @@ -0,0 +1,58 @@ +model: + base_learning_rate: 5.0e-07 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.012 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + conditioning_key: crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.52 + use_ema: true + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 32 + out_channels: 16 + model_channels: 224 + attention_resolutions: + - 8 + - 4 + - 2 + num_res_blocks: 2 + channel_mult: + - 1 + - 2 + - 3 + - 4 + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: true + legacy: false +data: + target: main.DataModuleFromConfig + params: + batch_size: 8 + num_workers: 12 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv + labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-23T23-44-47-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-23T23-44-47-lightning.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ae4e23f6ed7bf2ea789aa6df326117a0e04c9f0e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-23T23-44-47-lightning.yaml @@ -0,0 +1,13 @@ +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: false + trainer: + benchmark: true + accelerator: ddp + gpus: 0,1,2,3, + resume_from_checkpoint: ./logs/full_ct_2d_with_body_mask/checkpoints/last.ckpt diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-23T23-44-47-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-23T23-44-47-project.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0818df4c2ab0bb444ad6babe59b9bce57001c083 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-23T23-44-47-project.yaml @@ -0,0 +1,58 @@ +model: + base_learning_rate: 5.0e-07 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.012 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + conditioning_key: crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.52 + use_ema: true + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 32 + out_channels: 16 + model_channels: 224 + attention_resolutions: + - 8 + - 4 + - 2 + num_res_blocks: 2 + channel_mult: + - 1 + - 2 + - 3 + - 4 + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: true + legacy: false +data: + target: main.DataModuleFromConfig + params: + batch_size: 8 + num_workers: 12 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv + labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-24T02-55-56-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-24T02-55-56-lightning.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ae4e23f6ed7bf2ea789aa6df326117a0e04c9f0e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-24T02-55-56-lightning.yaml @@ -0,0 +1,13 @@ +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: false + trainer: + benchmark: true + accelerator: ddp + gpus: 0,1,2,3, + resume_from_checkpoint: ./logs/full_ct_2d_with_body_mask/checkpoints/last.ckpt diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-24T02-55-56-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-24T02-55-56-project.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0818df4c2ab0bb444ad6babe59b9bce57001c083 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-24T02-55-56-project.yaml @@ -0,0 +1,58 @@ +model: + base_learning_rate: 5.0e-07 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.012 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + conditioning_key: crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.52 + use_ema: true + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 32 + out_channels: 16 + model_channels: 224 + attention_resolutions: + - 8 + - 4 + - 2 + num_res_blocks: 2 + channel_mult: + - 1 + - 2 + - 3 + - 4 + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: true + legacy: false +data: + target: main.DataModuleFromConfig + params: + batch_size: 8 + num_workers: 12 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv + labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-28T21-58-24-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-28T21-58-24-lightning.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ae4e23f6ed7bf2ea789aa6df326117a0e04c9f0e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-28T21-58-24-lightning.yaml @@ -0,0 +1,13 @@ +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: false + trainer: + benchmark: true + accelerator: ddp + gpus: 0,1,2,3, + resume_from_checkpoint: ./logs/full_ct_2d_with_body_mask/checkpoints/last.ckpt diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-28T21-58-24-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-28T21-58-24-project.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0818df4c2ab0bb444ad6babe59b9bce57001c083 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-28T21-58-24-project.yaml @@ -0,0 +1,58 @@ +model: + base_learning_rate: 5.0e-07 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.012 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + conditioning_key: crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.52 + use_ema: true + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 32 + out_channels: 16 + model_channels: 224 + attention_resolutions: + - 8 + - 4 + - 2 + num_res_blocks: 2 + channel_mult: + - 1 + - 2 + - 3 + - 4 + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: true + legacy: false +data: + target: main.DataModuleFromConfig + params: + batch_size: 8 + num_workers: 12 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv + labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_0.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_0.png new file mode 100644 index 0000000000000000000000000000000000000000..8ee60200391b526a1a0d4a858176a7bdb039756a --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4a54c2062ea11ea17c338cf96c2e771121207ef2f1a591aa6f6ce442312130a +size 124613 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_1.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2ee6ebbfd4708aa89b0340c3998f36195b69bc1c --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d67b99250929716ec8cbd9ef7deb541f5ba4d05eb29fe91d563a2289b2325a4c +size 143188 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_10.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_10.png new file mode 100644 index 0000000000000000000000000000000000000000..d9606b56b71a15ab5f7c1114c66d10cf5fbcfa1c --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_10.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14dc7c2f3c86828343dc3a7347400eabf679cfc2e20bb8ed20f9f2711fe95792 +size 145575 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_11.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_11.png new file mode 100644 index 0000000000000000000000000000000000000000..d0de3a498a603a854bce7be37898651872f2e76d --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_11.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef69095ef21bd097e7761888e17c5656fe10dc594b2488d707dd30986e5fa775 +size 144443 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_12.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_12.png new file mode 100644 index 0000000000000000000000000000000000000000..481d227db609f2ad340e0b1fef61cadb2402a02c --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_12.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27a16bfe2481a8a23c4215759c8e288569574338146cae52ee7bd739ce984c27 +size 144046 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_13.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_13.png new file mode 100644 index 0000000000000000000000000000000000000000..daa8b2ae0881738fc435931d4544f3254bc92002 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_13.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:302971ac95e7250b2b2a5e91bd341d6f85b745ae2d6197d0e1f2e341691f0ecf +size 144826 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_14.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_14.png new file mode 100644 index 0000000000000000000000000000000000000000..446f26e6b04696385c37a765090a7e6dd888039b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_14.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ccdee653174f5bcd5b31d0735fd03454d824b6454aa78ec42d0f8de9b64345b +size 147118 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_15.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_15.png new file mode 100644 index 0000000000000000000000000000000000000000..46a266309a1ed8d571770586f94e97379340f529 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_15.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd7b9b39335aef2458d6d04b805c65d2d00e06533591f23d2de9574eef05faf8 +size 148042 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_16.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_16.png new file mode 100644 index 0000000000000000000000000000000000000000..8cf4619f685f31b65ad4abda4520209fc1712903 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_16.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa2a66a89553298b78f13e1629457b6eb888917f795d844d370d0ebcced44ea0 +size 147371 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_17.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_17.png new file mode 100644 index 0000000000000000000000000000000000000000..95b0e264eff9fedaad8a8c7e2dec91e579ac6a87 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_17.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c66bf09948b9d9fc88412bc78fcfa5684bb4756caea69e98cd90e6181a4c92ff +size 152036 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_18.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_18.png new file mode 100644 index 0000000000000000000000000000000000000000..9503933431c4e3352e9c30513016af51195becb6 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_18.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6211437088e760b772b1c6e40d5861353eef9a6ad4db16d36c0bf0a2cb7d5829 +size 154391 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_19.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_19.png new file mode 100644 index 0000000000000000000000000000000000000000..8309963294db0121077804265d37bfd1aac886b0 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_19.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c98d5873d42db01c48b0557101f3851499a4fdb7bc95a8508ea11db0decf7c3a +size 156291 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_2.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5708c87cab4bb77b3a1537b535d3ac14f1fa756e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30392cf7be9c6d6394fc0629bfef20e1f555a890d42ac822866f0572de622791 +size 146814 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_20.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_20.png new file mode 100644 index 0000000000000000000000000000000000000000..0617e5297ebdf0c830691a2561f8b36f91e914c6 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_20.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a5392443c3f1ea545085d595d393a884295e608706fcc46c00784363acbe007 +size 156151 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_21.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_21.png new file mode 100644 index 0000000000000000000000000000000000000000..d721f175de901473752d1ef87b5daa8c6ae01b82 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_21.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:467141f0a60b77041a721dba5df9ee1c1e7140588c0be3c276a1a1d36b527a9a +size 157144 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_22.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_22.png new file mode 100644 index 0000000000000000000000000000000000000000..c19cc2cb787858172c5c840c81336443df68af5a --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_22.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8c43dde5db037d6f55552b61d2b9d4d4343b4973b8588aab2b24b1bd52dddc5 +size 158857 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_23.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_23.png new file mode 100644 index 0000000000000000000000000000000000000000..27af082f6962328533ae7428d2407ee617a37445 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_23.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:869c97403d82788f70a54f822e6365e2952f15f30b5046edc496de47fe96b59b +size 160399 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_24.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_24.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4e1109e619cd28be5802784ed369eb2e7ac02f --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_24.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:562e84bfab2c18b142edcfb00dfe1099486e65bdcbe862520f22c4d8f6aabaae +size 160214 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_25.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_25.png new file mode 100644 index 0000000000000000000000000000000000000000..5e620323d2c302336904015d039f66cee1f6bb4c --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_25.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d670f2e63863fec40b7587c8fcd45f7c34763607e0a202fd1fc80cdb3a423f8 +size 157222 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_26.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_26.png new file mode 100644 index 0000000000000000000000000000000000000000..d1783862d086f0d3906442c02fe4b11e97645bf9 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_26.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dba30e9a5227bec10b9b4c9209e8852238d8ead49cd13f67c9a8f20e87dc0d06 +size 158003 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_27.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_27.png new file mode 100644 index 0000000000000000000000000000000000000000..7801920fd15ed970bb15bfb883679407c22c42ce --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_27.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4e58887379c14bb9e3a164355319563d992e6ff764d460b2d6a001ca4966c1f +size 157970 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_28.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_28.png new file mode 100644 index 0000000000000000000000000000000000000000..e0eb5a9cd2a6fb0816f4cfdca7ed5a33ec12d616 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_28.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e180706c0e59a8b530c9377925a42377c14fd8bd213eeb90c56b69bbabbdfaff +size 158182 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_29.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_29.png new file mode 100644 index 0000000000000000000000000000000000000000..a9067fef3a15b28fb716bb2ee88d7723483189ca --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_29.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32fa32b634eaaa21e3772b255d51fb0711f195f1895f554eebb5a794c4974a66 +size 156811 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_3.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_3.png new file mode 100644 index 0000000000000000000000000000000000000000..9356921b72b2ef896fd4e6baf9cdce98625d0201 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c8989bd7a7700dbc04259a40a4764d3c06c3372487cbf4f85c7ad6f203dcba7 +size 149100 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_30.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_30.png new file mode 100644 index 0000000000000000000000000000000000000000..0b0e45d2f1702100c8e139c919bfce5a6bbb6e49 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_30.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06d77fc6e7826a0365a53f81d2214360e6f6bba15260c7321cc20617b6088a33 +size 157771 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_31.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_31.png new file mode 100644 index 0000000000000000000000000000000000000000..1b9e9c547111787f0611c36876e0e8a89f1e1dc3 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_31.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f522a27ec891d72f57b969a3776582418a6842b3b864cc58e98bb9c8490f7420 +size 158357 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_32.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_32.png new file mode 100644 index 0000000000000000000000000000000000000000..9ff4532747ef0fb881394b53f260af736363ce1e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_32.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c17d46bb6c35aae0d0f8f9de35302f1366b2c4d7066272fc8ad14422a88f6a5 +size 158494 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_33.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_33.png new file mode 100644 index 0000000000000000000000000000000000000000..1a4e02cdcfd3fa7e7cae1bfed5dae33e6c6a810a --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_33.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51e8e3e887c2dbfb4d7c5c9f959ab804f07a1cef5349d17dc05f359141bd143c +size 156823 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_34.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_34.png new file mode 100644 index 0000000000000000000000000000000000000000..d3d02972e933d84fbd98f0f5304975475b9983eb --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_34.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:076b731feb70b5eb1a527ce05b3c3d634c755f77c9f77fa16d3e198539d9cb99 +size 158004 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_35.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_35.png new file mode 100644 index 0000000000000000000000000000000000000000..6f421658a4e1ff2923a8ddd4061228e741c37432 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_35.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10fcbc5c7c073b223266e5c96e2162c691a523cf455d5803a1328d4241b6b2f6 +size 158178 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_36.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_36.png new file mode 100644 index 0000000000000000000000000000000000000000..f1db72f91e3c1cbc659a44ed36e204b4f4b693a5 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_36.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a942c149ab3dec193d115407b4a4ec1f0f38eb633a7575856899eadd6b05c21 +size 158128 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_37.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_37.png new file mode 100644 index 0000000000000000000000000000000000000000..bdc8aa4c49e3e63ab705b389d58ac3b5ec4e6f40 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_37.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e3bb4df73daf9eba0b9a9a43eb1d036f42a46294ad2d2eed8c44a19c7fa8fe0 +size 156938 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_38.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_38.png new file mode 100644 index 0000000000000000000000000000000000000000..db6fd3ebfad2ea81adb33efa6e6d3e2ce13d21d9 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_38.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27169cd184c5b7d778f96a78657b40d728a1821bc6a91986c883ac16a29d018f +size 158601 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_39.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_39.png new file mode 100644 index 0000000000000000000000000000000000000000..b42f65e234d10e765054c0ad41198adc1701ce8a --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_39.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45b691885c6a2d6fad3336aef28655894c4a367f77677f49b9e99a4a1265dd31 +size 159718 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_4.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c9c0387457842b41762fc4c8af65afaf4a5f2e0a --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_4.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebec81bcc47c75ef3b7a7375037666486a411275d322d552819f1fde23525146 +size 148802 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_40.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_40.png new file mode 100644 index 0000000000000000000000000000000000000000..7db48989a06d3491f20f17b61cfa288fbfe6ff6a --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_40.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7ad32d1aacf4e1da6be7b0373bd9a06d0220a5e4d8fd6ebc3a5f4143c1b640c +size 159720 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_41.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_41.png new file mode 100644 index 0000000000000000000000000000000000000000..03bd2a117245966214f0054ebfb6776c444b4a96 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_41.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e77e05a088aa5e8c7d2a20d77b5746339f9469b159d9d5fbdbbe3169809deb7 +size 160669 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_42.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_42.png new file mode 100644 index 0000000000000000000000000000000000000000..c7a3c6d6559f3d6fe3b3ae0e54b09a8a52010144 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_42.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f05a7879bf76b3c012d7f6ea32ec9ce2073857a3e31715911eb65be91fbad3e6 +size 162020 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_43.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_43.png new file mode 100644 index 0000000000000000000000000000000000000000..44f843ba4eb86ebc6927b6ed25a75a64cd11c9cd --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_43.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5eece457cdbbcd87e7f69f4ed0a5af664366c4d98435e06eb994348d27fa20f +size 163491 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_44.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_44.png new file mode 100644 index 0000000000000000000000000000000000000000..38ed1d275edc463c9799be7bae494b1e8697eceb --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_44.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44009b57f4b09bc88ec00d47e19719157216d7c6fd304fed9575874189185947 +size 163212 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_45.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_45.png new file mode 100644 index 0000000000000000000000000000000000000000..cb2448937977354044f7637f87db492759a0c33e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_45.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87825b8e2e676c286e2a9b6750e3234f66be13f6a17fceaba0c26bb54ea7d300 +size 162906 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_46.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_46.png new file mode 100644 index 0000000000000000000000000000000000000000..92948af00428a141bba36e5a24f80a5fa1df4fad --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_46.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af5f700c24194f1662b2f87283846556ca981b891de4f7875428ded55c6e0dc0 +size 163840 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_47.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_47.png new file mode 100644 index 0000000000000000000000000000000000000000..6ad5b993a3d45efeadcec47d9dd104c80ce864f5 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_47.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7e33358933ba7d40ea075f7cc8af21428e5566e11b549ca17380a46a5c6f477 +size 165034 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_48.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_48.png new file mode 100644 index 0000000000000000000000000000000000000000..26ab1e44dca29b1fa7938dd627766a488a7f86f0 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_48.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:280aea6206b9ad9e19ee96c9996ba58bd3f73632f13add3d180b0d36e3379120 +size 164329 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_49.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_49.png new file mode 100644 index 0000000000000000000000000000000000000000..cc0c432948af855c3d2289b0a220fa3374112ffd --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_49.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:789336fbb908b2c3ab1492685824a6de2bfb02cea78d5eb13dc4a41d59be7b2c +size 161300 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_5.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_5.png new file mode 100644 index 0000000000000000000000000000000000000000..9d20d3e527ba78606512c6591d729492bd7b1e6a --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_5.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:998918e334f10bb9b11e3fff937891c74c2b5980154c73d6cc50d0e05f5d772c +size 150219 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_50.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_50.png new file mode 100644 index 0000000000000000000000000000000000000000..f3e9fc61b34a425575214068579570ca41ea91b4 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_50.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a2c714cf1be47c32d826297e6b5b49688f3a5ddbbd889446aad43fcc8a96907 +size 162189 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_51.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_51.png new file mode 100644 index 0000000000000000000000000000000000000000..84f65b202ea90c3bccef04530aea7810db4f7b60 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_51.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4032613f31eb464c9158d90399245c5ed06c55b85dd0ba89ed0edff9b6c49734 +size 162869 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_52.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_52.png new file mode 100644 index 0000000000000000000000000000000000000000..024b6e6261b6f929343d652593b74b178679d726 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_52.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ee42efc3fb0aa60a7a8b985baab9a2efc28b8a3d1f3fc7a8b6f94ce6c9f5605 +size 161916 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_53.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_53.png new file mode 100644 index 0000000000000000000000000000000000000000..66835c31d83570fc6fed77ff70ba37dbc1b4524d --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_53.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61831d499518fe7d39fde16e76452c9682d86fbaa26434dd070df0504064fbe4 +size 162515 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_54.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_54.png new file mode 100644 index 0000000000000000000000000000000000000000..029fb27d7ebe3a0562fe147b4770e31a0a6354df --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_54.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ecb9849a5ad024fe5b1af8244b0fc08ee2d3fd367ebfa17e5a01cefd1084c059 +size 164681 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_55.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_55.png new file mode 100644 index 0000000000000000000000000000000000000000..f18bf61c4142b4f7c00b5fab80f660ef92db7ae7 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_55.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f9fc20467fa738d5236d83f55eb32ccd6908729c71386ef205e395ada5b030d +size 165440 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_56.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_56.png new file mode 100644 index 0000000000000000000000000000000000000000..d31071d31c9c2d87102a8016ae4f17499ecccee7 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_56.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6e55ec6dc0d8aaf0cb4c4dfbfa5f25580d4223d4bec4d2c272d8b0c44264a4a +size 164683 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_57.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_57.png new file mode 100644 index 0000000000000000000000000000000000000000..25e9e4dfb88d707d77198f82bc3c92b7064ab912 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_57.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f1902e514c287a12bbb04486660866b1ca30561add403a1cc6b457cbad14dcc +size 164095 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_58.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_58.png new file mode 100644 index 0000000000000000000000000000000000000000..1de459c05c8536a076e6ae0f133acf1c40b5c79f --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_58.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10346436131957cf11c02a7b82a1780b0350c37050e09e3684dce12df8bf215b +size 165216 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_59.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_59.png new file mode 100644 index 0000000000000000000000000000000000000000..3d0f4d13089d01c24f0322648035c7b28d5474f7 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_59.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02c0e0649a76a560aa4cae9154c76333c05a5aada68c81a669245a41cef3f039 +size 166816 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_6.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_6.png new file mode 100644 index 0000000000000000000000000000000000000000..8193f8c06b301570d60b2244acb9ccd445fd0171 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_6.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc50dcd187164c466ca5dd63b7aea8a283984a267bdb703a0ac5e4d0cb05b9bc +size 152525 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_60.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_60.png new file mode 100644 index 0000000000000000000000000000000000000000..be9a70e3f53053cd2cec3bb0f63aef175871825b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_60.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fb2445e080ca096dad103ab3d6498456995073dab6aac6a28bae25f4cfc5f96 +size 166034 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_61.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_61.png new file mode 100644 index 0000000000000000000000000000000000000000..5d218dff6822686bd6f178218b05eeee648de998 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_61.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f5deac67c062cf58db51dbc05c7e6acf3a7220907ba88bbdf7c434d87856de8 +size 158781 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_62.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_62.png new file mode 100644 index 0000000000000000000000000000000000000000..a2b970352ef43a4cc08dd0e444a45fa7b264dd59 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_62.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd86a60c1834cc989c41f2fddbc62e41f204746da4e498a2c86697e07ed06bee +size 158698 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_63.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_63.png new file mode 100644 index 0000000000000000000000000000000000000000..b7ef95dc140bfa3b7333d2b16352c2559b305629 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_63.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e47fd0422c75122f610ce84434dbac912fda4a94c8dabdfea9133161efb2a32c +size 157307 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_64.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_64.png new file mode 100644 index 0000000000000000000000000000000000000000..db869e4542e314b27ba1873c8b5dc7505fbfd1b5 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_64.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a40ed64b5fca49c441a755be5506fff06a895895a12c8ba072e96e40c3e1130e +size 155781 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_7.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_7.png new file mode 100644 index 0000000000000000000000000000000000000000..520dc8548612d95b1bfd59474da09bdeb4ba2a29 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_7.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90ec6878b93132e56f160e772c71a897581351660cbbcb36f6cf044d09e94c22 +size 153537 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_8.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_8.png new file mode 100644 index 0000000000000000000000000000000000000000..ccc5a091a51272a7da75c7b1a503b11dc602c6e5 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_8.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70aeb61a79e78873b6e89877f5702fcca77d7163e7c2fa1aade8006d66005c1b +size 153358 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_9.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_9.png new file mode 100644 index 0000000000000000000000000000000000000000..02c026c2976b7e0f96757db28c70904552e35afa --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_9.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a730537b90b4ed76f48bb1777fb8e1b068be282a4adfd339966f551b4509c33 +size 145969 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/meta.experiment new file mode 100644 index 0000000000000000000000000000000000000000..0d93c05b020efb6d44bd3a68dbe475c9b2823212 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/meta.experiment @@ -0,0 +1 @@ +{"name": "testtube", "version": 0, "tags_path": "logs/full_ct_2d_with_body_mask/testtube/version_0/meta_tags.csv", "metrics_path": "logs/full_ct_2d_with_body_mask/testtube/version_0/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-17 15:52:46.348646", "exp_hash": "testtube_v0"} \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/meta_tags.csv new file mode 100644 index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/meta_tags.csv @@ -0,0 +1 @@ +key,value diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/metrics.csv new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/metrics.csv @@ -0,0 +1 @@ + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/tf/events.out.tfevents.1760716366.GCRAZGDL1134.3459166.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/tf/events.out.tfevents.1760716366.GCRAZGDL1134.3459166.0 new file mode 100644 index 0000000000000000000000000000000000000000..df3de274a68795855449344e585c805a90352df2 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/tf/events.out.tfevents.1760716366.GCRAZGDL1134.3459166.0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3be9be1c58f4b81e461fa3876fdfacc3ccc4a1a1b84424aaf05adbc08588f67 +size 88 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/meta.experiment new file mode 100644 index 0000000000000000000000000000000000000000..f6e479eca7bd09e25c49bf1cec87475c11ca3f11 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/meta.experiment @@ -0,0 +1 @@ +{"name": "testtube", "version": 1, "tags_path": "logs/full_ct_2d_with_body_mask/testtube/version_1/meta_tags.csv", "metrics_path": "logs/full_ct_2d_with_body_mask/testtube/version_1/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-17 17:52:44.411163", "exp_hash": "testtube_v1"} \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/meta_tags.csv new file mode 100644 index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/meta_tags.csv @@ -0,0 +1 @@ +key,value diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/metrics.csv new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/metrics.csv @@ -0,0 +1 @@ + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/tf/events.out.tfevents.1760723564.GCRAZGDL1134.3511264.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/tf/events.out.tfevents.1760723564.GCRAZGDL1134.3511264.0 new file mode 100644 index 0000000000000000000000000000000000000000..7e245023db473ba45b3eb64ec8bc46ffd35226ac --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/tf/events.out.tfevents.1760723564.GCRAZGDL1134.3511264.0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11ebb2d5c722e1b091fbcee3bf440c0a3739041f1760739da867b28c3565ce57 +size 88 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/meta.experiment new file mode 100644 index 0000000000000000000000000000000000000000..333d9f35185b7e238fb0c1df37781fb3f426a3f0 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/meta.experiment @@ -0,0 +1 @@ +{"name": "testtube", "version": 2, "tags_path": "logs/full_ct_2d_with_body_mask/testtube/version_2/meta_tags.csv", "metrics_path": "logs/full_ct_2d_with_body_mask/testtube/version_2/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-17 17:59:42.422136", "exp_hash": "testtube_v2"} \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/meta_tags.csv new file mode 100644 index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/meta_tags.csv @@ -0,0 +1 @@ +key,value diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/metrics.csv new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/metrics.csv @@ -0,0 +1 @@ + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/tf/events.out.tfevents.1760723982.GCRAZGDL1134.3513118.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/tf/events.out.tfevents.1760723982.GCRAZGDL1134.3513118.0 new file mode 100644 index 0000000000000000000000000000000000000000..8fffd10fc98e7013795e6cb0606eb33d8cb3e9a5 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/tf/events.out.tfevents.1760723982.GCRAZGDL1134.3513118.0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c818718421268d3589af764844314ea4957c66281b90d06160ab9e0cecb6ce2a +size 88 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/meta.experiment new file mode 100644 index 0000000000000000000000000000000000000000..f1fc8b87b5a29778393c5ce4be83ddb823d0da51 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/meta.experiment @@ -0,0 +1 @@ +{"name": "testtube", "version": 3, "tags_path": "./logs/full_ct_2d_with_body_mask/testtube/version_3/meta_tags.csv", "metrics_path": "./logs/full_ct_2d_with_body_mask/testtube/version_3/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-17 18:35:02.478598", "exp_hash": "testtube_v3"} \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/meta_tags.csv new file mode 100644 index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/meta_tags.csv @@ -0,0 +1 @@ +key,value diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/metrics.csv new file mode 100644 index 0000000000000000000000000000000000000000..b61a64e74ed62daa4d39b68090532805bb45f290 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/metrics.csv @@ -0,0 +1,2721 @@ +train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch +0.9851170778274536,0.009150303900241852,0.9851170778274536,49.0,1,2025-10-17 18:44:02.222954,,,,,,,,, +,,,,1,2025-10-17 18:46:26.989901,0.981236457824707,0.006649507209658623,0.981236457824707,0.98316490650177,0.007285161409527063,0.98316490650177,,, +,,,,1,2025-10-17 18:47:15.190019,,,,,,,0.9911747574806213,0.00719443429261446,0.9911747574806213 +0.9657329320907593,0.0062154242768883705,0.9657329320907593,99.0,2,2025-10-17 18:53:26.581241,,,,,,,,, +,,,,2,2025-10-17 18:56:39.948160,0.9561178088188171,0.005563000682741404,0.9561178088188171,0.9610190391540527,0.007246658205986023,0.9610190391540527,,, +,,,,2,2025-10-17 18:57:29.260266,,,,,,,0.9682849645614624,0.006537227425724268,0.9682849645614624 +0.9389209747314453,0.008675165474414825,0.9389209747314453,149.0,3,2025-10-17 19:01:35.534195,,,,,,,,, +,,,,3,2025-10-17 19:06:00.146101,0.92439866065979,0.006780252791941166,0.92439866065979,0.9351450800895691,0.006474595051258802,0.9351450800895691,,, +,,,,3,2025-10-17 19:06:51.366364,,,,,,,0.939170777797699,0.0067930687218904495,0.939170777797699 +0.913748562335968,0.007361140567809343,0.913748562335968,199.0,4,2025-10-17 19:10:29.788559,,,,,,,,, +,,,,4,2025-10-17 19:15:37.762424,0.8854535222053528,0.006076432764530182,0.8854535222053528,0.9040988683700562,0.006457638461142778,0.9040988683700562,,, +,,,,4,2025-10-17 19:16:27.164775,,,,,,,0.9057185649871826,0.006699384655803442,0.9057185649871826 +0.8822274208068848,0.008031590841710567,0.8822274208068848,249.0,5,2025-10-17 19:18:21.635829,,,,,,,,, +0.8508741855621338,0.004980886355042458,0.8508741855621338,299.0,5,2025-10-17 19:23:21.175448,,,,,,,,, +,,,,5,2025-10-17 19:25:04.521385,0.8488612174987793,0.005738584790378809,0.8488612174987793,0.8680912852287292,0.005968952551484108,0.8680912852287292,,, +,,,,5,2025-10-17 19:25:54.506837,,,,,,,0.8687622547149658,0.006215198896825314,0.8687622547149658 +0.8212798833847046,0.00797971710562706,0.8212798833847046,349.0,6,2025-10-17 19:31:58.832795,,,,,,,,, +,,,,6,2025-10-17 19:34:16.968722,0.8143215179443359,0.006489977706223726,0.8143215179443359,0.8337346911430359,0.007622663397341967,0.8337346911430359,,, +,,,,6,2025-10-17 19:35:05.667853,,,,,,,0.83077073097229,0.006580478977411985,0.83077073097229 +0.7907417416572571,0.009680070914328098,0.7907417416572571,399.0,7,2025-10-17 19:40:03.535418,,,,,,,,, +,,,,7,2025-10-17 19:43:16.593378,0.7794260382652283,0.007215758785605431,0.7794260382652283,0.8026125431060791,0.005952559877187014,0.8026125431060791,,, +,,,,7,2025-10-17 19:44:06.221003,,,,,,,0.7930805087089539,0.005942213349044323,0.7930805087089539 +0.7559014558792114,0.004296557046473026,0.7559014558792114,449.0,8,2025-10-17 19:48:14.899253,,,,,,,,, +,,,,8,2025-10-17 19:52:28.885823,0.7415792942047119,0.005352153908461332,0.7415792942047119,0.7671114206314087,0.006520677823573351,0.7671114206314087,,, +,,,,8,2025-10-17 19:53:21.222873,,,,,,,0.7558329701423645,0.005900911521166563,0.7558329701423645 +0.7324256300926208,0.0036078195553272963,0.7324256300926208,499.0,9,2025-10-17 19:56:22.205259,,,,,,,,, +,,,,9,2025-10-17 20:01:37.782939,0.7063193917274475,0.005720220506191254,0.7063193917274475,0.7363706827163696,0.007241578307002783,0.7363706827163696,,, +,,,,9,2025-10-17 20:02:26.640233,,,,,,,0.7236968278884888,0.005440713372081518,0.7236968278884888 +0.6991230845451355,0.007429489400237799,0.6991230845451355,549.0,10,2025-10-17 20:04:11.476089,,,,,,,,, +0.6930344700813293,0.007134787272661924,0.6930344700813293,599.0,10,2025-10-17 20:08:57.895505,,,,,,,,, +,,,,10,2025-10-17 20:10:30.702198,0.6808200478553772,0.005121209193021059,0.6808200478553772,0.7103968262672424,0.006958813406527042,0.7103968262672424,,, +,,,,10,2025-10-17 20:11:23.068116,,,,,,,0.6923302412033081,0.005641557741910219,0.6923302412033081 +0.6435641646385193,0.0033329841680824757,0.6435641646385193,649.0,11,2025-10-17 20:17:07.307463,,,,,,,,, +,,,,11,2025-10-17 20:19:20.073531,0.645767331123352,0.005204854998737574,0.645767331123352,0.6829339861869812,0.005836974363774061,0.6829339861869812,,, +,,,,11,2025-10-17 20:20:09.303774,,,,,,,0.661441445350647,0.005304188467562199,0.661441445350647 +0.6299411058425903,0.006884862203150988,0.6299411058425903,699.0,12,2025-10-17 20:25:00.791500,,,,,,,,, +,,,,12,2025-10-17 20:28:04.464326,0.6220085620880127,0.004106961190700531,0.6220085620880127,0.6562986373901367,0.005694694817066193,0.6562986373901367,,, +,,,,12,2025-10-17 20:28:53.065200,,,,,,,0.6316497921943665,0.004960454069077969,0.6316497921943665 +0.6002478003501892,0.00353260082192719,0.6002478003501892,749.0,13,2025-10-17 20:32:57.698371,,,,,,,,, +,,,,13,2025-10-17 20:37:14.141018,0.6010312438011169,0.005120682530105114,0.6010312438011169,0.6330088376998901,0.0045606400817632675,0.6330088376998901,,, +,,,,13,2025-10-17 20:38:02.656536,,,,,,,0.606263279914856,0.005404278170317411,0.606263279914856 +0.5786494016647339,0.0036265698727220297,0.5786494016647339,799.0,14,2025-10-17 20:41:13.834427,,,,,,,,, +,,,,14,2025-10-17 20:46:20.524986,0.5741392970085144,0.004329998511821032,0.5741392970085144,0.6058800220489502,0.00605494249612093,0.6058800220489502,,, +,,,,14,2025-10-17 20:47:08.506296,,,,,,,0.5820572376251221,0.005061776842921972,0.5820572376251221 +0.5741428732872009,0.00718876626342535,0.5741428732872009,849.0,15,2025-10-17 20:49:07.080406,,,,,,,,, +0.5246618390083313,0.0026777973398566246,0.5246618390083313,899.0,15,2025-10-17 20:53:50.989321,,,,,,,,, +,,,,15,2025-10-17 20:55:21.249419,0.5468762516975403,0.00487175490707159,0.5468762516975403,0.5833101868629456,0.0060044992715120316,0.5833101868629456,,, +,,,,15,2025-10-17 20:56:08.634724,,,,,,,0.5592496991157532,0.005075080785900354,0.5592496991157532 +0.5308948159217834,0.0026686261408030987,0.5308948159217834,949.0,16,2025-10-17 21:02:03.701252,,,,,,,,, +,,,,16,2025-10-17 21:04:19.765037,0.5267952084541321,0.0040120226331055164,0.5267952084541321,0.5639071464538574,0.004622844513505697,0.5639071464538574,,, +,,,,16,2025-10-17 21:05:09.488585,,,,,,,0.5372046828269958,0.004532735329121351,0.5372046828269958 +0.5284709930419922,0.0029939578380435705,0.5284709930419922,999.0,17,2025-10-17 21:10:03.490188,,,,,,,,, +,,,,17,2025-10-17 21:13:16.979713,0.5072333216667175,0.0032975899521261454,0.5072333216667175,0.546735405921936,0.004115614574402571,0.546735405921936,,, +,,,,17,2025-10-17 21:14:07.029197,,,,,,,0.5166626572608948,0.004241914954036474,0.5166626572608948 +0.503096342086792,0.002954531693831086,0.503096342086792,1049.0,18,2025-10-17 21:17:43.239126,,,,,,,,, +,,,,18,2025-10-17 21:22:02.366480,0.4891848564147949,0.003920846618711948,0.4891848564147949,0.521676242351532,0.004159113857895136,0.521676242351532,,, +,,,,18,2025-10-17 21:22:51.015238,,,,,,,0.4985333979129791,0.004320941865444183,0.4985333979129791 +0.47992178797721863,0.002379495417699218,0.47992178797721863,1099.0,19,2025-10-17 21:25:39.687664,,,,,,,,, +,,,,19,2025-10-17 21:30:44.260245,0.4753892719745636,0.005953944753855467,0.4753892719745636,0.5112963914871216,0.005237895529717207,0.5112963914871216,,, +,,,,19,2025-10-17 21:31:32.955861,,,,,,,0.4791320264339447,0.0039509558118879795,0.4791320264339447 +0.4572303891181946,0.0027849783655256033,0.4572303891181946,1149.0,20,2025-10-17 21:33:29.032531,,,,,,,,, +0.4629071056842804,0.003879647934809327,0.4629071056842804,1199.0,20,2025-10-17 21:37:58.693782,,,,,,,,, +,,,,20,2025-10-17 21:39:36.173475,0.453395813703537,0.005427689757198095,0.453395813703537,0.4854350984096527,0.0038980115205049515,0.4854350984096527,,, +,,,,20,2025-10-17 21:40:25.377165,,,,,,,0.4624866545200348,0.0039069014601409435,0.4624866545200348 +0.44980332255363464,0.003607891732826829,0.44980332255363464,1249.0,21,2025-10-17 21:46:03.300107,,,,,,,,, +,,,,21,2025-10-17 21:48:18.378354,0.43696728348731995,0.002635874319821596,0.43696728348731995,0.47823771834373474,0.004575494676828384,0.47823771834373474,,, +,,,,21,2025-10-17 21:49:08.003355,,,,,,,0.44773417711257935,0.004178957082331181,0.44773417711257935 +0.4310632050037384,0.005498436279594898,0.4310632050037384,1299.0,22,2025-10-17 21:53:42.548677,,,,,,,,, +,,,,22,2025-10-17 21:57:07.084140,0.42980021238327026,0.003612735541537404,0.42980021238327026,0.4649207293987274,0.004720674827694893,0.4649207293987274,,, +,,,,22,2025-10-17 21:57:56.089297,,,,,,,0.4304196834564209,0.003874737536534667,0.4304196834564209 +0.41302117705345154,0.005146853160113096,0.41302117705345154,1349.0,23,2025-10-17 22:01:43.184383,,,,,,,,, +,,,,23,2025-10-17 22:05:47.400327,0.408976674079895,0.0029195838142186403,0.408976674079895,0.44180431962013245,0.00392196886241436,0.44180431962013245,,, +,,,,23,2025-10-17 22:06:38.086876,,,,,,,0.41530653834342957,0.004081227816641331,0.41530653834342957 +0.4097554385662079,0.002896635327488184,0.4097554385662079,1399.0,24,2025-10-17 22:09:34.782257,,,,,,,,, +,,,,24,2025-10-17 22:14:51.556770,0.3964121639728546,0.003533917246386409,0.3964121639728546,0.4304462671279907,0.0038241418078541756,0.4304462671279907,,, +,,,,24,2025-10-17 22:15:42.915790,,,,,,,0.4038150906562805,0.003966495394706726,0.4038150906562805 +0.382864773273468,0.003294428111985326,0.382864773273468,1449.0,25,2025-10-17 22:17:30.614336,,,,,,,,, +0.3791220486164093,0.0029140342958271503,0.3791220486164093,1499.0,25,2025-10-17 22:22:01.870836,,,,,,,,, +,,,,25,2025-10-17 22:23:36.207787,0.386807382106781,0.002678736811503768,0.386807382106781,0.42168956995010376,0.0029558539390563965,0.42168956995010376,,, +,,,,25,2025-10-17 22:24:25.943970,,,,,,,0.38943976163864136,0.0035117133520543575,0.38943976163864136 +0.34903067350387573,0.0018004446756094694,0.34903067350387573,1549.0,26,2025-10-17 22:30:08.222875,,,,,,,,, +,,,,26,2025-10-17 22:32:23.081963,0.3692779839038849,0.004333118442445993,0.3692779839038849,0.3969580829143524,0.002681219717487693,0.3969580829143524,,, +,,,,26,2025-10-17 22:33:10.907709,,,,,,,0.37460044026374817,0.003322968492284417,0.37460044026374817 +0.3792068064212799,0.0025799707509577274,0.3792068064212799,1599.0,27,2025-10-17 22:38:36.140581,,,,,,,,, +,,,,27,2025-10-17 22:41:47.875231,0.3664904832839966,0.003755882615223527,0.3664904832839966,0.3990291357040405,0.005394399166107178,0.3990291357040405,,, +,,,,27,2025-10-17 22:42:35.986281,,,,,,,0.36610081791877747,0.0033288844861090183,0.36610081791877747 +0.3635040521621704,0.001960414694622159,0.3635040521621704,1649.0,28,2025-10-17 22:46:41.509840,,,,,,,,, +,,,,28,2025-10-17 22:50:40.044330,0.34386715292930603,0.0035876671317964792,0.34386715292930603,0.3937179744243622,0.0037130694836378098,0.3937179744243622,,, +,,,,28,2025-10-17 22:51:26.420771,,,,,,,0.35264599323272705,0.0037467204965651035,0.35264599323272705 +0.3515273332595825,0.0021676074247807264,0.3515273332595825,1699.0,29,2025-10-17 22:54:18.608688,,,,,,,,, +,,,,29,2025-10-17 22:59:27.449428,0.34100061655044556,0.005927515681833029,0.34100061655044556,0.3756888806819916,0.0033827454317361116,0.3756888806819916,,, +,,,,29,2025-10-17 23:00:15.042450,,,,,,,0.3451484739780426,0.0037844229955226183,0.3451484739780426 +0.3341149687767029,0.007573127746582031,0.3341149687767029,1749.0,30,2025-10-17 23:02:00.809298,,,,,,,,, +0.32731330394744873,0.001929320627823472,0.32731330394744873,1799.0,30,2025-10-17 23:06:40.006029,,,,,,,,, +,,,,30,2025-10-17 23:08:17.651024,0.33356910943984985,0.004304233472794294,0.33356910943984985,0.3592572808265686,0.0036002215929329395,0.3592572808265686,,, +,,,,30,2025-10-17 23:09:04.396866,,,,,,,0.33485153317451477,0.0034702245611697435,0.33485153317451477 +0.32654300332069397,0.002166624180972576,0.32654300332069397,1849.0,31,2025-10-17 23:14:34.722691,,,,,,,,, +,,,,31,2025-10-17 23:16:50.817293,0.32415682077407837,0.003588471096009016,0.32415682077407837,0.3498847186565399,0.0027094860561192036,0.3498847186565399,,, +,,,,31,2025-10-17 23:17:37.930325,,,,,,,0.3234676420688629,0.003552105976268649,0.3234676420688629 +0.3023500442504883,0.002822065493091941,0.3023500442504883,1899.0,32,2025-10-17 23:22:34.927490,,,,,,,,, +,,,,32,2025-10-17 23:25:47.579273,0.3126690685749054,0.0030091817025095224,0.3126690685749054,0.3404969871044159,0.0041397023014724255,0.3404969871044159,,, +,,,,32,2025-10-17 23:26:38.066313,,,,,,,0.31168097257614136,0.002977407071739435,0.31168097257614136 +0.32428836822509766,0.004895636811852455,0.32428836822509766,1949.0,33,2025-10-17 23:30:53.391733,,,,,,,,, +,,,,33,2025-10-17 23:35:05.714614,0.30154192447662354,0.001977927051484585,0.30154192447662354,0.33470097184181213,0.0036565535701811314,0.33470097184181213,,, +,,,,33,2025-10-17 23:35:56.195080,,,,,,,0.3066472113132477,0.00381969241425395,0.3066472113132477 +0.29557037353515625,0.00493372930213809,0.29557037353515625,1999.0,34,2025-10-17 23:38:42.235300,,,,,,,,, +,,,,34,2025-10-17 23:43:57.302674,0.2953920066356659,0.003770796349272132,0.2953920066356659,0.3238844573497772,0.003777656238526106,0.3238844573497772,,, +,,,,34,2025-10-17 23:44:44.584122,,,,,,,0.2954370081424713,0.003151919227093458,0.2954370081424713 +0.26829198002815247,0.0014970245538279414,0.26829198002815247,2049.0,35,2025-10-17 23:46:36.447348,,,,,,,,, +0.2776942551136017,0.0037280828692018986,0.2776942551136017,2099.0,35,2025-10-17 23:51:11.837798,,,,,,,,, +,,,,35,2025-10-17 23:52:43.699651,0.28441211581230164,0.002015964360907674,0.28441211581230164,0.3192616105079651,0.0034252910409122705,0.3192616105079651,,, +,,,,35,2025-10-17 23:53:31.450330,,,,,,,0.2883877754211426,0.003099359106272459,0.2883877754211426 +0.2721158266067505,0.0021113744005560875,0.2721158266067505,2149.0,36,2025-10-17 23:59:02.168494,,,,,,,,, +,,,,36,2025-10-18 00:01:36.344066,0.28485387563705444,0.002576607745140791,0.28485387563705444,0.3031649887561798,0.002734854118898511,0.3031649887561798,,, +,,,,36,2025-10-18 00:02:24.766705,,,,,,,0.2843502461910248,0.0030610847752541304,0.2843502461910248 +0.2409033477306366,0.0012487482745200396,0.2409033477306366,2199.0,37,2025-10-18 00:07:25.781291,,,,,,,,, +,,,,37,2025-10-18 00:10:30.058484,0.27430400252342224,0.003992173820734024,0.27430400252342224,0.3031527101993561,0.0040612914599478245,0.3031527101993561,,, +,,,,37,2025-10-18 00:11:16.184568,,,,,,,0.27718329429626465,0.0028162843082100153,0.27718329429626465 +0.2654839754104614,0.0025434221606701612,0.2654839754104614,2249.0,38,2025-10-18 00:15:26.930122,,,,,,,,, +,,,,38,2025-10-18 00:19:45.120318,0.26039591431617737,0.00331642827950418,0.26039591431617737,0.30290815234184265,0.004527226090431213,0.30290815234184265,,, +,,,,38,2025-10-18 00:20:34.773788,,,,,,,0.26838913559913635,0.00312285078689456,0.26838913559913635 +0.26765528321266174,0.0016706526512280107,0.26765528321266174,2299.0,39,2025-10-18 00:23:26.547325,,,,,,,,, +,,,,39,2025-10-18 00:28:29.497746,0.2591611444950104,0.002573063364252448,0.2591611444950104,0.28724804520606995,0.0038741393946111202,0.28724804520606995,,, +,,,,39,2025-10-18 00:29:16.139202,,,,,,,0.2609848082065582,0.0029091311153024435,0.2609848082065582 +0.28534996509552,0.00224576098844409,0.28534996509552,2349.0,40,2025-10-18 00:31:11.671601,,,,,,,,, +0.25683802366256714,0.00661000981926918,0.25683802366256714,2399.0,40,2025-10-18 00:35:47.588068,,,,,,,,, +,,,,40,2025-10-18 00:37:22.243530,0.26187077164649963,0.002219859743490815,0.26187077164649963,0.2800922989845276,0.0031639388762414455,0.2800922989845276,,, +,,,,40,2025-10-18 00:38:10.022842,,,,,,,0.25934693217277527,0.002811690792441368,0.25934693217277527 +0.2475700080394745,0.0019128513522446156,0.2475700080394745,2449.0,41,2025-10-18 00:43:48.549745,,,,,,,,, +,,,,41,2025-10-18 00:46:08.207809,0.2527816593647003,0.0030386534053832293,0.2527816593647003,0.27857691049575806,0.0028720730915665627,0.27857691049575806,,, +,,,,41,2025-10-18 00:46:56.228032,,,,,,,0.25280851125717163,0.002966557629406452,0.25280851125717163 +0.26463744044303894,0.001976434141397476,0.26463744044303894,2499.0,42,2025-10-18 00:51:24.829470,,,,,,,,, +,,,,42,2025-10-18 00:54:57.645291,0.24899165332317352,0.0026710976380854845,0.24899165332317352,0.2719288766384125,0.0036884902510792017,0.2719288766384125,,, +,,,,42,2025-10-18 00:55:47.251960,,,,,,,0.24653959274291992,0.0030098771676421165,0.24653959274291992 +0.25619742274284363,0.0017166443867608905,0.25619742274284363,2549.0,43,2025-10-18 00:59:47.629520,,,,,,,,, +,,,,43,2025-10-18 01:03:57.174691,0.2311849296092987,0.0022806718479841948,0.2311849296092987,0.2558221220970154,0.002931251423433423,0.2558221220970154,,, +,,,,43,2025-10-18 01:04:45.056956,,,,,,,0.24646930396556854,0.0030814609490334988,0.24646930396556854 +0.23011654615402222,0.002300398424267769,0.23011654615402222,2599.0,44,2025-10-18 01:07:34.892438,,,,,,,,, +,,,,44,2025-10-18 01:12:42.542352,0.23366762697696686,0.0037340379785746336,0.23366762697696686,0.2600926160812378,0.002657821634784341,0.2600926160812378,,, +,,,,44,2025-10-18 01:13:29.072381,,,,,,,0.23790264129638672,0.002818418899551034,0.23790264129638672 +0.2085430920124054,0.0011553699150681496,0.2085430920124054,2649.0,45,2025-10-18 01:15:16.389796,,,,,,,,, +0.2339380830526352,0.002164354082196951,0.2339380830526352,2699.0,45,2025-10-18 01:19:56.011406,,,,,,,,, +,,,,45,2025-10-18 01:21:28.895609,0.22791318595409393,0.0032366332598030567,0.22791318595409393,0.2543962895870209,0.004943333100527525,0.2543962895870209,,, +,,,,45,2025-10-18 01:22:17.920766,,,,,,,0.23490773141384125,0.002942646387964487,0.23490773141384125 +0.20419856905937195,0.002120305085554719,0.20419856905937195,2749.0,46,2025-10-18 01:27:54.254820,,,,,,,,, +,,,,46,2025-10-18 01:30:36.987586,0.22863580286502838,0.0023775554727762938,0.22863580286502838,0.2525813579559326,0.003678364912047982,0.2525813579559326,,, +,,,,46,2025-10-18 01:31:26.546137,,,,,,,0.23579438030719757,0.003084185067564249,0.23579438030719757 +0.2397492378950119,0.003231365466490388,0.2397492378950119,2799.0,47,2025-10-18 01:36:16.789467,,,,,,,,, +,,,,47,2025-10-18 01:39:32.172120,0.22553294897079468,0.002304472029209137,0.22553294897079468,0.2425924390554428,0.003191049676388502,0.2425924390554428,,, +,,,,47,2025-10-18 01:40:18.687607,,,,,,,0.2269117534160614,0.0022496876772493124,0.2269117534160614 +0.22617918252944946,0.001533633447252214,0.22617918252944946,2849.0,48,2025-10-18 01:43:57.592853,,,,,,,,, +,,,,48,2025-10-18 01:48:10.520466,0.22463873028755188,0.002693468239158392,0.22463873028755188,0.2425769865512848,0.0030094843823462725,0.2425769865512848,,, +,,,,48,2025-10-18 01:48:58.153973,,,,,,,0.22376298904418945,0.002933716867119074,0.22376298904418945 +0.22263701260089874,0.002054888755083084,0.22263701260089874,2899.0,49,2025-10-18 01:51:51.323613,,,,,,,,, +,,,,49,2025-10-18 01:56:54.418576,0.2253531813621521,0.0031459773890674114,0.2253531813621521,0.23653548955917358,0.002540112938731909,0.23653548955917358,,, +,,,,49,2025-10-18 01:57:44.105582,,,,,,,0.21911266446113586,0.0026613909285515547,0.21911266446113586 +0.2260802537202835,0.0016033801948651671,0.2260802537202835,2949.0,50,2025-10-18 01:59:33.259320,,,,,,,,, +0.2042275071144104,0.003578661475330591,0.2042275071144104,2999.0,50,2025-10-18 02:03:58.325047,,,,,,,,, +,,,,50,2025-10-18 02:05:28.926605,0.2184848040342331,0.002226481446996331,0.2184848040342331,0.24739760160446167,0.005558309610933065,0.24739760160446167,,, +,,,,50,2025-10-18 02:05:53.887320,,,,,,,0.21693484485149384,0.002568315016105771,0.21693484485149384 +0.19587518274784088,0.002141018630936742,0.19587518274784088,3049.0,51,2025-10-18 02:11:36.699027,,,,,,,,, +,,,,51,2025-10-18 02:14:01.642897,0.21990901231765747,0.0023338261526077986,0.21990901231765747,0.23628687858581543,0.003388708923012018,0.23628687858581543,,, +,,,,51,2025-10-18 02:14:49.123187,,,,,,,0.21168223023414612,0.002821913454681635,0.21168223023414612 +0.20126816630363464,0.002694060793146491,0.20126816630363464,3099.0,52,2025-10-18 02:19:34.939051,,,,,,,,, +,,,,52,2025-10-18 02:22:46.971841,0.20394255220890045,0.0020175473764538765,0.20394255220890045,0.2324499785900116,0.00332344276830554,0.2324499785900116,,, +,,,,52,2025-10-18 02:23:32.742892,,,,,,,0.21086205542087555,0.0027179974131286144,0.21086205542087555 +0.18838943541049957,0.001227339613251388,0.18838943541049957,3149.0,53,2025-10-18 02:27:22.199475,,,,,,,,, +,,,,53,2025-10-18 02:31:27.360806,0.21468542516231537,0.002323791617527604,0.21468542516231537,0.22346827387809753,0.0015940945595502853,0.22346827387809753,,, +,,,,53,2025-10-18 02:32:15.831217,,,,,,,0.21157175302505493,0.0026095714420080185,0.21157175302505493 +0.19400274753570557,0.0014115491649135947,0.19400274753570557,3199.0,54,2025-10-18 02:35:14.391923,,,,,,,,, +,,,,54,2025-10-18 02:40:23.010324,0.20748580992221832,0.003353619482368231,0.20748580992221832,0.23138855397701263,0.0036053545773029327,0.23138855397701263,,, +,,,,54,2025-10-18 02:41:14.332008,,,,,,,0.20991545915603638,0.0026832830626517534,0.20991545915603638 +0.21961307525634766,0.0018315702909603715,0.21961307525634766,3249.0,55,2025-10-18 02:43:10.138665,,,,,,,,, +0.19133761525154114,0.004516351968050003,0.19133761525154114,3299.0,55,2025-10-18 02:48:01.117334,,,,,,,,, +,,,,55,2025-10-18 02:49:39.250326,0.20393820106983185,0.0024540647864341736,0.20393820106983185,0.23059718310832977,0.003420991823077202,0.23059718310832977,,, +,,,,55,2025-10-18 02:50:27.929264,,,,,,,0.19995525479316711,0.002466990612447262,0.19995525479316711 +0.20864547789096832,0.002874532947316766,0.20864547789096832,3349.0,56,2025-10-18 02:56:28.225052,,,,,,,,, +,,,,56,2025-10-18 02:58:39.856564,0.21072763204574585,0.004693142604082823,0.21072763204574585,0.22091583907604218,0.0027561821043491364,0.22091583907604218,,, +,,,,56,2025-10-18 02:59:28.088064,,,,,,,0.20341017842292786,0.002722575096413493,0.20341017842292786 +0.2086683213710785,0.004920510575175285,0.2086683213710785,3399.0,57,2025-10-18 03:04:02.716283,,,,,,,,, +,,,,57,2025-10-18 03:07:13.379506,0.20123140513896942,0.002911006798967719,0.20123140513896942,0.2122715264558792,0.0014843312092125416,0.2122715264558792,,, +,,,,57,2025-10-18 03:08:01.133619,,,,,,,0.20059256255626678,0.002329669427126646,0.20059256255626678 +0.1638718694448471,0.0015461884904652834,0.1638718694448471,3449.0,58,2025-10-18 03:11:58.225489,,,,,,,,, +,,,,58,2025-10-18 03:16:03.566208,0.2092512845993042,0.0045948210172355175,0.2092512845993042,0.2200208306312561,0.0032472661696374416,0.2200208306312561,,, +,,,,58,2025-10-18 03:16:50.771005,,,,,,,0.20426523685455322,0.002570732496678829,0.20426523685455322 +0.22431856393814087,0.003420562483370304,0.22431856393814087,3499.0,59,2025-10-18 03:19:44.076793,,,,,,,,, +,,,,59,2025-10-18 03:24:58.859714,0.2097751349210739,0.003889271290972829,0.2097751349210739,0.21695546805858612,0.002505337353795767,0.21695546805858612,,, +,,,,59,2025-10-18 03:25:46.331892,,,,,,,0.19871419668197632,0.0029760163743048906,0.19871419668197632 +0.2060558944940567,0.0030032387003302574,0.2060558944940567,3549.0,60,2025-10-18 03:28:09.622252,,,,,,,,, +0.18881194293498993,0.0016044782241806388,0.18881194293498993,3599.0,60,2025-10-18 03:32:58.489104,,,,,,,,, +,,,,60,2025-10-18 03:34:33.901023,0.19915664196014404,0.0024078881833702326,0.19915664196014404,0.21274308860301971,0.003825064515694976,0.21274308860301971,,, +,,,,60,2025-10-18 03:35:22.197109,,,,,,,0.19572243094444275,0.002528023673221469,0.19572243094444275 +0.1970432549715042,0.00670558912679553,0.1970432549715042,3649.0,61,2025-10-18 03:40:55.154748,,,,,,,,, +,,,,61,2025-10-18 03:43:17.777695,0.20161788165569305,0.0022182303946465254,0.20161788165569305,0.21268285810947418,0.0034407407511025667,0.21268285810947418,,, +,,,,61,2025-10-18 03:44:05.930498,,,,,,,0.19757072627544403,0.0029988097958266735,0.19757072627544403 +0.19559933245182037,0.0016825678758323193,0.19559933245182037,3699.0,62,2025-10-18 03:48:42.772001,,,,,,,,, +,,,,62,2025-10-18 03:51:53.432382,0.1969473510980606,0.001929719583131373,0.1969473510980606,0.2005879133939743,0.0020736639853566885,0.2005879133939743,,, +,,,,62,2025-10-18 03:52:39.119927,,,,,,,0.1945025473833084,0.0027116169221699238,0.1945025473833084 +0.21821340918540955,0.0016223626444116235,0.21821340918540955,3749.0,63,2025-10-18 03:56:53.375713,,,,,,,,, +,,,,63,2025-10-18 04:01:11.929275,0.1945328414440155,0.003689614124596119,0.1945328414440155,0.19780568778514862,0.002111197216436267,0.19780568778514862,,, +,,,,63,2025-10-18 04:02:00.300637,,,,,,,0.19628000259399414,0.002781738992780447,0.19628000259399414 +0.18040065467357635,0.0014701607869938016,0.18040065467357635,3799.0,64,2025-10-18 04:05:02.409048,,,,,,,,, +,,,,64,2025-10-18 04:10:32.350981,0.19093982875347137,0.001624290132895112,0.19093982875347137,0.1960717737674713,0.0016163501422852278,0.1960717737674713,,, +,,,,64,2025-10-18 04:11:23.388993,,,,,,,0.19527177512645721,0.002934400225058198,0.19527177512645721 +0.20528748631477356,0.004243097268044949,0.20528748631477356,3849.0,65,2025-10-18 04:13:07.586862,,,,,,,,, +0.16542589664459229,0.0015278103528544307,0.16542589664459229,3899.0,65,2025-10-18 04:17:44.783930,,,,,,,,, +,,,,65,2025-10-18 04:19:17.790553,0.20256200432777405,0.002777962014079094,0.20256200432777405,0.20737303793430328,0.0031209352891892195,0.20737303793430328,,, +,,,,65,2025-10-18 04:19:43.268806,,,,,,,0.1924688071012497,0.002572109689936042,0.1924688071012497 +0.18781942129135132,0.001040334696881473,0.18781942129135132,3949.0,66,2025-10-18 04:25:18.614444,,,,,,,,, +,,,,66,2025-10-18 04:27:37.002306,0.1963997334241867,0.0023340112529695034,0.1963997334241867,0.20425106585025787,0.002198680303990841,0.20425106585025787,,, +,,,,66,2025-10-18 04:28:03.112947,,,,,,,0.1919473260641098,0.0026504569686949253,0.1919473260641098 +0.2102022022008896,0.004406019113957882,0.2102022022008896,3999.0,67,2025-10-18 04:32:52.635987,,,,,,,,, +,,,,67,2025-10-18 04:35:56.901561,0.19694846868515015,0.001999082276597619,0.19694846868515015,0.20403508841991425,0.0022090086713433266,0.20403508841991425,,, +,,,,67,2025-10-18 04:36:21.903480,,,,,,,0.19044539332389832,0.0024281495716422796,0.19044539332389832 +0.1868588775396347,0.0009994113352149725,0.1868588775396347,4049.0,68,2025-10-18 04:40:08.009617,,,,,,,,, +,,,,68,2025-10-18 04:44:13.773064,0.1856953650712967,0.00212055048905313,0.1856953650712967,0.19324658811092377,0.002152994042262435,0.19324658811092377,,, +,,,,68,2025-10-18 04:45:01.997576,,,,,,,0.18771237134933472,0.002692437032237649,0.18771237134933472 +0.18510140478610992,0.0013438165187835693,0.18510140478610992,4099.0,69,2025-10-18 04:47:41.677260,,,,,,,,, +,,,,69,2025-10-18 04:53:22.391277,0.18658432364463806,0.0018662954680621624,0.18658432364463806,0.2025790512561798,0.0016743239248171449,0.2025790512561798,,, +,,,,69,2025-10-18 04:53:48.781272,,,,,,,0.19340920448303223,0.0026264230255037546,0.19340920448303223 +0.17326697707176208,0.0010817676084116101,0.17326697707176208,4149.0,70,2025-10-18 04:55:29.728989,,,,,,,,, +0.17491793632507324,0.002353440271690488,0.17491793632507324,4199.0,70,2025-10-18 05:00:34.776058,,,,,,,,, +,,,,70,2025-10-18 05:02:11.384036,0.19130699336528778,0.001773655298165977,0.19130699336528778,0.18616366386413574,0.002554301405325532,0.18616366386413574,,, +,,,,70,2025-10-18 05:03:02.074855,,,,,,,0.19114439189434052,0.002894744509831071,0.19114439189434052 +0.19811885058879852,0.004161306656897068,0.19811885058879852,4249.0,71,2025-10-18 05:08:41.196638,,,,,,,,, +,,,,71,2025-10-18 05:10:55.062628,0.19756639003753662,0.002364070387557149,0.19756639003753662,0.19493937492370605,0.004136176314204931,0.19493937492370605,,, +,,,,71,2025-10-18 05:11:44.969355,,,,,,,0.18775351345539093,0.002598716877400875,0.18775351345539093 +0.16312317550182343,0.0012205889215692878,0.16312317550182343,4299.0,72,2025-10-18 05:16:27.471676,,,,,,,,, +,,,,72,2025-10-18 05:19:45.037830,0.18289251625537872,0.0015096567803993821,0.18289251625537872,0.19469867646694183,0.0024184321518987417,0.19469867646694183,,, +,,,,72,2025-10-18 05:20:35.370498,,,,,,,0.185288667678833,0.002429485786706209,0.185288667678833 +0.1493738442659378,0.001195352990180254,0.1493738442659378,4349.0,73,2025-10-18 05:24:41.754819,,,,,,,,, +,,,,73,2025-10-18 05:28:55.705715,0.18632923066616058,0.002633278025314212,0.18632923066616058,0.19686782360076904,0.0030632202979177237,0.19686782360076904,,, +,,,,73,2025-10-18 05:29:21.634595,,,,,,,0.18819287419319153,0.002577962586656213,0.18819287419319153 +0.20945720374584198,0.004527183249592781,0.20945720374584198,4399.0,74,2025-10-18 05:32:13.123254,,,,,,,,, +,,,,74,2025-10-18 05:37:42.304167,0.1936260312795639,0.0037772529758512974,0.1936260312795639,0.18864475190639496,0.0032450491562485695,0.18864475190639496,,, +,,,,74,2025-10-18 05:38:31.970783,,,,,,,0.1911189705133438,0.0025617782957851887,0.1911189705133438 +0.20437519252300262,0.004011299926787615,0.20437519252300262,4449.0,75,2025-10-18 05:40:21.533071,,,,,,,,, +0.16471369564533234,0.0015785167925059795,0.16471369564533234,4499.0,75,2025-10-18 05:44:51.208096,,,,,,,,, +,,,,75,2025-10-18 05:46:26.687654,0.18515098094940186,0.00235356786288321,0.18515098094940186,0.1932467520236969,0.0032488303259015083,0.1932467520236969,,, +,,,,75,2025-10-18 05:46:53.135651,,,,,,,0.18567782640457153,0.0026197016704827547,0.18567782640457153 +0.18382538855075836,0.0033964384347200394,0.18382538855075836,4549.0,76,2025-10-18 05:52:20.789409,,,,,,,,, +,,,,76,2025-10-18 05:54:35.727041,0.18125410377979279,0.0036767793353646994,0.18125410377979279,0.18015478551387787,0.002569057047367096,0.18015478551387787,,, +,,,,76,2025-10-18 05:55:27.299709,,,,,,,0.18520772457122803,0.0024684430100023746,0.18520772457122803 +0.20149452984333038,0.004407274071127176,0.20149452984333038,4599.0,77,2025-10-18 06:00:15.887270,,,,,,,,, +,,,,77,2025-10-18 06:03:17.228466,0.175491601228714,0.002817924600094557,0.175491601228714,0.18717089295387268,0.0024689428973942995,0.18717089295387268,,, +,,,,77,2025-10-18 06:04:07.844878,,,,,,,0.18560312688350677,0.0025352423544973135,0.18560312688350677 +0.21743783354759216,0.00543285021558404,0.21743783354759216,4649.0,78,2025-10-18 06:08:03.216530,,,,,,,,, +,,,,78,2025-10-18 06:11:55.524289,0.17655576765537262,0.0025818387512117624,0.17655576765537262,0.1917823851108551,0.0023716844152659178,0.1917823851108551,,, +,,,,78,2025-10-18 06:12:21.695373,,,,,,,0.18426556885242462,0.002437929855659604,0.18426556885242462 +0.19944483041763306,0.006392173934727907,0.19944483041763306,4699.0,79,2025-10-18 06:15:08.436179,,,,,,,,, +,,,,79,2025-10-18 06:20:21.869540,0.1686936318874359,0.0023284514900296926,0.1686936318874359,0.18027961254119873,0.0027430024929344654,0.18027961254119873,,, +,,,,79,2025-10-18 06:21:12.499023,,,,,,,0.1806134283542633,0.002530767349526286,0.1806134283542633 +0.20598258078098297,0.004284437280148268,0.20598258078098297,4749.0,80,2025-10-18 06:22:55.606274,,,,,,,,, +0.1732981652021408,0.0042785415425896645,0.1732981652021408,4799.0,80,2025-10-18 06:28:07.345441,,,,,,,,, +,,,,80,2025-10-18 06:29:43.127047,0.18031397461891174,0.003705056617036462,0.18031397461891174,0.19116835296154022,0.0032082891557365656,0.19116835296154022,,, +,,,,80,2025-10-18 06:30:09.569262,,,,,,,0.18657496571540833,0.0025408086366951466,0.18657496571540833 +0.18683169782161713,0.0053628128953278065,0.18683169782161713,4849.0,81,2025-10-18 06:35:48.124480,,,,,,,,, +,,,,81,2025-10-18 06:38:01.785133,0.17645175755023956,0.00272378115914762,0.17645175755023956,0.1851380467414856,0.003693275386467576,0.1851380467414856,,, +,,,,81,2025-10-18 06:38:49.791439,,,,,,,0.18139024078845978,0.0023522113915532827,0.18139024078845978 +0.20253896713256836,0.0016025828663259745,0.20253896713256836,4899.0,82,2025-10-18 06:43:42.573646,,,,,,,,, +,,,,82,2025-10-18 06:47:04.937349,0.1917484551668167,0.003423494752496481,0.1917484551668167,0.1806086301803589,0.002570789773017168,0.1806086301803589,,, +,,,,82,2025-10-18 06:47:55.007085,,,,,,,0.18341965973377228,0.002405470469966531,0.18341965973377228 +0.2080352008342743,0.0017673297552391887,0.2080352008342743,4949.0,83,2025-10-18 06:51:39.412073,,,,,,,,, +,,,,83,2025-10-18 06:55:55.765631,0.17480282485485077,0.0014565266901627183,0.17480282485485077,0.18201352655887604,0.003166571957990527,0.18201352655887604,,, +,,,,83,2025-10-18 06:56:21.388816,,,,,,,0.17735038697719574,0.0022337394766509533,0.17735038697719574 +0.2101706862449646,0.002667537657544017,0.2101706862449646,4999.0,84,2025-10-18 06:59:10.742883,,,,,,,,, +,,,,84,2025-10-18 07:04:19.439763,0.1720127910375595,0.0023882926907390356,0.1720127910375595,0.18660059571266174,0.003059469163417816,0.18660059571266174,,, +,,,,84,2025-10-18 07:04:46.335430,,,,,,,0.18224850296974182,0.002788908313959837,0.18224850296974182 +0.1698320060968399,0.0011939345858991146,0.1698320060968399,5049.0,85,2025-10-18 07:06:36.640655,,,,,,,,, +0.15668515861034393,0.003209889866411686,0.15668515861034393,5099.0,85,2025-10-18 07:11:25.991816,,,,,,,,, +,,,,85,2025-10-18 07:13:00.795396,0.18343742191791534,0.002341214567422867,0.18343742191791534,0.19996778666973114,0.0036484457086771727,0.19996778666973114,,, +,,,,85,2025-10-18 07:13:27.392694,,,,,,,0.1808822602033615,0.0027392932679504156,0.1808822602033615 +0.177274689078331,0.0014107093447819352,0.177274689078331,5149.0,86,2025-10-18 07:19:10.500931,,,,,,,,, +,,,,86,2025-10-18 07:21:47.951378,0.18336796760559082,0.00318700703792274,0.18336796760559082,0.18324892222881317,0.0017883412074297667,0.18324892222881317,,, +,,,,86,2025-10-18 07:22:13.710215,,,,,,,0.17798539996147156,0.0023747230879962444,0.17798539996147156 +0.196222186088562,0.0015584399225190282,0.196222186088562,5199.0,87,2025-10-18 07:26:57.110942,,,,,,,,, +,,,,87,2025-10-18 07:30:10.176674,0.18179269134998322,0.003373428015038371,0.18179269134998322,0.17732024192810059,0.0021609789691865444,0.17732024192810059,,, +,,,,87,2025-10-18 07:31:00.627550,,,,,,,0.18476688861846924,0.0023912901524454355,0.18476688861846924 +0.1554459035396576,0.0011493558995425701,0.1554459035396576,5249.0,88,2025-10-18 07:34:51.987243,,,,,,,,, +,,,,88,2025-10-18 07:39:08.803570,0.1843545138835907,0.0038612759672105312,0.1843545138835907,0.18191345036029816,0.0024607095401734114,0.18191345036029816,,, +,,,,88,2025-10-18 07:39:36.799018,,,,,,,0.1806844025850296,0.0025544629897922277,0.1806844025850296 +0.153298020362854,0.0012430265778675675,0.153298020362854,5299.0,89,2025-10-18 07:42:29.119928,,,,,,,,, +,,,,89,2025-10-18 07:47:38.495783,0.1802721470594406,0.0015729917213320732,0.1802721470594406,0.19310085475444794,0.003749428316950798,0.19310085475444794,,, +,,,,89,2025-10-18 07:48:03.508794,,,,,,,0.17652373015880585,0.0027389887254685163,0.17652373015880585 +0.22373123466968536,0.003251126268878579,0.22373123466968536,5349.0,90,2025-10-18 07:49:52.504968,,,,,,,,, +0.1593894362449646,0.0037713204510509968,0.1593894362449646,5399.0,90,2025-10-18 07:54:35.251648,,,,,,,,, +,,,,90,2025-10-18 07:56:09.359331,0.17252539098262787,0.0018146161455661058,0.17252539098262787,0.19305123388767242,0.002809744793921709,0.19305123388767242,,, +,,,,90,2025-10-18 07:56:36.132741,,,,,,,0.18063762784004211,0.002593464683741331,0.18063762784004211 +0.16924966871738434,0.0011165793985128403,0.16924966871738434,5449.0,91,2025-10-18 08:02:43.039500,,,,,,,,, +,,,,91,2025-10-18 08:04:56.424643,0.16332626342773438,0.001471026218496263,0.16332626342773438,0.17951533198356628,0.0012712122406810522,0.17951533198356628,,, +,,,,91,2025-10-18 08:05:47.566748,,,,,,,0.17375291883945465,0.002019150648266077,0.17375291883945465 +0.19832336902618408,0.0020403098315000534,0.19832336902618408,5499.0,92,2025-10-18 08:10:27.746576,,,,,,,,, +,,,,92,2025-10-18 08:14:01.391984,0.1717744618654251,0.0018647292163223028,0.1717744618654251,0.18355309963226318,0.0020729016978293657,0.18355309963226318,,, +,,,,92,2025-10-18 08:14:27.756604,,,,,,,0.17835327982902527,0.002543508308008313,0.17835327982902527 +0.1797863245010376,0.002311095129698515,0.1797863245010376,5549.0,93,2025-10-18 08:18:21.848990,,,,,,,,, +,,,,93,2025-10-18 08:22:27.147296,0.17713458836078644,0.003995425999164581,0.17713458836078644,0.17992019653320312,0.002814964856952429,0.17992019653320312,,, +,,,,93,2025-10-18 08:23:15.615723,,,,,,,0.17966312170028687,0.0023665798362344503,0.17966312170028687 +0.16845905780792236,0.0016502956859767437,0.16845905780792236,5599.0,94,2025-10-18 08:26:18.408073,,,,,,,,, +,,,,94,2025-10-18 08:31:18.451360,0.17856675386428833,0.0035357442684471607,0.17856675386428833,0.19165387749671936,0.0030843077693134546,0.19165387749671936,,, +,,,,94,2025-10-18 08:31:44.781734,,,,,,,0.17780251801013947,0.0026183186564594507,0.17780251801013947 +0.17773810029029846,0.004060032311826944,0.17773810029029846,5649.0,95,2025-10-18 08:33:39.710146,,,,,,,,, +0.1671465039253235,0.0010988867143169045,0.1671465039253235,5699.0,95,2025-10-18 08:38:07.576148,,,,,,,,, +,,,,95,2025-10-18 08:39:44.433016,0.16989147663116455,0.0012784198625013232,0.16989147663116455,0.18053166568279266,0.002395572606474161,0.18053166568279266,,, +,,,,95,2025-10-18 08:40:10.486595,,,,,,,0.17961160838603973,0.0024606974329799414,0.17961160838603973 +0.17619146406650543,0.0016579540679231286,0.17619146406650543,5749.0,96,2025-10-18 08:45:54.770266,,,,,,,,, +,,,,96,2025-10-18 08:48:07.206470,0.17711393535137177,0.003208527574315667,0.17711393535137177,0.17124444246292114,0.0020712020341306925,0.17124444246292114,,, +,,,,96,2025-10-18 08:48:55.124104,,,,,,,0.17568327486515045,0.002450915751978755,0.17568327486515045 +0.18246321380138397,0.0014010871527716517,0.18246321380138397,5799.0,97,2025-10-18 08:53:50.755117,,,,,,,,, +,,,,97,2025-10-18 08:57:02.643997,0.18292438983917236,0.0025653394404798746,0.18292438983917236,0.18542182445526123,0.002706291386857629,0.18542182445526123,,, +,,,,97,2025-10-18 08:57:29.224278,,,,,,,0.1762818545103073,0.002168842125684023,0.1762818545103073 +0.18585479259490967,0.002605630550533533,0.18585479259490967,5849.0,98,2025-10-18 09:01:23.726737,,,,,,,,, +,,,,98,2025-10-18 09:05:38.559739,0.1839010864496231,0.002164872596040368,0.1839010864496231,0.18755683302879333,0.002614654367789626,0.18755683302879333,,, +,,,,98,2025-10-18 09:06:05.983640,,,,,,,0.17731009423732758,0.0026351872365921736,0.17731009423732758 +0.17623157799243927,0.003666551550850272,0.17623157799243927,5899.0,99,2025-10-18 09:09:00.556746,,,,,,,,, +,,,,99,2025-10-18 09:14:21.053045,0.1879875659942627,0.003576797666028142,0.1879875659942627,0.17991013824939728,0.0017473739571869373,0.17991013824939728,,, +,,,,99,2025-10-18 09:14:47.711544,,,,,,,0.17612342536449432,0.0024689713027328253,0.17612342536449432 +0.1805044412612915,0.005968304350972176,0.1805044412612915,5949.0,100,2025-10-18 09:16:42.188915,,,,,,,,, +0.17047424614429474,0.001277106930501759,0.17047424614429474,5999.0,100,2025-10-18 09:21:04.014293,,,,,,,,, +,,,,100,2025-10-18 09:22:35.673619,0.18516108393669128,0.0029795714654028416,0.18516108393669128,0.17676395177841187,0.002453140914440155,0.17676395177841187,,, +,,,,100,2025-10-18 09:23:25.831220,,,,,,,0.17648904025554657,0.002569828648120165,0.17648904025554657 +0.1783033013343811,0.0012169088004156947,0.1783033013343811,6049.0,101,2025-10-18 09:29:17.580192,,,,,,,,, +,,,,101,2025-10-18 09:31:29.769583,0.18405188620090485,0.002314919838681817,0.18405188620090485,0.17661252617835999,0.0014374902239069343,0.17661252617835999,,, +,,,,101,2025-10-18 09:32:20.791682,,,,,,,0.17698870599269867,0.002425799611955881,0.17698870599269867 +0.1974811553955078,0.004126871936023235,0.1974811553955078,6099.0,102,2025-10-18 09:37:09.680367,,,,,,,,, +,,,,102,2025-10-18 09:40:29.372696,0.17857052385807037,0.002289524534717202,0.17857052385807037,0.18090634047985077,0.0026479107327759266,0.18090634047985077,,, +,,,,102,2025-10-18 09:40:56.207373,,,,,,,0.18060828745365143,0.0028030388057231903,0.18060828745365143 +0.18207214772701263,0.0012188531691208482,0.18207214772701263,6149.0,103,2025-10-18 09:44:49.065940,,,,,,,,, +,,,,103,2025-10-18 09:49:07.155311,0.16932916641235352,0.002481185831129551,0.16932916641235352,0.1749330759048462,0.002627013251185417,0.1749330759048462,,, +,,,,103,2025-10-18 09:55:52.528456,,,,,,,0.17521658539772034,0.0024940099101513624,0.17521658539772034 +0.18633468449115753,0.004846561700105667,0.18633468449115753,6199.0,104,2025-10-18 09:58:38.279126,,,,,,,,, +,,,,104,2025-10-18 10:03:47.432999,0.1748490184545517,0.0028746076859533787,0.1748490184545517,0.18405644595623016,0.0025815211702138186,0.18405644595623016,,, +,,,,104,2025-10-18 10:04:14.417865,,,,,,,0.17498615384101868,0.0023632454685866833,0.17498615384101868 +0.1773466020822525,0.001143951085396111,0.1773466020822525,6249.0,105,2025-10-18 10:06:08.995897,,,,,,,,, +0.19046519696712494,0.0013286569155752659,0.19046519696712494,6299.0,105,2025-10-18 10:11:04.831325,,,,,,,,, +,,,,105,2025-10-18 10:12:38.050834,0.1829911768436432,0.0023360238410532475,0.1829911768436432,0.1823187619447708,0.001771946088410914,0.1823187619447708,,, +,,,,105,2025-10-18 10:13:05.386033,,,,,,,0.17538046836853027,0.002522313967347145,0.17538046836853027 +0.15407170355319977,0.005277747754007578,0.15407170355319977,6349.0,106,2025-10-18 10:18:52.022319,,,,,,,,, +,,,,106,2025-10-18 10:21:08.033689,0.1654454618692398,0.002876153215765953,0.1654454618692398,0.18762068450450897,0.002570732031017542,0.18762068450450897,,, +,,,,106,2025-10-18 10:21:34.167626,,,,,,,0.17258858680725098,0.0023799759801477194,0.17258858680725098 +0.1923709511756897,0.0026607264298945665,0.1923709511756897,6399.0,107,2025-10-18 10:26:33.188523,,,,,,,,, +,,,,107,2025-10-18 10:29:48.734338,0.17419452965259552,0.0022990424185991287,0.17419452965259552,0.18374621868133545,0.0016591151943430305,0.18374621868133545,,, +,,,,107,2025-10-18 10:30:13.952063,,,,,,,0.17369087040424347,0.0023409731220453978,0.17369087040424347 +0.16753670573234558,0.001375705935060978,0.16753670573234558,6449.0,108,2025-10-18 10:34:07.520846,,,,,,,,, +,,,,108,2025-10-18 10:38:11.178019,0.18394556641578674,0.0026317283045500517,0.18394556641578674,0.17505113780498505,0.0021565731149166822,0.17505113780498505,,, +,,,,108,2025-10-18 10:39:00.052126,,,,,,,0.17263810336589813,0.0025550860445946455,0.17263810336589813 +0.15126565098762512,0.0010071357246488333,0.15126565098762512,6499.0,109,2025-10-18 10:41:58.683028,,,,,,,,, +,,,,109,2025-10-18 10:48:20.502582,0.17484167218208313,0.004107159096747637,0.17484167218208313,0.17438800632953644,0.0032225782051682472,0.17438800632953644,,, +,,,,109,2025-10-18 10:49:10.504822,,,,,,,0.17358839511871338,0.002452238230034709,0.17358839511871338 +0.17564909160137177,0.0035945356357842684,0.17564909160137177,6549.0,110,2025-10-18 10:50:58.780656,,,,,,,,, +0.1639041304588318,0.0015673087909817696,0.1639041304588318,6599.0,110,2025-10-18 10:55:33.746214,,,,,,,,, +,,,,110,2025-10-18 10:57:12.685632,0.1741992086172104,0.0016357743879780173,0.1741992086172104,0.16892419755458832,0.0018792655318975449,0.16892419755458832,,, +,,,,110,2025-10-18 10:58:01.120158,,,,,,,0.17121826112270355,0.002193381544202566,0.17121826112270355 +0.16612879931926727,0.001206984743475914,0.16612879931926727,6649.0,111,2025-10-18 11:03:46.718839,,,,,,,,, +,,,,111,2025-10-18 11:06:01.481756,0.16160066425800323,0.002661467995494604,0.16160066425800323,0.18038605153560638,0.0021932250820100307,0.18038605153560638,,, +,,,,111,2025-10-18 11:06:28.953782,,,,,,,0.1763359010219574,0.0025903487112373114,0.1763359010219574 +0.1762801855802536,0.0013615116477012634,0.1762801855802536,6699.0,112,2025-10-18 11:10:55.075041,,,,,,,,, +,,,,112,2025-10-18 11:14:23.483130,0.17138171195983887,0.0025363052263855934,0.17138171195983887,0.18420575559139252,0.0024249416310340166,0.18420575559139252,,, +,,,,112,2025-10-18 11:14:50.278860,,,,,,,0.1742706149816513,0.002519201021641493,0.1742706149816513 +0.16278719902038574,0.001543886144645512,0.16278719902038574,6749.0,113,2025-10-18 11:18:42.075946,,,,,,,,, +,,,,113,2025-10-18 11:23:30.115268,0.17829197645187378,0.0015082915779203176,0.17829197645187378,0.18738003075122833,0.0033843384589999914,0.18738003075122833,,, +,,,,113,2025-10-18 11:23:55.433553,,,,,,,0.17080558836460114,0.002371022244915366,0.17080558836460114 +0.2041165977716446,0.0015238416381180286,0.2041165977716446,6799.0,114,2025-10-18 11:27:09.642855,,,,,,,,, +,,,,114,2025-10-18 11:31:58.491871,0.17893154919147491,0.0038403146900236607,0.17893154919147491,0.17192517220973969,0.0034335050731897354,0.17192517220973969,,, +,,,,114,2025-10-18 11:32:48.289042,,,,,,,0.17211444675922394,0.0022412030957639217,0.17211444675922394 +0.17170065641403198,0.0014765487285330892,0.17170065641403198,6849.0,115,2025-10-18 11:34:36.274137,,,,,,,,, +0.17514397203922272,0.0026930368039757013,0.17514397203922272,6899.0,115,2025-10-18 11:38:54.809178,,,,,,,,, +,,,,115,2025-10-18 11:40:31.777255,0.18204158544540405,0.0018860404379665852,0.18204158544540405,0.17897535860538483,0.003398734610527754,0.17897535860538483,,, +,,,,115,2025-10-18 11:40:58.820449,,,,,,,0.17177370190620422,0.0027314152102917433,0.17177370190620422 +0.16638854146003723,0.0050869295373559,0.16638854146003723,6949.0,116,2025-10-18 11:47:09.489682,,,,,,,,, +,,,,116,2025-10-18 11:49:22.453644,0.15861719846725464,0.0014020303497090936,0.15861719846725464,0.17157679796218872,0.002218849491328001,0.17157679796218872,,, +,,,,116,2025-10-18 11:50:14.050629,,,,,,,0.16946446895599365,0.0022948049008846283,0.16946446895599365 +0.17118790745735168,0.0024756111670285463,0.17118790745735168,6999.0,117,2025-10-18 11:54:57.620061,,,,,,,,, +,,,,117,2025-10-18 11:58:12.926143,0.17102721333503723,0.0018427062314003706,0.17102721333503723,0.17322663962841034,0.001796266995370388,0.17322663962841034,,, +,,,,117,2025-10-18 11:58:38.514255,,,,,,,0.1715303212404251,0.0026813384611159563,0.1715303212404251 +0.15647916495800018,0.001232801703736186,0.15647916495800018,7049.0,118,2025-10-18 12:02:34.553159,,,,,,,,, +,,,,118,2025-10-18 12:06:48.110227,0.1758507937192917,0.002102993428707123,0.1758507937192917,0.16941022872924805,0.0018821354024112225,0.16941022872924805,,, +,,,,118,2025-10-18 12:07:37.627630,,,,,,,0.1689211130142212,0.0021793111227452755,0.1689211130142212 +0.1901557892560959,0.0024711203295737505,0.1901557892560959,7099.0,119,2025-10-18 12:10:32.433714,,,,,,,,, +,,,,119,2025-10-18 12:15:50.851330,0.180788055062294,0.002413488458842039,0.180788055062294,0.17366500198841095,0.0024850217159837484,0.17366500198841095,,, +,,,,119,2025-10-18 12:16:17.712084,,,,,,,0.17172786593437195,0.002421002835035324,0.17172786593437195 +0.18710234761238098,0.0012440060963854194,0.18710234761238098,7149.0,120,2025-10-18 12:18:08.276822,,,,,,,,, +0.19569838047027588,0.005368697922676802,0.19569838047027588,7199.0,120,2025-10-18 12:22:52.346156,,,,,,,,, +,,,,120,2025-10-18 12:24:31.539224,0.17546704411506653,0.0017182828160002828,0.17546704411506653,0.18216823041439056,0.0023424546234309673,0.18216823041439056,,, +,,,,120,2025-10-18 12:24:58.256853,,,,,,,0.17274795472621918,0.0022482224740087986,0.17274795472621918 +0.17331336438655853,0.0030380163807421923,0.17331336438655853,7249.0,121,2025-10-18 12:30:59.224130,,,,,,,,, +,,,,121,2025-10-18 12:33:13.969089,0.16912756860256195,0.002241648267954588,0.16912756860256195,0.18245260417461395,0.0030680582858622074,0.18245260417461395,,, +,,,,121,2025-10-18 12:33:41.016486,,,,,,,0.1682157963514328,0.002576251048594713,0.1682157963514328 +0.20290511846542358,0.006192746572196484,0.20290511846542358,7299.0,122,2025-10-18 12:38:09.529585,,,,,,,,, +,,,,122,2025-10-18 12:41:32.603803,0.17242291569709778,0.0029262497555464506,0.17242291569709778,0.17693749070167542,0.003419149201363325,0.17693749070167542,,, +,,,,122,2025-10-18 12:42:01.143018,,,,,,,0.17146463692188263,0.002454679226502776,0.17146463692188263 +0.16030476987361908,0.0019367762142792344,0.16030476987361908,7349.0,123,2025-10-18 12:46:09.245862,,,,,,,,, +,,,,123,2025-10-18 12:50:27.823474,0.17914599180221558,0.0020401664078235626,0.17914599180221558,0.19086749851703644,0.0030305664986371994,0.19086749851703644,,, +,,,,123,2025-10-18 12:50:54.659012,,,,,,,0.1681680530309677,0.0024411641061306,0.1681680530309677 +0.18882454931735992,0.0022767737973481417,0.18882454931735992,7399.0,124,2025-10-18 12:53:36.458109,,,,,,,,, +,,,,124,2025-10-18 12:58:58.353374,0.1688634157180786,0.0028244638815522194,0.1688634157180786,0.1675577014684677,0.0014679256128147244,0.1675577014684677,,, +,,,,124,2025-10-18 12:59:49.789749,,,,,,,0.17099381983280182,0.0025067590177059174,0.17099381983280182 +0.16407403349876404,0.0013407047372311354,0.16407403349876404,7449.0,125,2025-10-18 13:01:43.572760,,,,,,,,, +0.19242437183856964,0.004220108035951853,0.19242437183856964,7499.0,125,2025-10-18 13:06:03.563628,,,,,,,,, +,,,,125,2025-10-18 13:07:39.996430,0.17762631177902222,0.0024607141967862844,0.17762631177902222,0.16475296020507812,0.0015977530274540186,0.16475296020507812,,, +,,,,125,2025-10-18 13:08:29.615110,,,,,,,0.17141970992088318,0.00269533833488822,0.17141970992088318 +0.1381797343492508,0.000740273913834244,0.1381797343492508,7549.0,126,2025-10-18 13:14:27.229537,,,,,,,,, +,,,,126,2025-10-18 13:16:45.347608,0.17360708117485046,0.0021172072738409042,0.17360708117485046,0.17631962895393372,0.002646936569362879,0.17631962895393372,,, +,,,,126,2025-10-18 13:17:12.395276,,,,,,,0.1682378649711609,0.00252777012065053,0.1682378649711609 +0.14821754395961761,0.0009561408078297973,0.14821754395961761,7599.0,127,2025-10-18 13:22:12.769879,,,,,,,,, +,,,,127,2025-10-18 13:25:16.632085,0.17359603941440582,0.0018532039830461144,0.17359603941440582,0.18380558490753174,0.004970822483301163,0.18380558490753174,,, +,,,,127,2025-10-18 13:25:42.958435,,,,,,,0.16888427734375,0.002146107843145728,0.16888427734375 +0.16450700163841248,0.004860864486545324,0.16450700163841248,7649.0,128,2025-10-18 13:29:30.542909,,,,,,,,, +,,,,128,2025-10-18 13:33:44.710685,0.17963305115699768,0.0028534550219774246,0.17963305115699768,0.17926722764968872,0.0033028656616806984,0.17926722764968872,,, +,,,,128,2025-10-18 13:34:11.523579,,,,,,,0.1694229245185852,0.0026859466452151537,0.1694229245185852 +0.17557667195796967,0.0012909494107589126,0.17557667195796967,7699.0,129,2025-10-18 13:37:13.725185,,,,,,,,, +,,,,129,2025-10-18 13:42:20.063941,0.1709597259759903,0.001870111096650362,0.1709597259759903,0.17332200706005096,0.0018417357932776213,0.17332200706005096,,, +,,,,129,2025-10-18 13:42:45.888145,,,,,,,0.17081373929977417,0.0022764939349144697,0.17081373929977417 +0.20994704961776733,0.006640206556767225,0.20994704961776733,7749.0,130,2025-10-18 13:44:38.309465,,,,,,,,, +0.16567811369895935,0.004631178453564644,0.16567811369895935,7799.0,130,2025-10-18 13:49:18.341390,,,,,,,,, +,,,,130,2025-10-18 13:50:56.652059,0.17296558618545532,0.004543570335954428,0.17296558618545532,0.15698517858982086,0.0018252242589369416,0.15698517858982086,,, +,,,,130,2025-10-18 13:51:46.833727,,,,,,,0.16777144372463226,0.0025284455623477697,0.16777144372463226 +0.19937947392463684,0.003603039775043726,0.19937947392463684,7849.0,131,2025-10-18 13:58:10.338814,,,,,,,,, +,,,,131,2025-10-18 14:00:28.342074,0.15737959742546082,0.002662399085238576,0.15737959742546082,0.1641150265932083,0.003181211184710264,0.1641150265932083,,, +,,,,131,2025-10-18 14:01:17.384529,,,,,,,0.17002935707569122,0.0026250940281897783,0.17002935707569122 +0.19037160277366638,0.0026484315749257803,0.19037160277366638,7899.0,132,2025-10-18 14:06:26.820417,,,,,,,,, +,,,,132,2025-10-18 14:09:37.188237,0.16811063885688782,0.002534579485654831,0.16811063885688782,0.1740059107542038,0.0030527806375175714,0.1740059107542038,,, +,,,,132,2025-10-18 14:10:04.621118,,,,,,,0.16731572151184082,0.0022469039540737867,0.16731572151184082 +0.16734205186367035,0.003596400609239936,0.16734205186367035,7949.0,133,2025-10-18 14:14:29.162554,,,,,,,,, +,,,,133,2025-10-18 14:18:41.377734,0.17310088872909546,0.0022106748074293137,0.17310088872909546,0.17946235835552216,0.0036214345600456,0.17946235835552216,,, +,,,,133,2025-10-18 14:19:08.921190,,,,,,,0.17093539237976074,0.00262367632240057,0.17093539237976074 +0.16218458116054535,0.0010143123799934983,0.16218458116054535,7999.0,134,2025-10-18 14:22:29.356254,,,,,,,,, +,,,,134,2025-10-18 14:27:15.818488,0.16984130442142487,0.002622271189466119,0.16984130442142487,0.17139151692390442,0.0032581468112766743,0.17139151692390442,,, +,,,,134,2025-10-18 14:27:46.411901,,,,,,,0.16836290061473846,0.0020440525840967894,0.16836290061473846 +0.15093620121479034,0.0022425223141908646,0.15093620121479034,8049.0,135,2025-10-18 14:29:42.501583,,,,,,,,, +0.14134162664413452,0.0007607368170283735,0.14134162664413452,8099.0,135,2025-10-18 14:34:28.047507,,,,,,,,, +,,,,135,2025-10-18 14:36:02.641138,0.16274602711200714,0.0012524665798991919,0.16274602711200714,0.17715278267860413,0.0035555383656173944,0.17715278267860413,,, +,,,,135,2025-10-18 14:36:29.664696,,,,,,,0.1689552366733551,0.002120306948199868,0.1689552366733551 +0.16062809526920319,0.0009643124067224562,0.16062809526920319,8149.0,136,2025-10-18 14:43:01.271786,,,,,,,,, +,,,,136,2025-10-18 14:45:16.916070,0.1574620008468628,0.0018672521691769361,0.1574620008468628,0.1671031266450882,0.002301909029483795,0.1671031266450882,,, +,,,,136,2025-10-18 14:45:43.366562,,,,,,,0.163297638297081,0.0021673962473869324,0.163297638297081 +0.19146260619163513,0.002446930855512619,0.19146260619163513,8199.0,137,2025-10-18 14:50:58.216417,,,,,,,,, +,,,,137,2025-10-18 14:54:14.398687,0.17851755023002625,0.0027787848375737667,0.17851755023002625,0.16508054733276367,0.0021053440868854523,0.16508054733276367,,, +,,,,137,2025-10-18 14:54:41.307551,,,,,,,0.16884775459766388,0.0023110939655452967,0.16884775459766388 +0.1675911396741867,0.002372484654188156,0.1675911396741867,8249.0,138,2025-10-18 14:58:53.375590,,,,,,,,, +,,,,138,2025-10-18 15:03:04.051511,0.1647021770477295,0.0013637867523357272,0.1647021770477295,0.1640520542860031,0.001614785403944552,0.1640520542860031,,, +,,,,138,2025-10-18 15:03:52.911153,,,,,,,0.16990602016448975,0.0024826480075716972,0.16990602016448975 +0.16947630047798157,0.001289917971007526,0.16947630047798157,8299.0,139,2025-10-18 15:06:48.896692,,,,,,,,, +,,,,139,2025-10-18 15:12:24.120143,0.16882732510566711,0.0022268579341471195,0.16882732510566711,0.17508356273174286,0.0035439063794910908,0.17508356273174286,,, +,,,,139,2025-10-18 15:12:51.479238,,,,,,,0.16813024878501892,0.002450366038829088,0.16813024878501892 +0.16669541597366333,0.003690693760290742,0.16669541597366333,8349.0,140,2025-10-18 15:14:37.666048,,,,,,,,, +0.16206659376621246,0.0011848964495584369,0.16206659376621246,8399.0,140,2025-10-18 15:19:39.158852,,,,,,,,, +,,,,140,2025-10-18 15:21:14.606778,0.1718534678220749,0.0020619819406419992,0.1718534678220749,0.16899333894252777,0.0023428292479366064,0.16899333894252777,,, +,,,,140,2025-10-18 15:21:39.856255,,,,,,,0.16647711396217346,0.0023990117479115725,0.16647711396217346 +0.14501120150089264,0.0008775520836934447,0.14501120150089264,8449.0,141,2025-10-18 15:27:36.811854,,,,,,,,, +,,,,141,2025-10-18 15:29:46.669541,0.16284707188606262,0.001784048625268042,0.16284707188606262,0.1734786182641983,0.004054360091686249,0.1734786182641983,,, +,,,,141,2025-10-18 15:30:13.968985,,,,,,,0.16770529747009277,0.0025696787051856518,0.16770529747009277 +0.15844494104385376,0.0009282383834943175,0.15844494104385376,8499.0,142,2025-10-18 15:35:24.972917,,,,,,,,, +,,,,142,2025-10-18 15:38:37.630893,0.17092858254909515,0.0021121902391314507,0.17092858254909515,0.1665743887424469,0.0017486904980614781,0.1665743887424469,,, +,,,,142,2025-10-18 15:39:04.677432,,,,,,,0.16391228139400482,0.002413465641438961,0.16391228139400482 +0.16148987412452698,0.0023036873899400234,0.16148987412452698,8549.0,143,2025-10-18 15:42:54.997519,,,,,,,,, +,,,,143,2025-10-18 15:46:57.663136,0.17369437217712402,0.00237613869830966,0.17369437217712402,0.17214737832546234,0.002005875576287508,0.17214737832546234,,, +,,,,143,2025-10-18 15:47:24.508880,,,,,,,0.16797178983688354,0.00234835222363472,0.16797178983688354 +0.16738437116146088,0.0018455508397892118,0.16738437116146088,8599.0,144,2025-10-18 15:50:12.747858,,,,,,,,, +,,,,144,2025-10-18 15:55:31.659805,0.16212035715579987,0.0022749495692551136,0.16212035715579987,0.16841590404510498,0.002240775851532817,0.16841590404510498,,, +,,,,144,2025-10-18 15:55:58.056759,,,,,,,0.16492806375026703,0.002173844026401639,0.16492806375026703 +0.16014383733272552,0.004075023345649242,0.16014383733272552,8649.0,145,2025-10-18 15:57:52.145039,,,,,,,,, +0.15639816224575043,0.000899436476174742,0.15639816224575043,8699.0,145,2025-10-18 16:02:36.202076,,,,,,,,, +,,,,145,2025-10-18 16:04:12.607501,0.16379180550575256,0.00343183521181345,0.16379180550575256,0.17553074657917023,0.002196820452809334,0.17553074657917023,,, +,,,,145,2025-10-18 16:04:39.402943,,,,,,,0.16658130288124084,0.0023362571373581886,0.16658130288124084 +0.15639729797840118,0.0014757228782400489,0.15639729797840118,8749.0,146,2025-10-18 16:10:31.572966,,,,,,,,, +,,,,146,2025-10-18 16:12:50.192079,0.16374580562114716,0.0029360242187976837,0.16374580562114716,0.160316601395607,0.0013626556610688567,0.160316601395607,,, +,,,,146,2025-10-18 16:13:41.132943,,,,,,,0.16817283630371094,0.002375897252932191,0.16817283630371094 +0.18062113225460052,0.0022773027885705233,0.18062113225460052,8799.0,147,2025-10-18 16:18:39.937112,,,,,,,,, +,,,,147,2025-10-18 16:21:53.846686,0.1756197065114975,0.004172218963503838,0.1756197065114975,0.16552653908729553,0.002654873300343752,0.16552653908729553,,, +,,,,147,2025-10-18 16:22:20.965772,,,,,,,0.1688005030155182,0.002962264930829406,0.1688005030155182 +0.18705491721630096,0.0017661675810813904,0.18705491721630096,8849.0,148,2025-10-18 16:26:10.644940,,,,,,,,, +,,,,148,2025-10-18 16:30:09.513874,0.17052632570266724,0.0022772797383368015,0.17052632570266724,0.16632500290870667,0.0032139536924660206,0.16632500290870667,,, +,,,,148,2025-10-18 16:30:35.314041,,,,,,,0.16821229457855225,0.002255457453429699,0.16821229457855225 +0.17382121086120605,0.001373612554743886,0.17382121086120605,8899.0,149,2025-10-18 16:33:54.724365,,,,,,,,, +,,,,149,2025-10-18 16:39:33.858490,0.16812191903591156,0.001613133237697184,0.16812191903591156,0.18126967549324036,0.001665151328779757,0.18126967549324036,,, +,,,,149,2025-10-18 16:40:00.043973,,,,,,,0.16269323229789734,0.002054853131994605,0.16269323229789734 +0.15019221603870392,0.0019810835365206003,0.15019221603870392,8949.0,150,2025-10-18 16:41:54.019710,,,,,,,,, +0.17612537741661072,0.0023536861408501863,0.17612537741661072,8999.0,150,2025-10-18 16:46:26.374258,,,,,,,,, +,,,,150,2025-10-18 16:48:01.816275,0.17344777286052704,0.0015571427065879107,0.17344777286052704,0.160284623503685,0.0013145399279892445,0.160284623503685,,, +,,,,150,2025-10-18 16:48:53.503913,,,,,,,0.1661422848701477,0.002643811283633113,0.1661422848701477 +0.15977874398231506,0.0012608645483851433,0.15977874398231506,9049.0,151,2025-10-18 16:54:38.056148,,,,,,,,, +,,,,151,2025-10-18 16:56:51.527906,0.16948360204696655,0.002639501355588436,0.16948360204696655,0.16342777013778687,0.002349588554352522,0.16342777013778687,,, +,,,,151,2025-10-18 16:57:19.910305,,,,,,,0.16543357074260712,0.0024395338259637356,0.16543357074260712 +0.16790112853050232,0.004128747154027224,0.16790112853050232,9099.0,152,2025-10-18 17:02:28.457127,,,,,,,,, +,,,,152,2025-10-18 17:05:37.848101,0.16828517615795135,0.0021290292497724295,0.16828517615795135,0.16690072417259216,0.0022078484762459993,0.16690072417259216,,, +,,,,152,2025-10-18 17:06:04.932536,,,,,,,0.1701730191707611,0.002644902328029275,0.1701730191707611 +0.1723751425743103,0.0018969598459079862,0.1723751425743103,9149.0,153,2025-10-18 17:09:53.387467,,,,,,,,, +,,,,153,2025-10-18 17:13:57.879527,0.15335732698440552,0.0018044383032247424,0.15335732698440552,0.16801266372203827,0.003957069478929043,0.16801266372203827,,, +,,,,153,2025-10-18 17:14:22.884685,,,,,,,0.16578689217567444,0.002712177811190486,0.16578689217567444 +0.18760725855827332,0.0029388933908194304,0.18760725855827332,9199.0,154,2025-10-18 17:17:22.956648,,,,,,,,, +,,,,154,2025-10-18 17:22:28.332380,0.18074370920658112,0.0037226902786642313,0.18074370920658112,0.17603106796741486,0.0020559465046972036,0.17603106796741486,,, +,,,,154,2025-10-18 17:22:54.074328,,,,,,,0.16490837931632996,0.0025751388166099787,0.16490837931632996 +0.1918710321187973,0.0073611922562122345,0.1918710321187973,9249.0,155,2025-10-18 17:24:57.037193,,,,,,,,, +0.19398075342178345,0.001423787442035973,0.19398075342178345,9299.0,155,2025-10-18 17:29:44.612741,,,,,,,,, +,,,,155,2025-10-18 17:31:18.494294,0.17167413234710693,0.0019270686898380518,0.17167413234710693,0.17269200086593628,0.0029046249110251665,0.17269200086593628,,, +,,,,155,2025-10-18 17:31:44.144180,,,,,,,0.16376619040966034,0.002385938074439764,0.16376619040966034 +0.1824871003627777,0.00140847428701818,0.1824871003627777,9349.0,156,2025-10-18 17:37:45.752373,,,,,,,,, +,,,,156,2025-10-18 17:40:06.525300,0.17216180264949799,0.0030474502127617598,0.17216180264949799,0.16961167752742767,0.0024943500757217407,0.16961167752742767,,, +,,,,156,2025-10-18 17:40:31.721985,,,,,,,0.16566796600818634,0.0024654429871588945,0.16566796600818634 +0.17210158705711365,0.0037131875287741423,0.17210158705711365,9399.0,157,2025-10-18 17:45:25.427037,,,,,,,,, +,,,,157,2025-10-18 17:48:36.678709,0.1584700495004654,0.0024758067447692156,0.1584700495004654,0.17502158880233765,0.0028640986420214176,0.17502158880233765,,, +,,,,157,2025-10-18 17:49:02.550226,,,,,,,0.16377507150173187,0.002244860166683793,0.16377507150173187 +0.1441374123096466,0.0009606756502762437,0.1441374123096466,9449.0,158,2025-10-18 17:53:07.291799,,,,,,,,, +,,,,158,2025-10-18 17:57:15.083629,0.16964112222194672,0.0024223767686635256,0.16964112222194672,0.17716914415359497,0.0023955015931278467,0.17716914415359497,,, +,,,,158,2025-10-18 17:57:41.211828,,,,,,,0.16482090950012207,0.002435226459056139,0.16482090950012207 +0.17215265333652496,0.0018923330353572965,0.17215265333652496,9499.0,159,2025-10-18 18:00:41.957370,,,,,,,,, +,,,,159,2025-10-18 18:05:38.860936,0.16517218947410583,0.002250908175483346,0.16517218947410583,0.16438300907611847,0.001525270869024098,0.16438300907611847,,, +,,,,159,2025-10-18 18:06:05.505946,,,,,,,0.163377583026886,0.0023770539555698633,0.163377583026886 +0.14506715536117554,0.0011462427210062742,0.14506715536117554,9549.0,160,2025-10-18 18:07:49.996811,,,,,,,,, +0.13035890460014343,0.0012403823202475905,0.13035890460014343,9599.0,160,2025-10-18 18:12:51.943757,,,,,,,,, +,,,,160,2025-10-18 18:14:28.491323,0.16926898062229156,0.0019492472056299448,0.16926898062229156,0.17364028096199036,0.0016073390142992139,0.17364028096199036,,, +,,,,160,2025-10-18 18:14:54.583665,,,,,,,0.1637600213289261,0.0025646837893873453,0.1637600213289261 +0.14870570600032806,0.0012067133793607354,0.14870570600032806,9649.0,161,2025-10-18 18:20:49.283028,,,,,,,,, +,,,,161,2025-10-18 18:23:23.663742,0.1691313236951828,0.0023625337053090334,0.1691313236951828,0.16528913378715515,0.0015291842864826322,0.16528913378715515,,, +,,,,161,2025-10-18 18:23:48.858556,,,,,,,0.16499803960323334,0.002308910945430398,0.16499803960323334 +0.18450725078582764,0.0012048614444211125,0.18450725078582764,9699.0,162,2025-10-18 18:28:37.238445,,,,,,,,, +,,,,162,2025-10-18 18:31:51.626162,0.1675945222377777,0.0017748021055012941,0.1675945222377777,0.1592305302619934,0.0014822928933426738,0.1592305302619934,,, +,,,,162,2025-10-18 18:32:38.607833,,,,,,,0.16622285544872284,0.0023248561192303896,0.16622285544872284 +0.11986751109361649,0.0036030977498739958,0.11986751109361649,9749.0,163,2025-10-18 18:37:17.256703,,,,,,,,, +,,,,163,2025-10-18 18:41:20.699415,0.18592569231987,0.0028464458882808685,0.18592569231987,0.1819436103105545,0.0023785093799233437,0.1819436103105545,,, +,,,,163,2025-10-18 18:41:46.589595,,,,,,,0.16248641908168793,0.0024228813126683235,0.16248641908168793 +0.16858968138694763,0.0011538491817191243,0.16858968138694763,9799.0,164,2025-10-18 18:44:47.739524,,,,,,,,, +,,,,164,2025-10-18 18:49:57.641539,0.16409941017627716,0.0027800085954368114,0.16409941017627716,0.1594044715166092,0.002949752612039447,0.1594044715166092,,, +,,,,164,2025-10-18 18:50:45.147513,,,,,,,0.16408906877040863,0.0023370475973933935,0.16408906877040863 +0.17407986521720886,0.005999045446515083,0.17407986521720886,9849.0,165,2025-10-18 18:52:38.311591,,,,,,,,, +0.13519398868083954,0.0007263097213581204,0.13519398868083954,9899.0,165,2025-10-18 18:57:25.595222,,,,,,,,, +,,,,165,2025-10-18 18:59:00.850570,0.16942842304706573,0.0030411595944315195,0.16942842304706573,0.15993739664554596,0.002023509005084634,0.15993739664554596,,, +,,,,165,2025-10-18 18:59:26.524168,,,,,,,0.16760465502738953,0.0023435805924236774,0.16760465502738953 +0.16934430599212646,0.0035327759105712175,0.16934430599212646,9949.0,166,2025-10-18 19:04:51.166133,,,,,,,,, +,,,,166,2025-10-18 19:07:23.434299,0.16332435607910156,0.002076209057122469,0.16332435607910156,0.1628931611776352,0.001835156581364572,0.1628931611776352,,, +,,,,166,2025-10-18 19:07:49.764331,,,,,,,0.1615578681230545,0.0026283988263458014,0.1615578681230545 +0.16136956214904785,0.0016064472729340196,0.16136956214904785,9999.0,167,2025-10-18 19:12:57.483722,,,,,,,,, +,,,,167,2025-10-18 19:16:03.210596,0.16567657887935638,0.002570742042735219,0.16567657887935638,0.16593670845031738,0.0028152980376034975,0.16593670845031738,,, +,,,,167,2025-10-18 19:16:29.426505,,,,,,,0.15768812596797943,0.0021952707320451736,0.15768812596797943 +0.16285890340805054,0.0015736725181341171,0.16285890340805054,10049.0,168,2025-10-18 19:20:30.291160,,,,,,,,, +,,,,168,2025-10-18 19:24:43.594953,0.15655115246772766,0.0017366427928209305,0.15655115246772766,0.17047551274299622,0.002774252323433757,0.17047551274299622,,, +,,,,168,2025-10-18 19:25:10.903588,,,,,,,0.1625264436006546,0.0020423142705112696,0.1625264436006546 +0.16876094043254852,0.0013191553298383951,0.16876094043254852,10099.0,169,2025-10-18 19:28:00.292682,,,,,,,,, +,,,,169,2025-10-18 19:33:19.404502,0.16073468327522278,0.0015739540103822947,0.16073468327522278,0.15802007913589478,0.0019076671451330185,0.15802007913589478,,, +,,,,169,2025-10-18 19:34:07.334112,,,,,,,0.15805843472480774,0.0021487586200237274,0.15805843472480774 +0.1594962626695633,0.002981166122481227,0.1594962626695633,10149.0,170,2025-10-18 19:35:57.386187,,,,,,,,, +0.13391008973121643,0.000763847550842911,0.13391008973121643,10199.0,170,2025-10-18 19:40:31.452924,,,,,,,,, +,,,,170,2025-10-18 19:42:08.408111,0.1602254956960678,0.00114049029070884,0.1602254956960678,0.1537218987941742,0.0018883382435888052,0.1537218987941742,,, +,,,,170,2025-10-18 19:42:57.873688,,,,,,,0.16033871471881866,0.002232277998700738,0.16033871471881866 +0.17047427594661713,0.0022820218000561,0.17047427594661713,10249.0,171,2025-10-18 19:48:48.644880,,,,,,,,, +,,,,171,2025-10-18 19:51:05.524318,0.17113961279392242,0.002830875338986516,0.17113961279392242,0.15208323299884796,0.0012289577862247825,0.15208323299884796,,, +,,,,171,2025-10-18 19:51:56.341159,,,,,,,0.16201873123645782,0.0022584276739507914,0.16201873123645782 +0.18917986750602722,0.007162587717175484,0.18917986750602722,10299.0,172,2025-10-18 19:56:21.979833,,,,,,,,, +,,,,172,2025-10-18 19:59:53.084548,0.15303444862365723,0.0012743662809953094,0.15303444862365723,0.15973511338233948,0.0032345487270504236,0.15973511338233948,,, +,,,,172,2025-10-18 20:00:18.708375,,,,,,,0.16141048073768616,0.0028440612368285656,0.16141048073768616 +0.16320054233074188,0.0015976728172972798,0.16320054233074188,10349.0,173,2025-10-18 20:04:17.085798,,,,,,,,, +,,,,173,2025-10-18 20:08:40.518347,0.1821550875902176,0.0023563296999782324,0.1821550875902176,0.16566118597984314,0.002990506589412689,0.16566118597984314,,, +,,,,173,2025-10-18 20:09:07.022466,,,,,,,0.16308759152889252,0.002063943538814783,0.16308759152889252 +0.16062429547309875,0.0009852841030806303,0.16062429547309875,10399.0,174,2025-10-18 20:12:14.397443,,,,,,,,, +,,,,174,2025-10-18 20:17:13.410261,0.16508890688419342,0.00159766327124089,0.16508890688419342,0.16455979645252228,0.003171344520524144,0.16455979645252228,,, +,,,,174,2025-10-18 20:17:39.122227,,,,,,,0.15936684608459473,0.0021406635642051697,0.15936684608459473 +0.1306246817111969,0.0013794933911412954,0.1306246817111969,10449.0,175,2025-10-18 20:19:15.826269,,,,,,,,, +0.17558704316616058,0.0017183080781251192,0.17558704316616058,10499.0,175,2025-10-18 20:23:55.080245,,,,,,,,, +,,,,175,2025-10-18 20:25:31.244293,0.1654147505760193,0.0032618038821965456,0.1654147505760193,0.16697604954242706,0.002813246101140976,0.16697604954242706,,, +,,,,175,2025-10-18 20:25:56.007770,,,,,,,0.16336454451084137,0.002488762140274048,0.16336454451084137 +0.16589714586734772,0.002073988551273942,0.16589714586734772,10549.0,176,2025-10-18 20:31:42.036754,,,,,,,,, +,,,,176,2025-10-18 20:33:54.915371,0.15844488143920898,0.0019223196431994438,0.15844488143920898,0.1667466014623642,0.0018982666078954935,0.1667466014623642,,, +,,,,176,2025-10-18 20:34:21.765007,,,,,,,0.15785668790340424,0.0023270200472325087,0.15785668790340424 +0.16064536571502686,0.00759977288544178,0.16064536571502686,10599.0,177,2025-10-18 20:39:15.757663,,,,,,,,, +,,,,177,2025-10-18 20:42:19.218093,0.16146472096443176,0.0028038108721375465,0.16146472096443176,0.1572839319705963,0.0020465231500566006,0.1572839319705963,,, +,,,,177,2025-10-18 20:42:46.028722,,,,,,,0.16309386491775513,0.0024655491579324007,0.16309386491775513 +0.14652305841445923,0.0015081820311024785,0.14652305841445923,10649.0,178,2025-10-18 20:46:52.311650,,,,,,,,, +,,,,178,2025-10-18 20:51:13.046399,0.16562414169311523,0.0035175178200006485,0.16562414169311523,0.16792914271354675,0.0021996793802827597,0.16792914271354675,,, +,,,,178,2025-10-18 20:51:39.263434,,,,,,,0.1626991182565689,0.0021291335579007864,0.1626991182565689 +0.18456324934959412,0.007284022402018309,0.18456324934959412,10699.0,179,2025-10-18 20:54:22.564843,,,,,,,,, +,,,,179,2025-10-18 20:59:43.143361,0.17515020072460175,0.002405806677415967,0.17515020072460175,0.17056891322135925,0.0023873187601566315,0.17056891322135925,,, +,,,,179,2025-10-18 21:00:09.197153,,,,,,,0.16291120648384094,0.0026221908628940582,0.16291120648384094 +0.14072558283805847,0.0035067026037722826,0.14072558283805847,10749.0,180,2025-10-18 21:02:03.846445,,,,,,,,, +0.18288148939609528,0.0014652140671387315,0.18288148939609528,10799.0,180,2025-10-18 21:06:43.566188,,,,,,,,, +,,,,180,2025-10-18 21:08:20.298575,0.16598866879940033,0.0019646736327558756,0.16598866879940033,0.1702692210674286,0.002330145565792918,0.1702692210674286,,, +,,,,180,2025-10-18 21:08:47.261662,,,,,,,0.15801751613616943,0.0020179261919111013,0.15801751613616943 +0.1520535796880722,0.0010829061502590775,0.1520535796880722,10849.0,181,2025-10-18 21:14:27.213950,,,,,,,,, +,,,,181,2025-10-18 21:16:42.406811,0.16458235681056976,0.0025201705284416676,0.16458235681056976,0.1648712158203125,0.002071926835924387,0.1648712158203125,,, +,,,,181,2025-10-18 21:17:07.042377,,,,,,,0.16285422444343567,0.002549604047089815,0.16285422444343567 +0.1709979921579361,0.001119202352128923,0.1709979921579361,10899.0,182,2025-10-18 21:21:51.884339,,,,,,,,, +,,,,182,2025-10-18 21:25:05.191531,0.15730346739292145,0.002056262455880642,0.15730346739292145,0.17081260681152344,0.0032142873387783766,0.17081260681152344,,, +,,,,182,2025-10-18 21:25:33.277707,,,,,,,0.16011008620262146,0.002183248521760106,0.16011008620262146 +0.19169585406780243,0.0014542845310643315,0.19169585406780243,10949.0,183,2025-10-18 21:29:27.375515,,,,,,,,, +,,,,183,2025-10-18 21:33:48.596908,0.1613297015428543,0.0017307482194155455,0.1613297015428543,0.16570024192333221,0.0020950252655893564,0.16570024192333221,,, +,,,,183,2025-10-18 21:34:14.149538,,,,,,,0.16144655644893646,0.002317078411579132,0.16144655644893646 +0.1347837746143341,0.0011484503047540784,0.1347837746143341,10999.0,184,2025-10-18 21:37:02.772407,,,,,,,,, +,,,,184,2025-10-18 21:42:24.987041,0.16222909092903137,0.002526156837120652,0.16222909092903137,0.15673652291297913,0.0021326267160475254,0.15673652291297913,,, +,,,,184,2025-10-18 21:43:14.564589,,,,,,,0.16020365059375763,0.0020984329748898745,0.16020365059375763 +0.12460829317569733,0.0011327809188514948,0.12460829317569733,11049.0,185,2025-10-18 21:45:00.946001,,,,,,,,, +0.167076975107193,0.00411192374303937,0.167076975107193,11099.0,185,2025-10-18 21:49:44.334357,,,,,,,,, +,,,,185,2025-10-18 21:51:21.120111,0.16112244129180908,0.001991905039176345,0.16112244129180908,0.16972969472408295,0.0027652063872665167,0.16972969472408295,,, +,,,,185,2025-10-18 21:51:46.346400,,,,,,,0.15787988901138306,0.0021398523822426796,0.15787988901138306 +0.14997261762619019,0.0011263040360063314,0.14997261762619019,11149.0,186,2025-10-18 21:58:09.415484,,,,,,,,, +,,,,186,2025-10-18 22:00:26.729798,0.15549352765083313,0.0024479166604578495,0.15549352765083313,0.174645334482193,0.0040183598175644875,0.174645334482193,,, +,,,,186,2025-10-18 22:00:53.720139,,,,,,,0.1597420871257782,0.002450634492561221,0.1597420871257782 +0.15422074496746063,0.0014287933008745313,0.15422074496746063,11199.0,187,2025-10-18 22:05:42.730185,,,,,,,,, +,,,,187,2025-10-18 22:08:55.121587,0.16343161463737488,0.002849639393389225,0.16343161463737488,0.17442405223846436,0.002244990086182952,0.17442405223846436,,, +,,,,187,2025-10-18 22:09:21.172263,,,,,,,0.16213154792785645,0.002170412102714181,0.16213154792785645 +0.17595456540584564,0.001141022308729589,0.17595456540584564,11249.0,188,2025-10-18 22:13:13.834656,,,,,,,,, +,,,,188,2025-10-18 22:17:18.420156,0.15725243091583252,0.0026720925234258175,0.15725243091583252,0.16878293454647064,0.002215262269601226,0.16878293454647064,,, +,,,,188,2025-10-18 22:17:45.385841,,,,,,,0.15973582863807678,0.002270572353154421,0.15973582863807678 +0.14532707631587982,0.0011278579477220774,0.14532707631587982,11299.0,189,2025-10-18 22:20:32.465783,,,,,,,,, +,,,,189,2025-10-18 22:25:52.880311,0.14740489423274994,0.0016571421874687076,0.14740489423274994,0.16118475794792175,0.003453111043199897,0.16118475794792175,,, +,,,,189,2025-10-18 22:26:18.514478,,,,,,,0.1589091271162033,0.0022456147707998753,0.1589091271162033 +0.1925954818725586,0.003094886429607868,0.1925954818725586,11349.0,190,2025-10-18 22:28:10.448370,,,,,,,,, +0.14470113813877106,0.001865664846263826,0.14470113813877106,11399.0,190,2025-10-18 22:32:45.936762,,,,,,,,, +,,,,190,2025-10-18 22:34:25.010863,0.16808202862739563,0.00314953550696373,0.16808202862739563,0.16676299273967743,0.0015882699517533183,0.16676299273967743,,, +,,,,190,2025-10-18 22:34:50.914872,,,,,,,0.16180144250392914,0.002420556265860796,0.16180144250392914 +0.1787720024585724,0.0015858056722208858,0.1787720024585724,11449.0,191,2025-10-18 22:40:30.314712,,,,,,,,, +,,,,191,2025-10-18 22:43:03.734583,0.16099998354911804,0.0028800584841519594,0.16099998354911804,0.15447105467319489,0.0016316273249685764,0.15447105467319489,,, +,,,,191,2025-10-18 22:43:53.684675,,,,,,,0.15898379683494568,0.0020228629000484943,0.15898379683494568 +0.16154778003692627,0.001346338540315628,0.16154778003692627,11499.0,192,2025-10-18 22:48:41.033300,,,,,,,,, +,,,,192,2025-10-18 22:51:54.711899,0.16511620581150055,0.0022454645950347185,0.16511620581150055,0.16475646197795868,0.0026590945199131966,0.16475646197795868,,, +,,,,192,2025-10-18 22:52:20.447039,,,,,,,0.16150008141994476,0.0023791631683707237,0.16150008141994476 +0.17162415385246277,0.00160073465667665,0.17162415385246277,11549.0,193,2025-10-18 22:56:13.767830,,,,,,,,, +,,,,193,2025-10-18 23:00:33.658839,0.17356662452220917,0.00222880020737648,0.17356662452220917,0.16701166331768036,0.0027353577315807343,0.16701166331768036,,, +,,,,193,2025-10-18 23:01:00.874912,,,,,,,0.1559414565563202,0.0020224573090672493,0.1559414565563202 +0.14163395762443542,0.0026498998049646616,0.14163395762443542,11599.0,194,2025-10-18 23:03:45.535442,,,,,,,,, +,,,,194,2025-10-18 23:08:40.694795,0.15648765861988068,0.0018952608807012439,0.15648765861988068,0.1525379866361618,0.0013558672508224845,0.1525379866361618,,, +,,,,194,2025-10-18 23:09:32.520092,,,,,,,0.15742391347885132,0.00215127388946712,0.15742391347885132 +0.17018549144268036,0.00674911355599761,0.17018549144268036,11649.0,195,2025-10-18 23:11:18.446544,,,,,,,,, +0.17035290598869324,0.003270747372880578,0.17035290598869324,11699.0,195,2025-10-18 23:15:59.228848,,,,,,,,, +,,,,195,2025-10-18 23:17:32.060450,0.16080571711063385,0.001551021239720285,0.16080571711063385,0.16335730254650116,0.0025406144559383392,0.16335730254650116,,, +,,,,195,2025-10-18 23:17:58.417197,,,,,,,0.16150067746639252,0.002648317953571677,0.16150067746639252 +0.20658282935619354,0.005716864950954914,0.20658282935619354,11749.0,196,2025-10-18 23:23:46.989707,,,,,,,,, +,,,,196,2025-10-18 23:26:02.152524,0.1653546541929245,0.0023022100795060396,0.1653546541929245,0.16155476868152618,0.002050490351393819,0.16155476868152618,,, +,,,,196,2025-10-18 23:26:29.111379,,,,,,,0.15905003249645233,0.0020185508765280247,0.15905003249645233 +0.13444961607456207,0.0008534911321476102,0.13444961607456207,11799.0,197,2025-10-18 23:31:23.297942,,,,,,,,, +,,,,197,2025-10-18 23:34:27.391380,0.17539651691913605,0.0022020128089934587,0.17539651691913605,0.17563048005104065,0.0024171890690922737,0.17563048005104065,,, +,,,,197,2025-10-18 23:34:54.019671,,,,,,,0.15809857845306396,0.002180725336074829,0.15809857845306396 +0.16668163239955902,0.0037132485304027796,0.16668163239955902,11849.0,198,2025-10-18 23:38:56.942348,,,,,,,,, +,,,,198,2025-10-18 23:43:07.875641,0.1632656455039978,0.0024961039889603853,0.1632656455039978,0.1626524180173874,0.0033942300360649824,0.1626524180173874,,, +,,,,198,2025-10-18 23:43:34.985278,,,,,,,0.1553637981414795,0.0023369593545794487,0.1553637981414795 +0.18984103202819824,0.0017148350598290563,0.18984103202819824,11899.0,199,2025-10-18 23:46:24.044321,,,,,,,,, +,,,,199,2025-10-18 23:51:44.294725,0.1598050594329834,0.0014560577692463994,0.1598050594329834,0.15690165758132935,0.0018331775208935142,0.15690165758132935,,, +,,,,199,2025-10-18 23:52:10.915974,,,,,,,0.1555202305316925,0.0020290028769522905,0.1555202305316925 +0.16987338662147522,0.0042905681766569614,0.16987338662147522,11949.0,200,2025-10-18 23:53:59.674631,,,,,,,,, +0.17037144303321838,0.0029773935675621033,0.17037144303321838,11999.0,200,2025-10-18 23:58:28.577327,,,,,,,,, +,,,,200,2025-10-19 00:00:08.119257,0.15334947407245636,0.002655019285157323,0.15334947407245636,0.16155818104743958,0.0020157324615865946,0.16155818104743958,,, +,,,,200,2025-10-19 00:00:35.769215,,,,,,,0.16354960203170776,0.0024960720911622047,0.16354960203170776 +0.16818051040172577,0.0011891595786437392,0.16818051040172577,12049.0,201,2025-10-19 00:06:10.092599,,,,,,,,, +,,,,201,2025-10-19 00:08:23.204526,0.17035368084907532,0.0018054258543998003,0.17035368084907532,0.17198115587234497,0.002863249508664012,0.17198115587234497,,, +,,,,201,2025-10-19 00:08:48.865768,,,,,,,0.15894968807697296,0.0019844381604343653,0.15894968807697296 +0.15432479977607727,0.004848610609769821,0.15432479977607727,12099.0,202,2025-10-19 00:13:44.673989,,,,,,,,, +,,,,202,2025-10-19 00:16:58.399888,0.16657479107379913,0.0027594699058681726,0.16657479107379913,0.1491669863462448,0.0019385465420782566,0.1491669863462448,,, +,,,,202,2025-10-19 00:17:46.098275,,,,,,,0.15920056402683258,0.0023397065233439207,0.15920056402683258 +0.15216630697250366,0.005647231359034777,0.15216630697250366,12149.0,203,2025-10-19 00:21:48.592186,,,,,,,,, +,,,,203,2025-10-19 00:26:26.011378,0.16784004867076874,0.0030442175921052694,0.16784004867076874,0.16698265075683594,0.0035841958597302437,0.16698265075683594,,, +,,,,203,2025-10-19 00:26:52.160077,,,,,,,0.15982529520988464,0.0024572613183408976,0.15982529520988464 +0.16676698625087738,0.0009572991402819753,0.16676698625087738,12199.0,204,2025-10-19 00:29:34.076051,,,,,,,,, +,,,,204,2025-10-19 00:34:49.817623,0.1649886965751648,0.0020271134562790394,0.1649886965751648,0.16522139310836792,0.0036463604774326086,0.16522139310836792,,, +,,,,204,2025-10-19 00:35:17.402263,,,,,,,0.15716734528541565,0.0020821907091885805,0.15716734528541565 +0.15003922581672668,0.001118668937124312,0.15003922581672668,12249.0,205,2025-10-19 00:37:09.943650,,,,,,,,, +0.14856424927711487,0.001101326197385788,0.14856424927711487,12299.0,205,2025-10-19 00:41:56.299218,,,,,,,,, +,,,,205,2025-10-19 00:43:36.107161,0.1703549325466156,0.001577939372509718,0.1703549325466156,0.15857651829719543,0.002273518592119217,0.15857651829719543,,, +,,,,205,2025-10-19 00:44:03.262594,,,,,,,0.16069994866847992,0.0022969336714595556,0.16069994866847992 +0.18627850711345673,0.0037286351434886456,0.18627850711345673,12349.0,206,2025-10-19 00:49:42.526233,,,,,,,,, +,,,,206,2025-10-19 00:51:56.233963,0.16383975744247437,0.0022997793275862932,0.16383975744247437,0.17271828651428223,0.002382875420153141,0.17271828651428223,,, +,,,,206,2025-10-19 00:52:20.744273,,,,,,,0.16013815999031067,0.0026268691290169954,0.16013815999031067 +0.13787983357906342,0.0015819247346371412,0.13787983357906342,12399.0,207,2025-10-19 00:57:05.721226,,,,,,,,, +,,,,207,2025-10-19 01:00:26.526177,0.1556379795074463,0.0038986916188150644,0.1556379795074463,0.17058484256267548,0.0024779934901744127,0.17058484256267548,,, +,,,,207,2025-10-19 01:00:52.399887,,,,,,,0.15691673755645752,0.00217639678157866,0.15691673755645752 +0.1367948353290558,0.0026602058205753565,0.1367948353290558,12449.0,208,2025-10-19 01:04:57.360696,,,,,,,,, +,,,,208,2025-10-19 01:09:12.771117,0.15575937926769257,0.002091963542625308,0.15575937926769257,0.1666165292263031,0.003454409074038267,0.1666165292263031,,, +,,,,208,2025-10-19 01:09:37.829066,,,,,,,0.15758760273456573,0.00241423724219203,0.15758760273456573 +0.1786421835422516,0.0013930563582107425,0.1786421835422516,12499.0,209,2025-10-19 01:12:32.505551,,,,,,,,, +,,,,209,2025-10-19 01:17:28.842400,0.15366698801517487,0.0015740805538371205,0.15366698801517487,0.1604490727186203,0.0017991338390856981,0.1604490727186203,,, +,,,,209,2025-10-19 01:17:53.941279,,,,,,,0.15753410756587982,0.002113065216690302,0.15753410756587982 +0.16415093839168549,0.0016982421511784196,0.16415093839168549,12549.0,210,2025-10-19 01:19:41.027787,,,,,,,,, +0.1387270838022232,0.0010935493046417832,0.1387270838022232,12599.0,210,2025-10-19 01:24:36.459870,,,,,,,,, +,,,,210,2025-10-19 01:26:11.966809,0.15649817883968353,0.002666278975084424,0.15649817883968353,0.16546538472175598,0.002038015518337488,0.16546538472175598,,, +,,,,210,2025-10-19 01:26:37.366097,,,,,,,0.15942999720573425,0.0024053012020885944,0.15942999720573425 +0.15394224226474762,0.0021478524431586266,0.15394224226474762,12649.0,211,2025-10-19 01:32:39.502124,,,,,,,,, +,,,,211,2025-10-19 01:34:52.788762,0.16880366206169128,0.0016948656411841512,0.16880366206169128,0.17690347135066986,0.004440938122570515,0.17690347135066986,,, +,,,,211,2025-10-19 01:35:19.243467,,,,,,,0.15843883156776428,0.0028883747290819883,0.15843883156776428 +0.17135222256183624,0.003989676479250193,0.17135222256183624,12699.0,212,2025-10-19 01:40:08.965704,,,,,,,,, +,,,,212,2025-10-19 01:43:11.722954,0.156727135181427,0.0025538147892802954,0.156727135181427,0.15579183399677277,0.0026291811373084784,0.15579183399677277,,, +,,,,212,2025-10-19 01:43:37.830038,,,,,,,0.15933477878570557,0.002612026873975992,0.15933477878570557 +0.12855976819992065,0.001921282964758575,0.12855976819992065,12749.0,213,2025-10-19 01:47:44.564852,,,,,,,,, +,,,,213,2025-10-19 01:51:42.110016,0.16856016218662262,0.0034150222782045603,0.16856016218662262,0.1707504391670227,0.0023146432358771563,0.1707504391670227,,, +,,,,213,2025-10-19 01:52:07.749429,,,,,,,0.15781381726264954,0.0022334682289510965,0.15781381726264954 +0.15356950461864471,0.0012053893879055977,0.15356950461864471,12799.0,214,2025-10-19 01:55:02.191247,,,,,,,,, +,,,,214,2025-10-19 02:00:44.179396,0.16000217199325562,0.0022041983902454376,0.16000217199325562,0.16468177735805511,0.002475140383467078,0.16468177735805511,,, +,,,,214,2025-10-19 02:01:09.832035,,,,,,,0.16042427718639374,0.0024174859281629324,0.16042427718639374 +0.14822198450565338,0.0015466819750145078,0.14822198450565338,12849.0,215,2025-10-19 02:02:55.383741,,,,,,,,, +0.20030155777931213,0.0022710717748850584,0.20030155777931213,12899.0,215,2025-10-19 02:07:33.192132,,,,,,,,, +,,,,215,2025-10-19 02:09:11.913696,0.16303488612174988,0.0021309670992195606,0.16303488612174988,0.1563931554555893,0.0031977936159819365,0.1563931554555893,,, +,,,,215,2025-10-19 02:09:36.378795,,,,,,,0.1571902185678482,0.0020112984348088503,0.1571902185678482 +0.15543831884860992,0.001289482694119215,0.15543831884860992,12949.0,216,2025-10-19 02:15:15.347900,,,,,,,,, +,,,,216,2025-10-19 02:17:30.178780,0.16254352033138275,0.002838982967659831,0.16254352033138275,0.15981465578079224,0.0022486934904009104,0.15981465578079224,,, +,,,,216,2025-10-19 02:17:56.561685,,,,,,,0.15476226806640625,0.0024304755497723818,0.15476226806640625 +0.1456107646226883,0.002141090575605631,0.1456107646226883,12999.0,217,2025-10-19 02:22:49.139959,,,,,,,,, +,,,,217,2025-10-19 02:26:01.104766,0.16896159946918488,0.0026590563356876373,0.16896159946918488,0.15492884814739227,0.0025735259987413883,0.15492884814739227,,, +,,,,217,2025-10-19 02:26:27.081400,,,,,,,0.1570759415626526,0.00207215896807611,0.1570759415626526 +0.17146717011928558,0.0022052437998354435,0.17146717011928558,13049.0,218,2025-10-19 02:30:34.246011,,,,,,,,, +,,,,218,2025-10-19 02:34:49.290049,0.16607902944087982,0.0025095536839216948,0.16607902944087982,0.17426854372024536,0.004155089147388935,0.17426854372024536,,, +,,,,218,2025-10-19 02:35:13.563005,,,,,,,0.15655450522899628,0.002431109081953764,0.15655450522899628 +0.17363138496875763,0.004015144892036915,0.17363138496875763,13099.0,219,2025-10-19 02:38:08.633172,,,,,,,,, +,,,,219,2025-10-19 02:43:20.449082,0.1704675555229187,0.0015211075078696012,0.1704675555229187,0.15932059288024902,0.004126868676394224,0.15932059288024902,,, +,,,,219,2025-10-19 02:43:45.783961,,,,,,,0.15733686089515686,0.0023944820277392864,0.15733686089515686 +0.12692342698574066,0.0034254214260727167,0.12692342698574066,13149.0,220,2025-10-19 02:45:35.329532,,,,,,,,, +0.16994352638721466,0.0030616249423474073,0.16994352638721466,13199.0,220,2025-10-19 02:50:26.767370,,,,,,,,, +,,,,220,2025-10-19 02:52:03.128235,0.15483029186725616,0.0019032489508390427,0.15483029186725616,0.16714663803577423,0.004529415164142847,0.16714663803577423,,, +,,,,220,2025-10-19 02:52:29.270907,,,,,,,0.15939460694789886,0.0023095612414181232,0.15939460694789886 +0.17391926050186157,0.0015588446985930204,0.17391926050186157,13249.0,221,2025-10-19 02:58:10.635968,,,,,,,,, +,,,,221,2025-10-19 03:00:26.825840,0.16104447841644287,0.0027645002119243145,0.16104447841644287,0.1582772433757782,0.0016758204437792301,0.1582772433757782,,, +,,,,221,2025-10-19 03:00:52.780747,,,,,,,0.15584105253219604,0.002204886404797435,0.15584105253219604 +0.15830929577350616,0.001987932715564966,0.15830929577350616,13299.0,222,2025-10-19 03:05:52.226554,,,,,,,,, +,,,,222,2025-10-19 03:09:09.938588,0.15127427875995636,0.0027906124014407396,0.15127427875995636,0.15461023151874542,0.001558235613629222,0.15461023151874542,,, +,,,,222,2025-10-19 03:09:35.546239,,,,,,,0.15758086740970612,0.0025814836844801903,0.15758086740970612 +0.16339561343193054,0.0015927973436191678,0.16339561343193054,13349.0,223,2025-10-19 03:13:19.156503,,,,,,,,, +,,,,223,2025-10-19 03:17:30.439004,0.1502877026796341,0.0026099609676748514,0.1502877026796341,0.16646870970726013,0.002619108883664012,0.16646870970726013,,, +,,,,223,2025-10-19 03:17:55.993664,,,,,,,0.157767191529274,0.0021029356867074966,0.157767191529274 +0.15022802352905273,0.00308098248206079,0.15022802352905273,13399.0,224,2025-10-19 03:20:51.657956,,,,,,,,, +,,,,224,2025-10-19 03:26:00.038853,0.16364428400993347,0.002423006808385253,0.16364428400993347,0.17625932395458221,0.0030245636589825153,0.17625932395458221,,, +,,,,224,2025-10-19 03:26:25.933730,,,,,,,0.15353021025657654,0.0021234764717519283,0.15353021025657654 +0.16456322371959686,0.0016165330307558179,0.16456322371959686,13449.0,225,2025-10-19 03:28:21.965437,,,,,,,,, +0.14877338707447052,0.0014333769213408232,0.14877338707447052,13499.0,225,2025-10-19 03:33:03.342036,,,,,,,,, +,,,,225,2025-10-19 03:34:39.802907,0.1625591665506363,0.0020724451169371605,0.1625591665506363,0.16316591203212738,0.00313378288410604,0.16316591203212738,,, +,,,,225,2025-10-19 03:35:05.957128,,,,,,,0.16051407158374786,0.002484131371602416,0.16051407158374786 +0.14373712241649628,0.001480415347032249,0.14373712241649628,13549.0,226,2025-10-19 03:41:09.334278,,,,,,,,, +,,,,226,2025-10-19 03:43:21.785819,0.16990773379802704,0.00218428042717278,0.16990773379802704,0.15321679413318634,0.0018825629958882928,0.15321679413318634,,, +,,,,226,2025-10-19 03:43:47.388968,,,,,,,0.15908996760845184,0.0021384439896792173,0.15908996760845184 +0.14189589023590088,0.0010244412114843726,0.14189589023590088,13599.0,227,2025-10-19 03:48:25.736065,,,,,,,,, +,,,,227,2025-10-19 03:52:10.523837,0.16933734714984894,0.0031518011819571257,0.16933734714984894,0.15420803427696228,0.0015876396792009473,0.15420803427696228,,, +,,,,227,2025-10-19 03:52:37.072511,,,,,,,0.15664345026016235,0.0021077259443700314,0.15664345026016235 +0.16569064557552338,0.001817994168959558,0.16569064557552338,13649.0,228,2025-10-19 03:56:35.829695,,,,,,,,, +,,,,228,2025-10-19 04:01:08.540440,0.16091565787792206,0.0024465012829750776,0.16091565787792206,0.15868468582630157,0.0022826760541647673,0.15868468582630157,,, +,,,,228,2025-10-19 04:01:35.128416,,,,,,,0.15635031461715698,0.0022646666038781404,0.15635031461715698 +0.15213413536548615,0.0031744136940687895,0.15213413536548615,13699.0,229,2025-10-19 04:04:33.273009,,,,,,,,, +,,,,229,2025-10-19 04:09:35.817397,0.15754516422748566,0.0020675347186625004,0.15754516422748566,0.16522814333438873,0.0022880828473716974,0.16522814333438873,,, +,,,,229,2025-10-19 04:10:00.417934,,,,,,,0.1556863933801651,0.0026483163237571716,0.1556863933801651 +0.15873973071575165,0.0016257921233773232,0.15873973071575165,13749.0,230,2025-10-19 04:11:48.095486,,,,,,,,, +0.16988231241703033,0.002246642019599676,0.16988231241703033,13799.0,230,2025-10-19 04:16:33.584249,,,,,,,,, +,,,,230,2025-10-19 04:18:09.410427,0.15644896030426025,0.00278596393764019,0.15644896030426025,0.15372811257839203,0.001991816097870469,0.15372811257839203,,, +,,,,230,2025-10-19 04:18:34.287221,,,,,,,0.15902122855186462,0.0021825432777404785,0.15902122855186462 +0.16315561532974243,0.003379079280421138,0.16315561532974243,13849.0,231,2025-10-19 04:24:35.516047,,,,,,,,, +,,,,231,2025-10-19 04:26:50.123940,0.16337013244628906,0.0027724471874535084,0.16337013244628906,0.15300872921943665,0.001343851094134152,0.15300872921943665,,, +,,,,231,2025-10-19 04:27:15.554756,,,,,,,0.15773198008537292,0.0022806792985647917,0.15773198008537292 +0.16423796117305756,0.001117028994485736,0.16423796117305756,13899.0,232,2025-10-19 04:32:11.044846,,,,,,,,, +,,,,232,2025-10-19 04:35:17.586361,0.1668740063905716,0.0021264562383294106,0.1668740063905716,0.1593424528837204,0.0026267273351550102,0.1593424528837204,,, +,,,,232,2025-10-19 04:35:43.561596,,,,,,,0.15370036661624908,0.0021040765568614006,0.15370036661624908 +0.1631428301334381,0.0015719691291451454,0.1631428301334381,13949.0,233,2025-10-19 04:39:37.119434,,,,,,,,, +,,,,233,2025-10-19 04:44:03.983580,0.14730162918567657,0.0019603781402111053,0.14730162918567657,0.16810432076454163,0.0020672522950917482,0.16810432076454163,,, +,,,,233,2025-10-19 04:44:32.365755,,,,,,,0.15509842336177826,0.002222731476649642,0.15509842336177826 +0.16063642501831055,0.0018414999358356,0.16063642501831055,13999.0,234,2025-10-19 04:47:22.162988,,,,,,,,, +,,,,234,2025-10-19 04:52:24.807965,0.15373963117599487,0.0032751988619565964,0.15373963117599487,0.16295479238033295,0.0024058553390204906,0.16295479238033295,,, +,,,,234,2025-10-19 04:52:52.586083,,,,,,,0.15972751379013062,0.0028006669599562883,0.15972751379013062 +0.16952358186244965,0.0014245096826925874,0.16952358186244965,14049.0,235,2025-10-19 04:54:39.595425,,,,,,,,, +0.1391759216785431,0.002971117850393057,0.1391759216785431,14099.0,235,2025-10-19 04:59:23.437794,,,,,,,,, +,,,,235,2025-10-19 05:01:00.717025,0.1625097393989563,0.002044430933892727,0.1625097393989563,0.15744781494140625,0.0023928950540721416,0.15744781494140625,,, +,,,,235,2025-10-19 05:01:25.596446,,,,,,,0.1598197966814041,0.002329663373529911,0.1598197966814041 +0.12843137979507446,0.0009192535071633756,0.12843137979507446,14149.0,236,2025-10-19 05:07:16.187543,,,,,,,,, +,,,,236,2025-10-19 05:09:28.429860,0.18079812824726105,0.002360847545787692,0.18079812824726105,0.15239223837852478,0.0027051407378166914,0.15239223837852478,,, +,,,,236,2025-10-19 05:10:15.633353,,,,,,,0.15841880440711975,0.0021872592624276876,0.15841880440711975 +0.14382711052894592,0.003831262933090329,0.14382711052894592,14199.0,237,2025-10-19 05:15:29.111769,,,,,,,,, +,,,,237,2025-10-19 05:18:38.543796,0.15512587130069733,0.0021583265624940395,0.15512587130069733,0.15674887597560883,0.0021759665105491877,0.15674887597560883,,, +,,,,237,2025-10-19 05:19:04.966564,,,,,,,0.1592789590358734,0.0025839568115770817,0.1592789590358734 +0.1453493982553482,0.004220013041049242,0.1453493982553482,14249.0,238,2025-10-19 05:23:02.868156,,,,,,,,, +,,,,238,2025-10-19 05:27:17.254282,0.15356968343257904,0.0018281900556758046,0.15356968343257904,0.15839825570583344,0.002917178440839052,0.15839825570583344,,, +,,,,238,2025-10-19 05:27:42.884937,,,,,,,0.15646211802959442,0.0022796406410634518,0.15646211802959442 +0.14877964556217194,0.005397900473326445,0.14877964556217194,14299.0,239,2025-10-19 05:30:24.857829,,,,,,,,, +,,,,239,2025-10-19 05:35:58.235889,0.14340895414352417,0.001221426296979189,0.14340895414352417,0.17371484637260437,0.0025060030166059732,0.17371484637260437,,, +,,,,239,2025-10-19 05:36:23.722966,,,,,,,0.15478211641311646,0.0023054799530655146,0.15478211641311646 +0.17045022547245026,0.0034910838585346937,0.17045022547245026,14349.0,240,2025-10-19 05:38:22.286246,,,,,,,,, +0.17085784673690796,0.0017620916478335857,0.17085784673690796,14399.0,240,2025-10-19 05:42:57.375157,,,,,,,,, +,,,,240,2025-10-19 05:44:28.608422,0.1646454930305481,0.0027568810619413853,0.1646454930305481,0.15320944786071777,0.0031845627818256617,0.15320944786071777,,, +,,,,240,2025-10-19 05:44:53.321828,,,,,,,0.15997062623500824,0.0021439786069095135,0.15997062623500824 +0.16853290796279907,0.0017506902804598212,0.16853290796279907,14449.0,241,2025-10-19 05:50:56.125298,,,,,,,,, +,,,,241,2025-10-19 05:53:09.632776,0.1708424687385559,0.002792221959680319,0.1708424687385559,0.16332124173641205,0.0016869547544047236,0.16332124173641205,,, +,,,,241,2025-10-19 05:53:35.786265,,,,,,,0.1538388729095459,0.0021996935829520226,0.1538388729095459 +0.14130574464797974,0.001734185148961842,0.14130574464797974,14499.0,242,2025-10-19 05:58:40.760264,,,,,,,,, +,,,,242,2025-10-19 06:01:53.926596,0.15878279507160187,0.0026885780971497297,0.15878279507160187,0.162575364112854,0.0019751933868974447,0.162575364112854,,, +,,,,242,2025-10-19 06:02:19.865763,,,,,,,0.15439598262310028,0.002509373938664794,0.15439598262310028 +0.15467046201229095,0.0015876850811764598,0.15467046201229095,14549.0,243,2025-10-19 06:06:18.720218,,,,,,,,, +,,,,243,2025-10-19 06:10:25.486016,0.16117100417613983,0.001494157942943275,0.16117100417613983,0.16058985888957977,0.0030550239607691765,0.16058985888957977,,, +,,,,243,2025-10-19 06:10:50.413608,,,,,,,0.15342168509960175,0.0020271765533834696,0.15342168509960175 +0.13931052386760712,0.0013460282934829593,0.13931052386760712,14599.0,244,2025-10-19 06:13:38.525644,,,,,,,,, +,,,,244,2025-10-19 06:19:21.683757,0.15932907164096832,0.0021101213060319424,0.15932907164096832,0.15828658640384674,0.001648839097470045,0.15828658640384674,,, +,,,,244,2025-10-19 06:19:47.330381,,,,,,,0.1563829928636551,0.0021122999023646116,0.1563829928636551 +0.17800886929035187,0.00526049267500639,0.17800886929035187,14649.0,245,2025-10-19 06:21:38.936267,,,,,,,,, +0.16156430542469025,0.0018420728156343102,0.16156430542469025,14699.0,245,2025-10-19 06:26:21.762759,,,,,,,,, +,,,,245,2025-10-19 06:27:59.278656,0.15977169573307037,0.002478068694472313,0.15977169573307037,0.16759666800498962,0.0026106867007911205,0.16759666800498962,,, +,,,,245,2025-10-19 06:28:25.992116,,,,,,,0.16057778894901276,0.0022299811244010925,0.16057778894901276 +0.1616138368844986,0.0017531821504235268,0.1616138368844986,14749.0,246,2025-10-19 06:34:26.234154,,,,,,,,, +,,,,246,2025-10-19 06:36:38.290747,0.1533738672733307,0.0023986801970750093,0.1533738672733307,0.15598700940608978,0.002837764797732234,0.15598700940608978,,, +,,,,246,2025-10-19 06:37:04.190117,,,,,,,0.15941046178340912,0.00274068396538496,0.15941046178340912 +0.16275538504123688,0.006020145956426859,0.16275538504123688,14799.0,247,2025-10-19 06:41:49.110434,,,,,,,,, +,,,,247,2025-10-19 06:45:14.951294,0.1643614023923874,0.0029272795654833317,0.1643614023923874,0.16199225187301636,0.002432834589853883,0.16199225187301636,,, +,,,,247,2025-10-19 06:45:41.093167,,,,,,,0.1546848714351654,0.0023134304210543633,0.1546848714351654 +0.1674932837486267,0.0014176183613017201,0.1674932837486267,14849.0,248,2025-10-19 06:49:34.437216,,,,,,,,, +,,,,248,2025-10-19 06:53:48.775242,0.15815341472625732,0.0019015466095879674,0.15815341472625732,0.15836873650550842,0.0012092527467757463,0.15836873650550842,,, +,,,,248,2025-10-19 06:54:15.044544,,,,,,,0.15888969600200653,0.002384807914495468,0.15888969600200653 +0.16645720601081848,0.00126479787286371,0.16645720601081848,14899.0,249,2025-10-19 06:57:07.266422,,,,,,,,, +,,,,249,2025-10-19 07:02:22.828463,0.15112660825252533,0.002227592281997204,0.15112660825252533,0.161949023604393,0.002218324225395918,0.161949023604393,,, +,,,,249,2025-10-19 07:02:49.002377,,,,,,,0.15727367997169495,0.0021740051452070475,0.15727367997169495 +0.17989331483840942,0.0019847662188112736,0.17989331483840942,14949.0,250,2025-10-19 07:04:40.957606,,,,,,,,, +0.15343120694160461,0.0020953610073775053,0.15343120694160461,14999.0,250,2025-10-19 07:09:09.420092,,,,,,,,, +,,,,250,2025-10-19 07:10:42.880854,0.15951615571975708,0.0024833925999701023,0.15951615571975708,0.1603553593158722,0.002132551744580269,0.1603553593158722,,, +,,,,250,2025-10-19 07:11:08.319422,,,,,,,0.15932822227478027,0.002173261484131217,0.15932822227478027 +0.15019212663173676,0.0009278865181840956,0.15019212663173676,15049.0,251,2025-10-19 07:17:10.575769,,,,,,,,, +,,,,251,2025-10-19 07:19:26.127459,0.15857917070388794,0.0025283286813646555,0.15857917070388794,0.15807649493217468,0.0022417346481233835,0.15807649493217468,,, +,,,,251,2025-10-19 07:19:52.742723,,,,,,,0.15789589285850525,0.0022017310839146376,0.15789589285850525 +0.13677175343036652,0.0031796684488654137,0.13677175343036652,15099.0,252,2025-10-19 07:24:42.846062,,,,,,,,, +,,,,252,2025-10-19 07:27:52.917185,0.1550845354795456,0.0020272035617381334,0.1550845354795456,0.15971799194812775,0.0024344343692064285,0.15971799194812775,,, +,,,,252,2025-10-19 07:28:19.886650,,,,,,,0.15743672847747803,0.002392251044511795,0.15743672847747803 +0.17721423506736755,0.0021766801364719868,0.17721423506736755,15149.0,253,2025-10-19 07:32:17.445155,,,,,,,,, +,,,,253,2025-10-19 07:36:37.394128,0.1481722593307495,0.0019187141442671418,0.1481722593307495,0.14766882359981537,0.002518663415685296,0.14766882359981537,,, +,,,,253,2025-10-19 07:37:28.939820,,,,,,,0.1538681834936142,0.00204128073528409,0.1538681834936142 +0.13641411066055298,0.005824059713631868,0.13641411066055298,15199.0,254,2025-10-19 07:40:13.874193,,,,,,,,, +,,,,254,2025-10-19 07:45:25.946839,0.16845175623893738,0.0019817810971289873,0.16845175623893738,0.16047336161136627,0.0018615758744999766,0.16047336161136627,,, +,,,,254,2025-10-19 07:45:51.920095,,,,,,,0.15336938202381134,0.0021986470092087984,0.15336938202381134 +0.1471739411354065,0.0010893996804952621,0.1471739411354065,15249.0,255,2025-10-19 07:47:41.920545,,,,,,,,, +0.13876301050186157,0.0013300086138769984,0.13876301050186157,15299.0,255,2025-10-19 07:52:14.383244,,,,,,,,, +,,,,255,2025-10-19 07:53:50.526758,0.1472596675157547,0.0017741805640980601,0.1472596675157547,0.16588081419467926,0.0018988854717463255,0.16588081419467926,,, +,,,,255,2025-10-19 07:54:16.140492,,,,,,,0.15601353347301483,0.0021605086512863636,0.15601353347301483 +0.15548375248908997,0.0010826213983818889,0.15548375248908997,15349.0,256,2025-10-19 07:59:59.247619,,,,,,,,, +,,,,256,2025-10-19 08:02:15.008350,0.15506014227867126,0.002451120177283883,0.15506014227867126,0.15191492438316345,0.001853109453804791,0.15191492438316345,,, +,,,,256,2025-10-19 08:03:04.885840,,,,,,,0.15352082252502441,0.0024330446030944586,0.15352082252502441 +0.13860063254833221,0.0010195260401815176,0.13860063254833221,15399.0,257,2025-10-19 08:07:59.858076,,,,,,,,, +,,,,257,2025-10-19 08:11:18.755432,0.15519306063652039,0.0016178281512111425,0.15519306063652039,0.15089160203933716,0.002603144384920597,0.15089160203933716,,, +,,,,257,2025-10-19 08:12:07.805739,,,,,,,0.15504780411720276,0.0023892575409263372,0.15504780411720276 +0.1514427810907364,0.0014487202279269695,0.1514427810907364,15449.0,258,2025-10-19 08:16:01.903260,,,,,,,,, +,,,,258,2025-10-19 08:20:02.442725,0.16164293885231018,0.0028019489254802465,0.16164293885231018,0.15931157767772675,0.00276951608248055,0.15931157767772675,,, +,,,,258,2025-10-19 08:20:27.696162,,,,,,,0.15609656274318695,0.002434773603454232,0.15609656274318695 +0.1746576577425003,0.0023739300668239594,0.1746576577425003,15499.0,259,2025-10-19 08:23:14.458787,,,,,,,,, +,,,,259,2025-10-19 08:29:04.901336,0.16017986834049225,0.0012447017943486571,0.16017986834049225,0.16740399599075317,0.0024327756837010384,0.16740399599075317,,, +,,,,259,2025-10-19 08:29:31.806180,,,,,,,0.15729616582393646,0.0022078007459640503,0.15729616582393646 +0.15661077201366425,0.00182059477083385,0.15661077201366425,15549.0,260,2025-10-19 08:31:28.579994,,,,,,,,, +0.15216895937919617,0.0012442467268556356,0.15216895937919617,15599.0,260,2025-10-19 08:36:19.272736,,,,,,,,, +,,,,260,2025-10-19 08:37:50.159253,0.16075509786605835,0.002455198671668768,0.16075509786605835,0.16764160990715027,0.0033501472789794207,0.16764160990715027,,, +,,,,260,2025-10-19 08:38:16.740900,,,,,,,0.15901918709278107,0.002135124523192644,0.15901918709278107 +0.15207843482494354,0.0014870332088321447,0.15207843482494354,15649.0,261,2025-10-19 08:43:52.610728,,,,,,,,, +,,,,261,2025-10-19 08:46:26.030798,0.16158029437065125,0.0015430210623890162,0.16158029437065125,0.16345937550067902,0.0020804894156754017,0.16345937550067902,,, +,,,,261,2025-10-19 08:46:52.253389,,,,,,,0.15032513439655304,0.0020099752582609653,0.15032513439655304 +0.1671750694513321,0.0011504079448059201,0.1671750694513321,15699.0,262,2025-10-19 08:51:59.409944,,,,,,,,, +,,,,262,2025-10-19 08:55:11.406596,0.1584005355834961,0.0015350038884207606,0.1584005355834961,0.15775449573993683,0.0016682783607393503,0.15775449573993683,,, +,,,,262,2025-10-19 08:55:36.881920,,,,,,,0.15438008308410645,0.002319489372894168,0.15438008308410645 +0.13714931905269623,0.002099034609273076,0.13714931905269623,15749.0,263,2025-10-19 08:59:25.570020,,,,,,,,, +,,,,263,2025-10-19 09:03:43.469930,0.15814273059368134,0.001307467115111649,0.15814273059368134,0.15412066876888275,0.002595258178189397,0.15412066876888275,,, +,,,,263,2025-10-19 09:04:10.055273,,,,,,,0.15610311925411224,0.002066229470074177,0.15610311925411224 +0.15823912620544434,0.0021859784610569477,0.15823912620544434,15799.0,264,2025-10-19 09:07:06.238426,,,,,,,,, +,,,,264,2025-10-19 09:12:10.594356,0.15508219599723816,0.001930785016156733,0.15508219599723816,0.15920256078243256,0.001694375998340547,0.15920256078243256,,, +,,,,264,2025-10-19 09:12:35.943132,,,,,,,0.1577237993478775,0.00241688615642488,0.1577237993478775 +0.16111227869987488,0.0024070460349321365,0.16111227869987488,15849.0,265,2025-10-19 09:14:38.865927,,,,,,,,, +0.16316646337509155,0.0057225595228374004,0.16316646337509155,15899.0,265,2025-10-19 09:19:20.270844,,,,,,,,, +,,,,265,2025-10-19 09:20:56.695465,0.15696336328983307,0.002627864247187972,0.15696336328983307,0.1689230352640152,0.0026370659470558167,0.1689230352640152,,, +,,,,265,2025-10-19 09:21:23.578048,,,,,,,0.15343210101127625,0.0025382041931152344,0.15343210101127625 +0.13093675673007965,0.005642378237098455,0.13093675673007965,15949.0,266,2025-10-19 09:27:00.604276,,,,,,,,, +,,,,266,2025-10-19 09:29:22.447889,0.15660753846168518,0.0021104025654494762,0.15660753846168518,0.15741755068302155,0.002625685418024659,0.15741755068302155,,, +,,,,266,2025-10-19 09:29:48.301123,,,,,,,0.15150152146816254,0.002577705541625619,0.15150152146816254 +0.14904431998729706,0.00215722294524312,0.14904431998729706,15999.0,267,2025-10-19 09:34:24.885981,,,,,,,,, +,,,,267,2025-10-19 09:37:39.766015,0.15315841138362885,0.0017610788345336914,0.15315841138362885,0.16874083876609802,0.003875100752338767,0.16874083876609802,,, +,,,,267,2025-10-19 09:38:05.715020,,,,,,,0.15626583993434906,0.002432827837765217,0.15626583993434906 +0.17776520550251007,0.0021439825650304556,0.17776520550251007,16049.0,268,2025-10-19 09:41:55.024789,,,,,,,,, +,,,,268,2025-10-19 09:46:11.503272,0.16497954726219177,0.0027150921523571014,0.16497954726219177,0.16032293438911438,0.0011924708960577846,0.16032293438911438,,, +,,,,268,2025-10-19 09:46:38.433111,,,,,,,0.15505370497703552,0.0021118794102221727,0.15505370497703552 +0.17106890678405762,0.001276751863770187,0.17106890678405762,16099.0,269,2025-10-19 09:49:14.258451,,,,,,,,, +,,,,269,2025-10-19 09:54:29.583243,0.16640682518482208,0.0033748787827789783,0.16640682518482208,0.160623699426651,0.0011126440949738026,0.160623699426651,,, +,,,,269,2025-10-19 09:54:54.228071,,,,,,,0.1560509204864502,0.001842210884205997,0.1560509204864502 +0.15865649282932281,0.0016103392699733377,0.15865649282932281,16149.0,270,2025-10-19 09:56:53.248571,,,,,,,,, +0.16063682734966278,0.0014003791147843003,0.16063682734966278,16199.0,270,2025-10-19 10:01:36.836753,,,,,,,,, +,,,,270,2025-10-19 10:03:13.663785,0.16734819114208221,0.003170373383909464,0.16734819114208221,0.17088231444358826,0.0015161022311076522,0.17088231444358826,,, +,,,,270,2025-10-19 10:03:39.857328,,,,,,,0.15498553216457367,0.0023006226401776075,0.15498553216457367 +0.15400543808937073,0.0013716659741476178,0.15400543808937073,16249.0,271,2025-10-19 10:09:23.222679,,,,,,,,, +,,,,271,2025-10-19 10:11:41.206173,0.1549471616744995,0.0015707564307376742,0.1549471616744995,0.16599729657173157,0.0023121547419577837,0.16599729657173157,,, +,,,,271,2025-10-19 10:12:06.462481,,,,,,,0.1559649109840393,0.002137896604835987,0.1559649109840393 +0.15353335440158844,0.002193756867200136,0.15353335440158844,16299.0,272,2025-10-19 10:16:45.155402,,,,,,,,, +,,,,272,2025-10-19 10:20:14.742146,0.15798300504684448,0.002294637728482485,0.15798300504684448,0.1609121412038803,0.0036466694436967373,0.1609121412038803,,, +,,,,272,2025-10-19 10:20:40.898806,,,,,,,0.15452885627746582,0.0023933302145451307,0.15452885627746582 +0.13785384595394135,0.0011126743629574776,0.13785384595394135,16349.0,273,2025-10-19 10:24:32.633963,,,,,,,,, +,,,,273,2025-10-19 10:28:43.490057,0.15355604887008667,0.001870174310170114,0.15355604887008667,0.1659451723098755,0.002320077270269394,0.1659451723098755,,, +,,,,273,2025-10-19 10:29:12.576530,,,,,,,0.15585675835609436,0.0018280519871041179,0.15585675835609436 +0.13848012685775757,0.0009052861132659018,0.13848012685775757,16399.0,274,2025-10-19 10:32:16.544510,,,,,,,,, +,,,,274,2025-10-19 10:37:30.821104,0.15935802459716797,0.0023276458960026503,0.15935802459716797,0.16203966736793518,0.002793987048789859,0.16203966736793518,,, +,,,,274,2025-10-19 10:37:56.257636,,,,,,,0.15156224370002747,0.0020897884387522936,0.15156224370002747 +0.13949009776115417,0.0009603736107237637,0.13949009776115417,16449.0,275,2025-10-19 10:39:49.424796,,,,,,,,, +0.14575955271720886,0.0012577582383528352,0.14575955271720886,16499.0,275,2025-10-19 10:44:07.145969,,,,,,,,, +,,,,275,2025-10-19 10:45:41.938686,0.1622275412082672,0.0017971504712477326,0.1622275412082672,0.14318998157978058,0.0019405026687309146,0.14318998157978058,,, +,,,,275,2025-10-19 10:46:29.821657,,,,,,,0.1540607064962387,0.002508369507268071,0.1540607064962387 +0.145116925239563,0.0009399503469467163,0.145116925239563,16549.0,276,2025-10-19 10:52:23.645880,,,,,,,,, +,,,,276,2025-10-19 10:54:41.744294,0.1627887338399887,0.002135468879714608,0.1627887338399887,0.14985117316246033,0.0015712609747424722,0.14985117316246033,,, +,,,,276,2025-10-19 10:55:08.921751,,,,,,,0.15671706199645996,0.0024207697715610266,0.15671706199645996 +0.16458606719970703,0.0015436433022841811,0.16458606719970703,16599.0,277,2025-10-19 11:00:09.590193,,,,,,,,, +,,,,277,2025-10-19 11:03:12.249441,0.16180269420146942,0.0022673271596431732,0.16180269420146942,0.15974289178848267,0.0021320953965187073,0.15974289178848267,,, +,,,,277,2025-10-19 11:03:39.557123,,,,,,,0.15658052265644073,0.002251923317089677,0.15658052265644073 +0.13665901124477386,0.001245412277057767,0.13665901124477386,16649.0,278,2025-10-19 11:07:30.980588,,,,,,,,, +,,,,278,2025-10-19 11:11:42.401984,0.14916987717151642,0.0017429445870220661,0.14916987717151642,0.1656719148159027,0.004165299236774445,0.1656719148159027,,, +,,,,278,2025-10-19 11:12:08.885625,,,,,,,0.15180565416812897,0.002214361447840929,0.15180565416812897 +0.17298221588134766,0.0019568188581615686,0.17298221588134766,16699.0,279,2025-10-19 11:14:56.227228,,,,,,,,, +,,,,279,2025-10-19 11:20:00.958145,0.15644186735153198,0.0013569134753197432,0.15644186735153198,0.15531907975673676,0.001967518823221326,0.15531907975673676,,, +,,,,279,2025-10-19 11:20:26.483512,,,,,,,0.15481558442115784,0.0022991104051470757,0.15481558442115784 +0.13632945716381073,0.0010614198399707675,0.13632945716381073,16749.0,280,2025-10-19 11:22:16.078995,,,,,,,,, +0.15313054621219635,0.002373061841353774,0.15313054621219635,16799.0,280,2025-10-19 11:26:42.461719,,,,,,,,, +,,,,280,2025-10-19 11:28:20.650807,0.17129814624786377,0.0037776429671794176,0.17129814624786377,0.16756723821163177,0.002402670681476593,0.16756723821163177,,, +,,,,280,2025-10-19 11:28:46.624982,,,,,,,0.15386471152305603,0.0024709992576390505,0.15386471152305603 +0.16131947934627533,0.0025358283892273903,0.16131947934627533,16849.0,281,2025-10-19 11:34:18.971809,,,,,,,,, +,,,,281,2025-10-19 11:36:51.937684,0.15472400188446045,0.0024999186862260103,0.15472400188446045,0.1600821316242218,0.0028086230158805847,0.1600821316242218,,, +,,,,281,2025-10-19 11:37:18.837497,,,,,,,0.1553761065006256,0.002396038733422756,0.1553761065006256 +0.15268637239933014,0.00247448543086648,0.15268637239933014,16899.0,282,2025-10-19 11:42:08.883562,,,,,,,,, +,,,,282,2025-10-19 11:45:22.876589,0.14802038669586182,0.0027131913229823112,0.14802038669586182,0.16161614656448364,0.0014586058678105474,0.16161614656448364,,, +,,,,282,2025-10-19 11:45:50.201940,,,,,,,0.15322427451610565,0.0022967231925576925,0.15322427451610565 +0.1862255483865738,0.0015014425152912736,0.1862255483865738,16949.0,283,2025-10-19 11:49:29.998382,,,,,,,,, +,,,,283,2025-10-19 11:53:59.775304,0.15516974031925201,0.0016977335326373577,0.15516974031925201,0.15725064277648926,0.002914122771471739,0.15725064277648926,,, +,,,,283,2025-10-19 11:54:26.859258,,,,,,,0.1562669724225998,0.00253316480666399,0.1562669724225998 +0.1283322274684906,0.0017142761498689651,0.1283322274684906,16999.0,284,2025-10-19 11:57:22.191640,,,,,,,,, +,,,,284,2025-10-19 12:02:31.675765,0.15377408266067505,0.0029302325565367937,0.15377408266067505,0.1664714366197586,0.002478840760886669,0.1664714366197586,,, +,,,,284,2025-10-19 12:02:58.162569,,,,,,,0.15080636739730835,0.002483416348695755,0.15080636739730835 +0.13224492967128754,0.0014740610495209694,0.13224492967128754,17049.0,285,2025-10-19 12:04:42.636419,,,,,,,,, +0.13108354806900024,0.00327779958024621,0.13108354806900024,17099.0,285,2025-10-19 12:09:18.088333,,,,,,,,, +,,,,285,2025-10-19 12:10:53.600049,0.15052562952041626,0.0039050329942256212,0.15052562952041626,0.1564520299434662,0.002219804096966982,0.1564520299434662,,, +,,,,285,2025-10-19 12:11:19.920025,,,,,,,0.1530669629573822,0.0023639951832592487,0.1530669629573822 +0.16802814602851868,0.0017197561683133245,0.16802814602851868,17149.0,286,2025-10-19 12:17:15.387334,,,,,,,,, +,,,,286,2025-10-19 12:19:43.550007,0.15836583077907562,0.0030744336545467377,0.15836583077907562,0.15629015862941742,0.001842124736867845,0.15629015862941742,,, +,,,,286,2025-10-19 12:20:09.630719,,,,,,,0.15136289596557617,0.0021146798972040415,0.15136289596557617 +0.16279424726963043,0.001414966071024537,0.16279424726963043,17199.0,287,2025-10-19 12:25:04.439975,,,,,,,,, +,,,,287,2025-10-19 12:28:18.855843,0.14265176653862,0.0037496553268283606,0.14265176653862,0.16330482065677643,0.0028562177903950214,0.16330482065677643,,, +,,,,287,2025-10-19 12:28:45.853035,,,,,,,0.15293526649475098,0.0022227053996175528,0.15293526649475098 +0.15640297532081604,0.0019062543287873268,0.15640297532081604,17249.0,288,2025-10-19 12:32:30.755570,,,,,,,,, +,,,,288,2025-10-19 12:36:40.197752,0.15258868038654327,0.0012983923079445958,0.15258868038654327,0.15545862913131714,0.0028565512038767338,0.15545862913131714,,, +,,,,288,2025-10-19 12:37:06.744387,,,,,,,0.15416772663593292,0.0020449934527277946,0.15416772663593292 +0.19436746835708618,0.004705247934907675,0.19436746835708618,17299.0,289,2025-10-19 12:39:54.553169,,,,,,,,, +,,,,289,2025-10-19 12:45:23.988569,0.16115052998065948,0.0013345335610210896,0.16115052998065948,0.15579374134540558,0.002273264341056347,0.15579374134540558,,, +,,,,289,2025-10-19 12:45:49.941727,,,,,,,0.15589608252048492,0.002358971629291773,0.15589608252048492 +0.18995997309684753,0.0012676822952926159,0.18995997309684753,17349.0,290,2025-10-19 12:47:31.919391,,,,,,,,, +0.1575414389371872,0.0044046384282410145,0.1575414389371872,17399.0,290,2025-10-19 12:52:05.211162,,,,,,,,, +,,,,290,2025-10-19 12:53:46.902278,0.16301192343235016,0.0014032763428986073,0.16301192343235016,0.16299036145210266,0.002100979210808873,0.16299036145210266,,, +,,,,290,2025-10-19 12:54:14.030184,,,,,,,0.15285402536392212,0.0023277522996068,0.15285402536392212 +0.1594647765159607,0.0009280936210416257,0.1594647765159607,17449.0,291,2025-10-19 12:59:42.523319,,,,,,,,, +,,,,291,2025-10-19 13:02:06.733078,0.15978917479515076,0.0014204845065250993,0.15978917479515076,0.15081873536109924,0.0017823089146986604,0.15081873536109924,,, +,,,,291,2025-10-19 13:02:34.154399,,,,,,,0.15627816319465637,0.0020566126331686974,0.15627816319465637 +0.1457180678844452,0.0013486008392646909,0.1457180678844452,17499.0,292,2025-10-19 13:07:23.211933,,,,,,,,, +,,,,292,2025-10-19 13:10:42.152821,0.15527580678462982,0.0017824420938268304,0.15527580678462982,0.14573673903942108,0.0022669723257422447,0.14573673903942108,,, +,,,,292,2025-10-19 13:11:34.197085,,,,,,,0.15036854147911072,0.0021083320025354624,0.15036854147911072 +0.14517439901828766,0.0036496170796453953,0.14517439901828766,17549.0,293,2025-10-19 13:15:26.414174,,,,,,,,, +,,,,293,2025-10-19 13:19:37.014302,0.1546911746263504,0.0033430519979447126,0.1546911746263504,0.14692620933055878,0.0021755953785032034,0.14692620933055878,,, +,,,,293,2025-10-19 13:20:26.114929,,,,,,,0.1504330337047577,0.0023522241972386837,0.1504330337047577 +0.1544104516506195,0.0016082471702247858,0.1544104516506195,17599.0,294,2025-10-19 13:23:35.955795,,,,,,,,, +,,,,294,2025-10-19 13:28:43.013903,0.1548854112625122,0.002222752431407571,0.1548854112625122,0.15798281133174896,0.0016889855032786727,0.15798281133174896,,, +,,,,294,2025-10-19 13:29:09.198425,,,,,,,0.15208953619003296,0.0021283116657286882,0.15208953619003296 +0.15076908469200134,0.001548478496260941,0.15076908469200134,17649.0,295,2025-10-19 13:31:10.996954,,,,,,,,, +0.15114319324493408,0.001107524149119854,0.15114319324493408,17699.0,295,2025-10-19 13:36:01.850804,,,,,,,,, +,,,,295,2025-10-19 13:37:39.223985,0.15306194126605988,0.0027668022084981203,0.15306194126605988,0.16599822044372559,0.0029022404924035072,0.16599822044372559,,, +,,,,295,2025-10-19 13:38:04.143951,,,,,,,0.15283262729644775,0.002014855155721307,0.15283262729644775 +0.13309624791145325,0.0015662399819120765,0.13309624791145325,17749.0,296,2025-10-19 13:44:08.068365,,,,,,,,, +,,,,296,2025-10-19 13:46:24.501265,0.15437060594558716,0.0018159962492063642,0.15437060594558716,0.16301782429218292,0.0019968871492892504,0.16301782429218292,,, +,,,,296,2025-10-19 13:46:51.653336,,,,,,,0.1553204506635666,0.00201571942307055,0.1553204506635666 +0.14417412877082825,0.0021894718520343304,0.14417412877082825,17799.0,297,2025-10-19 13:51:50.662778,,,,,,,,, +,,,,297,2025-10-19 13:54:56.269281,0.1554863303899765,0.003207086818292737,0.1554863303899765,0.15583465993404388,0.002054473152384162,0.15583465993404388,,, +,,,,297,2025-10-19 13:55:23.289209,,,,,,,0.15362603962421417,0.002152827335521579,0.15362603962421417 +0.18910692632198334,0.0038023293018341064,0.18910692632198334,17849.0,298,2025-10-19 13:59:31.683278,,,,,,,,, +,,,,298,2025-10-19 14:04:03.569408,0.15509122610092163,0.0027151773683726788,0.15509122610092163,0.16159944236278534,0.0020878759678453207,0.16159944236278534,,, +,,,,298,2025-10-19 14:04:29.875064,,,,,,,0.15058980882167816,0.002103283768519759,0.15058980882167816 +0.16249240934848785,0.0013956304173916578,0.16249240934848785,17899.0,299,2025-10-19 14:07:19.858849,,,,,,,,, +,,,,299,2025-10-19 14:12:41.312799,0.16446994245052338,0.0028797502163797617,0.16446994245052338,0.15752947330474854,0.0027006901800632477,0.15752947330474854,,, +,,,,299,2025-10-19 14:13:07.702560,,,,,,,0.15626086294651031,0.0022264127619564533,0.15626086294651031 +0.16028176248073578,0.001817431766539812,0.16028176248073578,17949.0,300,2025-10-19 14:15:00.491773,,,,,,,,, +0.1361355185508728,0.004295235965400934,0.1361355185508728,17999.0,300,2025-10-19 14:20:11.256657,,,,,,,,, +,,,,300,2025-10-19 14:21:50.573830,0.15872330963611603,0.0021581307519227266,0.15872330963611603,0.15298834443092346,0.0025056907907128334,0.15298834443092346,,, +,,,,300,2025-10-19 14:22:17.825002,,,,,,,0.14927299320697784,0.002113340888172388,0.14927299320697784 +0.18490442633628845,0.005333559587597847,0.18490442633628845,18049.0,301,2025-10-19 14:28:21.660416,,,,,,,,, +,,,,301,2025-10-19 14:30:37.194759,0.1455891728401184,0.0013732931111007929,0.1455891728401184,0.16782806813716888,0.004808351397514343,0.16782806813716888,,, +,,,,301,2025-10-19 14:31:05.530425,,,,,,,0.15149421989917755,0.0024283817037940025,0.15149421989917755 +0.14222529530525208,0.0017727065132930875,0.14222529530525208,18099.0,302,2025-10-19 14:35:54.821009,,,,,,,,, +,,,,302,2025-10-19 14:38:57.333855,0.15150347352027893,0.0017345146043226123,0.15150347352027893,0.14571513235569,0.0014773140428587794,0.14571513235569,,, +,,,,302,2025-10-19 14:39:44.371110,,,,,,,0.15878716111183167,0.0026722713373601437,0.15878716111183167 +0.15542484819889069,0.0010828174417838454,0.15542484819889069,18149.0,303,2025-10-19 14:43:41.982708,,,,,,,,, +,,,,303,2025-10-19 14:48:00.841562,0.15553529560565948,0.002836687723174691,0.15553529560565948,0.1618189513683319,0.0020548005122691393,0.1618189513683319,,, +,,,,303,2025-10-19 14:48:27.796775,,,,,,,0.1536625474691391,0.002386315492913127,0.1536625474691391 +0.17199259996414185,0.002027147449553013,0.17199259996414185,18199.0,304,2025-10-19 14:51:24.756983,,,,,,,,, +,,,,304,2025-10-19 14:56:43.350842,0.15344250202178955,0.004872602876275778,0.15344250202178955,0.16102558374404907,0.001961606554687023,0.16102558374404907,,, +,,,,304,2025-10-19 14:57:10.937827,,,,,,,0.15274320542812347,0.002254204824566841,0.15274320542812347 +0.1477556675672531,0.0010182482656091452,0.1477556675672531,18249.0,305,2025-10-19 14:59:06.249003,,,,,,,,, +0.1409050077199936,0.0011180805740877986,0.1409050077199936,18299.0,305,2025-10-19 15:03:50.129880,,,,,,,,, +,,,,305,2025-10-19 15:05:29.809313,0.15212632715702057,0.002271700883284211,0.15212632715702057,0.15408800542354584,0.001996409147977829,0.15408800542354584,,, +,,,,305,2025-10-19 15:05:55.730855,,,,,,,0.1553507000207901,0.002498363144695759,0.1553507000207901 +0.14386866986751556,0.0015239057829603553,0.14386866986751556,18349.0,306,2025-10-19 15:11:35.232262,,,,,,,,, +,,,,306,2025-10-19 15:13:51.659326,0.15983204543590546,0.00266164168715477,0.15983204543590546,0.156638503074646,0.0022860404569655657,0.156638503074646,,, +,,,,306,2025-10-19 15:14:19.201656,,,,,,,0.15391312539577484,0.0026907906867563725,0.15391312539577484 +0.14991897344589233,0.002116235438734293,0.14991897344589233,18399.0,307,2025-10-19 15:19:07.822300,,,,,,,,, +,,,,307,2025-10-19 15:22:14.118446,0.15896272659301758,0.003184181172400713,0.15896272659301758,0.15347127616405487,0.0025596395134925842,0.15347127616405487,,, +,,,,307,2025-10-19 15:22:40.079717,,,,,,,0.15403352677822113,0.0021197518799453974,0.15403352677822113 +0.16682404279708862,0.0033730417490005493,0.16682404279708862,18449.0,308,2025-10-19 15:26:41.524067,,,,,,,,, +,,,,308,2025-10-19 15:30:57.836712,0.16129665076732635,0.0026740911416709423,0.16129665076732635,0.1547337919473648,0.0026380615308880806,0.1547337919473648,,, +,,,,308,2025-10-19 15:31:25.417824,,,,,,,0.14861157536506653,0.0020315677393227816,0.14861157536506653 +0.16219057142734528,0.0036075145471841097,0.16219057142734528,18499.0,309,2025-10-19 15:34:29.021643,,,,,,,,, +,,,,309,2025-10-19 15:39:42.871984,0.1575583517551422,0.0013803159818053246,0.1575583517551422,0.1577529013156891,0.004382146056741476,0.1577529013156891,,, +,,,,309,2025-10-19 15:40:09.644438,,,,,,,0.1512453556060791,0.0024481103755533695,0.1512453556060791 +0.13192309439182281,0.0009949661325663328,0.13192309439182281,18549.0,310,2025-10-19 15:42:03.597727,,,,,,,,, +0.14535295963287354,0.0009208269184455276,0.14535295963287354,18599.0,310,2025-10-19 15:46:52.203268,,,,,,,,, +,,,,310,2025-10-19 15:48:27.983567,0.1481064110994339,0.0014297144953161478,0.1481064110994339,0.1555001586675644,0.002645815024152398,0.1555001586675644,,, +,,,,310,2025-10-19 15:48:54.372869,,,,,,,0.15674655139446259,0.0023250628728419542,0.15674655139446259 +0.1708439737558365,0.003262246260419488,0.1708439737558365,18649.0,311,2025-10-19 15:55:09.424927,,,,,,,,, +,,,,311,2025-10-19 15:57:25.534603,0.15652601420879364,0.003274098737165332,0.15652601420879364,0.15110737085342407,0.0023590452037751675,0.15110737085342407,,, +,,,,311,2025-10-19 15:57:51.212906,,,,,,,0.15186917781829834,0.002258343854919076,0.15186917781829834 +0.1661534458398819,0.001023443415760994,0.1661534458398819,18699.0,312,2025-10-19 16:02:49.118071,,,,,,,,, +,,,,312,2025-10-19 16:06:07.412989,0.16114351153373718,0.0029342458583414555,0.16114351153373718,0.15791961550712585,0.0018580263713374734,0.15791961550712585,,, +,,,,312,2025-10-19 16:06:34.253821,,,,,,,0.15237268805503845,0.002323653781786561,0.15237268805503845 +0.16390371322631836,0.0038269618526101112,0.16390371322631836,18749.0,313,2025-10-19 16:10:26.384349,,,,,,,,, +,,,,313,2025-10-19 16:14:36.153345,0.1563120037317276,0.0018774427007883787,0.1563120037317276,0.15531238913536072,0.0021927913185209036,0.15531238913536072,,, +,,,,313,2025-10-19 16:15:03.281014,,,,,,,0.15312078595161438,0.0023196779657155275,0.15312078595161438 +0.1375449001789093,0.0010648107854649425,0.1375449001789093,18799.0,314,2025-10-19 16:17:49.689426,,,,,,,,, +,,,,314,2025-10-19 16:22:59.003869,0.15666687488555908,0.002993388334289193,0.15666687488555908,0.16468319296836853,0.002719196956604719,0.16468319296836853,,, +,,,,314,2025-10-19 16:23:25.798747,,,,,,,0.15247103571891785,0.0022606418933719397,0.15247103571891785 +0.18490685522556305,0.004358170088380575,0.18490685522556305,18849.0,315,2025-10-19 16:25:31.446549,,,,,,,,, +0.1443733125925064,0.0007517549674957991,0.1443733125925064,18899.0,315,2025-10-19 16:29:56.764051,,,,,,,,, +,,,,315,2025-10-19 16:31:34.935321,0.16088804602622986,0.002529863268136978,0.16088804602622986,0.16840657591819763,0.0029750375542789698,0.16840657591819763,,, +,,,,315,2025-10-19 16:32:00.803236,,,,,,,0.1511288285255432,0.002503139665350318,0.1511288285255432 +0.15005800127983093,0.0027387579903006554,0.15005800127983093,18949.0,316,2025-10-19 16:37:25.051188,,,,,,,,, +,,,,316,2025-10-19 16:39:58.966620,0.15602511167526245,0.0029159781988710165,0.15602511167526245,0.15232127904891968,0.0026290754321962595,0.15232127904891968,,, +,,,,316,2025-10-19 16:40:24.447506,,,,,,,0.14871706068515778,0.001977350329980254,0.14871706068515778 +0.14473536610603333,0.0015688716666772962,0.14473536610603333,18999.0,317,2025-10-19 16:45:21.236700,,,,,,,,, +,,,,317,2025-10-19 16:48:36.994834,0.16117115318775177,0.0027996671851724386,0.16117115318775177,0.1588197648525238,0.0029107031878083944,0.1588197648525238,,, +,,,,317,2025-10-19 16:49:02.488231,,,,,,,0.15223799645900726,0.0021056400146335363,0.15223799645900726 +0.14517618715763092,0.001582033233717084,0.14517618715763092,19049.0,318,2025-10-19 16:52:55.012744,,,,,,,,, +,,,,318,2025-10-19 16:57:15.359218,0.16541774570941925,0.002707767765969038,0.16541774570941925,0.15723861753940582,0.002012814162299037,0.15723861753940582,,, +,,,,318,2025-10-19 16:57:40.221354,,,,,,,0.15312008559703827,0.0021844245493412018,0.15312008559703827 +0.14480936527252197,0.0010414805728942156,0.14480936527252197,19099.0,319,2025-10-19 17:00:40.567930,,,,,,,,, +,,,,319,2025-10-19 17:05:43.526604,0.16085098683834076,0.0015842703869566321,0.16085098683834076,0.15185709297657013,0.0014631763333454728,0.15185709297657013,,, +,,,,319,2025-10-19 17:06:09.863879,,,,,,,0.1545807421207428,0.0020833166781812906,0.1545807421207428 +0.14306733012199402,0.003595546120777726,0.14306733012199402,19149.0,320,2025-10-19 17:08:06.740890,,,,,,,,, +0.20384684205055237,0.00728941522538662,0.20384684205055237,19199.0,320,2025-10-19 17:12:47.619128,,,,,,,,, +,,,,320,2025-10-19 17:14:25.494065,0.1615486443042755,0.003352884203195572,0.1615486443042755,0.1556292623281479,0.0015611088601872325,0.1556292623281479,,, +,,,,320,2025-10-19 17:14:50.959426,,,,,,,0.15348127484321594,0.0019397875294089317,0.15348127484321594 +0.15436352789402008,0.001411943230777979,0.15436352789402008,19249.0,321,2025-10-19 17:20:39.495413,,,,,,,,, +,,,,321,2025-10-19 17:23:08.027370,0.15127302706241608,0.0026110948529094458,0.15127302706241608,0.15039034187793732,0.0026255750562995672,0.15039034187793732,,, +,,,,321,2025-10-19 17:23:33.998370,,,,,,,0.14956195652484894,0.0021638234611600637,0.14956195652484894 +0.15621672570705414,0.0013782702153548598,0.15621672570705414,19299.0,322,2025-10-19 17:28:17.960112,,,,,,,,, +,,,,322,2025-10-19 17:31:33.809056,0.14900758862495422,0.0021056747063994408,0.14900758862495422,0.15113483369350433,0.00202461751177907,0.15113483369350433,,, +,,,,322,2025-10-19 17:31:59.229975,,,,,,,0.15348994731903076,0.002476017689332366,0.15348994731903076 +0.14745476841926575,0.001397822517901659,0.14745476841926575,19349.0,323,2025-10-19 17:35:52.136253,,,,,,,,, +,,,,323,2025-10-19 17:40:14.203028,0.15702368319034576,0.004541538655757904,0.15702368319034576,0.14854581654071808,0.0011871682945638895,0.14854581654071808,,, +,,,,323,2025-10-19 17:40:40.070462,,,,,,,0.15267661213874817,0.0022985730320215225,0.15267661213874817 +0.1272059828042984,0.0014208118664100766,0.1272059828042984,19399.0,324,2025-10-19 17:43:24.574778,,,,,,,,, +,,,,324,2025-10-19 17:48:33.855652,0.15724802017211914,0.00153527338989079,0.15724802017211914,0.15648086369037628,0.001977302134037018,0.15648086369037628,,, +,,,,324,2025-10-19 17:48:58.590161,,,,,,,0.15313459932804108,0.002207102021202445,0.15313459932804108 +0.16342633962631226,0.0039026776794344187,0.16342633962631226,19449.0,325,2025-10-19 17:50:51.019672,,,,,,,,, +0.1427268236875534,0.002953670918941498,0.1427268236875534,19499.0,325,2025-10-19 17:55:18.649285,,,,,,,,, +,,,,325,2025-10-19 17:56:54.327274,0.16080614924430847,0.002378765493631363,0.16080614924430847,0.16770844161510468,0.0019835522398352623,0.16770844161510468,,, +,,,,325,2025-10-19 17:57:19.583010,,,,,,,0.15399394929409027,0.002379129407927394,0.15399394929409027 +0.14407475292682648,0.00393701670691371,0.14407475292682648,19549.0,326,2025-10-19 18:03:17.019873,,,,,,,,, +,,,,326,2025-10-19 18:05:33.760939,0.16075263917446136,0.002872665412724018,0.16075263917446136,0.15228986740112305,0.0021422533318400383,0.15228986740112305,,, +,,,,326,2025-10-19 18:05:58.875752,,,,,,,0.1478029042482376,0.0024466379545629025,0.1478029042482376 +0.14869849383831024,0.0011691186809912324,0.14869849383831024,19599.0,327,2025-10-19 18:10:42.369977,,,,,,,,, +,,,,327,2025-10-19 18:14:04.077116,0.1558387130498886,0.001919204369187355,0.1558387130498886,0.15572838485240936,0.0014456914504989982,0.15572838485240936,,, +,,,,327,2025-10-19 18:14:29.741377,,,,,,,0.14889183640480042,0.0023320710752159357,0.14889183640480042 +0.1484614759683609,0.0008920861291699111,0.1484614759683609,19649.0,328,2025-10-19 18:18:20.167567,,,,,,,,, +,,,,328,2025-10-19 18:22:16.880808,0.15516529977321625,0.001659103319980204,0.15516529977321625,0.14636091887950897,0.0017421739175915718,0.14636091887950897,,, +,,,,328,2025-10-19 18:22:41.679597,,,,,,,0.1570340394973755,0.0023245306219905615,0.1570340394973755 +0.1531628668308258,0.002721635391935706,0.1531628668308258,19699.0,329,2025-10-19 18:25:37.271436,,,,,,,,, +,,,,329,2025-10-19 18:30:47.862442,0.15333262085914612,0.0030444436706602573,0.15333262085914612,0.1453736424446106,0.0024456109385937452,0.1453736424446106,,, +,,,,329,2025-10-19 18:31:36.433786,,,,,,,0.1531836986541748,0.00249076378531754,0.1531836986541748 +0.15341892838478088,0.0021412898786365986,0.15341892838478088,19749.0,330,2025-10-19 18:33:26.259910,,,,,,,,, +0.15314708650112152,0.0011949861655011773,0.15314708650112152,19799.0,330,2025-10-19 18:38:01.442621,,,,,,,,, +,,,,330,2025-10-19 18:39:38.653592,0.1622767448425293,0.0020139082334935665,0.1622767448425293,0.16073265671730042,0.002011824632063508,0.16073265671730042,,, +,,,,330,2025-10-19 18:40:04.236517,,,,,,,0.15136031806468964,0.0021813989151269197,0.15136031806468964 +0.15203557908535004,0.0040755425579845905,0.15203557908535004,19849.0,331,2025-10-19 18:46:02.283554,,,,,,,,, +,,,,331,2025-10-19 18:48:18.108437,0.1428762525320053,0.0018677450716495514,0.1428762525320053,0.15590019524097443,0.0015463029267266393,0.15590019524097443,,, +,,,,331,2025-10-19 18:48:46.077605,,,,,,,0.1476603001356125,0.002001838991418481,0.1476603001356125 +0.16194453835487366,0.0017540660919621587,0.16194453835487366,19899.0,332,2025-10-19 18:53:34.626732,,,,,,,,, +,,,,332,2025-10-19 18:56:43.819918,0.1596086025238037,0.003108019707724452,0.1596086025238037,0.1668846756219864,0.0016680448316037655,0.1668846756219864,,, +,,,,332,2025-10-19 18:57:09.536684,,,,,,,0.15377910435199738,0.0022231366019695997,0.15377910435199738 +0.13084742426872253,0.002443957142531872,0.13084742426872253,19949.0,333,2025-10-19 19:00:53.253737,,,,,,,,, +,,,,333,2025-10-19 19:05:22.084998,0.13890111446380615,0.0020005423575639725,0.13890111446380615,0.15996384620666504,0.0020225096959620714,0.15996384620666504,,, +,,,,333,2025-10-19 19:05:48.168029,,,,,,,0.1514495313167572,0.0024636886082589626,0.1514495313167572 +0.11226579546928406,0.0027725256513804197,0.11226579546928406,19999.0,334,2025-10-19 19:08:37.457467,,,,,,,,, +,,,,334,2025-10-19 19:13:44.510060,0.16277725994586945,0.002411369001492858,0.16277725994586945,0.1567196249961853,0.002333875745534897,0.1567196249961853,,, +,,,,334,2025-10-19 19:14:09.401463,,,,,,,0.15160518884658813,0.002592379692941904,0.15160518884658813 +0.15199778974056244,0.002490198239684105,0.15199778974056244,20049.0,335,2025-10-19 19:16:02.931300,,,,,,,,, +0.14602531492710114,0.0010675149969756603,0.14602531492710114,20099.0,335,2025-10-19 19:20:43.829218,,,,,,,,, +,,,,335,2025-10-19 19:22:18.613277,0.1654980331659317,0.0028099878691136837,0.1654980331659317,0.15378069877624512,0.0018093520775437355,0.15378069877624512,,, +,,,,335,2025-10-19 19:22:44.287558,,,,,,,0.15146119892597198,0.002114050555974245,0.15146119892597198 +0.15168842673301697,0.0011694820132106543,0.15168842673301697,20149.0,336,2025-10-19 19:28:46.056821,,,,,,,,, +,,,,336,2025-10-19 19:31:06.720610,0.14793749153614044,0.0024909835774451494,0.14793749153614044,0.1512591391801834,0.0021187695674598217,0.1512591391801834,,, +,,,,336,2025-10-19 19:31:34.348694,,,,,,,0.15290416777133942,0.0021339664235711098,0.15290416777133942 +0.14489184319972992,0.0010521650547161698,0.14489184319972992,20199.0,337,2025-10-19 19:36:24.770671,,,,,,,,, +,,,,337,2025-10-19 19:39:27.434030,0.150334894657135,0.002917683683335781,0.150334894657135,0.15318135917186737,0.001657301327213645,0.15318135917186737,,, +,,,,337,2025-10-19 19:39:53.616619,,,,,,,0.15032607316970825,0.002154306508600712,0.15032607316970825 +0.13132260739803314,0.0034694995265454054,0.13132260739803314,20249.0,338,2025-10-19 19:43:59.044302,,,,,,,,, +,,,,338,2025-10-19 19:48:04.687988,0.16207709908485413,0.0018313887994736433,0.16207709908485413,0.15060071647167206,0.0014894244959577918,0.15060071647167206,,, +,,,,338,2025-10-19 19:48:30.977230,,,,,,,0.15398308634757996,0.0024918385315686464,0.15398308634757996 +0.14207811653614044,0.0012377382954582572,0.14207811653614044,20299.0,339,2025-10-19 19:51:34.377847,,,,,,,,, +,,,,339,2025-10-19 19:56:42.175608,0.1452459692955017,0.0023688552901148796,0.1452459692955017,0.16326580941677094,0.0030382154509425163,0.16326580941677094,,, +,,,,339,2025-10-19 19:57:09.419293,,,,,,,0.15334206819534302,0.002106229541823268,0.15334206819534302 +0.15891426801681519,0.002104436280205846,0.15891426801681519,20349.0,340,2025-10-19 19:58:56.254263,,,,,,,,, +0.17914940416812897,0.003432807745411992,0.17914940416812897,20399.0,340,2025-10-19 20:04:05.694139,,,,,,,,, +,,,,340,2025-10-19 20:05:41.024630,0.16188964247703552,0.0021959710866212845,0.16188964247703552,0.13972117006778717,0.0013013568241149187,0.13972117006778717,,, +,,,,340,2025-10-19 20:06:31.315249,,,,,,,0.14817923307418823,0.0022522318176925182,0.14817923307418823 +0.15012504160404205,0.0026526411529630423,0.15012504160404205,20449.0,341,2025-10-19 20:11:59.438576,,,,,,,,, +,,,,341,2025-10-19 20:14:34.969612,0.15356291830539703,0.0031637991778552532,0.15356291830539703,0.14860382676124573,0.0012059203581884503,0.14860382676124573,,, +,,,,341,2025-10-19 20:15:02.127380,,,,,,,0.15257324278354645,0.0022275701630860567,0.15257324278354645 +0.13125301897525787,0.0034912023693323135,0.13125301897525787,20499.0,342,2025-10-19 20:19:56.490345,,,,,,,,, +,,,,342,2025-10-19 20:23:08.740794,0.16026166081428528,0.0037219589576125145,0.16026166081428528,0.15843667089939117,0.001757598016411066,0.15843667089939117,,, +,,,,342,2025-10-19 20:23:34.801258,,,,,,,0.14761759340763092,0.0020786128006875515,0.14761759340763092 +0.12336273491382599,0.0015470052603632212,0.12336273491382599,20549.0,343,2025-10-19 20:27:09.625195,,,,,,,,, +,,,,343,2025-10-19 20:31:36.611417,0.15696455538272858,0.0019285575253888965,0.15696455538272858,0.1519690304994583,0.0012949182419106364,0.1519690304994583,,, +,,,,343,2025-10-19 20:32:02.853435,,,,,,,0.15470637381076813,0.0025448354426771402,0.15470637381076813 +0.16032524406909943,0.0011513675563037395,0.16032524406909943,20599.0,344,2025-10-19 20:34:44.006300,,,,,,,,, +,,,,344,2025-10-19 20:39:54.833558,0.15478111803531647,0.0024996884167194366,0.15478111803531647,0.14731387794017792,0.0019454763969406486,0.14731387794017792,,, +,,,,344,2025-10-19 20:40:20.052890,,,,,,,0.15514609217643738,0.002700365614145994,0.15514609217643738 +0.13717475533485413,0.0009538785670883954,0.13717475533485413,20649.0,345,2025-10-19 20:42:09.222066,,,,,,,,, +0.15611685812473297,0.0021758051589131355,0.15611685812473297,20699.0,345,2025-10-19 20:46:50.478514,,,,,,,,, +,,,,345,2025-10-19 20:48:25.146322,0.15077993273735046,0.001831565867178142,0.15077993273735046,0.14330901205539703,0.0013873676070943475,0.14330901205539703,,, +,,,,345,2025-10-19 20:49:14.629293,,,,,,,0.1520809382200241,0.002425732556730509,0.1520809382200241 +0.15154746174812317,0.002207554876804352,0.15154746174812317,20749.0,346,2025-10-19 20:55:07.742120,,,,,,,,, +,,,,346,2025-10-19 20:57:23.171746,0.16306950151920319,0.002629698719829321,0.16306950151920319,0.1604558229446411,0.0026533533819019794,0.1604558229446411,,, +,,,,346,2025-10-19 20:57:48.156186,,,,,,,0.1526680588722229,0.002356467302888632,0.1526680588722229 +0.15133745968341827,0.001132794190198183,0.15133745968341827,20799.0,347,2025-10-19 21:02:51.301203,,,,,,,,, +,,,,347,2025-10-19 21:06:17.337500,0.15956324338912964,0.0019680275581777096,0.15956324338912964,0.16001835465431213,0.0027032403741031885,0.16001835465431213,,, +,,,,347,2025-10-19 21:06:41.716031,,,,,,,0.14987285435199738,0.0023544507566839457,0.14987285435199738 +0.1333857774734497,0.0017973515205085278,0.1333857774734497,20849.0,348,2025-10-19 21:10:32.278500,,,,,,,,, +,,,,348,2025-10-19 21:14:44.879283,0.1528196781873703,0.0026248758658766747,0.1528196781873703,0.15081419050693512,0.0012911076191812754,0.15081419050693512,,, +,,,,348,2025-10-19 21:15:10.102243,,,,,,,0.15236243605613708,0.002064961241558194,0.15236243605613708 +0.13777704536914825,0.0008096411474980414,0.13777704536914825,20899.0,349,2025-10-19 21:17:56.468308,,,,,,,,, +,,,,349,2025-10-19 21:23:03.026801,0.15448115766048431,0.0026713754050433636,0.15448115766048431,0.1495061218738556,0.002879527397453785,0.1495061218738556,,, +,,,,349,2025-10-19 21:23:27.677150,,,,,,,0.15503498911857605,0.002196790184825659,0.15503498911857605 +0.1379787176847458,0.0013691064668819308,0.1379787176847458,20949.0,350,2025-10-19 21:25:20.203255,,,,,,,,, +0.13456109166145325,0.0014300805050879717,0.13456109166145325,20999.0,350,2025-10-19 21:29:47.726515,,,,,,,,, +,,,,350,2025-10-19 21:31:22.030834,0.1530885547399521,0.001456531579606235,0.1530885547399521,0.16464778780937195,0.0020932999905198812,0.16464778780937195,,, +,,,,350,2025-10-19 21:31:47.723328,,,,,,,0.14882639050483704,0.0020378364715725183,0.14882639050483704 +0.13952350616455078,0.0009288221481256187,0.13952350616455078,21049.0,351,2025-10-19 21:37:20.210413,,,,,,,,, +,,,,351,2025-10-19 21:39:43.442958,0.1521458625793457,0.002610317664220929,0.1521458625793457,0.15789832174777985,0.0020755825098603964,0.15789832174777985,,, +,,,,351,2025-10-19 21:40:08.469063,,,,,,,0.1496049165725708,0.002062966115772724,0.1496049165725708 +0.15642502903938293,0.0022808334324508905,0.15642502903938293,21099.0,352,2025-10-19 21:45:12.249989,,,,,,,,, +,,,,352,2025-10-19 21:48:18.481392,0.1611349880695343,0.003694772720336914,0.1611349880695343,0.16350694000720978,0.0024063594173640013,0.16350694000720978,,, +,,,,352,2025-10-19 21:48:43.893440,,,,,,,0.14686140418052673,0.0021372924093157053,0.14686140418052673 +0.14458025991916656,0.0010363933397457004,0.14458025991916656,21149.0,353,2025-10-19 21:52:33.763108,,,,,,,,, +,,,,353,2025-10-19 21:56:54.255937,0.1468711644411087,0.0022991481237113476,0.1468711644411087,0.1599506437778473,0.0027636925224214792,0.1599506437778473,,, +,,,,353,2025-10-19 21:57:20.486790,,,,,,,0.1484837830066681,0.00198866194114089,0.1484837830066681 +0.15664899349212646,0.003934108652174473,0.15664899349212646,21199.0,354,2025-10-19 22:00:20.405751,,,,,,,,, +,,,,354,2025-10-19 22:05:24.009088,0.157644584774971,0.002930725459009409,0.157644584774971,0.15242505073547363,0.0024304348044097424,0.15242505073547363,,, +,,,,354,2025-10-19 22:05:52.098734,,,,,,,0.15044914186000824,0.002321201376616955,0.15044914186000824 +0.1631026566028595,0.004520595073699951,0.1631026566028595,21249.0,355,2025-10-19 22:07:42.204972,,,,,,,,, +0.14850200712680817,0.0020590920466929674,0.14850200712680817,21299.0,355,2025-10-19 22:12:43.062456,,,,,,,,, +,,,,355,2025-10-19 22:14:22.990311,0.16149242222309113,0.0026990410406142473,0.16149242222309113,0.14773137867450714,0.0012907407945021987,0.14773137867450714,,, +,,,,355,2025-10-19 22:14:49.468747,,,,,,,0.14974729716777802,0.002237228211015463,0.14974729716777802 +0.16343358159065247,0.001840441720560193,0.16343358159065247,21349.0,356,2025-10-19 22:20:51.742791,,,,,,,,, +,,,,356,2025-10-19 22:23:06.028913,0.16555413603782654,0.0037690859753638506,0.16555413603782654,0.15721195936203003,0.0018532162066549063,0.15721195936203003,,, +,,,,356,2025-10-19 22:23:32.514121,,,,,,,0.1508292853832245,0.0022502830252051353,0.1508292853832245 +0.15752962231636047,0.001256516668945551,0.15752962231636047,21399.0,357,2025-10-19 22:28:28.956594,,,,,,,,, +,,,,357,2025-10-19 22:31:49.087093,0.15193046629428864,0.002236847532913089,0.15193046629428864,0.15397249162197113,0.0025048423558473587,0.15397249162197113,,, +,,,,357,2025-10-19 22:32:17.058017,,,,,,,0.15290825068950653,0.0023853532038629055,0.15290825068950653 +0.14123253524303436,0.0014876504428684711,0.14123253524303436,21449.0,358,2025-10-19 22:36:18.706541,,,,,,,,, +,,,,358,2025-10-19 22:40:18.745208,0.15152062475681305,0.0024075591936707497,0.15152062475681305,0.16288334131240845,0.0022226846776902676,0.16288334131240845,,, +,,,,358,2025-10-19 22:40:45.538667,,,,,,,0.14796042442321777,0.00218565808609128,0.14796042442321777 +0.1386258453130722,0.0007550850277766585,0.1386258453130722,21499.0,359,2025-10-19 22:43:27.473847,,,,,,,,, +,,,,359,2025-10-19 22:48:55.284838,0.1506097912788391,0.0015951996902003884,0.1506097912788391,0.15350110828876495,0.0019558363128453493,0.15350110828876495,,, +,,,,359,2025-10-19 22:49:21.430497,,,,,,,0.1514386087656021,0.0023169992491602898,0.1514386087656021 +0.1415528804063797,0.005230304319411516,0.1415528804063797,21549.0,360,2025-10-19 22:51:15.507703,,,,,,,,, +0.13803730905056,0.0013066950486972928,0.13803730905056,21599.0,360,2025-10-19 22:55:50.147390,,,,,,,,, +,,,,360,2025-10-19 22:57:24.186927,0.1562640368938446,0.001462816260755062,0.1562640368938446,0.1493949443101883,0.002360409824177623,0.1493949443101883,,, +,,,,360,2025-10-19 22:57:48.449025,,,,,,,0.15029610693454742,0.002476901514455676,0.15029610693454742 +0.17605066299438477,0.004364033229649067,0.17605066299438477,21649.0,361,2025-10-19 23:03:34.407176,,,,,,,,, +,,,,361,2025-10-19 23:05:47.970489,0.15196114778518677,0.0018179849721491337,0.15196114778518677,0.15055540204048157,0.001355250715278089,0.15055540204048157,,, +,,,,361,2025-10-19 23:06:14.930599,,,,,,,0.14988437294960022,0.00201394222676754,0.14988437294960022 +0.15773440897464752,0.0048024593852460384,0.15773440897464752,21699.0,362,2025-10-19 23:10:54.525745,,,,,,,,, +,,,,362,2025-10-19 23:14:18.923308,0.14978337287902832,0.0021026981994509697,0.14978337287902832,0.1531846821308136,0.0018793657654896379,0.1531846821308136,,, +,,,,362,2025-10-19 23:14:44.853894,,,,,,,0.14582708477973938,0.0021397119853645563,0.14582708477973938 +0.1503124237060547,0.0024567225482314825,0.1503124237060547,21749.0,363,2025-10-19 23:18:22.646079,,,,,,,,, +,,,,363,2025-10-19 23:22:28.513333,0.1557556837797165,0.0034270635806024075,0.1557556837797165,0.15467838943004608,0.0018297728383913636,0.15467838943004608,,, +,,,,363,2025-10-19 23:22:55.318015,,,,,,,0.1490688920021057,0.002201127354055643,0.1490688920021057 +0.14753815531730652,0.0038426246028393507,0.14753815531730652,21799.0,364,2025-10-19 23:25:48.534122,,,,,,,,, +,,,,364,2025-10-19 23:31:03.129661,0.1379004567861557,0.0021258103661239147,0.1379004567861557,0.15077722072601318,0.0013347273925319314,0.15077722072601318,,, +,,,,364,2025-10-19 23:31:29.563126,,,,,,,0.15000924468040466,0.0022934195585548878,0.15000924468040466 +0.15880902111530304,0.0021919547580182552,0.15880902111530304,21849.0,365,2025-10-19 23:33:13.227837,,,,,,,,, +0.14106157422065735,0.0038005237001925707,0.14106157422065735,21899.0,365,2025-10-19 23:37:44.854632,,,,,,,,, +,,,,365,2025-10-19 23:39:17.230355,0.1441473513841629,0.0014292355626821518,0.1441473513841629,0.14342400431632996,0.0011019548401236534,0.14342400431632996,,, +,,,,365,2025-10-19 23:39:42.742734,,,,,,,0.1528967320919037,0.0022032808046787977,0.1528967320919037 +0.15645736455917358,0.0014483027625828981,0.15645736455917358,21949.0,366,2025-10-19 23:45:36.955921,,,,,,,,, +,,,,366,2025-10-19 23:47:52.718197,0.15418238937854767,0.0019586491398513317,0.15418238937854767,0.14667390286922455,0.0023860076908022165,0.14667390286922455,,, +,,,,366,2025-10-19 23:48:20.108478,,,,,,,0.1499779373407364,0.0018885597819462419,0.1499779373407364 +0.14454440772533417,0.0011902928818017244,0.14454440772533417,21999.0,367,2025-10-19 23:53:08.417486,,,,,,,,, +,,,,367,2025-10-19 23:56:17.171009,0.14969560503959656,0.0022630272433161736,0.14969560503959656,0.15659281611442566,0.0028747348114848137,0.15659281611442566,,, +,,,,367,2025-10-19 23:56:42.259034,,,,,,,0.1500169038772583,0.0024170312099158764,0.1500169038772583 +0.1360192894935608,0.0011527026072144508,0.1360192894935608,22049.0,368,2025-10-20 00:00:42.655479,,,,,,,,, +,,,,368,2025-10-20 00:05:08.488938,0.15878529846668243,0.0021842580754309893,0.15878529846668243,0.15049338340759277,0.0016903989017009735,0.15049338340759277,,, +,,,,368,2025-10-20 00:05:34.696505,,,,,,,0.1499805450439453,0.0022009345702826977,0.1499805450439453 +0.14622028172016144,0.0025987629778683186,0.14622028172016144,22099.0,369,2025-10-20 00:08:37.597352,,,,,,,,, +,,,,369,2025-10-20 00:13:31.243547,0.14840127527713776,0.0022417756263166666,0.14840127527713776,0.1531100869178772,0.003633214393630624,0.1531100869178772,,, +,,,,369,2025-10-20 00:13:56.383122,,,,,,,0.1512414664030075,0.0023755652364343405,0.1512414664030075 +0.1707381159067154,0.001721797394566238,0.1707381159067154,22149.0,370,2025-10-20 00:15:42.516282,,,,,,,,, +0.157256618142128,0.002103751292452216,0.157256618142128,22199.0,370,2025-10-20 00:20:17.783022,,,,,,,,, +,,,,370,2025-10-20 00:21:53.659483,0.15712004899978638,0.0015452858060598373,0.15712004899978638,0.15155662596225739,0.0025521968491375446,0.15155662596225739,,, +,,,,370,2025-10-20 00:22:19.406057,,,,,,,0.1494724452495575,0.0023089908063411713,0.1494724452495575 +0.13260409235954285,0.006997146178036928,0.13260409235954285,22249.0,371,2025-10-20 00:28:20.595636,,,,,,,,, +,,,,371,2025-10-20 00:30:36.036773,0.1616322100162506,0.0016048431862145662,0.1616322100162506,0.15369361639022827,0.003670657519251108,0.15369361639022827,,, +,,,,371,2025-10-20 00:31:02.138466,,,,,,,0.14904485642910004,0.002365005435422063,0.14904485642910004 +0.1319124847650528,0.00148265331517905,0.1319124847650528,22299.0,372,2025-10-20 00:35:45.545329,,,,,,,,, +,,,,372,2025-10-20 00:38:56.737013,0.14663991332054138,0.001416494487784803,0.14663991332054138,0.14541810750961304,0.002050405368208885,0.14541810750961304,,, +,,,,372,2025-10-20 00:39:24.053983,,,,,,,0.1490846872329712,0.002465581288561225,0.1490846872329712 +0.15060077607631683,0.004066115245223045,0.15060077607631683,22349.0,373,2025-10-20 00:43:43.267119,,,,,,,,, +,,,,373,2025-10-20 00:47:27.392418,0.1570344865322113,0.0020837653428316116,0.1570344865322113,0.1504630148410797,0.0014101710403338075,0.1504630148410797,,, +,,,,373,2025-10-20 00:47:54.658190,,,,,,,0.1484614461660385,0.002350402297452092,0.1484614461660385 +0.15144754946231842,0.0043020606972277164,0.15144754946231842,22399.0,374,2025-10-20 00:50:35.493755,,,,,,,,, +,,,,374,2025-10-20 00:55:55.058841,0.1644219607114792,0.002233500825241208,0.1644219607114792,0.16349801421165466,0.0031178549397736788,0.16349801421165466,,, +,,,,374,2025-10-20 00:56:21.352784,,,,,,,0.14919129014015198,0.002289260970428586,0.14919129014015198 +0.16279570758342743,0.00118461181409657,0.16279570758342743,22449.0,375,2025-10-20 00:58:17.837126,,,,,,,,, +0.12466753274202347,0.002570714568719268,0.12466753274202347,22499.0,375,2025-10-20 01:03:17.195491,,,,,,,,, +,,,,375,2025-10-20 01:04:49.874769,0.14965610206127167,0.0014789463020861149,0.14965610206127167,0.1530415117740631,0.002745544072240591,0.1530415117740631,,, +,,,,375,2025-10-20 01:05:16.488490,,,,,,,0.1450912058353424,0.0024137315340340137,0.1450912058353424 +0.16191887855529785,0.0011296048760414124,0.16191887855529785,22549.0,376,2025-10-20 01:11:07.280460,,,,,,,,, +,,,,376,2025-10-20 01:13:27.024242,0.14982984960079193,0.00154107843991369,0.14982984960079193,0.15723158419132233,0.0023976375814527273,0.15723158419132233,,, +,,,,376,2025-10-20 01:13:52.689329,,,,,,,0.1500254124403,0.002244514413177967,0.1500254124403 +0.12337607890367508,0.0012179434997960925,0.12337607890367508,22599.0,377,2025-10-20 01:18:43.782812,,,,,,,,, +,,,,377,2025-10-20 01:22:05.683036,0.15152011811733246,0.0022616146598011255,0.15152011811733246,0.15445667505264282,0.003452735021710396,0.15445667505264282,,, +,,,,377,2025-10-20 01:22:32.849553,,,,,,,0.1514463722705841,0.002400260651484132,0.1514463722705841 +0.13024644553661346,0.0008530400809831917,0.13024644553661346,22649.0,378,2025-10-20 01:26:17.117032,,,,,,,,, +,,,,378,2025-10-20 01:30:27.501364,0.1532035917043686,0.0027622696943581104,0.1532035917043686,0.1456070989370346,0.0017131961649283767,0.1456070989370346,,, +,,,,378,2025-10-20 01:30:55.134798,,,,,,,0.14803358912467957,0.002162923337891698,0.14803358912467957 +0.17120221257209778,0.001340127782896161,0.17120221257209778,22699.0,379,2025-10-20 01:33:46.700860,,,,,,,,, +,,,,379,2025-10-20 01:39:31.257365,0.1408424824476242,0.002230757148936391,0.1408424824476242,0.15700271725654602,0.0023165924940258265,0.15700271725654602,,, +,,,,379,2025-10-20 01:39:56.785052,,,,,,,0.1485532820224762,0.0020320492330938578,0.1485532820224762 +0.11686737090349197,0.0008361268555745482,0.11686737090349197,22749.0,380,2025-10-20 01:41:53.110791,,,,,,,,, +0.12035239487886429,0.0016960605280473828,0.12035239487886429,22799.0,380,2025-10-20 01:46:46.831493,,,,,,,,, +,,,,380,2025-10-20 01:48:23.341260,0.15097902715206146,0.0022256774827837944,0.15097902715206146,0.1485500931739807,0.003687181742861867,0.1485500931739807,,, +,,,,380,2025-10-20 01:48:49.086401,,,,,,,0.14589297771453857,0.002209753729403019,0.14589297771453857 +0.17016315460205078,0.001471164752729237,0.17016315460205078,22849.0,381,2025-10-20 01:54:30.165865,,,,,,,,, +,,,,381,2025-10-20 01:57:00.402142,0.14778189361095428,0.0014836253831163049,0.14778189361095428,0.15876144170761108,0.0019326683832332492,0.15876144170761108,,, +,,,,381,2025-10-20 01:57:27.334480,,,,,,,0.15041254460811615,0.0021358022931963205,0.15041254460811615 +0.13194026052951813,0.0030366878490895033,0.13194026052951813,22899.0,382,2025-10-20 02:02:47.665494,,,,,,,,, +,,,,382,2025-10-20 02:05:54.499539,0.14609618484973907,0.0016656842781230807,0.14609618484973907,0.1464657187461853,0.0029432629235088825,0.1464657187461853,,, +,,,,382,2025-10-20 02:06:21.442664,,,,,,,0.14800938963890076,0.0022045038640499115,0.14800938963890076 +0.13890844583511353,0.0010276847751811147,0.13890844583511353,22949.0,383,2025-10-20 02:10:23.579432,,,,,,,,, +,,,,383,2025-10-20 02:14:36.380171,0.14767707884311676,0.0020820775534957647,0.14767707884311676,0.1503114253282547,0.0026540334802120924,0.1503114253282547,,, +,,,,383,2025-10-20 02:15:02.250398,,,,,,,0.14648592472076416,0.002004365436732769,0.14648592472076416 +0.12376987189054489,0.0015579289756715298,0.12376987189054489,22999.0,384,2025-10-20 02:17:56.008479,,,,,,,,, +,,,,384,2025-10-20 02:23:10.829658,0.1609649509191513,0.0034460732713341713,0.1609649509191513,0.15467938780784607,0.0038384366780519485,0.15467938780784607,,, +,,,,384,2025-10-20 02:23:37.294891,,,,,,,0.1470647007226944,0.002180605661123991,0.1470647007226944 +0.1553170531988144,0.0023218910209834576,0.1553170531988144,23049.0,385,2025-10-20 02:25:27.977142,,,,,,,,, +0.16503578424453735,0.0015989621169865131,0.16503578424453735,23099.0,385,2025-10-20 02:29:54.295993,,,,,,,,, +,,,,385,2025-10-20 02:31:27.519853,0.145887091755867,0.0022996573243290186,0.145887091755867,0.14806896448135376,0.001780603895895183,0.14806896448135376,,, +,,,,385,2025-10-20 02:31:56.412911,,,,,,,0.15272104740142822,0.0023798702750355005,0.15272104740142822 +0.15401680767536163,0.001757115707732737,0.15401680767536163,23149.0,386,2025-10-20 02:38:04.286715,,,,,,,,, +,,,,386,2025-10-20 02:40:21.621707,0.14325553178787231,0.0014092602068558335,0.14325553178787231,0.1598694771528244,0.0024819085374474525,0.1598694771528244,,, +,,,,386,2025-10-20 02:40:47.119012,,,,,,,0.15196260809898376,0.0021819365210831165,0.15196260809898376 +0.16991026699543,0.002546250121667981,0.16991026699543,23199.0,387,2025-10-20 02:45:34.518772,,,,,,,,, +,,,,387,2025-10-20 02:49:09.844463,0.1539110541343689,0.0035623442381620407,0.1539110541343689,0.15205873548984528,0.0025188587605953217,0.15205873548984528,,, +,,,,387,2025-10-20 02:49:36.079335,,,,,,,0.14778544008731842,0.0021481001749634743,0.14778544008731842 +0.15675359964370728,0.0025799607392400503,0.15675359964370728,23249.0,388,2025-10-20 02:53:44.289945,,,,,,,,, +,,,,388,2025-10-20 02:57:49.812188,0.1572151631116867,0.0039357529021799564,0.1572151631116867,0.1494007259607315,0.0011799834901466966,0.1494007259607315,,, +,,,,388,2025-10-20 02:58:16.003628,,,,,,,0.14690861105918884,0.002136378549039364,0.14690861105918884 +0.140010803937912,0.0018537921132519841,0.140010803937912,23299.0,389,2025-10-20 03:01:19.885963,,,,,,,,, +,,,,389,2025-10-20 03:06:24.242185,0.14874789118766785,0.0027471655048429966,0.14874789118766785,0.15003620088100433,0.002585539361461997,0.15003620088100433,,, +,,,,389,2025-10-20 03:06:50.708229,,,,,,,0.14827130734920502,0.0024300795048475266,0.14827130734920502 +0.17680759727954865,0.0019564430695027113,0.17680759727954865,23349.0,390,2025-10-20 03:08:47.522851,,,,,,,,, +0.17877981066703796,0.003706233110278845,0.17877981066703796,23399.0,390,2025-10-20 03:13:14.614770,,,,,,,,, +,,,,390,2025-10-20 03:14:51.290504,0.15606258809566498,0.0020936469081789255,0.15606258809566498,0.14564186334609985,0.0013450682163238525,0.14564186334609985,,, +,,,,390,2025-10-20 03:15:18.099958,,,,,,,0.15018871426582336,0.0020121962297707796,0.15018871426582336 +0.16663417220115662,0.0033039026893675327,0.16663417220115662,23449.0,391,2025-10-20 03:21:00.724996,,,,,,,,, +,,,,391,2025-10-20 03:23:30.714520,0.14807645976543427,0.003200356150045991,0.14807645976543427,0.1534915715456009,0.0015078861033543944,0.1534915715456009,,, +,,,,391,2025-10-20 03:23:56.687714,,,,,,,0.15131519734859467,0.002536045853048563,0.15131519734859467 +0.153102844953537,0.0016133167082443833,0.153102844953537,23499.0,392,2025-10-20 03:28:44.784830,,,,,,,,, +,,,,392,2025-10-20 03:31:49.717036,0.1462945193052292,0.0018089758232235909,0.1462945193052292,0.15081848204135895,0.0020466758869588375,0.15081848204135895,,, +,,,,392,2025-10-20 03:32:16.638756,,,,,,,0.15132057666778564,0.002603919943794608,0.15132057666778564 +0.16758987307548523,0.004456511233001947,0.16758987307548523,23549.0,393,2025-10-20 03:36:08.516175,,,,,,,,, +,,,,393,2025-10-20 03:40:38.106287,0.14682689309120178,0.0014464008854702115,0.14682689309120178,0.15027140080928802,0.0012750430032610893,0.15027140080928802,,, +,,,,393,2025-10-20 03:41:04.612497,,,,,,,0.14872495830059052,0.0023069942835718393,0.14872495830059052 +0.1323995590209961,0.0007866100640967488,0.1323995590209961,23599.0,394,2025-10-20 03:43:44.507026,,,,,,,,, +,,,,394,2025-10-20 03:49:16.259909,0.1650218814611435,0.0021948623470962048,0.1650218814611435,0.16478398442268372,0.002135950606316328,0.16478398442268372,,, +,,,,394,2025-10-20 03:49:42.622414,,,,,,,0.15485307574272156,0.002083556028082967,0.15485307574272156 +0.15657727420330048,0.0011502399574965239,0.15657727420330048,23649.0,395,2025-10-20 03:51:38.787916,,,,,,,,, +0.1583477407693863,0.0013557327911257744,0.1583477407693863,23699.0,395,2025-10-20 03:56:18.183159,,,,,,,,, +,,,,395,2025-10-20 03:57:53.245840,0.15151531994342804,0.001882675918750465,0.15151531994342804,0.16314902901649475,0.003038894385099411,0.16314902901649475,,, +,,,,395,2025-10-20 03:58:20.567725,,,,,,,0.14958824217319489,0.002353489166125655,0.14958824217319489 +0.15002836287021637,0.0009954542620107532,0.15002836287021637,23749.0,396,2025-10-20 04:04:23.816876,,,,,,,,, +,,,,396,2025-10-20 04:06:38.826274,0.14575012028217316,0.0027305784169584513,0.14575012028217316,0.1564042866230011,0.0027793135959655046,0.1564042866230011,,, +,,,,396,2025-10-20 04:07:04.987261,,,,,,,0.15070632100105286,0.002026599133387208,0.15070632100105286 +0.16346009075641632,0.00113245181273669,0.16346009075641632,23799.0,397,2025-10-20 04:11:52.537560,,,,,,,,, +,,,,397,2025-10-20 04:14:54.955827,0.14939148724079132,0.0015395770315080881,0.14939148724079132,0.14989180862903595,0.0034350852947682142,0.14989180862903595,,, +,,,,397,2025-10-20 04:15:21.917324,,,,,,,0.15203732252120972,0.0020000857766717672,0.15203732252120972 +0.14443033933639526,0.0021804391872137785,0.14443033933639526,23849.0,398,2025-10-20 04:19:19.758583,,,,,,,,, +,,,,398,2025-10-20 04:23:25.313415,0.15186750888824463,0.002480011200532317,0.15186750888824463,0.15010088682174683,0.0016351420199498534,0.15010088682174683,,, +,,,,398,2025-10-20 04:23:52.838379,,,,,,,0.1462506651878357,0.002204624703153968,0.1462506651878357 +0.15454022586345673,0.001393509446643293,0.15454022586345673,23899.0,399,2025-10-20 04:26:57.241444,,,,,,,,, +,,,,399,2025-10-20 04:31:59.394645,0.14524605870246887,0.0018836314557120204,0.14524605870246887,0.1573840081691742,0.0018575855065137148,0.1573840081691742,,, +,,,,399,2025-10-20 04:32:27.268117,,,,,,,0.14428022503852844,0.0016757354605942965,0.14428022503852844 +0.15112289786338806,0.001371655729599297,0.15112289786338806,23949.0,400,2025-10-20 04:34:04.768392,,,,,,,,, +0.16027969121932983,0.002985453000292182,0.16027969121932983,23999.0,400,2025-10-20 04:38:58.555741,,,,,,,,, +,,,,400,2025-10-20 04:40:38.265576,0.1503409445285797,0.0025559794157743454,0.1503409445285797,0.15889108180999756,0.0043276334181427956,0.15889108180999756,,, +,,,,400,2025-10-20 04:41:04.967210,,,,,,,0.14725959300994873,0.0021967163775116205,0.14725959300994873 +0.14835362136363983,0.000882487918715924,0.14835362136363983,24049.0,401,2025-10-20 04:46:38.930872,,,,,,,,, +,,,,401,2025-10-20 04:49:10.183916,0.14822642505168915,0.001563750091008842,0.14822642505168915,0.16340181231498718,0.0017375636380165815,0.16340181231498718,,, +,,,,401,2025-10-20 04:49:37.325363,,,,,,,0.15168145298957825,0.002326836111024022,0.15168145298957825 +0.15866197645664215,0.001298312097787857,0.15866197645664215,24099.0,402,2025-10-20 04:54:23.306780,,,,,,,,, +,,,,402,2025-10-20 04:57:41.512553,0.1556652933359146,0.0020176335237920284,0.1556652933359146,0.15935340523719788,0.0024242280051112175,0.15935340523719788,,, +,,,,402,2025-10-20 04:58:07.825359,,,,,,,0.1492154747247696,0.0022577496711164713,0.1492154747247696 +0.13822732865810394,0.0030485419556498528,0.13822732865810394,24149.0,403,2025-10-20 05:02:15.223445,,,,,,,,, +,,,,403,2025-10-20 05:06:28.604490,0.14585041999816895,0.0019310986390337348,0.14585041999816895,0.1476573944091797,0.002627953188493848,0.1476573944091797,,, +,,,,403,2025-10-20 05:06:55.227995,,,,,,,0.1483687311410904,0.0022086959797888994,0.1483687311410904 +0.11638423800468445,0.0008749892585910857,0.11638423800468445,24199.0,404,2025-10-20 05:09:46.987105,,,,,,,,, +,,,,404,2025-10-20 05:15:03.103874,0.14885897934436798,0.002449591178447008,0.14885897934436798,0.1564469039440155,0.0023540682159364223,0.1564469039440155,,, +,,,,404,2025-10-20 05:15:30.323075,,,,,,,0.1420534998178482,0.0022194411139935255,0.1420534998178482 +0.12013847380876541,0.002824803115800023,0.12013847380876541,24249.0,405,2025-10-20 05:17:24.582438,,,,,,,,, +0.13336299359798431,0.0009440651629120111,0.13336299359798431,24299.0,405,2025-10-20 05:21:54.198528,,,,,,,,, +,,,,405,2025-10-20 05:23:28.155730,0.15172818303108215,0.002914159558713436,0.15172818303108215,0.1542278379201889,0.0025036537554115057,0.1542278379201889,,, +,,,,405,2025-10-20 05:23:53.064680,,,,,,,0.14851289987564087,0.0023098494857549667,0.14851289987564087 +0.1647483855485916,0.0014076820807531476,0.1647483855485916,24349.0,406,2025-10-20 05:29:48.001840,,,,,,,,, +,,,,406,2025-10-20 05:32:03.560052,0.148956298828125,0.0027102914173156023,0.148956298828125,0.15456128120422363,0.0032394088339060545,0.15456128120422363,,, +,,,,406,2025-10-20 05:32:28.792943,,,,,,,0.15083472430706024,0.002336803823709488,0.15083472430706024 +0.12934646010398865,0.0014719775645062327,0.12934646010398865,24399.0,407,2025-10-20 05:36:56.983393,,,,,,,,, +,,,,407,2025-10-20 05:40:07.033364,0.1540927141904831,0.0021282027009874582,0.1540927141904831,0.16051800549030304,0.0031147252302616835,0.16051800549030304,,, +,,,,407,2025-10-20 05:40:33.006342,,,,,,,0.1494429111480713,0.002125887433066964,0.1494429111480713 +0.11143231391906738,0.0006919080042280257,0.11143231391906738,24449.0,408,2025-10-20 05:44:49.244142,,,,,,,,, +,,,,408,2025-10-20 05:49:16.776363,0.16039426624774933,0.003053360851481557,0.16039426624774933,0.1543959230184555,0.002714344998821616,0.1543959230184555,,, +,,,,408,2025-10-20 05:49:41.952820,,,,,,,0.1466294825077057,0.0021339436061680317,0.1466294825077057 +0.15404319763183594,0.004950147587805986,0.15404319763183594,24499.0,409,2025-10-20 05:52:51.612252,,,,,,,,, +,,,,409,2025-10-20 05:57:45.320049,0.15307950973510742,0.0025378260761499405,0.15307950973510742,0.14765626192092896,0.002881743712350726,0.14765626192092896,,, +,,,,409,2025-10-20 05:58:10.885602,,,,,,,0.14796361327171326,0.0019841196481138468,0.14796361327171326 +0.13410110771656036,0.0014041222166270018,0.13410110771656036,24549.0,410,2025-10-20 05:59:56.346754,,,,,,,,, +0.1549886018037796,0.0025197211652994156,0.1549886018037796,24599.0,410,2025-10-20 06:04:38.192003,,,,,,,,, +,,,,410,2025-10-20 06:06:13.554982,0.1496868133544922,0.002763441763818264,0.1496868133544922,0.1604354977607727,0.002059108577668667,0.1604354977607727,,, +,,,,410,2025-10-20 06:06:39.917615,,,,,,,0.14596602320671082,0.002194194821640849,0.14596602320671082 +0.14884699881076813,0.003230936359614134,0.14884699881076813,24649.0,411,2025-10-20 06:12:41.360580,,,,,,,,, +,,,,411,2025-10-20 06:15:03.234597,0.16059595346450806,0.004837671760469675,0.16059595346450806,0.16674365103244781,0.001704186899587512,0.16674365103244781,,, +,,,,411,2025-10-20 06:15:29.232715,,,,,,,0.15064232051372528,0.0028194442857056856,0.15064232051372528 +0.1494724005460739,0.002958781085908413,0.1494724005460739,24699.0,412,2025-10-20 06:20:31.886906,,,,,,,,, +,,,,412,2025-10-20 06:23:38.492458,0.1588125377893448,0.0031499110627919436,0.1588125377893448,0.14464977383613586,0.0017308407695963979,0.14464977383613586,,, +,,,,412,2025-10-20 06:24:09.125475,,,,,,,0.14621394872665405,0.002359862672165036,0.14621394872665405 +0.13755162060260773,0.0028504575602710247,0.13755162060260773,24749.0,413,2025-10-20 06:27:44.319850,,,,,,,,, +,,,,413,2025-10-20 06:32:09.302420,0.16356758773326874,0.004361632280051708,0.16356758773326874,0.15336251258850098,0.0022986342664808035,0.15336251258850098,,, +,,,,413,2025-10-20 06:32:36.121709,,,,,,,0.1486446112394333,0.0020474374759942293,0.1486446112394333 +0.15418849885463715,0.0018917672568932176,0.15418849885463715,24799.0,414,2025-10-20 06:35:34.484654,,,,,,,,, +,,,,414,2025-10-20 06:40:34.573052,0.14261846244335175,0.0022481256164610386,0.14261846244335175,0.15649159252643585,0.0015069828368723392,0.15649159252643585,,, +,,,,414,2025-10-20 06:41:01.680209,,,,,,,0.14985276758670807,0.0021451341453939676,0.14985276758670807 +0.13710759580135345,0.003209706861525774,0.13710759580135345,24849.0,415,2025-10-20 06:42:58.755971,,,,,,,,, +0.1668255627155304,0.0018874049419537187,0.1668255627155304,24899.0,415,2025-10-20 06:47:12.621739,,,,,,,,, +,,,,415,2025-10-20 06:48:51.293439,0.16073718667030334,0.0020503089763224125,0.16073718667030334,0.16078339517116547,0.0025691401679068804,0.16078339517116547,,, +,,,,415,2025-10-20 06:49:17.542689,,,,,,,0.14568094909191132,0.0023340850602835417,0.14568094909191132 +0.1972753256559372,0.001895022694952786,0.1972753256559372,24949.0,416,2025-10-20 06:54:57.821437,,,,,,,,, +,,,,416,2025-10-20 06:57:25.309141,0.14449374377727509,0.001737871440127492,0.14449374377727509,0.1625400334596634,0.0025605249684304,0.1625400334596634,,, +,,,,416,2025-10-20 06:57:52.209703,,,,,,,0.14951680600643158,0.001989214913919568,0.14951680600643158 +0.1383143812417984,0.0009583330247551203,0.1383143812417984,24999.0,417,2025-10-20 07:02:31.781788,,,,,,,,, +,,,,417,2025-10-20 07:05:45.831597,0.15379256010055542,0.001561251818202436,0.15379256010055542,0.15649567544460297,0.002696278039366007,0.15649567544460297,,, +,,,,417,2025-10-20 07:06:12.701129,,,,,,,0.15187855064868927,0.002131423680111766,0.15187855064868927 +0.16960586607456207,0.001728698844090104,0.16960586607456207,25049.0,418,2025-10-20 07:10:13.795848,,,,,,,,, +,,,,418,2025-10-20 07:14:15.797878,0.1413556933403015,0.002559460699558258,0.1413556933403015,0.15223872661590576,0.002326816786080599,0.15223872661590576,,, +,,,,418,2025-10-20 07:14:43.099608,,,,,,,0.15303616225719452,0.002221408998593688,0.15303616225719452 +0.14368484914302826,0.001163708628155291,0.14368484914302826,25099.0,419,2025-10-20 07:17:23.763188,,,,,,,,, +,,,,419,2025-10-20 07:22:38.415085,0.16612926125526428,0.003442400600761175,0.16612926125526428,0.1473076045513153,0.0027315146289765835,0.1473076045513153,,, +,,,,419,2025-10-20 07:23:04.609651,,,,,,,0.14706841111183167,0.002131475368514657,0.14706841111183167 +0.14950673282146454,0.0016424476634711027,0.14950673282146454,25149.0,420,2025-10-20 07:24:55.184340,,,,,,,,, +0.19123926758766174,0.0033837431110441685,0.19123926758766174,25199.0,420,2025-10-20 07:29:32.689770,,,,,,,,, +,,,,420,2025-10-20 07:31:06.500116,0.138157919049263,0.001879986491985619,0.138157919049263,0.14615888893604279,0.001572527107782662,0.14615888893604279,,, +,,,,420,2025-10-20 07:31:33.225315,,,,,,,0.149504616856575,0.002265415620058775,0.149504616856575 +0.12374524772167206,0.002154082292690873,0.12374524772167206,25249.0,421,2025-10-20 07:37:34.856868,,,,,,,,, +,,,,421,2025-10-20 07:39:50.628869,0.15069301426410675,0.002688013482838869,0.15069301426410675,0.16324512660503387,0.0034987505059689283,0.16324512660503387,,, +,,,,421,2025-10-20 07:40:16.942909,,,,,,,0.14558444917201996,0.0020571912173181772,0.14558444917201996 +0.1664644032716751,0.0024791022296994925,0.1664644032716751,25299.0,422,2025-10-20 07:45:17.892803,,,,,,,,, +,,,,422,2025-10-20 07:48:20.370033,0.15033119916915894,0.0019045287044718862,0.15033119916915894,0.1504213958978653,0.0022720119450241327,0.1504213958978653,,, +,,,,422,2025-10-20 07:48:47.267654,,,,,,,0.14946122467517853,0.002127494663000107,0.14946122467517853 +0.17408673465251923,0.0015113261761143804,0.17408673465251923,25349.0,423,2025-10-20 07:52:38.244054,,,,,,,,, +,,,,423,2025-10-20 07:56:42.352839,0.15634587407112122,0.0023599956184625626,0.15634587407112122,0.15708044171333313,0.0018796171061694622,0.15708044171333313,,, +,,,,423,2025-10-20 07:57:09.978340,,,,,,,0.14890101552009583,0.002130872569978237,0.14890101552009583 +0.13427628576755524,0.0009189024567604065,0.13427628576755524,25399.0,424,2025-10-20 07:59:57.055333,,,,,,,,, +,,,,424,2025-10-20 08:05:24.201698,0.1470429003238678,0.0024816638324409723,0.1470429003238678,0.15055064857006073,0.0017185601172968745,0.15055064857006073,,, +,,,,424,2025-10-20 08:05:51.471882,,,,,,,0.1474216878414154,0.002188065554946661,0.1474216878414154 +0.14261233806610107,0.003021224867552519,0.14261233806610107,25449.0,425,2025-10-20 08:07:42.986856,,,,,,,,, +0.13851585984230042,0.0012002075091004372,0.13851585984230042,25499.0,425,2025-10-20 08:12:19.472796,,,,,,,,, +,,,,425,2025-10-20 08:13:56.588493,0.15178559720516205,0.00213491078466177,0.15178559720516205,0.14736294746398926,0.002888330491259694,0.14736294746398926,,, +,,,,425,2025-10-20 08:14:23.458537,,,,,,,0.15045307576656342,0.002518814755603671,0.15045307576656342 +0.15496373176574707,0.0021841845009475946,0.15496373176574707,25549.0,426,2025-10-20 08:20:17.623686,,,,,,,,, +,,,,426,2025-10-20 08:22:40.034173,0.15591268241405487,0.002413650741800666,0.15591268241405487,0.14945657551288605,0.0014819600619375706,0.14945657551288605,,, +,,,,426,2025-10-20 08:23:06.581272,,,,,,,0.14802907407283783,0.002329824725165963,0.14802907407283783 +0.19666048884391785,0.0021320534870028496,0.19666048884391785,25599.0,427,2025-10-20 08:27:45.730763,,,,,,,,, +,,,,427,2025-10-20 08:31:02.556457,0.16022364795207977,0.0015168075915426016,0.16022364795207977,0.14428557455539703,0.0015113286208361387,0.14428557455539703,,, +,,,,427,2025-10-20 08:31:28.997640,,,,,,,0.1488952934741974,0.0022181877866387367,0.1488952934741974 +0.17456166446208954,0.0015677781775593758,0.17456166446208954,25649.0,428,2025-10-20 08:35:13.671714,,,,,,,,, +,,,,428,2025-10-20 08:39:23.285102,0.14836721122264862,0.002013541292399168,0.14836721122264862,0.14781980216503143,0.0027467350009828806,0.14781980216503143,,, +,,,,428,2025-10-20 08:39:50.028745,,,,,,,0.14611968398094177,0.0018246447434648871,0.14611968398094177 +0.1369837075471878,0.0027135624550282955,0.1369837075471878,25699.0,429,2025-10-20 08:42:43.815809,,,,,,,,, +,,,,429,2025-10-20 08:48:01.645123,0.14500175416469574,0.0012515635462477803,0.14500175416469574,0.1476997286081314,0.0025376828853040934,0.1476997286081314,,, +,,,,429,2025-10-20 08:48:27.549611,,,,,,,0.14847998321056366,0.0023306752555072308,0.14847998321056366 +0.11447703838348389,0.0007712098304182291,0.11447703838348389,25749.0,430,2025-10-20 08:50:18.180832,,,,,,,,, +0.1318281590938568,0.000861560576595366,0.1318281590938568,25799.0,430,2025-10-20 08:54:50.952696,,,,,,,,, +,,,,430,2025-10-20 08:56:25.379087,0.15407487750053406,0.0028156989719718695,0.15407487750053406,0.15833793580532074,0.003754129633307457,0.15833793580532074,,, +,,,,430,2025-10-20 08:56:51.234103,,,,,,,0.14608021080493927,0.0020293279085308313,0.14608021080493927 +0.17006832361221313,0.004767164587974548,0.17006832361221313,25849.0,431,2025-10-20 09:02:28.993469,,,,,,,,, +,,,,431,2025-10-20 09:05:09.412734,0.15099841356277466,0.0031184155959635973,0.15099841356277466,0.15629197657108307,0.0031658820807933807,0.15629197657108307,,, +,,,,431,2025-10-20 09:05:36.846508,,,,,,,0.14613230526447296,0.0022781442385166883,0.14613230526447296 +0.13369044661521912,0.002039757091552019,0.13369044661521912,25899.0,432,2025-10-20 09:10:19.011356,,,,,,,,, +,,,,432,2025-10-20 09:13:32.139613,0.14640238881111145,0.002433380112051964,0.14640238881111145,0.14665833115577698,0.0013471255078911781,0.14665833115577698,,, +,,,,432,2025-10-20 09:13:59.440183,,,,,,,0.1479390263557434,0.002091315109282732,0.1479390263557434 +0.13560517132282257,0.004598353523761034,0.13560517132282257,25949.0,433,2025-10-20 09:18:02.907338,,,,,,,,, +,,,,433,2025-10-20 09:22:16.315481,0.14854629337787628,0.001488788053393364,0.14854629337787628,0.15631861984729767,0.002067845780402422,0.15631861984729767,,, +,,,,433,2025-10-20 09:22:42.840244,,,,,,,0.1496078073978424,0.0022615327034145594,0.1496078073978424 +0.14937905967235565,0.004113087896257639,0.14937905967235565,25999.0,434,2025-10-20 09:25:35.368978,,,,,,,,, +,,,,434,2025-10-20 09:30:53.032269,0.15206539630889893,0.0027200663462281227,0.15206539630889893,0.1438017338514328,0.0012126018991693854,0.1438017338514328,,, +,,,,434,2025-10-20 09:31:20.143619,,,,,,,0.14892297983169556,0.002267783274874091,0.14892297983169556 +0.17683792114257812,0.002856506034731865,0.17683792114257812,26049.0,435,2025-10-20 09:33:18.119256,,,,,,,,, +0.13534991443157196,0.001336121466010809,0.13534991443157196,26099.0,435,2025-10-20 09:37:46.038147,,,,,,,,, +,,,,435,2025-10-20 09:39:16.981491,0.14354580640792847,0.0034708245657384396,0.14354580640792847,0.16090980172157288,0.002626778557896614,0.16090980172157288,,, +,,,,435,2025-10-20 09:39:43.264235,,,,,,,0.14854244887828827,0.0022747376933693886,0.14854244887828827 +0.17335955798625946,0.0024009316693991423,0.17335955798625946,26149.0,436,2025-10-20 09:45:20.739879,,,,,,,,, +,,,,436,2025-10-20 09:47:34.551219,0.1552121639251709,0.0018116389401257038,0.1552121639251709,0.15948906540870667,0.0016922514187172055,0.15948906540870667,,, +,,,,436,2025-10-20 09:47:59.780259,,,,,,,0.15053915977478027,0.0023962869308888912,0.15053915977478027 +0.1618918478488922,0.0011711919214576483,0.1618918478488922,26199.0,437,2025-10-20 09:52:47.017293,,,,,,,,, +,,,,437,2025-10-20 09:56:03.948933,0.15056045353412628,0.0032681142911314964,0.15056045353412628,0.14960961043834686,0.0017859431682154536,0.14960961043834686,,, +,,,,437,2025-10-20 09:56:29.691816,,,,,,,0.15008065104484558,0.0022202336695045233,0.15008065104484558 +0.1431731879711151,0.001144477166235447,0.1431731879711151,26249.0,438,2025-10-20 10:00:38.467636,,,,,,,,, +,,,,438,2025-10-20 10:04:41.401648,0.1567750722169876,0.002272040117532015,0.1567750722169876,0.15928857028484344,0.0020099952816963196,0.15928857028484344,,, +,,,,438,2025-10-20 10:05:06.644000,,,,,,,0.14376388490200043,0.00199430831708014,0.14376388490200043 +0.11668707430362701,0.0007570773013867438,0.11668707430362701,26299.0,439,2025-10-20 10:08:07.196540,,,,,,,,, +,,,,439,2025-10-20 10:13:11.550052,0.14537553489208221,0.0014847480924800038,0.14537553489208221,0.14810846745967865,0.0013151755556464195,0.14810846745967865,,, +,,,,439,2025-10-20 10:13:38.252719,,,,,,,0.15150555968284607,0.0021739916410297155,0.15150555968284607 +0.14318078756332397,0.0033568982034921646,0.14318078756332397,26349.0,440,2025-10-20 10:15:37.387961,,,,,,,,, +0.15949268639087677,0.0021552483085542917,0.15949268639087677,26399.0,440,2025-10-20 10:20:23.234392,,,,,,,,, +,,,,440,2025-10-20 10:21:58.458670,0.1387399286031723,0.0023133058566600084,0.1387399286031723,0.13608671724796295,0.0009800497209653258,0.13608671724796295,,, +,,,,440,2025-10-20 10:22:47.986154,,,,,,,0.14963437616825104,0.002444592537358403,0.14963437616825104 +0.13165432214736938,0.0009345855214633048,0.13165432214736938,26449.0,441,2025-10-20 10:28:28.102868,,,,,,,,, +,,,,441,2025-10-20 10:30:49.666759,0.14878268539905548,0.0026889988221228123,0.14878268539905548,0.16260668635368347,0.002157550770789385,0.16260668635368347,,, +,,,,441,2025-10-20 10:31:16.769820,,,,,,,0.14728482067584991,0.00205877423286438,0.14728482067584991 +0.16681303083896637,0.0038007234688848257,0.16681303083896637,26499.0,442,2025-10-20 10:36:18.939633,,,,,,,,, +,,,,442,2025-10-20 10:39:27.830071,0.16384510695934296,0.0029642251320183277,0.16384510695934296,0.15335769951343536,0.003576250048354268,0.15335769951343536,,, +,,,,442,2025-10-20 10:39:54.749846,,,,,,,0.14810597896575928,0.00227341684512794,0.14810597896575928 +0.1612144410610199,0.002244355855509639,0.1612144410610199,26549.0,443,2025-10-20 10:43:49.298581,,,,,,,,, +,,,,443,2025-10-20 10:47:56.034992,0.14635403454303741,0.0028474959544837475,0.14635403454303741,0.1526506245136261,0.0025999690406024456,0.1526506245136261,,, +,,,,443,2025-10-20 10:48:22.121279,,,,,,,0.15069034695625305,0.0025595773477107286,0.15069034695625305 +0.14250828325748444,0.0008288793615065515,0.14250828325748444,26599.0,444,2025-10-20 10:51:12.385407,,,,,,,,, +,,,,444,2025-10-20 10:56:03.560292,0.14720375835895538,0.0018323234980925918,0.14720375835895538,0.16396264731884003,0.003100675530731678,0.16396264731884003,,, +,,,,444,2025-10-20 10:56:28.978715,,,,,,,0.1455947905778885,0.0021363866981118917,0.1455947905778885 +0.17327824234962463,0.0020162530709058046,0.17327824234962463,26649.0,445,2025-10-20 10:58:20.948777,,,,,,,,, +0.18264815211296082,0.0014487181324511766,0.18264815211296082,26699.0,445,2025-10-20 11:03:00.631008,,,,,,,,, +,,,,445,2025-10-20 11:04:41.430839,0.14895302057266235,0.0020639875438064337,0.14895302057266235,0.16452880203723907,0.003014041343703866,0.16452880203723907,,, +,,,,445,2025-10-20 11:05:08.749705,,,,,,,0.15084749460220337,0.0022413835395127535,0.15084749460220337 +0.13875506818294525,0.0011443434050306678,0.13875506818294525,26749.0,446,2025-10-20 11:10:40.133605,,,,,,,,, +,,,,446,2025-10-20 11:12:59.907061,0.15692974627017975,0.0027877576649188995,0.15692974627017975,0.14587359130382538,0.0014908184530213475,0.14587359130382538,,, +,,,,446,2025-10-20 11:13:26.101855,,,,,,,0.14704975485801697,0.002221951959654689,0.14704975485801697 +0.13384051620960236,0.0036384682171046734,0.13384051620960236,26799.0,447,2025-10-20 11:18:32.235708,,,,,,,,, +,,,,447,2025-10-20 11:21:35.682385,0.15375301241874695,0.0029638500418514013,0.15375301241874695,0.14526961743831635,0.0028444717172533274,0.14526961743831635,,, +,,,,447,2025-10-20 11:22:03.244423,,,,,,,0.14387451112270355,0.0018235561437904835,0.14387451112270355 +0.12799136340618134,0.0008304265793412924,0.12799136340618134,26849.0,448,2025-10-20 11:26:13.448885,,,,,,,,, +,,,,448,2025-10-20 11:30:11.942501,0.14845947921276093,0.0023799159098416567,0.14845947921276093,0.1439211070537567,0.002601241460070014,0.1439211070537567,,, +,,,,448,2025-10-20 11:30:38.891795,,,,,,,0.15104255080223083,0.002207385143265128,0.15104255080223083 +0.15890783071517944,0.0020797711331397295,0.15890783071517944,26899.0,449,2025-10-20 11:33:28.771476,,,,,,,,, +,,,,449,2025-10-20 11:38:46.592435,0.14993882179260254,0.0028134349267929792,0.14993882179260254,0.1575232893228531,0.0018333863699808717,0.1575232893228531,,, +,,,,449,2025-10-20 11:39:12.719865,,,,,,,0.1466059535741806,0.0020387794356793165,0.1466059535741806 +0.1396588236093521,0.001194045296870172,0.1396588236093521,26949.0,450,2025-10-20 11:41:05.931923,,,,,,,,, +0.130869522690773,0.0009645755053497851,0.130869522690773,26999.0,450,2025-10-20 11:45:40.290442,,,,,,,,, +,,,,450,2025-10-20 11:47:17.026745,0.1540953367948532,0.004184746649116278,0.1540953367948532,0.15508784353733063,0.003314516507089138,0.15508784353733063,,, +,,,,450,2025-10-20 11:47:43.223410,,,,,,,0.1496974229812622,0.002262618625536561,0.1496974229812622 +0.15896981954574585,0.003928639460355043,0.15896981954574585,27049.0,451,2025-10-20 11:53:07.748958,,,,,,,,, +,,,,451,2025-10-20 11:55:36.256258,0.15960614383220673,0.0023672140669077635,0.15960614383220673,0.15483945608139038,0.0015064632752910256,0.15483945608139038,,, +,,,,451,2025-10-20 11:56:04.579462,,,,,,,0.1496487259864807,0.0022779314313083887,0.1496487259864807 +0.15311375260353088,0.0011332191061228514,0.15311375260353088,27099.0,452,2025-10-20 12:01:02.889697,,,,,,,,, +,,,,452,2025-10-20 12:04:17.959147,0.14211495220661163,0.0017756654415279627,0.14211495220661163,0.1384965181350708,0.001517599681392312,0.1384965181350708,,, +,,,,452,2025-10-20 12:05:08.402577,,,,,,,0.1525489240884781,0.0023803450167179108,0.1525489240884781 +0.17642928659915924,0.0017762555507943034,0.17642928659915924,27149.0,453,2025-10-20 12:08:40.503933,,,,,,,,, +,,,,453,2025-10-20 12:13:18.230248,0.1440759003162384,0.0031369924545288086,0.1440759003162384,0.15783657133579254,0.0026717742439359426,0.15783657133579254,,, +,,,,453,2025-10-20 12:13:45.763208,,,,,,,0.14621666073799133,0.002067670924589038,0.14621666073799133 +0.14096471667289734,0.00112696283031255,0.14096471667289734,27199.0,454,2025-10-20 12:16:48.050930,,,,,,,,, +,,,,454,2025-10-20 12:22:09.983051,0.14634212851524353,0.002048474969342351,0.14634212851524353,0.15306682884693146,0.0018985944334417582,0.15306682884693146,,, +,,,,454,2025-10-20 12:22:36.317253,,,,,,,0.14718054234981537,0.0019994534086436033,0.14718054234981537 +0.136477991938591,0.0011947855819016695,0.136477991938591,27249.0,455,2025-10-20 12:24:25.645097,,,,,,,,, +0.1272977590560913,0.0008291340200230479,0.1272977590560913,27299.0,455,2025-10-20 12:29:34.503697,,,,,,,,, +,,,,455,2025-10-20 12:31:12.753210,0.15776889026165009,0.002682189689949155,0.15776889026165009,0.14825303852558136,0.0019910652190446854,0.14825303852558136,,, +,,,,455,2025-10-20 12:31:38.705106,,,,,,,0.14833584427833557,0.0022566448897123337,0.14833584427833557 +0.16399431228637695,0.004345193039625883,0.16399431228637695,27349.0,456,2025-10-20 12:37:09.220146,,,,,,,,, +,,,,456,2025-10-20 12:39:36.159693,0.14895470440387726,0.002812324557453394,0.14895470440387726,0.14084745943546295,0.0026355728041380644,0.14084745943546295,,, +,,,,456,2025-10-20 12:40:04.606737,,,,,,,0.14689315855503082,0.002230200683698058,0.14689315855503082 +0.16581319272518158,0.0014537248061969876,0.16581319272518158,27399.0,457,2025-10-20 12:45:11.992979,,,,,,,,, +,,,,457,2025-10-20 12:48:52.490364,0.15034614503383636,0.00241286912932992,0.15034614503383636,0.1487196385860443,0.0020276280120015144,0.1487196385860443,,, +,,,,457,2025-10-20 12:49:20.497158,,,,,,,0.14515317976474762,0.002017964841797948,0.14515317976474762 +0.1366899013519287,0.000983119709417224,0.1366899013519287,27449.0,458,2025-10-20 12:53:17.056661,,,,,,,,, +,,,,458,2025-10-20 12:57:30.293736,0.15845128893852234,0.003201565006747842,0.15845128893852234,0.1575642079114914,0.0023450155276805162,0.1575642079114914,,, +,,,,458,2025-10-20 12:57:57.093195,,,,,,,0.14872847497463226,0.0023503631819039583,0.14872847497463226 +0.14419303834438324,0.000914351490791887,0.14419303834438324,27499.0,459,2025-10-20 13:00:47.837218,,,,,,,,, +,,,,459,2025-10-20 13:06:08.809549,0.1471962034702301,0.0013079936616122723,0.1471962034702301,0.15240563452243805,0.002770614344626665,0.15240563452243805,,, +,,,,459,2025-10-20 13:06:35.414486,,,,,,,0.14850901067256927,0.0021375298965722322,0.14850901067256927 +0.15719866752624512,0.0017676461720839143,0.15719866752624512,27549.0,460,2025-10-20 13:08:19.449460,,,,,,,,, +0.16846272349357605,0.002198859117925167,0.16846272349357605,27599.0,460,2025-10-20 13:13:10.678086,,,,,,,,, +,,,,460,2025-10-20 13:14:49.299409,0.14764952659606934,0.002756207250058651,0.14764952659606934,0.15249691903591156,0.0020691982936114073,0.15249691903591156,,, +,,,,460,2025-10-20 13:15:17.219093,,,,,,,0.14678242802619934,0.002329618204385042,0.14678242802619934 +0.15751776099205017,0.0015062413876876235,0.15751776099205017,27649.0,461,2025-10-20 13:21:37.786782,,,,,,,,, +,,,,461,2025-10-20 13:23:51.035688,0.1496344357728958,0.0013260089326649904,0.1496344357728958,0.15297847986221313,0.0023933472111821175,0.15297847986221313,,, +,,,,461,2025-10-20 13:24:18.234159,,,,,,,0.1479422152042389,0.0022902025375515223,0.1479422152042389 +0.13303080201148987,0.0014087350573390722,0.13303080201148987,27699.0,462,2025-10-20 13:29:10.772847,,,,,,,,, +,,,,462,2025-10-20 13:32:20.079685,0.1453695148229599,0.002088218694552779,0.1453695148229599,0.14347214996814728,0.0012515931157395244,0.14347214996814728,,, +,,,,462,2025-10-20 13:32:45.917995,,,,,,,0.150303915143013,0.0020317118614912033,0.150303915143013 +0.153456449508667,0.004223027732223272,0.153456449508667,27749.0,463,2025-10-20 13:36:37.486768,,,,,,,,, +,,,,463,2025-10-20 13:41:01.198938,0.14542384445667267,0.002840286586433649,0.14542384445667267,0.14904652535915375,0.0019639702513813972,0.14904652535915375,,, +,,,,463,2025-10-20 13:41:28.069368,,,,,,,0.14599186182022095,0.002391365822404623,0.14599186182022095 +0.16246335208415985,0.0015606319066137075,0.16246335208415985,27799.0,464,2025-10-20 13:44:47.851176,,,,,,,,, +,,,,464,2025-10-20 13:50:10.623871,0.14526088535785675,0.0025021571200340986,0.14526088535785675,0.14591319859027863,0.002332719974219799,0.14591319859027863,,, +,,,,464,2025-10-20 13:50:36.131112,,,,,,,0.1494322568178177,0.0024911221116781235,0.1494322568178177 +0.1548972874879837,0.002520583337172866,0.1548972874879837,27849.0,465,2025-10-20 13:52:24.544264,,,,,,,,, +0.1405075043439865,0.0013327501947060227,0.1405075043439865,27899.0,465,2025-10-20 13:57:18.660654,,,,,,,,, +,,,,465,2025-10-20 13:58:59.977647,0.1482153683900833,0.0035403966903686523,0.1482153683900833,0.1453719437122345,0.001594628905877471,0.1453719437122345,,, +,,,,465,2025-10-20 13:59:29.388108,,,,,,,0.14818231761455536,0.0023634324315935373,0.14818231761455536 +0.14465147256851196,0.0020904839038848877,0.14465147256851196,27949.0,466,2025-10-20 14:05:33.461321,,,,,,,,, +,,,,466,2025-10-20 14:07:54.665119,0.14954979717731476,0.003304943209514022,0.14954979717731476,0.1537444144487381,0.002659221412613988,0.1537444144487381,,, +,,,,466,2025-10-20 14:08:21.069448,,,,,,,0.14676249027252197,0.0021047985646873713,0.14676249027252197 +0.15840159356594086,0.0019139419309794903,0.15840159356594086,27999.0,467,2025-10-20 14:13:37.637894,,,,,,,,, +,,,,467,2025-10-20 14:16:52.456403,0.15698698163032532,0.002612787764519453,0.15698698163032532,0.15706337988376617,0.003821446094661951,0.15706337988376617,,, +,,,,467,2025-10-20 14:17:19.499335,,,,,,,0.1421719789505005,0.0021195218432694674,0.1421719789505005 +0.13932417333126068,0.0019503950607031584,0.13932417333126068,28049.0,468,2025-10-20 14:21:35.165771,,,,,,,,, +,,,,468,2025-10-20 14:25:33.878170,0.15314283967018127,0.003108709817752242,0.15314283967018127,0.16234326362609863,0.0018787893932312727,0.16234326362609863,,, +,,,,468,2025-10-20 14:26:00.550100,,,,,,,0.15065373480319977,0.0026051392778754234,0.15065373480319977 +0.15205205976963043,0.0012601633789017797,0.15205205976963043,28099.0,469,2025-10-20 14:28:48.613097,,,,,,,,, +,,,,469,2025-10-20 14:33:58.877653,0.15036088228225708,0.002071159891784191,0.15036088228225708,0.15684562921524048,0.0014150586212053895,0.15684562921524048,,, +,,,,469,2025-10-20 14:34:26.797527,,,,,,,0.14760246872901917,0.0022466538939625025,0.14760246872901917 +0.14629307389259338,0.003680151654407382,0.14629307389259338,28149.0,470,2025-10-20 14:36:16.080990,,,,,,,,, +0.14108875393867493,0.0033939029090106487,0.14108875393867493,28199.0,470,2025-10-20 14:40:47.609198,,,,,,,,, +,,,,470,2025-10-20 14:42:25.863683,0.150849387049675,0.002272541867569089,0.150849387049675,0.14801065623760223,0.0014153070515021682,0.14801065623760223,,, +,,,,470,2025-10-20 14:42:53.284775,,,,,,,0.1474541425704956,0.0022591722663491964,0.1474541425704956 +0.13999898731708527,0.0016153235919773579,0.13999898731708527,28249.0,471,2025-10-20 14:48:52.209800,,,,,,,,, +,,,,471,2025-10-20 14:51:07.309671,0.13910524547100067,0.0013769761426374316,0.13910524547100067,0.14631083607673645,0.0015917631099000573,0.14631083607673645,,, +,,,,471,2025-10-20 14:51:36.012984,,,,,,,0.14885999262332916,0.0023871874436736107,0.14885999262332916 +0.17263628542423248,0.0014898024965077639,0.17263628542423248,28299.0,472,2025-10-20 14:56:27.564689,,,,,,,,, +,,,,472,2025-10-20 14:59:47.127816,0.14221680164337158,0.0014495581854134798,0.14221680164337158,0.15934409201145172,0.0017543979920446873,0.15934409201145172,,, +,,,,472,2025-10-20 15:00:13.182323,,,,,,,0.1488494873046875,0.002088724635541439,0.1488494873046875 +0.14587390422821045,0.0017675042618066072,0.14587390422821045,28349.0,473,2025-10-20 15:04:14.898617,,,,,,,,, +,,,,473,2025-10-20 15:08:14.588970,0.14546990394592285,0.0021173444110900164,0.14546990394592285,0.14143790304660797,0.001842967001721263,0.14143790304660797,,, +,,,,473,2025-10-20 15:08:42.953461,,,,,,,0.14283886551856995,0.0019279089756309986,0.14283886551856995 +0.11653731763362885,0.0011380364885553718,0.11653731763362885,28399.0,474,2025-10-20 15:11:24.406752,,,,,,,,, +,,,,474,2025-10-20 15:16:44.143816,0.1521269530057907,0.002775288885459304,0.1521269530057907,0.1585085391998291,0.0022936139721423388,0.1585085391998291,,, +,,,,474,2025-10-20 15:17:12.369198,,,,,,,0.143881157040596,0.0021299358922988176,0.143881157040596 +0.14485031366348267,0.0018481831066310406,0.14485031366348267,28449.0,475,2025-10-20 15:19:06.524620,,,,,,,,, +0.11683354526758194,0.0009964547352865338,0.11683354526758194,28499.0,475,2025-10-20 15:23:33.552711,,,,,,,,, +,,,,475,2025-10-20 15:25:06.127228,0.15343870222568512,0.0017946689622476697,0.15343870222568512,0.16637077927589417,0.0026261829771101475,0.16637077927589417,,, +,,,,475,2025-10-20 15:25:33.154233,,,,,,,0.14800043404102325,0.0023928824812173843,0.14800043404102325 +0.14840367436408997,0.0009396078530699015,0.14840367436408997,28549.0,476,2025-10-20 15:31:05.859925,,,,,,,,, +,,,,476,2025-10-20 15:33:34.622748,0.14959026873111725,0.0014531138585880399,0.14959026873111725,0.15260638296604156,0.002496421104297042,0.15260638296604156,,, +,,,,476,2025-10-20 15:34:03.918004,,,,,,,0.14662480354309082,0.00220537674613297,0.14662480354309082 +0.1412019431591034,0.0038527066353708506,0.1412019431591034,28599.0,477,2025-10-20 15:39:26.142730,,,,,,,,, +,,,,477,2025-10-20 15:42:41.058941,0.15432962775230408,0.001422195928171277,0.15432962775230408,0.16218560934066772,0.002860656240954995,0.16218560934066772,,, +,,,,477,2025-10-20 15:43:08.097752,,,,,,,0.14098909497261047,0.0020796095486730337,0.14098909497261047 +0.15172308683395386,0.0015714856563135982,0.15172308683395386,28649.0,478,2025-10-20 15:46:52.243790,,,,,,,,, +,,,,478,2025-10-20 15:51:03.644214,0.14182411134243011,0.002473553642630577,0.14182411134243011,0.15403300523757935,0.0030705805402249098,0.15403300523757935,,, +,,,,478,2025-10-20 15:51:30.487358,,,,,,,0.1494482457637787,0.0019634426571428776,0.1494482457637787 +0.13754834234714508,0.003263008315116167,0.13754834234714508,28699.0,479,2025-10-20 15:54:26.296342,,,,,,,,, +,,,,479,2025-10-20 15:59:43.639294,0.1501416712999344,0.001696841325610876,0.1501416712999344,0.14720870554447174,0.001530920621007681,0.14720870554447174,,, +,,,,479,2025-10-20 16:00:09.867547,,,,,,,0.14514696598052979,0.002089847344905138,0.14514696598052979 +0.1331738978624344,0.005639027804136276,0.1331738978624344,28749.0,480,2025-10-20 16:02:00.152842,,,,,,,,, +0.15380023419857025,0.0014227109495550394,0.15380023419857025,28799.0,480,2025-10-20 16:06:36.789067,,,,,,,,, +,,,,480,2025-10-20 16:08:15.144051,0.14647501707077026,0.001686407602392137,0.14647501707077026,0.15402844548225403,0.0027695896569639444,0.15402844548225403,,, +,,,,480,2025-10-20 16:08:41.212242,,,,,,,0.14869043231010437,0.002073918469250202,0.14869043231010437 +0.12109958380460739,0.005983998533338308,0.12109958380460739,28849.0,481,2025-10-20 16:14:28.560598,,,,,,,,, +,,,,481,2025-10-20 16:16:45.939537,0.15412570536136627,0.0018855369416996837,0.15412570536136627,0.14468379318714142,0.0017447754507884383,0.14468379318714142,,, +,,,,481,2025-10-20 16:17:13.123295,,,,,,,0.1444668173789978,0.0022130473516881466,0.1444668173789978 +0.13485997915267944,0.001848081941716373,0.13485997915267944,28899.0,482,2025-10-20 16:21:59.863545,,,,,,,,, +,,,,482,2025-10-20 16:25:21.367965,0.15303178131580353,0.0026573846116662025,0.15303178131580353,0.1539965271949768,0.0026919131632894278,0.1539965271949768,,, +,,,,482,2025-10-20 16:25:47.649108,,,,,,,0.1492524892091751,0.0024995561689138412,0.1492524892091751 +0.1614198386669159,0.00206182524561882,0.1614198386669159,28949.0,483,2025-10-20 16:29:35.458492,,,,,,,,, +,,,,483,2025-10-20 16:33:55.181508,0.14106468856334686,0.0014920043759047985,0.14106468856334686,0.1484553962945938,0.0021162405610084534,0.1484553962945938,,, +,,,,483,2025-10-20 16:34:22.093402,,,,,,,0.1442643702030182,0.0019216893706470728,0.1442643702030182 +0.17645947635173798,0.001808395842090249,0.17645947635173798,28999.0,484,2025-10-20 16:37:19.734970,,,,,,,,, +,,,,484,2025-10-20 16:42:37.452960,0.15336371958255768,0.0022961401846259832,0.15336371958255768,0.15005047619342804,0.0015277471393346786,0.15005047619342804,,, +,,,,484,2025-10-20 16:43:04.823955,,,,,,,0.14682437479496002,0.0022380982991307974,0.14682437479496002 +0.12877348065376282,0.000799774017650634,0.12877348065376282,29049.0,485,2025-10-20 16:44:57.411070,,,,,,,,, +0.1517666131258011,0.0040717776864767075,0.1517666131258011,29099.0,485,2025-10-20 16:49:26.198930,,,,,,,,, +,,,,485,2025-10-20 16:51:02.587896,0.14624379575252533,0.0022747248876839876,0.14624379575252533,0.1421899050474167,0.0017964825965464115,0.1421899050474167,,, +,,,,485,2025-10-20 16:51:28.618193,,,,,,,0.14658716320991516,0.0023868775460869074,0.14658716320991516 +0.14032398164272308,0.0018540213350206614,0.14032398164272308,29149.0,486,2025-10-20 16:57:41.526378,,,,,,,,, +,,,,486,2025-10-20 16:59:54.265670,0.1452753096818924,0.0025953107979148626,0.1452753096818924,0.15364262461662292,0.0023221990559250116,0.15364262461662292,,, +,,,,486,2025-10-20 17:00:20.497537,,,,,,,0.14520138502120972,0.0023648710921406746,0.14520138502120972 +0.13613712787628174,0.0009557321900501847,0.13613712787628174,29199.0,487,2025-10-20 17:05:22.376043,,,,,,,,, +,,,,487,2025-10-20 17:08:41.579650,0.14508605003356934,0.003100997069850564,0.14508605003356934,0.14330284297466278,0.0023579371627420187,0.14330284297466278,,, +,,,,487,2025-10-20 17:09:09.194562,,,,,,,0.1497972309589386,0.002445279387757182,0.1497972309589386 +0.1414656937122345,0.0010407300433143973,0.1414656937122345,29249.0,488,2025-10-20 17:13:05.479232,,,,,,,,, +,,,,488,2025-10-20 17:17:12.698659,0.14971737563610077,0.0019394952105358243,0.14971737563610077,0.14919573068618774,0.0015692329034209251,0.14919573068618774,,, +,,,,488,2025-10-20 17:17:39.453170,,,,,,,0.1466166228055954,0.0024558156728744507,0.1466166228055954 +0.16468092799186707,0.004703932907432318,0.16468092799186707,29299.0,489,2025-10-20 17:20:36.175926,,,,,,,,, +,,,,489,2025-10-20 17:25:37.287549,0.14439252018928528,0.0020094471983611584,0.14439252018928528,0.14323365688323975,0.0018672695150598884,0.14323365688323975,,, +,,,,489,2025-10-20 17:26:04.043787,,,,,,,0.14717888832092285,0.0022701488342136145,0.14717888832092285 +0.1313975304365158,0.001411788398399949,0.1313975304365158,29349.0,490,2025-10-20 17:28:02.687137,,,,,,,,, +0.1423090696334839,0.0023120318073779345,0.1423090696334839,29399.0,490,2025-10-20 17:32:42.790778,,,,,,,,, +,,,,490,2025-10-20 17:34:20.234243,0.14465072751045227,0.0016569889849051833,0.14465072751045227,0.1506074219942093,0.00209988746792078,0.1506074219942093,,, +,,,,490,2025-10-20 17:34:46.591092,,,,,,,0.14807017147541046,0.0022391367238014936,0.14807017147541046 +0.13049323856830597,0.0015349005116149783,0.13049323856830597,29449.0,491,2025-10-20 17:40:12.029768,,,,,,,,, +,,,,491,2025-10-20 17:42:38.159529,0.14734572172164917,0.002746565267443657,0.14734572172164917,0.14734625816345215,0.0015901944134384394,0.14734625816345215,,, +,,,,491,2025-10-20 17:43:05.514287,,,,,,,0.14953474700450897,0.002654857700690627,0.14953474700450897 +0.1395440399646759,0.0011685743229463696,0.1395440399646759,29499.0,492,2025-10-20 17:47:59.170911,,,,,,,,, +,,,,492,2025-10-20 17:51:12.570569,0.15247589349746704,0.0022608141880482435,0.15247589349746704,0.14552663266658783,0.0027992187533527613,0.14552663266658783,,, +,,,,492,2025-10-20 17:51:40.743251,,,,,,,0.1467519998550415,0.001768055371940136,0.1467519998550415 +0.14602866768836975,0.0016547940904274583,0.14602866768836975,29549.0,493,2025-10-20 17:55:45.586489,,,,,,,,, +,,,,493,2025-10-20 17:59:48.375228,0.14756129682064056,0.0019505276577547193,0.14756129682064056,0.14561805129051208,0.0025332211516797543,0.14561805129051208,,, +,,,,493,2025-10-20 18:00:14.771762,,,,,,,0.14681172370910645,0.00218903343193233,0.14681172370910645 +0.13033996522426605,0.0010600914247334003,0.13033996522426605,29599.0,494,2025-10-20 18:03:09.525626,,,,,,,,, +,,,,494,2025-10-20 18:08:11.973571,0.1468578428030014,0.00234419503249228,0.1468578428030014,0.15843215584754944,0.0019359817961230874,0.15843215584754944,,, +,,,,494,2025-10-20 18:08:39.351632,,,,,,,0.14746154844760895,0.0023463130928575993,0.14746154844760895 +0.142508402466774,0.001256723189726472,0.142508402466774,29649.0,495,2025-10-20 18:10:21.468478,,,,,,,,, +0.1791539490222931,0.002272186568006873,0.1791539490222931,29699.0,495,2025-10-20 18:15:44.362054,,,,,,,,, +,,,,495,2025-10-20 18:17:20.547990,0.15321387350559235,0.0036844743881374598,0.15321387350559235,0.15644708275794983,0.002191550098359585,0.15644708275794983,,, +,,,,495,2025-10-20 18:17:46.576607,,,,,,,0.14455030858516693,0.0020654022227972746,0.14455030858516693 +0.14632512629032135,0.0019087629625573754,0.14632512629032135,29749.0,496,2025-10-20 18:23:52.410897,,,,,,,,, +,,,,496,2025-10-20 18:26:06.689413,0.1496760994195938,0.002034491393715143,0.1496760994195938,0.1546430140733719,0.0024673156440258026,0.1546430140733719,,, +,,,,496,2025-10-20 18:26:34.860407,,,,,,,0.14645494520664215,0.0023102157283574343,0.14645494520664215 +0.16513414680957794,0.0012286121491342783,0.16513414680957794,29799.0,497,2025-10-20 18:31:12.502087,,,,,,,,, +,,,,497,2025-10-20 18:34:31.979693,0.15502718091011047,0.0029275580309331417,0.15502718091011047,0.1395787000656128,0.0016915322048589587,0.1395787000656128,,, +,,,,497,2025-10-20 18:35:21.547810,,,,,,,0.14453846216201782,0.0018841144628822803,0.14453846216201782 +0.13594402372837067,0.004901279229670763,0.13594402372837067,29849.0,498,2025-10-20 18:39:18.463898,,,,,,,,, +,,,,498,2025-10-20 18:43:27.372977,0.15023007988929749,0.00171094317920506,0.15023007988929749,0.1695767194032669,0.0028575256001204252,0.1695767194032669,,, +,,,,498,2025-10-20 18:43:53.933612,,,,,,,0.14485344290733337,0.002350236289203167,0.14485344290733337 +0.15710535645484924,0.0017272364348173141,0.15710535645484924,29899.0,499,2025-10-20 18:46:46.315063,,,,,,,,, +,,,,499,2025-10-20 18:52:06.198974,0.16428545117378235,0.001950216363184154,0.16428545117378235,0.15329702198505402,0.0028576378244906664,0.15329702198505402,,, +,,,,499,2025-10-20 18:52:33.435719,,,,,,,0.14627951383590698,0.0023272172547876835,0.14627951383590698 +0.15100234746932983,0.0011219903826713562,0.15100234746932983,29949.0,500,2025-10-20 18:54:25.717155,,,,,,,,, +0.15161657333374023,0.0014011827297508717,0.15161657333374023,29999.0,500,2025-10-20 18:58:59.174703,,,,,,,,, +,,,,500,2025-10-20 19:00:34.469928,0.1536853313446045,0.0019046706147491932,0.1536853313446045,0.146746426820755,0.001471113064326346,0.146746426820755,,, +,,,,500,2025-10-20 19:01:01.301183,,,,,,,0.14418146014213562,0.0020975356455892324,0.14418146014213562 +0.17897243797779083,0.00402863509953022,0.17897243797779083,30049.0,501,2025-10-20 19:06:51.030108,,,,,,,,, +,,,,501,2025-10-20 19:09:02.780644,0.14889512956142426,0.0022572861053049564,0.14889512956142426,0.14223751425743103,0.0029393411241471767,0.14223751425743103,,, +,,,,501,2025-10-20 19:09:29.320268,,,,,,,0.14753402769565582,0.002251993166282773,0.14753402769565582 +0.1474183052778244,0.002152313943952322,0.1474183052778244,30099.0,502,2025-10-20 19:14:23.609607,,,,,,,,, +,,,,502,2025-10-20 19:17:41.969492,0.1551925539970398,0.0015107125509530306,0.1551925539970398,0.14950458705425262,0.0023450145963579416,0.14950458705425262,,, +,,,,502,2025-10-20 19:18:09.686027,,,,,,,0.14687001705169678,0.001985399518162012,0.14687001705169678 +0.14031296968460083,0.0008826101548038423,0.14031296968460083,30149.0,503,2025-10-20 19:22:03.706828,,,,,,,,, +,,,,503,2025-10-20 19:26:15.525293,0.1634991616010666,0.00254829996265471,0.1634991616010666,0.1484701931476593,0.0016061952337622643,0.1484701931476593,,, +,,,,503,2025-10-20 19:26:42.759996,,,,,,,0.14532698690891266,0.002373981988057494,0.14532698690891266 +0.14183956384658813,0.0019870910327881575,0.14183956384658813,30199.0,504,2025-10-20 19:29:33.882243,,,,,,,,, +,,,,504,2025-10-20 19:34:36.100726,0.1495206654071808,0.002374679548665881,0.1495206654071808,0.14903996884822845,0.0020976390223950148,0.14903996884822845,,, +,,,,504,2025-10-20 19:35:03.725436,,,,,,,0.14206330478191376,0.0018436710815876722,0.14206330478191376 +0.14954768121242523,0.001517328666523099,0.14954768121242523,30249.0,505,2025-10-20 19:36:55.094767,,,,,,,,, +0.13673746585845947,0.0008357623009942472,0.13673746585845947,30299.0,505,2025-10-20 19:41:36.742930,,,,,,,,, +,,,,505,2025-10-20 19:43:12.378420,0.15134914219379425,0.00172811234369874,0.15134914219379425,0.14434531331062317,0.0017553711077198386,0.14434531331062317,,, +,,,,505,2025-10-20 19:43:40.478733,,,,,,,0.14469653367996216,0.002111961366608739,0.14469653367996216 +0.14855845272541046,0.0026052838657051325,0.14855845272541046,30349.0,506,2025-10-20 19:49:30.903646,,,,,,,,, +,,,,506,2025-10-20 19:51:45.779332,0.16161797940731049,0.004033121280372143,0.16161797940731049,0.15942247211933136,0.0025872786063700914,0.15942247211933136,,, +,,,,506,2025-10-20 19:52:12.939319,,,,,,,0.14549751579761505,0.002159027848392725,0.14549751579761505 +0.14007914066314697,0.0013145814882591367,0.14007914066314697,30399.0,507,2025-10-20 19:57:03.325784,,,,,,,,, +,,,,507,2025-10-20 20:00:03.868610,0.14624956250190735,0.002360417740419507,0.14624956250190735,0.14232507348060608,0.0017910266760736704,0.14232507348060608,,, +,,,,507,2025-10-20 20:00:31.190804,,,,,,,0.14478270709514618,0.002218554960563779,0.14478270709514618 +0.1464378982782364,0.0010935688624158502,0.1464378982782364,30449.0,508,2025-10-20 20:04:49.537115,,,,,,,,, +,,,,508,2025-10-20 20:08:45.224910,0.1505364179611206,0.0020168425980955362,0.1505364179611206,0.1453898847103119,0.001430539763532579,0.1453898847103119,,, +,,,,508,2025-10-20 20:09:12.359857,,,,,,,0.14898216724395752,0.002268135314807296,0.14898216724395752 +0.16672974824905396,0.0017562535358592868,0.16672974824905396,30499.0,509,2025-10-20 20:12:11.646922,,,,,,,,, +,,,,509,2025-10-20 20:17:09.277591,0.1455652117729187,0.0015777799999341369,0.1455652117729187,0.15688969194889069,0.0027028212789446115,0.15688969194889069,,, +,,,,509,2025-10-20 20:17:35.026025,,,,,,,0.14917594194412231,0.0024264168459922075,0.14917594194412231 +0.11874384433031082,0.005050551611930132,0.11874384433031082,30549.0,510,2025-10-20 20:19:21.256753,,,,,,,,, +0.14719654619693756,0.0037853941321372986,0.14719654619693756,30599.0,510,2025-10-20 20:24:18.121459,,,,,,,,, +,,,,510,2025-10-20 20:25:51.958880,0.1560678631067276,0.0025302160065621138,0.1560678631067276,0.15244781970977783,0.0014573725638911128,0.15244781970977783,,, +,,,,510,2025-10-20 20:26:19.742560,,,,,,,0.1481984555721283,0.00205888575874269,0.1481984555721283 +0.13334614038467407,0.0011010944144800305,0.13334614038467407,30649.0,511,2025-10-20 20:32:12.503088,,,,,,,,, +,,,,511,2025-10-20 20:34:28.726556,0.15235431492328644,0.0019212717888876796,0.15235431492328644,0.1464461088180542,0.0025432375259697437,0.1464461088180542,,, +,,,,511,2025-10-20 20:34:56.645120,,,,,,,0.143925279378891,0.002431749366223812,0.143925279378891 +0.14232739806175232,0.0010060856584459543,0.14232739806175232,30699.0,512,2025-10-20 20:39:53.578106,,,,,,,,, +,,,,512,2025-10-20 20:43:06.572179,0.15425746142864227,0.002194669097661972,0.15425746142864227,0.16718633472919464,0.0025209300220012665,0.16718633472919464,,, +,,,,512,2025-10-20 20:43:35.431596,,,,,,,0.14592039585113525,0.0020720374304801226,0.14592039585113525 +0.14350254833698273,0.0036537067499011755,0.14350254833698273,30749.0,513,2025-10-20 20:47:28.954604,,,,,,,,, +,,,,513,2025-10-20 20:51:31.982438,0.15898823738098145,0.005355438217520714,0.15898823738098145,0.1404532492160797,0.0014402623055502772,0.1404532492160797,,, +,,,,513,2025-10-20 20:51:58.706563,,,,,,,0.14642243087291718,0.0021623873617500067,0.14642243087291718 +0.14824660122394562,0.0011635764967650175,0.14824660122394562,30799.0,514,2025-10-20 20:55:08.461326,,,,,,,,, +,,,,514,2025-10-20 20:59:56.980041,0.14606085419654846,0.0013308469206094742,0.14606085419654846,0.1496751606464386,0.001622202224098146,0.1496751606464386,,, +,,,,514,2025-10-20 21:00:22.645989,,,,,,,0.14621040225028992,0.00230279378592968,0.14621040225028992 +0.1300256997346878,0.0019338029669597745,0.1300256997346878,30849.0,515,2025-10-20 21:02:14.130844,,,,,,,,, +0.10074647516012192,0.0008980472339317203,0.10074647516012192,30899.0,515,2025-10-20 21:06:55.123597,,,,,,,,, +,,,,515,2025-10-20 21:08:30.296038,0.1532817780971527,0.001857824856415391,0.1532817780971527,0.14709629118442535,0.002132745925337076,0.14709629118442535,,, +,,,,515,2025-10-20 21:08:56.986604,,,,,,,0.14398744702339172,0.0023677810095250607,0.14398744702339172 +0.1551804542541504,0.0038527643773704767,0.1551804542541504,30949.0,516,2025-10-20 21:14:17.451190,,,,,,,,, +,,,,516,2025-10-20 21:16:35.816803,0.14978492259979248,0.0016857767477631569,0.14978492259979248,0.15306445956230164,0.001864572986960411,0.15306445956230164,,, +,,,,516,2025-10-20 21:17:02.665549,,,,,,,0.14518380165100098,0.002103825332596898,0.14518380165100098 +0.13931074738502502,0.001184475957415998,0.13931074738502502,30999.0,517,2025-10-20 21:21:53.267962,,,,,,,,, +,,,,517,2025-10-20 21:25:13.050653,0.15250667929649353,0.002298317849636078,0.15250667929649353,0.1599671095609665,0.0021163704805076122,0.1599671095609665,,, +,,,,517,2025-10-20 21:25:39.805458,,,,,,,0.14162246882915497,0.002222283510491252,0.14162246882915497 +0.1389271467924118,0.0017587445909157395,0.1389271467924118,31049.0,518,2025-10-20 21:29:40.897219,,,,,,,,, +,,,,518,2025-10-20 21:33:52.605299,0.15525078773498535,0.0023144916631281376,0.15525078773498535,0.14790257811546326,0.0027207653038203716,0.14790257811546326,,, +,,,,518,2025-10-20 21:34:19.162137,,,,,,,0.14478719234466553,0.0020927083678543568,0.14478719234466553 +0.14371803402900696,0.002805952215567231,0.14371803402900696,31099.0,519,2025-10-20 21:37:22.790376,,,,,,,,, +,,,,519,2025-10-20 21:42:52.852699,0.1430845707654953,0.0017860528314486146,0.1430845707654953,0.14733272790908813,0.0017961745616048574,0.14733272790908813,,, +,,,,519,2025-10-20 21:43:21.874776,,,,,,,0.14713864028453827,0.0021499909926205873,0.14713864028453827 +0.17043228447437286,0.003882037475705147,0.17043228447437286,31149.0,520,2025-10-20 21:45:22.497678,,,,,,,,, +0.15846724808216095,0.0014551214408129454,0.15846724808216095,31199.0,520,2025-10-20 21:50:03.066235,,,,,,,,, +,,,,520,2025-10-20 21:51:40.859949,0.1561354249715805,0.0019433317938819528,0.1561354249715805,0.16060693562030792,0.0029393548611551523,0.16060693562030792,,, +,,,,520,2025-10-20 21:52:07.570474,,,,,,,0.14775344729423523,0.002276166807860136,0.14775344729423523 +0.13680775463581085,0.0020667111966758966,0.13680775463581085,31249.0,521,2025-10-20 21:57:58.637934,,,,,,,,, +,,,,521,2025-10-20 22:00:11.090162,0.15076154470443726,0.0026255715638399124,0.15076154470443726,0.14636068046092987,0.002124309539794922,0.14636068046092987,,, +,,,,521,2025-10-20 22:00:38.222616,,,,,,,0.14425671100616455,0.002106935018673539,0.14425671100616455 +0.17134888470172882,0.0010865251533687115,0.17134888470172882,31299.0,522,2025-10-20 22:05:44.036514,,,,,,,,, +,,,,522,2025-10-20 22:08:43.086435,0.150152325630188,0.001588747021742165,0.150152325630188,0.15649090707302094,0.0019434943096712232,0.15649090707302094,,, +,,,,522,2025-10-20 22:09:09.941802,,,,,,,0.14889942109584808,0.002377156401053071,0.14889942109584808 +0.1349823921918869,0.0037997369654476643,0.1349823921918869,31349.0,523,2025-10-20 22:12:51.006554,,,,,,,,, +,,,,523,2025-10-20 22:16:59.288314,0.13673681020736694,0.0011877345386892557,0.13673681020736694,0.15359695255756378,0.002415702911093831,0.15359695255756378,,, +,,,,523,2025-10-20 22:17:26.951478,,,,,,,0.14763125777244568,0.0023305867798626423,0.14763125777244568 +0.15468059480190277,0.0012868440244346857,0.15468059480190277,31399.0,524,2025-10-20 22:20:24.612046,,,,,,,,, +,,,,524,2025-10-20 22:25:41.591982,0.14754138886928558,0.0013625314459204674,0.14754138886928558,0.14651912450790405,0.0023029642179608345,0.14651912450790405,,, +,,,,524,2025-10-20 22:26:07.749698,,,,,,,0.1459561586380005,0.001974989427253604,0.1459561586380005 +0.14788328111171722,0.0013237576931715012,0.14788328111171722,31449.0,525,2025-10-20 22:28:00.647609,,,,,,,,, +0.12520256638526917,0.0009650922147557139,0.12520256638526917,31499.0,525,2025-10-20 22:32:39.570840,,,,,,,,, +,,,,525,2025-10-20 22:34:12.892757,0.15631604194641113,0.0014134168159216642,0.15631604194641113,0.16259542107582092,0.0015376679366454482,0.16259542107582092,,, +,,,,525,2025-10-20 22:34:39.483517,,,,,,,0.1458980143070221,0.0018034483073279262,0.1458980143070221 +0.15035787224769592,0.0013255951926112175,0.15035787224769592,31549.0,526,2025-10-20 22:40:16.808678,,,,,,,,, +,,,,526,2025-10-20 22:42:49.446370,0.15235763788223267,0.001999032450839877,0.15235763788223267,0.154310941696167,0.0014057981316000223,0.154310941696167,,, +,,,,526,2025-10-20 22:43:16.510197,,,,,,,0.14376166462898254,0.0019342481391504407,0.14376166462898254 +0.14021624624729156,0.0011779889464378357,0.14021624624729156,31599.0,527,2025-10-20 22:48:22.658247,,,,,,,,, +,,,,527,2025-10-20 22:51:41.232275,0.1458507478237152,0.0023674166295677423,0.1458507478237152,0.152686208486557,0.00432070204988122,0.152686208486557,,, +,,,,527,2025-10-20 22:52:07.191701,,,,,,,0.14540545642375946,0.0022625927813351154,0.14540545642375946 +0.15866923332214355,0.004360709805041552,0.15866923332214355,31649.0,528,2025-10-20 22:56:07.103248,,,,,,,,, +,,,,528,2025-10-20 23:00:28.071465,0.1490662842988968,0.0028016071300953627,0.1490662842988968,0.14856639504432678,0.003122681053355336,0.14856639504432678,,, +,,,,528,2025-10-20 23:00:55.748001,,,,,,,0.14348304271697998,0.0019213297637179494,0.14348304271697998 +0.1412341147661209,0.0011930830078199506,0.1412341147661209,31699.0,529,2025-10-20 23:03:50.990978,,,,,,,,, +,,,,529,2025-10-20 23:08:50.877558,0.14842985570430756,0.0016925025265663862,0.14842985570430756,0.13965624570846558,0.0023809897247701883,0.13965624570846558,,, +,,,,529,2025-10-20 23:09:18.192139,,,,,,,0.1431247740983963,0.0021627957466989756,0.1431247740983963 +0.1386248618364334,0.0010374353732913733,0.1386248618364334,31749.0,530,2025-10-20 23:11:11.231405,,,,,,,,, +0.16531790792942047,0.004840783774852753,0.16531790792942047,31799.0,530,2025-10-20 23:15:48.958706,,,,,,,,, +,,,,530,2025-10-20 23:17:26.947165,0.14998571574687958,0.0037933310959488153,0.14998571574687958,0.142877995967865,0.0015346778091043234,0.142877995967865,,, +,,,,530,2025-10-20 23:17:53.788964,,,,,,,0.1477086991071701,0.0025033820420503616,0.1477086991071701 +0.15649032592773438,0.0018877345137298107,0.15649032592773438,31849.0,531,2025-10-20 23:23:41.140412,,,,,,,,, +,,,,531,2025-10-20 23:26:06.869469,0.14383335411548615,0.0019501523347571492,0.14383335411548615,0.1516251564025879,0.00276133231818676,0.1516251564025879,,, +,,,,531,2025-10-20 23:26:33.857390,,,,,,,0.14219744503498077,0.0021655852906405926,0.14219744503498077 +0.1471015214920044,0.0015202969079837203,0.1471015214920044,31899.0,532,2025-10-20 23:31:24.133983,,,,,,,,, +,,,,532,2025-10-20 23:34:34.808926,0.15079395473003387,0.002132700989022851,0.15079395473003387,0.14700883626937866,0.0013913275906816125,0.14700883626937866,,, +,,,,532,2025-10-20 23:35:02.424261,,,,,,,0.14515851438045502,0.0023123756982386112,0.14515851438045502 +0.13581353425979614,0.0018396119121462107,0.13581353425979614,31949.0,533,2025-10-20 23:39:00.728129,,,,,,,,, +,,,,533,2025-10-20 23:43:35.799508,0.14378610253334045,0.0034256409853696823,0.14378610253334045,0.14149779081344604,0.0020679442677646875,0.14149779081344604,,, +,,,,533,2025-10-20 23:44:03.493800,,,,,,,0.14418438076972961,0.0020329568069428205,0.14418438076972961 +0.12222898751497269,0.001214715768583119,0.12222898751497269,31999.0,534,2025-10-20 23:46:48.514963,,,,,,,,, +,,,,534,2025-10-20 23:51:52.082889,0.1502578854560852,0.0028773301746696234,0.1502578854560852,0.1489129662513733,0.0025249002501368523,0.1489129662513733,,, +,,,,534,2025-10-20 23:52:19.582775,,,,,,,0.1422969102859497,0.0025135676842182875,0.1422969102859497 +0.12862151861190796,0.0006915414705872536,0.12862151861190796,32049.0,535,2025-10-20 23:54:05.366061,,,,,,,,, +0.1332116425037384,0.002224563853815198,0.1332116425037384,32099.0,535,2025-10-20 23:59:01.407093,,,,,,,,, +,,,,535,2025-10-21 00:00:37.012297,0.15434592962265015,0.002824361901730299,0.15434592962265015,0.1584077626466751,0.00259983167052269,0.1584077626466751,,, +,,,,535,2025-10-21 00:01:05.019804,,,,,,,0.14609675109386444,0.002250776859000325,0.14609675109386444 +0.1388816237449646,0.0008279897156171501,0.1388816237449646,32149.0,536,2025-10-21 00:06:58.797737,,,,,,,,, +,,,,536,2025-10-21 00:09:15.404034,0.14868728816509247,0.002648701658472419,0.14868728816509247,0.1524714082479477,0.0020698250737041235,0.1524714082479477,,, +,,,,536,2025-10-21 00:09:43.022690,,,,,,,0.14702825248241425,0.0021454908419400454,0.14702825248241425 +0.14170850813388824,0.003747533308342099,0.14170850813388824,32199.0,537,2025-10-21 00:14:29.300451,,,,,,,,, +,,,,537,2025-10-21 00:17:52.008352,0.1412491798400879,0.0024264208041131496,0.1412491798400879,0.1539936512708664,0.0015733266482129693,0.1539936512708664,,, +,,,,537,2025-10-21 00:18:19.769029,,,,,,,0.14556966722011566,0.002447692211717367,0.14556966722011566 +0.1573783904314041,0.0009995050495490432,0.1573783904314041,32249.0,538,2025-10-21 00:22:02.196340,,,,,,,,, +,,,,538,2025-10-21 00:26:14.471962,0.15044645965099335,0.0023623474407941103,0.15044645965099335,0.1425510197877884,0.0019850963726639748,0.1425510197877884,,, +,,,,538,2025-10-21 00:27:14.005863,,,,,,,0.14244337379932404,0.002030571224167943,0.14244337379932404 +0.14785470068454742,0.002003089990466833,0.14785470068454742,32299.0,539,2025-10-21 00:30:00.201599,,,,,,,,, +,,,,539,2025-10-21 00:35:08.437246,0.1466018706560135,0.001470897812396288,0.1466018706560135,0.15504670143127441,0.001660178997553885,0.15504670143127441,,, +,,,,539,2025-10-21 00:35:35.373594,,,,,,,0.1505323350429535,0.002211557701230049,0.1505323350429535 +0.14569105207920074,0.0018398351967334747,0.14569105207920074,32349.0,540,2025-10-21 00:37:31.782244,,,,,,,,, +0.13467587530612946,0.0008802225347608328,0.13467587530612946,32399.0,540,2025-10-21 00:42:26.823240,,,,,,,,, +,,,,540,2025-10-21 00:44:04.937685,0.14703741669654846,0.0015824120491743088,0.14703741669654846,0.1572123020887375,0.0038727077189832926,0.1572123020887375,,, +,,,,540,2025-10-21 00:44:33.135139,,,,,,,0.14607231318950653,0.0020798223558813334,0.14607231318950653 +0.11695640534162521,0.0007083768723532557,0.11695640534162521,32449.0,541,2025-10-21 00:50:13.942596,,,,,,,,, +,,,,541,2025-10-21 00:52:28.926388,0.1491752713918686,0.002118248725309968,0.1491752713918686,0.14689122140407562,0.0029486261773854494,0.14689122140407562,,, +,,,,541,2025-10-21 00:52:57.003680,,,,,,,0.14628951251506805,0.0023682652972638607,0.14628951251506805 +0.16096152365207672,0.0012214051093906164,0.16096152365207672,32499.0,542,2025-10-21 00:57:45.188032,,,,,,,,, +,,,,542,2025-10-21 01:01:07.171260,0.16210642457008362,0.002090828027576208,0.16210642457008362,0.1472966969013214,0.0019059109035879374,0.1472966969013214,,, +,,,,542,2025-10-21 01:01:34.867187,,,,,,,0.14464060962200165,0.0016664671711623669,0.14464060962200165 +0.14746138453483582,0.0010082770604640245,0.14746138453483582,32549.0,543,2025-10-21 01:05:48.122722,,,,,,,,, +,,,,543,2025-10-21 01:09:53.465384,0.15535402297973633,0.003800109727308154,0.15535402297973633,0.15871351957321167,0.0034075663425028324,0.15871351957321167,,, +,,,,543,2025-10-21 01:10:19.300119,,,,,,,0.14285331964492798,0.0020137596875429153,0.14285331964492798 +0.11201443523168564,0.0009765517897903919,0.11201443523168564,32599.0,544,2025-10-21 01:13:17.270478,,,,,,,,, +,,,,544,2025-10-21 01:18:30.380633,0.15313832461833954,0.0032681599259376526,0.15313832461833954,0.15233811736106873,0.002162321237847209,0.15233811736106873,,, +,,,,544,2025-10-21 01:18:56.543068,,,,,,,0.1454945206642151,0.0021118854638189077,0.1454945206642151 +0.1395764946937561,0.0011928639141842723,0.1395764946937561,32649.0,545,2025-10-21 01:20:49.539263,,,,,,,,, +0.13993225991725922,0.0018881007563322783,0.13993225991725922,32699.0,545,2025-10-21 01:25:50.150342,,,,,,,,, +,,,,545,2025-10-21 01:27:29.758112,0.14200296998023987,0.0014076418010517955,0.14200296998023987,0.14521366357803345,0.0022862469777464867,0.14521366357803345,,, +,,,,545,2025-10-21 01:27:57.189099,,,,,,,0.14354531466960907,0.0020695545244961977,0.14354531466960907 +0.146465465426445,0.0012884873431175947,0.146465465426445,32749.0,546,2025-10-21 01:33:36.096047,,,,,,,,, +,,,,546,2025-10-21 01:35:51.037905,0.14577628672122955,0.002427199389785528,0.14577628672122955,0.15345226228237152,0.0021845835726708174,0.15345226228237152,,, +,,,,546,2025-10-21 01:36:18.144538,,,,,,,0.14305442571640015,0.0020320394542068243,0.14305442571640015 +0.14879895746707916,0.0036930048372596502,0.14879895746707916,32799.0,547,2025-10-21 01:41:20.569986,,,,,,,,, +,,,,547,2025-10-21 01:44:20.884728,0.14608454704284668,0.0015733911423012614,0.14608454704284668,0.1504545360803604,0.0015794747741892934,0.1504545360803604,,, +,,,,547,2025-10-21 01:44:47.889981,,,,,,,0.14923463761806488,0.0021670476999133825,0.14923463761806488 +0.15372700989246368,0.0015235681785270572,0.15372700989246368,32849.0,548,2025-10-21 01:48:37.600106,,,,,,,,, +,,,,548,2025-10-21 01:53:05.620676,0.1509454846382141,0.001995789585635066,0.1509454846382141,0.15109433233737946,0.002963515231385827,0.15109433233737946,,, +,,,,548,2025-10-21 01:53:32.781994,,,,,,,0.14409568905830383,0.0022701977286487818,0.14409568905830383 +0.16359993815422058,0.0012875334359705448,0.16359993815422058,32899.0,549,2025-10-21 01:56:15.673838,,,,,,,,, +,,,,549,2025-10-21 02:01:52.580786,0.1472405642271042,0.0020252284593880177,0.1472405642271042,0.13913613557815552,0.0012463144958019257,0.13913613557815552,,, +,,,,549,2025-10-21 02:02:46.105169,,,,,,,0.1439501792192459,0.0019485261291265488,0.1439501792192459 +0.12098418921232224,0.0010882837232202291,0.12098418921232224,32949.0,550,2025-10-21 02:04:44.198875,,,,,,,,, +0.1467040628194809,0.001355502987280488,0.1467040628194809,32999.0,550,2025-10-21 02:09:17.207247,,,,,,,,, +,,,,550,2025-10-21 02:10:50.991388,0.14859026670455933,0.0015694621251896024,0.14859026670455933,0.15339067578315735,0.0018149861134588718,0.15339067578315735,,, +,,,,550,2025-10-21 02:11:18.895554,,,,,,,0.1423216611146927,0.0023680860176682472,0.1423216611146927 +0.1211414635181427,0.000687575782649219,0.1211414635181427,33049.0,551,2025-10-21 02:16:58.407224,,,,,,,,, +,,,,551,2025-10-21 02:19:14.576973,0.1400906890630722,0.0019915804732590914,0.1400906890630722,0.14879532158374786,0.002366267144680023,0.14879532158374786,,, +,,,,551,2025-10-21 02:19:41.230770,,,,,,,0.1426776945590973,0.002111074747517705,0.1426776945590973 +0.13541482388973236,0.0012142590712755919,0.13541482388973236,33099.0,552,2025-10-21 02:24:34.598882,,,,,,,,, +,,,,552,2025-10-21 02:27:43.490053,0.13516049087047577,0.0020534254144877195,0.13516049087047577,0.15451212227344513,0.0024913407396525145,0.15451212227344513,,, +,,,,552,2025-10-21 02:28:09.986544,,,,,,,0.14394591748714447,0.002032406395301223,0.14394591748714447 +0.13231852650642395,0.001132858102209866,0.13231852650642395,33149.0,553,2025-10-21 02:31:59.918811,,,,,,,,, +,,,,553,2025-10-21 02:36:17.721204,0.13805268704891205,0.0016325218603014946,0.13805268704891205,0.14648060500621796,0.003245658241212368,0.14648060500621796,,, +,,,,553,2025-10-21 02:36:45.544827,,,,,,,0.14536553621292114,0.0023755314759910107,0.14536553621292114 +0.1435471773147583,0.0016643141862004995,0.1435471773147583,33199.0,554,2025-10-21 02:39:37.900892,,,,,,,,, +,,,,554,2025-10-21 02:44:56.264428,0.13468116521835327,0.0011653590481728315,0.13468116521835327,0.14879648387432098,0.0028236662037670612,0.14879648387432098,,, +,,,,554,2025-10-21 02:45:22.356144,,,,,,,0.14739680290222168,0.002346023917198181,0.14739680290222168 +0.1696418672800064,0.0023067141883075237,0.1696418672800064,33249.0,555,2025-10-21 02:47:17.251211,,,,,,,,, +0.11825186014175415,0.0032107913866639137,0.11825186014175415,33299.0,555,2025-10-21 02:51:59.483697,,,,,,,,, +,,,,555,2025-10-21 02:53:40.828990,0.15066492557525635,0.0022766434121876955,0.15066492557525635,0.14625521004199982,0.0016134477918967605,0.14625521004199982,,, +,,,,555,2025-10-21 02:54:06.747072,,,,,,,0.14314384758472443,0.00220878585241735,0.14314384758472443 +0.16572952270507812,0.0012263242388144135,0.16572952270507812,33349.0,556,2025-10-21 03:00:06.244007,,,,,,,,, +,,,,556,2025-10-21 03:02:19.593890,0.1491292268037796,0.002487224293872714,0.1491292268037796,0.14871151745319366,0.0023698685690760612,0.14871151745319366,,, +,,,,556,2025-10-21 03:02:46.288572,,,,,,,0.14274847507476807,0.0019271161872893572,0.14274847507476807 +0.15942345559597015,0.0038395693991333246,0.15942345559597015,33399.0,557,2025-10-21 03:07:44.693063,,,,,,,,, +,,,,557,2025-10-21 03:11:03.137726,0.14939236640930176,0.0024352313484996557,0.14939236640930176,0.15021054446697235,0.0021065985783934593,0.15021054446697235,,, +,,,,557,2025-10-21 03:11:29.511490,,,,,,,0.1431119740009308,0.0022418417502194643,0.1431119740009308 +0.154305100440979,0.0018717455677688122,0.154305100440979,33449.0,558,2025-10-21 03:15:30.957805,,,,,,,,, +,,,,558,2025-10-21 03:19:48.474855,0.1491401046514511,0.0017252267571166158,0.1491401046514511,0.14669863879680634,0.0017532269703224301,0.14669863879680634,,, +,,,,558,2025-10-21 03:20:15.372701,,,,,,,0.1425892859697342,0.002220229245722294,0.1425892859697342 +0.13053712248802185,0.0016476422315463424,0.13053712248802185,33499.0,559,2025-10-21 03:23:17.587660,,,,,,,,, +,,,,559,2025-10-21 03:28:54.468517,0.13602674007415771,0.001823302824050188,0.13602674007415771,0.14398211240768433,0.0015758101362735033,0.14398211240768433,,, +,,,,559,2025-10-21 03:29:21.858523,,,,,,,0.1456676721572876,0.0022845789790153503,0.1456676721572876 +0.12553611397743225,0.0010214309440925717,0.12553611397743225,33549.0,560,2025-10-21 03:31:15.644532,,,,,,,,, +0.13003523647785187,0.0010652159107849002,0.13003523647785187,33599.0,560,2025-10-21 03:35:56.813604,,,,,,,,, +,,,,560,2025-10-21 03:37:35.151521,0.150604709982872,0.00138081144541502,0.150604709982872,0.15220826864242554,0.0024021551944315434,0.15220826864242554,,, +,,,,560,2025-10-21 03:38:01.960087,,,,,,,0.1435130089521408,0.0020220684818923473,0.1435130089521408 +0.17339423298835754,0.004524195566773415,0.17339423298835754,33649.0,561,2025-10-21 03:44:17.137554,,,,,,,,, +,,,,561,2025-10-21 03:46:30.890013,0.15030603110790253,0.0026307732332497835,0.15030603110790253,0.1544232964515686,0.002636139979586005,0.1544232964515686,,, +,,,,561,2025-10-21 03:46:57.345595,,,,,,,0.1443762630224228,0.0023131845518946648,0.1443762630224228 +0.15656544268131256,0.0010996733326464891,0.15656544268131256,33699.0,562,2025-10-21 03:52:06.561949,,,,,,,,, +,,,,562,2025-10-21 03:55:15.668801,0.1551215648651123,0.002261900808662176,0.1551215648651123,0.15101641416549683,0.002216504653915763,0.15101641416549683,,, +,,,,562,2025-10-21 03:55:42.404899,,,,,,,0.14545874297618866,0.002322062384337187,0.14545874297618866 +0.11616653949022293,0.0005696866428479552,0.11616653949022293,33749.0,563,2025-10-21 03:59:25.658719,,,,,,,,, +,,,,563,2025-10-21 04:03:43.383262,0.14378267526626587,0.0025681296829134226,0.14378267526626587,0.15473298728466034,0.0021155737340450287,0.15473298728466034,,, +,,,,563,2025-10-21 04:04:09.659609,,,,,,,0.1452663242816925,0.002367345616221428,0.1452663242816925 +0.097945436835289,0.001003570156171918,0.097945436835289,33799.0,564,2025-10-21 04:07:01.040510,,,,,,,,, +,,,,564,2025-10-21 04:12:29.475559,0.1520034521818161,0.002919246442615986,0.1520034521818161,0.14090555906295776,0.0014689353993162513,0.14090555906295776,,, +,,,,564,2025-10-21 04:12:55.922607,,,,,,,0.14209279417991638,0.002097014570608735,0.14209279417991638 +0.12214447557926178,0.0008351455326192081,0.12214447557926178,33849.0,565,2025-10-21 04:14:43.877026,,,,,,,,, +0.1334390640258789,0.0013557523488998413,0.1334390640258789,33899.0,565,2025-10-21 04:19:36.117324,,,,,,,,, +,,,,565,2025-10-21 04:21:14.095832,0.14685969054698944,0.0016603475669398904,0.14685969054698944,0.14381739497184753,0.0011372562730684876,0.14381739497184753,,, +,,,,565,2025-10-21 04:21:40.663492,,,,,,,0.14379696547985077,0.00224419217556715,0.14379696547985077 +0.15169638395309448,0.0016271891072392464,0.15169638395309448,33949.0,566,2025-10-21 04:27:27.938727,,,,,,,,, +,,,,566,2025-10-21 04:29:42.056331,0.15227973461151123,0.0024449527263641357,0.15227973461151123,0.14930865168571472,0.002459611278027296,0.14930865168571472,,, +,,,,566,2025-10-21 04:30:09.427808,,,,,,,0.14490316808223724,0.0022942875511944294,0.14490316808223724 +0.15238803625106812,0.0018861631397157907,0.15238803625106812,33999.0,567,2025-10-21 04:34:44.828334,,,,,,,,, +,,,,567,2025-10-21 04:38:03.694008,0.1427280455827713,0.0013848707312718034,0.1427280455827713,0.15238197147846222,0.0032478913199156523,0.15238197147846222,,, +,,,,567,2025-10-21 04:38:30.577663,,,,,,,0.14573928713798523,0.0019985269755125046,0.14573928713798523 +0.14507879316806793,0.0026382203213870525,0.14507879316806793,34049.0,568,2025-10-21 04:42:47.551279,,,,,,,,, +,,,,568,2025-10-21 04:47:00.083433,0.1611107885837555,0.0019612121395766735,0.1611107885837555,0.15045411884784698,0.001900581526570022,0.15045411884784698,,, +,,,,568,2025-10-21 04:47:25.925889,,,,,,,0.13982592523097992,0.002005532383918762,0.13982592523097992 +0.1469033658504486,0.0008393689640797675,0.1469033658504486,34099.0,569,2025-10-21 04:50:40.204474,,,,,,,,, +,,,,569,2025-10-21 04:55:55.357353,0.14205287396907806,0.0015744763659313321,0.14205287396907806,0.14751745760440826,0.00164607516489923,0.14751745760440826,,, +,,,,569,2025-10-21 04:56:22.533632,,,,,,,0.14109215140342712,0.0018779297824949026,0.14109215140342712 +0.10984717309474945,0.0010535094188526273,0.10984717309474945,34149.0,570,2025-10-21 04:58:14.645132,,,,,,,,, +0.12729689478874207,0.0016713227378204465,0.12729689478874207,34199.0,570,2025-10-21 05:03:13.791898,,,,,,,,, +,,,,570,2025-10-21 05:04:46.895962,0.1554972380399704,0.003742404282093048,0.1554972380399704,0.14834193885326385,0.0016193314222618937,0.14834193885326385,,, +,,,,570,2025-10-21 05:05:14.293741,,,,,,,0.14149504899978638,0.00216643325984478,0.14149504899978638 +0.12861624360084534,0.006777526810765266,0.12861624360084534,34249.0,571,2025-10-21 05:11:09.255142,,,,,,,,, +,,,,571,2025-10-21 05:13:29.597571,0.15375348925590515,0.002157766604796052,0.15375348925590515,0.15989887714385986,0.002348872134461999,0.15989887714385986,,, +,,,,571,2025-10-21 05:13:56.341148,,,,,,,0.14651504158973694,0.0025328330229967833,0.14651504158973694 +0.146115243434906,0.002940127160400152,0.146115243434906,34299.0,572,2025-10-21 05:18:57.698576,,,,,,,,, +,,,,572,2025-10-21 05:22:12.814845,0.1509539633989334,0.002382684964686632,0.1509539633989334,0.14793503284454346,0.0016880383482202888,0.14793503284454346,,, +,,,,572,2025-10-21 05:22:39.346789,,,,,,,0.142854243516922,0.0021585088688880205,0.142854243516922 +0.14882978796958923,0.0008974829106591642,0.14882978796958923,34349.0,573,2025-10-21 05:26:50.592698,,,,,,,,, +,,,,573,2025-10-21 05:31:03.789323,0.14533250033855438,0.003229742171242833,0.14533250033855438,0.15613104403018951,0.0024611479602754116,0.15613104403018951,,, +,,,,573,2025-10-21 05:31:30.411023,,,,,,,0.14682437479496002,0.0023031546734273434,0.14682437479496002 +0.12452403455972672,0.0009698839276097715,0.12452403455972672,34399.0,574,2025-10-21 05:34:31.535322,,,,,,,,, +,,,,574,2025-10-21 05:39:40.996356,0.14508633315563202,0.0017137577524408698,0.14508633315563202,0.14884595572948456,0.002014879370108247,0.14884595572948456,,, +,,,,574,2025-10-21 05:40:07.647363,,,,,,,0.14161962270736694,0.0020486372523009777,0.14161962270736694 +0.16368354856967926,0.0018138932064175606,0.16368354856967926,34449.0,575,2025-10-21 05:42:00.412690,,,,,,,,, +0.14349545538425446,0.0018704012036323547,0.14349545538425446,34499.0,575,2025-10-21 05:46:14.755963,,,,,,,,, +,,,,575,2025-10-21 05:47:52.871339,0.15090711414813995,0.0022974745370447636,0.15090711414813995,0.1406046450138092,0.0027388385497033596,0.1406046450138092,,, +,,,,575,2025-10-21 05:48:19.495944,,,,,,,0.14492638409137726,0.002381614176556468,0.14492638409137726 +0.15611810982227325,0.002823119517415762,0.15611810982227325,34549.0,576,2025-10-21 05:54:05.372381,,,,,,,,, +,,,,576,2025-10-21 05:56:23.808439,0.15277180075645447,0.001949594123288989,0.15277180075645447,0.15022538602352142,0.0013607669388875365,0.15022538602352142,,, +,,,,576,2025-10-21 05:56:50.987753,,,,,,,0.14423638582229614,0.0020561700221151114,0.14423638582229614 +0.128236323595047,0.00104598852340132,0.128236323595047,34599.0,577,2025-10-21 06:01:34.784507,,,,,,,,, +,,,,577,2025-10-21 06:04:55.487105,0.14083410799503326,0.0019035832956433296,0.14083410799503326,0.14957895874977112,0.0024499865248799324,0.14957895874977112,,, +,,,,577,2025-10-21 06:05:23.907881,,,,,,,0.1452762484550476,0.0022108671255409718,0.1452762484550476 +0.17927055060863495,0.003325550351291895,0.17927055060863495,34649.0,578,2025-10-21 06:09:21.172676,,,,,,,,, +,,,,578,2025-10-21 06:13:28.777462,0.14580711722373962,0.002622598083689809,0.14580711722373962,0.1499491184949875,0.002610783791169524,0.1499491184949875,,, +,,,,578,2025-10-21 06:13:57.531755,,,,,,,0.14338204264640808,0.002185360062867403,0.14338204264640808 +0.17700758576393127,0.0026645506732165813,0.17700758576393127,34699.0,579,2025-10-21 06:17:06.501823,,,,,,,,, +,,,,579,2025-10-21 06:22:18.913610,0.13999556005001068,0.001994082937017083,0.13999556005001068,0.14793187379837036,0.002228539204224944,0.14793187379837036,,, +,,,,579,2025-10-21 06:22:46.269368,,,,,,,0.14669854938983917,0.002341931452974677,0.14669854938983917 +0.13261359930038452,0.0021853591315448284,0.13261359930038452,34749.0,580,2025-10-21 06:24:42.184602,,,,,,,,, +0.12119094282388687,0.001237710821442306,0.12119094282388687,34799.0,580,2025-10-21 06:29:14.360468,,,,,,,,, +,,,,580,2025-10-21 06:30:49.743363,0.15392708778381348,0.0016781564336270094,0.15392708778381348,0.15182779729366302,0.002554068574681878,0.15182779729366302,,, +,,,,580,2025-10-21 06:31:16.548745,,,,,,,0.14618918299674988,0.002400909550487995,0.14618918299674988 +0.12836875021457672,0.000988885760307312,0.12836875021457672,34849.0,581,2025-10-21 06:36:51.193977,,,,,,,,, +,,,,581,2025-10-21 06:39:09.493021,0.1468552052974701,0.0031473967246711254,0.1468552052974701,0.14313235878944397,0.0021617142483592033,0.14313235878944397,,, +,,,,581,2025-10-21 06:39:36.993044,,,,,,,0.14393086731433868,0.0021975748240947723,0.14393086731433868 +0.1061432957649231,0.0005828335997648537,0.1061432957649231,34899.0,582,2025-10-21 06:44:24.980001,,,,,,,,, +,,,,582,2025-10-21 06:47:40.902241,0.1523149609565735,0.002240588190034032,0.1523149609565735,0.13733221590518951,0.0014103502035140991,0.13733221590518951,,, +,,,,582,2025-10-21 06:48:34.871265,,,,,,,0.14604130387306213,0.002195153385400772,0.14604130387306213 +0.14671078324317932,0.00144369772169739,0.14671078324317932,34949.0,583,2025-10-21 06:52:37.963972,,,,,,,,, +,,,,583,2025-10-21 06:56:58.229167,0.1497691422700882,0.002422521123662591,0.1497691422700882,0.16202881932258606,0.0020132686477154493,0.16202881932258606,,, +,,,,583,2025-10-21 06:57:26.043391,,,,,,,0.14365200698375702,0.0021327894646674395,0.14365200698375702 +0.13951376080513,0.001469873357564211,0.13951376080513,34999.0,584,2025-10-21 07:00:08.641698,,,,,,,,, +,,,,584,2025-10-21 07:05:18.088451,0.14890293776988983,0.0017382655059918761,0.14890293776988983,0.15444210171699524,0.001543736201710999,0.15444210171699524,,, +,,,,584,2025-10-21 07:05:44.941318,,,,,,,0.14356791973114014,0.0025621361564844847,0.14356791973114014 +0.1566956788301468,0.00316259334795177,0.1566956788301468,35049.0,585,2025-10-21 07:07:36.721549,,,,,,,,, +0.15097306668758392,0.003585000755265355,0.15097306668758392,35099.0,585,2025-10-21 07:12:37.023389,,,,,,,,, +,,,,585,2025-10-21 07:14:11.598704,0.13782989978790283,0.00198412430472672,0.13782989978790283,0.14541231095790863,0.002341504907235503,0.14541231095790863,,, +,,,,585,2025-10-21 07:14:37.889018,,,,,,,0.14422516524791718,0.0022400643210858107,0.14422516524791718 +0.14362134039402008,0.0010772158857434988,0.14362134039402008,35149.0,586,2025-10-21 07:20:28.558892,,,,,,,,, +,,,,586,2025-10-21 07:22:41.855257,0.14376503229141235,0.0015697880880907178,0.14376503229141235,0.1385878324508667,0.0022579128853976727,0.1385878324508667,,, +,,,,586,2025-10-21 07:23:08.636183,,,,,,,0.14656896889209747,0.0019980145152658224,0.14656896889209747 +0.1189182922244072,0.003483259817585349,0.1189182922244072,35199.0,587,2025-10-21 07:28:02.673410,,,,,,,,, +,,,,587,2025-10-21 07:31:22.091910,0.15442505478858948,0.002112399786710739,0.15442505478858948,0.1501617580652237,0.0024011635687202215,0.1501617580652237,,, +,,,,587,2025-10-21 07:31:48.370473,,,,,,,0.14501138031482697,0.001999757019802928,0.14501138031482697 +0.1607552468776703,0.001717836013995111,0.1607552468776703,35249.0,588,2025-10-21 07:35:38.015517,,,,,,,,, +,,,,588,2025-10-21 07:39:51.525664,0.14389128983020782,0.0018037413246929646,0.14389128983020782,0.15205125510692596,0.001786110340617597,0.15205125510692596,,, +,,,,588,2025-10-21 07:40:18.490564,,,,,,,0.1443909853696823,0.002170081017538905,0.1443909853696823 +0.14392253756523132,0.0014228253858163953,0.14392253756523132,35299.0,589,2025-10-21 07:42:58.239222,,,,,,,,, +,,,,589,2025-10-21 07:48:07.622098,0.14814713597297668,0.003958607092499733,0.14814713597297668,0.15332138538360596,0.0020873588509857655,0.15332138538360596,,, +,,,,589,2025-10-21 07:48:35.203710,,,,,,,0.14593449234962463,0.0022801344748586416,0.14593449234962463 +0.1557438224554062,0.0011429177829995751,0.1557438224554062,35349.0,590,2025-10-21 07:50:25.152656,,,,,,,,, +0.13540595769882202,0.0007410895195789635,0.13540595769882202,35399.0,590,2025-10-21 07:55:12.008972,,,,,,,,, +,,,,590,2025-10-21 07:56:45.232343,0.15382006764411926,0.002077271696180105,0.15382006764411926,0.1475786566734314,0.0017825764371082187,0.1475786566734314,,, +,,,,590,2025-10-21 07:57:12.782560,,,,,,,0.14355723559856415,0.0020691710524260998,0.14355723559856415 +0.13877062499523163,0.0009637245093472302,0.13877062499523163,35449.0,591,2025-10-21 08:03:08.472513,,,,,,,,, +,,,,591,2025-10-21 08:05:20.664530,0.1590898483991623,0.0025819747243076563,0.1590898483991623,0.1374303698539734,0.0013863022904843092,0.1374303698539734,,, +,,,,591,2025-10-21 08:06:11.376462,,,,,,,0.1447489857673645,0.0022728610783815384,0.1447489857673645 +0.12122300267219543,0.0024659321643412113,0.12122300267219543,35499.0,592,2025-10-21 08:11:52.330823,,,,,,,,, +,,,,592,2025-10-21 08:14:48.514329,0.14410170912742615,0.002943814964964986,0.14410170912742615,0.1475745439529419,0.0013678345130756497,0.1475745439529419,,, +,,,,592,2025-10-21 08:15:16.960190,,,,,,,0.14614462852478027,0.0023239185102283955,0.14614462852478027 +0.13121652603149414,0.004684793297201395,0.13121652603149414,35549.0,593,2025-10-21 08:19:13.599690,,,,,,,,, +,,,,593,2025-10-21 08:23:31.236772,0.15644949674606323,0.002565441420301795,0.15644949674606323,0.15824396908283234,0.0032377594616264105,0.15824396908283234,,, +,,,,593,2025-10-21 08:23:57.227554,,,,,,,0.1443438082933426,0.002573074772953987,0.1443438082933426 +0.18022038042545319,0.003067965619266033,0.18022038042545319,35599.0,594,2025-10-21 08:26:55.600582,,,,,,,,, +,,,,594,2025-10-21 08:32:07.440412,0.14832627773284912,0.0016439530299976468,0.14832627773284912,0.1511317938566208,0.004034585319459438,0.1511317938566208,,, +,,,,594,2025-10-21 08:32:33.044860,,,,,,,0.14730949699878693,0.0020334129221737385,0.14730949699878693 +0.14053364098072052,0.0015563609777018428,0.14053364098072052,35649.0,595,2025-10-21 08:34:23.796543,,,,,,,,, +0.16088047623634338,0.00264622550457716,0.16088047623634338,35699.0,595,2025-10-21 08:39:38.275134,,,,,,,,, +,,,,595,2025-10-21 08:41:14.761326,0.15422075986862183,0.0017097006784752011,0.15422075986862183,0.15007489919662476,0.002805081894621253,0.15007489919662476,,, +,,,,595,2025-10-21 08:41:42.263352,,,,,,,0.14645184576511383,0.002106738043949008,0.14645184576511383 +0.11907768249511719,0.0010978388600051403,0.11907768249511719,35749.0,596,2025-10-21 08:47:35.862460,,,,,,,,, +,,,,596,2025-10-21 08:49:50.015837,0.15627770125865936,0.0015333032933995128,0.15627770125865936,0.14589346945285797,0.0020481098908931017,0.14589346945285797,,, +,,,,596,2025-10-21 08:50:17.319389,,,,,,,0.14562825858592987,0.0021769143640995026,0.14562825858592987 +0.12791098654270172,0.0017230637604370713,0.12791098654270172,35799.0,597,2025-10-21 08:55:34.801252,,,,,,,,, +,,,,597,2025-10-21 08:58:44.092253,0.1504521667957306,0.0024741387460380793,0.1504521667957306,0.1431746482849121,0.0020690099336206913,0.1431746482849121,,, +,,,,597,2025-10-21 08:59:11.040479,,,,,,,0.14322181046009064,0.0019202595576643944,0.14322181046009064 +0.1667889505624771,0.0023946284782141447,0.1667889505624771,35849.0,598,2025-10-21 09:03:14.227778,,,,,,,,, +,,,,598,2025-10-21 09:07:07.233122,0.13874448835849762,0.002378289820626378,0.13874448835849762,0.149385467171669,0.00233703525736928,0.149385467171669,,, +,,,,598,2025-10-21 09:07:34.944954,,,,,,,0.1451795995235443,0.0019858607556670904,0.1451795995235443 +0.13912832736968994,0.0010873922146856785,0.13912832736968994,35899.0,599,2025-10-21 09:10:17.059594,,,,,,,,, +,,,,599,2025-10-21 09:15:41.205762,0.14719316363334656,0.003108714474365115,0.14719316363334656,0.145362988114357,0.0018148585222661495,0.145362988114357,,, +,,,,599,2025-10-21 09:16:09.161341,,,,,,,0.143015518784523,0.0022496182937175035,0.143015518784523 +0.1366923749446869,0.0009629467967897654,0.1366923749446869,35949.0,600,2025-10-21 09:18:41.689454,,,,,,,,, +0.12858040630817413,0.001303314813412726,0.12858040630817413,35999.0,600,2025-10-21 09:23:09.845958,,,,,,,,, +,,,,600,2025-10-21 09:24:48.767318,0.13976289331912994,0.0019219216192141175,0.13976289331912994,0.14774253964424133,0.0019514340674504638,0.14774253964424133,,, +,,,,600,2025-10-21 09:25:17.016354,,,,,,,0.14211444556713104,0.00188044726382941,0.14211444556713104 +0.15178658068180084,0.004470342304557562,0.15178658068180084,36049.0,601,2025-10-21 09:31:27.018074,,,,,,,,, +,,,,601,2025-10-21 09:33:45.043999,0.14393575489521027,0.002422390040010214,0.14393575489521027,0.1436697542667389,0.0015834971563890576,0.1436697542667389,,, +,,,,601,2025-10-21 09:34:14.107575,,,,,,,0.14322516322135925,0.002266701078042388,0.14322516322135925 +0.13886001706123352,0.0014835081528872252,0.13886001706123352,36099.0,602,2025-10-21 09:39:07.705773,,,,,,,,, +,,,,602,2025-10-21 09:42:26.674978,0.15518194437026978,0.002076459117233753,0.15518194437026978,0.1488141119480133,0.001963650807738304,0.1488141119480133,,, +,,,,602,2025-10-21 09:42:53.570900,,,,,,,0.14676731824874878,0.0022822441533207893,0.14676731824874878 +0.1195233166217804,0.0012951071839779615,0.1195233166217804,36149.0,603,2025-10-21 09:46:25.480243,,,,,,,,, +,,,,603,2025-10-21 09:50:41.938343,0.15265719592571259,0.0017832362791523337,0.15265719592571259,0.15736424922943115,0.0029216501861810684,0.15736424922943115,,, +,,,,603,2025-10-21 09:51:08.157956,,,,,,,0.14308509230613708,0.0018893539672717452,0.14308509230613708 +0.14318367838859558,0.001028075348585844,0.14318367838859558,36199.0,604,2025-10-21 09:54:00.055250,,,,,,,,, +,,,,604,2025-10-21 09:59:19.230702,0.142309308052063,0.0023673339746892452,0.142309308052063,0.15110668540000916,0.0017378039192408323,0.15110668540000916,,, +,,,,604,2025-10-21 09:59:45.253483,,,,,,,0.14440378546714783,0.002573322504758835,0.14440378546714783 +0.16200806200504303,0.0012577633606269956,0.16200806200504303,36249.0,605,2025-10-21 10:01:58.503465,,,,,,,,, +0.11142011731863022,0.0020867600105702877,0.11142011731863022,36299.0,605,2025-10-21 10:06:38.430908,,,,,,,,, +,,,,605,2025-10-21 10:08:17.042791,0.15004967153072357,0.001518669188953936,0.15004967153072357,0.14380700886249542,0.0020836142357438803,0.14380700886249542,,, +,,,,605,2025-10-21 10:08:43.336037,,,,,,,0.14217601716518402,0.002164488658308983,0.14217601716518402 +0.14161653816699982,0.0023904680274426937,0.14161653816699982,36349.0,606,2025-10-21 10:14:15.400667,,,,,,,,, +,,,,606,2025-10-21 10:16:29.796225,0.15988357365131378,0.002723684534430504,0.15988357365131378,0.1502428948879242,0.002256257925182581,0.1502428948879242,,, +,,,,606,2025-10-21 10:16:58.039753,,,,,,,0.14344072341918945,0.0022818015422672033,0.14344072341918945 +0.11608733981847763,0.0018951016245409846,0.11608733981847763,36399.0,607,2025-10-21 10:22:02.805549,,,,,,,,, +,,,,607,2025-10-21 10:25:14.477384,0.13592836260795593,0.0016391854733228683,0.13592836260795593,0.15132205188274384,0.0025023005437105894,0.15132205188274384,,, +,,,,607,2025-10-21 10:25:41.580391,,,,,,,0.13937413692474365,0.0019063279032707214,0.13937413692474365 +0.15829862654209137,0.003835183335468173,0.15829862654209137,36449.0,608,2025-10-21 10:30:01.026252,,,,,,,,, +,,,,608,2025-10-21 10:34:13.858172,0.13352347910404205,0.001131880795583129,0.13352347910404205,0.1471928358078003,0.0016206410946324468,0.1471928358078003,,, +,,,,608,2025-10-21 10:34:40.396143,,,,,,,0.1412350833415985,0.001955163199454546,0.1412350833415985 +0.12609799206256866,0.0014383203815668821,0.12609799206256866,36499.0,609,2025-10-21 10:37:27.617182,,,,,,,,, +,,,,609,2025-10-21 10:42:55.870998,0.1480763554573059,0.0031278941314667463,0.1480763554573059,0.1403058022260666,0.0024343605618923903,0.1403058022260666,,, +,,,,609,2025-10-21 10:43:23.155619,,,,,,,0.145809605717659,0.0023413393646478653,0.145809605717659 +0.126829594373703,0.003197859274223447,0.126829594373703,36549.0,610,2025-10-21 10:45:16.294925,,,,,,,,, +0.14068135619163513,0.0014803200028836727,0.14068135619163513,36599.0,610,2025-10-21 10:49:37.256898,,,,,,,,, +,,,,610,2025-10-21 10:51:12.904177,0.14271004498004913,0.0011868575820699334,0.14271004498004913,0.1510075032711029,0.0017232818063348532,0.1510075032711029,,, +,,,,610,2025-10-21 10:51:40.247144,,,,,,,0.14280013740062714,0.002332808682695031,0.14280013740062714 +0.15007492899894714,0.0014424140099436045,0.15007492899894714,36649.0,611,2025-10-21 10:57:25.567924,,,,,,,,, +,,,,611,2025-10-21 10:59:41.931340,0.14067985117435455,0.0015494987601414323,0.14067985117435455,0.14964158833026886,0.0018698300700634718,0.14964158833026886,,, +,,,,611,2025-10-21 11:00:07.882358,,,,,,,0.143870547413826,0.002026207512244582,0.143870547413826 +0.11150211840867996,0.0027841017581522465,0.11150211840867996,36699.0,612,2025-10-21 11:05:15.876073,,,,,,,,, +,,,,612,2025-10-21 11:08:11.697029,0.14179933071136475,0.0036279766354709864,0.14179933071136475,0.14425131678581238,0.003300608368590474,0.14425131678581238,,, +,,,,612,2025-10-21 11:08:38.245400,,,,,,,0.14231383800506592,0.0022109979763627052,0.14231383800506592 +0.1293392926454544,0.003418085863813758,0.1293392926454544,36749.0,613,2025-10-21 11:12:30.508641,,,,,,,,, +,,,,613,2025-10-21 11:16:56.793324,0.14266623556613922,0.0022650922182947397,0.14266623556613922,0.1490766704082489,0.0031814011745154858,0.1490766704082489,,, +,,,,613,2025-10-21 11:17:22.484596,,,,,,,0.14485736191272736,0.002319013001397252,0.14485736191272736 +0.13841336965560913,0.0010424411157146096,0.13841336965560913,36799.0,614,2025-10-21 11:20:14.487570,,,,,,,,, +,,,,614,2025-10-21 11:25:25.180770,0.13978248834609985,0.0021738852374255657,0.13978248834609985,0.1537763476371765,0.0021504119504243135,0.1537763476371765,,, +,,,,614,2025-10-21 11:25:51.123255,,,,,,,0.14197805523872375,0.0020580498967319727,0.14197805523872375 +0.1526409387588501,0.001206127111800015,0.1526409387588501,36849.0,615,2025-10-21 11:27:41.809341,,,,,,,,, +0.1668301522731781,0.0016583544202148914,0.1668301522731781,36899.0,615,2025-10-21 11:32:11.581876,,,,,,,,, +,,,,615,2025-10-21 11:33:46.050920,0.1592525988817215,0.002331080147996545,0.1592525988817215,0.1387779414653778,0.0018356683431193233,0.1387779414653778,,, +,,,,615,2025-10-21 11:34:11.650175,,,,,,,0.14377844333648682,0.0023630287032574415,0.14377844333648682 +0.17005011439323425,0.002444486366584897,0.17005011439323425,36949.0,616,2025-10-21 11:39:46.025635,,,,,,,,, +,,,,616,2025-10-21 11:42:07.432729,0.15172939002513885,0.0039802356623113155,0.15172939002513885,0.1427215039730072,0.002430869732052088,0.1427215039730072,,, +,,,,616,2025-10-21 11:42:34.316844,,,,,,,0.1400492638349533,0.0019325322937220335,0.1400492638349533 +0.1454593986272812,0.0027803226839751005,0.1454593986272812,36999.0,617,2025-10-21 11:47:32.011789,,,,,,,,, +,,,,617,2025-10-21 11:50:58.125702,0.13711461424827576,0.002083786763250828,0.13711461424827576,0.14424516260623932,0.0024936755653470755,0.14424516260623932,,, +,,,,617,2025-10-21 11:51:25.533712,,,,,,,0.14264805614948273,0.0022810634691268206,0.14264805614948273 +0.12172811478376389,0.0038243518210947514,0.12172811478376389,37049.0,618,2025-10-21 11:55:29.485110,,,,,,,,, +,,,,618,2025-10-21 11:59:39.797268,0.150640606880188,0.0032106712460517883,0.150640606880188,0.13685208559036255,0.002272746292874217,0.13685208559036255,,, +,,,,618,2025-10-21 12:00:28.342449,,,,,,,0.14523622393608093,0.002387114567682147,0.14523622393608093 +0.12388391047716141,0.0016014056745916605,0.12388391047716141,37099.0,619,2025-10-21 12:03:29.456932,,,,,,,,, +,,,,619,2025-10-21 12:08:52.653201,0.14754927158355713,0.0022084431257098913,0.14754927158355713,0.1476195603609085,0.0020532533526420593,0.1476195603609085,,, +,,,,619,2025-10-21 12:09:19.215282,,,,,,,0.14281664788722992,0.002063426421955228,0.14281664788722992 +0.13926756381988525,0.004724911414086819,0.13926756381988525,37149.0,620,2025-10-21 12:11:27.448870,,,,,,,,, +0.15468762814998627,0.0012725164415314794,0.15468762814998627,37199.0,620,2025-10-21 12:16:12.733411,,,,,,,,, +,,,,620,2025-10-21 12:17:50.867667,0.13935334980487823,0.0018864823505282402,0.13935334980487823,0.15669938921928406,0.0031468290835618973,0.15669938921928406,,, +,,,,620,2025-10-21 12:18:18.111053,,,,,,,0.1418037861585617,0.0021407310850918293,0.1418037861585617 +0.14592571556568146,0.0007951814332045615,0.14592571556568146,37249.0,621,2025-10-21 12:23:58.547523,,,,,,,,, +,,,,621,2025-10-21 12:26:13.705459,0.14999492466449738,0.002039643470197916,0.14999492466449738,0.15290561318397522,0.002407495630905032,0.15290561318397522,,, +,,,,621,2025-10-21 12:26:40.446092,,,,,,,0.14512841403484344,0.002375780139118433,0.14512841403484344 +0.14926062524318695,0.0020327961537986994,0.14926062524318695,37299.0,622,2025-10-21 12:31:40.745880,,,,,,,,, +,,,,622,2025-10-21 12:34:49.205347,0.15401311218738556,0.00308998697437346,0.15401311218738556,0.14665623009204865,0.0027983500622212887,0.14665623009204865,,, +,,,,622,2025-10-21 12:35:16.841268,,,,,,,0.1434641182422638,0.0018873164663091302,0.1434641182422638 +0.165519118309021,0.0012327515287324786,0.165519118309021,37349.0,623,2025-10-21 12:38:56.760575,,,,,,,,, +,,,,623,2025-10-21 12:43:19.551169,0.16067811846733093,0.002231171354651451,0.16067811846733093,0.1379370093345642,0.0019623583648353815,0.1379370093345642,,, +,,,,623,2025-10-21 12:43:46.436000,,,,,,,0.1435193419456482,0.002307015936821699,0.1435193419456482 +0.15780115127563477,0.005390436388552189,0.15780115127563477,37399.0,624,2025-10-21 12:46:41.400962,,,,,,,,, +,,,,624,2025-10-21 12:51:42.693246,0.14773264527320862,0.002022874541580677,0.14773264527320862,0.13765215873718262,0.0016719107516109943,0.13765215873718262,,, +,,,,624,2025-10-21 12:52:09.621798,,,,,,,0.14439080655574799,0.002255580620840192,0.14439080655574799 +0.14134271442890167,0.0019548176787793636,0.14134271442890167,37449.0,625,2025-10-21 12:53:55.601025,,,,,,,,, +0.14248499274253845,0.0034829226788133383,0.14248499274253845,37499.0,625,2025-10-21 12:58:33.867793,,,,,,,,, +,,,,625,2025-10-21 13:00:11.883857,0.14301848411560059,0.0022471649572253227,0.14301848411560059,0.16691727936267853,0.004323086701333523,0.16691727936267853,,, +,,,,625,2025-10-21 13:00:39.378451,,,,,,,0.1434355080127716,0.0018999569583684206,0.1434355080127716 +0.14608535170555115,0.0013381796889007092,0.14608535170555115,37549.0,626,2025-10-21 13:06:25.451220,,,,,,,,, +,,,,626,2025-10-21 13:08:43.670624,0.14689338207244873,0.0012771111214533448,0.14689338207244873,0.14239725470542908,0.0010721574071794748,0.14239725470542908,,, +,,,,626,2025-10-21 13:09:11.634488,,,,,,,0.1443546712398529,0.0023219927679747343,0.1443546712398529 +0.14551256597042084,0.0008018158259801567,0.14551256597042084,37599.0,627,2025-10-21 13:14:09.388002,,,,,,,,, +,,,,627,2025-10-21 13:17:23.064723,0.1601114571094513,0.0022732196375727654,0.1601114571094513,0.14555497467517853,0.0019357743440195918,0.14555497467517853,,, +,,,,627,2025-10-21 13:17:50.213175,,,,,,,0.14243987202644348,0.0021850045304745436,0.14243987202644348 +0.15079177916049957,0.003821553662419319,0.15079177916049957,37649.0,628,2025-10-21 13:21:47.974165,,,,,,,,, +,,,,628,2025-10-21 13:26:08.119501,0.1541847139596939,0.0026358787436038256,0.1541847139596939,0.15258172154426575,0.001941043883562088,0.15258172154426575,,, +,,,,628,2025-10-21 13:26:34.256601,,,,,,,0.13999375700950623,0.002313043689355254,0.13999375700950623 +0.12615375220775604,0.005180390551686287,0.12615375220775604,37699.0,629,2025-10-21 13:29:21.930353,,,,,,,,, +,,,,629,2025-10-21 13:34:39.690755,0.14625589549541473,0.002292065415531397,0.14625589549541473,0.14204519987106323,0.002564207883551717,0.14204519987106323,,, +,,,,629,2025-10-21 13:35:06.967078,,,,,,,0.13938657939434052,0.001919279806315899,0.13938657939434052 +0.1217799186706543,0.0011959454277530313,0.1217799186706543,37749.0,630,2025-10-21 13:36:54.820246,,,,,,,,, +0.14213766157627106,0.001686378032900393,0.14213766157627106,37799.0,630,2025-10-21 13:41:36.857168,,,,,,,,, +,,,,630,2025-10-21 13:43:14.085913,0.1434059739112854,0.0021516589913517237,0.1434059739112854,0.14879369735717773,0.002477355068549514,0.14879369735717773,,, +,,,,630,2025-10-21 13:43:40.961946,,,,,,,0.14307944476604462,0.002089710673317313,0.14307944476604462 +0.15810655057430267,0.004589864052832127,0.15810655057430267,37849.0,631,2025-10-21 13:49:52.353357,,,,,,,,, +,,,,631,2025-10-21 13:52:08.525448,0.15852294862270355,0.004330223426222801,0.15852294862270355,0.1555936187505722,0.0023625760804861784,0.1555936187505722,,, +,,,,631,2025-10-21 13:52:35.943263,,,,,,,0.14657676219940186,0.0022892127744853497,0.14657676219940186 +0.12739305198192596,0.0013357845600694418,0.12739305198192596,37899.0,632,2025-10-21 13:57:21.267544,,,,,,,,, +,,,,632,2025-10-21 14:00:43.382296,0.15064406394958496,0.003489688504487276,0.15064406394958496,0.1554807424545288,0.0016377897700294852,0.1554807424545288,,, +,,,,632,2025-10-21 14:01:10.780415,,,,,,,0.1460152417421341,0.0019340422004461288,0.1460152417421341 +0.1380147933959961,0.0008176492410711944,0.1380147933959961,37949.0,633,2025-10-21 14:05:12.035625,,,,,,,,, +,,,,633,2025-10-21 14:09:24.541555,0.15224237740039825,0.0037705805152654648,0.15224237740039825,0.15770897269248962,0.0037063697818666697,0.15770897269248962,,, +,,,,633,2025-10-21 14:09:49.879407,,,,,,,0.14337150752544403,0.002395875519141555,0.14337150752544403 +0.1379997283220291,0.0061936103738844395,0.1379997283220291,37999.0,634,2025-10-21 14:12:36.871005,,,,,,,,, +,,,,634,2025-10-21 14:18:05.063997,0.14725033938884735,0.002473056549206376,0.14725033938884735,0.15214954316616058,0.0016535818576812744,0.15214954316616058,,, +,,,,634,2025-10-21 14:18:33.024373,,,,,,,0.14478427171707153,0.002349614864215255,0.14478427171707153 +0.13917061686515808,0.0011081068078055978,0.13917061686515808,38049.0,635,2025-10-21 14:20:19.293746,,,,,,,,, +0.14962734282016754,0.002017676830291748,0.14962734282016754,38099.0,635,2025-10-21 14:24:53.889456,,,,,,,,, +,,,,635,2025-10-21 14:26:29.554711,0.1443280428647995,0.0014707641676068306,0.1443280428647995,0.13946504890918732,0.003134844359010458,0.13946504890918732,,, +,,,,635,2025-10-21 14:26:58.092588,,,,,,,0.14617985486984253,0.002505167154595256,0.14617985486984253 +0.17206373810768127,0.005366740748286247,0.17206373810768127,38149.0,636,2025-10-21 14:32:29.229671,,,,,,,,, +,,,,636,2025-10-21 14:34:57.515699,0.14445073902606964,0.0015011203940957785,0.14445073902606964,0.16088590025901794,0.003899214556440711,0.16088590025901794,,, +,,,,636,2025-10-21 14:35:25.156498,,,,,,,0.142735555768013,0.0021099140867590904,0.142735555768013 +0.11693153530359268,0.0007555403863079846,0.11693153530359268,38199.0,637,2025-10-21 14:40:25.348212,,,,,,,,, +,,,,637,2025-10-21 14:43:38.535499,0.14779819548130035,0.0015845985617488623,0.14779819548130035,0.14382915198802948,0.003181412583217025,0.14382915198802948,,, +,,,,637,2025-10-21 14:44:06.087799,,,,,,,0.14012424647808075,0.0020461392123252153,0.14012424647808075 +0.12713436782360077,0.0024535879492759705,0.12713436782360077,38249.0,638,2025-10-21 14:48:22.710533,,,,,,,,, +,,,,638,2025-10-21 14:52:50.948059,0.13443371653556824,0.0017771079437807202,0.13443371653556824,0.14287103712558746,0.00143574015237391,0.14287103712558746,,, +,,,,638,2025-10-21 14:53:18.168648,,,,,,,0.14294898509979248,0.002361682942137122,0.14294898509979248 +0.1312960535287857,0.0013622191036120057,0.1312960535287857,38299.0,639,2025-10-21 14:56:08.509185,,,,,,,,, +,,,,639,2025-10-21 15:01:24.406357,0.1452731490135193,0.002892808523029089,0.1452731490135193,0.14676442742347717,0.002471938030794263,0.14676442742347717,,, +,,,,639,2025-10-21 15:01:51.797999,,,,,,,0.14203423261642456,0.0022108417470008135,0.14203423261642456 +0.15975040197372437,0.001618647133000195,0.15975040197372437,38349.0,640,2025-10-21 15:03:46.428519,,,,,,,,, +0.15232181549072266,0.006818380672484636,0.15232181549072266,38399.0,640,2025-10-21 15:08:10.400939,,,,,,,,, +,,,,640,2025-10-21 15:09:49.419270,0.15838457643985748,0.0022155640181154013,0.15838457643985748,0.1485615372657776,0.0027142935432493687,0.1485615372657776,,, +,,,,640,2025-10-21 15:10:16.341836,,,,,,,0.14420519769191742,0.0020787990652024746,0.14420519769191742 +0.14577001333236694,0.0008232157560996711,0.14577001333236694,38449.0,641,2025-10-21 15:16:27.291668,,,,,,,,, +,,,,641,2025-10-21 15:18:45.713098,0.1589764654636383,0.002258904045447707,0.1589764654636383,0.1446077823638916,0.0026571161579340696,0.1446077823638916,,, +,,,,641,2025-10-21 15:19:13.075759,,,,,,,0.14409877359867096,0.00231744721531868,0.14409877359867096 +0.1699039787054062,0.0018865996971726418,0.1699039787054062,38499.0,642,2025-10-21 15:24:30.249502,,,,,,,,, +,,,,642,2025-10-21 15:27:53.746713,0.15095096826553345,0.002700815675780177,0.15095096826553345,0.1473419964313507,0.002008365001529455,0.1473419964313507,,, +,,,,642,2025-10-21 15:28:21.421856,,,,,,,0.14522364735603333,0.0024255565367639065,0.14522364735603333 +0.1571279764175415,0.0015831328928470612,0.1571279764175415,38549.0,643,2025-10-21 15:32:29.089349,,,,,,,,, +,,,,643,2025-10-21 15:36:58.716600,0.15630614757537842,0.002117103897035122,0.15630614757537842,0.15542209148406982,0.0024455443490296602,0.15542209148406982,,, +,,,,643,2025-10-21 15:37:26.022672,,,,,,,0.14383727312088013,0.0021398907992988825,0.14383727312088013 +0.1487215906381607,0.0024702688679099083,0.1487215906381607,38599.0,644,2025-10-21 15:40:21.880681,,,,,,,,, +,,,,644,2025-10-21 15:45:38.562667,0.13916243612766266,0.001453301520086825,0.13916243612766266,0.15021835267543793,0.0013783402973785996,0.15021835267543793,,, +,,,,644,2025-10-21 15:46:05.575950,,,,,,,0.1415991336107254,0.002233690582215786,0.1415991336107254 +0.11981675028800964,0.0011657403083518147,0.11981675028800964,38649.0,645,2025-10-21 15:48:06.503988,,,,,,,,, +0.14783382415771484,0.001213531824760139,0.14783382415771484,38699.0,645,2025-10-21 15:52:53.365987,,,,,,,,, +,,,,645,2025-10-21 15:54:29.328222,0.141362264752388,0.00220800144597888,0.141362264752388,0.1509746015071869,0.004302940797060728,0.1509746015071869,,, +,,,,645,2025-10-21 15:54:55.814213,,,,,,,0.1424107849597931,0.0022944100201129913,0.1424107849597931 +0.18001505732536316,0.002482511568814516,0.18001505732536316,38749.0,646,2025-10-21 16:00:51.680753,,,,,,,,, +,,,,646,2025-10-21 16:03:08.726122,0.14739267528057098,0.0016262055141851306,0.14739267528057098,0.15548357367515564,0.0024574571289122105,0.15548357367515564,,, +,,,,646,2025-10-21 16:03:36.717611,,,,,,,0.14419621229171753,0.0020107817836105824,0.14419621229171753 +0.1598476618528366,0.00275437138043344,0.1598476618528366,38799.0,647,2025-10-21 16:08:46.326162,,,,,,,,, +,,,,647,2025-10-21 16:12:08.426287,0.14425325393676758,0.0015845813322812319,0.14425325393676758,0.14318014681339264,0.002288178773596883,0.14318014681339264,,, +,,,,647,2025-10-21 16:12:34.761092,,,,,,,0.14430342614650726,0.00233194837346673,0.14430342614650726 +0.12768621742725372,0.003171617863699794,0.12768621742725372,38849.0,648,2025-10-21 16:16:50.884591,,,,,,,,, +,,,,648,2025-10-21 16:20:50.840634,0.15735720098018646,0.0021861186251044273,0.15735720098018646,0.14014436304569244,0.0023115493822842836,0.14014436304569244,,, +,,,,648,2025-10-21 16:21:17.917822,,,,,,,0.14457693696022034,0.0022151092998683453,0.14457693696022034 +0.18375062942504883,0.0013434032443910837,0.18375062942504883,38899.0,649,2025-10-21 16:24:04.502145,,,,,,,,, +,,,,649,2025-10-21 16:29:28.522730,0.15748222172260284,0.002180957468226552,0.15748222172260284,0.15574641525745392,0.002611808944493532,0.15574641525745392,,, +,,,,649,2025-10-21 16:29:55.020876,,,,,,,0.14196114242076874,0.002232469618320465,0.14196114242076874 +0.14636267721652985,0.003551468485966325,0.14636267721652985,38949.0,650,2025-10-21 16:31:43.216847,,,,,,,,, +0.09875405579805374,0.002884875750169158,0.09875405579805374,38999.0,650,2025-10-21 16:36:28.026554,,,,,,,,, +,,,,650,2025-10-21 16:38:02.795472,0.138456329703331,0.0018703099340200424,0.138456329703331,0.14368341863155365,0.0018993779085576534,0.14368341863155365,,, +,,,,650,2025-10-21 16:38:28.916183,,,,,,,0.1425740122795105,0.0020342448260635138,0.1425740122795105 +0.17240723967552185,0.0020119172986596823,0.17240723967552185,39049.0,651,2025-10-21 16:44:15.204996,,,,,,,,, +,,,,651,2025-10-21 16:46:31.145775,0.14627425372600555,0.0022372889798134565,0.14627425372600555,0.14720940589904785,0.0014193124370649457,0.14720940589904785,,, +,,,,651,2025-10-21 16:46:58.188603,,,,,,,0.1461312174797058,0.0020734239369630814,0.1461312174797058 +0.14353808760643005,0.0037771835923194885,0.14353808760643005,39099.0,652,2025-10-21 16:52:01.491462,,,,,,,,, +,,,,652,2025-10-21 16:55:20.162919,0.14866149425506592,0.0017698366427794099,0.14866149425506592,0.1426684409379959,0.003066409146413207,0.1426684409379959,,, +,,,,652,2025-10-21 16:55:47.000251,,,,,,,0.14739510416984558,0.002302665263414383,0.14739510416984558 +0.11805149912834167,0.000884521403349936,0.11805149912834167,39149.0,653,2025-10-21 16:59:39.730680,,,,,,,,, +,,,,653,2025-10-21 17:04:01.479542,0.1435765027999878,0.0022003785707056522,0.1435765027999878,0.15132062137126923,0.001735473982989788,0.15132062137126923,,, +,,,,653,2025-10-21 17:04:28.522075,,,,,,,0.145022451877594,0.0023406287655234337,0.145022451877594 +0.1596354842185974,0.0011108902981504798,0.1596354842185974,39199.0,654,2025-10-21 17:07:21.401205,,,,,,,,, +,,,,654,2025-10-21 17:12:58.382569,0.13791523873806,0.0017705918289721012,0.13791523873806,0.14433234930038452,0.001984307309612632,0.14433234930038452,,, +,,,,654,2025-10-21 17:13:25.791311,,,,,,,0.14646224677562714,0.0019750341307371855,0.14646224677562714 +0.1439719945192337,0.0033847857266664505,0.1439719945192337,39249.0,655,2025-10-21 17:15:11.796393,,,,,,,,, +0.12125081568956375,0.0009641725337132812,0.12125081568956375,39299.0,655,2025-10-21 17:20:07.043617,,,,,,,,, +,,,,655,2025-10-21 17:21:43.132238,0.1538371592760086,0.0018180658807978034,0.1538371592760086,0.14143331348896027,0.0011307660024613142,0.14143331348896027,,, +,,,,655,2025-10-21 17:22:12.003671,,,,,,,0.14208902418613434,0.0022748650517314672,0.14208902418613434 +0.18962319195270538,0.0067048389464616776,0.18962319195270538,39349.0,656,2025-10-21 17:27:56.223813,,,,,,,,, +,,,,656,2025-10-21 17:30:34.098583,0.14284276962280273,0.0027303388342261314,0.14284276962280273,0.14304915070533752,0.0016767233610153198,0.14304915070533752,,, +,,,,656,2025-10-21 17:31:01.594624,,,,,,,0.14321863651275635,0.0020883106626570225,0.14321863651275635 +0.13231603801250458,0.005272142589092255,0.13231603801250458,39399.0,657,2025-10-21 17:36:09.600976,,,,,,,,, +,,,,657,2025-10-21 17:39:17.039109,0.14402185380458832,0.0021741469390690327,0.14402185380458832,0.14292138814926147,0.0024598082527518272,0.14292138814926147,,, +,,,,657,2025-10-21 17:39:44.853809,,,,,,,0.14737999439239502,0.002368518617004156,0.14737999439239502 +0.16045360267162323,0.001766396570019424,0.16045360267162323,39449.0,658,2025-10-21 17:43:48.046240,,,,,,,,, +,,,,658,2025-10-21 17:47:57.831859,0.14088070392608643,0.0014884453266859055,0.14088070392608643,0.14331451058387756,0.0020757531747221947,0.14331451058387756,,, +,,,,658,2025-10-21 17:48:26.164623,,,,,,,0.14231187105178833,0.0024369771126657724,0.14231187105178833 +0.1563403457403183,0.0014037947403267026,0.1563403457403183,39499.0,659,2025-10-21 17:51:32.180842,,,,,,,,, +,,,,659,2025-10-21 17:56:36.761671,0.13473956286907196,0.0019480769988149405,0.13473956286907196,0.14353516697883606,0.0016835164278745651,0.14353516697883606,,, +,,,,659,2025-10-21 17:57:04.623045,,,,,,,0.14291468262672424,0.0020518058445304632,0.14291468262672424 +0.15762215852737427,0.001457265461795032,0.15762215852737427,39549.0,660,2025-10-21 17:58:51.506253,,,,,,,,, +0.1548784226179123,0.004456827882677317,0.1548784226179123,39599.0,660,2025-10-21 18:03:34.074335,,,,,,,,, +,,,,660,2025-10-21 18:05:11.525077,0.1432245969772339,0.00212897639721632,0.1432245969772339,0.14620351791381836,0.0017061757389456034,0.14620351791381836,,, +,,,,660,2025-10-21 18:05:37.196073,,,,,,,0.1432235836982727,0.0019838896114379168,0.1432235836982727 +0.12905088067054749,0.0009628814877942204,0.12905088067054749,39649.0,661,2025-10-21 18:11:37.479048,,,,,,,,, +,,,,661,2025-10-21 18:13:53.189474,0.1455143839120865,0.0019803810864686966,0.1455143839120865,0.14840726554393768,0.0012607572134584188,0.14840726554393768,,, +,,,,661,2025-10-21 18:14:20.447805,,,,,,,0.14419397711753845,0.00234255101531744,0.14419397711753845 +0.13871344923973083,0.0053885579109191895,0.13871344923973083,39699.0,662,2025-10-21 18:19:04.469838,,,,,,,,, +,,,,662,2025-10-21 18:22:20.536866,0.14055608212947845,0.0024360010866075754,0.14055608212947845,0.1449189931154251,0.0018585072830319405,0.1449189931154251,,, +,,,,662,2025-10-21 18:22:48.373380,,,,,,,0.14227265119552612,0.0022270302288234234,0.14227265119552612 +0.12737931311130524,0.001449665753170848,0.12737931311130524,39749.0,663,2025-10-21 18:26:58.844826,,,,,,,,, +,,,,663,2025-10-21 18:31:06.704526,0.14982618391513824,0.002248269971460104,0.14982618391513824,0.14398063719272614,0.0023004866670817137,0.14398063719272614,,, +,,,,663,2025-10-21 18:31:35.121760,,,,,,,0.14297358691692352,0.0022963793016970158,0.14297358691692352 +0.14520704746246338,0.0026230623479932547,0.14520704746246338,39799.0,664,2025-10-21 18:34:21.059869,,,,,,,,, +,,,,664,2025-10-21 18:39:39.128734,0.15041880309581757,0.001955324085429311,0.15041880309581757,0.14294013381004333,0.00212565204128623,0.14294013381004333,,, +,,,,664,2025-10-21 18:40:07.795496,,,,,,,0.1440252959728241,0.00234356545843184,0.1440252959728241 +0.12400969117879868,0.0014004016993567348,0.12400969117879868,39849.0,665,2025-10-21 18:42:07.437706,,,,,,,,, +0.1523231416940689,0.0014181885635480285,0.1523231416940689,39899.0,665,2025-10-21 18:46:46.762224,,,,,,,,, +,,,,665,2025-10-21 18:48:26.187349,0.14455212652683258,0.0024527201894670725,0.14455212652683258,0.15396220982074738,0.002220574766397476,0.15396220982074738,,, +,,,,665,2025-10-21 18:48:53.525039,,,,,,,0.1448151022195816,0.0021286392584443092,0.1448151022195816 +0.14217416942119598,0.0008390203001908958,0.14217416942119598,39949.0,666,2025-10-21 18:54:41.104898,,,,,,,,, +,,,,666,2025-10-21 18:57:00.804394,0.1499868780374527,0.0019364624749869108,0.1499868780374527,0.15284176170825958,0.0019163083052262664,0.15284176170825958,,, +,,,,666,2025-10-21 18:57:28.133884,,,,,,,0.14297959208488464,0.0024213099386543036,0.14297959208488464 +0.1351328045129776,0.003161756554618478,0.1351328045129776,39999.0,667,2025-10-21 19:02:26.671726,,,,,,,,, +,,,,667,2025-10-21 19:05:51.086130,0.14983995258808136,0.0026036486960947514,0.14983995258808136,0.14088737964630127,0.0036042167339473963,0.14088737964630127,,, +,,,,667,2025-10-21 19:06:19.789897,,,,,,,0.14038386940956116,0.0021572744008153677,0.14038386940956116 +0.1451341211795807,0.003547689877450466,0.1451341211795807,40049.0,668,2025-10-21 19:10:08.940105,,,,,,,,, +,,,,668,2025-10-21 19:14:15.127377,0.15371043980121613,0.0021813472267240286,0.15371043980121613,0.15162625908851624,0.0017880782252177596,0.15162625908851624,,, +,,,,668,2025-10-21 19:14:42.597643,,,,,,,0.14172843098640442,0.0024724011309444904,0.14172843098640442 +0.1260685920715332,0.0007479678024537861,0.1260685920715332,40099.0,669,2025-10-21 19:17:33.072840,,,,,,,,, +,,,,669,2025-10-21 19:22:46.129267,0.14662517607212067,0.0018569297390058637,0.14662517607212067,0.12974008917808533,0.0011412129970267415,0.12974008917808533,,, +,,,,669,2025-10-21 19:23:37.309625,,,,,,,0.1396072804927826,0.002110064262524247,0.1396072804927826 +0.1442456990480423,0.002358806785196066,0.1442456990480423,40149.0,670,2025-10-21 19:25:37.296684,,,,,,,,, +0.1341681182384491,0.0012501879828050733,0.1341681182384491,40199.0,670,2025-10-21 19:29:58.970427,,,,,,,,, +,,,,670,2025-10-21 19:31:33.923407,0.14536432921886444,0.002300177002325654,0.14536432921886444,0.14575831592082977,0.0017902568215504289,0.14575831592082977,,, +,,,,670,2025-10-21 19:32:00.649750,,,,,,,0.14039461314678192,0.001862618955783546,0.14039461314678192 +0.15143121778964996,0.001128062722273171,0.15143121778964996,40249.0,671,2025-10-21 19:37:38.174866,,,,,,,,, +,,,,671,2025-10-21 19:39:58.561110,0.15809796750545502,0.0026378172915428877,0.15809796750545502,0.14410817623138428,0.0033300663344562054,0.14410817623138428,,, +,,,,671,2025-10-21 19:40:25.754609,,,,,,,0.14518046379089355,0.002101171063259244,0.14518046379089355 +0.1479814499616623,0.003363879630342126,0.1479814499616623,40299.0,672,2025-10-21 19:45:15.069347,,,,,,,,, +,,,,672,2025-10-21 19:48:41.028110,0.1573423147201538,0.0017426053527742624,0.1573423147201538,0.14389771223068237,0.002245118375867605,0.14389771223068237,,, +,,,,672,2025-10-21 19:49:06.473280,,,,,,,0.14538289606571198,0.002209840342402458,0.14538289606571198 +0.13556022942066193,0.00133285962510854,0.13556022942066193,40349.0,673,2025-10-21 19:53:27.982731,,,,,,,,, +,,,,673,2025-10-21 19:57:35.191015,0.14201757311820984,0.0031739692203700542,0.14201757311820984,0.13595230877399445,0.0026200164575129747,0.13595230877399445,,, +,,,,673,2025-10-21 19:58:27.183711,,,,,,,0.14144372940063477,0.00213329098187387,0.14144372940063477 +0.13951422274112701,0.0012849281774833798,0.13951422274112701,40399.0,674,2025-10-21 20:01:18.745245,,,,,,,,, +,,,,674,2025-10-21 20:06:27.867849,0.1395944505929947,0.002315946388989687,0.1395944505929947,0.15052670240402222,0.0026679853908717632,0.15052670240402222,,, +,,,,674,2025-10-21 20:06:53.757493,,,,,,,0.14426779747009277,0.0023002729285508394,0.14426779747009277 +0.1322370171546936,0.0018527582287788391,0.1322370171546936,40449.0,675,2025-10-21 20:08:35.868793,,,,,,,,, +0.17755888402462006,0.007356447167694569,0.17755888402462006,40499.0,675,2025-10-21 20:13:22.503929,,,,,,,,, +,,,,675,2025-10-21 20:14:57.330269,0.1459667831659317,0.0024603542406111956,0.1459667831659317,0.14065828919410706,0.0020337540190666914,0.14065828919410706,,, +,,,,675,2025-10-21 20:15:24.089425,,,,,,,0.14157968759536743,0.0022030677646398544,0.14157968759536743 +0.13393466174602509,0.002886516973376274,0.13393466174602509,40549.0,676,2025-10-21 20:20:57.962929,,,,,,,,, +,,,,676,2025-10-21 20:23:29.253859,0.1434752345085144,0.0023542444687336683,0.1434752345085144,0.14537186920642853,0.0019962729420512915,0.14537186920642853,,, +,,,,676,2025-10-21 20:23:57.017255,,,,,,,0.14268380403518677,0.0022764706518501043,0.14268380403518677 +0.1404966413974762,0.001945715630427003,0.1404966413974762,40599.0,677,2025-10-21 20:28:40.770242,,,,,,,,, +,,,,677,2025-10-21 20:31:50.414737,0.14075663685798645,0.002683299593627453,0.14075663685798645,0.14499817788600922,0.0025532355066388845,0.14499817788600922,,, +,,,,677,2025-10-21 20:32:18.783058,,,,,,,0.14303193986415863,0.0022564008831977844,0.14303193986415863 +0.13169358670711517,0.0018148861126974225,0.13169358670711517,40649.0,678,2025-10-21 20:36:11.017902,,,,,,,,, +,,,,678,2025-10-21 20:40:12.064645,0.1468517780303955,0.00163749058265239,0.1468517780303955,0.14964069426059723,0.002685101702809334,0.14964069426059723,,, +,,,,678,2025-10-21 20:40:38.950379,,,,,,,0.14301399886608124,0.002285648137331009,0.14301399886608124 +0.14385467767715454,0.0022120443172752857,0.14385467767715454,40699.0,679,2025-10-21 20:43:42.019597,,,,,,,,, +,,,,679,2025-10-21 20:48:55.353237,0.1550612896680832,0.0031600305810570717,0.1550612896680832,0.14338386058807373,0.0019964510574936867,0.14338386058807373,,, +,,,,679,2025-10-21 20:49:22.195863,,,,,,,0.14091618359088898,0.002033030381426215,0.14091618359088898 +0.17211554944515228,0.004150867462158203,0.17211554944515228,40749.0,680,2025-10-21 20:51:10.172744,,,,,,,,, +0.1536673903465271,0.0017057607183232903,0.1536673903465271,40799.0,680,2025-10-21 20:55:52.327705,,,,,,,,, +,,,,680,2025-10-21 20:57:29.455825,0.14094869792461395,0.0012166885426267982,0.14094869792461395,0.1400606781244278,0.0023396962787956,0.1400606781244278,,, +,,,,680,2025-10-21 20:57:57.282217,,,,,,,0.1450716108083725,0.0020314070861786604,0.1450716108083725 +0.15235793590545654,0.0019170475425198674,0.15235793590545654,40849.0,681,2025-10-21 21:03:45.005475,,,,,,,,, +,,,,681,2025-10-21 21:05:58.378309,0.14220140874385834,0.002015490783378482,0.14220140874385834,0.14472898840904236,0.002174227498471737,0.14472898840904236,,, +,,,,681,2025-10-21 21:06:26.981780,,,,,,,0.14292094111442566,0.0022132606245577335,0.14292094111442566 +0.11846688389778137,0.002413570648059249,0.11846688389778137,40899.0,682,2025-10-21 21:11:11.417165,,,,,,,,, +,,,,682,2025-10-21 21:14:19.218191,0.1453770101070404,0.0028013770934194326,0.1453770101070404,0.15688009560108185,0.002404858125373721,0.15688009560108185,,, +,,,,682,2025-10-21 21:14:46.160553,,,,,,,0.14521245658397675,0.0021971797104924917,0.14521245658397675 +0.13230742514133453,0.00155736249871552,0.13230742514133453,40949.0,683,2025-10-21 21:18:36.745980,,,,,,,,, +,,,,683,2025-10-21 21:22:53.923152,0.1511888951063156,0.001749410293996334,0.1511888951063156,0.15248744189739227,0.0025178997311741114,0.15248744189739227,,, +,,,,683,2025-10-21 21:23:20.896711,,,,,,,0.1387128233909607,0.00197628908790648,0.1387128233909607 +0.1345730423927307,0.0009836627868935466,0.1345730423927307,40999.0,684,2025-10-21 21:26:08.858731,,,,,,,,, +,,,,684,2025-10-21 21:31:10.691841,0.1397087424993515,0.0014474308118224144,0.1397087424993515,0.14335022866725922,0.0011347593972459435,0.14335022866725922,,, +,,,,684,2025-10-21 21:31:39.818522,,,,,,,0.14575378596782684,0.002095821313560009,0.14575378596782684 +0.14132115244865417,0.0013763114111497998,0.14132115244865417,41049.0,685,2025-10-21 21:33:35.816106,,,,,,,,, +0.1356167495250702,0.0010773660615086555,0.1356167495250702,41099.0,685,2025-10-21 21:38:18.397885,,,,,,,,, +,,,,685,2025-10-21 21:39:57.003621,0.14838334918022156,0.0019599522929638624,0.14838334918022156,0.138945534825325,0.001472936011850834,0.138945534825325,,, +,,,,685,2025-10-21 21:40:24.618820,,,,,,,0.1400623321533203,0.002264897571876645,0.1400623321533203 +0.13206347823143005,0.0033505235332995653,0.13206347823143005,41149.0,686,2025-10-21 21:46:06.504665,,,,,,,,, +,,,,686,2025-10-21 21:48:43.398886,0.14384107291698456,0.0028461359906941652,0.14384107291698456,0.1401119828224182,0.0018841656856238842,0.1401119828224182,,, +,,,,686,2025-10-21 21:49:10.499077,,,,,,,0.13984552025794983,0.0021437369287014008,0.13984552025794983 +0.13517265021800995,0.0007584091508761048,0.13517265021800995,41199.0,687,2025-10-21 21:53:51.283230,,,,,,,,, +,,,,687,2025-10-21 21:57:11.917397,0.15714870393276215,0.002712477231398225,0.15714870393276215,0.15745805203914642,0.002227403223514557,0.15745805203914642,,, +,,,,687,2025-10-21 21:57:38.040629,,,,,,,0.14226078987121582,0.002174173016101122,0.14226078987121582 +0.1257612258195877,0.0010196259245276451,0.1257612258195877,41249.0,688,2025-10-21 22:01:41.639004,,,,,,,,, +,,,,688,2025-10-21 22:05:45.826962,0.14509817957878113,0.0015478305285796523,0.14509817957878113,0.14892543852329254,0.002077561104670167,0.14892543852329254,,, +,,,,688,2025-10-21 22:06:12.569632,,,,,,,0.1413363516330719,0.002040080027654767,0.1413363516330719 +0.17517083883285522,0.002301463158801198,0.17517083883285522,41299.0,689,2025-10-21 22:08:56.652901,,,,,,,,, +,,,,689,2025-10-21 22:14:24.751101,0.149041548371315,0.0017223141621798277,0.149041548371315,0.14686766266822815,0.0019171069143339992,0.14686766266822815,,, +,,,,689,2025-10-21 22:14:51.643015,,,,,,,0.14383967220783234,0.0021664800588041544,0.14383967220783234 +0.14039604365825653,0.0035647123586386442,0.14039604365825653,41349.0,690,2025-10-21 22:16:52.275250,,,,,,,,, +0.11559893190860748,0.0006267716526053846,0.11559893190860748,41399.0,690,2025-10-21 22:21:27.393466,,,,,,,,, +,,,,690,2025-10-21 22:22:59.761686,0.153013676404953,0.0027276326436549425,0.153013676404953,0.1486371010541916,0.0012671228032559156,0.1486371010541916,,, +,,,,690,2025-10-21 22:23:27.276006,,,,,,,0.14434000849723816,0.0021667189430445433,0.14434000849723816 +0.17126582562923431,0.0028658797964453697,0.17126582562923431,41449.0,691,2025-10-21 22:29:12.197208,,,,,,,,, +,,,,691,2025-10-21 22:31:28.511488,0.13487645983695984,0.0034559464547783136,0.13487645983695984,0.15690332651138306,0.002281332155689597,0.15690332651138306,,, +,,,,691,2025-10-21 22:31:55.621909,,,,,,,0.14490072429180145,0.002090491820126772,0.14490072429180145 +0.15717782080173492,0.0017988929757848382,0.15717782080173492,41499.0,692,2025-10-21 22:36:59.127835,,,,,,,,, +,,,,692,2025-10-21 22:40:11.647283,0.13988815248012543,0.0031039780005812645,0.13988815248012543,0.15069261193275452,0.00330534134991467,0.15069261193275452,,, +,,,,692,2025-10-21 22:40:38.597355,,,,,,,0.14496155083179474,0.002326485002413392,0.14496155083179474 +0.12807871401309967,0.0012624923838302493,0.12807871401309967,41549.0,693,2025-10-21 22:44:28.227767,,,,,,,,, +,,,,693,2025-10-21 22:48:29.609776,0.14418022334575653,0.0023254668340086937,0.14418022334575653,0.15234151482582092,0.0018814783543348312,0.15234151482582092,,, +,,,,693,2025-10-21 22:48:57.383716,,,,,,,0.14021416008472443,0.002117719268426299,0.14021416008472443 +0.1575780212879181,0.00798655766993761,0.1575780212879181,41599.0,694,2025-10-21 22:51:40.025750,,,,,,,,, +,,,,694,2025-10-21 22:56:58.569455,0.14824965596199036,0.001823335187509656,0.14824965596199036,0.13610446453094482,0.0018880728166550398,0.13610446453094482,,, +,,,,694,2025-10-21 22:57:24.626598,,,,,,,0.13704735040664673,0.0019855389837175608,0.13704735040664673 +0.13789348304271698,0.001414313679561019,0.13789348304271698,41649.0,695,2025-10-21 22:59:13.791953,,,,,,,,, +0.1580890715122223,0.001702276524156332,0.1580890715122223,41699.0,695,2025-10-21 23:04:29.684644,,,,,,,,, +,,,,695,2025-10-21 23:06:08.903814,0.14142298698425293,0.0025186489801853895,0.14142298698425293,0.13955792784690857,0.002143791876733303,0.13955792784690857,,, +,,,,695,2025-10-21 23:06:35.767753,,,,,,,0.14345590770244598,0.002004503272473812,0.14345590770244598 +0.09575363993644714,0.00074621825478971,0.09575363993644714,41749.0,696,2025-10-21 23:12:08.290275,,,,,,,,, +,,,,696,2025-10-21 23:14:48.745841,0.1535545438528061,0.0017107268795371056,0.1535545438528061,0.14237059652805328,0.0025607366114854813,0.14237059652805328,,, +,,,,696,2025-10-21 23:15:15.823608,,,,,,,0.14111655950546265,0.002110336208716035,0.14111655950546265 +0.13649071753025055,0.009422198869287968,0.13649071753025055,41799.0,697,2025-10-21 23:19:53.961062,,,,,,,,, +,,,,697,2025-10-21 23:23:16.306208,0.1488254964351654,0.0015662538353353739,0.1488254964351654,0.14427511394023895,0.002341632265597582,0.14427511394023895,,, +,,,,697,2025-10-21 23:23:42.939087,,,,,,,0.1385895013809204,0.0022745917085558176,0.1385895013809204 +0.14900198578834534,0.0017016122583299875,0.14900198578834534,41849.0,698,2025-10-21 23:27:37.504265,,,,,,,,, +,,,,698,2025-10-21 23:32:01.422191,0.16483905911445618,0.004367343615740538,0.16483905911445618,0.14608801901340485,0.002688347129151225,0.14608801901340485,,, +,,,,698,2025-10-21 23:32:28.528084,,,,,,,0.14032089710235596,0.0022670826874673367,0.14032089710235596 +0.1481647491455078,0.0039510298520326614,0.1481647491455078,41899.0,699,2025-10-21 23:35:18.755357,,,,,,,,, +,,,,699,2025-10-21 23:40:22.561915,0.14612440764904022,0.0018554351991042495,0.14612440764904022,0.15033479034900665,0.003220090875402093,0.15033479034900665,,, +,,,,699,2025-10-21 23:40:49.661906,,,,,,,0.1470276266336441,0.0028774570673704147,0.1470276266336441 +0.1404278427362442,0.0017276505241170526,0.1404278427362442,41949.0,700,2025-10-21 23:42:37.065088,,,,,,,,, +0.1816006600856781,0.002220108639448881,0.1816006600856781,41999.0,700,2025-10-21 23:47:17.617698,,,,,,,,, +,,,,700,2025-10-21 23:48:53.742902,0.15804269909858704,0.002917433390393853,0.15804269909858704,0.16032442450523376,0.0023655008990317583,0.16032442450523376,,, +,,,,700,2025-10-21 23:49:21.042010,,,,,,,0.1427842080593109,0.002286092145368457,0.1427842080593109 +0.14769327640533447,0.0016718099359422922,0.14769327640533447,42049.0,701,2025-10-21 23:55:34.867252,,,,,,,,, +,,,,701,2025-10-21 23:57:50.625359,0.15221549570560455,0.002218443900346756,0.15221549570560455,0.14297804236412048,0.0020150982309132814,0.14297804236412048,,, +,,,,701,2025-10-21 23:58:16.868804,,,,,,,0.13940711319446564,0.0019705346785485744,0.13940711319446564 +0.1554199904203415,0.003478801343590021,0.1554199904203415,42099.0,702,2025-10-22 00:03:26.304325,,,,,,,,, +,,,,702,2025-10-22 00:06:46.466193,0.13919131457805634,0.002771891187876463,0.13919131457805634,0.14045269787311554,0.003260794561356306,0.14045269787311554,,, +,,,,702,2025-10-22 00:07:12.551474,,,,,,,0.14202123880386353,0.002293100580573082,0.14202123880386353 +0.13963066041469574,0.0014132378855720162,0.13963066041469574,42149.0,703,2025-10-22 00:10:54.173472,,,,,,,,, +,,,,703,2025-10-22 00:15:02.847703,0.1402934044599533,0.0016438725870102644,0.1402934044599533,0.14229810237884521,0.0022144177928566933,0.14229810237884521,,, +,,,,703,2025-10-22 00:15:28.905807,,,,,,,0.14220795035362244,0.0022085467353463173,0.14220795035362244 +0.10951006412506104,0.0010907418327406049,0.10951006412506104,42199.0,704,2025-10-22 00:18:20.321310,,,,,,,,, +,,,,704,2025-10-22 00:23:43.001744,0.14073558151721954,0.00255028554238379,0.14073558151721954,0.1454639583826065,0.001963303191587329,0.1454639583826065,,, +,,,,704,2025-10-22 00:24:09.717554,,,,,,,0.13909535109996796,0.0018753483891487122,0.13909535109996796 +0.13593348860740662,0.001602035015821457,0.13593348860740662,42249.0,705,2025-10-22 00:26:01.567732,,,,,,,,, +0.13102956116199493,0.0011723722564056516,0.13102956116199493,42299.0,705,2025-10-22 00:30:40.363942,,,,,,,,, +,,,,705,2025-10-22 00:32:17.108270,0.14659063518047333,0.0019082739017903805,0.14659063518047333,0.14608830213546753,0.0020112309139221907,0.14608830213546753,,, +,,,,705,2025-10-22 00:32:45.288191,,,,,,,0.14361867308616638,0.002300326945260167,0.14361867308616638 +0.12435241043567657,0.002025488531216979,0.12435241043567657,42349.0,706,2025-10-22 00:38:32.099132,,,,,,,,, +,,,,706,2025-10-22 00:40:47.623176,0.14324326813220978,0.0011847428977489471,0.14324326813220978,0.1501854807138443,0.0019238220993429422,0.1501854807138443,,, +,,,,706,2025-10-22 00:41:14.369888,,,,,,,0.147755965590477,0.002665891544893384,0.147755965590477 +0.15493406355381012,0.0011705888900905848,0.15493406355381012,42399.0,707,2025-10-22 00:46:14.493065,,,,,,,,, +,,,,707,2025-10-22 00:49:24.637322,0.14247743785381317,0.002594991121441126,0.14247743785381317,0.14054431021213531,0.0025648276787251234,0.14054431021213531,,, +,,,,707,2025-10-22 00:49:51.479207,,,,,,,0.14293047785758972,0.002110229106619954,0.14293047785758972 +0.14340965449810028,0.004716922994703054,0.14340965449810028,42449.0,708,2025-10-22 00:53:52.279983,,,,,,,,, +,,,,708,2025-10-22 00:57:59.803584,0.16505089402198792,0.002733491826802492,0.16505089402198792,0.14982205629348755,0.0026213033124804497,0.14982205629348755,,, +,,,,708,2025-10-22 00:58:27.079880,,,,,,,0.14149507880210876,0.0021442046854645014,0.14149507880210876 +0.14853231608867645,0.003879331052303314,0.14853231608867645,42499.0,709,2025-10-22 01:01:15.229107,,,,,,,,, +,,,,709,2025-10-22 01:06:58.141844,0.14340977370738983,0.0027463093865662813,0.14340977370738983,0.14660196006298065,0.0034722997806966305,0.14660196006298065,,, +,,,,709,2025-10-22 01:07:24.304443,,,,,,,0.14402109384536743,0.0020981179550290108,0.14402109384536743 +0.1558302342891693,0.004113299772143364,0.1558302342891693,42549.0,710,2025-10-22 01:09:18.631887,,,,,,,,, +0.15919488668441772,0.0019455243600532413,0.15919488668441772,42599.0,710,2025-10-22 01:14:01.825186,,,,,,,,, +,,,,710,2025-10-22 01:15:38.784241,0.13321258127689362,0.0010918371845036745,0.13321258127689362,0.14438094198703766,0.0018333068583160639,0.14438094198703766,,, +,,,,710,2025-10-22 01:16:05.279363,,,,,,,0.14350858330726624,0.0026114906650036573,0.14350858330726624 +0.16712763905525208,0.0042570531368255615,0.16712763905525208,42649.0,711,2025-10-22 01:21:52.404321,,,,,,,,, +,,,,711,2025-10-22 01:24:08.947266,0.14599274098873138,0.0033174657728523016,0.14599274098873138,0.1586395651102066,0.003929615952074528,0.1586395651102066,,, +,,,,711,2025-10-22 01:24:36.239472,,,,,,,0.14426031708717346,0.0023903336841613054,0.14426031708717346 +0.14364248514175415,0.0034885969944298267,0.14364248514175415,42699.0,712,2025-10-22 01:29:18.423722,,,,,,,,, +,,,,712,2025-10-22 01:32:38.546643,0.14529280364513397,0.002182520693168044,0.14529280364513397,0.13866639137268066,0.0025733800139278173,0.13866639137268066,,, +,,,,712,2025-10-22 01:33:06.279228,,,,,,,0.13779041171073914,0.0019045515218749642,0.13779041171073914 +0.1444537341594696,0.0038586053997278214,0.1444537341594696,42749.0,713,2025-10-22 01:36:44.449318,,,,,,,,, +,,,,713,2025-10-22 01:40:57.542834,0.1491779237985611,0.0026014067698270082,0.1491779237985611,0.15175344049930573,0.0036986113991588354,0.15175344049930573,,, +,,,,713,2025-10-22 01:41:23.886132,,,,,,,0.14112386107444763,0.0021172002889215946,0.14112386107444763 +0.14627043902873993,0.003720373846590519,0.14627043902873993,42799.0,714,2025-10-22 01:44:22.661143,,,,,,,,, +,,,,714,2025-10-22 01:49:45.366777,0.14243197441101074,0.002594270743429661,0.14243197441101074,0.14440178871154785,0.0021446405444294214,0.14440178871154785,,, +,,,,714,2025-10-22 01:50:12.805609,,,,,,,0.14143328368663788,0.0021939906291663647,0.14143328368663788 +0.14213860034942627,0.003319785464555025,0.14213860034942627,42849.0,715,2025-10-22 01:51:56.327517,,,,,,,,, +0.14229866862297058,0.002829563105478883,0.14229866862297058,42899.0,715,2025-10-22 01:56:40.202971,,,,,,,,, +,,,,715,2025-10-22 01:58:16.509466,0.13184025883674622,0.0015447190962731838,0.13184025883674622,0.14153945446014404,0.0024728982243686914,0.14153945446014404,,, +,,,,715,2025-10-22 01:58:44.694217,,,,,,,0.1447959989309311,0.002056530909612775,0.1447959989309311 +0.16430266201496124,0.004303733352571726,0.16430266201496124,42949.0,716,2025-10-22 02:04:38.365713,,,,,,,,, +,,,,716,2025-10-22 02:06:47.761127,0.1450456827878952,0.0023624186869710684,0.1450456827878952,0.15330427885055542,0.0028289214242249727,0.15330427885055542,,, +,,,,716,2025-10-22 02:07:14.565330,,,,,,,0.14114131033420563,0.002365638967603445,0.14114131033420563 +0.1562625914812088,0.0012213436421006918,0.1562625914812088,42999.0,717,2025-10-22 02:12:15.125950,,,,,,,,, +,,,,717,2025-10-22 02:15:35.112298,0.13777917623519897,0.0016072236467152834,0.13777917623519897,0.14422665536403656,0.001633535255677998,0.14422665536403656,,, +,,,,717,2025-10-22 02:16:00.219958,,,,,,,0.14595124125480652,0.0025686020962893963,0.14595124125480652 +0.1656414270401001,0.001216848730109632,0.1656414270401001,43049.0,718,2025-10-22 02:20:01.689479,,,,,,,,, +,,,,718,2025-10-22 02:24:24.098918,0.1377338021993637,0.0015243557281792164,0.1377338021993637,0.14797481894493103,0.0024183010682463646,0.14797481894493103,,, +,,,,718,2025-10-22 02:24:49.876140,,,,,,,0.14346647262573242,0.0020784689113497734,0.14346647262573242 +0.13688033819198608,0.0031187033746391535,0.13688033819198608,43099.0,719,2025-10-22 02:27:50.541345,,,,,,,,, +,,,,719,2025-10-22 02:32:50.682436,0.13825538754463196,0.0023862274829298258,0.13825538754463196,0.14374759793281555,0.0019570328295230865,0.14374759793281555,,, +,,,,719,2025-10-22 02:33:16.115542,,,,,,,0.13970009982585907,0.0025364411994814873,0.13970009982585907 +0.13328684866428375,0.0007612046902067959,0.13328684866428375,43149.0,720,2025-10-22 02:35:06.516015,,,,,,,,, +0.14657993614673615,0.002582541899755597,0.14657993614673615,43199.0,720,2025-10-22 02:39:54.368257,,,,,,,,, +,,,,720,2025-10-22 02:41:29.229432,0.1472783386707306,0.0032752864062786102,0.1472783386707306,0.1496538519859314,0.0019299680134281516,0.1496538519859314,,, +,,,,720,2025-10-22 02:41:55.611829,,,,,,,0.14553427696228027,0.0023786379024386406,0.14553427696228027 +0.16138070821762085,0.0026101868133991957,0.16138070821762085,43249.0,721,2025-10-22 02:47:54.613258,,,,,,,,, +,,,,721,2025-10-22 02:50:13.702354,0.14528420567512512,0.0017105912556871772,0.14528420567512512,0.14219382405281067,0.0026186970062553883,0.14219382405281067,,, +,,,,721,2025-10-22 02:50:40.132935,,,,,,,0.13928525149822235,0.002114070812240243,0.13928525149822235 +0.13791218400001526,0.003192238276824355,0.13791218400001526,43299.0,722,2025-10-22 02:55:30.348535,,,,,,,,, +,,,,722,2025-10-22 02:58:53.349777,0.14591285586357117,0.0024258741177618504,0.14591285586357117,0.1485370695590973,0.00282391463406384,0.1485370695590973,,, +,,,,722,2025-10-22 02:59:20.468994,,,,,,,0.13907849788665771,0.0019757389090955257,0.13907849788665771 +0.14174813032150269,0.0013101324439048767,0.14174813032150269,43349.0,723,2025-10-22 03:03:13.528766,,,,,,,,, +,,,,723,2025-10-22 03:07:16.461288,0.14496088027954102,0.0026794930454343557,0.14496088027954102,0.13351570069789886,0.0015591464471071959,0.13351570069789886,,, +,,,,723,2025-10-22 03:08:05.994946,,,,,,,0.14171065390110016,0.001928524812683463,0.14171065390110016 +0.1343846321105957,0.000918309495318681,0.1343846321105957,43399.0,724,2025-10-22 03:11:06.720241,,,,,,,,, +,,,,724,2025-10-22 03:16:33.111453,0.1381267011165619,0.0018326484132558107,0.1381267011165619,0.14182350039482117,0.001653545186854899,0.14182350039482117,,, +,,,,724,2025-10-22 03:16:59.942213,,,,,,,0.14086246490478516,0.002034664386883378,0.14086246490478516 +0.15951506793498993,0.004098325967788696,0.15951506793498993,43449.0,725,2025-10-22 03:18:48.944438,,,,,,,,, +0.15958353877067566,0.003613798413425684,0.15958353877067566,43499.0,725,2025-10-22 03:23:36.433134,,,,,,,,, +,,,,725,2025-10-22 03:25:11.278639,0.1450878530740738,0.0020163857843726873,0.1450878530740738,0.13989008963108063,0.0019628682639449835,0.13989008963108063,,, +,,,,725,2025-10-22 03:25:38.162774,,,,,,,0.14076732099056244,0.0023890782613307238,0.14076732099056244 +0.1596703827381134,0.001594635541550815,0.1596703827381134,43549.0,726,2025-10-22 03:31:18.353318,,,,,,,,, +,,,,726,2025-10-22 03:33:35.431205,0.13368956744670868,0.0012054223334416747,0.13368956744670868,0.14048662781715393,0.0025080014020204544,0.14048662781715393,,, +,,,,726,2025-10-22 03:34:02.029506,,,,,,,0.14447560906410217,0.0022562453523278236,0.14447560906410217 +0.12857182323932648,0.0012870174832642078,0.12857182323932648,43599.0,727,2025-10-22 03:38:46.061641,,,,,,,,, +,,,,727,2025-10-22 03:42:16.586113,0.14944607019424438,0.0028283284045755863,0.14944607019424438,0.14407294988632202,0.003107289085164666,0.14407294988632202,,, +,,,,727,2025-10-22 03:42:43.448723,,,,,,,0.13990849256515503,0.0020366625394672155,0.13990849256515503 +0.12465234100818634,0.0008434734772890806,0.12465234100818634,43649.0,728,2025-10-22 03:46:44.156995,,,,,,,,, +,,,,728,2025-10-22 03:50:58.279293,0.14494706690311432,0.002746328478679061,0.14494706690311432,0.1401488035917282,0.0017284060595557094,0.1401488035917282,,, +,,,,728,2025-10-22 03:51:24.287504,,,,,,,0.14283797144889832,0.0022243524435907602,0.14283797144889832 +0.16225211322307587,0.0017614137614145875,0.16225211322307587,43699.0,729,2025-10-22 03:54:21.433928,,,,,,,,, +,,,,729,2025-10-22 03:59:56.246564,0.14864633977413177,0.002302548848092556,0.14864633977413177,0.15287204086780548,0.0029548415914177895,0.15287204086780548,,, +,,,,729,2025-10-22 04:00:23.372307,,,,,,,0.14118365943431854,0.0021180841140449047,0.14118365943431854 +0.17992375791072845,0.0058929226361215115,0.17992375791072845,43749.0,730,2025-10-22 04:02:18.339635,,,,,,,,, +0.13780736923217773,0.001090862788259983,0.13780736923217773,43799.0,730,2025-10-22 04:07:12.462783,,,,,,,,, +,,,,730,2025-10-22 04:08:48.473212,0.14014340937137604,0.0018573242705315351,0.14014340937137604,0.1380116492509842,0.0015534803969785571,0.1380116492509842,,, +,,,,730,2025-10-22 04:09:15.185338,,,,,,,0.14043594896793365,0.0024317437782883644,0.14043594896793365 +0.1361542046070099,0.0012810099869966507,0.1361542046070099,43849.0,731,2025-10-22 04:14:54.358440,,,,,,,,, +,,,,731,2025-10-22 04:17:10.265976,0.1413830816745758,0.001535677583888173,0.1413830816745758,0.14720456302165985,0.0016300772549584508,0.14720456302165985,,, +,,,,731,2025-10-22 04:17:37.262911,,,,,,,0.14284993708133698,0.0019369940273463726,0.14284993708133698 +0.1452760100364685,0.001495574600994587,0.1452760100364685,43899.0,732,2025-10-22 04:22:23.966915,,,,,,,,, +,,,,732,2025-10-22 04:25:35.719190,0.15633448958396912,0.00306094903498888,0.15633448958396912,0.1467583030462265,0.0019253544742241502,0.1467583030462265,,, +,,,,732,2025-10-22 04:26:02.975118,,,,,,,0.14079192280769348,0.0020726898219436407,0.14079192280769348 +0.1392802596092224,0.0009992531267926097,0.1392802596092224,43949.0,733,2025-10-22 04:29:49.208267,,,,,,,,, +,,,,733,2025-10-22 04:34:08.548070,0.14990465342998505,0.0020234892144799232,0.14990465342998505,0.14968593418598175,0.0030723584350198507,0.14968593418598175,,, +,,,,733,2025-10-22 04:34:36.251855,,,,,,,0.13859908282756805,0.0019136612536385655,0.13859908282756805 +0.15543456375598907,0.00099393620621413,0.15543456375598907,43999.0,734,2025-10-22 04:37:32.206163,,,,,,,,, +,,,,734,2025-10-22 04:42:32.816646,0.1590031385421753,0.002581975655630231,0.1590031385421753,0.1486826390028,0.0021722898818552494,0.1486826390028,,, +,,,,734,2025-10-22 04:43:00.357682,,,,,,,0.14148613810539246,0.002440930576995015,0.14148613810539246 +0.17556308209896088,0.00391068309545517,0.17556308209896088,44049.0,735,2025-10-22 04:44:45.578947,,,,,,,,, +0.11586982011795044,0.0009633047156967223,0.11586982011795044,44099.0,735,2025-10-22 04:49:30.214629,,,,,,,,, +,,,,735,2025-10-22 04:51:07.934323,0.15036578476428986,0.0018414593068882823,0.15036578476428986,0.14297835528850555,0.002286908682435751,0.14297835528850555,,, +,,,,735,2025-10-22 04:51:37.191061,,,,,,,0.14055639505386353,0.0024822819977998734,0.14055639505386353 +0.11073519289493561,0.0012469099601730704,0.11073519289493561,44149.0,736,2025-10-22 04:57:14.290220,,,,,,,,, +,,,,736,2025-10-22 04:59:26.705041,0.1500520557165146,0.002327368361875415,0.1500520557165146,0.14614330232143402,0.0024826277513056993,0.14614330232143402,,, +,,,,736,2025-10-22 04:59:52.675567,,,,,,,0.14070075750350952,0.0020419908687472343,0.14070075750350952 +0.1339585930109024,0.0021567291114479303,0.1339585930109024,44199.0,737,2025-10-22 05:04:47.113543,,,,,,,,, +,,,,737,2025-10-22 05:08:02.005817,0.15266670286655426,0.0023693814873695374,0.15266670286655426,0.15236647427082062,0.0026588442269712687,0.15236647427082062,,, +,,,,737,2025-10-22 05:08:28.932635,,,,,,,0.13732421398162842,0.0020637251436710358,0.13732421398162842 +0.15835309028625488,0.002971680834889412,0.15835309028625488,44249.0,738,2025-10-22 05:12:22.838539,,,,,,,,, +,,,,738,2025-10-22 05:16:32.251672,0.14889848232269287,0.001176975085400045,0.14889848232269287,0.1373547464609146,0.001838738564401865,0.1373547464609146,,, +,,,,738,2025-10-22 05:17:00.014737,,,,,,,0.1432611048221588,0.002174164168536663,0.1432611048221588 +0.1331082284450531,0.0011452448088675737,0.1331082284450531,44299.0,739,2025-10-22 05:20:04.800155,,,,,,,,, +,,,,739,2025-10-22 05:25:17.856968,0.14225833117961884,0.0013174935011193156,0.14225833117961884,0.1483575999736786,0.0026724031195044518,0.1483575999736786,,, +,,,,739,2025-10-22 05:25:45.128884,,,,,,,0.1415940225124359,0.0019678189419209957,0.1415940225124359 +0.15820500254631042,0.001137983170337975,0.15820500254631042,44349.0,740,2025-10-22 05:27:30.512570,,,,,,,,, +0.1461438685655594,0.0011937252711504698,0.1461438685655594,44399.0,740,2025-10-22 05:32:09.806012,,,,,,,,, +,,,,740,2025-10-22 05:33:47.239389,0.15148907899856567,0.002260298701003194,0.15148907899856567,0.13768884539604187,0.0011211102828383446,0.13768884539604187,,, +,,,,740,2025-10-22 05:34:13.939075,,,,,,,0.1434832662343979,0.0023233394604176283,0.1434832662343979 +0.12291768193244934,0.0022425265051424503,0.12291768193244934,44449.0,741,2025-10-22 05:40:05.711784,,,,,,,,, +,,,,741,2025-10-22 05:42:21.639139,0.15023256838321686,0.0017695161513984203,0.15023256838321686,0.13677920401096344,0.0017641017911955714,0.13677920401096344,,, +,,,,741,2025-10-22 05:42:48.685530,,,,,,,0.14067882299423218,0.002007223665714264,0.14067882299423218 +0.1392054408788681,0.0011245461646467447,0.1392054408788681,44499.0,742,2025-10-22 05:47:34.705357,,,,,,,,, +,,,,742,2025-10-22 05:50:44.713566,0.1453389972448349,0.002213208470493555,0.1453389972448349,0.1465744972229004,0.0015780585817992687,0.1465744972229004,,, +,,,,742,2025-10-22 05:51:10.517613,,,,,,,0.14174547791481018,0.002258492400869727,0.14174547791481018 +0.13188105821609497,0.0008371341391466558,0.13188105821609497,44549.0,743,2025-10-22 05:54:57.041055,,,,,,,,, +,,,,743,2025-10-22 05:59:28.202329,0.15193748474121094,0.0023256482090801,0.15193748474121094,0.1444554328918457,0.002093416638672352,0.1444554328918457,,, +,,,,743,2025-10-22 05:59:54.758005,,,,,,,0.14378765225410461,0.0020351128187030554,0.14378765225410461 +0.17144528031349182,0.001911632250994444,0.17144528031349182,44599.0,744,2025-10-22 06:02:34.486066,,,,,,,,, +,,,,744,2025-10-22 06:08:04.498287,0.1471112072467804,0.0029308272060006857,0.1471112072467804,0.14735156297683716,0.0022337818518280983,0.14735156297683716,,, +,,,,744,2025-10-22 06:08:30.262022,,,,,,,0.14178764820098877,0.001777248689904809,0.14178764820098877 +0.15871457755565643,0.002791524166241288,0.15871457755565643,44649.0,745,2025-10-22 06:10:28.149444,,,,,,,,, +0.14017736911773682,0.001018476439639926,0.14017736911773682,44699.0,745,2025-10-22 06:15:24.985014,,,,,,,,, +,,,,745,2025-10-22 06:17:04.728564,0.15476450324058533,0.0023984138388186693,0.15476450324058533,0.1497274786233902,0.002567053772509098,0.1497274786233902,,, +,,,,745,2025-10-22 06:17:32.200855,,,,,,,0.14100217819213867,0.0023674231488257647,0.14100217819213867 +0.13908658921718597,0.0011671505635604262,0.13908658921718597,44749.0,746,2025-10-22 06:23:12.609665,,,,,,,,, +,,,,746,2025-10-22 06:25:25.524721,0.14999185502529144,0.0041770897805690765,0.14999185502529144,0.14411552250385284,0.0017766120145097375,0.14411552250385284,,, +,,,,746,2025-10-22 06:25:52.557833,,,,,,,0.13814109563827515,0.0021491593215614557,0.13814109563827515 +0.16280518472194672,0.001365188043564558,0.16280518472194672,44799.0,747,2025-10-22 06:30:39.111151,,,,,,,,, +,,,,747,2025-10-22 06:33:42.271726,0.14489348232746124,0.002158229472115636,0.14489348232746124,0.15199832618236542,0.002069528214633465,0.15199832618236542,,, +,,,,747,2025-10-22 06:34:09.391898,,,,,,,0.1442490518093109,0.002108324086293578,0.1442490518093109 +0.16037407517433167,0.0016273093642666936,0.16037407517433167,44849.0,748,2025-10-22 06:38:10.231554,,,,,,,,, +,,,,748,2025-10-22 06:42:21.425929,0.13887684047222137,0.0028387587517499924,0.13887684047222137,0.15235918760299683,0.003035289701074362,0.15235918760299683,,, +,,,,748,2025-10-22 06:42:49.507617,,,,,,,0.13927313685417175,0.0018344807904213667,0.13927313685417175 +0.13720382750034332,0.000997270573861897,0.13720382750034332,44899.0,749,2025-10-22 06:45:33.106786,,,,,,,,, +,,,,749,2025-10-22 06:50:42.458782,0.1370813399553299,0.0015927636995911598,0.1370813399553299,0.14425529539585114,0.0019091189606115222,0.14425529539585114,,, +,,,,749,2025-10-22 06:51:10.825190,,,,,,,0.1423969566822052,0.002134472131729126,0.1423969566822052 +0.12334463000297546,0.0008861612877808511,0.12334463000297546,44949.0,750,2025-10-22 06:53:05.505245,,,,,,,,, +0.12260016053915024,0.001555863069370389,0.12260016053915024,44999.0,750,2025-10-22 06:57:36.467864,,,,,,,,, +,,,,750,2025-10-22 06:59:13.314416,0.1475057154893875,0.0021324462722986937,0.1475057154893875,0.145307719707489,0.0019353441894054413,0.145307719707489,,, +,,,,750,2025-10-22 06:59:40.435150,,,,,,,0.14152713119983673,0.0021847716998308897,0.14152713119983673 +0.13746125996112823,0.0018224501982331276,0.13746125996112823,45049.0,751,2025-10-22 07:05:24.549334,,,,,,,,, +,,,,751,2025-10-22 07:07:36.777548,0.13797590136528015,0.002013827208429575,0.13797590136528015,0.14800776541233063,0.0021181930787861347,0.14800776541233063,,, +,,,,751,2025-10-22 07:08:03.547267,,,,,,,0.1381954550743103,0.0021388160530477762,0.1381954550743103 +0.13725990056991577,0.001103467890061438,0.13725990056991577,45099.0,752,2025-10-22 07:12:49.413198,,,,,,,,, +,,,,752,2025-10-22 07:16:03.054264,0.15686927735805511,0.0027921951841562986,0.15686927735805511,0.13646849989891052,0.002087767468765378,0.13646849989891052,,, +,,,,752,2025-10-22 07:16:29.454475,,,,,,,0.1408451348543167,0.001978123327717185,0.1408451348543167 +0.1706794798374176,0.002462220611050725,0.1706794798374176,45149.0,753,2025-10-22 07:20:39.947257,,,,,,,,, +,,,,753,2025-10-22 07:24:44.653033,0.14564308524131775,0.001193470205180347,0.14564308524131775,0.15993675589561462,0.0035574825014919043,0.15993675589561462,,, +,,,,753,2025-10-22 07:25:12.624910,,,,,,,0.14140605926513672,0.0019185437122359872,0.14140605926513672 +0.15438461303710938,0.004346906207501888,0.15438461303710938,45199.0,754,2025-10-22 07:27:58.441180,,,,,,,,, +,,,,754,2025-10-22 07:33:10.583052,0.13969406485557556,0.001771567272953689,0.13969406485557556,0.14993983507156372,0.0030325099360197783,0.14993983507156372,,, +,,,,754,2025-10-22 07:33:37.827977,,,,,,,0.14472809433937073,0.0024083431344479322,0.14472809433937073 +0.14704027771949768,0.00367221562191844,0.14704027771949768,45249.0,755,2025-10-22 07:35:35.746852,,,,,,,,, +0.1475648134946823,0.0007947090198285878,0.1475648134946823,45299.0,755,2025-10-22 07:40:34.180445,,,,,,,,, +,,,,755,2025-10-22 07:42:08.428250,0.14543592929840088,0.0016247747698798776,0.14543592929840088,0.14844423532485962,0.001818017684854567,0.14844423532485962,,, +,,,,755,2025-10-22 07:42:35.399683,,,,,,,0.14279943704605103,0.0021024697925895452,0.14279943704605103 +0.16514010727405548,0.006656107492744923,0.16514010727405548,45349.0,756,2025-10-22 07:48:32.814948,,,,,,,,, +,,,,756,2025-10-22 07:50:49.873615,0.1514444798231125,0.0026637925766408443,0.1514444798231125,0.14585089683532715,0.001703119371086359,0.14585089683532715,,, +,,,,756,2025-10-22 07:51:17.191022,,,,,,,0.14160744845867157,0.0019965788815170527,0.14160744845867157 +0.15532322227954865,0.001637450885027647,0.15532322227954865,45399.0,757,2025-10-22 07:55:54.319028,,,,,,,,, +,,,,757,2025-10-22 07:59:20.371790,0.1459539234638214,0.002251560566946864,0.1459539234638214,0.1415112018585205,0.0016358657740056515,0.1415112018585205,,, +,,,,757,2025-10-22 07:59:46.617858,,,,,,,0.14234097301959991,0.002131132176145911,0.14234097301959991 +0.13156169652938843,0.001250687288120389,0.13156169652938843,45449.0,758,2025-10-22 08:04:23.456538,,,,,,,,, +,,,,758,2025-10-22 08:08:42.501376,0.1466626673936844,0.002820186549797654,0.1466626673936844,0.14028963446617126,0.0025098891928792,0.14028963446617126,,, +,,,,758,2025-10-22 08:09:10.600929,,,,,,,0.1391795575618744,0.002512172097340226,0.1391795575618744 +0.13083423674106598,0.0025309596676379442,0.13083423674106598,45499.0,759,2025-10-22 08:12:11.749180,,,,,,,,, +,,,,759,2025-10-22 08:17:27.617858,0.14113624393939972,0.0016638797242194414,0.14113624393939972,0.1441846787929535,0.00201725703664124,0.1441846787929535,,, +,,,,759,2025-10-22 08:17:53.738585,,,,,,,0.14233803749084473,0.0021477765403687954,0.14233803749084473 +0.14290355145931244,0.005319830030202866,0.14290355145931244,45549.0,760,2025-10-22 08:19:50.886729,,,,,,,,, +0.15236406028270721,0.0058035580441355705,0.15236406028270721,45599.0,760,2025-10-22 08:24:29.655948,,,,,,,,, +,,,,760,2025-10-22 08:26:14.835569,0.13963143527507782,0.0022250162437558174,0.13963143527507782,0.14680185914039612,0.0018207645043730736,0.14680185914039612,,, +,,,,760,2025-10-22 08:26:42.134864,,,,,,,0.14043959975242615,0.002384925726801157,0.14043959975242615 +0.14398829638957977,0.0010273362277075648,0.14398829638957977,45649.0,761,2025-10-22 08:32:21.446610,,,,,,,,, +,,,,761,2025-10-22 08:34:42.724112,0.14789265394210815,0.0021720940712839365,0.14789265394210815,0.14954400062561035,0.00225347769446671,0.14954400062561035,,, +,,,,761,2025-10-22 08:35:08.855587,,,,,,,0.14336037635803223,0.0022333054803311825,0.14336037635803223 +0.1267533153295517,0.0039796121418476105,0.1267533153295517,45699.0,762,2025-10-22 08:40:10.755809,,,,,,,,, +,,,,762,2025-10-22 08:43:35.528736,0.1345861256122589,0.0011765685630962253,0.1345861256122589,0.15436473488807678,0.0023490970488637686,0.15436473488807678,,, +,,,,762,2025-10-22 08:44:03.045439,,,,,,,0.14176298677921295,0.0019727961625903845,0.14176298677921295 +0.1426675170660019,0.0024132307153195143,0.1426675170660019,45749.0,763,2025-10-22 08:47:55.944690,,,,,,,,, +,,,,763,2025-10-22 08:52:08.790004,0.14048393070697784,0.0029966572765260935,0.14048393070697784,0.1392974853515625,0.001141902874223888,0.1392974853515625,,, +,,,,763,2025-10-22 08:52:36.254192,,,,,,,0.13774850964546204,0.002318992745131254,0.13774850964546204 +0.14650382101535797,0.0030833662021905184,0.14650382101535797,45799.0,764,2025-10-22 08:55:38.138048,,,,,,,,, +,,,,764,2025-10-22 09:00:58.862642,0.15535126626491547,0.0027274482417851686,0.15535126626491547,0.15294146537780762,0.002631132025271654,0.15294146537780762,,, +,,,,764,2025-10-22 09:01:24.477599,,,,,,,0.14169001579284668,0.00236918474547565,0.14169001579284668 +0.14204205572605133,0.0015674455789849162,0.14204205572605133,45849.0,765,2025-10-22 09:03:18.226326,,,,,,,,, +0.1353970170021057,0.001709826523438096,0.1353970170021057,45899.0,765,2025-10-22 09:07:53.117345,,,,,,,,, +,,,,765,2025-10-22 09:09:22.147682,0.1463145762681961,0.0019818569999188185,0.1463145762681961,0.1526573896408081,0.0033103562891483307,0.1526573896408081,,, +,,,,765,2025-10-22 09:09:48.677845,,,,,,,0.14098550379276276,0.0021779322996735573,0.14098550379276276 +0.13546587526798248,0.0013219948159530759,0.13546587526798248,45949.0,766,2025-10-22 09:15:38.198860,,,,,,,,, +,,,,766,2025-10-22 09:18:03.030581,0.1464989185333252,0.002195735927671194,0.1464989185333252,0.15854915976524353,0.0030478022526949644,0.15854915976524353,,, +,,,,766,2025-10-22 09:18:28.757210,,,,,,,0.1409384161233902,0.002151953522115946,0.1409384161233902 +0.1233801543712616,0.001216763281263411,0.1233801543712616,45999.0,767,2025-10-22 09:23:18.811121,,,,,,,,, +,,,,767,2025-10-22 09:26:31.584987,0.15420638024806976,0.003645758843049407,0.15420638024806976,0.14543242752552032,0.002127696992829442,0.14543242752552032,,, +,,,,767,2025-10-22 09:26:56.714028,,,,,,,0.13864637911319733,0.0019192947074770927,0.13864637911319733 +0.17034998536109924,0.007018178701400757,0.17034998536109924,46049.0,768,2025-10-22 09:31:02.574851,,,,,,,,, +,,,,768,2025-10-22 09:35:23.379002,0.1415109634399414,0.0015450511127710342,0.1415109634399414,0.1424012929201126,0.0023566819727420807,0.1424012929201126,,, +,,,,768,2025-10-22 09:35:49.059444,,,,,,,0.14203780889511108,0.0024524072650820017,0.14203780889511108 +0.11836259812116623,0.0014498530654236674,0.11836259812116623,46099.0,769,2025-10-22 09:38:49.778897,,,,,,,,, +,,,,769,2025-10-22 09:44:09.641075,0.14334262907505035,0.0013125931145623326,0.14334262907505035,0.14326083660125732,0.0015792177291586995,0.14326083660125732,,, +,,,,769,2025-10-22 09:44:35.957095,,,,,,,0.1448323279619217,0.0023253539111465216,0.1448323279619217 +0.14138177037239075,0.0008370210416615009,0.14138177037239075,46149.0,770,2025-10-22 09:46:36.404924,,,,,,,,, +0.1484244018793106,0.0010576463537290692,0.1484244018793106,46199.0,770,2025-10-22 09:51:09.010113,,,,,,,,, +,,,,770,2025-10-22 09:52:46.724833,0.15371155738830566,0.0016879504546523094,0.15371155738830566,0.14719398319721222,0.003703521331772208,0.14719398319721222,,, +,,,,770,2025-10-22 09:53:12.834743,,,,,,,0.1410336196422577,0.0022894120775163174,0.1410336196422577 +0.14844627678394318,0.0014235866256058216,0.14844627678394318,46249.0,771,2025-10-22 09:59:13.341483,,,,,,,,, +,,,,771,2025-10-22 10:01:41.240941,0.1607600748538971,0.0021126524079591036,0.1607600748538971,0.1551101952791214,0.0017403261736035347,0.1551101952791214,,, +,,,,771,2025-10-22 10:02:07.309037,,,,,,,0.14169123768806458,0.0020827590487897396,0.14169123768806458 +0.1277420073747635,0.002398071577772498,0.1277420073747635,46299.0,772,2025-10-22 10:07:00.013017,,,,,,,,, +,,,,772,2025-10-22 10:10:14.235629,0.13324084877967834,0.0010314403334632516,0.13324084877967834,0.14696156978607178,0.002066297922283411,0.14696156978607178,,, +,,,,772,2025-10-22 10:10:41.308741,,,,,,,0.14277349412441254,0.0023446427658200264,0.14277349412441254 +0.12058775871992111,0.0007356941350735724,0.12058775871992111,46349.0,773,2025-10-22 10:14:34.707252,,,,,,,,, +,,,,773,2025-10-22 10:18:53.362502,0.13457323610782623,0.0018386389128863811,0.13457323610782623,0.14647136628627777,0.0035864722449332476,0.14647136628627777,,, +,,,,773,2025-10-22 10:19:20.194737,,,,,,,0.13938529789447784,0.0022742238361388445,0.13938529789447784 +0.1607503890991211,0.0015417125541716814,0.1607503890991211,46399.0,774,2025-10-22 10:22:14.623523,,,,,,,,, +,,,,774,2025-10-22 10:27:44.956144,0.14911764860153198,0.0024147150106728077,0.14911764860153198,0.15098793804645538,0.003357077483087778,0.15098793804645538,,, +,,,,774,2025-10-22 10:28:11.512437,,,,,,,0.14097195863723755,0.0020581616554409266,0.14097195863723755 +0.13597558438777924,0.0010987682035192847,0.13597558438777924,46449.0,775,2025-10-22 10:29:56.335539,,,,,,,,, +0.14576628804206848,0.0011855729389935732,0.14576628804206848,46499.0,775,2025-10-22 10:34:38.187082,,,,,,,,, +,,,,775,2025-10-22 10:36:13.252068,0.13951537013053894,0.0020107319578528404,0.13951537013053894,0.14310620725154877,0.0016782190650701523,0.14310620725154877,,, +,,,,775,2025-10-22 10:36:39.262233,,,,,,,0.1376628875732422,0.0021931221708655357,0.1376628875732422 +0.17220114171504974,0.0043374765664339066,0.17220114171504974,46549.0,776,2025-10-22 10:42:22.048923,,,,,,,,, +,,,,776,2025-10-22 10:45:09.900810,0.1366083174943924,0.0011178483255207539,0.1366083174943924,0.14960764348506927,0.0020467338617891073,0.14960764348506927,,, +,,,,776,2025-10-22 10:45:35.557844,,,,,,,0.13968996703624725,0.0020681251771748066,0.13968996703624725 +0.14511407911777496,0.0015168068930506706,0.14511407911777496,46599.0,777,2025-10-22 10:50:34.540621,,,,,,,,, +,,,,777,2025-10-22 10:53:38.936265,0.1459643840789795,0.0016086226096376777,0.1459643840789795,0.14320108294487,0.0030921378638595343,0.14320108294487,,, +,,,,777,2025-10-22 10:54:06.060703,,,,,,,0.1409144103527069,0.0024325272534042597,0.1409144103527069 +0.13769157230854034,0.0011807797709479928,0.13769157230854034,46649.0,778,2025-10-22 10:57:53.092916,,,,,,,,, +,,,,778,2025-10-22 11:02:15.667136,0.1450396329164505,0.002370750531554222,0.1450396329164505,0.1463010311126709,0.0022484303917735815,0.1463010311126709,,, +,,,,778,2025-10-22 11:02:43.024539,,,,,,,0.14028018712997437,0.0022638249211013317,0.14028018712997437 +0.15474776923656464,0.0010545941768214107,0.15474776923656464,46699.0,779,2025-10-22 11:05:31.305221,,,,,,,,, +,,,,779,2025-10-22 11:10:34.701098,0.14536894857883453,0.0014148745685815811,0.14536894857883453,0.14383246004581451,0.0018912507221102715,0.14383246004581451,,, +,,,,779,2025-10-22 11:11:01.131213,,,,,,,0.14542047679424286,0.0022747127804905176,0.14542047679424286 +0.12897270917892456,0.001097300322726369,0.12897270917892456,46749.0,780,2025-10-22 11:12:48.654365,,,,,,,,, +0.1478893756866455,0.004198907874524593,0.1478893756866455,46799.0,780,2025-10-22 11:17:49.923651,,,,,,,,, +,,,,780,2025-10-22 11:19:25.298418,0.14434564113616943,0.002447589300572872,0.14434564113616943,0.1465497761964798,0.0020898557268083096,0.1465497761964798,,, +,,,,780,2025-10-22 11:19:50.904913,,,,,,,0.14187349379062653,0.002414484042674303,0.14187349379062653 +0.13462913036346436,0.0011546543100848794,0.13462913036346436,46849.0,781,2025-10-22 11:25:38.529574,,,,,,,,, +,,,,781,2025-10-22 11:27:53.553926,0.16231635212898254,0.003665287746116519,0.16231635212898254,0.14035962522029877,0.0018939623842015862,0.14035962522029877,,, +,,,,781,2025-10-22 11:28:19.166622,,,,,,,0.1454562544822693,0.002535638865083456,0.1454562544822693 +0.12885025143623352,0.0008214910631068051,0.12885025143623352,46899.0,782,2025-10-22 11:32:56.801507,,,,,,,,, +,,,,782,2025-10-22 11:36:15.140115,0.15501293540000916,0.0023594333324581385,0.15501293540000916,0.14813558757305145,0.0023722597397863865,0.14813558757305145,,, +,,,,782,2025-10-22 11:36:41.429618,,,,,,,0.14238663017749786,0.002155869035050273,0.14238663017749786 +0.13308297097682953,0.0011919228127226233,0.13308297097682953,46949.0,783,2025-10-22 11:40:47.404643,,,,,,,,, +,,,,783,2025-10-22 11:45:18.467212,0.1468399465084076,0.0036938367411494255,0.1468399465084076,0.13760308921337128,0.0012643616646528244,0.13760308921337128,,, +,,,,783,2025-10-22 11:45:44.135645,,,,,,,0.14049144089221954,0.0018748434958979487,0.14049144089221954 +0.1420544534921646,0.001708664116449654,0.1420544534921646,46999.0,784,2025-10-22 11:48:30.779259,,,,,,,,, +,,,,784,2025-10-22 11:53:52.427503,0.12800809741020203,0.0012361472472548485,0.12800809741020203,0.137033611536026,0.0017186037730425596,0.137033611536026,,, +,,,,784,2025-10-22 11:54:19.670295,,,,,,,0.14460231363773346,0.002324312226846814,0.14460231363773346 +0.1167658343911171,0.0017890078015625477,0.1167658343911171,47049.0,785,2025-10-22 11:56:07.240370,,,,,,,,, +0.14553822576999664,0.0019263083813712,0.14553822576999664,47099.0,785,2025-10-22 12:01:00.212780,,,,,,,,, +,,,,785,2025-10-22 12:02:35.738054,0.14214399456977844,0.0025785164907574654,0.14214399456977844,0.14312396943569183,0.001617257366888225,0.14312396943569183,,, +,,,,785,2025-10-22 12:03:03.654779,,,,,,,0.140254944562912,0.002476820722222328,0.140254944562912 +0.1374124437570572,0.002893748925998807,0.1374124437570572,47149.0,786,2025-10-22 12:08:38.257112,,,,,,,,, +,,,,786,2025-10-22 12:11:10.688959,0.14756636321544647,0.0028593142051249743,0.14756636321544647,0.15240618586540222,0.001681857043877244,0.15240618586540222,,, +,,,,786,2025-10-22 12:11:37.086678,,,,,,,0.14229393005371094,0.0022691371850669384,0.14229393005371094 +0.13967306911945343,0.002599982777610421,0.13967306911945343,47199.0,787,2025-10-22 12:16:32.462523,,,,,,,,, +,,,,787,2025-10-22 12:19:44.006801,0.15750716626644135,0.0027808896265923977,0.15750716626644135,0.13363315165042877,0.0013479910558089614,0.13363315165042877,,, +,,,,787,2025-10-22 12:20:34.195735,,,,,,,0.1409691572189331,0.0023420085199177265,0.1409691572189331 +0.13059526681900024,0.0012529270024970174,0.13059526681900024,47249.0,788,2025-10-22 12:24:37.280859,,,,,,,,, +,,,,788,2025-10-22 12:28:51.254221,0.13430263102054596,0.002069581998512149,0.13430263102054596,0.1468791663646698,0.0024269260466098785,0.1468791663646698,,, +,,,,788,2025-10-22 12:29:17.493290,,,,,,,0.1434481292963028,0.002062893006950617,0.1434481292963028 +0.1310625672340393,0.0007812752155587077,0.1310625672340393,47299.0,789,2025-10-22 12:32:15.277467,,,,,,,,, +,,,,789,2025-10-22 12:37:29.077280,0.1431933343410492,0.0034742734860628843,0.1431933343410492,0.1492767333984375,0.0028643482364714146,0.1492767333984375,,, +,,,,789,2025-10-22 12:37:56.122254,,,,,,,0.14244544506072998,0.0021723564714193344,0.14244544506072998 +0.14250217378139496,0.002208802616223693,0.14250217378139496,47349.0,790,2025-10-22 12:39:49.668025,,,,,,,,, +0.1325315535068512,0.00121026870328933,0.1325315535068512,47399.0,790,2025-10-22 12:44:26.950677,,,,,,,,, +,,,,790,2025-10-22 12:46:02.891910,0.14109422266483307,0.0014765672385692596,0.14109422266483307,0.13516411185264587,0.0014789095148444176,0.13516411185264587,,, +,,,,790,2025-10-22 12:46:29.473743,,,,,,,0.1393047571182251,0.0020596813410520554,0.1393047571182251 +0.12581390142440796,0.0043510552495718,0.12581390142440796,47449.0,791,2025-10-22 12:52:13.240338,,,,,,,,, +,,,,791,2025-10-22 12:54:29.587821,0.13741998374462128,0.0012364824069663882,0.13741998374462128,0.14005665481090546,0.002330835210159421,0.14005665481090546,,, +,,,,791,2025-10-22 12:54:55.331932,,,,,,,0.13786259293556213,0.0020639696158468723,0.13786259293556213 +0.12094610184431076,0.0015478531131520867,0.12094610184431076,47499.0,792,2025-10-22 12:59:55.597415,,,,,,,,, +,,,,792,2025-10-22 13:03:14.232678,0.14159785211086273,0.0024148866068571806,0.14159785211086273,0.14718028903007507,0.0021791758481413126,0.14718028903007507,,, +,,,,792,2025-10-22 13:03:39.123124,,,,,,,0.14394709467887878,0.002182567957788706,0.14394709467887878 +0.15051190555095673,0.0025458489544689655,0.15051190555095673,47549.0,793,2025-10-22 13:07:20.285666,,,,,,,,, +,,,,793,2025-10-22 13:11:45.703668,0.14757341146469116,0.0017657019197940826,0.14757341146469116,0.14929428696632385,0.002163822529837489,0.14929428696632385,,, +,,,,793,2025-10-22 13:12:12.906794,,,,,,,0.13975320756435394,0.0021941703744232655,0.13975320756435394 +0.15177597105503082,0.0030192448757588863,0.15177597105503082,47599.0,794,2025-10-22 13:15:02.126240,,,,,,,,, +,,,,794,2025-10-22 13:20:19.880450,0.15502291917800903,0.003476764541119337,0.15502291917800903,0.15042655169963837,0.002342833438888192,0.15042655169963837,,, +,,,,794,2025-10-22 13:20:48.868682,,,,,,,0.14132638275623322,0.002268995391204953,0.14132638275623322 +0.12003976851701736,0.001482457504607737,0.12003976851701736,47649.0,795,2025-10-22 13:22:43.284872,,,,,,,,, +0.1491452008485794,0.0025551437865942717,0.1491452008485794,47699.0,795,2025-10-22 13:27:35.600787,,,,,,,,, +,,,,795,2025-10-22 13:29:13.706322,0.1575731635093689,0.0036480394192039967,0.1575731635093689,0.14768189191818237,0.0028616401832550764,0.14768189191818237,,, +,,,,795,2025-10-22 13:29:40.834981,,,,,,,0.14185233414173126,0.002216068562120199,0.14185233414173126 +0.1522355079650879,0.0019068469991907477,0.1522355079650879,47749.0,796,2025-10-22 13:35:40.900373,,,,,,,,, +,,,,796,2025-10-22 13:37:59.313299,0.1493593454360962,0.0014354567974805832,0.1493593454360962,0.14900518953800201,0.0025861861649900675,0.14900518953800201,,, +,,,,796,2025-10-22 13:38:25.892570,,,,,,,0.14064303040504456,0.0018271442968398333,0.14064303040504456 +0.13709025084972382,0.004258428234606981,0.13709025084972382,47799.0,797,2025-10-22 13:43:41.657246,,,,,,,,, +,,,,797,2025-10-22 13:46:45.098502,0.14373475313186646,0.0020087133161723614,0.14373475313186646,0.14218969643115997,0.0016555623151361942,0.14218969643115997,,, +,,,,797,2025-10-22 13:47:13.179216,,,,,,,0.1367795616388321,0.002381709171459079,0.1367795616388321 +0.09931456297636032,0.003110474208369851,0.09931456297636032,47849.0,798,2025-10-22 13:51:12.287161,,,,,,,,, +,,,,798,2025-10-22 13:55:33.323858,0.1323523074388504,0.001598554546944797,0.1323523074388504,0.1523778885602951,0.0021619335748255253,0.1523778885602951,,, +,,,,798,2025-10-22 13:56:01.947904,,,,,,,0.14164882898330688,0.0021493483800441027,0.14164882898330688 +0.14348383247852325,0.0015920159639790654,0.14348383247852325,47899.0,799,2025-10-22 13:58:55.645036,,,,,,,,, +,,,,799,2025-10-22 14:04:05.485449,0.143633171916008,0.0019417748553678393,0.143633171916008,0.13921472430229187,0.002413871930912137,0.13921472430229187,,, +,,,,799,2025-10-22 14:04:34.259551,,,,,,,0.1410602629184723,0.0022986503317952156,0.1410602629184723 +0.14424848556518555,0.0016442956402897835,0.14424848556518555,47949.0,800,2025-10-22 14:06:36.879796,,,,,,,,, +0.17548002302646637,0.0029273356776684523,0.17548002302646637,47999.0,800,2025-10-22 14:11:07.505848,,,,,,,,, +,,,,800,2025-10-22 14:12:45.375809,0.14595156908035278,0.0038739927113056183,0.14595156908035278,0.14675500988960266,0.0016334913671016693,0.14675500988960266,,, +,,,,800,2025-10-22 14:13:12.873834,,,,,,,0.1393282115459442,0.0019411812536418438,0.1393282115459442 +0.16128037869930267,0.0015602635685354471,0.16128037869930267,48049.0,801,2025-10-22 14:19:20.188371,,,,,,,,, +,,,,801,2025-10-22 14:21:39.298034,0.1275385022163391,0.001598929986357689,0.1275385022163391,0.13865986466407776,0.0017604707973077893,0.13865986466407776,,, +,,,,801,2025-10-22 14:22:07.861719,,,,,,,0.1406109482049942,0.0018851205240935087,0.1406109482049942 +0.13137640058994293,0.0038538733497262,0.13137640058994293,48099.0,802,2025-10-22 14:26:50.586796,,,,,,,,, +,,,,802,2025-10-22 14:30:00.305581,0.15523704886436462,0.0035095533821731806,0.15523704886436462,0.14472727477550507,0.0018879978451877832,0.14472727477550507,,, +,,,,802,2025-10-22 14:30:27.190697,,,,,,,0.13958080112934113,0.002209280850365758,0.13958080112934113 +0.1342499554157257,0.00093319290317595,0.1342499554157257,48149.0,803,2025-10-22 14:34:27.946212,,,,,,,,, +,,,,803,2025-10-22 14:38:39.796709,0.15147079527378082,0.002789318561553955,0.15147079527378082,0.14606210589408875,0.001904824748635292,0.14606210589408875,,, +,,,,803,2025-10-22 14:39:07.272386,,,,,,,0.14042742550373077,0.0019861001055687666,0.14042742550373077 +0.13286863267421722,0.00472866790369153,0.13286863267421722,48199.0,804,2025-10-22 14:42:08.863288,,,,,,,,, +,,,,804,2025-10-22 14:47:34.527073,0.138902485370636,0.002529459772631526,0.138902485370636,0.1478353589773178,0.0016318893758580089,0.1478353589773178,,, +,,,,804,2025-10-22 14:48:03.394341,,,,,,,0.1408969759941101,0.0019168842118233442,0.1408969759941101 +0.16097396612167358,0.004139348864555359,0.16097396612167358,48249.0,805,2025-10-22 14:49:55.708890,,,,,,,,, +0.16953076422214508,0.004712415859103203,0.16953076422214508,48299.0,805,2025-10-22 14:54:45.540264,,,,,,,,, +,,,,805,2025-10-22 14:56:24.531980,0.14571282267570496,0.0026654619723558426,0.14571282267570496,0.1536761224269867,0.0030144001357257366,0.1536761224269867,,, +,,,,805,2025-10-22 14:56:51.522684,,,,,,,0.14317356050014496,0.0023135871160775423,0.14317356050014496 +0.12957927584648132,0.0010285975877195597,0.12957927584648132,48349.0,806,2025-10-22 15:03:08.769148,,,,,,,,, +,,,,806,2025-10-22 15:05:26.903471,0.13938665390014648,0.0022213503252714872,0.13938665390014648,0.14697487652301788,0.0036009063478559256,0.14697487652301788,,, +,,,,806,2025-10-22 15:05:54.507630,,,,,,,0.13769115507602692,0.0022467467933893204,0.13769115507602692 +0.1497552990913391,0.0041874670423567295,0.1497552990913391,48399.0,807,2025-10-22 15:10:52.899990,,,,,,,,, +,,,,807,2025-10-22 15:14:10.699179,0.1436203420162201,0.0027909025084227324,0.1436203420162201,0.1452009081840515,0.0017611737130209804,0.1452009081840515,,, +,,,,807,2025-10-22 15:14:37.970559,,,,,,,0.13879139721393585,0.002215153770521283,0.13879139721393585 +0.1523972898721695,0.002255941042676568,0.1523972898721695,48449.0,808,2025-10-22 15:18:43.546426,,,,,,,,, +,,,,808,2025-10-22 15:23:28.241566,0.14392594993114471,0.0023927236907184124,0.14392594993114471,0.14512760937213898,0.0029251165688037872,0.14512760937213898,,, +,,,,808,2025-10-22 15:23:55.191287,,,,,,,0.13548576831817627,0.0021847274620085955,0.13548576831817627 +0.15913191437721252,0.0019635125063359737,0.15913191437721252,48499.0,809,2025-10-22 15:26:52.719780,,,,,,,,, +,,,,809,2025-10-22 15:31:59.296247,0.1378219723701477,0.0026821729261428118,0.1378219723701477,0.1446658968925476,0.002546492964029312,0.1446658968925476,,, +,,,,809,2025-10-22 15:32:27.036400,,,,,,,0.1404954493045807,0.0021843521390110254,0.1404954493045807 +0.1461562067270279,0.0017079781973734498,0.1461562067270279,48549.0,810,2025-10-22 15:34:17.671605,,,,,,,,, +0.12322696298360825,0.0014321461785584688,0.12322696298360825,48599.0,810,2025-10-22 15:39:25.329813,,,,,,,,, +,,,,810,2025-10-22 15:40:54.907153,0.15673109889030457,0.00246978597715497,0.15673109889030457,0.1499042958021164,0.0015685305697843432,0.1499042958021164,,, +,,,,810,2025-10-22 15:41:20.580757,,,,,,,0.14144137501716614,0.002198288217186928,0.14144137501716614 +0.1669551581144333,0.0016320464201271534,0.1669551581144333,48649.0,811,2025-10-22 15:47:27.542523,,,,,,,,, +,,,,811,2025-10-22 15:49:44.473523,0.15493641793727875,0.0019368964713066816,0.15493641793727875,0.14559298753738403,0.0014350197743624449,0.14559298753738403,,, +,,,,811,2025-10-22 15:50:12.249280,,,,,,,0.13934502005577087,0.0020229830406606197,0.13934502005577087 +0.14149430394172668,0.001902606338262558,0.14149430394172668,48699.0,812,2025-10-22 15:55:01.988133,,,,,,,,, +,,,,812,2025-10-22 15:58:28.229735,0.145395427942276,0.0024105196353048086,0.145395427942276,0.14852337539196014,0.0024381927214562893,0.14852337539196014,,, +,,,,812,2025-10-22 15:58:56.454526,,,,,,,0.13989418745040894,0.00211511948145926,0.13989418745040894 +0.12363198399543762,0.0008129547350108624,0.12363198399543762,48749.0,813,2025-10-22 16:02:54.627516,,,,,,,,, +,,,,813,2025-10-22 16:07:09.719849,0.13840021193027496,0.0018525508930906653,0.13840021193027496,0.14027364552021027,0.0023372971918433905,0.14027364552021027,,, +,,,,813,2025-10-22 16:07:37.284599,,,,,,,0.14090409874916077,0.0023581471759825945,0.14090409874916077 +0.12920570373535156,0.0032487872522324324,0.12920570373535156,48799.0,814,2025-10-22 16:10:34.207801,,,,,,,,, +,,,,814,2025-10-22 16:15:56.286657,0.14610321819782257,0.002091391244903207,0.14610321819782257,0.13808032870292664,0.001577124698087573,0.13808032870292664,,, +,,,,814,2025-10-22 16:16:23.306350,,,,,,,0.1422622948884964,0.0021528115030378103,0.1422622948884964 +0.13400311768054962,0.0008886033319868147,0.13400311768054962,48849.0,815,2025-10-22 16:18:17.680362,,,,,,,,, +0.14220072329044342,0.001597133930772543,0.14220072329044342,48899.0,815,2025-10-22 16:22:53.025475,,,,,,,,, +,,,,815,2025-10-22 16:24:32.081113,0.14787979423999786,0.001795496209524572,0.14787979423999786,0.14907239377498627,0.0025059485342353582,0.14907239377498627,,, +,,,,815,2025-10-22 16:24:59.344937,,,,,,,0.1395081877708435,0.0020852487068623304,0.1395081877708435 +0.13929709792137146,0.002275331411510706,0.13929709792137146,48949.0,816,2025-10-22 16:30:57.495503,,,,,,,,, +,,,,816,2025-10-22 16:33:09.932175,0.14701960980892181,0.0029067387804389,0.14701960980892181,0.14375388622283936,0.002312379190698266,0.14375388622283936,,, +,,,,816,2025-10-22 16:33:35.886891,,,,,,,0.1364727020263672,0.0022239815443754196,0.1364727020263672 +0.12972116470336914,0.0017767050303518772,0.12972116470336914,48999.0,817,2025-10-22 16:38:26.615448,,,,,,,,, +,,,,817,2025-10-22 16:41:37.318161,0.14958497881889343,0.001753450371325016,0.14958497881889343,0.14094014465808868,0.0018715269397944212,0.14094014465808868,,, +,,,,817,2025-10-22 16:42:04.154399,,,,,,,0.13839304447174072,0.0022222716361284256,0.13839304447174072 +0.1422586739063263,0.0019261412089690566,0.1422586739063263,49049.0,818,2025-10-22 16:45:59.586166,,,,,,,,, +,,,,818,2025-10-22 16:50:20.470031,0.14244501292705536,0.0027305670082569122,0.14244501292705536,0.14474444091320038,0.0032618765253573656,0.14474444091320038,,, +,,,,818,2025-10-22 16:50:46.096249,,,,,,,0.1401827335357666,0.0021578751038759947,0.1401827335357666 +0.1564820557832718,0.0011436662171036005,0.1564820557832718,49099.0,819,2025-10-22 16:53:48.092876,,,,,,,,, +,,,,819,2025-10-22 16:58:59.810553,0.14049570262432098,0.0017135103698819876,0.14049570262432098,0.1447138637304306,0.0014767471002414823,0.1447138637304306,,, +,,,,819,2025-10-22 16:59:26.437751,,,,,,,0.13877873122692108,0.0020189720671623945,0.13877873122692108 +0.12247101217508316,0.0017734944121912122,0.12247101217508316,49149.0,820,2025-10-22 17:01:12.821916,,,,,,,,, +0.14167903363704681,0.001420297659933567,0.14167903363704681,49199.0,820,2025-10-22 17:06:03.745493,,,,,,,,, +,,,,820,2025-10-22 17:07:47.427217,0.13847030699253082,0.0016120154177770019,0.13847030699253082,0.14474304020404816,0.0018415437079966068,0.14474304020404816,,, +,,,,820,2025-10-22 17:08:13.603560,,,,,,,0.13982485234737396,0.0018419583793729544,0.13982485234737396 +0.14772821962833405,0.00149996904656291,0.14772821962833405,49249.0,821,2025-10-22 17:13:37.762826,,,,,,,,, +,,,,821,2025-10-22 17:16:16.238681,0.1494482159614563,0.0026210476644337177,0.1494482159614563,0.14866623282432556,0.0021909349597990513,0.14866623282432556,,, +,,,,821,2025-10-22 17:16:42.449682,,,,,,,0.14231111109256744,0.0021667745895683765,0.14231111109256744 +0.16780774295330048,0.0042396835051476955,0.16780774295330048,49299.0,822,2025-10-22 17:21:33.184563,,,,,,,,, +,,,,822,2025-10-22 17:24:45.823566,0.14496542513370514,0.00299150706268847,0.14496542513370514,0.146694615483284,0.0024424290750175714,0.146694615483284,,, +,,,,822,2025-10-22 17:25:12.352296,,,,,,,0.14039035141468048,0.0019565802067518234,0.14039035141468048 +0.16051380336284637,0.001491115428507328,0.16051380336284637,49349.0,823,2025-10-22 17:28:57.609749,,,,,,,,, +,,,,823,2025-10-22 17:33:04.914234,0.13600637018680573,0.0019403613405302167,0.13600637018680573,0.1366925984621048,0.0017821085639297962,0.1366925984621048,,, +,,,,823,2025-10-22 17:33:31.044579,,,,,,,0.1441054493188858,0.002140423748642206,0.1441054493188858 +0.15809892117977142,0.0025723313447088003,0.15809892117977142,49399.0,824,2025-10-22 17:36:32.682846,,,,,,,,, +,,,,824,2025-10-22 17:41:38.266049,0.1372089385986328,0.002694601658731699,0.1372089385986328,0.15369445085525513,0.003103876719251275,0.15369445085525513,,, +,,,,824,2025-10-22 17:42:04.829861,,,,,,,0.14319749176502228,0.0024244235828518867,0.14319749176502228 +0.1635015904903412,0.004480417817831039,0.1635015904903412,49449.0,825,2025-10-22 17:43:59.093353,,,,,,,,, +0.14473427832126617,0.005221948958933353,0.14473427832126617,49499.0,825,2025-10-22 17:48:45.582686,,,,,,,,, +,,,,825,2025-10-22 17:50:23.198290,0.14933162927627563,0.00220346637070179,0.14933162927627563,0.1528567671775818,0.0022672226186841726,0.1528567671775818,,, +,,,,825,2025-10-22 17:50:50.833627,,,,,,,0.145036980509758,0.0023468455765396357,0.145036980509758 +0.14763851463794708,0.0011552955256775022,0.14763851463794708,49549.0,826,2025-10-22 17:56:39.176064,,,,,,,,, +,,,,826,2025-10-22 17:58:49.582915,0.1360897570848465,0.0016652211779728532,0.1360897570848465,0.14713723957538605,0.002259747125208378,0.14713723957538605,,, +,,,,826,2025-10-22 17:59:17.008793,,,,,,,0.14178258180618286,0.0018473108066245914,0.14178258180618286 +0.14635971188545227,0.0009651024010963738,0.14635971188545227,49599.0,827,2025-10-22 18:04:16.255865,,,,,,,,, +,,,,827,2025-10-22 18:07:35.401532,0.1463748663663864,0.002281809924170375,0.1463748663663864,0.1436949223279953,0.0019262304995208979,0.1436949223279953,,, +,,,,827,2025-10-22 18:08:00.916428,,,,,,,0.1432517021894455,0.001987314783036709,0.1432517021894455 +0.14026787877082825,0.0012351666809991002,0.14026787877082825,49649.0,828,2025-10-22 18:12:11.986981,,,,,,,,, +,,,,828,2025-10-22 18:16:23.720095,0.14911897480487823,0.0024264929816126823,0.14911897480487823,0.1468418687582016,0.0034775950480252504,0.1468418687582016,,, +,,,,828,2025-10-22 18:16:49.878696,,,,,,,0.14004762470722198,0.0021271230652928352,0.14004762470722198 +0.117879219353199,0.0008913036435842514,0.117879219353199,49699.0,829,2025-10-22 18:19:54.011115,,,,,,,,, +,,,,829,2025-10-22 18:25:00.445055,0.13934949040412903,0.0019047914538532495,0.13934949040412903,0.14788690209388733,0.0015217886539176106,0.14788690209388733,,, +,,,,829,2025-10-22 18:25:25.626394,,,,,,,0.13920563459396362,0.0018790967296808958,0.13920563459396362 +0.124205082654953,0.0031700024846941233,0.124205082654953,49749.0,830,2025-10-22 18:27:20.208974,,,,,,,,, +0.16461700201034546,0.0012227367842569947,0.16461700201034546,49799.0,830,2025-10-22 18:32:06.025928,,,,,,,,, +,,,,830,2025-10-22 18:33:40.428824,0.147639200091362,0.0020330066327005625,0.147639200091362,0.13921959698200226,0.002079240046441555,0.13921959698200226,,, +,,,,830,2025-10-22 18:34:04.947233,,,,,,,0.14104613661766052,0.0023591010831296444,0.14104613661766052 +0.16626706719398499,0.0019482756033539772,0.16626706719398499,49849.0,831,2025-10-22 18:39:53.545038,,,,,,,,, +,,,,831,2025-10-22 18:42:06.318673,0.1440911889076233,0.0015559016028419137,0.1440911889076233,0.14739742875099182,0.0023365155793726444,0.14739742875099182,,, +,,,,831,2025-10-22 18:42:32.916411,,,,,,,0.1400432586669922,0.001953517086803913,0.1400432586669922 +0.10643547028303146,0.0006898357532918453,0.10643547028303146,49899.0,832,2025-10-22 18:47:30.891065,,,,,,,,, +,,,,832,2025-10-22 18:50:39.015930,0.1353694647550583,0.0013497938634827733,0.1353694647550583,0.13942061364650726,0.0012858387781307101,0.13942061364650726,,, +,,,,832,2025-10-22 18:51:04.512534,,,,,,,0.1388610601425171,0.002385975793004036,0.1388610601425171 +0.1397005319595337,0.005977190565317869,0.1397005319595337,49949.0,833,2025-10-22 18:54:55.951209,,,,,,,,, +,,,,833,2025-10-22 18:59:10.763054,0.1534641832113266,0.0028051063418388367,0.1534641832113266,0.14746251702308655,0.0022884684149175882,0.14746251702308655,,, +,,,,833,2025-10-22 18:59:38.239010,,,,,,,0.13904385268688202,0.0022852998226881027,0.13904385268688202 +0.14102710783481598,0.0021467695478349924,0.14102710783481598,49999.0,834,2025-10-22 19:02:27.869234,,,,,,,,, +,,,,834,2025-10-22 19:07:52.189597,0.1376379430294037,0.0019019783940166235,0.1376379430294037,0.14928922057151794,0.0017121972050517797,0.14928922057151794,,, +,,,,834,2025-10-22 19:08:17.067255,,,,,,,0.14105698466300964,0.0019532344304025173,0.14105698466300964 +0.10610078275203705,0.001195110147818923,0.10610078275203705,50049.0,835,2025-10-22 19:10:06.135493,,,,,,,,, +0.17101716995239258,0.002239820547401905,0.17101716995239258,50099.0,835,2025-10-22 19:15:12.805420,,,,,,,,, +,,,,835,2025-10-22 19:16:49.720558,0.1421956717967987,0.0019177797948941588,0.1421956717967987,0.1387544423341751,0.002319988328963518,0.1387544423341751,,, +,,,,835,2025-10-22 19:17:15.057947,,,,,,,0.14013151824474335,0.0019283764995634556,0.14013151824474335 +0.1444578468799591,0.0011188057251274586,0.1444578468799591,50149.0,836,2025-10-22 19:22:59.805577,,,,,,,,, +,,,,836,2025-10-22 19:25:23.765375,0.14415891468524933,0.00215230043977499,0.14415891468524933,0.15987615287303925,0.0028153813909739256,0.15987615287303925,,, +,,,,836,2025-10-22 19:25:51.085134,,,,,,,0.13892816007137299,0.0022528793197125196,0.13892816007137299 +0.1187187060713768,0.0017837249906733632,0.1187187060713768,50199.0,837,2025-10-22 19:30:30.740561,,,,,,,,, +,,,,837,2025-10-22 19:33:57.411386,0.1491127759218216,0.002315751975402236,0.1491127759218216,0.14268535375595093,0.002963020233437419,0.14268535375595093,,, +,,,,837,2025-10-22 19:34:24.138380,,,,,,,0.13922308385372162,0.0024859956465661526,0.13922308385372162 +0.15860041975975037,0.0019404992926865816,0.15860041975975037,50249.0,838,2025-10-22 19:38:26.752076,,,,,,,,, +,,,,838,2025-10-22 19:42:32.579405,0.1398041993379593,0.0014323510695248842,0.1398041993379593,0.1389319896697998,0.00209602783434093,0.1389319896697998,,, +,,,,838,2025-10-22 19:43:00.982403,,,,,,,0.14286252856254578,0.0022168257273733616,0.14286252856254578 +0.14430519938468933,0.0016140940133482218,0.14430519938468933,50299.0,839,2025-10-22 19:45:53.974074,,,,,,,,, +,,,,839,2025-10-22 19:51:04.617855,0.15684279799461365,0.0029740978498011827,0.15684279799461365,0.14021407067775726,0.0015725776320323348,0.14021407067775726,,, +,,,,839,2025-10-22 19:51:29.850968,,,,,,,0.14060375094413757,0.0017856181366369128,0.14060375094413757 +0.15168893337249756,0.00116011593490839,0.15168893337249756,50349.0,840,2025-10-22 19:53:16.607569,,,,,,,,, +0.14799946546554565,0.0017240328015759587,0.14799946546554565,50399.0,840,2025-10-22 19:57:55.147562,,,,,,,,, +,,,,840,2025-10-22 19:59:31.580580,0.14395497739315033,0.0030717768240720034,0.14395497739315033,0.1429591178894043,0.0017616944387555122,0.1429591178894043,,, +,,,,840,2025-10-22 19:59:55.835250,,,,,,,0.14117608964443207,0.002318952465429902,0.14117608964443207 +0.1426568627357483,0.0014107378665357828,0.1426568627357483,50449.0,841,2025-10-22 20:05:44.012748,,,,,,,,, +,,,,841,2025-10-22 20:08:11.092500,0.14644351601600647,0.0021870534401386976,0.14644351601600647,0.14898863434791565,0.00264979456551373,0.14898863434791565,,, +,,,,841,2025-10-22 20:08:36.750946,,,,,,,0.14155013859272003,0.0022708317264914513,0.14155013859272003 +0.16630595922470093,0.0015359047101810575,0.16630595922470093,50499.0,842,2025-10-22 20:13:13.249582,,,,,,,,, +,,,,842,2025-10-22 20:16:28.456245,0.13892970979213715,0.0024100965820252895,0.13892970979213715,0.14485101401805878,0.001844248385168612,0.14485101401805878,,, +,,,,842,2025-10-22 20:16:55.105603,,,,,,,0.13971276581287384,0.0021325659472495317,0.13971276581287384 +0.13464568555355072,0.0012192094000056386,0.13464568555355072,50549.0,843,2025-10-22 20:20:52.189378,,,,,,,,, +,,,,843,2025-10-22 20:24:50.971717,0.1437384933233261,0.0028262848500162363,0.1437384933233261,0.14450553059577942,0.0014550152700394392,0.14450553059577942,,, +,,,,843,2025-10-22 20:25:18.073241,,,,,,,0.14022178947925568,0.0024331295862793922,0.14022178947925568 +0.1201045960187912,0.0007303354213945568,0.1201045960187912,50599.0,844,2025-10-22 20:28:13.930312,,,,,,,,, +,,,,844,2025-10-22 20:33:31.695848,0.1489722728729248,0.002906790701672435,0.1489722728729248,0.15757469832897186,0.0023381516803056,0.15757469832897186,,, +,,,,844,2025-10-22 20:33:58.789571,,,,,,,0.13945627212524414,0.0021167697850614786,0.13945627212524414 +0.1333756446838379,0.001851760782301426,0.1333756446838379,50649.0,845,2025-10-22 20:35:52.638519,,,,,,,,, +0.18297851085662842,0.0037459726445376873,0.18297851085662842,50699.0,845,2025-10-22 20:40:53.719743,,,,,,,,, +,,,,845,2025-10-22 20:42:28.910708,0.15638238191604614,0.0027505282778292894,0.15638238191604614,0.13577823340892792,0.0023354636505246162,0.13577823340892792,,, +,,,,845,2025-10-22 20:42:53.810347,,,,,,,0.14338387548923492,0.002252380596473813,0.14338387548923492 +0.1256609708070755,0.0025724691804498434,0.1256609708070755,50749.0,846,2025-10-22 20:48:48.793862,,,,,,,,, +,,,,846,2025-10-22 20:51:01.660876,0.147343248128891,0.0020764339715242386,0.147343248128891,0.13725602626800537,0.0021773946937173605,0.13725602626800537,,, +,,,,846,2025-10-22 20:51:27.088436,,,,,,,0.14014755189418793,0.0023404480889439583,0.14014755189418793 +0.14916075766086578,0.0013490174897015095,0.14916075766086578,50799.0,847,2025-10-22 20:56:18.753089,,,,,,,,, +,,,,847,2025-10-22 20:59:27.958601,0.15226995944976807,0.0020645507611334324,0.15226995944976807,0.13250480592250824,0.001746140536852181,0.13250480592250824,,, +,,,,847,2025-10-22 21:00:15.962682,,,,,,,0.14014862477779388,0.002023675013333559,0.14014862477779388 +0.1471092402935028,0.002315247431397438,0.1471092402935028,50849.0,848,2025-10-22 21:04:06.407987,,,,,,,,, +,,,,848,2025-10-22 21:08:23.552017,0.14693015813827515,0.0028638863004744053,0.14693015813827515,0.13772478699684143,0.0015371434856206179,0.13772478699684143,,, +,,,,848,2025-10-22 21:08:48.821147,,,,,,,0.14226503670215607,0.002439322182908654,0.14226503670215607 +0.15280868113040924,0.0036365867126733065,0.15280868113040924,50899.0,849,2025-10-22 21:11:39.609858,,,,,,,,, +,,,,849,2025-10-22 21:16:57.239910,0.1476774364709854,0.0023720553144812584,0.1476774364709854,0.15520446002483368,0.001995830563828349,0.15520446002483368,,, +,,,,849,2025-10-22 21:17:22.862386,,,,,,,0.13958458602428436,0.0019855450373142958,0.13958458602428436 +0.12528985738754272,0.000861543754581362,0.12528985738754272,50949.0,850,2025-10-22 21:19:06.396219,,,,,,,,, +0.12930025160312653,0.0009057553252205253,0.12930025160312653,50999.0,850,2025-10-22 21:24:01.440451,,,,,,,,, +,,,,850,2025-10-22 21:25:37.538398,0.14916305243968964,0.0019556323532015085,0.14916305243968964,0.1415398269891739,0.0015825896989554167,0.1415398269891739,,, +,,,,850,2025-10-22 21:26:03.967251,,,,,,,0.1405109167098999,0.0021098051220178604,0.1405109167098999 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/tf/events.out.tfevents.1760726103.node-0.2906.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/tf/events.out.tfevents.1760726103.node-0.2906.0 new file mode 100644 index 0000000000000000000000000000000000000000..a2d32f16ac4cd7c63fa696c1ea5f64742a7c0fd6 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/tf/events.out.tfevents.1760726103.node-0.2906.0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceee909966d7c679a0421fc6e5d4f72f4e9a5093b97f311eba77a8109d64d20e +size 775208 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/meta.experiment new file mode 100644 index 0000000000000000000000000000000000000000..11609a9a7aa72e616fced823da3f2f0c73198db0 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/meta.experiment @@ -0,0 +1 @@ +{"name": "testtube", "version": 4, "tags_path": "./logs/full_ct_2d_with_body_mask/testtube/version_4/meta_tags.csv", "metrics_path": "./logs/full_ct_2d_with_body_mask/testtube/version_4/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-22 21:37:24.813761", "exp_hash": "testtube_v4"} \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/meta_tags.csv new file mode 100644 index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/meta_tags.csv @@ -0,0 +1 @@ +key,value diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/metrics.csv new file mode 100644 index 0000000000000000000000000000000000000000..fa8ebcbeb48cb8c2063f986bc614f5fd9788b5cd --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/metrics.csv @@ -0,0 +1,397 @@ +train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch +0.13037830591201782,0.0017187944613397121,0.13037830591201782,51049.0,851,2025-10-22 21:48:20.087748,,,,,,,,, +,,,,851,2025-10-22 21:52:06.034938,0.14065057039260864,0.002963854232802987,0.14065057039260864,0.14268071949481964,0.0017414524918422103,0.14268071949481964,,, +,,,,851,2025-10-22 21:52:57.850047,,,,,,,0.13934732973575592,0.002045540139079094,0.13934732973575592 +0.14018478989601135,0.0009531218674965203,0.14018478989601135,51099.0,852,2025-10-22 22:00:14.602157,,,,,,,,, +,,,,852,2025-10-22 22:05:05.027493,0.13647952675819397,0.0017420736839994788,0.13647952675819397,0.14211571216583252,0.0017231350066140294,0.14211571216583252,,, +,,,,852,2025-10-22 22:05:57.382447,,,,,,,0.14420488476753235,0.0022307077888399363,0.14420488476753235 +0.11875729262828827,0.0012105273781344295,0.11875729262828827,51149.0,853,2025-10-22 22:11:34.832246,,,,,,,,, +,,,,853,2025-10-22 22:18:04.385431,0.1484295129776001,0.0013851637486368418,0.1484295129776001,0.14900581538677216,0.004368290770798922,0.14900581538677216,,, +,,,,853,2025-10-22 22:18:55.602020,,,,,,,0.1402885615825653,0.0020009514410048723,0.1402885615825653 +0.15176880359649658,0.0015333890914916992,0.15176880359649658,51199.0,854,2025-10-22 22:22:58.869557,,,,,,,,, +,,,,854,2025-10-22 22:31:02.970735,0.1388559639453888,0.0011187782511115074,0.1388559639453888,0.13765190541744232,0.002403494669124484,0.13765190541744232,,, +,,,,854,2025-10-22 22:31:52.074823,,,,,,,0.14104662835597992,0.002140265190973878,0.14104662835597992 +0.13130152225494385,0.003874089801684022,0.13130152225494385,51249.0,855,2025-10-22 22:34:15.378453,,,,,,,,, +0.14804191887378693,0.001177174155600369,0.14804191887378693,51299.0,855,2025-10-22 22:42:23.327740,,,,,,,,, +,,,,855,2025-10-22 22:43:59.852983,0.15261220932006836,0.0013621533289551735,0.15261220932006836,0.1374952644109726,0.0024583041667938232,0.1374952644109726,,, +,,,,855,2025-10-22 22:44:50.538803,,,,,,,0.14024178683757782,0.002282659290358424,0.14024178683757782 +0.12694339454174042,0.002589195966720581,0.12694339454174042,51349.0,856,2025-10-22 22:53:35.809834,,,,,,,,, +,,,,856,2025-10-22 22:56:46.019083,0.1404147744178772,0.0018315206980332732,0.1404147744178772,0.14618144929409027,0.0019203481497243047,0.14618144929409027,,, +,,,,856,2025-10-22 22:57:10.929542,,,,,,,0.1405709981918335,0.0021877826657146215,0.1405709981918335 +0.13710321485996246,0.00094651582185179,0.13710321485996246,51399.0,857,2025-10-22 23:04:23.116929,,,,,,,,, +,,,,857,2025-10-22 23:09:12.454952,0.14417491853237152,0.0022922458592802286,0.14417491853237152,0.1618846207857132,0.0021372768096625805,0.1618846207857132,,, +,,,,857,2025-10-22 23:09:37.503456,,,,,,,0.13962741196155548,0.002139671240001917,0.13962741196155548 +0.1233082264661789,0.000888683192897588,0.1233082264661789,51449.0,858,2025-10-22 23:15:10.625532,,,,,,,,, +,,,,858,2025-10-22 23:21:36.901737,0.14499835669994354,0.0027918610721826553,0.14499835669994354,0.15607963502407074,0.005096021108329296,0.15607963502407074,,, +,,,,858,2025-10-22 23:22:03.848041,,,,,,,0.1419636756181717,0.0022754690144211054,0.1419636756181717 +0.1646611988544464,0.0015095421113073826,0.1646611988544464,51499.0,859,2025-10-22 23:26:00.056729,,,,,,,,, +,,,,859,2025-10-22 23:34:05.876669,0.1441415399312973,0.002320069819688797,0.1441415399312973,0.15756548941135406,0.0031610848382115364,0.15756548941135406,,, +,,,,859,2025-10-22 23:34:33.534708,,,,,,,0.14071610569953918,0.0018851998029276729,0.14071610569953918 +0.17823366820812225,0.004922430031001568,0.17823366820812225,51549.0,860,2025-10-22 23:36:58.147435,,,,,,,,, +0.1584956794977188,0.001917013549245894,0.1584956794977188,51599.0,860,2025-10-22 23:45:04.765455,,,,,,,,, +,,,,860,2025-10-22 23:46:39.299097,0.1583656370639801,0.0036330174189060926,0.1583656370639801,0.14711476862430573,0.0016379425069317222,0.14711476862430573,,, +,,,,860,2025-10-22 23:47:05.128245,,,,,,,0.14112259447574615,0.0020275760907679796,0.14112259447574615 +0.12713782489299774,0.002765693236142397,0.12713782489299774,51649.0,861,2025-10-22 23:55:52.943285,,,,,,,,, +,,,,861,2025-10-22 23:59:04.705519,0.13904738426208496,0.0024089643266052008,0.13904738426208496,0.14996877312660217,0.0015189492842182517,0.14996877312660217,,, +,,,,861,2025-10-22 23:59:31.059187,,,,,,,0.14085660874843597,0.002325199544429779,0.14085660874843597 +0.12533031404018402,0.003907931037247181,0.12533031404018402,51699.0,862,2025-10-23 00:06:44.888129,,,,,,,,, +,,,,862,2025-10-23 00:11:40.667446,0.14991794526576996,0.002005769871175289,0.14991794526576996,0.1522531360387802,0.002374759642407298,0.1522531360387802,,, +,,,,862,2025-10-23 00:12:07.491211,,,,,,,0.13911285996437073,0.00223668129183352,0.13911285996437073 +0.1053307056427002,0.0009980626637116075,0.1053307056427002,51749.0,863,2025-10-23 00:17:42.885050,,,,,,,,, +,,,,863,2025-10-23 00:24:09.005230,0.14853674173355103,0.003000406315550208,0.14853674173355103,0.14792709052562714,0.002668743720278144,0.14792709052562714,,, +,,,,863,2025-10-23 00:24:35.604700,,,,,,,0.13902699947357178,0.002048750873655081,0.13902699947357178 +0.15031541883945465,0.002642720239236951,0.15031541883945465,51799.0,864,2025-10-23 00:28:32.805791,,,,,,,,, +,,,,864,2025-10-23 00:36:37.981373,0.147827610373497,0.0021275656763464212,0.147827610373497,0.14708144962787628,0.0017623540479689837,0.14708144962787628,,, +,,,,864,2025-10-23 00:37:03.998170,,,,,,,0.14171192049980164,0.0025082235224545,0.14171192049980164 +0.1317089945077896,0.001345141907222569,0.1317089945077896,51849.0,865,2025-10-23 00:39:32.398599,,,,,,,,, +0.12935930490493774,0.0008069399045780301,0.12935930490493774,51899.0,865,2025-10-23 00:47:41.220659,,,,,,,,, +,,,,865,2025-10-23 00:49:14.643733,0.13524150848388672,0.0031826631166040897,0.13524150848388672,0.15096722543239594,0.0027206502854824066,0.15096722543239594,,, +,,,,865,2025-10-23 00:49:41.255368,,,,,,,0.13765302300453186,0.0018215227173641324,0.13765302300453186 +0.10782301425933838,0.0012731279712170362,0.10782301425933838,51949.0,866,2025-10-23 00:58:29.618222,,,,,,,,, +,,,,866,2025-10-23 01:01:43.246660,0.15087300539016724,0.0018262241501361132,0.15087300539016724,0.1442883163690567,0.00259033078327775,0.1442883163690567,,, +,,,,866,2025-10-23 01:02:11.330418,,,,,,,0.14120130240917206,0.0022035532165318727,0.14120130240917206 +0.1612449586391449,0.0015988509403541684,0.1612449586391449,51999.0,867,2025-10-23 01:09:28.301379,,,,,,,,, +,,,,867,2025-10-23 01:14:18.344072,0.14875683188438416,0.003084274008870125,0.14875683188438416,0.1433686763048172,0.0019665476866066456,0.1433686763048172,,, +,,,,867,2025-10-23 01:14:47.523873,,,,,,,0.14239051938056946,0.0023532272316515446,0.14239051938056946 +0.12949463725090027,0.0011933435453101993,0.12949463725090027,52049.0,868,2025-10-23 01:20:22.832164,,,,,,,,, +,,,,868,2025-10-23 01:26:51.391879,0.144911527633667,0.0030041250865906477,0.144911527633667,0.14510919153690338,0.0023731424007564783,0.14510919153690338,,, +,,,,868,2025-10-23 01:27:19.399767,,,,,,,0.1386617124080658,0.002210087375715375,0.1386617124080658 +0.1298108547925949,0.0008091990021057427,0.1298108547925949,52099.0,869,2025-10-23 01:31:14.398436,,,,,,,,, +,,,,869,2025-10-23 01:39:19.315157,0.14451414346694946,0.0018985827919095755,0.14451414346694946,0.1481834203004837,0.002518479945138097,0.1481834203004837,,, +,,,,869,2025-10-23 01:39:45.453757,,,,,,,0.1403237134218216,0.002379893558099866,0.1403237134218216 +0.12993593513965607,0.0012928048381581903,0.12993593513965607,52149.0,870,2025-10-23 01:41:59.023428,,,,,,,,, +0.12638819217681885,0.0013676430098712444,0.12638819217681885,52199.0,870,2025-10-23 01:50:06.493154,,,,,,,,, +,,,,870,2025-10-23 01:51:41.535125,0.13237586617469788,0.001425244496203959,0.13237586617469788,0.13830144703388214,0.0021601126063615084,0.13830144703388214,,, +,,,,870,2025-10-23 01:52:31.986044,,,,,,,0.1382557600736618,0.0021864650771021843,0.1382557600736618 +0.09924706071615219,0.0006746004801243544,0.09924706071615219,52249.0,871,2025-10-23 02:01:15.096313,,,,,,,,, +,,,,871,2025-10-23 02:04:28.348392,0.15017662942409515,0.00399711774662137,0.15017662942409515,0.13275346159934998,0.0030152685940265656,0.13275346159934998,,, +,,,,871,2025-10-23 02:05:17.827828,,,,,,,0.13834643363952637,0.0021378721576184034,0.13834643363952637 +0.1441430151462555,0.002049876842647791,0.1441430151462555,52299.0,872,2025-10-23 02:12:21.546398,,,,,,,,, +,,,,872,2025-10-23 02:17:08.709179,0.14205433428287506,0.0017889498267322779,0.14205433428287506,0.15065310895442963,0.003071142826229334,0.15065310895442963,,, +,,,,872,2025-10-23 02:17:36.347287,,,,,,,0.14105477929115295,0.002472812309861183,0.14105477929115295 +0.1498814970254898,0.006482968106865883,0.1498814970254898,52349.0,873,2025-10-23 02:23:07.894227,,,,,,,,, +,,,,873,2025-10-23 02:29:38.359847,0.14642652869224548,0.0018907805206254125,0.14642652869224548,0.15149182081222534,0.002131015295162797,0.15149182081222534,,, +,,,,873,2025-10-23 02:30:05.803192,,,,,,,0.14393708109855652,0.00233633304014802,0.14393708109855652 +0.1602553278207779,0.001868592225946486,0.1602553278207779,52399.0,874,2025-10-23 02:34:01.591569,,,,,,,,, +,,,,874,2025-10-23 02:42:05.947312,0.14745357632637024,0.0030079223215579987,0.14745357632637024,0.15662938356399536,0.0018543170299381018,0.15662938356399536,,, +,,,,874,2025-10-23 02:42:33.120813,,,,,,,0.140070378780365,0.0019885071087628603,0.140070378780365 +0.13447119295597076,0.001856712973676622,0.13447119295597076,52449.0,875,2025-10-23 02:44:51.041899,,,,,,,,, +0.1355542540550232,0.0014322332572191954,0.1355542540550232,52499.0,875,2025-10-23 02:52:58.665747,,,,,,,,, +,,,,875,2025-10-23 02:54:34.938165,0.13497354090213776,0.0013314017560333014,0.13497354090213776,0.1406777799129486,0.0015707749407738447,0.1406777799129486,,, +,,,,875,2025-10-23 02:55:01.980514,,,,,,,0.14012224972248077,0.0021508962381631136,0.14012224972248077 +0.1677321046590805,0.002135578542947769,0.1677321046590805,52549.0,876,2025-10-23 03:03:48.004514,,,,,,,,, +,,,,876,2025-10-23 03:07:05.659097,0.13532647490501404,0.001356029650196433,0.13532647490501404,0.13838759064674377,0.0015328042209148407,0.13838759064674377,,, +,,,,876,2025-10-23 03:07:33.757180,,,,,,,0.1410951167345047,0.0020472120959311724,0.1410951167345047 +0.1604827493429184,0.005210728384554386,0.1604827493429184,52599.0,877,2025-10-23 03:14:45.438126,,,,,,,,, +,,,,877,2025-10-23 03:19:34.494637,0.15023306012153625,0.003079775720834732,0.15023306012153625,0.13580359518527985,0.002129973843693733,0.13580359518527985,,, +,,,,877,2025-10-23 03:20:28.304288,,,,,,,0.14018948376178741,0.0021990661043673754,0.14018948376178741 +0.1443239003419876,0.0017171563813462853,0.1443239003419876,52649.0,878,2025-10-23 03:25:59.146509,,,,,,,,, +,,,,878,2025-10-23 03:32:28.785224,0.13773022592067719,0.001172515912912786,0.13773022592067719,0.15223091840744019,0.004297711420804262,0.15223091840744019,,, +,,,,878,2025-10-23 03:32:55.803426,,,,,,,0.13844218850135803,0.0018780336249619722,0.13844218850135803 +0.15753760933876038,0.0020504507701843977,0.15753760933876038,52699.0,879,2025-10-23 03:36:50.525511,,,,,,,,, +,,,,879,2025-10-23 03:44:54.190406,0.15039844810962677,0.0029427632689476013,0.15039844810962677,0.15275540947914124,0.00235488498583436,0.15275540947914124,,, +,,,,879,2025-10-23 03:45:21.901973,,,,,,,0.14208927750587463,0.0020393214654177427,0.14208927750587463 +0.12156625092029572,0.003215736709535122,0.12156625092029572,52749.0,880,2025-10-23 03:47:41.544667,,,,,,,,, +0.15373411774635315,0.004746941849589348,0.15373411774635315,52799.0,880,2025-10-23 03:55:48.485371,,,,,,,,, +,,,,880,2025-10-23 03:57:21.050247,0.1580582857131958,0.0025206338614225388,0.1580582857131958,0.14063602685928345,0.002659569727256894,0.14063602685928345,,, +,,,,880,2025-10-23 03:57:48.561933,,,,,,,0.13756409287452698,0.002196886111050844,0.13756409287452698 +0.13382107019424438,0.0016759152058511972,0.13382107019424438,52849.0,881,2025-10-23 04:06:30.637370,,,,,,,,, +,,,,881,2025-10-23 04:09:45.517452,0.13612090051174164,0.003139826934784651,0.13612090051174164,0.14519380033016205,0.0031156856566667557,0.14519380033016205,,, +,,,,881,2025-10-23 04:10:13.241068,,,,,,,0.14266714453697205,0.002157229231670499,0.14266714453697205 +0.12062706798315048,0.0015855535166338086,0.12062706798315048,52899.0,882,2025-10-23 04:17:20.663491,,,,,,,,, +,,,,882,2025-10-23 04:22:09.409599,0.1363772600889206,0.0013315334217622876,0.1363772600889206,0.13997294008731842,0.001799947815015912,0.13997294008731842,,, +,,,,882,2025-10-23 04:22:36.410539,,,,,,,0.14001688361167908,0.0021804282441735268,0.14001688361167908 +0.15238851308822632,0.0015825461596250534,0.15238851308822632,52949.0,883,2025-10-23 04:28:10.096551,,,,,,,,, +,,,,883,2025-10-23 04:34:35.816060,0.145150825381279,0.0017640221631154418,0.145150825381279,0.141484797000885,0.002082112245261669,0.141484797000885,,, +,,,,883,2025-10-23 04:35:01.740468,,,,,,,0.13626796007156372,0.002039157086983323,0.13626796007156372 +0.14788031578063965,0.0019941190257668495,0.14788031578063965,52999.0,884,2025-10-23 04:38:52.552166,,,,,,,,, +,,,,884,2025-10-23 04:46:58.689103,0.14728327095508575,0.00372494594193995,0.14728327095508575,0.1368872970342636,0.0016200554091483355,0.1368872970342636,,, +,,,,884,2025-10-23 04:47:50.906783,,,,,,,0.14024874567985535,0.002584668342024088,0.14024874567985535 +0.1256360113620758,0.0014762133359909058,0.1256360113620758,53049.0,885,2025-10-23 04:50:08.481884,,,,,,,,, +0.11988583952188492,0.002784337382763624,0.11988583952188492,53099.0,885,2025-10-23 04:58:15.039955,,,,,,,,, +,,,,885,2025-10-23 04:59:48.782827,0.14679546654224396,0.0019626463763415813,0.14679546654224396,0.15738403797149658,0.002870068419724703,0.15738403797149658,,, +,,,,885,2025-10-23 05:00:15.033208,,,,,,,0.1369655877351761,0.0022090680431574583,0.1369655877351761 +0.12612664699554443,0.0012252506567165256,0.12612664699554443,53149.0,886,2025-10-23 05:09:00.954852,,,,,,,,, +,,,,886,2025-10-23 05:12:12.044738,0.14561133086681366,0.0020805776584893465,0.14561133086681366,0.14410363137722015,0.002589962212368846,0.14410363137722015,,, +,,,,886,2025-10-23 05:12:37.001634,,,,,,,0.13918189704418182,0.001914656488224864,0.13918189704418182 +0.13202019035816193,0.001271103392355144,0.13202019035816193,53199.0,887,2025-10-23 05:19:54.164789,,,,,,,,, +,,,,887,2025-10-23 05:24:44.552754,0.1416434645652771,0.00364540982991457,0.1416434645652771,0.15382248163223267,0.003865365404635668,0.15382248163223267,,, +,,,,887,2025-10-23 05:25:12.001338,,,,,,,0.138995960354805,0.0021744382102042437,0.138995960354805 +0.12031807750463486,0.0013398678274825215,0.12031807750463486,53249.0,888,2025-10-23 05:30:50.534994,,,,,,,,, +,,,,888,2025-10-23 05:37:17.388975,0.14237256348133087,0.0015867101028561592,0.14237256348133087,0.14346396923065186,0.0014270193642005324,0.14346396923065186,,, +,,,,888,2025-10-23 05:37:45.357859,,,,,,,0.1370868682861328,0.002261658199131489,0.1370868682861328 +0.12295906990766525,0.0015416678506880999,0.12295906990766525,53299.0,889,2025-10-23 05:41:41.606378,,,,,,,,, +,,,,889,2025-10-23 05:49:44.262565,0.13937395811080933,0.001573410932905972,0.13937395811080933,0.14331956207752228,0.0035183436702936888,0.14331956207752228,,, +,,,,889,2025-10-23 05:50:11.259859,,,,,,,0.13962633907794952,0.0018354632193222642,0.13962633907794952 +0.1256992369890213,0.0006651153671555221,0.1256992369890213,53349.0,890,2025-10-23 05:52:33.299139,,,,,,,,, +0.1607617437839508,0.0014651210512965918,0.1607617437839508,53399.0,890,2025-10-23 06:00:40.729070,,,,,,,,, +,,,,890,2025-10-23 06:02:16.586076,0.15539665520191193,0.0019226128933951259,0.15539665520191193,0.149740070104599,0.0013749614590778947,0.149740070104599,,, +,,,,890,2025-10-23 06:02:44.118914,,,,,,,0.14218370616436005,0.0023181026335805655,0.14218370616436005 +0.13055913150310516,0.0018135375576093793,0.13055913150310516,53449.0,891,2025-10-23 06:11:29.665575,,,,,,,,, +,,,,891,2025-10-23 06:14:41.485160,0.14714138209819794,0.0016141788801178336,0.14714138209819794,0.14161023497581482,0.0016422626795247197,0.14161023497581482,,, +,,,,891,2025-10-23 06:15:08.108862,,,,,,,0.14094235002994537,0.0021578355226665735,0.14094235002994537 +0.11875884979963303,0.001336851972155273,0.11875884979963303,53499.0,892,2025-10-23 06:22:26.373625,,,,,,,,, +,,,,892,2025-10-23 06:27:21.025047,0.14324119687080383,0.001776354038156569,0.14324119687080383,0.1480787992477417,0.0025457143783569336,0.1480787992477417,,, +,,,,892,2025-10-23 06:27:48.939241,,,,,,,0.14072495698928833,0.0022463800851255655,0.14072495698928833 +0.13544338941574097,0.0021175225265324116,0.13544338941574097,53549.0,893,2025-10-23 06:33:22.837385,,,,,,,,, +,,,,893,2025-10-23 06:39:48.869143,0.145830437541008,0.0013397516449913383,0.145830437541008,0.1363273561000824,0.00203121779486537,0.1363273561000824,,, +,,,,893,2025-10-23 06:40:38.259201,,,,,,,0.14023278653621674,0.002029930707067251,0.14023278653621674 +0.1580713987350464,0.0012990925461053848,0.1580713987350464,53599.0,894,2025-10-23 06:44:41.557744,,,,,,,,, +,,,,894,2025-10-23 06:52:46.461866,0.13437707722187042,0.0024474498350173235,0.13437707722187042,0.1325400322675705,0.0014090657932683825,0.1325400322675705,,, +,,,,894,2025-10-23 06:53:37.499390,,,,,,,0.13900095224380493,0.0021340404637157917,0.13900095224380493 +0.139811173081398,0.0011202801251783967,0.139811173081398,53649.0,895,2025-10-23 06:55:57.472735,,,,,,,,, +0.14997757971286774,0.002740177558735013,0.14997757971286774,53699.0,895,2025-10-23 07:04:03.912065,,,,,,,,, +,,,,895,2025-10-23 07:05:37.603696,0.13625308871269226,0.0015284150140359998,0.13625308871269226,0.1379295289516449,0.0010456535965204239,0.1379295289516449,,, +,,,,895,2025-10-23 07:06:03.513119,,,,,,,0.13947252929210663,0.002117312513291836,0.13947252929210663 +0.18134377896785736,0.005599508062005043,0.18134377896785736,53749.0,896,2025-10-23 07:14:54.330473,,,,,,,,, +,,,,896,2025-10-23 07:18:06.959619,0.14357006549835205,0.0023651232477277517,0.14357006549835205,0.152418315410614,0.0025180564261972904,0.152418315410614,,, +,,,,896,2025-10-23 07:18:34.457395,,,,,,,0.14304597675800323,0.0023366084787994623,0.14304597675800323 +0.13667474687099457,0.0012499873992055655,0.13667474687099457,53799.0,897,2025-10-23 07:25:47.551049,,,,,,,,, +,,,,897,2025-10-23 07:30:40.485383,0.14473532140254974,0.001292630098760128,0.14473532140254974,0.14081275463104248,0.0017749980324879289,0.14081275463104248,,, +,,,,897,2025-10-23 07:31:07.798739,,,,,,,0.13832661509513855,0.0022301985882222652,0.13832661509513855 +0.1354406476020813,0.000992813496850431,0.1354406476020813,53849.0,898,2025-10-23 07:36:37.767115,,,,,,,,, +,,,,898,2025-10-23 07:43:06.202006,0.14250792562961578,0.0028824391774833202,0.14250792562961578,0.1434541791677475,0.0031174058094620705,0.1434541791677475,,, +,,,,898,2025-10-23 07:43:33.505485,,,,,,,0.14218120276927948,0.0024086947087198496,0.14218120276927948 +0.1428629457950592,0.0020494929049164057,0.1428629457950592,53899.0,899,2025-10-23 07:47:27.409218,,,,,,,,, +,,,,899,2025-10-23 07:55:34.298683,0.1424795389175415,0.00284834997728467,0.1424795389175415,0.14817942678928375,0.002042158739641309,0.14817942678928375,,, +,,,,899,2025-10-23 07:56:02.181599,,,,,,,0.13740018010139465,0.002059477847069502,0.13740018010139465 +0.13801592588424683,0.0008873589686118066,0.13801592588424683,53949.0,900,2025-10-23 07:58:16.825388,,,,,,,,, +0.13050596415996552,0.0019065983360633254,0.13050596415996552,53999.0,900,2025-10-23 08:06:24.476549,,,,,,,,, +,,,,900,2025-10-23 08:08:00.470254,0.13230982422828674,0.001169663853943348,0.13230982422828674,0.1505051553249359,0.002335469936951995,0.1505051553249359,,, +,,,,900,2025-10-23 08:08:29.420014,,,,,,,0.1409999281167984,0.0021306679118424654,0.1409999281167984 +0.1476573944091797,0.002012992510572076,0.1476573944091797,54049.0,901,2025-10-23 08:17:16.027943,,,,,,,,, +,,,,901,2025-10-23 08:20:29.202858,0.1468377411365509,0.003519205842167139,0.1468377411365509,0.14399774372577667,0.0023018885403871536,0.14399774372577667,,, +,,,,901,2025-10-23 08:20:55.850370,,,,,,,0.13753828406333923,0.0020665705669671297,0.13753828406333923 +0.11809898912906647,0.0008560172864235938,0.11809898912906647,54099.0,902,2025-10-23 08:28:08.389930,,,,,,,,, +,,,,902,2025-10-23 08:32:55.675726,0.1435675323009491,0.0014314959989860654,0.1435675323009491,0.14619627594947815,0.0025072197895497084,0.14619627594947815,,, +,,,,902,2025-10-23 08:33:21.679969,,,,,,,0.13870562613010406,0.002115066396072507,0.13870562613010406 +0.13578911125659943,0.0017717542359605432,0.13578911125659943,54149.0,903,2025-10-23 08:38:51.997539,,,,,,,,, +,,,,903,2025-10-23 08:45:16.119601,0.14688898622989655,0.003602416254580021,0.14688898622989655,0.14919322729110718,0.003065733006224036,0.14919322729110718,,, +,,,,903,2025-10-23 08:45:42.474195,,,,,,,0.1383463591337204,0.0019786753691732883,0.1383463591337204 +0.17928782105445862,0.0013577158097177744,0.17928782105445862,54199.0,904,2025-10-23 08:49:39.711354,,,,,,,,, +,,,,904,2025-10-23 08:57:42.633352,0.13786178827285767,0.0026599939446896315,0.13786178827285767,0.14804832637310028,0.0021956844720989466,0.14804832637310028,,, +,,,,904,2025-10-23 08:58:11.236216,,,,,,,0.13776372373104095,0.002365093445405364,0.13776372373104095 +0.14284299314022064,0.0035538573283702135,0.14284299314022064,54249.0,905,2025-10-23 09:00:30.857851,,,,,,,,, +0.13722467422485352,0.0009740751120261848,0.13722467422485352,54299.0,905,2025-10-23 09:08:37.786321,,,,,,,,, +,,,,905,2025-10-23 09:10:11.473681,0.13548843562602997,0.0011379914358258247,0.13548843562602997,0.14615678787231445,0.0020870219450443983,0.14615678787231445,,, +,,,,905,2025-10-23 09:10:40.122428,,,,,,,0.14084523916244507,0.002175872679799795,0.14084523916244507 +0.1253642439842224,0.0008965341839939356,0.1253642439842224,54349.0,906,2025-10-23 09:19:27.605414,,,,,,,,, +,,,,906,2025-10-23 09:22:41.833618,0.15114468336105347,0.0017230375669896603,0.15114468336105347,0.1332891285419464,0.0019947239197790623,0.1332891285419464,,, +,,,,906,2025-10-23 09:23:31.874483,,,,,,,0.13867372274398804,0.002190511440858245,0.13867372274398804 +0.14213016629219055,0.001751336851157248,0.14213016629219055,54399.0,907,2025-10-23 09:30:37.007462,,,,,,,,, +,,,,907,2025-10-23 09:35:26.335678,0.1414801925420761,0.0028227795846760273,0.1414801925420761,0.14462418854236603,0.0027070853393524885,0.14462418854236603,,, +,,,,907,2025-10-23 09:35:54.393117,,,,,,,0.13809899985790253,0.001837005838751793,0.13809899985790253 +0.12321195751428604,0.0007983804680407047,0.12321195751428604,54449.0,908,2025-10-23 09:41:24.128185,,,,,,,,, +,,,,908,2025-10-23 09:47:51.243894,0.14457650482654572,0.003135568229481578,0.14457650482654572,0.14437344670295715,0.0015066225314512849,0.14437344670295715,,, +,,,,908,2025-10-23 09:48:18.815323,,,,,,,0.13695234060287476,0.002144270110875368,0.13695234060287476 +0.12898829579353333,0.0019726965110749006,0.12898829579353333,54499.0,909,2025-10-23 09:52:13.955494,,,,,,,,, +,,,,909,2025-10-23 10:00:19.164011,0.13780073821544647,0.0018148476956412196,0.13780073821544647,0.14550060033798218,0.0014713873388245702,0.14550060033798218,,, +,,,,909,2025-10-23 10:00:49.067653,,,,,,,0.14164961874485016,0.0023291613906621933,0.14164961874485016 +0.13758210837841034,0.003372764680534601,0.13758210837841034,54549.0,910,2025-10-23 10:03:08.527626,,,,,,,,, +0.12932473421096802,0.0027795855421572924,0.12932473421096802,54599.0,910,2025-10-23 10:11:16.176378,,,,,,,,, +,,,,910,2025-10-23 10:12:50.724278,0.14874301850795746,0.0014181205770000815,0.14874301850795746,0.1354130208492279,0.0021801854018121958,0.1354130208492279,,, +,,,,910,2025-10-23 10:13:19.062812,,,,,,,0.14271068572998047,0.0022275452502071857,0.14271068572998047 +0.151058167219162,0.00423098262399435,0.151058167219162,54649.0,911,2025-10-23 10:22:10.129583,,,,,,,,, +,,,,911,2025-10-23 10:25:21.389850,0.15751561522483826,0.0030791163444519043,0.15751561522483826,0.1434636116027832,0.002242979360744357,0.1434636116027832,,, +,,,,911,2025-10-23 10:25:50.868963,,,,,,,0.13992175459861755,0.002200712449848652,0.13992175459861755 +0.15137742459774017,0.0015821747947484255,0.15137742459774017,54699.0,912,2025-10-23 10:32:59.922755,,,,,,,,, +,,,,912,2025-10-23 10:37:46.998499,0.14460065960884094,0.0022596612107008696,0.14460065960884094,0.14809824526309967,0.0018336413195356727,0.14809824526309967,,, +,,,,912,2025-10-23 10:38:15.218493,,,,,,,0.1384015679359436,0.0021206934470683336,0.1384015679359436 +0.1505616456270218,0.001186800072900951,0.1505616456270218,54749.0,913,2025-10-23 10:43:52.677659,,,,,,,,, +,,,,913,2025-10-23 10:50:18.174334,0.12718766927719116,0.002446021419018507,0.12718766927719116,0.1362992227077484,0.0028964627999812365,0.1362992227077484,,, +,,,,913,2025-10-23 10:50:46.197830,,,,,,,0.14119327068328857,0.0022934044245630503,0.14119327068328857 +0.1330060064792633,0.001408666605129838,0.1330060064792633,54799.0,914,2025-10-23 10:54:37.726874,,,,,,,,, +,,,,914,2025-10-23 11:02:40.486294,0.13926510512828827,0.0014389080461114645,0.13926510512828827,0.14511574804782867,0.0027038229163736105,0.14511574804782867,,, +,,,,914,2025-10-23 11:03:07.832558,,,,,,,0.14057114720344543,0.0019284605514258146,0.14057114720344543 +0.13993293046951294,0.0008461339748464525,0.13993293046951294,54849.0,915,2025-10-23 11:05:29.137220,,,,,,,,, +0.1458727866411209,0.0014353336300700903,0.1458727866411209,54899.0,915,2025-10-23 11:13:36.140599,,,,,,,,, +,,,,915,2025-10-23 11:15:10.541120,0.14219242334365845,0.002491014078259468,0.14219242334365845,0.14351604878902435,0.0014978258404880762,0.14351604878902435,,, +,,,,915,2025-10-23 11:15:39.097406,,,,,,,0.13835489749908447,0.0018905730685219169,0.13835489749908447 +0.13587389886379242,0.0012241414515301585,0.13587389886379242,54949.0,916,2025-10-23 11:24:26.394912,,,,,,,,, +,,,,916,2025-10-23 11:27:39.276740,0.1460668444633484,0.0014188943896442652,0.1460668444633484,0.1516619622707367,0.0016802805475890636,0.1516619622707367,,, +,,,,916,2025-10-23 11:28:08.080641,,,,,,,0.14122584462165833,0.0021035349927842617,0.14122584462165833 +0.13244512677192688,0.0019116675248369575,0.13244512677192688,54999.0,917,2025-10-23 11:35:20.940964,,,,,,,,, +,,,,917,2025-10-23 11:40:08.579842,0.1380438357591629,0.0013063804944977164,0.1380438357591629,0.14970123767852783,0.0020271865651011467,0.14970123767852783,,, +,,,,917,2025-10-23 11:40:37.358774,,,,,,,0.13644778728485107,0.0018217028118669987,0.13644778728485107 +0.15115764737129211,0.0009320875979028642,0.15115764737129211,55049.0,918,2025-10-23 11:46:15.013530,,,,,,,,, +,,,,918,2025-10-23 11:52:42.300462,0.1420036405324936,0.002606526482850313,0.1420036405324936,0.13493730127811432,0.0020473471377044916,0.13493730127811432,,, +,,,,918,2025-10-23 11:53:10.020993,,,,,,,0.13724178075790405,0.002093059942126274,0.13724178075790405 +0.10961703211069107,0.0011426309356465936,0.10961703211069107,55099.0,919,2025-10-23 11:57:05.267333,,,,,,,,, +,,,,919,2025-10-23 12:05:06.858945,0.14084896445274353,0.00134649605024606,0.14084896445274353,0.1421128213405609,0.0016659671673551202,0.1421128213405609,,, +,,,,919,2025-10-23 12:05:34.132485,,,,,,,0.1436733454465866,0.0024033093359321356,0.1436733454465866 +0.13002005219459534,0.0011101245181635022,0.13002005219459534,55149.0,920,2025-10-23 12:07:50.424273,,,,,,,,, +0.1626521646976471,0.0038119922392070293,0.1626521646976471,55199.0,920,2025-10-23 12:15:56.964307,,,,,,,,, +,,,,920,2025-10-23 12:17:29.792447,0.141926571726799,0.001864351681433618,0.141926571726799,0.14260634779930115,0.0022692957427352667,0.14260634779930115,,, +,,,,920,2025-10-23 12:17:57.111684,,,,,,,0.14042121171951294,0.0021175991278141737,0.14042121171951294 +0.12829746305942535,0.0036101127043366432,0.12829746305942535,55249.0,921,2025-10-23 12:26:37.283856,,,,,,,,, +,,,,921,2025-10-23 12:29:50.871559,0.14821557700634003,0.0016595316119492054,0.14821557700634003,0.1421988159418106,0.0018524348270148039,0.1421988159418106,,, +,,,,921,2025-10-23 12:30:19.831174,,,,,,,0.13676363229751587,0.0020984914153814316,0.13676363229751587 +0.14365798234939575,0.001094325794838369,0.14365798234939575,55299.0,922,2025-10-23 12:37:27.425639,,,,,,,,, +,,,,922,2025-10-23 12:42:16.440693,0.1484600454568863,0.0023900459054857492,0.1484600454568863,0.1462058126926422,0.0016991386655718088,0.1462058126926422,,, +,,,,922,2025-10-23 12:42:43.182681,,,,,,,0.13498108088970184,0.002044620458036661,0.13498108088970184 +0.1265091747045517,0.0020472800824791193,0.1265091747045517,55349.0,923,2025-10-23 12:48:14.032086,,,,,,,,, +,,,,923,2025-10-23 12:54:42.331789,0.14723898470401764,0.0025379008147865534,0.14723898470401764,0.13724298775196075,0.0029601112473756075,0.13724298775196075,,, +,,,,923,2025-10-23 12:55:08.606137,,,,,,,0.13887475430965424,0.001943690818734467,0.13887475430965424 +0.16263701021671295,0.006227702368050814,0.16263701021671295,55399.0,924,2025-10-23 12:59:18.080075,,,,,,,,, +,,,,924,2025-10-23 13:07:20.820324,0.1387258917093277,0.0021714025642722845,0.1387258917093277,0.13400645554065704,0.0018568095983937383,0.13400645554065704,,, +,,,,924,2025-10-23 13:07:48.239661,,,,,,,0.1390095353126526,0.0020484006963670254,0.1390095353126526 +0.1439414918422699,0.005001133307814598,0.1439414918422699,55449.0,925,2025-10-23 13:10:13.255538,,,,,,,,, +0.12996935844421387,0.0007500241044908762,0.12996935844421387,55499.0,925,2025-10-23 13:18:20.075090,,,,,,,,, +,,,,925,2025-10-23 13:19:55.444014,0.1438966989517212,0.0026038317009806633,0.1438966989517212,0.14356781542301178,0.0018271052977070212,0.14356781542301178,,, +,,,,925,2025-10-23 13:20:22.867423,,,,,,,0.14043626189231873,0.0021620604675263166,0.14043626189231873 +0.13649971783161163,0.0034042566549032927,0.13649971783161163,55549.0,926,2025-10-23 13:29:13.574035,,,,,,,,, +,,,,926,2025-10-23 13:32:26.141583,0.14517807960510254,0.0026078687515109777,0.14517807960510254,0.14152953028678894,0.0028316339012235403,0.14152953028678894,,, +,,,,926,2025-10-23 13:32:53.609082,,,,,,,0.13845722377300262,0.0019361174199730158,0.13845722377300262 +0.14890426397323608,0.0047586653381586075,0.14890426397323608,55599.0,927,2025-10-23 13:40:07.246178,,,,,,,,, +,,,,927,2025-10-23 13:44:58.698847,0.1377602368593216,0.0027443242724984884,0.1377602368593216,0.13729816675186157,0.0017800618661567569,0.13729816675186157,,, +,,,,927,2025-10-23 13:45:26.256051,,,,,,,0.1393185406923294,0.0024229788687080145,0.1393185406923294 +0.1477537602186203,0.0013337527634575963,0.1477537602186203,55649.0,928,2025-10-23 13:50:56.239451,,,,,,,,, +,,,,928,2025-10-23 13:57:23.575863,0.14275367558002472,0.001829941407777369,0.14275367558002472,0.1433657854795456,0.0027702494990080595,0.1433657854795456,,, +,,,,928,2025-10-23 13:57:50.389104,,,,,,,0.13909408450126648,0.0020457706414163113,0.13909408450126648 +0.13522914052009583,0.002258620224893093,0.13522914052009583,55699.0,929,2025-10-23 14:01:42.740917,,,,,,,,, +,,,,929,2025-10-23 14:09:48.947016,0.12860320508480072,0.002522942842915654,0.12860320508480072,0.1432177871465683,0.002244260162115097,0.1432177871465683,,, +,,,,929,2025-10-23 14:10:17.339615,,,,,,,0.14206242561340332,0.0022269035689532757,0.14206242561340332 +0.1355365663766861,0.001862691598944366,0.1355365663766861,55749.0,930,2025-10-23 14:12:34.981525,,,,,,,,, +0.13135163486003876,0.0010645829606801271,0.13135163486003876,55799.0,930,2025-10-23 14:20:43.453438,,,,,,,,, +,,,,930,2025-10-23 14:22:21.160510,0.14380963146686554,0.0027982385363429785,0.14380963146686554,0.13494855165481567,0.0016367444768548012,0.13494855165481567,,, +,,,,930,2025-10-23 14:22:48.872992,,,,,,,0.1389177292585373,0.0024297304917126894,0.1389177292585373 +0.16128340363502502,0.004909811541438103,0.16128340363502502,55849.0,931,2025-10-23 14:31:34.118366,,,,,,,,, +,,,,931,2025-10-23 14:34:46.027382,0.15272095799446106,0.0026967856101691723,0.15272095799446106,0.12864141166210175,0.002081075916066766,0.12864141166210175,,, +,,,,931,2025-10-23 14:35:38.049445,,,,,,,0.14124631881713867,0.0021424167789518833,0.14124631881713867 +0.14434747397899628,0.001252359594218433,0.14434747397899628,55899.0,932,2025-10-23 14:42:43.448143,,,,,,,,, +,,,,932,2025-10-23 14:47:34.743720,0.14776195585727692,0.0021026076283305883,0.14776195585727692,0.14484618604183197,0.002532604616135359,0.14484618604183197,,, +,,,,932,2025-10-23 14:48:01.917241,,,,,,,0.13985596597194672,0.0022677145898342133,0.13985596597194672 +0.1325402557849884,0.0031439263839274645,0.1325402557849884,55949.0,933,2025-10-23 14:53:41.579627,,,,,,,,, +,,,,933,2025-10-23 15:00:07.697460,0.1453828662633896,0.002824766095727682,0.1453828662633896,0.14860907196998596,0.0015408312901854515,0.14860907196998596,,, +,,,,933,2025-10-23 15:00:36.301094,,,,,,,0.14038990437984467,0.0020328944083303213,0.14038990437984467 +0.1307716816663742,0.0013823502231389284,0.1307716816663742,55999.0,934,2025-10-23 15:04:37.161940,,,,,,,,, +,,,,934,2025-10-23 15:12:44.134727,0.14981989562511444,0.0029826161917299032,0.14981989562511444,0.15890054404735565,0.004494118504226208,0.15890054404735565,,, +,,,,934,2025-10-23 15:13:10.363801,,,,,,,0.1386590152978897,0.0023349302355200052,0.1386590152978897 +0.13774915039539337,0.0012023963499814272,0.13774915039539337,56049.0,935,2025-10-23 15:15:23.784264,,,,,,,,, +0.11927227675914764,0.0016094966558739543,0.11927227675914764,56099.0,935,2025-10-23 15:23:31.938029,,,,,,,,, +,,,,935,2025-10-23 15:25:06.861536,0.14277659356594086,0.0025498762261122465,0.14277659356594086,0.13457204401493073,0.002229830250144005,0.13457204401493073,,, +,,,,935,2025-10-23 15:25:34.050327,,,,,,,0.14011403918266296,0.00224836147390306,0.14011403918266296 +0.16056512296199799,0.001761163119226694,0.16056512296199799,56149.0,936,2025-10-23 15:34:19.342624,,,,,,,,, +,,,,936,2025-10-23 15:37:34.758154,0.146882101893425,0.0024461911525577307,0.146882101893425,0.14599066972732544,0.0018321974202990532,0.14599066972732544,,, +,,,,936,2025-10-23 15:38:02.468271,,,,,,,0.1389053761959076,0.002024067332968116,0.1389053761959076 +0.13888950645923615,0.003924550488591194,0.13888950645923615,56199.0,937,2025-10-23 15:45:20.467072,,,,,,,,, +,,,,937,2025-10-23 15:50:08.486808,0.13871058821678162,0.0026733886916190386,0.13871058821678162,0.1501568853855133,0.0022552672307938337,0.1501568853855133,,, +,,,,937,2025-10-23 15:50:36.930560,,,,,,,0.13960416615009308,0.002348422771319747,0.13960416615009308 +0.142277792096138,0.0016440076287835836,0.142277792096138,56249.0,938,2025-10-23 15:56:12.588233,,,,,,,,, +,,,,938,2025-10-23 16:02:38.433293,0.14893151819705963,0.002588981529697776,0.14893151819705963,0.14482495188713074,0.001848447835072875,0.14482495188713074,,, +,,,,938,2025-10-23 16:03:05.490709,,,,,,,0.1401425451040268,0.0019892004784196615,0.1401425451040268 +0.13688205182552338,0.0017792583676055074,0.13688205182552338,56299.0,939,2025-10-23 16:07:01.887383,,,,,,,,, +,,,,939,2025-10-23 16:15:07.238439,0.15131671726703644,0.002138037234544754,0.15131671726703644,0.15021996200084686,0.001688229269348085,0.15021996200084686,,, +,,,,939,2025-10-23 16:15:34.412651,,,,,,,0.13962280750274658,0.0019108687993139029,0.13962280750274658 +0.15712137520313263,0.0028474058490246534,0.15712137520313263,56349.0,940,2025-10-23 16:18:01.203530,,,,,,,,, +0.1736086755990982,0.0017166942125186324,0.1736086755990982,56399.0,940,2025-10-23 16:26:10.952766,,,,,,,,, +,,,,940,2025-10-23 16:27:43.142891,0.1534372717142105,0.0018115853890776634,0.1534372717142105,0.1491188406944275,0.0018671011785045266,0.1491188406944275,,, +,,,,940,2025-10-23 16:28:15.613736,,,,,,,0.14012254774570465,0.0023022154346108437,0.14012254774570465 +0.13790006935596466,0.0017392727313563228,0.13790006935596466,56449.0,941,2025-10-23 16:37:12.878496,,,,,,,,, +,,,,941,2025-10-23 16:40:24.831555,0.1392950415611267,0.0018220775527879596,0.1392950415611267,0.14264363050460815,0.0018255746690556407,0.14264363050460815,,, +,,,,941,2025-10-23 16:40:51.915552,,,,,,,0.14020496606826782,0.0020587181206792593,0.14020496606826782 +0.12847566604614258,0.0009415687527507544,0.12847566604614258,56499.0,942,2025-10-23 16:48:06.292052,,,,,,,,, +,,,,942,2025-10-23 16:52:56.018724,0.14085613191127777,0.002150007989257574,0.14085613191127777,0.12953108549118042,0.0015211021527647972,0.12953108549118042,,, +,,,,942,2025-10-23 16:53:48.810776,,,,,,,0.140192911028862,0.0020600068382918835,0.140192911028862 +0.14385271072387695,0.0011104485020041466,0.14385271072387695,56549.0,943,2025-10-23 16:59:26.049261,,,,,,,,, +,,,,943,2025-10-23 17:05:52.381811,0.16196522116661072,0.002127245767042041,0.16196522116661072,0.15113049745559692,0.0024207811802625656,0.15113049745559692,,, +,,,,943,2025-10-23 17:06:18.688694,,,,,,,0.13468262553215027,0.0021208387333899736,0.13468262553215027 +0.18316857516765594,0.0028968651313334703,0.18316857516765594,56599.0,944,2025-10-23 17:10:11.949544,,,,,,,,, +,,,,944,2025-10-23 17:18:18.252876,0.1420721560716629,0.001832772046327591,0.1420721560716629,0.14867226779460907,0.0025537675246596336,0.14867226779460907,,, +,,,,944,2025-10-23 17:18:47.726113,,,,,,,0.14016865193843842,0.0020955323707312346,0.14016865193843842 +0.15133418142795563,0.0024689598940312862,0.15133418142795563,56649.0,945,2025-10-23 17:21:09.524117,,,,,,,,, +0.12292633205652237,0.0007817224250175059,0.12292633205652237,56699.0,945,2025-10-23 17:29:19.403049,,,,,,,,, +,,,,945,2025-10-23 17:30:55.714148,0.14479152858257294,0.0022674985229969025,0.14479152858257294,0.13760782778263092,0.002538064494729042,0.13760782778263092,,, +,,,,945,2025-10-23 17:31:23.734097,,,,,,,0.13638798892498016,0.002175985835492611,0.13638798892498016 +0.15450897812843323,0.0063896793872118,0.15450897812843323,56749.0,946,2025-10-23 17:40:19.927928,,,,,,,,, +,,,,946,2025-10-23 17:43:32.633404,0.13311798870563507,0.0015090598026290536,0.13311798870563507,0.13893751800060272,0.0017691089306026697,0.13893751800060272,,, +,,,,946,2025-10-23 17:43:59.628633,,,,,,,0.1350436955690384,0.0019962184596806765,0.1350436955690384 +0.1413090080022812,0.002137892646715045,0.1413090080022812,56799.0,947,2025-10-23 17:51:09.092801,,,,,,,,, +,,,,947,2025-10-23 17:56:05.060956,0.14199204742908478,0.0041936286725103855,0.14199204742908478,0.1398763507604599,0.001874692621640861,0.1398763507604599,,, +,,,,947,2025-10-23 17:56:31.857778,,,,,,,0.13849472999572754,0.001771052135154605,0.13849472999572754 +0.12582744657993317,0.0011542884167283773,0.12582744657993317,56849.0,948,2025-10-23 18:02:11.875062,,,,,,,,, +,,,,948,2025-10-23 18:08:40.329738,0.13482016324996948,0.002312338212504983,0.13482016324996948,0.15001006424427032,0.0036090521607548,0.15001006424427032,,, +,,,,948,2025-10-23 18:09:07.679905,,,,,,,0.13826103508472443,0.0020381060894578695,0.13826103508472443 +0.14337854087352753,0.005709671415388584,0.14337854087352753,56899.0,949,2025-10-23 18:13:02.078122,,,,,,,,, +,,,,949,2025-10-23 18:21:07.746824,0.1316857784986496,0.002226648386567831,0.1316857784986496,0.14506076276302338,0.0024894175585359335,0.14506076276302338,,, +,,,,949,2025-10-23 18:21:35.115674,,,,,,,0.13655239343643188,0.0022267724853008986,0.13655239343643188 +0.13708798587322235,0.001333058811724186,0.13708798587322235,56949.0,950,2025-10-23 18:23:58.347423,,,,,,,,, +0.1235436275601387,0.0005930427578277886,0.1235436275601387,56999.0,950,2025-10-23 18:32:07.371521,,,,,,,,, +,,,,950,2025-10-23 18:33:43.607807,0.14091883599758148,0.001532499329186976,0.14091883599758148,0.1467127948999405,0.002045057248324156,0.1467127948999405,,, +,,,,950,2025-10-23 18:34:10.320162,,,,,,,0.13996517658233643,0.0019158859504386783,0.13996517658233643 +0.12536314129829407,0.0030081546865403652,0.12536314129829407,57049.0,951,2025-10-23 18:43:02.841201,,,,,,,,, +,,,,951,2025-10-23 18:46:15.474572,0.1399591863155365,0.0022714415099471807,0.1399591863155365,0.13821586966514587,0.0018728433642536402,0.13821586966514587,,, +,,,,951,2025-10-23 18:46:46.085105,,,,,,,0.13644282519817352,0.0021979904267936945,0.13644282519817352 +0.15412233769893646,0.0013544250978156924,0.15412233769893646,57099.0,952,2025-10-23 18:54:05.467023,,,,,,,,, +,,,,952,2025-10-23 18:58:56.645896,0.14678184688091278,0.0013426656369119883,0.14678184688091278,0.15213701128959656,0.0020246123895049095,0.15213701128959656,,, +,,,,952,2025-10-23 18:59:24.598455,,,,,,,0.13859520852565765,0.0019130198052152991,0.13859520852565765 +0.11109239608049393,0.0036780068185180426,0.11109239608049393,57149.0,953,2025-10-23 19:05:02.989202,,,,,,,,, +,,,,953,2025-10-23 19:11:29.678745,0.14291319251060486,0.0018436550162732601,0.14291319251060486,0.1423020213842392,0.0020275951828807592,0.1423020213842392,,, +,,,,953,2025-10-23 19:11:57.890980,,,,,,,0.13858391344547272,0.0021966989152133465,0.13858391344547272 +0.15373092889785767,0.0022423863410949707,0.15373092889785767,57199.0,954,2025-10-23 19:15:49.980032,,,,,,,,, +,,,,954,2025-10-23 19:23:57.855688,0.1396539807319641,0.002023765118792653,0.1396539807319641,0.151475727558136,0.002146700629964471,0.151475727558136,,, +,,,,954,2025-10-23 19:24:26.409502,,,,,,,0.13563084602355957,0.00201035151258111,0.13563084602355957 +0.15471656620502472,0.00432616239413619,0.15471656620502472,57249.0,955,2025-10-23 19:26:48.176265,,,,,,,,, +0.14659462869167328,0.004471450578421354,0.14659462869167328,57299.0,955,2025-10-23 19:34:57.463430,,,,,,,,, +,,,,955,2025-10-23 19:36:32.555308,0.14358952641487122,0.0020119633991271257,0.14358952641487122,0.13832572102546692,0.0016009386163204908,0.13832572102546692,,, +,,,,955,2025-10-23 19:37:01.626214,,,,,,,0.13742049038410187,0.0020072043407708406,0.13742049038410187 +0.139059379696846,0.0025139763019979,0.139059379696846,57349.0,956,2025-10-23 19:45:51.683558,,,,,,,,, +,,,,956,2025-10-23 19:49:05.141101,0.146983802318573,0.00374155817553401,0.146983802318573,0.14300690591335297,0.0019487820100039244,0.14300690591335297,,, +,,,,956,2025-10-23 19:49:33.373897,,,,,,,0.13760724663734436,0.00194192910566926,0.13760724663734436 +0.12961488962173462,0.0010061096400022507,0.12961488962173462,57399.0,957,2025-10-23 19:56:44.107561,,,,,,,,, +,,,,957,2025-10-23 20:01:33.062566,0.14609232544898987,0.0018996703438460827,0.14609232544898987,0.14305958151817322,0.0016687517054378986,0.14305958151817322,,, +,,,,957,2025-10-23 20:02:00.508443,,,,,,,0.13497470319271088,0.0020090704783797264,0.13497470319271088 +0.1291678547859192,0.001255153096280992,0.1291678547859192,57449.0,958,2025-10-23 20:07:35.211464,,,,,,,,, +,,,,958,2025-10-23 20:14:05.086903,0.1470763236284256,0.0032810228876769543,0.1470763236284256,0.14997783303260803,0.0015451321378350258,0.14997783303260803,,, +,,,,958,2025-10-23 20:14:33.260812,,,,,,,0.14067624509334564,0.002340018982067704,0.14067624509334564 +0.14283812046051025,0.0018650240963324904,0.14283812046051025,57499.0,959,2025-10-23 20:18:29.712055,,,,,,,,, +,,,,959,2025-10-23 20:26:37.086740,0.13967736065387726,0.0018841350683942437,0.13967736065387726,0.1453874111175537,0.001767212525010109,0.1453874111175537,,, +,,,,959,2025-10-23 20:27:05.202976,,,,,,,0.1371794193983078,0.002083251252770424,0.1371794193983078 +0.16126857697963715,0.0028141760267317295,0.16126857697963715,57549.0,960,2025-10-23 20:29:30.606929,,,,,,,,, +0.13493125140666962,0.001466267043724656,0.13493125140666962,57599.0,960,2025-10-23 20:37:39.614825,,,,,,,,, +,,,,960,2025-10-23 20:39:14.589465,0.14809413254261017,0.002520246896892786,0.14809413254261017,0.13484244048595428,0.001869393978267908,0.13484244048595428,,, +,,,,960,2025-10-23 20:39:42.277035,,,,,,,0.13737797737121582,0.0020825585816055536,0.13737797737121582 +0.10885930061340332,0.0008680244209244847,0.10885930061340332,57649.0,961,2025-10-23 20:48:32.109690,,,,,,,,, +,,,,961,2025-10-23 20:51:45.475687,0.14217720925807953,0.001306452788412571,0.14217720925807953,0.14137005805969238,0.002109975554049015,0.14137005805969238,,, +,,,,961,2025-10-23 20:52:12.945878,,,,,,,0.13793592154979706,0.0018540075980126858,0.13793592154979706 +0.14026081562042236,0.0012538268929347396,0.14026081562042236,57699.0,962,2025-10-23 20:59:33.363551,,,,,,,,, +,,,,962,2025-10-23 21:04:27.004476,0.13893382251262665,0.0020171368960291147,0.13893382251262665,0.14455415308475494,0.0019001415930688381,0.14455415308475494,,, +,,,,962,2025-10-23 21:04:56.075901,,,,,,,0.13780458271503448,0.002016110811382532,0.13780458271503448 +0.14278675615787506,0.0010098556522279978,0.14278675615787506,57749.0,963,2025-10-23 21:10:26.988857,,,,,,,,, +,,,,963,2025-10-23 21:16:55.226336,0.1429261416196823,0.002192875137552619,0.1429261416196823,0.14599545300006866,0.0014216472627595067,0.14599545300006866,,, +,,,,963,2025-10-23 21:17:23.374929,,,,,,,0.1374988555908203,0.0021232168655842543,0.1374988555908203 +0.11680338531732559,0.0008770189015194774,0.11680338531732559,57799.0,964,2025-10-23 21:21:13.849663,,,,,,,,, +,,,,964,2025-10-23 21:29:20.332568,0.1344490796327591,0.001413975958712399,0.1344490796327591,0.13973753154277802,0.0022949378471821547,0.13973753154277802,,, +,,,,964,2025-10-23 21:29:48.863864,,,,,,,0.1434374451637268,0.002487257355824113,0.1434374451637268 +0.14598162472248077,0.002788403769955039,0.14598162472248077,57849.0,965,2025-10-23 21:32:06.284696,,,,,,,,, +0.1551961600780487,0.0051588150672614574,0.1551961600780487,57899.0,965,2025-10-23 21:40:15.802942,,,,,,,,, +,,,,965,2025-10-23 21:41:48.068910,0.1416933536529541,0.0017964495345950127,0.1416933536529541,0.1455308049917221,0.0020515311043709517,0.1455308049917221,,, +,,,,965,2025-10-23 21:42:14.333974,,,,,,,0.13940846920013428,0.0020603840239346027,0.13940846920013428 +0.13260455429553986,0.0011508322786539793,0.13260455429553986,57949.0,966,2025-10-23 21:51:02.886820,,,,,,,,, +,,,,966,2025-10-23 21:54:13.541292,0.13388623297214508,0.002790127182379365,0.13388623297214508,0.13903656601905823,0.00207357294857502,0.13903656601905823,,, +,,,,966,2025-10-23 21:54:42.198067,,,,,,,0.1378210186958313,0.0022060100454837084,0.1378210186958313 +0.1338946670293808,0.0010603365954011679,0.1338946670293808,57999.0,967,2025-10-23 22:01:44.823738,,,,,,,,, +,,,,967,2025-10-23 22:06:34.975819,0.1347329318523407,0.00167262670584023,0.1347329318523407,0.14680801331996918,0.0026096554938703775,0.14680801331996918,,, +,,,,967,2025-10-23 22:07:01.331438,,,,,,,0.13780122995376587,0.001974852290004492,0.13780122995376587 +0.14506182074546814,0.001275249058380723,0.14506182074546814,58049.0,968,2025-10-23 22:12:33.083248,,,,,,,,, +,,,,968,2025-10-23 22:18:59.740039,0.1332303285598755,0.0015880423597991467,0.1332303285598755,0.1472565084695816,0.0023412907030433416,0.1472565084695816,,, +,,,,968,2025-10-23 22:19:27.535427,,,,,,,0.13502837717533112,0.0019820050802081823,0.13502837717533112 +0.1520041823387146,0.002397452713921666,0.1520041823387146,58099.0,969,2025-10-23 22:23:23.633412,,,,,,,,, +,,,,969,2025-10-23 22:31:31.423578,0.14415355026721954,0.002337477169930935,0.14415355026721954,0.15784305334091187,0.001839171163737774,0.15784305334091187,,, +,,,,969,2025-10-23 22:32:00.829198,,,,,,,0.1413644254207611,0.0021780815441161394,0.1413644254207611 +0.13170947134494781,0.0008342448272742331,0.13170947134494781,58149.0,970,2025-10-23 22:34:18.212816,,,,,,,,, +0.15226520597934723,0.00384343764744699,0.15226520597934723,58199.0,970,2025-10-23 22:42:27.368433,,,,,,,,, +,,,,970,2025-10-23 22:44:02.506169,0.1437654048204422,0.003031365806236863,0.1437654048204422,0.1435781866312027,0.0020782575011253357,0.1435781866312027,,, +,,,,970,2025-10-23 22:44:29.956446,,,,,,,0.13665936887264252,0.002156801288947463,0.13665936887264252 +0.14362114667892456,0.0015651686117053032,0.14362114667892456,58249.0,971,2025-10-23 22:53:15.769946,,,,,,,,, +,,,,971,2025-10-23 22:56:29.355762,0.14506074786186218,0.002380230464041233,0.14506074786186218,0.12780168652534485,0.0011293861316516995,0.12780168652534485,,, +,,,,971,2025-10-23 22:57:22.653667,,,,,,,0.14020976424217224,0.0018530536908656359,0.14020976424217224 +0.12850448489189148,0.0006359912804327905,0.12850448489189148,58299.0,972,2025-10-23 23:04:35.121743,,,,,,,,, +,,,,972,2025-10-23 23:09:24.347324,0.14209583401679993,0.0019476329907774925,0.14209583401679993,0.1463223546743393,0.0016329138306900859,0.1463223546743393,,, +,,,,972,2025-10-23 23:09:51.677753,,,,,,,0.13939683139324188,0.002165605314075947,0.13939683139324188 +0.14604823291301727,0.0009710468584671617,0.14604823291301727,58349.0,973,2025-10-23 23:15:25.262704,,,,,,,,, +,,,,973,2025-10-23 23:21:54.490246,0.15127675235271454,0.002672610804438591,0.15127675235271454,0.14908474683761597,0.001815279945731163,0.14908474683761597,,, +,,,,973,2025-10-23 23:22:22.115624,,,,,,,0.13953132927417755,0.0020355619490146637,0.13953132927417755 +0.14957353472709656,0.0012880635913461447,0.14957353472709656,58399.0,974,2025-10-23 23:26:19.012232,,,,,,,,, +,,,,974,2025-10-23 23:34:22.282880,0.13863226771354675,0.003185954876244068,0.13863226771354675,0.1344468891620636,0.0017801944632083178,0.1344468891620636,,, +,,,,974,2025-10-23 23:34:48.406244,,,,,,,0.139629065990448,0.0020923821721225977,0.139629065990448 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/tf/events.out.tfevents.1761169045.node-0.2007.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/tf/events.out.tfevents.1761169045.node-0.2007.0 new file mode 100644 index 0000000000000000000000000000000000000000..e2680000b4d8425d1b6d26512dd4e493feac1967 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/tf/events.out.tfevents.1761169045.node-0.2007.0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:391716fc6210ca40d5ec96cf07bb8a38827bfefbb6c0fc411bd5e281353b1a8a +size 113628 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/meta.experiment new file mode 100644 index 0000000000000000000000000000000000000000..5987f2780b7c554cfc8b251b2065844c04c65cd7 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/meta.experiment @@ -0,0 +1 @@ +{"name": "testtube", "version": 5, "tags_path": "./logs/full_ct_2d_with_body_mask/testtube/version_5/meta_tags.csv", "metrics_path": "./logs/full_ct_2d_with_body_mask/testtube/version_5/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-23 23:45:22.329215", "exp_hash": "testtube_v5"} \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/meta_tags.csv new file mode 100644 index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/meta_tags.csv @@ -0,0 +1 @@ +key,value diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/metrics.csv new file mode 100644 index 0000000000000000000000000000000000000000..94b1708b73d0efbb42a849a5fa2b82ef63e5b896 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/metrics.csv @@ -0,0 +1,58 @@ +train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch +0.10376232117414474,0.0011874426854774356,0.10376232117414474,58449.0,975,2025-10-23 23:48:45.859025,,,,,,,,, +0.1376160979270935,0.0009893311653286219,0.1376160979270935,58499.0,975,2025-10-23 23:53:12.633468,,,,,,,,, +,,,,975,2025-10-23 23:54:56.783826,0.146501362323761,0.002103132661432028,0.146501362323761,0.1440238356590271,0.0024038671981543303,0.1440238356590271,,, +,,,,975,2025-10-23 23:55:42.844033,,,,,,,0.14002631604671478,0.0022802201565355062,0.14002631604671478 +0.11780519783496857,0.0008531212224625051,0.11780519783496857,58549.0,976,2025-10-24 00:01:35.671148,,,,,,,,, +,,,,976,2025-10-24 00:03:47.535517,0.1490544229745865,0.0014403050299733877,0.1490544229745865,0.14137206971645355,0.002475745975971222,0.14137206971645355,,, +,,,,976,2025-10-24 00:04:31.349664,,,,,,,0.1340680867433548,0.0018872945802286267,0.1340680867433548 +0.1268472671508789,0.0012182367499917746,0.1268472671508789,58599.0,977,2025-10-24 00:09:23.530722,,,,,,,,, +,,,,977,2025-10-24 00:12:32.695560,0.1470133364200592,0.002303734654560685,0.1470133364200592,0.15435980260372162,0.002025018213316798,0.15435980260372162,,, +,,,,977,2025-10-24 00:13:20.363321,,,,,,,0.13653665781021118,0.002189493039622903,0.13653665781021118 +0.12188297510147095,0.0012670970754697919,0.12188297510147095,58649.0,978,2025-10-24 00:17:28.708819,,,,,,,,, +,,,,978,2025-10-24 00:21:42.658621,0.13395628333091736,0.0018379344837740064,0.13395628333091736,0.14981919527053833,0.0019876938313245773,0.14981919527053833,,, +,,,,978,2025-10-24 00:22:28.691534,,,,,,,0.13910190761089325,0.0022085905075073242,0.13910190761089325 +0.16962584853172302,0.0013141128001734614,0.16962584853172302,58699.0,979,2025-10-24 00:25:35.533814,,,,,,,,, +,,,,979,2025-10-24 00:30:45.246154,0.13679517805576324,0.0017422946402803063,0.13679517805576324,0.13949060440063477,0.0018563269404694438,0.13949060440063477,,, +,,,,979,2025-10-24 00:31:27.340069,,,,,,,0.13735413551330566,0.002018246566876769,0.13735413551330566 +0.1376735121011734,0.001960964407771826,0.1376735121011734,58749.0,980,2025-10-24 00:33:18.747848,,,,,,,,, +0.15060025453567505,0.0025492000859230757,0.15060025453567505,58799.0,980,2025-10-24 00:37:45.311842,,,,,,,,, +,,,,980,2025-10-24 00:39:11.898990,0.1484805941581726,0.0024184961803257465,0.1484805941581726,0.13734416663646698,0.002988972468301654,0.13734416663646698,,, +,,,,980,2025-10-24 00:39:54.146823,,,,,,,0.14063923060894012,0.0023303090129047632,0.14063923060894012 +0.13563629984855652,0.0008462193654850125,0.13563629984855652,58849.0,981,2025-10-24 00:45:54.536691,,,,,,,,, +,,,,981,2025-10-24 00:48:03.836362,0.1521160751581192,0.003023835364729166,0.1521160751581192,0.14802315831184387,0.0021694430615752935,0.14802315831184387,,, +,,,,981,2025-10-24 00:48:26.771754,,,,,,,0.13842804729938507,0.0020502880215644836,0.13842804729938507 +0.15325336158275604,0.004447381477802992,0.15325336158275604,58899.0,982,2025-10-24 00:53:20.763851,,,,,,,,, +,,,,982,2025-10-24 00:56:39.024413,0.14677166938781738,0.0019485036609694362,0.14677166938781738,0.1409015953540802,0.002666572807356715,0.1409015953540802,,, +,,,,982,2025-10-24 00:57:26.891483,,,,,,,0.13836072385311127,0.002137865638360381,0.13836072385311127 +0.1435658484697342,0.0015163833741098642,0.1435658484697342,58949.0,983,2025-10-24 01:01:42.832817,,,,,,,,, +,,,,983,2025-10-24 01:05:40.612967,0.13949793577194214,0.00226168823428452,0.13949793577194214,0.13901643455028534,0.0031359530985355377,0.13901643455028534,,, +,,,,983,2025-10-24 01:06:26.560305,,,,,,,0.14032447338104248,0.0019738911651074886,0.14032447338104248 +0.11443335562944412,0.0006982592167332768,0.11443335562944412,58999.0,984,2025-10-24 01:09:23.055176,,,,,,,,, +,,,,984,2025-10-24 01:14:31.135024,0.15093085169792175,0.002014117781072855,0.15093085169792175,0.1469760686159134,0.0030132359825074673,0.1469760686159134,,, +,,,,984,2025-10-24 01:14:54.223028,,,,,,,0.14017131924629211,0.00221004756167531,0.14017131924629211 +0.1557450294494629,0.001248041051439941,0.1557450294494629,59049.0,985,2025-10-24 01:16:56.419884,,,,,,,,, +0.12099650502204895,0.0011680766474455595,0.12099650502204895,59099.0,985,2025-10-24 01:21:31.555348,,,,,,,,, +,,,,985,2025-10-24 01:23:02.064220,0.1373196244239807,0.0021863861475139856,0.1373196244239807,0.14678868651390076,0.002605891553685069,0.14678868651390076,,, +,,,,985,2025-10-24 01:23:26.980556,,,,,,,0.13840238749980927,0.0021030555944889784,0.13840238749980927 +0.14090432226657867,0.00397832877933979,0.14090432226657867,59149.0,986,2025-10-24 01:29:08.500359,,,,,,,,, +,,,,986,2025-10-24 01:31:19.775677,0.1445513665676117,0.0015559731982648373,0.1445513665676117,0.14746913313865662,0.00246713706292212,0.14746913313865662,,, +,,,,986,2025-10-24 01:31:43.289168,,,,,,,0.13629946112632751,0.002017610240727663,0.13629946112632751 +0.1304279863834381,0.0012789544416591525,0.1304279863834381,59199.0,987,2025-10-24 01:36:30.661618,,,,,,,,, +,,,,987,2025-10-24 01:39:36.108681,0.15231899917125702,0.0023317642044276,0.15231899917125702,0.1502625197172165,0.0018090636003762484,0.1502625197172165,,, +,,,,987,2025-10-24 01:39:59.926716,,,,,,,0.138188898563385,0.002381181577220559,0.138188898563385 +0.1373070627450943,0.0034957772586494684,0.1373070627450943,59249.0,988,2025-10-24 01:44:02.057406,,,,,,,,, +,,,,988,2025-10-24 01:48:05.572552,0.1460200399160385,0.001884416793473065,0.1460200399160385,0.1406342089176178,0.002731925342231989,0.1406342089176178,,, +,,,,988,2025-10-24 01:48:29.098137,,,,,,,0.1344173401594162,0.0022603103425353765,0.1344173401594162 +0.1569167524576187,0.0015630788402631879,0.1569167524576187,59299.0,989,2025-10-24 01:51:21.875532,,,,,,,,, +,,,,989,2025-10-24 01:56:15.080944,0.1348661184310913,0.0021702225785702467,0.1348661184310913,0.13960318267345428,0.002977778436616063,0.13960318267345428,,, +,,,,989,2025-10-24 01:56:39.077749,,,,,,,0.14086267352104187,0.002397906268015504,0.14086267352104187 +0.09795030951499939,0.0005347232217900455,0.09795030951499939,59349.0,990,2025-10-24 01:58:28.695591,,,,,,,,, +0.11007256805896759,0.0005945079028606415,0.11007256805896759,59399.0,990,2025-10-24 02:04:27.058686,,,,,,,,, +,,,,990,2025-10-24 02:05:56.264070,0.13908278942108154,0.001878201961517334,0.13908278942108154,0.14290684461593628,0.0021287184208631516,0.14290684461593628,,, +,,,,990,2025-10-24 02:06:24.449504,,,,,,,0.13715395331382751,0.002044137567281723,0.13715395331382751 +0.1362304836511612,0.0027325700502842665,0.1362304836511612,59449.0,991,2025-10-24 02:11:51.822341,,,,,,,,, +,,,,991,2025-10-24 02:14:13.581665,0.140048548579216,0.0014037684304639697,0.140048548579216,0.1472512185573578,0.0017766206292435527,0.1472512185573578,,, +,,,,991,2025-10-24 02:14:37.483797,,,,,,,0.13666266202926636,0.0020140609703958035,0.13666266202926636 +0.1509564071893692,0.0018455510726198554,0.1509564071893692,59499.0,992,2025-10-24 02:19:31.329981,,,,,,,,, +,,,,992,2025-10-24 02:22:31.795010,0.1403975784778595,0.0019323346205055714,0.1403975784778595,0.13499930500984192,0.0017993706278502941,0.13499930500984192,,, diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/tf/events.out.tfevents.1761263122.node-0.1856.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/tf/events.out.tfevents.1761263122.node-0.1856.0 new file mode 100644 index 0000000000000000000000000000000000000000..83c7b97db89176d6094a89a5c6144f49b9fd9017 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/tf/events.out.tfevents.1761263122.node-0.1856.0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c7047efc2fdb280032744c86115ea7fdd8a64b9c73ee45c2c95865cb1b179ea +size 16486 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/meta.experiment new file mode 100644 index 0000000000000000000000000000000000000000..a4f367b8924d8fec212a0c8d60dc3bc20eb4b279 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/meta.experiment @@ -0,0 +1 @@ +{"name": "testtube", "version": 6, "tags_path": "./logs/full_ct_2d_with_body_mask/testtube/version_6/meta_tags.csv", "metrics_path": "./logs/full_ct_2d_with_body_mask/testtube/version_6/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-24 02:56:57.492516", "exp_hash": "testtube_v6"} \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/meta_tags.csv new file mode 100644 index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/meta_tags.csv @@ -0,0 +1 @@ +key,value diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/metrics.csv new file mode 100644 index 0000000000000000000000000000000000000000..5a742b46bcae83343671d7b1d354de4a799df4a7 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/metrics.csv @@ -0,0 +1,26 @@ +train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch +0.15441398322582245,0.002840145491063595,0.15441398322582245,59499.0,992,2025-10-24 03:04:50.026670,,,,,,,,, +,,,,992,2025-10-24 03:08:39.323894,0.14646078646183014,0.002105276333168149,0.14646078646183014,0.14388200640678406,0.0024024697486311197,0.14388200640678406,,, +,,,,992,2025-10-24 03:09:35.164963,,,,,,,0.13825468719005585,0.002229604870080948,0.13825468719005585 +0.11315738409757614,0.0007083957316353917,0.11315738409757614,59549.0,993,2025-10-24 03:14:20.875935,,,,,,,,, +,,,,993,2025-10-24 03:18:55.943681,0.14882779121398926,0.0014390697469934821,0.14882779121398926,0.14122608304023743,0.002474192762747407,0.14122608304023743,,, +,,,,993,2025-10-24 03:19:52.206548,,,,,,,0.13841353356838226,0.0019776816479861736,0.13841353356838226 +0.12212955206632614,0.0007821907638572156,0.12212955206632614,59599.0,994,2025-10-24 03:23:07.400847,,,,,,,,, +,,,,994,2025-10-24 03:29:02.380584,0.14696665108203888,0.00231094378978014,0.14696665108203888,0.1542108952999115,0.0020237055141478777,0.1542108952999115,,, +,,,,994,2025-10-24 03:29:59.315498,,,,,,,0.13573606312274933,0.002119989600032568,0.13573606312274933 +0.13995066285133362,0.0018276870250701904,0.13995066285133362,59649.0,995,2025-10-24 03:32:10.039890,,,,,,,,, +0.14861221611499786,0.0016502938233315945,0.14861221611499786,59699.0,995,2025-10-24 03:37:24.827081,,,,,,,,, +,,,,995,2025-10-24 03:39:09.528957,0.13413377106189728,0.0018440637504681945,0.13413377106189728,0.14967529475688934,0.001986463787034154,0.14967529475688934,,, +,,,,995,2025-10-24 03:40:11.189238,,,,,,,0.1395634412765503,0.002197933616116643,0.1395634412765503 +0.13518260419368744,0.0013862464111298323,0.13518260419368744,59749.0,996,2025-10-24 03:47:18.175031,,,,,,,,, +,,,,996,2025-10-24 03:49:48.275252,0.1366690993309021,0.0017410059226676822,0.1366690993309021,0.13935106992721558,0.0018551669782027602,0.13935106992721558,,, +,,,,996,2025-10-24 03:50:47.165223,,,,,,,0.1395457237958908,0.0019947877153754234,0.1395457237958908 +0.1148628294467926,0.001895926077850163,0.1148628294467926,59799.0,997,2025-10-24 03:56:37.534222,,,,,,,,, +,,,,997,2025-10-24 04:00:04.438954,0.14820845425128937,0.002416043309494853,0.14820845425128937,0.13719691336154938,0.002987025771290064,0.13719691336154938,,, +,,,,997,2025-10-24 04:01:08.797648,,,,,,,0.1378212720155716,0.0023184618912637234,0.1378212720155716 +0.12497390061616898,0.0007317858398891985,0.12497390061616898,59849.0,998,2025-10-24 04:05:40.035669,,,,,,,,, +,,,,998,2025-10-24 04:10:28.864545,0.15207539498806,0.0030243913643062115,0.15207539498806,0.14787626266479492,0.002168182982131839,0.14787626266479492,,, +,,,,998,2025-10-24 04:11:01.263927,,,,,,,0.1411110758781433,0.002077828859910369,0.1411110758781433 +0.15764649212360382,0.004788633435964584,0.15764649212360382,59899.0,999,2025-10-24 04:14:22.591767,,,,,,,,, +,,,,999,2025-10-24 04:19:53.143035,0.14654281735420227,0.0019450937397778034,0.14654281735420227,0.14076517522335052,0.002665100386366248,0.14076517522335052,,, +,,,,999,2025-10-24 04:20:54.025426,,,,,,,0.14018510282039642,0.0021877330727875233,0.14018510282039642 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/tf/events.out.tfevents.1761274618.node-0.4798.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/tf/events.out.tfevents.1761274618.node-0.4798.0 new file mode 100644 index 0000000000000000000000000000000000000000..b2e30e7c45eb194c9c7c19e2c808a3b07d3d426f --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/tf/events.out.tfevents.1761274618.node-0.4798.0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ac810efb31ad359df1d3442ce9b8e2cd24fb2ffcc22f64fb9ed1651fe0e067a +size 7264 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/meta.experiment new file mode 100644 index 0000000000000000000000000000000000000000..900691b41d041202582a76fd164ac2e7b3aba59f --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/meta.experiment @@ -0,0 +1 @@ +{"name": "testtube", "version": 7, "tags_path": "./logs/full_ct_2d_with_body_mask/testtube/version_7/meta_tags.csv", "metrics_path": "./logs/full_ct_2d_with_body_mask/testtube/version_7/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-28 22:00:31.058428", "exp_hash": "testtube_v7"} \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/meta_tags.csv new file mode 100644 index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/meta_tags.csv @@ -0,0 +1 @@ +key,value diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/metrics.csv new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/metrics.csv @@ -0,0 +1 @@ + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/tf/events.out.tfevents.1761688833.node-0.2119.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/tf/events.out.tfevents.1761688833.node-0.2119.0 new file mode 100644 index 0000000000000000000000000000000000000000..9dbee96e74d071733bc9ca6474b5274a59b76eb6 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/tf/events.out.tfevents.1761688833.node-0.2119.0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab18358f20cf446109c6a7bc48a50cc021d9008320488d67408429bae0f91359 +size 88 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/checkpoints/epoch=000024.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/checkpoints/epoch=000024.ckpt new file mode 100644 index 0000000000000000000000000000000000000000..59608bbc9b82472f8052a2eaf03c5078c57e8379 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/checkpoints/epoch=000024.ckpt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5aa000fdc0bd4e468831e74ab3cde3d5d0aa525fb93c7cc445b33f098aac7eed +size 7325158558 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/checkpoints/last.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/checkpoints/last.ckpt new file mode 100644 index 0000000000000000000000000000000000000000..0511745621efd011295063e3900446f36dc0acd1 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/checkpoints/last.ckpt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c50672fe9883e376e0f26ef05c4e55bdb0f3a39f5cfcbec05adb6682f2cae5f +size 7325158558 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-28T21-59-42-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-28T21-59-42-lightning.yaml new file mode 100644 index 0000000000000000000000000000000000000000..af576c4f4222ea130206951d1e6274cd32183a05 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-28T21-59-42-lightning.yaml @@ -0,0 +1,12 @@ +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: false + trainer: + benchmark: true + accelerator: ddp + gpus: 0,1,2,3, diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-28T21-59-42-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-28T21-59-42-project.yaml new file mode 100644 index 0000000000000000000000000000000000000000..7a7dab1599480e5a6916b98ec6bfe915d873b0d5 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-28T21-59-42-project.yaml @@ -0,0 +1,58 @@ +model: + base_learning_rate: 5.0e-07 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.012 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + conditioning_key: crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.5 + use_ema: true + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 32 + out_channels: 16 + model_channels: 224 + attention_resolutions: + - 8 + - 4 + - 2 + num_res_blocks: 2 + channel_mult: + - 1 + - 2 + - 3 + - 4 + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: true + legacy: false +data: + target: main.DataModuleFromConfig + params: + batch_size: 8 + num_workers: 12 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv + labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T03-06-33-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T03-06-33-lightning.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1b0338aead6c797df75ee541d54de45b0d63accf --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T03-06-33-lightning.yaml @@ -0,0 +1,13 @@ +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: false + trainer: + benchmark: true + accelerator: ddp + gpus: 0,1,2,3, + resume_from_checkpoint: ./logs/full_ct_2d_with_body_mask2/checkpoints/last.ckpt diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T03-06-33-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T03-06-33-project.yaml new file mode 100644 index 0000000000000000000000000000000000000000..7a7dab1599480e5a6916b98ec6bfe915d873b0d5 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T03-06-33-project.yaml @@ -0,0 +1,58 @@ +model: + base_learning_rate: 5.0e-07 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.012 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + conditioning_key: crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.5 + use_ema: true + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 32 + out_channels: 16 + model_channels: 224 + attention_resolutions: + - 8 + - 4 + - 2 + num_res_blocks: 2 + channel_mult: + - 1 + - 2 + - 3 + - 4 + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: true + legacy: false +data: + target: main.DataModuleFromConfig + params: + batch_size: 8 + num_workers: 12 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv + labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-26-38-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-26-38-lightning.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1b0338aead6c797df75ee541d54de45b0d63accf --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-26-38-lightning.yaml @@ -0,0 +1,13 @@ +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: false + trainer: + benchmark: true + accelerator: ddp + gpus: 0,1,2,3, + resume_from_checkpoint: ./logs/full_ct_2d_with_body_mask2/checkpoints/last.ckpt diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-26-38-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-26-38-project.yaml new file mode 100644 index 0000000000000000000000000000000000000000..7a7dab1599480e5a6916b98ec6bfe915d873b0d5 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-26-38-project.yaml @@ -0,0 +1,58 @@ +model: + base_learning_rate: 5.0e-07 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.012 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + conditioning_key: crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.5 + use_ema: true + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 32 + out_channels: 16 + model_channels: 224 + attention_resolutions: + - 8 + - 4 + - 2 + num_res_blocks: 2 + channel_mult: + - 1 + - 2 + - 3 + - 4 + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: true + legacy: false +data: + target: main.DataModuleFromConfig + params: + batch_size: 8 + num_workers: 12 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv + labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-50-09-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-50-09-lightning.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1b0338aead6c797df75ee541d54de45b0d63accf --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-50-09-lightning.yaml @@ -0,0 +1,13 @@ +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: false + trainer: + benchmark: true + accelerator: ddp + gpus: 0,1,2,3, + resume_from_checkpoint: ./logs/full_ct_2d_with_body_mask2/checkpoints/last.ckpt diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-50-09-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-50-09-project.yaml new file mode 100644 index 0000000000000000000000000000000000000000..7a7dab1599480e5a6916b98ec6bfe915d873b0d5 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-50-09-project.yaml @@ -0,0 +1,58 @@ +model: + base_learning_rate: 5.0e-07 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.012 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + conditioning_key: crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.5 + use_ema: true + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 64 + in_channels: 32 + out_channels: 16 + model_channels: 224 + attention_resolutions: + - 8 + - 4 + - 2 + num_res_blocks: 2 + channel_mult: + - 1 + - 2 + - 3 + - 4 + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: true + legacy: false +data: + target: main.DataModuleFromConfig + params: + batch_size: 8 + num_workers: 12 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv + labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/meta.experiment new file mode 100644 index 0000000000000000000000000000000000000000..f3a4e80e896d9e74bb8aecb2d5408e1f18342b13 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/meta.experiment @@ -0,0 +1 @@ +{"name": "testtube", "version": 0, "tags_path": "logs/full_ct_2d_with_body_mask2/testtube/version_0/meta_tags.csv", "metrics_path": "logs/full_ct_2d_with_body_mask2/testtube/version_0/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-28 22:00:11.295334", "exp_hash": "testtube_v0"} \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/meta_tags.csv new file mode 100644 index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/meta_tags.csv @@ -0,0 +1 @@ +key,value diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/metrics.csv new file mode 100644 index 0000000000000000000000000000000000000000..2c774e7e3585841ecb66bb23a8e095aad11dfb7c --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/metrics.csv @@ -0,0 +1,44 @@ +train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch +0.9308006167411804,0.006328666117042303,0.9308006167411804,49.0,0,2025-10-28 22:12:32.321104,,,,,,,,, +0.8248870372772217,0.00485704280436039,0.8248870372772217,99.0,0,2025-10-28 22:20:08.435387,,,,,,,,, +0.7291226387023926,0.004419628530740738,0.7291226387023926,149.0,0,2025-10-28 22:27:44.200715,,,,,,,,, +,,,,0,2025-10-28 22:32:19.634806,0.7057442665100098,0.004881200846284628,0.7057442665100098,0.7366036176681519,0.005252678878605366,0.7366036176681519,,, +,,,,0,2025-10-28 22:33:21.569766,,,,,,,0.8636050224304199,0.006393211428076029,0.8636050224304199 +0.6498528122901917,0.006078140810132027,0.6498528122901917,199.0,1,2025-10-28 22:41:36.645069,,,,,,,,, +0.5669978260993958,0.0039938511326909065,0.5669978260993958,249.0,1,2025-10-28 22:49:13.255648,,,,,,,,, +0.5180029273033142,0.002655648160725832,0.5180029273033142,299.0,1,2025-10-28 22:56:49.279813,,,,,,,,, +,,,,1,2025-10-28 23:02:59.048566,0.5082671642303467,0.0038864908274263144,0.5082671642303467,0.5423380136489868,0.005225677043199539,0.5423380136489868,,, +,,,,1,2025-10-28 23:04:01.897657,,,,,,,0.5978487133979797,0.005454601254314184,0.5978487133979797 +0.47975870966911316,0.006420143414288759,0.47975870966911316,349.0,2,2025-10-28 23:10:37.562506,,,,,,,,, +0.42965826392173767,0.002505088457837701,0.42965826392173767,399.0,2,2025-10-28 23:18:15.961105,,,,,,,,, +0.4051905870437622,0.0027605474460870028,0.4051905870437622,449.0,2,2025-10-28 23:25:53.020824,,,,,,,,, +,,,,2,2025-10-28 23:33:27.360792,0.41036123037338257,0.004421724006533623,0.41036123037338257,0.43286117911338806,0.003919557668268681,0.43286117911338806,,, +,,,,2,2025-10-28 23:34:32.737278,,,,,,,0.4488810896873474,0.004487758502364159,0.4488810896873474 +0.4011790454387665,0.00452469103038311,0.4011790454387665,499.0,3,2025-10-28 23:40:44.035414,,,,,,,,, +0.3652472198009491,0.004205006640404463,0.3652472198009491,549.0,3,2025-10-28 23:51:40.527314,,,,,,,,, +0.3643805682659149,0.004374014213681221,0.3643805682659149,599.0,3,2025-10-29 00:01:46.674435,,,,,,,,, +,,,,3,2025-10-29 00:10:54.000832,0.3498455286026001,0.004479421302676201,0.3498455286026001,0.37157776951789856,0.003918090369552374,0.37157776951789856,,, +,,,,3,2025-10-29 00:12:00.096631,,,,,,,0.37450432777404785,0.004115817602723837,0.37450432777404785 +0.34504032135009766,0.0032439308706671,0.34504032135009766,649.0,4,2025-10-29 00:17:19.208441,,,,,,,,, +0.33045345544815063,0.004572540521621704,0.33045345544815063,699.0,4,2025-10-29 00:25:03.143851,,,,,,,,, +0.3201521039009094,0.002511276863515377,0.3201521039009094,749.0,4,2025-10-29 00:33:12.733658,,,,,,,,, +,,,,4,2025-10-29 00:44:14.048796,0.3274407982826233,0.004004297312349081,0.3274407982826233,0.33423900604248047,0.003936890512704849,0.33423900604248047,,, +,,,,4,2025-10-29 00:45:18.623629,,,,,,,0.32804879546165466,0.003798361402004957,0.32804879546165466 +0.30016836524009705,0.005610479041934013,0.30016836524009705,799.0,5,2025-10-29 00:50:34.963761,,,,,,,,, +0.33577167987823486,0.002287663985043764,0.33577167987823486,849.0,5,2025-10-29 00:58:11.027246,,,,,,,,, +0.31735748052597046,0.0033484825398772955,0.31735748052597046,899.0,5,2025-10-29 01:06:55.292118,,,,,,,,, +0.3124011754989624,0.010142073966562748,0.3124011754989624,949.0,5,2025-10-29 01:16:49.161550,,,,,,,,, +,,,,5,2025-10-29 01:25:08.488633,0.3245115280151367,0.0056076948530972,0.3245115280151367,0.312978595495224,0.0034309702459722757,0.312978595495224,,, +,,,,5,2025-10-29 01:26:14.726268,,,,,,,0.31032294034957886,0.004069593269377947,0.31032294034957886 +0.278347909450531,0.009343701414763927,0.278347909450531,999.0,6,2025-10-29 01:37:25.175876,,,,,,,,, +0.3004944324493408,0.002899531275033951,0.3004944324493408,1049.0,6,2025-10-29 01:45:14.762152,,,,,,,,, +0.2853686511516571,0.0014941416447982192,0.2853686511516571,1099.0,6,2025-10-29 01:52:52.768651,,,,,,,,, +,,,,6,2025-10-29 01:57:57.606683,0.28671982884407043,0.004130441229790449,0.28671982884407043,0.2842036485671997,0.0035266587510704994,0.2842036485671997,,, +,,,,6,2025-10-29 01:59:08.276090,,,,,,,0.2971835136413574,0.0037855978589504957,0.2971835136413574 +0.2772462069988251,0.004923250991851091,0.2772462069988251,1149.0,7,2025-10-29 02:06:57.472564,,,,,,,,, +0.3215959668159485,0.0056651621125638485,0.3215959668159485,1199.0,7,2025-10-29 02:14:46.066537,,,,,,,,, +0.29026827216148376,0.0017915136413648725,0.29026827216148376,1249.0,7,2025-10-29 02:24:31.114151,,,,,,,,, +,,,,7,2025-10-29 02:30:52.586203,0.2885715961456299,0.0032384563237428665,0.2885715961456299,0.2989098131656647,0.004297069273889065,0.2989098131656647,,, +,,,,7,2025-10-29 02:32:02.608150,,,,,,,0.28762364387512207,0.00409694155678153,0.28762364387512207 +0.29342150688171387,0.008097373880445957,0.29342150688171387,1299.0,8,2025-10-29 02:39:15.683347,,,,,,,,, +0.31727340817451477,0.00843045860528946,0.31727340817451477,1349.0,8,2025-10-29 02:46:52.484226,,,,,,,,, diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/tf/events.out.tfevents.1761688811.node-0.1903.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/tf/events.out.tfevents.1761688811.node-0.1903.0 new file mode 100644 index 0000000000000000000000000000000000000000..64487637f6c49c9a24df1cf3de6775f3460478a1 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/tf/events.out.tfevents.1761688811.node-0.1903.0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f53d81d6eba8474edde7196ff60b1ef34c2fbf24b8dd23fc8764c75bd29adf7c +size 11927 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/meta.experiment new file mode 100644 index 0000000000000000000000000000000000000000..2fcc9c0a9a8024433bd81eff5d030fabae334e83 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/meta.experiment @@ -0,0 +1 @@ +{"name": "testtube", "version": 1, "tags_path": "./logs/full_ct_2d_with_body_mask2/testtube/version_1/meta_tags.csv", "metrics_path": "./logs/full_ct_2d_with_body_mask2/testtube/version_1/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-29 03:08:07.294144", "exp_hash": "testtube_v1"} \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/meta_tags.csv new file mode 100644 index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/meta_tags.csv @@ -0,0 +1 @@ +key,value diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/metrics.csv new file mode 100644 index 0000000000000000000000000000000000000000..c5f1ec3964f80b2efe9203d1ad2c8620785f55fa --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/metrics.csv @@ -0,0 +1,32 @@ +train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch +0.29299309849739075,0.0030174613930284977,0.29299309849739075,1299.0,8,2025-10-29 03:15:56.712519,,,,,,,,, +0.2922252118587494,0.0023969202302396297,0.2922252118587494,1349.0,8,2025-10-29 03:23:36.851501,,,,,,,,, +0.2941399812698364,0.005256693344563246,0.2941399812698364,1399.0,8,2025-10-29 03:31:13.710718,,,,,,,,, +,,,,8,2025-10-29 03:38:45.305139,0.2800214886665344,0.0029390372801572084,0.2800214886665344,0.28796035051345825,0.00320618087425828,0.28796035051345825,,, +,,,,8,2025-10-29 03:39:57.847977,,,,,,,0.2833901643753052,0.0037843426689505577,0.2833901643753052 +0.2955283522605896,0.010838845744729042,0.2955283522605896,1449.0,9,2025-10-29 03:44:04.398558,,,,,,,,, +0.25189337134361267,0.00123148737475276,0.25189337134361267,1499.0,9,2025-10-29 03:51:41.032600,,,,,,,,, +0.3105628192424774,0.0034697900991886854,0.3105628192424774,1549.0,9,2025-10-29 03:59:20.254668,,,,,,,,, +,,,,9,2025-10-29 04:07:39.576912,0.28061655163764954,0.0028339247219264507,0.28061655163764954,0.28824737668037415,0.004021476022899151,0.28824737668037415,,, +,,,,9,2025-10-29 04:08:49.069342,,,,,,,0.28092116117477417,0.003946899902075529,0.28092116117477417 +0.26574164628982544,0.0023798642214387655,0.26574164628982544,1599.0,10,2025-10-29 04:11:29.246727,,,,,,,,, +0.2814885973930359,0.002931951778009534,0.2814885973930359,1649.0,10,2025-10-29 04:19:08.580363,,,,,,,,, +0.2732048034667969,0.004097959958016872,0.2732048034667969,1699.0,10,2025-10-29 04:26:44.849512,,,,,,,,, +,,,,10,2025-10-29 04:36:33.137682,0.28593504428863525,0.003808710491284728,0.28593504428863525,0.2851716876029968,0.003219271544367075,0.2851716876029968,,, +,,,,10,2025-10-29 04:37:41.417671,,,,,,,0.2754996418952942,0.0036609978415071964,0.2754996418952942 +0.2558787167072296,0.001514984993264079,0.2558787167072296,1749.0,11,2025-10-29 04:39:18.576969,,,,,,,,, +0.29537761211395264,0.0023033053148537874,0.29537761211395264,1799.0,11,2025-10-29 04:46:55.834606,,,,,,,,, +0.24447233974933624,0.003832491347566247,0.24447233974933624,1849.0,11,2025-10-29 04:54:35.162246,,,,,,,,, +0.26224634051322937,0.0022914023138582706,0.26224634051322937,1899.0,11,2025-10-29 05:02:11.947236,,,,,,,,, +,,,,11,2025-10-29 05:05:49.516027,0.2766827940940857,0.00409453921020031,0.2766827940940857,0.28249576687812805,0.003469745861366391,0.28249576687812805,,, +,,,,11,2025-10-29 05:07:06.395235,,,,,,,0.27714183926582336,0.0036353198811411858,0.27714183926582336 +0.28004515171051025,0.006412958726286888,0.28004515171051025,1949.0,12,2025-10-29 05:14:32.501810,,,,,,,,, +0.2683315575122833,0.004403076600283384,0.2683315575122833,1999.0,12,2025-10-29 05:22:10.581362,,,,,,,,, +0.29113438725471497,0.004110926762223244,0.29113438725471497,2049.0,12,2025-10-29 05:29:50.460034,,,,,,,,, +,,,,12,2025-10-29 05:34:47.509725,0.2821040749549866,0.0037574605084955692,0.2821040749549866,0.2782166004180908,0.0036448421888053417,0.2782166004180908,,, +,,,,12,2025-10-29 05:36:01.544410,,,,,,,0.26974666118621826,0.003498889273032546,0.26974666118621826 +0.31576818227767944,0.0035027354024350643,0.31576818227767944,2099.0,13,2025-10-29 05:42:00.800168,,,,,,,,, +0.30013307929039,0.006233688909560442,0.30013307929039,2149.0,13,2025-10-29 05:49:40.752522,,,,,,,,, +0.2598050534725189,0.001927242730744183,0.2598050534725189,2199.0,13,2025-10-29 05:57:17.414380,,,,,,,,, +,,,,13,2025-10-29 06:03:38.143698,0.29339948296546936,0.005414336454123259,0.29339948296546936,0.2755531966686249,0.0032305698841810226,0.2755531966686249,,, +,,,,13,2025-10-29 06:04:51.503326,,,,,,,0.2728212773799896,0.003867820370942354,0.2728212773799896 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/tf/events.out.tfevents.1761707290.node-0.2045.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/tf/events.out.tfevents.1761707290.node-0.2045.0 new file mode 100644 index 0000000000000000000000000000000000000000..2356ce2c3428369c61cc619cf0e914c1f525950a --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/tf/events.out.tfevents.1761707290.node-0.2045.0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12cd8c81bb25570b8e8c528961c307a5cb3d97e8526dda8425d516dd9c865b31 +size 8641 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/meta.experiment new file mode 100644 index 0000000000000000000000000000000000000000..7eb7ef302e1546cf00b829362369d0b4896bcb4a --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/meta.experiment @@ -0,0 +1 @@ +{"name": "testtube", "version": 2, "tags_path": "./logs/full_ct_2d_with_body_mask2/testtube/version_2/meta_tags.csv", "metrics_path": "./logs/full_ct_2d_with_body_mask2/testtube/version_2/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-29 06:28:12.993751", "exp_hash": "testtube_v2"} \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/meta_tags.csv new file mode 100644 index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/meta_tags.csv @@ -0,0 +1 @@ +key,value diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/metrics.csv new file mode 100644 index 0000000000000000000000000000000000000000..2cbb509f81eb37abf56b99c048905401f466844b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/metrics.csv @@ -0,0 +1,2 @@ +train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at +0.28025203943252563,0.006237231660634279,0.28025203943252563,2249.0,14,2025-10-29 06:36:18.569020 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/tf/events.out.tfevents.1761719295.node-0.2231.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/tf/events.out.tfevents.1761719295.node-0.2231.0 new file mode 100644 index 0000000000000000000000000000000000000000..40db19106e90b79cceb9f71d862b8173fc4ef93e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/tf/events.out.tfevents.1761719295.node-0.2231.0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b8f5b9ecb0213f37642526f9226d4ac678f2936ea92580ee62a26503997cb11 +size 355 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/meta.experiment new file mode 100644 index 0000000000000000000000000000000000000000..e9ea9d375cbca4ac04b077903e0ae15c768d3c38 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/meta.experiment @@ -0,0 +1 @@ +{"name": "testtube", "version": 3, "tags_path": "./logs/full_ct_2d_with_body_mask2/testtube/version_3/meta_tags.csv", "metrics_path": "./logs/full_ct_2d_with_body_mask2/testtube/version_3/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-29 06:52:01.576821", "exp_hash": "testtube_v3"} \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/meta_tags.csv new file mode 100644 index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/meta_tags.csv @@ -0,0 +1 @@ +key,value diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/metrics.csv new file mode 100644 index 0000000000000000000000000000000000000000..4b4323c96b9e977b0cdf6049be20c8caf4c878f2 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/metrics.csv @@ -0,0 +1,69 @@ +train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch +0.28025224804878235,0.006237243767827749,0.28025224804878235,2249.0,14,2025-10-29 06:58:58.324188,,,,,,,,, +0.23338641226291656,0.001963970484212041,0.23338641226291656,2299.0,14,2025-10-29 07:06:35.492880,,,,,,,,, +0.24020206928253174,0.0016378265572711825,0.24020206928253174,2349.0,14,2025-10-29 07:14:14.371397,,,,,,,,, +,,,,14,2025-10-29 07:22:20.154462,0.2667611241340637,0.0028624804690480232,0.2667611241340637,0.27322977781295776,0.0031214156188070774,0.27322977781295776,,, +,,,,14,2025-10-29 07:23:31.529805,,,,,,,0.2690940201282501,0.0036953468807041645,0.2690940201282501 +0.2718985080718994,0.003714757738634944,0.2718985080718994,2399.0,15,2025-10-29 07:26:51.469591,,,,,,,,, +0.2522512972354889,0.001727023278363049,0.2522512972354889,2449.0,15,2025-10-29 07:34:30.958025,,,,,,,,, +0.2526806592941284,0.0016466873930767179,0.2526806592941284,2499.0,15,2025-10-29 07:42:06.981266,,,,,,,,, +,,,,15,2025-10-29 07:51:09.602636,0.2687002718448639,0.0027643393259495497,0.2687002718448639,0.2756917476654053,0.003943558782339096,0.2756917476654053,,, +,,,,15,2025-10-29 07:52:18.588780,,,,,,,0.2687661945819855,0.003871033200994134,0.2687661945819855 +0.28131940960884094,0.0022365611512213945,0.28131940960884094,2549.0,16,2025-10-29 07:54:17.497142,,,,,,,,, +0.28379419445991516,0.0021378458477556705,0.28379419445991516,2599.0,16,2025-10-29 08:01:54.151266,,,,,,,,, +0.2808891832828522,0.005863854195922613,0.2808891832828522,2649.0,16,2025-10-29 08:09:33.085538,,,,,,,,, +0.23594607412815094,0.0016317968256771564,0.23594607412815094,2699.0,16,2025-10-29 08:17:09.020419,,,,,,,,, +,,,,16,2025-10-29 08:19:59.392741,0.2746652364730835,0.0037394403479993343,0.2746652364730835,0.27403759956359863,0.0031519669573754072,0.27403759956359863,,, +,,,,16,2025-10-29 08:21:14.780490,,,,,,,0.263849139213562,0.003589056199416518,0.263849139213562 +0.26228490471839905,0.0017951783956959844,0.26228490471839905,2749.0,17,2025-10-29 08:29:28.313809,,,,,,,,, +0.2993653118610382,0.002928863512352109,0.2993653118610382,2799.0,17,2025-10-29 08:37:06.773887,,,,,,,,, +0.23479822278022766,0.0016238512471318245,0.23479822278022766,2849.0,17,2025-10-29 08:44:48.974307,,,,,,,,, +,,,,17,2025-10-29 08:48:58.612764,0.2672156095504761,0.004034475889056921,0.2672156095504761,0.2724722623825073,0.0034070834517478943,0.2724722623825073,,, +,,,,17,2025-10-29 08:50:15.338974,,,,,,,0.2663474380970001,0.0035630655474960804,0.2663474380970001 +0.26812759041786194,0.002761941170319915,0.26812759041786194,2899.0,18,2025-10-29 08:57:09.153021,,,,,,,,, +0.2646152973175049,0.0017754154978320003,0.2646152973175049,2949.0,18,2025-10-29 09:04:50.005618,,,,,,,,, +0.2679634094238281,0.0037166818510740995,0.2679634094238281,2999.0,18,2025-10-29 09:12:28.315883,,,,,,,,, +,,,,18,2025-10-29 09:18:10.926024,0.2730451226234436,0.003702708752825856,0.2730451226234436,0.26896587014198303,0.00358859496191144,0.26896587014198303,,, +,,,,18,2025-10-29 09:19:31.495195,,,,,,,0.26082974672317505,0.0034386208280920982,0.26082974672317505 +0.2738322615623474,0.003503467421978712,0.2738322615623474,3049.0,19,2025-10-29 09:24:54.712295,,,,,,,,, +0.26292335987091064,0.002881529973819852,0.26292335987091064,3099.0,19,2025-10-29 09:32:32.730098,,,,,,,,, +0.2521493136882782,0.001837820978835225,0.2521493136882782,3149.0,19,2025-10-29 09:40:15.030629,,,,,,,,, +,,,,19,2025-10-29 09:47:16.194617,0.2848205864429474,0.00535541633144021,0.2848205864429474,0.2669333219528198,0.0031788458582013845,0.2669333219528198,,, +,,,,19,2025-10-29 09:48:29.995183,,,,,,,0.26427602767944336,0.003800317645072937,0.26427602767944336 +0.2820777893066406,0.006870495621114969,0.2820777893066406,3199.0,20,2025-10-29 09:52:39.596131,,,,,,,,, +0.25695398449897766,0.004492610227316618,0.25695398449897766,3249.0,20,2025-10-29 10:00:23.062599,,,,,,,,, +0.2275150865316391,0.0013611833564937115,0.2275150865316391,3299.0,20,2025-10-29 10:08:03.265990,,,,,,,,, +,,,,20,2025-10-29 10:16:25.610573,0.25564366579055786,0.003944345284253359,0.25564366579055786,0.24932712316513062,0.0033249277621507645,0.24932712316513062,,, +,,,,20,2025-10-29 10:17:46.666449,,,,,,,0.262421578168869,0.0035721079912036657,0.262421578168869 +0.2349717766046524,0.0031173143070191145,0.2349717766046524,3349.0,21,2025-10-29 10:20:32.985294,,,,,,,,, +0.2417479157447815,0.005033372901380062,0.2417479157447815,3399.0,21,2025-10-29 10:28:11.192546,,,,,,,,, +0.2719259262084961,0.0021913559176027775,0.2719259262084961,3449.0,21,2025-10-29 10:35:52.368976,,,,,,,,, +,,,,21,2025-10-29 10:45:31.474290,0.26194918155670166,0.003081680741161108,0.26194918155670166,0.27002018690109253,0.004113640636205673,0.27002018690109253,,, +,,,,21,2025-10-29 10:46:10.157716,,,,,,,0.25933706760406494,0.003925226163119078,0.25933706760406494 +0.25752440094947815,0.0027036836836487055,0.25752440094947815,3499.0,22,2025-10-29 10:47:31.997160,,,,,,,,, +0.24753634631633759,0.00902416743338108,0.24753634631633759,3549.0,22,2025-10-29 10:55:11.825436,,,,,,,,, +0.227713480591774,0.005910711362957954,0.227713480591774,3599.0,22,2025-10-29 11:02:48.115979,,,,,,,,, +0.27743440866470337,0.005769934039562941,0.27743440866470337,3649.0,22,2025-10-29 11:10:26.268989,,,,,,,,, +,,,,22,2025-10-29 11:13:54.353773,0.26263195276260376,0.0038304829504340887,0.26263195276260376,0.2653336226940155,0.00428529130294919,0.2653336226940155,,, +,,,,22,2025-10-29 11:15:09.120137,,,,,,,0.2597608268260956,0.003737117862328887,0.2597608268260956 +0.2704359292984009,0.004767104052007198,0.2704359292984009,3699.0,23,2025-10-29 11:22:50.600903,,,,,,,,, +0.26160621643066406,0.0018353447085246444,0.26160621643066406,3749.0,23,2025-10-29 11:30:29.952402,,,,,,,,, +0.2648807466030121,0.00572700472548604,0.2648807466030121,3799.0,23,2025-10-29 11:38:07.399574,,,,,,,,, +,,,,23,2025-10-29 11:42:57.594305,0.26144638657569885,0.004269758705049753,0.26144638657569885,0.259914755821228,0.0030581436585634947,0.259914755821228,,, +,,,,23,2025-10-29 11:44:09.087953,,,,,,,0.25868362188339233,0.003284803358837962,0.25868362188339233 +0.28206050395965576,0.007199052255600691,0.28206050395965576,3849.0,24,2025-10-29 11:50:23.933645,,,,,,,,, +0.1959376037120819,0.001275394344702363,0.1959376037120819,3899.0,24,2025-10-29 11:58:01.560799,,,,,,,,, +0.2649981677532196,0.006269399076700211,0.2649981677532196,3949.0,24,2025-10-29 12:05:41.769490,,,,,,,,, +,,,,24,2025-10-29 12:11:53.300807,0.26520925760269165,0.0034105766098946333,0.26520925760269165,0.2580748498439789,0.0030249045230448246,0.2580748498439789,,, +,,,,24,2025-10-29 12:13:03.849456,,,,,,,0.2578713297843933,0.003760785097256303,0.2578713297843933 +0.3026350140571594,0.004008096177130938,0.3026350140571594,3999.0,25,2025-10-29 12:17:51.141168,,,,,,,,, +0.2576989531517029,0.003577882656827569,0.2576989531517029,4049.0,25,2025-10-29 12:25:32.434852,,,,,,,,, +0.23856480419635773,0.002212916035205126,0.23856480419635773,4099.0,25,2025-10-29 12:33:12.107510,,,,,,,,, +,,,,25,2025-10-29 12:40:44.436625,0.2554593086242676,0.004082811996340752,0.2554593086242676,0.2651488482952118,0.003882819088175893,0.2651488482952118,,, +,,,,25,2025-10-29 12:41:22.651708,,,,,,,0.25831303000450134,0.0038923174142837524,0.25831303000450134 +0.2532699704170227,0.0061458684504032135,0.2532699704170227,4149.0,26,2025-10-29 12:44:53.025560,,,,,,,,, +0.3324514925479889,0.009342190809547901,0.3324514925479889,4199.0,26,2025-10-29 12:52:30.410772,,,,,,,,, +0.24816586077213287,0.0036555835977196693,0.24816586077213287,4249.0,26,2025-10-29 13:00:10.450370,,,,,,,,, +,,,,26,2025-10-29 13:08:58.681216,0.26376157999038696,0.005282838363200426,0.26376157999038696,0.26967310905456543,0.0035121098626405,0.26967310905456543,,, +,,,,26,2025-10-29 13:09:38.005458,,,,,,,0.2560555040836334,0.003768912050873041,0.2560555040836334 +0.25542667508125305,0.0030242586508393288,0.25542667508125305,4299.0,27,2025-10-29 13:11:59.357851,,,,,,,,, diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/tf/events.out.tfevents.1761720724.node-0.2056.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/tf/events.out.tfevents.1761720724.node-0.2056.0 new file mode 100644 index 0000000000000000000000000000000000000000..11376c6818c0c79951b9d6350357795c257f6f98 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/tf/events.out.tfevents.1761720724.node-0.2056.0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f692328e8235d5fe74a705b9a8814031fc0496d7d4938c3267f8f19e5d8dc56 +size 18842 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest/valid_11_a_2_fused.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest/valid_11_a_2_fused.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..2929ba3e730307629ad4f7dcd1f7ffdef81ebb86 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest/valid_11_a_2_fused.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0626df9b033e16e0d0f455186cbbd04ad2cd09f8fd26e2b8860af412ecb411ad +size 123232957 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest/valid_15_a_2_fused.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest/valid_15_a_2_fused.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..f775ef3926e0670e959f8dce70e00f6910d88347 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest/valid_15_a_2_fused.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:970989f5633f578dbae5b7a62653a4397ff33710a6808babdaf5f8958d09724e +size 110637285 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest/valid_5_a_2_fused.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest/valid_5_a_2_fused.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..96c8dd287a38b8c441533198c34903ed629022ef --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest/valid_5_a_2_fused.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a462a40143dd19a80ae7f3e102821e2b95b31aee799f4c7a4b9af450e1a43bb0 +size 77012166 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new/valid_5_a_2_fused.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new/valid_5_a_2_fused.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..178a383606178004bb2074ff815be46ec3ae2494 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new/valid_5_a_2_fused.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6252cebfbb46c318b381dba9f165786d0160303b8d21826ce9c734c1dfe042c6 +size 78024036 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new2/valid_5_a_2_fused.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new2/valid_5_a_2_fused.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..ec50e13fdbbd8bd281de68b0b0bd6f7f596b1704 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new2/valid_5_a_2_fused.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60a6647da65139a75af7625a46c539607310876744a4ea27922e34ce9f46d273 +size 77533000 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new2/valid_5_a_2_fused_16.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new2/valid_5_a_2_fused_16.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..ef7c81016ea62325b3cf04273a4ec5c3ce64bc57 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new2/valid_5_a_2_fused_16.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f749e5025ce15122215c14dda895f00a809ba985e23bee442325a29a07efddf +size 77807468 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new3/valid_5_a_2_fused.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new3/valid_5_a_2_fused.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..d5c0722abed7bed389a4e38c705f1224427b8dda --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new3/valid_5_a_2_fused.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16005896068e1dc5a5c416c3fd7e2bca5a9caecddeb2bb5529c3dd4b6c354274 +size 77898163 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new3/valid_5_a_2_fused_.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new3/valid_5_a_2_fused_.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..02ae1efe6a5a0bd5eae36665cde00f95b0d6c36e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new3/valid_5_a_2_fused_.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b404e32b10425562dc5fbbb26d7671231aa0ea6bf386da32ec66f088318bca50 +size 84188752 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v1/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v1/valid_5_a_2.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..ad30991a265a3c15d0b8ed2e53cbe50a5b23f302 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v1/valid_5_a_2.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb9e07e8bd1acfb1a96f6578f200c7c79468d4be1c4a704168d6b3a68349cc39 +size 77497764 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v1_/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v1_/valid_5_a_2.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..fc4c88e7c8703d4506168c73e17fcb2a49691d96 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v1_/valid_5_a_2.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9638ae31ddb1813969127d4fc690f319c797a76cd1a3bc0bbddc287723ffa3c +size 17319896 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v2_o1/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v2_o1/valid_5_a_2.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..cccbd40a96eaefd9a9b192860298111e944fd9c0 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v2_o1/valid_5_a_2.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b8fd2319949437d1aa24f5cd2bb1e7c623977ca1eadb153c9d40add4b40456a +size 77905308 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v2_o4/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v2_o4/valid_5_a_2.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..711688e8d6c16fe06fc2da98bab326ebcfa2b7c5 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v2_o4/valid_5_a_2.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0dd02e58e4284b4281037de035ed0e58f2eea071d277462d4ee2a3969170f2bf +size 77488969 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v2_o8/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v2_o8/valid_5_a_2.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4e9dbd2a58972fabc546308937ca4157fd7a5ae --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v2_o8/valid_5_a_2.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c48e46006bd23d7e11069a7366c05f20329ffbb956d52a4af7291e0f3ef366a5 +size 76231345 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v3_o4/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v3_o4/valid_5_a_2.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..219f97e4a8ea3903c26388b90003b87d50c939f9 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v3_o4/valid_5_a_2.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:137a6fb157e888e346402d0f6cc49750ec8f1b3e69f25452fccef0b047accd4f +size 78639815 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v3_o8/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v3_o8/valid_5_a_2.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..1fc8980f9ebc16518d1a9ed7a8e3e4c19c56c599 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v3_o8/valid_5_a_2.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:364a7db925a6002218902d906b33674b1862de494978935611e3b5262b465863 +size 77862544 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v4_o1/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v4_o1/valid_5_a_2.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..0c5e2ff458e57d4fc2c88de8a6d011bd00aa130e --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v4_o1/valid_5_a_2.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10bf3194eec722056191c98fa6caac17736f0cac40315584083e8b74990d8928 +size 78120684 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v4_o4/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v4_o4/valid_5_a_2.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..fff47204bb2f1ccb2fa83acd8477a4b46f2705e5 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v4_o4/valid_5_a_2.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:323866070a2e072771730c6ac99f9118182ca2cd1188bb4afa138106dffe3fcb +size 78581180 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v5_o1/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v5_o1/valid_5_a_2.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..4e872b489ed72fa0a3ac45cf226c246b8c2a32aa --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v5_o1/valid_5_a_2.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:056b0284da6470b3be3be68266e18ef8b9668da5725ddb298ad2fbd39fd7a80a +size 78793088 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v5_o4/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v5_o4/valid_5_a_2.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..4e0b1dadfa09b2dcdb25646cc5865b73a83ec4a2 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v5_o4/valid_5_a_2.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dcebbf6609aa74862b0896c275b55a24b5b29dbea0069b9a7b6c5d61d4d1714 +size 78629093 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v5_o8/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v5_o8/valid_5_a_2.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..f00b147ebb1097b1f0a001b1ce7d376f20205581 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v5_o8/valid_5_a_2.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43471275fbea80c2ea1bec4f458d76820c4f877990490c163beeaa6525ab61f1 +size 78276868 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/epoch=000034.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/epoch=000034.ckpt new file mode 100644 index 0000000000000000000000000000000000000000..f604221d82724c473acb5e92b98352ce351fa283 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/epoch=000034.ckpt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24aeab411b49630bb05f3b41f28cb6fe1f2d5d3da6245f865359d08ea72cfb09 +size 3016767037 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/epoch=000042.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/epoch=000042.ckpt new file mode 100644 index 0000000000000000000000000000000000000000..b839f9324ef576c0d7189183e1614ba5677f24ab --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/epoch=000042.ckpt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4a49ba081d0d3a4a042713dcb1e778157be32d58123b1fee2b7d282d3ce3cdc +size 3016767037 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/epoch=000070.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/epoch=000070.ckpt new file mode 100644 index 0000000000000000000000000000000000000000..a2d2258bc64f7e8d7de8036c886543a8fc884c53 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/epoch=000070.ckpt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41ee72f6789af9f8adc04e1a9f366101108c2b2cd4211941ae91349d70433007 +size 3016767292 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/last.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/last.ckpt new file mode 100644 index 0000000000000000000000000000000000000000..a2d2258bc64f7e8d7de8036c886543a8fc884c53 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/last.ckpt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41ee72f6789af9f8adc04e1a9f366101108c2b2cd4211941ae91349d70433007 +size 3016767292 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/configs/2025-10-27T05-24-24-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/configs/2025-10-27T05-24-24-lightning.yaml new file mode 100644 index 0000000000000000000000000000000000000000..af576c4f4222ea130206951d1e6274cd32183a05 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/configs/2025-10-27T05-24-24-lightning.yaml @@ -0,0 +1,12 @@ +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: false + trainer: + benchmark: true + accelerator: ddp + gpus: 0,1,2,3, diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/configs/2025-10-27T05-24-24-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/configs/2025-10-27T05-24-24-project.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c40b7c4cc710a034b88c8dbafbbcc2248bb880ee --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/configs/2025-10-27T05-24-24-project.yaml @@ -0,0 +1,61 @@ +model: + base_learning_rate: 5.0e-06 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.012 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + conditioning_key: crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.52 + use_ema: false + ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt + load_only_unet: true + fix_t: true + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 32 + out_channels: 16 + model_channels: 224 + attention_resolutions: + - 8 + - 4 + - 2 + num_res_blocks: 2 + channel_mult: + - 1 + - 2 + - 3 + - 4 + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: true + legacy: false +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv + labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/meta.experiment new file mode 100644 index 0000000000000000000000000000000000000000..a760d72b4ac3a90cb19c5daf499184dd7fae7db6 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/meta.experiment @@ -0,0 +1 @@ +{"name": "testtube", "version": 0, "tags_path": "logs/full_ct_3d_with_body_mask/testtube/version_0/meta_tags.csv", "metrics_path": "logs/full_ct_3d_with_body_mask/testtube/version_0/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-27 05:24:55.199695", "exp_hash": "testtube_v0"} \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/meta_tags.csv new file mode 100644 index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/meta_tags.csv @@ -0,0 +1 @@ +key,value diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/metrics.csv new file mode 100644 index 0000000000000000000000000000000000000000..f4f95cec31eed70d1b109f5b2d331e51d137c157 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/metrics.csv @@ -0,0 +1,313 @@ +train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch +0.1298452466726303,0.0006014347309246659,0.1298452466726303,49.0,0,2025-10-27 05:31:12.276913,,,,,,,,, +0.1585102528333664,0.0010996264172717929,0.1585102528333664,99.0,0,2025-10-27 05:35:41.226047,,,,,,,,, +,,,,0,2025-10-27 05:39:16.584788,0.20284207165241241,0.002162378979846835,0.20284207165241241,0.2670551836490631,0.00709892250597477,0.2670551836490631,,, +,,,,0,2025-10-27 05:39:38.231154,,,,,,,0.1651953011751175,0.0035241355653852224,0.1651953011751175 +0.07409920543432236,0.00029173525399528444,0.07409920543432236,149.0,1,2025-10-27 05:42:49.311238,,,,,,,,, +0.3116034269332886,0.005188298411667347,0.3116034269332886,199.0,1,2025-10-27 05:47:18.507543,,,,,,,,, +,,,,1,2025-10-27 05:52:01.273421,0.14672797918319702,0.0012981414329260588,0.14672797918319702,0.16219495236873627,0.009456607513129711,0.16219495236873627,,, +,,,,1,2025-10-27 05:52:25.853867,,,,,,,0.17582637071609497,0.0024525232147425413,0.17582637071609497 +0.02844018116593361,0.00010678218677639961,0.02844018116593361,249.0,2,2025-10-27 05:53:53.265840,,,,,,,,, +0.2337605059146881,0.0014854605542495847,0.2337605059146881,299.0,2,2025-10-27 05:58:23.357924,,,,,,,,, +0.1513783484697342,0.0005861567333340645,0.1513783484697342,349.0,2,2025-10-27 06:02:52.594756,,,,,,,,, +,,,,2,2025-10-27 06:04:55.372785,0.17894774675369263,0.002510916907340288,0.17894774675369263,0.14331302046775818,0.0007318095304071903,0.14331302046775818,,, +,,,,2,2025-10-27 06:05:19.917343,,,,,,,0.17921996116638184,0.0022347604390233755,0.17921996116638184 +0.08109879493713379,0.0002756498579401523,0.08109879493713379,399.0,3,2025-10-27 06:09:30.448698,,,,,,,,, +0.025011951103806496,9.445133764529601e-05,0.025011951103806496,449.0,3,2025-10-27 06:13:59.512022,,,,,,,,, +,,,,3,2025-10-27 06:17:50.562109,0.13869450986385345,0.0010713210795074701,0.13869450986385345,0.1614726483821869,0.0013446861412376165,0.1614726483821869,,, +,,,,3,2025-10-27 06:18:16.561164,,,,,,,0.15808095037937164,0.0023440797813236713,0.15808095037937164 +0.15505565702915192,0.0007021644851192832,0.15505565702915192,499.0,4,2025-10-27 06:21:01.363734,,,,,,,,, +0.2634284794330597,0.0011740716872736812,0.2634284794330597,549.0,4,2025-10-27 06:25:31.670184,,,,,,,,, +0.15077055990695953,0.0005586837069131434,0.15077055990695953,599.0,4,2025-10-27 06:30:00.030301,,,,,,,,, +,,,,4,2025-10-27 06:31:16.554057,0.21596403419971466,0.004229461774230003,0.21596403419971466,0.16498808562755585,0.0019715630915015936,0.16498808562755585,,, +,,,,4,2025-10-27 06:31:30.850775,,,,,,,0.1680423766374588,0.002216966589912772,0.1680423766374588 +0.09997399896383286,0.0004182553675491363,0.09997399896383286,649.0,5,2025-10-27 06:36:34.594450,,,,,,,,, +0.1758166253566742,0.0015757213113829494,0.1758166253566742,699.0,5,2025-10-27 06:41:03.583270,,,,,,,,, +,,,,5,2025-10-27 06:44:02.533710,0.16704435646533966,0.00923468079417944,0.16704435646533966,0.1550769805908203,0.0006645738612860441,0.1550769805908203,,, +,,,,5,2025-10-27 06:44:28.213261,,,,,,,0.17925021052360535,0.003420442109927535,0.17925021052360535 +0.13451509177684784,0.0009249026770703495,0.13451509177684784,749.0,6,2025-10-27 06:47:46.635986,,,,,,,,, +0.22053448855876923,0.001058618538081646,0.22053448855876923,799.0,6,2025-10-27 06:52:15.928779,,,,,,,,, +,,,,6,2025-10-27 06:56:59.899014,0.12650758028030396,0.001425603753887117,0.12650758028030396,0.18155081570148468,0.012803117744624615,0.18155081570148468,,, +,,,,6,2025-10-27 06:57:13.195866,,,,,,,0.16785600781440735,0.003014898858964443,0.16785600781440735 +0.2569628655910492,0.004349532537162304,0.2569628655910492,849.0,7,2025-10-27 06:58:41.093492,,,,,,,,, +0.18001416325569153,0.000824119197204709,0.18001416325569153,899.0,7,2025-10-27 07:03:10.670729,,,,,,,,, +0.1529233753681183,0.0015380680561065674,0.1529233753681183,949.0,7,2025-10-27 07:07:41.256375,,,,,,,,, +,,,,7,2025-10-27 07:09:48.874858,0.17006336152553558,0.0012573186540976167,0.17006336152553558,0.20333285629749298,0.0014493640046566725,0.20333285629749298,,, +,,,,7,2025-10-27 07:10:01.995830,,,,,,,0.1773422807455063,0.005547262728214264,0.1773422807455063 +0.14939774572849274,0.0015161449555307627,0.14939774572849274,999.0,8,2025-10-27 07:14:13.370399,,,,,,,,, +0.15834538638591766,0.0006147972890175879,0.15834538638591766,1049.0,8,2025-10-27 07:18:43.577152,,,,,,,,, +,,,,8,2025-10-27 07:22:36.625797,0.1332847774028778,0.0027998017612844706,0.1332847774028778,0.18437211215496063,0.0014514365466311574,0.18437211215496063,,, +,,,,8,2025-10-27 07:22:50.097970,,,,,,,0.15758247673511505,0.003280793549492955,0.15758247673511505 +0.123996302485466,0.00042743535595946014,0.123996302485466,1099.0,9,2025-10-27 07:25:11.734423,,,,,,,,, +0.2900485098361969,0.002068539382889867,0.2900485098361969,1149.0,9,2025-10-27 07:29:41.526990,,,,,,,,, +0.19586646556854248,0.0007797113503329456,0.19586646556854248,1199.0,9,2025-10-27 07:34:09.735007,,,,,,,,, +,,,,9,2025-10-27 07:35:25.223109,0.1723030060529709,0.0018432143842801452,0.1723030060529709,0.1622532457113266,0.0009857920231297612,0.1622532457113266,,, +,,,,9,2025-10-27 07:35:39.374728,,,,,,,0.18952541053295135,0.006292914040386677,0.18952541053295135 +0.2469610869884491,0.026113854721188545,0.2469610869884491,1249.0,10,2025-10-27 07:40:36.729831,,,,,,,,, +0.18840758502483368,0.0020047586876899004,0.18840758502483368,1299.0,10,2025-10-27 07:45:05.942112,,,,,,,,, +,,,,10,2025-10-27 07:48:03.814925,0.17313937842845917,0.0010817964794114232,0.17313937842845917,0.15646174550056458,0.0014046860160306096,0.15646174550056458,,, +,,,,10,2025-10-27 07:48:30.477607,,,,,,,0.1627252995967865,0.0034794644452631474,0.1627252995967865 +0.07462508976459503,0.00025923113571479917,0.07462508976459503,1349.0,11,2025-10-27 07:52:11.484170,,,,,,,,, +0.21500767767429352,0.0009247582638636231,0.21500767767429352,1399.0,11,2025-10-27 07:56:41.490725,,,,,,,,, +,,,,11,2025-10-27 08:01:36.994135,0.20096832513809204,0.002560109132900834,0.20096832513809204,0.15472285449504852,0.0008078760001808405,0.15472285449504852,,, +,,,,11,2025-10-27 08:02:02.888853,,,,,,,0.1736760139465332,0.0032039228826761246,0.1736760139465332 +0.040505800396203995,0.0001532338937977329,0.040505800396203995,1449.0,12,2025-10-27 08:03:37.561019,,,,,,,,, +0.11307891458272934,0.0003926253702957183,0.11307891458272934,1499.0,12,2025-10-27 08:08:07.225322,,,,,,,,, +0.3430405855178833,0.01271831151098013,0.3430405855178833,1549.0,12,2025-10-27 08:12:36.633840,,,,,,,,, +,,,,12,2025-10-27 08:14:42.714319,0.169397234916687,0.0055740876123309135,0.169397234916687,0.13689714670181274,0.0007451949641108513,0.13689714670181274,,, +,,,,12,2025-10-27 08:15:08.432876,,,,,,,0.16721124947071075,0.0017329922411590815,0.16721124947071075 +0.17400385439395905,0.0011732201091945171,0.17400385439395905,1599.0,13,2025-10-27 08:19:17.105909,,,,,,,,, +0.15525752305984497,0.002389961387962103,0.15525752305984497,1649.0,13,2025-10-27 08:23:46.987425,,,,,,,,, +,,,,13,2025-10-27 08:27:42.543058,0.1839127540588379,0.009538248181343079,0.1839127540588379,0.1812489777803421,0.0010723319137468934,0.1812489777803421,,, +,,,,13,2025-10-27 08:27:56.846400,,,,,,,0.16328932344913483,0.0023505212739109993,0.16328932344913483 +0.15298977494239807,0.004517129622399807,0.15298977494239807,1699.0,14,2025-10-27 08:30:18.055043,,,,,,,,, +0.29246029257774353,0.003894355846568942,0.29246029257774353,1749.0,14,2025-10-27 08:34:47.552565,,,,,,,,, +0.13359546661376953,0.0004998319200240076,0.13359546661376953,1799.0,14,2025-10-27 08:39:16.638293,,,,,,,,, +,,,,14,2025-10-27 08:40:32.139274,0.18062709271907806,0.0017660226440057158,0.18062709271907806,0.15325219929218292,0.0011971208732575178,0.15325219929218292,,, +,,,,14,2025-10-27 08:40:57.988160,,,,,,,0.17239665985107422,0.0027567839715629816,0.17239665985107422 +0.12721045315265656,0.0009179686312563717,0.12721045315265656,1849.0,15,2025-10-27 08:46:02.694365,,,,,,,,, +0.15921461582183838,0.004264966584742069,0.15921461582183838,1899.0,15,2025-10-27 08:50:32.248033,,,,,,,,, +,,,,15,2025-10-27 08:53:31.401540,0.1682918816804886,0.010296469554305077,0.1682918816804886,0.19464407861232758,0.002194339409470558,0.19464407861232758,,, +,,,,15,2025-10-27 08:53:45.526014,,,,,,,0.1640947312116623,0.00267243105918169,0.1640947312116623 +0.2074774205684662,0.0009274556068703532,0.2074774205684662,1949.0,16,2025-10-27 08:57:05.883068,,,,,,,,, +0.08828552067279816,0.0005419761291705072,0.08828552067279816,1999.0,16,2025-10-27 09:01:35.775861,,,,,,,,, +,,,,16,2025-10-27 09:06:25.514848,0.2152213156223297,0.0036022120621055365,0.2152213156223297,0.17380663752555847,0.0017946362495422363,0.17380663752555847,,, +,,,,16,2025-10-27 09:06:39.312005,,,,,,,0.1609775424003601,0.0037128545809537172,0.1609775424003601 +0.1029215008020401,0.0003863114689011127,0.1029215008020401,2049.0,17,2025-10-27 09:08:07.642093,,,,,,,,, +0.25490766763687134,0.0010712622897699475,0.25490766763687134,2099.0,17,2025-10-27 09:12:37.670898,,,,,,,,, +0.28447335958480835,0.0033935662358999252,0.28447335958480835,2149.0,17,2025-10-27 09:17:07.294776,,,,,,,,, +,,,,17,2025-10-27 09:19:11.723286,0.1436058133840561,0.004136963281780481,0.1436058133840561,0.1850101798772812,0.013283642008900642,0.1850101798772812,,, +,,,,17,2025-10-27 09:19:26.828306,,,,,,,0.16779954731464386,0.0037222295068204403,0.16779954731464386 +0.23886007070541382,0.0016600446542724967,0.23886007070541382,2199.0,18,2025-10-27 09:23:32.933678,,,,,,,,, +0.13604837656021118,0.0005710365949198604,0.13604837656021118,2249.0,18,2025-10-27 09:28:02.428289,,,,,,,,, +,,,,18,2025-10-27 09:31:57.995732,0.16180285811424255,0.0014284554636105895,0.16180285811424255,0.17713171243667603,0.0013680463889613748,0.17713171243667603,,, +,,,,18,2025-10-27 09:32:11.809975,,,,,,,0.15336215496063232,0.002245004288852215,0.15336215496063232 +0.16161294281482697,0.001396313076838851,0.16161294281482697,2299.0,19,2025-10-27 09:34:35.380296,,,,,,,,, +0.08799533545970917,0.0002962336002383381,0.08799533545970917,2349.0,19,2025-10-27 09:39:06.082503,,,,,,,,, +0.1320529282093048,0.0004972692113369703,0.1320529282093048,2399.0,19,2025-10-27 09:43:35.717818,,,,,,,,, +,,,,19,2025-10-27 09:44:47.061094,0.10434176027774811,0.0003910154337063432,0.10434176027774811,0.12969020009040833,0.0015893771778792143,0.12969020009040833,,, +,,,,19,2025-10-27 09:45:19.822357,,,,,,,0.15551190078258514,0.002082358580082655,0.15551190078258514 +0.27346211671829224,0.0021777255460619926,0.27346211671829224,2449.0,20,2025-10-27 09:50:29.754022,,,,,,,,, +0.15594252943992615,0.001152145559899509,0.15594252943992615,2499.0,20,2025-10-27 09:54:59.734109,,,,,,,,, +,,,,20,2025-10-27 09:58:04.157846,0.1706395447254181,0.0010657027596607804,0.1706395447254181,0.20598040521144867,0.002647663466632366,0.20598040521144867,,, +,,,,20,2025-10-27 09:58:18.069911,,,,,,,0.16657111048698425,0.002206070814281702,0.16657111048698425 +0.08622602373361588,0.000402401463361457,0.08622602373361588,2549.0,21,2025-10-27 10:01:31.527045,,,,,,,,, +0.36302685737609863,0.016261326149106026,0.36302685737609863,2599.0,21,2025-10-27 10:06:00.776668,,,,,,,,, +,,,,21,2025-10-27 10:10:52.972327,0.21442434191703796,0.010853443294763565,0.21442434191703796,0.1860639601945877,0.0026045823469758034,0.1860639601945877,,, +,,,,21,2025-10-27 10:11:06.530356,,,,,,,0.16834105551242828,0.002792720915749669,0.16834105551242828 +0.20623737573623657,0.00388341979123652,0.20623737573623657,2649.0,22,2025-10-27 10:12:34.182971,,,,,,,,, +0.120920829474926,0.0012306420831009746,0.120920829474926,2699.0,22,2025-10-27 10:17:04.148997,,,,,,,,, +0.07855714112520218,0.0002688698295969516,0.07855714112520218,2749.0,22,2025-10-27 10:21:34.599641,,,,,,,,, +,,,,22,2025-10-27 10:23:41.080851,0.16689707338809967,0.0022489619441330433,0.16689707338809967,0.171307772397995,0.00420751515775919,0.171307772397995,,, +,,,,22,2025-10-27 10:23:55.236698,,,,,,,0.1592588722705841,0.002083785133436322,0.1592588722705841 +0.20821735262870789,0.0011211599921807647,0.20821735262870789,2799.0,23,2025-10-27 10:28:02.938884,,,,,,,,, +0.14007015526294708,0.000577647122554481,0.14007015526294708,2849.0,23,2025-10-27 10:32:33.048070,,,,,,,,, +,,,,23,2025-10-27 10:36:28.563312,0.21240665018558502,0.0036644607316702604,0.21240665018558502,0.17126286029815674,0.0013381459284573793,0.17126286029815674,,, +,,,,23,2025-10-27 10:36:42.500506,,,,,,,0.16343829035758972,0.0022181475069373846,0.16343829035758972 +0.17767156660556793,0.0006884810281917453,0.17767156660556793,2899.0,24,2025-10-27 10:39:08.428585,,,,,,,,, +0.2233976423740387,0.0013188689481467009,0.2233976423740387,2949.0,24,2025-10-27 10:43:38.682096,,,,,,,,, +0.02787759155035019,0.00010550743900239468,0.02787759155035019,2999.0,24,2025-10-27 10:48:07.585227,,,,,,,,, +,,,,24,2025-10-27 10:49:18.625331,0.18075811862945557,0.0018703780369833112,0.18075811862945557,0.192221537232399,0.0017800593050196767,0.192221537232399,,, +,,,,24,2025-10-27 10:49:32.697037,,,,,,,0.17414623498916626,0.0026634871028363705,0.17414623498916626 +0.16344775259494781,0.0013355349656194448,0.16344775259494781,3049.0,25,2025-10-27 10:54:31.821258,,,,,,,,, +0.11726658046245575,0.0005740410997532308,0.11726658046245575,3099.0,25,2025-10-27 10:59:01.374654,,,,,,,,, +,,,,25,2025-10-27 11:02:04.035033,0.18548014760017395,0.002119482960551977,0.18548014760017395,0.14643660187721252,0.0026196674443781376,0.14643660187721252,,, +,,,,25,2025-10-27 11:02:18.749566,,,,,,,0.1668120175600052,0.0031453934498131275,0.1668120175600052 +0.11578721553087234,0.00043708228622563183,0.11578721553087234,3149.0,26,2025-10-27 11:05:36.947379,,,,,,,,, +0.2275756597518921,0.00118865049444139,0.2275756597518921,3199.0,26,2025-10-27 11:10:08.010076,,,,,,,,, +,,,,26,2025-10-27 11:15:01.552232,0.14603647589683533,0.0007449063123203814,0.14603647589683533,0.17834016680717468,0.0012934375554323196,0.17834016680717468,,, +,,,,26,2025-10-27 11:15:15.634911,,,,,,,0.17398996651172638,0.0019332267111167312,0.17398996651172638 +0.2725699245929718,0.0025580613873898983,0.2725699245929718,3249.0,27,2025-10-27 11:16:44.760786,,,,,,,,, +0.20005731284618378,0.0015300001250579953,0.20005731284618378,3299.0,27,2025-10-27 11:21:15.119377,,,,,,,,, +0.10907832533121109,0.0004885902162641287,0.10907832533121109,3349.0,27,2025-10-27 11:25:45.451293,,,,,,,,, +,,,,27,2025-10-27 11:27:50.652960,0.17021194100379944,0.003043586853891611,0.17021194100379944,0.14157404005527496,0.0012630230048671365,0.14157404005527496,,, +,,,,27,2025-10-27 11:28:16.170071,,,,,,,0.15943481028079987,0.002847998170182109,0.15943481028079987 +0.02189214713871479,8.368305134354159e-05,0.02189214713871479,3399.0,28,2025-10-27 11:32:22.490163,,,,,,,,, +0.13926483690738678,0.0024356951471418142,0.13926483690738678,3449.0,28,2025-10-27 11:36:52.908239,,,,,,,,, +,,,,28,2025-10-27 11:40:48.671976,0.19008027017116547,0.013073833659291267,0.19008027017116547,0.16996866464614868,0.004876305349171162,0.16996866464614868,,, +,,,,28,2025-10-27 11:41:02.342855,,,,,,,0.15137049555778503,0.001522017759270966,0.15137049555778503 +0.3171122074127197,0.0025885826908051968,0.3171122074127197,3499.0,29,2025-10-27 11:43:27.528933,,,,,,,,, +0.1382300704717636,0.0008780040079727769,0.1382300704717636,3549.0,29,2025-10-27 11:47:57.693803,,,,,,,,, +0.19342558085918427,0.0007191367330960929,0.19342558085918427,3599.0,29,2025-10-27 11:52:26.617329,,,,,,,,, +,,,,29,2025-10-27 11:53:38.382927,0.1507851928472519,0.0006327972514554858,0.1507851928472519,0.15300250053405762,0.0007310818182304502,0.15300250053405762,,, +,,,,29,2025-10-27 11:53:52.825752,,,,,,,0.1789836287498474,0.0028862275648862123,0.1789836287498474 +0.1355489194393158,0.0027574896812438965,0.1355489194393158,3649.0,30,2025-10-27 11:58:55.144022,,,,,,,,, +0.06387698650360107,0.00022625309065915644,0.06387698650360107,3699.0,30,2025-10-27 12:03:24.958575,,,,,,,,, +,,,,30,2025-10-27 12:06:27.895789,0.19833387434482574,0.002348431386053562,0.19833387434482574,0.2083660364151001,0.0021264534443616867,0.2083660364151001,,, +,,,,30,2025-10-27 12:06:41.556301,,,,,,,0.16684935986995697,0.0020123273134231567,0.16684935986995697 +0.22699810564517975,0.005606844089925289,0.22699810564517975,3749.0,31,2025-10-27 12:09:58.525894,,,,,,,,, +0.3097147047519684,0.04623788595199585,0.3097147047519684,3799.0,31,2025-10-27 12:14:28.589147,,,,,,,,, +,,,,31,2025-10-27 12:19:17.522546,0.18899503350257874,0.0020027265418320894,0.18899503350257874,0.16432969272136688,0.0011077403323724866,0.16432969272136688,,, +,,,,31,2025-10-27 12:19:31.695635,,,,,,,0.17819032073020935,0.003932780586183071,0.17819032073020935 +0.2465432733297348,0.003056964371353388,0.2465432733297348,3849.0,32,2025-10-27 12:20:54.981103,,,,,,,,, +0.03407081961631775,0.00013051327550783753,0.03407081961631775,3899.0,32,2025-10-27 12:25:25.030194,,,,,,,,, +0.14326651394367218,0.000615552591625601,0.14326651394367218,3949.0,32,2025-10-27 12:29:54.797247,,,,,,,,, +,,,,32,2025-10-27 12:31:59.665389,0.19592541456222534,0.0031949474941939116,0.19592541456222534,0.1455051600933075,0.0008391818846575916,0.1455051600933075,,, +,,,,32,2025-10-27 12:32:13.147415,,,,,,,0.16256166994571686,0.0018331115134060383,0.16256166994571686 +0.17925187945365906,0.0009570110705681145,0.17925187945365906,3999.0,33,2025-10-27 12:36:34.962642,,,,,,,,, +0.18811555206775665,0.0018970168894156814,0.18811555206775665,4049.0,33,2025-10-27 12:41:05.512167,,,,,,,,, +,,,,33,2025-10-27 12:44:57.353610,0.1397705227136612,0.0012120103929191828,0.1397705227136612,0.13768160343170166,0.0020991584751755,0.13768160343170166,,, +,,,,33,2025-10-27 12:45:23.161759,,,,,,,0.16064657270908356,0.0019575629848986864,0.16064657270908356 +0.08405924588441849,0.0003355279623065144,0.08405924588441849,4099.0,34,2025-10-27 12:47:50.439090,,,,,,,,, +0.05540543422102928,0.000194275111425668,0.05540543422102928,4149.0,34,2025-10-27 12:52:21.175392,,,,,,,,, +0.117362380027771,0.00044739225995726883,0.117362380027771,4199.0,34,2025-10-27 12:56:50.641714,,,,,,,,, +,,,,34,2025-10-27 12:58:01.174641,0.11993244290351868,0.0007771917153149843,0.11993244290351868,0.10557252168655396,0.0004361116443760693,0.10557252168655396,,, +,,,,34,2025-10-27 12:58:28.593727,,,,,,,0.1629304140806198,0.0024017132818698883,0.1629304140806198 +0.245383158326149,0.0011993233347311616,0.245383158326149,4249.0,35,2025-10-27 13:03:31.574186,,,,,,,,, +0.22202780842781067,0.0016710080672055483,0.22202780842781067,4299.0,35,2025-10-27 13:08:02.071885,,,,,,,,, +,,,,35,2025-10-27 13:11:03.616848,0.1267116367816925,0.0006415504612959921,0.1267116367816925,0.1550823599100113,0.0017036545323207974,0.1550823599100113,,, +,,,,35,2025-10-27 13:11:17.361585,,,,,,,0.17329180240631104,0.002822452923282981,0.17329180240631104 +0.19355829060077667,0.0008424551342613995,0.19355829060077667,4349.0,36,2025-10-27 13:14:34.181536,,,,,,,,, +0.047442708164453506,0.00016453792341053486,0.047442708164453506,4399.0,36,2025-10-27 13:19:04.407098,,,,,,,,, +,,,,36,2025-10-27 13:23:55.021721,0.16556787490844727,0.0029691189993172884,0.16556787490844727,0.16106297075748444,0.0012550834799185395,0.16106297075748444,,, +,,,,36,2025-10-27 13:24:09.115564,,,,,,,0.1656416356563568,0.0016729059861972928,0.1656416356563568 +0.16002975404262543,0.0006310612661764026,0.16002975404262543,4449.0,37,2025-10-27 13:25:42.891352,,,,,,,,, +0.2829585671424866,0.0022557671181857586,0.2829585671424866,4499.0,37,2025-10-27 13:30:12.882385,,,,,,,,, +0.09344431757926941,0.0003775424265768379,0.09344431757926941,4549.0,37,2025-10-27 13:34:43.016525,,,,,,,,, +,,,,37,2025-10-27 13:36:53.574236,0.15883499383926392,0.0014733666321262717,0.15883499383926392,0.16510038077831268,0.001677793450653553,0.16510038077831268,,, +,,,,37,2025-10-27 13:37:07.661501,,,,,,,0.167654350399971,0.0017817444168031216,0.167654350399971 +0.2679121792316437,0.001788676017895341,0.2679121792316437,4599.0,38,2025-10-27 13:41:15.927203,,,,,,,,, +0.11072906106710434,0.00037610679282806814,0.11072906106710434,4649.0,38,2025-10-27 13:45:46.726641,,,,,,,,, +,,,,38,2025-10-27 13:49:37.489342,0.191322460770607,0.003846260951831937,0.191322460770607,0.19454599916934967,0.0022170802112668753,0.19454599916934967,,, +,,,,38,2025-10-27 13:49:51.322888,,,,,,,0.1664920598268509,0.003919551149010658,0.1664920598268509 +0.1392512172460556,0.0005090077174827456,0.1392512172460556,4699.0,39,2025-10-27 13:52:08.460934,,,,,,,,, +0.2106075882911682,0.0011718320893123746,0.2106075882911682,4749.0,39,2025-10-27 13:56:38.708256,,,,,,,,, +0.07239311933517456,0.000252999656368047,0.07239311933517456,4799.0,39,2025-10-27 14:01:07.701147,,,,,,,,, +,,,,39,2025-10-27 14:02:24.066955,0.19256487488746643,0.005325481295585632,0.19256487488746643,0.16176044940948486,0.002861269749701023,0.16176044940948486,,, +,,,,39,2025-10-27 14:02:38.087583,,,,,,,0.17400260269641876,0.003880089847370982,0.17400260269641876 +0.0662844255566597,0.00022926418751012534,0.0662844255566597,4849.0,40,2025-10-27 14:07:40.122605,,,,,,,,, +0.1313895583152771,0.00045982139999978244,0.1313895583152771,4899.0,40,2025-10-27 14:12:09.603722,,,,,,,,, +,,,,40,2025-10-27 14:15:12.830746,0.18247249722480774,0.001616910332813859,0.18247249722480774,0.15967391431331635,0.001173869357444346,0.15967391431331635,,, +,,,,40,2025-10-27 14:15:27.062639,,,,,,,0.17462316155433655,0.002839226508513093,0.17462316155433655 +0.29481348395347595,0.002842765999957919,0.29481348395347595,4949.0,41,2025-10-27 14:18:42.217068,,,,,,,,, +0.09275586158037186,0.0003562112688086927,0.09275586158037186,4999.0,41,2025-10-27 14:23:11.690594,,,,,,,,, +,,,,41,2025-10-27 14:27:57.643131,0.16274426877498627,0.0016264610458165407,0.16274426877498627,0.15865196287631989,0.0019192040199413896,0.15865196287631989,,, +,,,,41,2025-10-27 14:28:11.209456,,,,,,,0.16817837953567505,0.0023333204444497824,0.16817837953567505 +0.179660364985466,0.0013207198353484273,0.179660364985466,5049.0,42,2025-10-27 14:29:34.935394,,,,,,,,, +0.054544541984796524,0.0002058010286418721,0.054544541984796524,5099.0,42,2025-10-27 14:34:04.791601,,,,,,,,, +0.205445796251297,0.0011917883530259132,0.205445796251297,5149.0,42,2025-10-27 14:38:35.048807,,,,,,,,, +,,,,42,2025-10-27 14:40:39.005183,0.1275867372751236,0.012111793272197247,0.1275867372751236,0.10266478359699249,0.00039702016511000693,0.10266478359699249,,, +,,,,42,2025-10-27 14:41:05.685668,,,,,,,0.16838331520557404,0.003624981502071023,0.16838331520557404 +0.25403884053230286,0.016667496412992477,0.25403884053230286,5199.0,43,2025-10-27 14:45:18.995139,,,,,,,,, +0.099150151014328,0.00033647919190116227,0.099150151014328,5249.0,43,2025-10-27 14:49:49.099767,,,,,,,,, +,,,,43,2025-10-27 14:53:44.086177,0.18373697996139526,0.010325754061341286,0.18373697996139526,0.1542864590883255,0.002169597428292036,0.1542864590883255,,, +,,,,43,2025-10-27 14:53:59.162341,,,,,,,0.16554081439971924,0.0018146102083846927,0.16554081439971924 +0.16040298342704773,0.000724183046258986,0.16040298342704773,5299.0,44,2025-10-27 14:56:22.674436,,,,,,,,, +0.12377054244279861,0.0004128299478907138,0.12377054244279861,5349.0,44,2025-10-27 15:00:54.123343,,,,,,,,, +0.15809619426727295,0.001218520337715745,0.15809619426727295,5399.0,44,2025-10-27 15:05:53.260851,,,,,,,,, +,,,,44,2025-10-27 15:07:39.664320,0.1425066739320755,0.0007565981359221041,0.1425066739320755,0.17493411898612976,0.001736625679768622,0.17493411898612976,,, +,,,,44,2025-10-27 15:07:52.851924,,,,,,,0.17406253516674042,0.002941759303212166,0.17406253516674042 +0.061750587075948715,0.000216164713492617,0.061750587075948715,5449.0,45,2025-10-27 15:12:55.806818,,,,,,,,, +0.24988065659999847,0.001526137930341065,0.24988065659999847,5499.0,45,2025-10-27 15:17:31.391246,,,,,,,,, +,,,,45,2025-10-27 15:20:38.881746,0.14767245948314667,0.002253773855045438,0.14767245948314667,0.17531819641590118,0.001687054056674242,0.17531819641590118,,, +,,,,45,2025-10-27 15:20:53.019630,,,,,,,0.169733464717865,0.0021567002404481173,0.169733464717865 +0.12544886767864227,0.0005376505432650447,0.12544886767864227,5549.0,46,2025-10-27 15:24:12.672472,,,,,,,,, +0.11396551132202148,0.0006049254443496466,0.11396551132202148,5599.0,46,2025-10-27 15:28:42.836326,,,,,,,,, +,,,,46,2025-10-27 15:33:29.153233,0.19892260432243347,0.0021312925964593887,0.19892260432243347,0.22961919009685516,0.0037152250297367573,0.22961919009685516,,, +,,,,46,2025-10-27 15:33:43.465232,,,,,,,0.17479471862316132,0.0032908457797020674,0.17479471862316132 +0.16464440524578094,0.0009970545070245862,0.16464440524578094,5649.0,47,2025-10-27 15:35:13.197403,,,,,,,,, +0.12172585725784302,0.0009225652902387083,0.12172585725784302,5699.0,47,2025-10-27 15:39:43.160880,,,,,,,,, +0.15752674639225006,0.0006403616280294955,0.15752674639225006,5749.0,47,2025-10-27 15:44:12.678824,,,,,,,,, +,,,,47,2025-10-27 15:46:23.428147,0.19300009310245514,0.00470071192830801,0.19300009310245514,0.20136766135692596,0.002087427070364356,0.20136766135692596,,, +,,,,47,2025-10-27 15:46:37.237891,,,,,,,0.16491685807704926,0.0025722808204591274,0.16491685807704926 +0.2751973569393158,0.0020951463375240564,0.2751973569393158,5799.0,48,2025-10-27 15:50:50.088847,,,,,,,,, +0.029876014217734337,0.00011799748608609661,0.029876014217734337,5849.0,48,2025-10-27 15:55:20.689010,,,,,,,,, +,,,,48,2025-10-27 15:59:13.813742,0.1574224829673767,0.002536999061703682,0.1574224829673767,0.1940365433692932,0.0022753088269382715,0.1940365433692932,,, +,,,,48,2025-10-27 15:59:28.255854,,,,,,,0.1653682291507721,0.0034705735743045807,0.1653682291507721 +0.13533033430576324,0.0004949224530719221,0.13533033430576324,5899.0,49,2025-10-27 16:01:54.831174,,,,,,,,, +0.24001500010490417,0.0010279071284458041,0.24001500010490417,5949.0,49,2025-10-27 16:06:25.524156,,,,,,,,, +0.24794186651706696,0.0011946639278903604,0.24794186651706696,5999.0,49,2025-10-27 16:10:54.700234,,,,,,,,, +,,,,49,2025-10-27 16:12:05.638440,0.14612190425395966,0.0009709753794595599,0.14612190425395966,0.17097342014312744,0.0011474188650026917,0.17097342014312744,,, +,,,,49,2025-10-27 16:12:19.871628,,,,,,,0.15100446343421936,0.001625975128263235,0.15100446343421936 +0.23263560235500336,0.0013289771741256118,0.23263560235500336,6049.0,50,2025-10-27 16:17:22.239047,,,,,,,,, +0.0886964499950409,0.0003048554644919932,0.0886964499950409,6099.0,50,2025-10-27 16:21:52.319458,,,,,,,,, +,,,,50,2025-10-27 16:24:52.569542,0.16195037961006165,0.001721561304293573,0.16195037961006165,0.2125624120235443,0.0018573686247691512,0.2125624120235443,,, +,,,,50,2025-10-27 16:25:06.511636,,,,,,,0.17437250912189484,0.004131419584155083,0.17437250912189484 +0.14746715128421783,0.002864117966964841,0.14746715128421783,6149.0,51,2025-10-27 16:28:19.732834,,,,,,,,, +0.30090686678886414,0.0030355353374034166,0.30090686678886414,6199.0,51,2025-10-27 16:32:49.674532,,,,,,,,, +,,,,51,2025-10-27 16:37:36.119751,0.16855297982692719,0.00199651881121099,0.16855297982692719,0.14248798787593842,0.001370396465063095,0.14248798787593842,,, +,,,,51,2025-10-27 16:37:49.284949,,,,,,,0.164894700050354,0.0013830248499289155,0.164894700050354 +0.13136403262615204,0.0009586015366949141,0.13136403262615204,6249.0,52,2025-10-27 16:39:18.633612,,,,,,,,, +0.1142529770731926,0.000846677168738097,0.1142529770731926,6299.0,52,2025-10-27 16:43:48.296495,,,,,,,,, +0.12838537991046906,0.0004329466028138995,0.12838537991046906,6349.0,52,2025-10-27 16:48:18.048592,,,,,,,,, +,,,,52,2025-10-27 16:50:29.646009,0.17536033689975739,0.005832868628203869,0.17536033689975739,0.1904989778995514,0.003185803070664406,0.1904989778995514,,, +,,,,52,2025-10-27 16:50:43.957236,,,,,,,0.1609644889831543,0.00197890168055892,0.1609644889831543 +0.09714115411043167,0.00034673887421377003,0.09714115411043167,6399.0,53,2025-10-27 16:54:54.239602,,,,,,,,, +0.13504177331924438,0.00048143963795155287,0.13504177331924438,6449.0,53,2025-10-27 16:59:25.466750,,,,,,,,, +,,,,53,2025-10-27 17:03:17.500825,0.13584575057029724,0.0008482997072860599,0.13584575057029724,0.12936677038669586,0.000628774578217417,0.12936677038669586,,, +,,,,53,2025-10-27 17:03:42.529436,,,,,,,0.16338147222995758,0.002060709521174431,0.16338147222995758 +0.2578313648700714,0.0021862646099179983,0.2578313648700714,6499.0,54,2025-10-27 17:06:05.568444,,,,,,,,, +0.17254598438739777,0.011192538775503635,0.17254598438739777,6549.0,54,2025-10-27 17:10:36.241603,,,,,,,,, +0.108099065721035,0.0004266513278707862,0.108099065721035,6599.0,54,2025-10-27 17:15:05.976831,,,,,,,,, +,,,,54,2025-10-27 17:16:17.771014,0.19213539361953735,0.004294245503842831,0.19213539361953735,0.17373670637607574,0.0010887505486607552,0.17373670637607574,,, +,,,,54,2025-10-27 17:16:31.343282,,,,,,,0.1723950207233429,0.0026808849070221186,0.1723950207233429 +0.09542767703533173,0.0003182794607710093,0.09542767703533173,6649.0,55,2025-10-27 17:21:38.876886,,,,,,,,, +0.17640890181064606,0.0009242944070138037,0.17640890181064606,6699.0,55,2025-10-27 17:26:08.440664,,,,,,,,, +,,,,55,2025-10-27 17:29:08.653462,0.16861127316951752,0.003111595055088401,0.16861127316951752,0.19289939105510712,0.0018571886466816068,0.19289939105510712,,, +,,,,55,2025-10-27 17:29:22.512790,,,,,,,0.1576293706893921,0.0018544603371992707,0.1576293706893921 +0.16373859345912933,0.000769244332332164,0.16373859345912933,6749.0,56,2025-10-27 17:32:42.394190,,,,,,,,, +0.08836157619953156,0.00029621223802678287,0.08836157619953156,6799.0,56,2025-10-27 17:37:12.868833,,,,,,,,, +,,,,56,2025-10-27 17:42:02.409188,0.1618533730506897,0.0012726495042443275,0.1618533730506897,0.15763163566589355,0.0021561640314757824,0.15763163566589355,,, +,,,,56,2025-10-27 17:42:16.102155,,,,,,,0.15683160722255707,0.002113153226673603,0.15683160722255707 +0.29334938526153564,0.005524361506104469,0.29334938526153564,6849.0,57,2025-10-27 17:43:48.562776,,,,,,,,, +0.04082636907696724,0.0001480717764934525,0.04082636907696724,6899.0,57,2025-10-27 17:48:19.261153,,,,,,,,, +0.1388634741306305,0.0005150202778168023,0.1388634741306305,6949.0,57,2025-10-27 17:52:49.620325,,,,,,,,, +,,,,57,2025-10-27 17:54:54.315457,0.19366247951984406,0.0017777334433048964,0.19366247951984406,0.25349298119544983,0.008263235911726952,0.25349298119544983,,, +,,,,57,2025-10-27 17:55:08.851104,,,,,,,0.16280511021614075,0.0022622544784098864,0.16280511021614075 +0.06746803224086761,0.00023741570475976914,0.06746803224086761,6999.0,58,2025-10-27 17:59:21.611609,,,,,,,,, +0.17584535479545593,0.0007142274989746511,0.17584535479545593,7049.0,58,2025-10-27 18:03:52.813481,,,,,,,,, +,,,,58,2025-10-27 18:07:47.460384,0.15181633830070496,0.0016533986199647188,0.15181633830070496,0.19354316592216492,0.0060872361063957214,0.19354316592216492,,, +,,,,58,2025-10-27 18:08:00.474246,,,,,,,0.16210372745990753,0.003613704117015004,0.16210372745990753 +0.41231194138526917,0.006943796295672655,0.41231194138526917,7099.0,59,2025-10-27 18:10:18.436765,,,,,,,,, +0.038276705890893936,0.00014115859812591225,0.038276705890893936,7149.0,59,2025-10-27 18:14:48.238567,,,,,,,,, +0.1386144608259201,0.0005916814552620053,0.1386144608259201,7199.0,59,2025-10-27 18:19:17.335532,,,,,,,,, +,,,,59,2025-10-27 18:20:29.213214,0.17551371455192566,0.007199620828032494,0.17551371455192566,0.19865606725215912,0.0026304039638489485,0.19865606725215912,,, +,,,,59,2025-10-27 18:20:43.252497,,,,,,,0.1837506890296936,0.004112333990633488,0.1837506890296936 +0.06576766073703766,0.00022659763635601848,0.06576766073703766,7249.0,60,2025-10-27 18:25:48.319968,,,,,,,,, +0.049898672848939896,0.00017885655688587576,0.049898672848939896,7299.0,60,2025-10-27 18:30:18.777270,,,,,,,,, +,,,,60,2025-10-27 18:33:23.325147,0.20033089816570282,0.003216282930225134,0.20033089816570282,0.1569557636976242,0.00277024251408875,0.1569557636976242,,, +,,,,60,2025-10-27 18:33:36.690197,,,,,,,0.16186818480491638,0.002600492676720023,0.16186818480491638 +0.1534891575574875,0.0008849793812260032,0.1534891575574875,7349.0,61,2025-10-27 18:36:51.596573,,,,,,,,, +0.14094769954681396,0.0005316796596162021,0.14094769954681396,7399.0,61,2025-10-27 18:41:22.362323,,,,,,,,, +,,,,61,2025-10-27 18:46:12.205772,0.15896712243556976,0.0010372726246714592,0.15896712243556976,0.15069790184497833,0.001218264689669013,0.15069790184497833,,, +,,,,61,2025-10-27 18:46:26.454973,,,,,,,0.16025704145431519,0.0022572858724743128,0.16025704145431519 +0.1028832271695137,0.0005034111673012376,0.1028832271695137,7449.0,62,2025-10-27 18:48:01.223592,,,,,,,,, +0.10300292074680328,0.0007572243339382112,0.10300292074680328,7499.0,62,2025-10-27 18:52:31.410319,,,,,,,,, +0.17995570600032806,0.0031818316783756018,0.17995570600032806,7549.0,62,2025-10-27 18:57:02.501953,,,,,,,,, +,,,,62,2025-10-27 18:59:09.283307,0.1958155632019043,0.0025321822613477707,0.1958155632019043,0.15685519576072693,0.008095300756394863,0.15685519576072693,,, +,,,,62,2025-10-27 18:59:23.606164,,,,,,,0.16275137662887573,0.002626826986670494,0.16275137662887573 +0.16077478229999542,0.0006486873026005924,0.16077478229999542,7599.0,63,2025-10-27 19:03:44.439221,,,,,,,,, +0.23214155435562134,0.07311443984508514,0.23214155435562134,7649.0,63,2025-10-27 19:08:15.137754,,,,,,,,, +,,,,63,2025-10-27 19:12:13.285570,0.16963686048984528,0.0007742613670416176,0.16963686048984528,0.17130374908447266,0.00806969590485096,0.17130374908447266,,, +,,,,63,2025-10-27 19:12:26.933057,,,,,,,0.15388208627700806,0.0029932563193142414,0.15388208627700806 +0.1071929931640625,0.00041910583968274295,0.1071929931640625,7699.0,64,2025-10-27 19:14:52.102199,,,,,,,,, +0.24029137194156647,0.0014921160181984305,0.24029137194156647,7749.0,64,2025-10-27 19:19:23.626009,,,,,,,,, +0.011281102895736694,5.3044619562570006e-05,0.011281102895736694,7799.0,64,2025-10-27 19:23:53.832436,,,,,,,,, +,,,,64,2025-10-27 19:25:10.332442,0.215567484498024,0.002593456534668803,0.215567484498024,0.14971041679382324,0.0010091153671965003,0.14971041679382324,,, +,,,,64,2025-10-27 19:25:24.487598,,,,,,,0.1553637832403183,0.002746754325926304,0.1553637832403183 +0.09047552198171616,0.00038931352901272476,0.09047552198171616,7849.0,65,2025-10-27 19:30:29.418505,,,,,,,,, +0.060654155910015106,0.00021556652791332453,0.060654155910015106,7899.0,65,2025-10-27 19:34:59.853647,,,,,,,,, +,,,,65,2025-10-27 19:38:03.922014,0.1472652703523636,0.001185466069728136,0.1472652703523636,0.19754436612129211,0.0013759612338617444,0.19754436612129211,,, +,,,,65,2025-10-27 19:38:17.981512,,,,,,,0.1650662124156952,0.0043617128394544125,0.1650662124156952 +0.20052000880241394,0.0012624982045963407,0.20052000880241394,7949.0,66,2025-10-27 19:41:31.821385,,,,,,,,, +0.2426585555076599,0.0021317587234079838,0.2426585555076599,7999.0,66,2025-10-27 19:46:01.668633,,,,,,,,, +,,,,66,2025-10-27 19:50:54.775021,0.143999382853508,0.0008101967396214604,0.143999382853508,0.1495984047651291,0.0013092788867652416,0.1495984047651291,,, +,,,,66,2025-10-27 19:51:09.099272,,,,,,,0.17436598241329193,0.004348889458924532,0.17436598241329193 +0.14247828722000122,0.0007849022513255477,0.14247828722000122,8049.0,67,2025-10-27 19:52:36.617948,,,,,,,,, +0.17706933617591858,0.0058964393101632595,0.17706933617591858,8099.0,67,2025-10-27 19:57:06.839557,,,,,,,,, +0.11754477769136429,0.0006507882499136031,0.11754477769136429,8149.0,67,2025-10-27 20:01:37.312886,,,,,,,,, +,,,,67,2025-10-27 20:03:41.085432,0.13726037740707397,0.0006183352088555694,0.13726037740707397,0.1770162433385849,0.004801295697689056,0.1770162433385849,,, +,,,,67,2025-10-27 20:03:55.088331,,,,,,,0.1592518389225006,0.0019866637885570526,0.1592518389225006 +0.28204548358917236,0.0012488518841564655,0.28204548358917236,8199.0,68,2025-10-27 20:08:05.734623,,,,,,,,, +0.173738494515419,0.0007667627069167793,0.173738494515419,8249.0,68,2025-10-27 20:12:36.025590,,,,,,,,, +,,,,68,2025-10-27 20:16:33.021577,0.1701529324054718,0.001099179033190012,0.1701529324054718,0.14239220321178436,0.0014458264922723174,0.14239220321178436,,, +,,,,68,2025-10-27 20:16:47.129131,,,,,,,0.1790778487920761,0.004358279053121805,0.1790778487920761 +0.2770531475543976,0.0014386695111170411,0.2770531475543976,8299.0,69,2025-10-27 20:19:06.036744,,,,,,,,, +0.08525293320417404,0.0002863374538719654,0.08525293320417404,8349.0,69,2025-10-27 20:23:36.634361,,,,,,,,, +0.2533504068851471,0.0020828263368457556,0.2533504068851471,8399.0,69,2025-10-27 20:28:06.139547,,,,,,,,, +,,,,69,2025-10-27 20:29:18.031089,0.13297617435455322,0.0005895820795558393,0.13297617435455322,0.1624409705400467,0.001694922219030559,0.1624409705400467,,, +,,,,69,2025-10-27 20:29:32.633195,,,,,,,0.16290982067584991,0.0031699305400252342,0.16290982067584991 +0.26798057556152344,0.004574443679302931,0.26798057556152344,8449.0,70,2025-10-27 20:34:32.176121,,,,,,,,, +0.20979145169258118,0.001097162370570004,0.20979145169258118,8499.0,70,2025-10-27 20:39:03.440036,,,,,,,,, +,,,,70,2025-10-27 20:42:05.093987,0.1580786406993866,0.0029527340084314346,0.1580786406993866,0.12800981104373932,0.0009439534042030573,0.12800981104373932,,, +,,,,70,2025-10-27 20:42:30.433742,,,,,,,0.1618497371673584,0.0017867687856778502,0.1618497371673584 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/tf/events.out.tfevents.1761542695.node-0.1923.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/tf/events.out.tfevents.1761542695.node-0.1923.0 new file mode 100644 index 0000000000000000000000000000000000000000..80cf01b9fc2176d7d642978d9c1eedd2ccff5454 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/tf/events.out.tfevents.1761542695.node-0.1923.0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a3e6ccbf55ad7cb57009de4de091f28cad27063cac10be33c3cb48ffde563c8 +size 86637 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/3d_results_step20_train_latest/train_13082_a_1_fused.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/3d_results_step20_train_latest/train_13082_a_1_fused.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..b6e674259ef09b5ceea1850184ed58ab1c1c426a --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/3d_results_step20_train_latest/train_13082_a_1_fused.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83f067ae31ed50afd9a87c3c1ff7a9918b2792e4f06ab9acc35ba405c38837cb +size 69422987 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/epoch=000056.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/epoch=000056.ckpt new file mode 100644 index 0000000000000000000000000000000000000000..48716c3b9f7f7e393d8b15a4ee4d48bd467d695a --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/epoch=000056.ckpt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ff10e4ffee33a000282e6d0b62bc611e6d7b3e1050789ee5e09d1a8022e0af2 +size 3016768189 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/epoch=000063.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/epoch=000063.ckpt new file mode 100644 index 0000000000000000000000000000000000000000..8e9342799bb2bac2a95875197e38088aa63f7769 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/epoch=000063.ckpt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e57dc069f6a74f09eed7c839d5b0aa6ebd2da79309622d5b9af6af81f3cf35b8 +size 3016768444 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/epoch=000078.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/epoch=000078.ckpt new file mode 100644 index 0000000000000000000000000000000000000000..bb40a176d6e0ffaee728f32379dbf69bb8e8a7fe --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/epoch=000078.ckpt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37de355da931cd6f8a36437a6629cf1b2f9fdff014076869cb87efbfcd2d8d84 +size 3016768444 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/last.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/last.ckpt new file mode 100644 index 0000000000000000000000000000000000000000..bb40a176d6e0ffaee728f32379dbf69bb8e8a7fe --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/last.ckpt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37de355da931cd6f8a36437a6629cf1b2f9fdff014076869cb87efbfcd2d8d84 +size 3016768444 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-29T14-12-09-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-29T14-12-09-lightning.yaml new file mode 100644 index 0000000000000000000000000000000000000000..af576c4f4222ea130206951d1e6274cd32183a05 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-29T14-12-09-lightning.yaml @@ -0,0 +1,12 @@ +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: false + trainer: + benchmark: true + accelerator: ddp + gpus: 0,1,2,3, diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-29T14-12-09-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-29T14-12-09-project.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c40b7c4cc710a034b88c8dbafbbcc2248bb880ee --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-29T14-12-09-project.yaml @@ -0,0 +1,61 @@ +model: + base_learning_rate: 5.0e-06 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.012 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + conditioning_key: crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.52 + use_ema: false + ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt + load_only_unet: true + fix_t: true + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 32 + out_channels: 16 + model_channels: 224 + attention_resolutions: + - 8 + - 4 + - 2 + num_res_blocks: 2 + channel_mult: + - 1 + - 2 + - 3 + - 4 + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: true + legacy: false +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv + labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-30T17-42-15-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-30T17-42-15-lightning.yaml new file mode 100644 index 0000000000000000000000000000000000000000..230511a02424ed10f059b373a04513b0024480d8 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-30T17-42-15-lightning.yaml @@ -0,0 +1,13 @@ +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: false + trainer: + benchmark: true + accelerator: ddp + gpus: 0,1,2,3, + resume_from_checkpoint: ./logs/full_ct_3d_with_body_mask2/checkpoints/last.ckpt diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-30T17-42-15-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-30T17-42-15-project.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c40b7c4cc710a034b88c8dbafbbcc2248bb880ee --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-30T17-42-15-project.yaml @@ -0,0 +1,61 @@ +model: + base_learning_rate: 5.0e-06 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.012 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + conditioning_key: crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.52 + use_ema: false + ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt + load_only_unet: true + fix_t: true + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 32 + out_channels: 16 + model_channels: 224 + attention_resolutions: + - 8 + - 4 + - 2 + num_res_blocks: 2 + channel_mult: + - 1 + - 2 + - 3 + - 4 + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: true + legacy: false +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv + labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-03-07-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-03-07-lightning.yaml new file mode 100644 index 0000000000000000000000000000000000000000..230511a02424ed10f059b373a04513b0024480d8 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-03-07-lightning.yaml @@ -0,0 +1,13 @@ +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: false + trainer: + benchmark: true + accelerator: ddp + gpus: 0,1,2,3, + resume_from_checkpoint: ./logs/full_ct_3d_with_body_mask2/checkpoints/last.ckpt diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-03-07-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-03-07-project.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c40b7c4cc710a034b88c8dbafbbcc2248bb880ee --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-03-07-project.yaml @@ -0,0 +1,61 @@ +model: + base_learning_rate: 5.0e-06 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.012 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + conditioning_key: crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.52 + use_ema: false + ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt + load_only_unet: true + fix_t: true + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 32 + out_channels: 16 + model_channels: 224 + attention_resolutions: + - 8 + - 4 + - 2 + num_res_blocks: 2 + channel_mult: + - 1 + - 2 + - 3 + - 4 + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: true + legacy: false +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv + labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-18-06-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-18-06-lightning.yaml new file mode 100644 index 0000000000000000000000000000000000000000..230511a02424ed10f059b373a04513b0024480d8 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-18-06-lightning.yaml @@ -0,0 +1,13 @@ +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 100000000 + max_images: 16 + increase_log_steps: false + trainer: + benchmark: true + accelerator: ddp + gpus: 0,1,2,3, + resume_from_checkpoint: ./logs/full_ct_3d_with_body_mask2/checkpoints/last.ckpt diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-18-06-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-18-06-project.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c40b7c4cc710a034b88c8dbafbbcc2248bb880ee --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-18-06-project.yaml @@ -0,0 +1,61 @@ +model: + base_learning_rate: 5.0e-06 + target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.012 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: volume_data + cond_stage_key: volume_seg_and_text + conditioning_key: crossattn + text_enc: custom + image_size: 64 + channels: 16 + monitor: val/loss_simple_ema + scale_factor: 1.52 + use_ema: false + ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt + load_only_unet: true + fix_t: true + unet_config: + target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel + params: + image_size: 64 + in_channels: 32 + out_channels: 16 + model_channels: 224 + attention_resolutions: + - 8 + - 4 + - 2 + num_res_blocks: 2 + channel_mult: + - 1 + - 2 + - 3 + - 4 + num_head_channels: 32 + use_spatial_transformer: true + context_dim: 768 + transformer_depth: 1 + use_checkpoint: true + legacy: false +data: + target: main.DataModuleFromConfig + params: + batch_size: 4 + num_workers: 16 + wrap: false + train: + target: ldm.data.ct_clip_data_train.CTReportDataset + params: + data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv + validation: + target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer + params: + data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed + csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv + labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/meta.experiment new file mode 100644 index 0000000000000000000000000000000000000000..97981c85b19356b7b98588f6cdd047bd3b902ea0 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/meta.experiment @@ -0,0 +1 @@ +{"name": "testtube", "version": 0, "tags_path": "logs/full_ct_3d_with_body_mask2/testtube/version_0/meta_tags.csv", "metrics_path": "logs/full_ct_3d_with_body_mask2/testtube/version_0/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-29 14:13:17.969983", "exp_hash": "testtube_v0"} \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/meta_tags.csv new file mode 100644 index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/meta_tags.csv @@ -0,0 +1 @@ +key,value diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/metrics.csv new file mode 100644 index 0000000000000000000000000000000000000000..e330c7ab3b8304529c64f11158abe27fc124cbad --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/metrics.csv @@ -0,0 +1,444 @@ +train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch +0.23908032476902008,0.0011343687074258924,0.23908032476902008,49.0,0,2025-10-29 14:20:21.911425,,,,,,,,, +0.30251675844192505,0.002104790648445487,0.30251675844192505,99.0,0,2025-10-29 14:24:35.160852,,,,,,,,, +0.35154110193252563,0.001948594581335783,0.35154110193252563,149.0,0,2025-10-29 14:28:49.632750,,,,,,,,, +0.15310753881931305,0.0005334988818503916,0.15310753881931305,199.0,0,2025-10-29 14:33:02.088980,,,,,,,,, +0.32497289776802063,0.0016616820357739925,0.32497289776802063,249.0,0,2025-10-29 14:37:16.200807,,,,,,,,, +0.38051292300224304,0.0017145754536613822,0.38051292300224304,299.0,0,2025-10-29 14:41:28.584657,,,,,,,,, +,,,,0,2025-10-29 14:45:34.840615,0.3087482154369354,0.003038213588297367,0.3087482154369354,0.2975386381149292,0.0053969016298651695,0.2975386381149292,,, +,,,,0,2025-10-29 14:46:17.433329,,,,,,,0.3152048885822296,0.004895733203738928,0.3152048885822296 +0.19669345021247864,0.0006730232271365821,0.19669345021247864,349.0,1,2025-10-29 14:49:40.189741,,,,,,,,, +0.11191047728061676,0.00039595545968040824,0.11191047728061676,399.0,1,2025-10-29 14:53:53.039486,,,,,,,,, +0.3523745834827423,0.0029680172447115183,0.3523745834827423,449.0,1,2025-10-29 14:58:07.596508,,,,,,,,, +0.17951560020446777,0.0006164076621644199,0.17951560020446777,499.0,1,2025-10-29 15:02:20.361401,,,,,,,,, +0.399543434381485,0.002303391695022583,0.399543434381485,549.0,1,2025-10-29 15:06:35.113002,,,,,,,,, +0.11659114807844162,0.00039954521344043314,0.11659114807844162,599.0,1,2025-10-29 15:10:48.161057,,,,,,,,, +,,,,1,2025-10-29 15:16:06.212567,0.33782750368118286,0.0042132167145609856,0.33782750368118286,0.3167296051979065,0.0031394646503031254,0.3167296051979065,,, +,,,,1,2025-10-29 15:16:52.269576,,,,,,,0.30598723888397217,0.003654726315289736,0.30598723888397217 +0.5553275942802429,0.046405546367168427,0.5553275942802429,649.0,2,2025-10-29 15:18:46.422272,,,,,,,,, +0.35899263620376587,0.0016843070043250918,0.35899263620376587,699.0,2,2025-10-29 15:22:59.709975,,,,,,,,, +0.42693978548049927,0.0046363393776118755,0.42693978548049927,749.0,2,2025-10-29 15:27:14.803748,,,,,,,,, +0.5343826413154602,0.0031069060787558556,0.5343826413154602,799.0,2,2025-10-29 15:31:28.497592,,,,,,,,, +0.19179260730743408,0.0011462504044175148,0.19179260730743408,849.0,2,2025-10-29 15:35:44.461528,,,,,,,,, +0.4685225784778595,0.005754082463681698,0.4685225784778595,899.0,2,2025-10-29 15:39:58.458888,,,,,,,,, +0.05294087901711464,0.00020188180496916175,0.05294087901711464,949.0,2,2025-10-29 15:44:13.807823,,,,,,,,, +,,,,2,2025-10-29 15:46:48.430734,0.2542015314102173,0.0017268877709284425,0.2542015314102173,0.3296174705028534,0.0061865877360105515,0.3296174705028534,,, +,,,,2,2025-10-29 15:47:31.905512,,,,,,,0.29082003235816956,0.006203934084624052,0.29082003235816956 +0.35446977615356445,0.002602964174002409,0.35446977615356445,999.0,3,2025-10-29 15:52:14.826606,,,,,,,,, +0.2732226550579071,0.0016087318072095513,0.2732226550579071,1049.0,3,2025-10-29 15:56:30.531924,,,,,,,,, +0.15200234949588776,0.0005852255853824317,0.15200234949588776,1099.0,3,2025-10-29 16:00:44.289340,,,,,,,,, +0.18980398774147034,0.0006420011050067842,0.18980398774147034,1149.0,3,2025-10-29 16:04:59.922288,,,,,,,,, +0.16636742651462555,0.0005592307425104082,0.16636742651462555,1199.0,3,2025-10-29 16:09:14.132949,,,,,,,,, +0.15863154828548431,0.0006177073810249567,0.15863154828548431,1249.0,3,2025-10-29 16:13:29.687977,,,,,,,,, +,,,,3,2025-10-29 16:17:33.475772,0.2833861708641052,0.005222904961556196,0.2833861708641052,0.2626101076602936,0.0034472059924155474,0.2626101076602936,,, +,,,,3,2025-10-29 16:18:18.130951,,,,,,,0.30323734879493713,0.005902774631977081,0.30323734879493713 +0.20627662539482117,0.000768955098465085,0.20627662539482117,1299.0,4,2025-10-29 16:21:21.069481,,,,,,,,, +0.33012765645980835,0.009327958337962627,0.33012765645980835,1349.0,4,2025-10-29 16:25:36.755603,,,,,,,,, +0.30601876974105835,0.04063171520829201,0.30601876974105835,1399.0,4,2025-10-29 16:29:50.616972,,,,,,,,, +0.36119428277015686,0.007217325735837221,0.36119428277015686,1449.0,4,2025-10-29 16:34:06.226460,,,,,,,,, +0.3552730679512024,0.0015500012086704373,0.3552730679512024,1499.0,4,2025-10-29 16:38:20.428779,,,,,,,,, +0.6961968541145325,0.006548278033733368,0.6961968541145325,1549.0,4,2025-10-29 16:42:36.543000,,,,,,,,, +,,,,4,2025-10-29 16:48:12.330141,0.39142531156539917,0.005813002586364746,0.39142531156539917,0.2987259328365326,0.003481501480564475,0.2987259328365326,,, +,,,,4,2025-10-29 16:48:55.482655,,,,,,,0.2981264591217041,0.0043659214861691,0.2981264591217041 +0.2536710500717163,0.0029625999741256237,0.2536710500717163,1599.0,5,2025-10-29 16:50:32.539156,,,,,,,,, +0.5945897698402405,0.00790607649832964,0.5945897698402405,1649.0,5,2025-10-29 16:54:48.200182,,,,,,,,, +0.47038859128952026,0.0027692713774740696,0.47038859128952026,1699.0,5,2025-10-29 16:59:02.316873,,,,,,,,, +0.18040227890014648,0.0006857349071651697,0.18040227890014648,1749.0,5,2025-10-29 17:03:18.247760,,,,,,,,, +0.43785324692726135,0.005962334107607603,0.43785324692726135,1799.0,5,2025-10-29 17:07:32.662275,,,,,,,,, +0.6013099551200867,0.01814509555697441,0.6013099551200867,1849.0,5,2025-10-29 17:11:48.921558,,,,,,,,, +0.2369524985551834,0.004086245317012072,0.2369524985551834,1899.0,5,2025-10-29 17:16:03.182028,,,,,,,,, +,,,,5,2025-10-29 17:18:59.860780,0.2867490351200104,0.002114885253831744,0.2867490351200104,0.300796777009964,0.002119652461260557,0.300796777009964,,, +,,,,5,2025-10-29 17:19:23.808254,,,,,,,0.3203050494194031,0.005419914610683918,0.3203050494194031 +0.44585904479026794,0.1289890855550766,0.44585904479026794,1949.0,6,2025-10-29 17:24:06.402273,,,,,,,,, +0.29628267884254456,0.0012116719735786319,0.29628267884254456,1999.0,6,2025-10-29 17:28:20.598398,,,,,,,,, +0.26807722449302673,0.0010985847329720855,0.26807722449302673,2049.0,6,2025-10-29 17:32:36.884155,,,,,,,,, +0.2691807448863983,0.007393568754196167,0.2691807448863983,2099.0,6,2025-10-29 17:36:51.324779,,,,,,,,, +0.16139642894268036,0.0006282184622250497,0.16139642894268036,2149.0,6,2025-10-29 17:41:07.660840,,,,,,,,, +0.18395453691482544,0.000815959763713181,0.18395453691482544,2199.0,6,2025-10-29 17:45:22.359093,,,,,,,,, +,,,,6,2025-10-29 17:49:46.836086,0.2588304579257965,0.0031222437974065542,0.2588304579257965,0.2873288691043854,0.003463541157543659,0.2873288691043854,,, +,,,,6,2025-10-29 17:50:30.752849,,,,,,,0.294228732585907,0.005789300426840782,0.294228732585907 +0.3701322078704834,0.0014451886527240276,0.3701322078704834,2249.0,7,2025-10-29 17:53:17.466569,,,,,,,,, +0.2957797050476074,0.0011649474035948515,0.2957797050476074,2299.0,7,2025-10-29 17:57:31.775046,,,,,,,,, +0.3366512358188629,0.0013882165076211095,0.3366512358188629,2349.0,7,2025-10-29 18:01:47.786173,,,,,,,,, +0.3265620768070221,0.0022930356208235025,0.3265620768070221,2399.0,7,2025-10-29 18:06:02.505432,,,,,,,,, +0.12117893248796463,0.00041585727012716234,0.12117893248796463,2449.0,7,2025-10-29 18:10:18.835232,,,,,,,,, +0.16617342829704285,0.000591142219491303,0.16617342829704285,2499.0,7,2025-10-29 18:14:33.730207,,,,,,,,, +,,,,7,2025-10-29 18:20:33.117540,0.3469368517398834,0.002777489135041833,0.3469368517398834,0.31635427474975586,0.0024765271227806807,0.31635427474975586,,, +,,,,7,2025-10-29 18:20:54.154785,,,,,,,0.28586575388908386,0.003923572134226561,0.28586575388908386 +0.20669816434383392,0.0006971092661842704,0.20669816434383392,2549.0,8,2025-10-29 18:22:13.499846,,,,,,,,, +0.3896293044090271,0.0026990813203155994,0.3896293044090271,2599.0,8,2025-10-29 18:26:28.340616,,,,,,,,, +0.37768790125846863,0.013755994848906994,0.37768790125846863,2649.0,8,2025-10-29 18:30:45.146314,,,,,,,,, +0.2957230806350708,0.001236134790815413,0.2957230806350708,2699.0,8,2025-10-29 18:35:00.194835,,,,,,,,, +0.4221704304218292,0.0022278116084635258,0.4221704304218292,2749.0,8,2025-10-29 18:39:17.304197,,,,,,,,, +0.2938273847103119,0.0028684185817837715,0.2938273847103119,2799.0,8,2025-10-29 18:43:32.418921,,,,,,,,, +0.16528426110744476,0.000611891970038414,0.16528426110744476,2849.0,8,2025-10-29 18:47:48.769000,,,,,,,,, +,,,,8,2025-10-29 18:51:01.089488,0.3076690137386322,0.004200373310595751,0.3076690137386322,0.2640102803707123,0.002116052433848381,0.2640102803707123,,, +,,,,8,2025-10-29 18:51:47.002341,,,,,,,0.2955467104911804,0.004480264149606228,0.2955467104911804 +0.25988778471946716,0.0009303645347245038,0.25988778471946716,2899.0,9,2025-10-29 18:55:49.466592,,,,,,,,, +0.12805095314979553,0.0004418003954924643,0.12805095314979553,2949.0,9,2025-10-29 19:00:06.230860,,,,,,,,, +0.22989481687545776,0.0008421807433478534,0.22989481687545776,2999.0,9,2025-10-29 19:04:21.426320,,,,,,,,, +0.3598778545856476,0.0049188872799277306,0.3598778545856476,3049.0,9,2025-10-29 19:08:38.216014,,,,,,,,, +0.25674858689308167,0.0009910238441079855,0.25674858689308167,3099.0,9,2025-10-29 19:12:53.360334,,,,,,,,, +0.26137423515319824,0.0010072096483781934,0.26137423515319824,3149.0,9,2025-10-29 19:17:10.347806,,,,,,,,, +,,,,9,2025-10-29 19:21:53.539371,0.28881487250328064,0.0055525475181639194,0.28881487250328064,0.29950574040412903,0.006536771543323994,0.29950574040412903,,, +,,,,9,2025-10-29 19:22:16.161985,,,,,,,0.28228050470352173,0.003854431677609682,0.28228050470352173 +0.058755528181791306,0.00023000678629614413,0.058755528181791306,3199.0,10,2025-10-29 19:24:44.583959,,,,,,,,, +0.4030425250530243,0.003599276067689061,0.4030425250530243,3249.0,10,2025-10-29 19:29:00.432326,,,,,,,,, +0.18233664333820343,0.0006565888761542737,0.18233664333820343,3299.0,10,2025-10-29 19:33:15.113670,,,,,,,,, +0.2977958023548126,0.0013435787986963987,0.2977958023548126,3349.0,10,2025-10-29 19:37:31.493271,,,,,,,,, +0.22787025570869446,0.0009271143353544176,0.22787025570869446,3399.0,10,2025-10-29 19:41:46.279972,,,,,,,,, +0.26149415969848633,0.001024951576255262,0.26149415969848633,3449.0,10,2025-10-29 19:46:02.851454,,,,,,,,, +,,,,10,2025-10-29 19:52:15.352156,0.25641798973083496,0.0017995418747887015,0.25641798973083496,0.2672744393348694,0.004761606454849243,0.2672744393348694,,, +,,,,10,2025-10-29 19:52:56.922059,,,,,,,0.2889505624771118,0.003584904596209526,0.2889505624771118 +0.32904037833213806,0.0013656936353072524,0.32904037833213806,3499.0,11,2025-10-29 19:54:02.490052,,,,,,,,, +0.41990071535110474,0.006398315541446209,0.41990071535110474,3549.0,11,2025-10-29 19:58:19.164900,,,,,,,,, +0.5369344353675842,0.005614943336695433,0.5369344353675842,3599.0,11,2025-10-29 20:02:34.100258,,,,,,,,, +0.20289723575115204,0.0008842325187288225,0.20289723575115204,3649.0,11,2025-10-29 20:06:50.835719,,,,,,,,, +0.09660141915082932,0.00034390934160910547,0.09660141915082932,3699.0,11,2025-10-29 20:11:05.881758,,,,,,,,, +0.17780974507331848,0.0006014474201947451,0.17780974507331848,3749.0,11,2025-10-29 20:15:23.119253,,,,,,,,, +0.3768346905708313,0.002366062253713608,0.3768346905708313,3799.0,11,2025-10-29 20:19:38.125199,,,,,,,,, +,,,,11,2025-10-29 20:23:13.175652,0.31738319993019104,0.0026417311746627092,0.31738319993019104,0.30670517683029175,0.008628605864942074,0.30670517683029175,,, +,,,,11,2025-10-29 20:23:35.448089,,,,,,,0.3013068437576294,0.004326937720179558,0.3013068437576294 +0.3649531900882721,0.00457545043900609,0.3649531900882721,3849.0,12,2025-10-29 20:27:09.519321,,,,,,,,, +0.6168498992919922,0.004650406073778868,0.6168498992919922,3899.0,12,2025-10-29 20:31:23.875147,,,,,,,,, +0.16271907091140747,0.000570900272578001,0.16271907091140747,3949.0,12,2025-10-29 20:35:40.184001,,,,,,,,, +0.3736174702644348,0.006089617498219013,0.3736174702644348,3999.0,12,2025-10-29 20:39:54.781094,,,,,,,,, +0.31644406914711,0.0026186092291027308,0.31644406914711,4049.0,12,2025-10-29 20:44:10.915775,,,,,,,,, +0.4868186414241791,0.002435473958030343,0.4868186414241791,4099.0,12,2025-10-29 20:48:25.428957,,,,,,,,, +,,,,12,2025-10-29 20:53:33.269638,0.3274848461151123,0.010460731573402882,0.3274848461151123,0.2818436026573181,0.004787106532603502,0.2818436026573181,,, +,,,,12,2025-10-29 20:53:56.050871,,,,,,,0.3032332956790924,0.004012937191873789,0.3032332956790924 +0.46721750497817993,0.0038812626153230667,0.46721750497817993,4149.0,13,2025-10-29 20:56:06.914834,,,,,,,,, +0.2574557960033417,0.0011555439559742808,0.2574557960033417,4199.0,13,2025-10-29 21:00:22.156169,,,,,,,,, +0.5270809531211853,0.12994655966758728,0.5270809531211853,4249.0,13,2025-10-29 21:04:38.515410,,,,,,,,, +0.46558013558387756,0.0034257094375789165,0.46558013558387756,4299.0,13,2025-10-29 21:08:53.143775,,,,,,,,, +0.4181281626224518,0.008208311162889004,0.4181281626224518,4349.0,13,2025-10-29 21:13:09.640278,,,,,,,,, +0.10323469340801239,0.0003559025062713772,0.10323469340801239,4399.0,13,2025-10-29 21:17:24.496505,,,,,,,,, +0.2582753002643585,0.00108713295776397,0.2582753002643585,4449.0,13,2025-10-29 21:21:41.076199,,,,,,,,, +,,,,13,2025-10-29 21:24:07.409991,0.2762134075164795,0.0015854613156989217,0.2762134075164795,0.3195546269416809,0.0021276683546602726,0.3195546269416809,,, +,,,,13,2025-10-29 21:24:30.787674,,,,,,,0.29791566729545593,0.003995195031166077,0.29791566729545593 +0.24854815006256104,0.0010034370934590697,0.24854815006256104,4499.0,14,2025-10-29 21:29:16.988551,,,,,,,,, +0.24162444472312927,0.0008333681616932154,0.24162444472312927,4549.0,14,2025-10-29 21:33:33.882121,,,,,,,,, +0.25108715891838074,0.0008703142520971596,0.25108715891838074,4599.0,14,2025-10-29 21:37:49.352197,,,,,,,,, +0.19934417307376862,0.0011348300613462925,0.19934417307376862,4649.0,14,2025-10-29 21:42:06.341619,,,,,,,,, +0.3453989326953888,0.003260394325479865,0.3453989326953888,4699.0,14,2025-10-29 21:46:21.604882,,,,,,,,, +0.2962069511413574,0.0016868726816028357,0.2962069511413574,4749.0,14,2025-10-29 21:50:38.650398,,,,,,,,, +,,,,14,2025-10-29 21:54:35.919429,0.35571378469467163,0.004675368778407574,0.35571378469467163,0.2749635577201843,0.002560048596933484,0.2749635577201843,,, +,,,,14,2025-10-29 21:54:59.899537,,,,,,,0.2885216474533081,0.004023636691272259,0.2885216474533081 +0.21757672727108002,0.0007945331162773073,0.21757672727108002,4799.0,15,2025-10-29 21:58:16.581957,,,,,,,,, +0.1768243908882141,0.0007810973911546171,0.1768243908882141,4849.0,15,2025-10-29 22:02:32.953609,,,,,,,,, +0.23817910254001617,0.0008477979572489858,0.23817910254001617,4899.0,15,2025-10-29 22:06:47.738946,,,,,,,,, +0.20312687754631042,0.0007677834946662188,0.20312687754631042,4949.0,15,2025-10-29 22:11:03.898677,,,,,,,,, +0.0716928169131279,0.0002622066531330347,0.0716928169131279,4999.0,15,2025-10-29 22:15:18.659198,,,,,,,,, +0.2998744249343872,0.0016512672882527113,0.2998744249343872,5049.0,15,2025-10-29 22:19:34.991302,,,,,,,,, +,,,,15,2025-10-29 22:25:02.452339,0.2921454906463623,0.005413286853581667,0.2921454906463623,0.31411612033843994,0.005804493557661772,0.31411612033843994,,, +,,,,15,2025-10-29 22:25:24.569908,,,,,,,0.2922162413597107,0.004339145962148905,0.2922162413597107 +0.22835403680801392,0.0007976272027008235,0.22835403680801392,5099.0,16,2025-10-29 22:27:17.962399,,,,,,,,, +0.20761585235595703,0.0007047537947073579,0.20761585235595703,5149.0,16,2025-10-29 22:31:34.307597,,,,,,,,, +0.3785971403121948,0.001499716192483902,0.3785971403121948,5199.0,16,2025-10-29 22:35:49.451341,,,,,,,,, +0.2895170748233795,0.0012935514096170664,0.2895170748233795,5249.0,16,2025-10-29 22:40:05.950322,,,,,,,,, +0.2880163788795471,0.001471292576752603,0.2880163788795471,5299.0,16,2025-10-29 22:44:20.950758,,,,,,,,, +0.5521544218063354,0.042403124272823334,0.5521544218063354,5349.0,16,2025-10-29 22:48:37.813462,,,,,,,,, +0.3307924270629883,0.005263160448521376,0.3307924270629883,5399.0,16,2025-10-29 22:52:52.946232,,,,,,,,, +,,,,16,2025-10-29 22:55:37.143184,0.29342490434646606,0.0029779935721307993,0.29342490434646606,0.3171903192996979,0.002767461584880948,0.3171903192996979,,, +,,,,16,2025-10-29 22:56:02.187800,,,,,,,0.286733478307724,0.00416194275021553,0.286733478307724 +0.16122159361839294,0.0005633566761389375,0.16122159361839294,5449.0,17,2025-10-29 23:00:33.976050,,,,,,,,, +0.07416174560785294,0.00026965569122694433,0.07416174560785294,5499.0,17,2025-10-29 23:04:49.755002,,,,,,,,, +0.1058124527335167,0.00037149470881558955,0.1058124527335167,5549.0,17,2025-10-29 23:09:06.100603,,,,,,,,, +0.2340269535779953,0.0009858367266133428,0.2340269535779953,5599.0,17,2025-10-29 23:13:20.785175,,,,,,,,, +0.24774792790412903,0.000991667271591723,0.24774792790412903,5649.0,17,2025-10-29 23:17:37.346268,,,,,,,,, +0.31507426500320435,0.001468466012738645,0.31507426500320435,5699.0,17,2025-10-29 23:21:52.295176,,,,,,,,, +,,,,17,2025-10-29 23:26:08.666921,0.3396616280078888,0.004507793113589287,0.3396616280078888,0.3129202723503113,0.0030057665426284075,0.3129202723503113,,, +,,,,17,2025-10-29 23:26:29.639353,,,,,,,0.2799444794654846,0.004336171317845583,0.2799444794654846 +0.2779267728328705,0.003055351786315441,0.2779267728328705,5749.0,18,2025-10-29 23:29:30.645672,,,,,,,,, +0.3259534239768982,0.0012066791532561183,0.3259534239768982,5799.0,18,2025-10-29 23:33:45.869312,,,,,,,,, +0.26659664511680603,0.0010486829560250044,0.26659664511680603,5849.0,18,2025-10-29 23:38:02.795090,,,,,,,,, +0.24334722757339478,0.0009089027880690992,0.24334722757339478,5899.0,18,2025-10-29 23:42:18.129731,,,,,,,,, +0.1591944694519043,0.0005510518094524741,0.1591944694519043,5949.0,18,2025-10-29 23:46:35.247481,,,,,,,,, +0.5015321969985962,0.0038959665689617395,0.5015321969985962,5999.0,18,2025-10-29 23:50:50.564224,,,,,,,,, +,,,,18,2025-10-29 23:56:39.353029,0.28558459877967834,0.0028743084985762835,0.28558459877967834,0.27103811502456665,0.0019692794885486364,0.27103811502456665,,, +,,,,18,2025-10-29 23:57:00.072859,,,,,,,0.2978723347187042,0.004476546309888363,0.2978723347187042 +0.2768291234970093,0.0011063956189900637,0.2768291234970093,6049.0,19,2025-10-29 23:58:19.163883,,,,,,,,, +0.1521957665681839,0.0005162688321433961,0.1521957665681839,6099.0,19,2025-10-30 00:02:33.687922,,,,,,,,, +0.2179100662469864,0.0009199402993544936,0.2179100662469864,6149.0,19,2025-10-30 00:06:50.271707,,,,,,,,, +0.18621601164340973,0.0006440104334615171,0.18621601164340973,6199.0,19,2025-10-30 00:11:05.271925,,,,,,,,, +0.27869558334350586,0.00114060181658715,0.27869558334350586,6249.0,19,2025-10-30 00:15:22.208428,,,,,,,,, +0.30042603611946106,0.004672468174248934,0.30042603611946106,6299.0,19,2025-10-30 00:19:37.410059,,,,,,,,, +0.13567687571048737,0.00046529906103387475,0.13567687571048737,6349.0,19,2025-10-30 00:23:53.984037,,,,,,,,, +,,,,19,2025-10-30 00:26:55.978121,0.2680910527706146,0.0028161867521703243,0.2680910527706146,0.3115180730819702,0.004423291422426701,0.3115180730819702,,, +,,,,19,2025-10-30 00:27:17.776767,,,,,,,0.29711952805519104,0.006253817584365606,0.29711952805519104 +0.08206604421138763,0.0002899030514527112,0.08206604421138763,6399.0,20,2025-10-30 00:31:31.440880,,,,,,,,, +0.1410166621208191,0.0004904220695607364,0.1410166621208191,6449.0,20,2025-10-30 00:35:48.307020,,,,,,,,, +0.36372116208076477,0.005780098028481007,0.36372116208076477,6499.0,20,2025-10-30 00:40:03.566616,,,,,,,,, +0.041469756513834,0.00016830461390782148,0.041469756513834,6549.0,20,2025-10-30 00:44:20.064926,,,,,,,,, +0.333352655172348,0.002195443259552121,0.333352655172348,6599.0,20,2025-10-30 00:48:34.634935,,,,,,,,, +0.11755424737930298,0.00044962094398215413,0.11755424737930298,6649.0,20,2025-10-30 00:52:51.026206,,,,,,,,, +,,,,20,2025-10-30 00:57:25.953976,0.32358604669570923,0.0022557415068149567,0.32358604669570923,0.30950358510017395,0.0036284541711211205,0.30950358510017395,,, +,,,,20,2025-10-30 00:57:49.085931,,,,,,,0.28399115800857544,0.0034157780464738607,0.28399115800857544 +0.339813768863678,0.0019359400030225515,0.339813768863678,6699.0,21,2025-10-30 01:00:26.051657,,,,,,,,, +0.3985264301300049,0.0025944982189685106,0.3985264301300049,6749.0,21,2025-10-30 01:04:42.308309,,,,,,,,, +0.21325701475143433,0.0009544118074700236,0.21325701475143433,6799.0,21,2025-10-30 01:08:56.386397,,,,,,,,, +0.22746406495571136,0.0008633260149508715,0.22746406495571136,6849.0,21,2025-10-30 01:13:12.764166,,,,,,,,, +0.4769253432750702,0.022238967940211296,0.4769253432750702,6899.0,21,2025-10-30 01:17:27.382195,,,,,,,,, +0.18236446380615234,0.0006172828143462539,0.18236446380615234,6949.0,21,2025-10-30 01:21:43.878016,,,,,,,,, +,,,,21,2025-10-30 01:27:47.549629,0.3165885806083679,0.003783063031733036,0.3165885806083679,0.3013854920864105,0.004883608780801296,0.3013854920864105,,, +,,,,21,2025-10-30 01:28:09.846091,,,,,,,0.28164348006248474,0.004529633559286594,0.28164348006248474 +0.5389054417610168,0.005310563370585442,0.5389054417610168,6999.0,22,2025-10-30 01:29:09.846772,,,,,,,,, +0.1119823083281517,0.00038220800342969596,0.1119823083281517,7049.0,22,2025-10-30 01:33:26.814652,,,,,,,,, +0.32137876749038696,0.0017616460099816322,0.32137876749038696,7099.0,22,2025-10-30 01:37:41.806603,,,,,,,,, +0.06081698089838028,0.00022157584317028522,0.06081698089838028,7149.0,22,2025-10-30 01:41:58.477232,,,,,,,,, +0.31852272152900696,0.001418408122844994,0.31852272152900696,7199.0,22,2025-10-30 01:46:13.558341,,,,,,,,, +0.2679924964904785,0.000982447643764317,0.2679924964904785,7249.0,22,2025-10-30 01:50:30.345762,,,,,,,,, +0.32944297790527344,0.0036667732056230307,0.32944297790527344,7299.0,22,2025-10-30 01:54:44.893562,,,,,,,,, +,,,,22,2025-10-30 01:58:15.719813,0.3248562812805176,0.002325542038306594,0.3248562812805176,0.28342995047569275,0.010237275622785091,0.28342995047569275,,, +,,,,22,2025-10-30 01:58:37.018112,,,,,,,0.2921651303768158,0.005806222092360258,0.2921651303768158 +0.1528352051973343,0.0005288815009407699,0.1528352051973343,7349.0,23,2025-10-30 02:02:23.637203,,,,,,,,, +0.28769010305404663,0.0010874244617298245,0.28769010305404663,7399.0,23,2025-10-30 02:06:38.646355,,,,,,,,, +0.09771580994129181,0.0003473516262602061,0.09771580994129181,7449.0,23,2025-10-30 02:10:55.376987,,,,,,,,, +0.3950721323490143,0.0017771971179172397,0.3950721323490143,7499.0,23,2025-10-30 02:15:10.524409,,,,,,,,, +0.08358774334192276,0.00030172266997396946,0.08358774334192276,7549.0,23,2025-10-30 02:19:27.257478,,,,,,,,, +0.3660825192928314,0.003734664060175419,0.3660825192928314,7599.0,23,2025-10-30 02:23:42.724354,,,,,,,,, +,,,,23,2025-10-30 02:28:38.028517,0.28217217326164246,0.0073500438593328,0.28217217326164246,0.2825459837913513,0.0017233813414350152,0.2825459837913513,,, +,,,,23,2025-10-30 02:29:04.078948,,,,,,,0.29169636964797974,0.004196641501039267,0.29169636964797974 +0.16770140826702118,0.0006813137442804873,0.16770140826702118,7649.0,24,2025-10-30 02:31:13.619163,,,,,,,,, +0.06883910298347473,0.00025173250469379127,0.06883910298347473,7699.0,24,2025-10-30 02:35:28.290544,,,,,,,,, +0.32396796345710754,0.019826794043183327,0.32396796345710754,7749.0,24,2025-10-30 02:39:44.361649,,,,,,,,, +0.331307977437973,0.0016301594441756606,0.331307977437973,7799.0,24,2025-10-30 02:43:59.379888,,,,,,,,, +0.44257301092147827,0.010922032408416271,0.44257301092147827,7849.0,24,2025-10-30 02:48:15.961679,,,,,,,,, +0.30672338604927063,0.001132725621573627,0.30672338604927063,7899.0,24,2025-10-30 02:52:30.672265,,,,,,,,, +0.5011573433876038,0.0022920125629752874,0.5011573433876038,7949.0,24,2025-10-30 02:56:44.402104,,,,,,,,, +,,,,24,2025-10-30 02:59:02.333153,0.3107577860355377,0.007751108147203922,0.3107577860355377,0.28748953342437744,0.002658963669091463,0.28748953342437744,,, +,,,,24,2025-10-30 02:59:24.166724,,,,,,,0.28150755167007446,0.00516370078548789,0.28150755167007446 +0.3829401731491089,0.0019786872435361147,0.3829401731491089,7999.0,25,2025-10-30 03:04:23.514849,,,,,,,,, +0.3627878427505493,0.008258693851530552,0.3627878427505493,8049.0,25,2025-10-30 03:08:39.457195,,,,,,,,, +0.1190975159406662,0.0004297931445762515,0.1190975159406662,8099.0,25,2025-10-30 03:12:54.009279,,,,,,,,, +0.38661864399909973,0.0030025753658264875,0.38661864399909973,8149.0,25,2025-10-30 03:17:10.393731,,,,,,,,, +0.4453372359275818,0.012607538141310215,0.4453372359275818,8199.0,25,2025-10-30 03:21:25.365879,,,,,,,,, +0.1155056431889534,0.0004025315574835986,0.1155056431889534,8249.0,25,2025-10-30 03:25:41.528070,,,,,,,,, +,,,,25,2025-10-30 03:29:27.173300,0.2579275667667389,0.004039929714053869,0.2579275667667389,0.3136349022388458,0.00452826265245676,0.3136349022388458,,, +,,,,25,2025-10-30 03:30:32.813512,,,,,,,0.29395806789398193,0.004408984445035458,0.29395806789398193 +0.10960201919078827,0.00038947947905398905,0.10960201919078827,8299.0,26,2025-10-30 03:34:03.794311,,,,,,,,, +0.481776624917984,0.002200528746470809,0.481776624917984,8349.0,26,2025-10-30 03:38:20.864897,,,,,,,,, +0.23331159353256226,0.0009687889250926673,0.23331159353256226,8399.0,26,2025-10-30 03:42:35.967307,,,,,,,,, +0.2284531146287918,0.0008166179177351296,0.2284531146287918,8449.0,26,2025-10-30 03:46:52.902004,,,,,,,,, +0.3400467336177826,0.0033736673649400473,0.3400467336177826,8499.0,26,2025-10-30 03:51:07.954119,,,,,,,,, +0.18687957525253296,0.0007005348452366889,0.18687957525253296,8549.0,26,2025-10-30 03:55:24.609594,,,,,,,,, +,,,,26,2025-10-30 04:00:39.097605,0.2319113165140152,0.001248640357516706,0.2319113165140152,0.2908177971839905,0.0027100546285510063,0.2908177971839905,,, +,,,,26,2025-10-30 04:01:01.154440,,,,,,,0.2910361588001251,0.005252906586974859,0.2910361588001251 +0.4021162688732147,0.0036716132890433073,0.4021162688732147,8599.0,27,2025-10-30 04:03:04.769912,,,,,,,,, +0.434103399515152,0.001786754815839231,0.434103399515152,8649.0,27,2025-10-30 04:07:20.639754,,,,,,,,, +0.2895534038543701,0.0010822616750374436,0.2895534038543701,8699.0,27,2025-10-30 04:11:34.885294,,,,,,,,, +0.34653186798095703,0.0017052500043064356,0.34653186798095703,8749.0,27,2025-10-30 04:15:50.563842,,,,,,,,, +0.20069381594657898,0.0010733777889981866,0.20069381594657898,8799.0,27,2025-10-30 04:20:04.877507,,,,,,,,, +0.16296616196632385,0.0005789623828604817,0.16296616196632385,8849.0,27,2025-10-30 04:24:20.590650,,,,,,,,, +0.22077961266040802,0.0007999671506695449,0.22077961266040802,8899.0,27,2025-10-30 04:28:34.626176,,,,,,,,, +,,,,27,2025-10-30 04:31:07.845712,0.2641375660896301,0.0028313647489994764,0.2641375660896301,0.272603839635849,0.002083365572616458,0.272603839635849,,, +,,,,27,2025-10-30 04:31:31.079462,,,,,,,0.2906489372253418,0.005178537219762802,0.2906489372253418 +0.3955362141132355,0.0025808641221374273,0.3955362141132355,8949.0,28,2025-10-30 04:36:16.609645,,,,,,,,, +0.4424906075000763,0.0029091371688991785,0.4424906075000763,8999.0,28,2025-10-30 04:40:30.271443,,,,,,,,, +0.40124887228012085,0.005771825555711985,0.40124887228012085,9049.0,28,2025-10-30 04:44:46.207924,,,,,,,,, +0.2169305682182312,0.001137056271545589,0.2169305682182312,9099.0,28,2025-10-30 04:49:00.179250,,,,,,,,, +0.18157805502414703,0.0006358170649036765,0.18157805502414703,9149.0,28,2025-10-30 04:53:16.139453,,,,,,,,, +0.3408219516277313,0.0014497111551463604,0.3408219516277313,9199.0,28,2025-10-30 04:57:30.369587,,,,,,,,, +,,,,28,2025-10-30 05:01:34.872384,0.27892234921455383,0.004057521000504494,0.27892234921455383,0.2727968990802765,0.0018802867271006107,0.2727968990802765,,, +,,,,28,2025-10-30 05:01:56.581474,,,,,,,0.3055512607097626,0.005215855780988932,0.3055512607097626 +0.15559197962284088,0.0007621913100592792,0.15559197962284088,9249.0,29,2025-10-30 05:05:02.489443,,,,,,,,, +0.2869635224342346,0.0012159990146756172,0.2869635224342346,9299.0,29,2025-10-30 05:09:16.595581,,,,,,,,, +0.1939922720193863,0.0006810458726249635,0.1939922720193863,9349.0,29,2025-10-30 05:13:32.252094,,,,,,,,, +0.037859078496694565,0.00015671466826461256,0.037859078496694565,9399.0,29,2025-10-30 05:17:46.589805,,,,,,,,, +0.33364734053611755,0.0017064179992303252,0.33364734053611755,9449.0,29,2025-10-30 05:22:02.510141,,,,,,,,, +0.3811497986316681,0.001933678169734776,0.3811497986316681,9499.0,29,2025-10-30 05:26:17.132243,,,,,,,,, +,,,,29,2025-10-30 05:31:56.635017,0.2838393449783325,0.0025333045050501823,0.2838393449783325,0.30080413818359375,0.0024397987872362137,0.30080413818359375,,, +,,,,29,2025-10-30 05:32:18.369619,,,,,,,0.2795110046863556,0.003956452943384647,0.2795110046863556 +0.3552066683769226,0.005744567606598139,0.3552066683769226,9549.0,30,2025-10-30 05:33:51.434418,,,,,,,,, +0.218814417719841,0.0008745263912715018,0.218814417719841,9599.0,30,2025-10-30 05:38:05.924805,,,,,,,,, +0.42079803347587585,0.0021291060838848352,0.42079803347587585,9649.0,30,2025-10-30 05:42:21.888368,,,,,,,,, +0.14751401543617249,0.0005357158370316029,0.14751401543617249,9699.0,30,2025-10-30 05:46:36.560632,,,,,,,,, +0.24462498724460602,0.0013417836744338274,0.24462498724460602,9749.0,30,2025-10-30 05:50:52.564931,,,,,,,,, +0.41684162616729736,0.003841788973659277,0.41684162616729736,9799.0,30,2025-10-30 05:55:07.205691,,,,,,,,, +0.19335494935512543,0.0006876527331769466,0.19335494935512543,9849.0,30,2025-10-30 05:59:23.446963,,,,,,,,, +,,,,30,2025-10-30 06:02:15.861629,0.3206191062927246,0.003442150540649891,0.3206191062927246,0.31940916180610657,0.006209783721715212,0.31940916180610657,,, +,,,,30,2025-10-30 06:02:39.884541,,,,,,,0.2990376949310303,0.004395711235702038,0.2990376949310303 +0.2835102677345276,0.0025852269027382135,0.2835102677345276,9899.0,31,2025-10-30 06:07:07.444569,,,,,,,,, +0.09148751944303513,0.00032595545053482056,0.09148751944303513,9949.0,31,2025-10-30 06:11:23.355269,,,,,,,,, +0.2262074500322342,0.0009281912352889776,0.2262074500322342,9999.0,31,2025-10-30 06:15:37.411588,,,,,,,,, +0.6044716238975525,0.004506497178226709,0.6044716238975525,10049.0,31,2025-10-30 06:19:53.145690,,,,,,,,, +0.29582616686820984,0.0019727915059775114,0.29582616686820984,10099.0,31,2025-10-30 06:24:07.102047,,,,,,,,, +0.2130632996559143,0.0007081449148245156,0.2130632996559143,10149.0,31,2025-10-30 06:28:22.869532,,,,,,,,, +,,,,31,2025-10-30 06:32:45.484380,0.31062552332878113,0.003688403870910406,0.31062552332878113,0.29371678829193115,0.003840908408164978,0.29371678829193115,,, +,,,,31,2025-10-30 06:33:07.516721,,,,,,,0.2985556423664093,0.005542816128581762,0.2985556423664093 +0.47125428915023804,0.006666187662631273,0.47125428915023804,10199.0,32,2025-10-30 06:36:01.486841,,,,,,,,, +0.23611968755722046,0.0010775235714390874,0.23611968755722046,10249.0,32,2025-10-30 06:40:17.886183,,,,,,,,, +0.13993215560913086,0.00047896659816615283,0.13993215560913086,10299.0,32,2025-10-30 06:44:33.001133,,,,,,,,, +0.2585639953613281,0.001005556550808251,0.2585639953613281,10349.0,32,2025-10-30 06:48:49.216146,,,,,,,,, +0.44208860397338867,0.010079520754516125,0.44208860397338867,10399.0,32,2025-10-30 06:53:03.526311,,,,,,,,, +0.11962604522705078,0.000410095090046525,0.11962604522705078,10449.0,32,2025-10-30 06:57:19.712212,,,,,,,,, +,,,,32,2025-10-30 07:03:20.960512,0.27205196022987366,0.0035903158131986856,0.27205196022987366,0.30085209012031555,0.0071843997575342655,0.30085209012031555,,, +,,,,32,2025-10-30 07:03:43.345106,,,,,,,0.28716591000556946,0.004437125287950039,0.28716591000556946 +0.2673521637916565,0.0012100008316338062,0.2673521637916565,10499.0,33,2025-10-30 07:04:56.191417,,,,,,,,, +0.12239713221788406,0.0004241403366904706,0.12239713221788406,10549.0,33,2025-10-30 07:09:12.167357,,,,,,,,, +0.533919632434845,0.014497952535748482,0.533919632434845,10599.0,33,2025-10-30 07:13:26.433806,,,,,,,,, +0.3085501492023468,0.001970544457435608,0.3085501492023468,10649.0,33,2025-10-30 07:17:42.248365,,,,,,,,, +0.3111933171749115,0.003638282883912325,0.3111933171749115,10699.0,33,2025-10-30 07:21:56.274545,,,,,,,,, +0.34486299753189087,0.0021412023343145847,0.34486299753189087,10749.0,33,2025-10-30 07:26:11.829140,,,,,,,,, +0.5640574097633362,0.0036976372357457876,0.5640574097633362,10799.0,33,2025-10-30 07:30:25.590452,,,,,,,,, +,,,,33,2025-10-30 07:33:46.263358,0.2797681391239166,0.0069467611610889435,0.2797681391239166,0.26124709844589233,0.0033449390903115273,0.26124709844589233,,, +,,,,33,2025-10-30 07:34:24.365754,,,,,,,0.3001389801502228,0.006086844485253096,0.3001389801502228 +0.22806137800216675,0.0009466434712521732,0.22806137800216675,10849.0,34,2025-10-30 07:38:20.196570,,,,,,,,, +0.2675575315952301,0.0009234301978722215,0.2675575315952301,10899.0,34,2025-10-30 07:42:34.509336,,,,,,,,, +0.4159413278102875,0.006840047892183065,0.4159413278102875,10949.0,34,2025-10-30 07:46:50.263537,,,,,,,,, +0.3017396032810211,0.0021872087381780148,0.3017396032810211,10999.0,34,2025-10-30 07:51:04.578703,,,,,,,,, +0.23020201921463013,0.0010992917232215405,0.23020201921463013,11049.0,34,2025-10-30 07:55:20.562978,,,,,,,,, +0.07913966476917267,0.0002901074767578393,0.07913966476917267,11099.0,34,2025-10-30 07:59:34.782079,,,,,,,,, +,,,,34,2025-10-30 08:04:23.758483,0.2905294895172119,0.005447696894407272,0.2905294895172119,0.34677571058273315,0.0053291623480618,0.34677571058273315,,, +,,,,34,2025-10-30 08:04:46.306044,,,,,,,0.29785412549972534,0.0041497377678751945,0.29785412549972534 +0.15532410144805908,0.0005338153569027781,0.15532410144805908,11149.0,35,2025-10-30 08:07:04.216412,,,,,,,,, +0.10686435550451279,0.00036872000782750547,0.10686435550451279,11199.0,35,2025-10-30 08:11:18.028830,,,,,,,,, +0.226584330201149,0.0008117846446111798,0.226584330201149,11249.0,35,2025-10-30 08:15:34.625705,,,,,,,,, +0.5396043062210083,0.006326004397124052,0.5396043062210083,11299.0,35,2025-10-30 08:19:48.695236,,,,,,,,, +0.41465073823928833,0.06058657914400101,0.41465073823928833,11349.0,35,2025-10-30 08:24:04.684971,,,,,,,,, +0.27072611451148987,0.0011809458956122398,0.27072611451148987,11399.0,35,2025-10-30 08:28:19.074225,,,,,,,,, +,,,,35,2025-10-30 08:34:54.258027,0.3132733404636383,0.009831455536186695,0.3132733404636383,0.27838751673698425,0.002011288655921817,0.27838751673698425,,, +,,,,35,2025-10-30 08:35:16.983713,,,,,,,0.2970474362373352,0.0051296669989824295,0.2970474362373352 +0.20326033234596252,0.0011724266223609447,0.20326033234596252,11449.0,36,2025-10-30 08:36:31.427465,,,,,,,,, +0.29881903529167175,0.0013044066727161407,0.29881903529167175,11499.0,36,2025-10-30 08:40:46.238994,,,,,,,,, +0.1821470707654953,0.0006238612695597112,0.1821470707654953,11549.0,36,2025-10-30 08:45:02.177309,,,,,,,,, +0.29282093048095703,0.001511811395175755,0.29282093048095703,11599.0,36,2025-10-30 08:49:17.316606,,,,,,,,, +0.42703041434288025,0.0020410194993019104,0.42703041434288025,11649.0,36,2025-10-30 08:53:33.121126,,,,,,,,, +0.19431699812412262,0.0007279818528331816,0.19431699812412262,11699.0,36,2025-10-30 08:57:47.028324,,,,,,,,, +0.06479198485612869,0.00023955271171871573,0.06479198485612869,11749.0,36,2025-10-30 09:02:03.088397,,,,,,,,, +,,,,36,2025-10-30 09:06:20.528052,0.27585241198539734,0.007326968479901552,0.27585241198539734,0.34273606538772583,0.0073861535638570786,0.34273606538772583,,, +,,,,36,2025-10-30 09:06:41.454037,,,,,,,0.2948736846446991,0.003802361898124218,0.2948736846446991 +0.13883766531944275,0.00047411967534571886,0.13883766531944275,11799.0,37,2025-10-30 09:11:48.406280,,,,,,,,, +0.5530754327774048,0.006816794630140066,0.5530754327774048,11849.0,37,2025-10-30 09:16:04.122319,,,,,,,,, +0.3646296560764313,0.001689202501438558,0.3646296560764313,11899.0,37,2025-10-30 09:20:19.521231,,,,,,,,, +0.4888438582420349,0.0022212802432477474,0.4888438582420349,11949.0,37,2025-10-30 09:24:35.478948,,,,,,,,, +0.2933620512485504,0.002153988229110837,0.2933620512485504,11999.0,37,2025-10-30 09:28:49.978631,,,,,,,,, +0.3467772603034973,0.0044134221971035,0.3467772603034973,12049.0,37,2025-10-30 09:33:06.207619,,,,,,,,, +,,,,37,2025-10-30 09:38:32.420370,0.27963772416114807,0.005305735860019922,0.27963772416114807,0.2813526391983032,0.0018407885218039155,0.2813526391983032,,, +,,,,37,2025-10-30 09:38:56.722568,,,,,,,0.284730464220047,0.0043952809646725655,0.284730464220047 +0.34670180082321167,0.008875751867890358,0.34670180082321167,12099.0,38,2025-10-30 09:41:07.939307,,,,,,,,, +0.17076914012432098,0.0007836946751922369,0.17076914012432098,12149.0,38,2025-10-30 09:45:23.624510,,,,,,,,, +0.1826806664466858,0.0006190766580402851,0.1826806664466858,12199.0,38,2025-10-30 09:49:38.105870,,,,,,,,, +0.32417163252830505,0.0020045156124979258,0.32417163252830505,12249.0,38,2025-10-30 09:53:54.457376,,,,,,,,, +0.24663782119750977,0.0011878452496603131,0.24663782119750977,12299.0,38,2025-10-30 09:58:08.764498,,,,,,,,, +0.4087176024913788,0.0016145005356520414,0.4087176024913788,12349.0,38,2025-10-30 10:02:25.093139,,,,,,,,, +0.6235059499740601,0.012723331339657307,0.6235059499740601,12399.0,38,2025-10-30 10:06:39.540607,,,,,,,,, +,,,,38,2025-10-30 10:09:51.321299,0.3064601421356201,0.008192882873117924,0.3064601421356201,0.29138049483299255,0.008715538308024406,0.29138049483299255,,, +,,,,38,2025-10-30 10:10:18.392340,,,,,,,0.28712719678878784,0.004032351542264223,0.28712719678878784 +0.09042484313249588,0.0003205490065738559,0.09042484313249588,12449.0,39,2025-10-30 10:15:52.992533,,,,,,,,, +0.15917794406414032,0.0007170665776357055,0.15917794406414032,12499.0,39,2025-10-30 10:20:07.689178,,,,,,,,, +0.3489307463169098,0.0015130620449781418,0.3489307463169098,12549.0,39,2025-10-30 10:24:24.441631,,,,,,,,, +0.37536492943763733,0.0018997797742486,0.37536492943763733,12599.0,39,2025-10-30 10:28:39.150170,,,,,,,,, +0.09404409676790237,0.00033891244675032794,0.09404409676790237,12649.0,39,2025-10-30 10:32:55.437806,,,,,,,,, +0.217308908700943,0.0007629588362760842,0.217308908700943,12699.0,39,2025-10-30 10:37:09.698971,,,,,,,,, +,,,,39,2025-10-30 10:41:12.862847,0.32060736417770386,0.0026109644677489996,0.32060736417770386,0.3372825086116791,0.003888174891471863,0.3372825086116791,,, +,,,,39,2025-10-30 10:41:34.084029,,,,,,,0.2766526937484741,0.004732623230665922,0.2766526937484741 +0.21790607273578644,0.0009324386483058333,0.21790607273578644,12749.0,40,2025-10-30 10:45:11.044628,,,,,,,,, +0.40073394775390625,0.004016284365206957,0.40073394775390625,12799.0,40,2025-10-30 10:49:25.053219,,,,,,,,, +0.363106906414032,0.0017456355271860957,0.363106906414032,12849.0,40,2025-10-30 10:53:41.175852,,,,,,,,, +0.19161033630371094,0.0006389057380147278,0.19161033630371094,12899.0,40,2025-10-30 10:57:55.558290,,,,,,,,, +0.14191646873950958,0.0004991719615645707,0.14191646873950958,12949.0,40,2025-10-30 11:02:11.755468,,,,,,,,, +0.32612189650535583,0.003948661964386702,0.32612189650535583,12999.0,40,2025-10-30 11:06:25.957205,,,,,,,,, +,,,,40,2025-10-30 11:12:03.046412,0.3036341667175293,0.0026792497374117374,0.3036341667175293,0.3065663278102875,0.007401706650853157,0.3065663278102875,,, +,,,,40,2025-10-30 11:12:25.801596,,,,,,,0.2813563644886017,0.0031941207125782967,0.2813563644886017 +0.33792856335639954,0.00252280430868268,0.33792856335639954,13049.0,41,2025-10-30 11:14:38.120000,,,,,,,,, +0.22751665115356445,0.0008018523803912103,0.22751665115356445,13099.0,41,2025-10-30 11:18:52.031728,,,,,,,,, +0.16744035482406616,0.0007323589525185525,0.16744035482406616,13149.0,41,2025-10-30 11:23:08.280077,,,,,,,,, +0.4180070757865906,0.0022762988228350878,0.4180070757865906,13199.0,41,2025-10-30 11:27:23.817417,,,,,,,,, +0.3874112069606781,0.008106929250061512,0.3874112069606781,13249.0,41,2025-10-30 11:31:40.099314,,,,,,,,, +0.2686566710472107,0.0011900071986019611,0.2686566710472107,13299.0,41,2025-10-30 11:35:54.661700,,,,,,,,, +0.10128004103899002,0.000359135476173833,0.10128004103899002,13349.0,41,2025-10-30 11:40:10.474331,,,,,,,,, +,,,,41,2025-10-30 11:43:09.980587,0.294272243976593,0.0026660796720534563,0.294272243976593,0.24940818548202515,0.0030927620828151703,0.24940818548202515,,, +,,,,41,2025-10-30 11:44:00.406719,,,,,,,0.2741971015930176,0.004068201407790184,0.2741971015930176 +0.40992000699043274,0.0030938670970499516,0.40992000699043274,13399.0,42,2025-10-30 11:48:33.118144,,,,,,,,, +0.20794697105884552,0.0008242036565206945,0.20794697105884552,13449.0,42,2025-10-30 11:52:48.846273,,,,,,,,, +0.29490238428115845,0.03981553018093109,0.29490238428115845,13499.0,42,2025-10-30 11:57:08.120313,,,,,,,,, +0.35654282569885254,0.041011545807123184,0.35654282569885254,13549.0,42,2025-10-30 12:01:24.233754,,,,,,,,, +0.276669979095459,0.12332651019096375,0.276669979095459,13599.0,42,2025-10-30 12:05:38.676056,,,,,,,,, +0.1976337432861328,0.000707112078089267,0.1976337432861328,13649.0,42,2025-10-30 12:09:55.326421,,,,,,,,, +,,,,42,2025-10-30 12:14:26.408429,0.29758206009864807,0.007304852362722158,0.29758206009864807,0.23173494637012482,0.0010959489736706018,0.23173494637012482,,, +,,,,42,2025-10-30 12:15:09.355043,,,,,,,0.28614598512649536,0.004658416844904423,0.28614598512649536 +0.29189783334732056,0.0012084856862202287,0.29189783334732056,13699.0,43,2025-10-30 12:18:40.463517,,,,,,,,, +0.10832778364419937,0.00037520358455367386,0.10832778364419937,13749.0,43,2025-10-30 12:22:56.703600,,,,,,,,, +0.16176000237464905,0.000544267357327044,0.16176000237464905,13799.0,43,2025-10-30 12:27:10.630082,,,,,,,,, +0.4165797233581543,0.0034014475531876087,0.4165797233581543,13849.0,43,2025-10-30 12:31:26.816075,,,,,,,,, +0.29339390993118286,0.0064946915954351425,0.29339390993118286,13899.0,43,2025-10-30 12:35:40.988701,,,,,,,,, +0.5899966955184937,0.004667297936975956,0.5899966955184937,13949.0,43,2025-10-30 12:39:57.503440,,,,,,,,, +,,,,43,2025-10-30 12:46:31.689578,0.3033325672149658,0.0022577650379389524,0.3033325672149658,0.2951819598674774,0.0025244373828172684,0.2951819598674774,,, +,,,,43,2025-10-30 12:46:54.573626,,,,,,,0.2816826105117798,0.0051361555233597755,0.2816826105117798 +0.3609868884086609,0.0024542915634810925,0.3609868884086609,13999.0,44,2025-10-30 12:48:22.545011,,,,,,,,, +0.2390943467617035,0.001385729294270277,0.2390943467617035,14049.0,44,2025-10-30 12:52:37.683434,,,,,,,,, +0.38417065143585205,0.0018036516848951578,0.38417065143585205,14099.0,44,2025-10-30 12:56:52.322506,,,,,,,,, +0.22732459008693695,0.000803291448391974,0.22732459008693695,14149.0,44,2025-10-30 13:01:09.519257,,,,,,,,, +0.4544858932495117,0.0026897189673036337,0.4544858932495117,14199.0,44,2025-10-30 13:05:23.935412,,,,,,,,, +0.18534545600414276,0.0008233219850808382,0.18534545600414276,14249.0,44,2025-10-30 13:09:39.806196,,,,,,,,, +0.15155595541000366,0.0005677940207533538,0.15155595541000366,14299.0,44,2025-10-30 13:13:54.078995,,,,,,,,, +,,,,44,2025-10-30 13:17:06.265066,0.27492406964302063,0.009889733977615833,0.27492406964302063,0.333534300327301,0.008530158549547195,0.333534300327301,,, +,,,,44,2025-10-30 13:17:32.354684,,,,,,,0.2866224944591522,0.004040933679789305,0.2866224944591522 +0.17003287374973297,0.000866132730152458,0.17003287374973297,14349.0,45,2025-10-30 13:21:55.772172,,,,,,,,, +0.3518979847431183,0.002610620344057679,0.3518979847431183,14399.0,45,2025-10-30 13:26:10.180393,,,,,,,,, +0.03203636035323143,0.0001327615900663659,0.03203636035323143,14449.0,45,2025-10-30 13:30:26.479727,,,,,,,,, +0.22857990860939026,0.001068420009687543,0.22857990860939026,14499.0,45,2025-10-30 13:34:40.932703,,,,,,,,, +0.217445969581604,0.0007979902438819408,0.217445969581604,14549.0,45,2025-10-30 13:38:57.208235,,,,,,,,, +0.14918585121631622,0.0005702365306206048,0.14918585121631622,14599.0,45,2025-10-30 13:43:28.290861,,,,,,,,, +,,,,45,2025-10-30 13:48:20.092013,0.2533278167247772,0.002102695405483246,0.2533278167247772,0.30370765924453735,0.0021306900307536125,0.30370765924453735,,, +,,,,45,2025-10-30 13:48:41.136377,,,,,,,0.2781066596508026,0.004579897969961166,0.2781066596508026 +0.3734358549118042,0.0036158114671707153,0.3734358549118042,14649.0,46,2025-10-30 13:51:13.506332,,,,,,,,, +0.2667524814605713,0.0012406319146975875,0.2667524814605713,14699.0,46,2025-10-30 13:55:27.827513,,,,,,,,, +0.20776665210723877,0.0007379681919701397,0.20776665210723877,14749.0,46,2025-10-30 13:59:44.718231,,,,,,,,, +0.31771400570869446,0.0026290782261639833,0.31771400570869446,14799.0,46,2025-10-30 14:03:59.731555,,,,,,,,, +0.13937900960445404,0.0004942168015986681,0.13937900960445404,14849.0,46,2025-10-30 14:08:16.328458,,,,,,,,, +0.4102691411972046,0.002390107372775674,0.4102691411972046,14899.0,46,2025-10-30 14:12:31.455985,,,,,,,,, +,,,,46,2025-10-30 14:18:42.642682,0.2771187126636505,0.008145826868712902,0.2771187126636505,0.289711594581604,0.0021821584086865187,0.289711594581604,,, +,,,,46,2025-10-30 14:19:04.055235,,,,,,,0.27723947167396545,0.004293929319828749,0.27723947167396545 +0.32585251331329346,0.0034461901523172855,0.32585251331329346,14949.0,47,2025-10-30 14:21:08.079164,,,,,,,,, +0.3814477026462555,0.0015289458679035306,0.3814477026462555,14999.0,47,2025-10-30 14:25:22.210175,,,,,,,,, +0.1206660121679306,0.0004145222483202815,0.1206660121679306,15049.0,47,2025-10-30 14:29:38.157488,,,,,,,,, +0.3238666355609894,0.0012581708142533898,0.3238666355609894,15099.0,47,2025-10-30 14:33:52.842773,,,,,,,,, +0.21414630115032196,0.000924732128623873,0.21414630115032196,15149.0,47,2025-10-30 14:38:08.275129,,,,,,,,, +0.08141335844993591,0.0002941057027783245,0.08141335844993591,15199.0,47,2025-10-30 14:42:22.864348,,,,,,,,, +0.4078981876373291,0.0018507925560697913,0.4078981876373291,15249.0,47,2025-10-30 14:46:43.525003,,,,,,,,, +,,,,47,2025-10-30 14:50:19.111673,0.2906115651130676,0.005327929276973009,0.2906115651130676,0.29147204756736755,0.0026149109471589327,0.29147204756736755,,, +,,,,47,2025-10-30 14:50:43.142525,,,,,,,0.28112155199050903,0.0049289227463305,0.28112155199050903 +0.41249269247055054,0.0027916347607970238,0.41249269247055054,15299.0,48,2025-10-30 14:54:35.974620,,,,,,,,, +0.19627998769283295,0.0007007608655840158,0.19627998769283295,15349.0,48,2025-10-30 14:58:51.633294,,,,,,,,, +0.34229692816734314,0.0014219838194549084,0.34229692816734314,15399.0,48,2025-10-30 15:03:06.328033,,,,,,,,, +0.04748174920678139,0.00018700740474741906,0.04748174920678139,15449.0,48,2025-10-30 15:07:22.561296,,,,,,,,, +0.24818064272403717,0.0008619721047580242,0.24818064272403717,15499.0,48,2025-10-30 15:11:37.458148,,,,,,,,, +0.27886030077934265,0.030491909012198448,0.27886030077934265,15549.0,48,2025-10-30 15:15:53.999377,,,,,,,,, +,,,,48,2025-10-30 15:20:53.650662,0.30651918053627014,0.0056987847201526165,0.30651918053627014,0.3627791106700897,0.0100241145119071,0.3627791106700897,,, +,,,,48,2025-10-30 15:21:18.403661,,,,,,,0.28289541602134705,0.00494904350489378,0.28289541602134705 +0.10591381043195724,0.00040945198270492256,0.10591381043195724,15599.0,49,2025-10-30 15:23:58.047951,,,,,,,,, +0.35326167941093445,0.0020789431873708963,0.35326167941093445,15649.0,49,2025-10-30 15:28:14.217758,,,,,,,,, +0.18939290940761566,0.0006611724384129047,0.18939290940761566,15699.0,49,2025-10-30 15:32:29.123237,,,,,,,,, +0.37757161259651184,0.008772729896008968,0.37757161259651184,15749.0,49,2025-10-30 15:36:46.131498,,,,,,,,, +0.3354547321796417,0.0014390801079571247,0.3354547321796417,15799.0,49,2025-10-30 15:41:01.033361,,,,,,,,, +0.21892957389354706,0.0009758748346939683,0.21892957389354706,15849.0,49,2025-10-30 15:45:17.909962,,,,,,,,, +0.3198564350605011,0.0010880624176934361,0.3198564350605011,15899.0,49,2025-10-30 15:49:30.235909,,,,,,,,, +,,,,49,2025-10-30 15:52:26.235866,0.27708032727241516,0.0023534062784165144,0.27708032727241516,0.292570561170578,0.003506820648908615,0.292570561170578,,, +,,,,49,2025-10-30 15:52:49.140355,,,,,,,0.2796321213245392,0.004157422110438347,0.2796321213245392 +0.1175348088145256,0.0004226098535582423,0.1175348088145256,15949.0,50,2025-10-30 15:58:00.931552,,,,,,,,, +0.21013453602790833,0.0007093430613167584,0.21013453602790833,15999.0,50,2025-10-30 16:02:15.485410,,,,,,,,, +0.24314504861831665,0.001065672840923071,0.24314504861831665,16049.0,50,2025-10-30 16:06:31.550921,,,,,,,,, +0.4421885907649994,0.008369010873138905,0.4421885907649994,16099.0,50,2025-10-30 16:10:46.121642,,,,,,,,, +0.33820411562919617,0.12583330273628235,0.33820411562919617,16149.0,50,2025-10-30 16:15:02.171441,,,,,,,,, +0.3740650713443756,0.0017831566510722041,0.3740650713443756,16199.0,50,2025-10-30 16:19:17.194729,,,,,,,,, +,,,,50,2025-10-30 16:23:10.039155,0.34932318329811096,0.004454923328012228,0.34932318329811096,0.2985277771949768,0.0023228854406625032,0.2985277771949768,,, +,,,,50,2025-10-30 16:23:35.701751,,,,,,,0.2936883270740509,0.0041837189346551895,0.2936883270740509 +0.042278338223695755,0.00016744730237405747,0.042278338223695755,16249.0,51,2025-10-30 16:27:03.815268,,,,,,,,, +0.2404123991727829,0.0008095355005934834,0.2404123991727829,16299.0,51,2025-10-30 16:31:18.838032,,,,,,,,, +0.2050895243883133,0.0009728366858325899,0.2050895243883133,16349.0,51,2025-10-30 16:35:34.606716,,,,,,,,, +0.46374937891960144,0.0025118968915194273,0.46374937891960144,16399.0,51,2025-10-30 16:39:49.996212,,,,,,,,, +0.258929580450058,0.0019012567354366183,0.258929580450058,16449.0,51,2025-10-30 16:44:06.771507,,,,,,,,, +0.21743576228618622,0.0012688380666077137,0.21743576228618622,16499.0,51,2025-10-30 16:48:22.241219,,,,,,,,, +,,,,51,2025-10-30 16:53:44.015655,0.30258360505104065,0.002684579696506262,0.30258360505104065,0.3195871114730835,0.0034660971723496914,0.3195871114730835,,, +,,,,51,2025-10-30 16:54:07.993511,,,,,,,0.28398165106773376,0.005521737039089203,0.28398165106773376 +0.40083274245262146,0.0020886699203401804,0.40083274245262146,16549.0,52,2025-10-30 16:56:07.037193,,,,,,,,, +0.5514025688171387,0.009710065089166164,0.5514025688171387,16599.0,52,2025-10-30 17:00:21.611631,,,,,,,,, +0.28902313113212585,0.0013250790070742369,0.28902313113212585,16649.0,52,2025-10-30 17:04:38.645531,,,,,,,,, +0.24879083037376404,0.001089019700884819,0.24879083037376404,16699.0,52,2025-10-30 17:08:53.757019,,,,,,,,, +0.27996131777763367,0.0011163892922922969,0.27996131777763367,16749.0,52,2025-10-30 17:13:10.362378,,,,,,,,, +0.424310564994812,0.0028617887292057276,0.424310564994812,16799.0,52,2025-10-30 17:17:25.287072,,,,,,,,, +0.4897773861885071,0.003998169209808111,0.4897773861885071,16849.0,52,2025-10-30 17:21:41.961444,,,,,,,,, +,,,,52,2025-10-30 17:24:32.809404,0.2784580886363983,0.003662784118205309,0.2784580886363983,0.28254234790802,0.0031234126072376966,0.28254234790802,,, +,,,,52,2025-10-30 17:24:58.116216,,,,,,,0.29126736521720886,0.0031195245683193207,0.29126736521720886 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/tf/events.out.tfevents.1761747200.node-0.1948.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/tf/events.out.tfevents.1761747200.node-0.1948.0 new file mode 100644 index 0000000000000000000000000000000000000000..0067c929d25c9c991e46db02fb2e63783c9a5942 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/tf/events.out.tfevents.1761747200.node-0.1948.0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65aad61bf8cf2554d9f6fe31e238e49bfa79e571e581e21dbfd4a4cedb480c71 +size 120869 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/meta.experiment new file mode 100644 index 0000000000000000000000000000000000000000..65411b829cb27a1fb66e4ec6f92040a8ba2c4068 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/meta.experiment @@ -0,0 +1 @@ +{"name": "testtube", "version": 1, "tags_path": "./logs/full_ct_3d_with_body_mask2/testtube/version_1/meta_tags.csv", "metrics_path": "./logs/full_ct_3d_with_body_mask2/testtube/version_1/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-30 17:43:45.979460", "exp_hash": "testtube_v1"} \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/meta_tags.csv new file mode 100644 index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/meta_tags.csv @@ -0,0 +1 @@ +key,value diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/metrics.csv new file mode 100644 index 0000000000000000000000000000000000000000..ae67bab9f9dde4baf3a542c54dee7f17aa8a17b2 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/metrics.csv @@ -0,0 +1,202 @@ +train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch +0.11212219297885895,0.0003960200119763613,0.11212219297885895,16899.0,53,2025-10-30 17:49:42.708947,,,,,,,,, +0.09797403216362,0.000347994442563504,0.09797403216362,16949.0,53,2025-10-30 17:53:55.652821,,,,,,,,, +0.12681113183498383,0.0005246975342743099,0.12681113183498383,16999.0,53,2025-10-30 17:58:07.423540,,,,,,,,, +0.30255594849586487,0.002192130545154214,0.30255594849586487,17049.0,53,2025-10-30 18:02:20.051440,,,,,,,,, +0.10943446308374405,0.0003911755920853466,0.10943446308374405,17099.0,53,2025-10-30 18:06:31.706266,,,,,,,,, +0.32569727301597595,0.00169422198086977,0.32569727301597595,17149.0,53,2025-10-30 18:10:45.160091,,,,,,,,, +,,,,53,2025-10-30 18:14:54.745409,0.290383905172348,0.002903107088059187,0.290383905172348,0.28003472089767456,0.005173171404749155,0.28003472089767456,,, +,,,,53,2025-10-30 18:15:25.324546,,,,,,,0.2862495481967926,0.004567870404571295,0.2862495481967926 +0.43677282333374023,0.008148068562150002,0.43677282333374023,17199.0,54,2025-10-30 18:18:16.567450,,,,,,,,, +0.17210814356803894,0.000977946212515235,0.17210814356803894,17249.0,54,2025-10-30 18:22:30.227592,,,,,,,,, +0.24216032028198242,0.0013860143953934312,0.24216032028198242,17299.0,54,2025-10-30 18:26:42.619548,,,,,,,,, +0.19998003542423248,0.0009403559961356223,0.19998003542423248,17349.0,54,2025-10-30 18:30:56.279999,,,,,,,,, +0.09673044085502625,0.0003436384431552142,0.09673044085502625,17399.0,54,2025-10-30 18:35:09.085715,,,,,,,,, +0.565712571144104,0.018044665455818176,0.565712571144104,17449.0,54,2025-10-30 18:39:22.739588,,,,,,,,, +,,,,54,2025-10-30 18:44:39.944298,0.3219923973083496,0.004068424925208092,0.3219923973083496,0.30204299092292786,0.003023289144039154,0.30204299092292786,,, +,,,,54,2025-10-30 18:45:10.268104,,,,,,,0.28762710094451904,0.003484525019302964,0.28762710094451904 +0.2183709442615509,0.000836774124763906,0.2183709442615509,17499.0,55,2025-10-30 18:46:31.928600,,,,,,,,, +0.1421734243631363,0.0005354966851882637,0.1421734243631363,17549.0,55,2025-10-30 18:50:45.256392,,,,,,,,, +0.2093086838722229,0.0012638234766200185,0.2093086838722229,17599.0,55,2025-10-30 18:54:57.809694,,,,,,,,, +0.18820667266845703,0.0006726249703206122,0.18820667266845703,17649.0,55,2025-10-30 18:59:11.288147,,,,,,,,, +0.15802934765815735,0.000719047209713608,0.15802934765815735,17699.0,55,2025-10-30 19:03:23.281831,,,,,,,,, +0.1437891274690628,0.0005206803325563669,0.1437891274690628,17749.0,55,2025-10-30 19:07:36.503411,,,,,,,,, +0.4220331907272339,0.002366617787629366,0.4220331907272339,17799.0,55,2025-10-30 19:11:48.484051,,,,,,,,, +,,,,55,2025-10-30 19:14:31.568802,0.2424253225326538,0.0016613082261756063,0.2424253225326538,0.31681445240974426,0.006033079698681831,0.31681445240974426,,, +,,,,55,2025-10-30 19:15:07.024760,,,,,,,0.2758910059928894,0.006031396333128214,0.2758910059928894 +0.2458655685186386,0.0017821212531998754,0.2458655685186386,17849.0,56,2025-10-30 19:19:08.996242,,,,,,,,, +0.4426722824573517,0.12501980364322662,0.4426722824573517,17899.0,56,2025-10-30 19:23:21.664239,,,,,,,,, +0.23588739335536957,0.0014797324547544122,0.23588739335536957,17949.0,56,2025-10-30 19:27:35.065596,,,,,,,,, +0.4072277843952179,0.004354816861450672,0.4072277843952179,17999.0,56,2025-10-30 19:31:47.389764,,,,,,,,, +0.3224501311779022,0.0015491953818127513,0.3224501311779022,18049.0,56,2025-10-30 19:36:00.620329,,,,,,,,, +0.5609304904937744,0.009736570529639721,0.5609304904937744,18099.0,56,2025-10-30 19:40:12.703404,,,,,,,,, +,,,,56,2025-10-30 19:44:23.502047,0.27016881108283997,0.005083430092781782,0.27016881108283997,0.24988099932670593,0.003343178890645504,0.24988099932670593,,, +,,,,56,2025-10-30 19:44:54.879363,,,,,,,0.29000693559646606,0.005702406167984009,0.29000693559646606 +0.3262026607990265,0.0017613524105399847,0.3262026607990265,18149.0,57,2025-10-30 19:47:32.945382,,,,,,,,, +0.22067666053771973,0.0009034413960762322,0.22067666053771973,18199.0,57,2025-10-30 19:51:45.109525,,,,,,,,, +0.19526661932468414,0.0006850255304016173,0.19526661932468414,18249.0,57,2025-10-30 19:55:58.231231,,,,,,,,, +0.3477090895175934,0.002208787715062499,0.3477090895175934,18299.0,57,2025-10-30 20:00:10.617525,,,,,,,,, +0.04790222644805908,0.00018896194524131715,0.04790222644805908,18349.0,57,2025-10-30 20:04:23.641979,,,,,,,,, +0.4559938907623291,0.003903456497937441,0.4559938907623291,18399.0,57,2025-10-30 20:08:35.991430,,,,,,,,, +,,,,57,2025-10-30 20:14:18.477144,0.37705734372138977,0.005663054063916206,0.37705734372138977,0.28695160150527954,0.0033893173094838858,0.28695160150527954,,, +,,,,57,2025-10-30 20:14:48.609700,,,,,,,0.2870723307132721,0.004290382377803326,0.2870723307132721 +0.12100695073604584,0.00041379782487638295,0.12100695073604584,18449.0,58,2025-10-30 20:15:52.899621,,,,,,,,, +0.1739998161792755,0.0006766775040887296,0.1739998161792755,18499.0,58,2025-10-30 20:20:05.268761,,,,,,,,, +0.2775837182998657,0.0013082165969535708,0.2775837182998657,18549.0,58,2025-10-30 20:24:18.539898,,,,,,,,, +0.27326276898384094,0.0010223323479294777,0.27326276898384094,18599.0,58,2025-10-30 20:28:30.804912,,,,,,,,, +0.5544751286506653,0.007051100954413414,0.5544751286506653,18649.0,58,2025-10-30 20:32:44.072201,,,,,,,,, +0.2359364777803421,0.0012875847751274705,0.2359364777803421,18699.0,58,2025-10-30 20:36:56.464293,,,,,,,,, +0.38493454456329346,0.002996532479301095,0.38493454456329346,18749.0,58,2025-10-30 20:41:09.946723,,,,,,,,, +,,,,58,2025-10-30 20:44:13.912005,0.2758021652698517,0.0020482810214161873,0.2758021652698517,0.2895488440990448,0.0020524244755506516,0.2895488440990448,,, +,,,,58,2025-10-30 20:44:32.908032,,,,,,,0.30783602595329285,0.005264291074126959,0.30783602595329285 +0.28548213839530945,0.0011157668195664883,0.28548213839530945,18799.0,59,2025-10-30 20:48:24.502213,,,,,,,,, +0.2653578519821167,0.0009200518252328038,0.2653578519821167,18849.0,59,2025-10-30 20:52:38.871340,,,,,,,,, +0.17700226604938507,0.000875547353643924,0.17700226604938507,18899.0,59,2025-10-30 20:56:52.678795,,,,,,,,, +0.3360306918621063,0.003577195107936859,0.3360306918621063,18949.0,59,2025-10-30 21:01:07.160819,,,,,,,,, +0.05339379981160164,0.00020236308046150953,0.05339379981160164,18999.0,59,2025-10-30 21:05:20.613415,,,,,,,,, +0.104575514793396,0.00038099821540527046,0.104575514793396,19049.0,59,2025-10-30 21:09:34.425096,,,,,,,,, +,,,,59,2025-10-30 21:14:05.908564,0.2501496374607086,0.0030506555922329426,0.2501496374607086,0.27805617451667786,0.003396148793399334,0.27805617451667786,,, +,,,,59,2025-10-30 21:14:34.952237,,,,,,,0.28324654698371887,0.005657047964632511,0.28324654698371887 +0.19972705841064453,0.0008387771667912602,0.19972705841064453,19099.0,60,2025-10-30 21:16:45.950377,,,,,,,,, +0.21752910315990448,0.004948813933879137,0.21752910315990448,19149.0,60,2025-10-30 21:21:00.203127,,,,,,,,, +0.4819295108318329,0.0028627533465623856,0.4819295108318329,19199.0,60,2025-10-30 21:25:13.288371,,,,,,,,, +0.41498520970344543,0.011469520628452301,0.41498520970344543,19249.0,60,2025-10-30 21:29:27.640392,,,,,,,,, +0.05252896621823311,0.00020113603386562318,0.05252896621823311,19299.0,60,2025-10-30 21:33:41.106251,,,,,,,,, +0.1721280962228775,0.000913236232008785,0.1721280962228775,19349.0,60,2025-10-30 21:37:55.374067,,,,,,,,, +,,,,60,2025-10-30 21:43:59.865075,0.3332793414592743,0.0026910488959401846,0.3332793414592743,0.30374160408973694,0.0023974161595106125,0.30374160408973694,,, +,,,,60,2025-10-30 21:44:15.949003,,,,,,,0.27617084980010986,0.003819730831310153,0.27617084980010986 +0.6598700881004333,0.029871566221117973,0.6598700881004333,19399.0,61,2025-10-30 21:45:07.865120,,,,,,,,, +0.13056069612503052,0.00045287731336429715,0.13056069612503052,19449.0,61,2025-10-30 21:49:22.344377,,,,,,,,, +0.3944222927093506,0.002345799468457699,0.3944222927093506,19499.0,61,2025-10-30 21:53:36.171566,,,,,,,,, +0.17875683307647705,0.0005998060223646462,0.17875683307647705,19549.0,61,2025-10-30 21:57:50.937590,,,,,,,,, +0.18101215362548828,0.0006871612276881933,0.18101215362548828,19599.0,61,2025-10-30 22:02:05.109393,,,,,,,,, +0.3736126720905304,0.0021873428486287594,0.3736126720905304,19649.0,61,2025-10-30 22:06:19.474316,,,,,,,,, +0.2361026108264923,0.0008202680619433522,0.2361026108264923,19699.0,61,2025-10-30 22:10:33.560291,,,,,,,,, +,,,,61,2025-10-30 22:13:57.997297,0.2959226965904236,0.004094996489584446,0.2959226965904236,0.25356432795524597,0.002047757152467966,0.25356432795524597,,, +,,,,61,2025-10-30 22:14:29.243014,,,,,,,0.28631532192230225,0.004361058585345745,0.28631532192230225 +0.11312375217676163,0.00038774285349063575,0.11312375217676163,19749.0,62,2025-10-30 22:17:53.636310,,,,,,,,, +0.34094366431236267,0.005417060572654009,0.34094366431236267,19799.0,62,2025-10-30 22:22:07.820641,,,,,,,,, +0.20035915076732635,0.0007024967926554382,0.20035915076732635,19849.0,62,2025-10-30 22:26:23.875336,,,,,,,,, +0.46595099568367004,0.0032367759849876165,0.46595099568367004,19899.0,62,2025-10-30 22:30:39.029254,,,,,,,,, +0.28764608502388,0.001369024976156652,0.28764608502388,19949.0,62,2025-10-30 22:34:55.166464,,,,,,,,, +0.2815650999546051,0.0012513665715232491,0.2815650999546051,19999.0,62,2025-10-30 22:39:10.405197,,,,,,,,, +,,,,62,2025-10-30 22:44:03.095728,0.2806223928928375,0.005452046170830727,0.2806223928928375,0.2911318838596344,0.006440925411880016,0.2911318838596344,,, +,,,,62,2025-10-30 22:44:19.050493,,,,,,,0.27217790484428406,0.003763536224141717,0.27217790484428406 +0.27263227105140686,0.0016498687909916043,0.27263227105140686,20049.0,63,2025-10-30 22:46:12.192517,,,,,,,,, +0.4957735538482666,0.002840379485860467,0.4957735538482666,20099.0,63,2025-10-30 22:50:25.819451,,,,,,,,, +0.2401716560125351,0.0011162047740072012,0.2401716560125351,20149.0,63,2025-10-30 22:54:40.462092,,,,,,,,, +0.3500569462776184,0.0015643842052668333,0.3500569462776184,20199.0,63,2025-10-30 22:58:53.945621,,,,,,,,, +0.48207759857177734,0.0037120606284588575,0.48207759857177734,20249.0,63,2025-10-30 23:03:08.544732,,,,,,,,, +0.21663226187229156,0.0008080576662905514,0.21663226187229156,20299.0,63,2025-10-30 23:07:22.477638,,,,,,,,, +0.34621462225914,0.00230237515643239,0.34621462225914,20349.0,63,2025-10-30 23:11:37.184702,,,,,,,,, +,,,,63,2025-10-30 23:13:45.863867,0.24853801727294922,0.0017532591009512544,0.24853801727294922,0.25968557596206665,0.004681110847741365,0.25968557596206665,,, +,,,,63,2025-10-30 23:14:14.350759,,,,,,,0.27948451042175293,0.0034924009814858437,0.27948451042175293 +0.2961898446083069,0.001238458906300366,0.2961898446083069,20399.0,64,2025-10-30 23:18:52.710097,,,,,,,,, +0.41182973980903625,0.12646624445915222,0.41182973980903625,20449.0,64,2025-10-30 23:23:07.072453,,,,,,,,, +0.31432682275772095,0.0013620189856737852,0.31432682275772095,20499.0,64,2025-10-30 23:27:20.618429,,,,,,,,, +0.3682243227958679,0.0019337731646373868,0.3682243227958679,20549.0,64,2025-10-30 23:31:34.847576,,,,,,,,, +0.2049693912267685,0.0007757708081044257,0.2049693912267685,20599.0,64,2025-10-30 23:35:48.399026,,,,,,,,, +0.14555005729198456,0.0005104723968543112,0.14555005729198456,20649.0,64,2025-10-30 23:40:02.925933,,,,,,,,, +,,,,64,2025-10-30 23:43:42.452177,0.3078145682811737,0.0025779788848012686,0.3078145682811737,0.2979795038700104,0.008530713617801666,0.2979795038700104,,, +,,,,64,2025-10-30 23:43:59.048976,,,,,,,0.29281651973724365,0.004233677405864,0.29281651973724365 +0.2671510875225067,0.0016304043820127845,0.2671510875225067,20699.0,65,2025-10-30 23:46:59.593535,,,,,,,,, +0.2299436777830124,0.000836700783111155,0.2299436777830124,20749.0,65,2025-10-30 23:51:13.967974,,,,,,,,, +0.2483769655227661,0.0023232121020555496,0.2483769655227661,20799.0,65,2025-10-30 23:55:27.583089,,,,,,,,, +0.2898750305175781,0.028722763061523438,0.2898750305175781,20849.0,65,2025-10-30 23:59:42.243668,,,,,,,,, +0.40551263093948364,0.002627656329423189,0.40551263093948364,20899.0,65,2025-10-31 00:03:56.051824,,,,,,,,, +0.465194433927536,0.012713325209915638,0.465194433927536,20949.0,65,2025-10-31 00:08:10.723702,,,,,,,,, +,,,,65,2025-10-31 00:13:23.679363,0.3182971477508545,0.010295321233570576,0.3182971477508545,0.27342671155929565,0.004693212918937206,0.27342671155929565,,, +,,,,65,2025-10-31 00:13:41.072343,,,,,,,0.294953852891922,0.003931136801838875,0.294953852891922 +0.37411943078041077,0.025057939812541008,0.37411943078041077,20999.0,66,2025-10-31 00:15:16.076477,,,,,,,,, +0.3621066212654114,0.001442655106075108,0.3621066212654114,21049.0,66,2025-10-31 00:19:30.203968,,,,,,,,, +0.12361617386341095,0.0004489654675126076,0.12361617386341095,21099.0,66,2025-10-31 00:23:44.059675,,,,,,,,, +0.34991785883903503,0.0015395639929920435,0.34991785883903503,21149.0,66,2025-10-31 00:27:58.471680,,,,,,,,, +0.3160703182220459,0.0013354941038414836,0.3160703182220459,21199.0,66,2025-10-31 00:32:12.463520,,,,,,,,, +0.2137405127286911,0.0012029267381876707,0.2137405127286911,21249.0,66,2025-10-31 00:36:27.890343,,,,,,,,, +0.2296985685825348,0.0008797139744274318,0.2296985685825348,21299.0,66,2025-10-31 00:40:41.787647,,,,,,,,, +,,,,66,2025-10-31 00:43:11.562694,0.2683441638946533,0.0015438940608873963,0.2683441638946533,0.3106372356414795,0.0020751494448632,0.3106372356414795,,, +,,,,66,2025-10-31 00:43:27.833885,,,,,,,0.289120614528656,0.0039231013506650925,0.289120614528656 +0.26234862208366394,0.002846066141501069,0.26234862208366394,21349.0,67,2025-10-31 00:47:40.204921,,,,,,,,, +0.6425889730453491,0.03680068626999855,0.6425889730453491,21399.0,67,2025-10-31 00:51:53.882063,,,,,,,,, +0.31963294744491577,0.0016632777405902743,0.31963294744491577,21449.0,67,2025-10-31 00:56:08.204787,,,,,,,,, +0.42872169613838196,0.003960881382226944,0.42872169613838196,21499.0,67,2025-10-31 01:00:21.861538,,,,,,,,, +0.47934606671333313,0.061997316777706146,0.47934606671333313,21549.0,67,2025-10-31 01:04:36.261510,,,,,,,,, +0.23593947291374207,0.0007771924138069153,0.23593947291374207,21599.0,67,2025-10-31 01:08:49.926164,,,,,,,,, +,,,,67,2025-10-31 01:12:50.039659,0.3480243980884552,0.004603801295161247,0.3480243980884552,0.26872122287750244,0.0025165320839732885,0.26872122287750244,,, +,,,,67,2025-10-31 01:13:06.075287,,,,,,,0.28027066588401794,0.003930593375116587,0.28027066588401794 +0.08564038574695587,0.0003089429810643196,0.08564038574695587,21649.0,68,2025-10-31 01:15:50.947468,,,,,,,,, +0.06241407245397568,0.0002358256751904264,0.06241407245397568,21699.0,68,2025-10-31 01:20:04.780700,,,,,,,,, +0.31664273142814636,0.0015404049772769213,0.31664273142814636,21749.0,68,2025-10-31 01:24:19.402166,,,,,,,,, +0.36871811747550964,0.002219654619693756,0.36871811747550964,21799.0,68,2025-10-31 01:28:33.102843,,,,,,,,, +0.28537726402282715,0.0010618222877383232,0.28537726402282715,21849.0,68,2025-10-31 01:32:47.959331,,,,,,,,, +0.20937441289424896,0.0008570835343562067,0.20937441289424896,21899.0,68,2025-10-31 01:37:01.796298,,,,,,,,, +,,,,68,2025-10-31 01:42:34.324260,0.2863263487815857,0.005346320569515228,0.2863263487815857,0.3079766631126404,0.005730404518544674,0.3079766631126404,,, +,,,,68,2025-10-31 01:42:51.567816,,,,,,,0.28290125727653503,0.004257742315530777,0.28290125727653503 +0.3853665590286255,0.004137059208005667,0.3853665590286255,21949.0,69,2025-10-31 01:44:10.972199,,,,,,,,, +0.1357482522726059,0.00046441913582384586,0.1357482522726059,21999.0,69,2025-10-31 01:48:24.488283,,,,,,,,, +0.11956663429737091,0.0005178841529414058,0.11956663429737091,22049.0,69,2025-10-31 01:52:38.988749,,,,,,,,, +0.2615951597690582,0.0009288225555792451,0.2615951597690582,22099.0,69,2025-10-31 01:56:53.326595,,,,,,,,, +0.472574919462204,0.0035863141529262066,0.472574919462204,22149.0,69,2025-10-31 02:01:08.412543,,,,,,,,, +0.18448834121227264,0.0017382836667820811,0.18448834121227264,22199.0,69,2025-10-31 02:05:22.109060,,,,,,,,, +0.5268524885177612,0.0036247880198061466,0.5268524885177612,22249.0,69,2025-10-31 02:09:36.846785,,,,,,,,, +,,,,69,2025-10-31 02:12:27.978795,0.28673121333122253,0.002929314039647579,0.28673121333122253,0.31041470170021057,0.0027193515561521053,0.31041470170021057,,, +,,,,69,2025-10-31 02:12:45.430815,,,,,,,0.2786281108856201,0.0041016098111867905,0.2786281108856201 +0.40702691674232483,0.002591874450445175,0.40702691674232483,22299.0,70,2025-10-31 02:16:42.015632,,,,,,,,, +0.4530651271343231,0.004731566645205021,0.4530651271343231,22349.0,70,2025-10-31 02:20:56.393765,,,,,,,,, +0.19102947413921356,0.0006872456870041788,0.19102947413921356,22399.0,70,2025-10-31 02:25:09.784472,,,,,,,,, +0.23121769726276398,0.0008428986766375601,0.23121769726276398,22449.0,70,2025-10-31 02:29:24.695478,,,,,,,,, +0.21557146310806274,0.0008114281808957458,0.21557146310806274,22499.0,70,2025-10-31 02:33:38.626825,,,,,,,,, +0.2849307358264923,0.007888419553637505,0.2849307358264923,22549.0,70,2025-10-31 02:37:53.757126,,,,,,,,, +,,,,70,2025-10-31 02:42:21.104123,0.3326384425163269,0.004449267406016588,0.3326384425163269,0.3063797652721405,0.0029580569826066494,0.3063797652721405,,, +,,,,70,2025-10-31 02:42:39.728287,,,,,,,0.2735738456249237,0.00425443472340703,0.2735738456249237 +0.2916037440299988,0.0022806148044764996,0.2916037440299988,22599.0,71,2025-10-31 02:45:06.613108,,,,,,,,, +0.16173681616783142,0.0005623698816634715,0.16173681616783142,22649.0,71,2025-10-31 02:49:22.100167,,,,,,,,, +0.13655376434326172,0.0004722262383438647,0.13655376434326172,22699.0,71,2025-10-31 02:53:36.604390,,,,,,,,, +0.21068285405635834,0.0008810852305032313,0.21068285405635834,22749.0,71,2025-10-31 02:57:52.080185,,,,,,,,, +0.49499690532684326,0.0026221030857414007,0.49499690532684326,22799.0,71,2025-10-31 03:02:06.581533,,,,,,,,, +0.3693511486053467,0.0019529751734808087,0.3693511486053467,22849.0,71,2025-10-31 03:06:22.516677,,,,,,,,, +,,,,71,2025-10-31 03:12:23.460262,0.27993473410606384,0.0028380092699080706,0.27993473410606384,0.2654459774494171,0.0019374906551092863,0.2654459774494171,,, +,,,,71,2025-10-31 03:12:48.327263,,,,,,,0.29179322719573975,0.004436278250068426,0.29179322719573975 +0.09069672971963882,0.0003161273489240557,0.09069672971963882,22899.0,72,2025-10-31 03:13:48.335581,,,,,,,,, +0.19106878340244293,0.0020054394844919443,0.19106878340244293,22949.0,72,2025-10-31 03:18:04.481310,,,,,,,,, +0.13589052855968475,0.0004534997569862753,0.13589052855968475,22999.0,72,2025-10-31 03:22:19.729554,,,,,,,,, +0.03547734394669533,0.00014823072706349194,0.03547734394669533,23049.0,72,2025-10-31 03:26:36.191943,,,,,,,,, +0.2072361558675766,0.0007328566280193627,0.2072361558675766,23099.0,72,2025-10-31 03:30:51.622588,,,,,,,,, +0.3736068308353424,0.005656563676893711,0.3736068308353424,23149.0,72,2025-10-31 03:35:07.932237,,,,,,,,, +0.347050279378891,0.1223207488656044,0.347050279378891,23199.0,72,2025-10-31 03:39:22.566255,,,,,,,,, +,,,,72,2025-10-31 03:42:41.390789,0.2621373236179352,0.0027779079973697662,0.2621373236179352,0.3052568733692169,0.004369552247226238,0.3052568733692169,,, +,,,,72,2025-10-31 03:43:01.193215,,,,,,,0.28975266218185425,0.006207260303199291,0.28975266218185425 +0.20295892655849457,0.0011022287653759122,0.20295892655849457,23249.0,73,2025-10-31 03:46:38.025038,,,,,,,,, +0.324017733335495,0.001485234359279275,0.324017733335495,23299.0,73,2025-10-31 03:50:52.298734,,,,,,,,, +0.4614235460758209,0.0024837760720402002,0.4614235460758209,23349.0,73,2025-10-31 03:55:07.824256,,,,,,,,, +0.30008041858673096,0.002611936070024967,0.30008041858673096,23399.0,73,2025-10-31 03:59:22.306267,,,,,,,,, +0.3476969599723816,0.0020159322302788496,0.3476969599723816,23449.0,73,2025-10-31 04:03:37.757757,,,,,,,,, +0.28695017099380493,0.0010317066917195916,0.28695017099380493,23499.0,73,2025-10-31 04:07:52.242670,,,,,,,,, +,,,,73,2025-10-31 04:12:37.623604,0.31767547130584717,0.002223499119281769,0.31767547130584717,0.30413901805877686,0.0035914538893848658,0.30413901805877686,,, +,,,,73,2025-10-31 04:12:55.232780,,,,,,,0.2775272727012634,0.0033878295216709375,0.2775272727012634 +0.25431543588638306,0.0012833878863602877,0.25431543588638306,23549.0,74,2025-10-31 04:14:56.971943,,,,,,,,, +0.16031207144260406,0.0005482752458192408,0.16031207144260406,23599.0,74,2025-10-31 04:19:10.575829,,,,,,,,, +0.27572253346443176,0.013418438844382763,0.27572253346443176,23649.0,74,2025-10-31 04:23:25.775673,,,,,,,,, +0.20762695372104645,0.0010508153354749084,0.20762695372104645,23699.0,74,2025-10-31 04:27:39.737841,,,,,,,,, +0.42804908752441406,0.011354652233421803,0.42804908752441406,23749.0,74,2025-10-31 04:31:55.090525,,,,,,,,, +0.09221867471933365,0.0003324274148326367,0.09221867471933365,23799.0,74,2025-10-31 04:36:09.270245,,,,,,,,, +0.6512531638145447,0.004677440505474806,0.6512531638145447,23849.0,74,2025-10-31 04:40:21.215590,,,,,,,,, +,,,,74,2025-10-31 04:42:23.515595,0.3105297386646271,0.0037355360109359026,0.3105297386646271,0.2958117127418518,0.004833501297980547,0.2958117127418518,,, +,,,,74,2025-10-31 04:42:40.571380,,,,,,,0.2745775580406189,0.004439263138920069,0.2745775580406189 +0.3581690788269043,0.001350653008557856,0.3581690788269043,23899.0,75,2025-10-31 04:47:24.765155,,,,,,,,, +0.2490723878145218,0.0012459267163649201,0.2490723878145218,23949.0,75,2025-10-31 04:51:39.904389,,,,,,,,, +0.20821665227413177,0.0007509443676099181,0.20821665227413177,23999.0,75,2025-10-31 04:55:54.314193,,,,,,,,, +0.23451675474643707,0.0009233673335984349,0.23451675474643707,24049.0,75,2025-10-31 05:00:10.048581,,,,,,,,, +0.41245296597480774,0.0020962203852832317,0.41245296597480774,24099.0,75,2025-10-31 05:04:25.040717,,,,,,,,, +0.14787039160728455,0.0005442536785267293,0.14787039160728455,24149.0,75,2025-10-31 05:08:40.222921,,,,,,,,, +,,,,75,2025-10-31 05:12:12.968393,0.31578725576400757,0.0022711458150297403,0.31578725576400757,0.2754175662994385,0.010096726939082146,0.2754175662994385,,, +,,,,75,2025-10-31 05:12:32.101677,,,,,,,0.28704866766929626,0.0057426197454333305,0.28704866766929626 +0.17195148766040802,0.0006288409931585193,0.17195148766040802,24199.0,76,2025-10-31 05:15:44.475805,,,,,,,,, +0.1591099351644516,0.0005379825597628951,0.1591099351644516,24249.0,76,2025-10-31 05:19:59.209825,,,,,,,,, +0.13128025829792023,0.0004485461104195565,0.13128025829792023,24299.0,76,2025-10-31 05:24:13.596493,,,,,,,,, +0.20057831704616547,0.0007395964348688722,0.20057831704616547,24349.0,76,2025-10-31 05:28:29.862343,,,,,,,,, +0.10232866555452347,0.0003615549358073622,0.10232866555452347,24399.0,76,2025-10-31 05:32:45.204389,,,,,,,,, +0.08333413302898407,0.0003014782560057938,0.08333413302898407,24449.0,76,2025-10-31 05:37:01.736403,,,,,,,,, +,,,,76,2025-10-31 05:42:10.268120,0.2756592333316803,0.007283040788024664,0.2756592333316803,0.27614670991897583,0.0016906970413401723,0.27614670991897583,,, +,,,,76,2025-10-31 05:42:28.236658,,,,,,,0.2848929762840271,0.004131563473492861,0.2848929762840271 +0.1580120474100113,0.0005489398026838899,0.1580120474100113,24499.0,77,2025-10-31 05:44:13.673620,,,,,,,,, diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/tf/events.out.tfevents.1761846227.node-0.2050.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/tf/events.out.tfevents.1761846227.node-0.2050.0 new file mode 100644 index 0000000000000000000000000000000000000000..d1b6b5ae2146f5da69a985b31680897f9e239039 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/tf/events.out.tfevents.1761846227.node-0.2050.0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95df147a9863d2cdc0be49ef4cf44b4d4f0ee584a07016d59d620b9e619ddec6 +size 55888 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/meta.experiment new file mode 100644 index 0000000000000000000000000000000000000000..2cbd6c197159cf8745462ff0e6af0b2f1ad112cf --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/meta.experiment @@ -0,0 +1 @@ +{"name": "testtube", "version": 2, "tags_path": "./logs/full_ct_3d_with_body_mask2/testtube/version_2/meta_tags.csv", "metrics_path": "./logs/full_ct_3d_with_body_mask2/testtube/version_2/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-31 06:05:02.518393", "exp_hash": "testtube_v2"} \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/meta_tags.csv new file mode 100644 index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/meta_tags.csv @@ -0,0 +1 @@ +key,value diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/metrics.csv new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/metrics.csv @@ -0,0 +1 @@ + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/tf/events.out.tfevents.1761890704.node-0.2039.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/tf/events.out.tfevents.1761890704.node-0.2039.0 new file mode 100644 index 0000000000000000000000000000000000000000..861a2896d1bf3007f6d3ec3f56f1f8d9df1dcc34 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/tf/events.out.tfevents.1761890704.node-0.2039.0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1326e4dea37f1f50286679ff2662749cdd5b5c899d52597cb6d2ef114e944cd +size 88 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/meta.experiment new file mode 100644 index 0000000000000000000000000000000000000000..9fb0775bb41edc0e308ca5c84f2d4f53376adb4a --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/meta.experiment @@ -0,0 +1 @@ +{"name": "testtube", "version": 3, "tags_path": "./logs/full_ct_3d_with_body_mask2/testtube/version_3/meta_tags.csv", "metrics_path": "./logs/full_ct_3d_with_body_mask2/testtube/version_3/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-31 06:19:51.938230", "exp_hash": "testtube_v3"} \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/meta_tags.csv new file mode 100644 index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/meta_tags.csv @@ -0,0 +1 @@ +key,value diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/metrics.csv new file mode 100644 index 0000000000000000000000000000000000000000..3b19a4b7f5064ffbccb723eea0c5adfa97357246 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/metrics.csv @@ -0,0 +1,21 @@ +train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch +0.16542162001132965,0.0009119179449044168,0.16542162001132965,24499.0,77,2025-10-31 06:23:47.199706,,,,,,,,, +0.3623897135257721,0.12417513132095337,0.3623897135257721,24549.0,77,2025-10-31 06:28:03.172094,,,,,,,,, +0.40529534220695496,0.12571537494659424,0.40529534220695496,24599.0,77,2025-10-31 06:32:16.780851,,,,,,,,, +0.3449431359767914,0.003119318513199687,0.3449431359767914,24649.0,77,2025-10-31 06:36:32.914028,,,,,,,,, +0.29835590720176697,0.002196893561631441,0.29835590720176697,24699.0,77,2025-10-31 06:40:46.257806,,,,,,,,, +0.6672286987304688,0.12987467646598816,0.6672286987304688,24749.0,77,2025-10-31 06:45:03.366070,,,,,,,,, +0.131357803940773,0.000526526418980211,0.131357803940773,24799.0,77,2025-10-31 06:49:16.560747,,,,,,,,, +,,,,77,2025-10-31 06:52:03.117988,0.28831642866134644,0.002885563997551799,0.28831642866134644,0.27810245752334595,0.0051479279063642025,0.27810245752334595,,, +,,,,77,2025-10-31 06:52:54.205030,,,,,,,0.28482744097709656,0.004544297233223915,0.28482744097709656 +0.29872941970825195,0.002703337464481592,0.29872941970825195,24849.0,78,2025-10-31 06:57:45.349744,,,,,,,,, +0.3147170841693878,0.006378016900271177,0.3147170841693878,24899.0,78,2025-10-31 07:01:59.606373,,,,,,,,, +0.24917656183242798,0.0009646091493777931,0.24917656183242798,24949.0,78,2025-10-31 07:06:16.011276,,,,,,,,, +0.2608265280723572,0.0012748067965731025,0.2608265280723572,24999.0,78,2025-10-31 07:10:30.443870,,,,,,,,, +0.2963445484638214,0.0013238799292594194,0.2963445484638214,25049.0,78,2025-10-31 07:14:46.832359,,,,,,,,, +0.05422722548246384,0.0002059258404187858,0.05422722548246384,25099.0,78,2025-10-31 07:19:01.128892,,,,,,,,, +,,,,78,2025-10-31 07:23:03.280382,0.3215169608592987,0.004063682164996862,0.3215169608592987,0.3016454875469208,0.0030227508395910263,0.3016454875469208,,, +,,,,78,2025-10-31 07:23:50.595417,,,,,,,0.2850608229637146,0.0034778970293700695,0.2850608229637146 +0.28421592712402344,0.0010798118310049176,0.28421592712402344,25149.0,79,2025-10-31 07:27:32.408833,,,,,,,,, +0.03173404932022095,0.00013555384066421539,0.03173404932022095,25199.0,79,2025-10-31 07:31:48.835135,,,,,,,,, +0.3687518835067749,0.008241117000579834,0.3687518835067749,25249.0,79,2025-10-31 07:36:05.946930,,,,,,,,, diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/tf/events.out.tfevents.1761891594.node-0.2049.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/tf/events.out.tfevents.1761891594.node-0.2049.0 new file mode 100644 index 0000000000000000000000000000000000000000..7426b4d287dfeece532a025a691df3ab2db29c62 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/tf/events.out.tfevents.1761891594.node-0.2049.0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb581c31ef62eccc55c363fe31196626c5b494eb081bb0ca7e1957742ea75b9a +size 5622 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/main.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/main.py new file mode 100644 index 0000000000000000000000000000000000000000..8775f89b0b4a1f417e7f5c9855236c046aa0cb13 --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/main.py @@ -0,0 +1,774 @@ +import argparse, os, sys, datetime, glob, importlib, csv +import numpy as np +import time +import torch +import torchvision +import enum + +# 保存原始实现(可选,用于调试或回滚) +_enum_format_orig = enum.Enum.__format__ + +def _enum_format_value(self, format_spec: str) -> str: + # 如果指定了 format 规范,就交给 value 本身的格式化;否则直接返回 value + return format(self.value, format_spec) if format_spec else str(self.value) + +# 全局替换 Enum.__format__ +enum.Enum.__format__ = _enum_format_value + +import pytorch_lightning as pl + +from packaging import version +from omegaconf import OmegaConf +from torch.utils.data import random_split, DataLoader, Dataset, Subset +from functools import partial +from PIL import Image + +from pytorch_lightning import seed_everything +from pytorch_lightning.trainer import Trainer +from pytorch_lightning.callbacks import ModelCheckpoint, Callback, LearningRateMonitor +from pytorch_lightning.utilities.distributed import rank_zero_only +from pytorch_lightning.utilities import rank_zero_info + +from ldm.data.base import Txt2ImgIterableBaseDataset +from ldm.util import instantiate_from_config + + +def get_parser(**parser_kwargs): + def str2bool(v): + if isinstance(v, bool): + return v + if v.lower() in ("yes", "true", "t", "y", "1"): + return True + elif v.lower() in ("no", "false", "f", "n", "0"): + return False + else: + raise argparse.ArgumentTypeError("Boolean value expected.") + + parser = argparse.ArgumentParser(**parser_kwargs) + parser.add_argument( + "-n", + "--name", + type=str, + const=True, + default="", + nargs="?", + help="postfix for logdir", + ) + parser.add_argument( + "-r", + "--resume", + type=str, + const=True, + default="", + nargs="?", + help="resume from logdir or checkpoint in logdir", + ) + parser.add_argument( + "-b", + "--base", + nargs="*", + metavar="base_config.yaml", + help="paths to base configs. Loaded from left-to-right. " + "Parameters can be overwritten or added with command-line options of the form `--key value`.", + default=list(), + ) + parser.add_argument( + "-t", + "--train", + type=str2bool, + const=True, + default=False, + nargs="?", + help="train", + ) + parser.add_argument( + "--no-test", + type=str2bool, + const=True, + default=False, + nargs="?", + help="disable test", + ) + parser.add_argument( + "-p", + "--project", + help="name of new or path to existing project" + ) + parser.add_argument( + "-d", + "--debug", + type=str2bool, + nargs="?", + const=True, + default=False, + help="enable post-mortem debugging", + ) + parser.add_argument( + "-s", + "--seed", + type=int, + default=23, + help="seed for seed_everything", + ) + parser.add_argument( + "-f", + "--postfix", + type=str, + default="", + help="post-postfix for default name", + ) + parser.add_argument( + "-l", + "--logdir", + type=str, + default="logs", + help="directory for logging dat shit", + ) + parser.add_argument( + "--scale_lr", + type=str2bool, + nargs="?", + const=True, + default=True, + help="scale base-lr by ngpu * batch_size * n_accumulate", + ) + return parser + + +def nondefault_trainer_args(opt): + parser = argparse.ArgumentParser() + parser = Trainer.add_argparse_args(parser) + args = parser.parse_args([]) + return sorted(k for k in vars(args) if getattr(opt, k) != getattr(args, k)) + + +class WrappedDataset(Dataset): + """Wraps an arbitrary object with __len__ and __getitem__ into a pytorch dataset""" + + def __init__(self, dataset): + self.data = dataset + + def __len__(self): + return len(self.data) + + def __getitem__(self, idx): + return self.data[idx] + + +def worker_init_fn(_): + worker_info = torch.utils.data.get_worker_info() + + dataset = worker_info.dataset + worker_id = worker_info.id + + if isinstance(dataset, Txt2ImgIterableBaseDataset): + split_size = dataset.num_records // worker_info.num_workers + # reset num_records to the true number to retain reliable length information + dataset.sample_ids = dataset.valid_ids[worker_id * split_size:(worker_id + 1) * split_size] + current_id = np.random.choice(len(np.random.get_state()[1]), 1) + return np.random.seed(np.random.get_state()[1][current_id] + worker_id) + else: + return np.random.seed(np.random.get_state()[1][0] + worker_id) + + +class DataModuleFromConfig(pl.LightningDataModule): + def __init__(self, batch_size, train=None, validation=None, test=None, predict=None, + wrap=False, num_workers=None, shuffle_test_loader=False, use_worker_init_fn=False, + shuffle_val_dataloader=False): + super().__init__() + self.batch_size = batch_size + self.dataset_configs = dict() + self.num_workers = num_workers if num_workers is not None else batch_size * 2 + self.use_worker_init_fn = use_worker_init_fn + if train is not None: + self.dataset_configs["train"] = train + self.train_dataloader = self._train_dataloader + if validation is not None: + self.dataset_configs["validation"] = validation + self.val_dataloader = partial(self._val_dataloader, shuffle=shuffle_val_dataloader) + if test is not None: + self.dataset_configs["test"] = test + self.test_dataloader = partial(self._test_dataloader, shuffle=shuffle_test_loader) + if predict is not None: + self.dataset_configs["predict"] = predict + self.predict_dataloader = self._predict_dataloader + self.wrap = wrap + + def prepare_data(self): + for data_cfg in self.dataset_configs.values(): + instantiate_from_config(data_cfg) + + def setup(self, stage=None): + self.datasets = dict( + (k, instantiate_from_config(self.dataset_configs[k])) + for k in self.dataset_configs) + if self.wrap: + for k in self.datasets: + self.datasets[k] = WrappedDataset(self.datasets[k]) + + def _train_dataloader(self): + is_iterable_dataset = isinstance(self.datasets['train'], Txt2ImgIterableBaseDataset) + if is_iterable_dataset or self.use_worker_init_fn: + init_fn = worker_init_fn + else: + init_fn = None + return DataLoader(self.datasets["train"], batch_size=self.batch_size, + num_workers=self.num_workers, shuffle=False if is_iterable_dataset else True, + worker_init_fn=init_fn) + + def _val_dataloader(self, shuffle=False): + if isinstance(self.datasets['validation'], Txt2ImgIterableBaseDataset) or self.use_worker_init_fn: + init_fn = worker_init_fn + else: + init_fn = None + return DataLoader(self.datasets["validation"], + batch_size=self.batch_size, + num_workers=self.num_workers, + worker_init_fn=init_fn, + shuffle=shuffle) + + def _test_dataloader(self, shuffle=False): + is_iterable_dataset = isinstance(self.datasets['train'], Txt2ImgIterableBaseDataset) + if is_iterable_dataset or self.use_worker_init_fn: + init_fn = worker_init_fn + else: + init_fn = None + + # do not shuffle dataloader for iterable dataset + shuffle = shuffle and (not is_iterable_dataset) + + return DataLoader(self.datasets["test"], batch_size=self.batch_size, + num_workers=self.num_workers, worker_init_fn=init_fn, shuffle=shuffle) + + def _predict_dataloader(self, shuffle=False): + if isinstance(self.datasets['predict'], Txt2ImgIterableBaseDataset) or self.use_worker_init_fn: + init_fn = worker_init_fn + else: + init_fn = None + return DataLoader(self.datasets["predict"], batch_size=self.batch_size, + num_workers=self.num_workers, worker_init_fn=init_fn) + + +class SetupCallback(Callback): + def __init__(self, resume, now, logdir, ckptdir, cfgdir, config, lightning_config): + super().__init__() + self.resume = resume + self.now = now + self.logdir = logdir + self.ckptdir = ckptdir + self.cfgdir = cfgdir + self.config = config + self.lightning_config = lightning_config + + def on_keyboard_interrupt(self, trainer, pl_module): + if trainer.global_rank == 0: + print("Summoning checkpoint.") + ckpt_path = os.path.join(self.ckptdir, "last.ckpt") + trainer.save_checkpoint(ckpt_path) + + def on_pretrain_routine_start(self, trainer, pl_module): + if trainer.global_rank == 0: + # Create logdirs and save configs + os.makedirs(self.logdir, exist_ok=True) + os.makedirs(self.ckptdir, exist_ok=True) + os.makedirs(self.cfgdir, exist_ok=True) + + if "callbacks" in self.lightning_config: + if 'metrics_over_trainsteps_checkpoint' in self.lightning_config['callbacks']: + os.makedirs(os.path.join(self.ckptdir, 'trainstep_checkpoints'), exist_ok=True) + print("Project config") + print(OmegaConf.to_yaml(self.config)) + OmegaConf.save(self.config, + os.path.join(self.cfgdir, "{}-project.yaml".format(self.now))) + + print("Lightning config") + print(OmegaConf.to_yaml(self.lightning_config)) + OmegaConf.save(OmegaConf.create({"lightning": self.lightning_config}), + os.path.join(self.cfgdir, "{}-lightning.yaml".format(self.now))) + + else: + # ModelCheckpoint callback created log directory --- remove it + if not self.resume and os.path.exists(self.logdir): + dst, name = os.path.split(self.logdir) + dst = os.path.join(dst, "child_runs", name) + os.makedirs(os.path.split(dst)[0], exist_ok=True) + try: + os.rename(self.logdir, dst) + except FileNotFoundError: + pass + + +class ImageLogger(Callback): + def __init__(self, batch_frequency, max_images, clamp=True, increase_log_steps=True, + rescale=True, disabled=False, log_on_batch_idx=False, log_first_step=False, + log_images_kwargs=None): + super().__init__() + self.rescale = rescale + self.batch_freq = batch_frequency + self.max_images = max_images + self.logger_log_images = { + pl.loggers.TestTubeLogger: self._testtube, + } + self.log_steps = [2 ** n for n in range(int(np.log2(self.batch_freq)) + 1)] + if not increase_log_steps: + self.log_steps = [self.batch_freq] + self.clamp = clamp + self.disabled = disabled + self.log_on_batch_idx = log_on_batch_idx + self.log_images_kwargs = log_images_kwargs if log_images_kwargs else {} + self.log_first_step = log_first_step + + @rank_zero_only + def _testtube(self, pl_module, images, batch_idx, split): + for k in images: + grid = torchvision.utils.make_grid(images[k]) + grid = (grid + 1.0) / 2.0 # -1,1 -> 0,1; c,h,w + + tag = f"{split}/{k}" + pl_module.logger.experiment.add_image( + tag, grid, + global_step=pl_module.global_step) + + @rank_zero_only + def log_local(self, save_dir, split, images, + global_step, current_epoch, batch_idx): + root = os.path.join(save_dir, "images", split) + for k in images: + grid = torchvision.utils.make_grid(images[k], nrow=4) + if self.rescale: + grid = (grid + 1.0) / 2.0 # -1,1 -> 0,1; c,h,w + grid = grid.transpose(0, 1).transpose(1, 2).squeeze(-1) + grid = grid.numpy() + grid = (grid * 255).astype(np.uint8) + filename = "{}_gs-{:06}_e-{:06}_b-{:06}.png".format( + k, + global_step, + current_epoch, + batch_idx) + path = os.path.join(root, filename) + os.makedirs(os.path.split(path)[0], exist_ok=True) + Image.fromarray(grid).save(path) + + def log_img(self, pl_module, batch, batch_idx, split="train"): + check_idx = batch_idx if self.log_on_batch_idx else pl_module.global_step + if (self.check_frequency(check_idx) and # batch_idx % self.batch_freq == 0 + hasattr(pl_module, "log_images") and + callable(pl_module.log_images) and + self.max_images > 0): + logger = type(pl_module.logger) + + is_train = pl_module.training + if is_train: + pl_module.eval() + + with torch.no_grad(): + images = pl_module.log_images(batch, split=split, **self.log_images_kwargs) + + for k in images: + N = min(images[k].shape[0], self.max_images) + images[k] = images[k][:N] + if isinstance(images[k], torch.Tensor): + images[k] = images[k].detach().cpu() + if self.clamp: + images[k] = torch.clamp(images[k], -1., 1.) + + self.log_local(pl_module.logger.save_dir, split, images, + pl_module.global_step, pl_module.current_epoch, batch_idx) + + logger_log_images = self.logger_log_images.get(logger, lambda *args, **kwargs: None) + logger_log_images(pl_module, images, pl_module.global_step, split) + + if is_train: + pl_module.train() + + def check_frequency(self, check_idx): + if ((check_idx % self.batch_freq) == 0 or (check_idx in self.log_steps)) and ( + check_idx > 0 or self.log_first_step): + try: + self.log_steps.pop(0) + except IndexError as e: + print(e) + pass + return True + return False + + def on_train_batch_end(self, trainer, pl_module, outputs, batch, batch_idx, dataloader_idx): + if not self.disabled and (pl_module.global_step > 0 or self.log_first_step): + self.log_img(pl_module, batch, batch_idx, split="train") + + def on_validation_batch_end(self, trainer, pl_module, outputs, batch, batch_idx, dataloader_idx): + # if not self.disabled and pl_module.global_step > 0: + # self.log_img(pl_module, batch, batch_idx, split="val") + if hasattr(pl_module, 'calibrate_grad_norm'): + if (pl_module.calibrate_grad_norm and batch_idx % 25 == 0) and batch_idx > 0: + self.log_gradients(trainer, pl_module, batch_idx=batch_idx) + + +class CUDACallback(Callback): + # see https://github.com/SeanNaren/minGPT/blob/master/mingpt/callback.py + def on_train_epoch_start(self, trainer, pl_module): + # Reset the memory use counter + torch.cuda.reset_peak_memory_stats(trainer.root_gpu) + torch.cuda.synchronize(trainer.root_gpu) + self.start_time = time.time() + + def on_train_epoch_end(self, trainer, pl_module, outputs): + torch.cuda.synchronize(trainer.root_gpu) + max_memory = torch.cuda.max_memory_allocated(trainer.root_gpu) / 2 ** 20 + epoch_time = time.time() - self.start_time + + try: + max_memory = trainer.training_type_plugin.reduce(max_memory) + epoch_time = trainer.training_type_plugin.reduce(epoch_time) + + rank_zero_info(f"Average Epoch time: {epoch_time:.2f} seconds") + rank_zero_info(f"Average Peak memory {max_memory:.2f}MiB") + except AttributeError: + pass + + +if __name__ == "__main__": + # custom parser to specify config files, train, test and debug mode, + # postfix, resume. + # `--key value` arguments are interpreted as arguments to the trainer. + # `nested.key=value` arguments are interpreted as config parameters. + # configs are merged from left-to-right followed by command line parameters. + + # model: + # base_learning_rate: float + # target: path to lightning module + # params: + # key: value + # data: + # target: main.DataModuleFromConfig + # params: + # batch_size: int + # wrap: bool + # train: + # target: path to train dataset + # params: + # key: value + # validation: + # target: path to validation dataset + # params: + # key: value + # test: + # target: path to test dataset + # params: + # key: value + # lightning: (optional, has sane defaults and can be specified on cmdline) + # trainer: + # additional arguments to trainer + # logger: + # logger to instantiate + # modelcheckpoint: + # modelcheckpoint to instantiate + # callbacks: + # callback1: + # target: importpath + # params: + # key: value + + now = datetime.datetime.now().strftime("%Y-%m-%dT%H-%M-%S") + + # add cwd for convenience and to make classes in this file available when + # running as `python main.py` + # (in particular `main.DataModuleFromConfig`) + sys.path.append(os.getcwd()) + + parser = get_parser() + parser = Trainer.add_argparse_args(parser) + + opt, unknown = parser.parse_known_args() + if opt.name and opt.resume: + raise ValueError( + "-n/--name and -r/--resume cannot be specified both." + "If you want to resume training in a new log folder, " + "use -n/--name in combination with --resume_from_checkpoint" + ) + if opt.resume: + # if not os.path.exists(opt.resume): + # raise ValueError("Cannot find {}".format(opt.resume)) + if os.path.isfile(opt.resume): + paths = opt.resume.split("/") + # idx = len(paths)-paths[::-1].index("logs")+1 + # logdir = "/".join(paths[:idx]) + logdir = "/".join(paths[:-2]) + ckpt = opt.resume + else: + # assert os.path.isdir(opt.resume), opt.resume + logdir = opt.resume.rstrip("/") + ckpt = os.path.join(logdir, "checkpoints", "last.ckpt") + + if os.path.exists(ckpt): + opt.resume_from_checkpoint = ckpt + base_configs = sorted(glob.glob(os.path.join(logdir, "configs/*.yaml"))) + opt.base = base_configs + opt.base + _tmp = logdir.split("/") + nowname = _tmp[-1] + else: + if opt.name: + name = opt.name + elif opt.base: + cfg_fname = os.path.split(opt.base[0])[-1] + cfg_name = os.path.splitext(cfg_fname)[0] + name = cfg_name + else: + name = "" + nowname = name + opt.postfix + logdir = os.path.join(opt.logdir, nowname) + else: + if opt.name: + # name = "_" + opt.name + name = opt.name + elif opt.base: + cfg_fname = os.path.split(opt.base[0])[-1] + cfg_name = os.path.splitext(cfg_fname)[0] + # name = "_" + cfg_name + name = cfg_name + else: + name = "" + # nowname = now + name + opt.postfix + nowname = name + opt.postfix + logdir = os.path.join(opt.logdir, nowname) + + ckptdir = os.path.join(logdir, "checkpoints") + cfgdir = os.path.join(logdir, "configs") + seed_everything(opt.seed) + + try: + # init and save configs + configs = [OmegaConf.load(cfg) for cfg in opt.base] + cli = OmegaConf.from_dotlist(unknown) + config = OmegaConf.merge(*configs, cli) + lightning_config = config.pop("lightning", OmegaConf.create()) + # merge trainer cli with config + trainer_config = lightning_config.get("trainer", OmegaConf.create()) + # default to ddp + trainer_config["accelerator"] = "ddp" + for k in nondefault_trainer_args(opt): + trainer_config[k] = getattr(opt, k) + if not "gpus" in trainer_config: + del trainer_config["accelerator"] + cpu = True + else: + gpuinfo = trainer_config["gpus"] + print(f"Running on GPUs {gpuinfo}") + cpu = False + trainer_opt = argparse.Namespace(**trainer_config) + lightning_config.trainer = trainer_config + + # model + model = instantiate_from_config(config.model) + + # trainer and callbacks + trainer_kwargs = dict() + + # default logger configs + default_logger_cfgs = { + "wandb": { + "target": "pytorch_lightning.loggers.WandbLogger", + "params": { + "name": nowname, + "save_dir": logdir, + "offline": opt.debug, + "id": nowname, + } + }, + "testtube": { + "target": "pytorch_lightning.loggers.TestTubeLogger", + "params": { + "name": "testtube", + "save_dir": logdir, + } + }, + } + default_logger_cfg = default_logger_cfgs["testtube"] + if "logger" in lightning_config: + logger_cfg = lightning_config.logger + else: + logger_cfg = OmegaConf.create() + logger_cfg = OmegaConf.merge(default_logger_cfg, logger_cfg) + trainer_kwargs["logger"] = instantiate_from_config(logger_cfg) + + # modelcheckpoint - use TrainResult/EvalResult(checkpoint_on=metric) to + # specify which metric is used to determine best models + default_modelckpt_cfg = { + "target": "pytorch_lightning.callbacks.ModelCheckpoint", + "params": { + "dirpath": ckptdir, + "filename": "{epoch:06}", + "verbose": True, + "save_last": True, + } + } + if hasattr(model, "monitor"): + print(f"Monitoring {model.monitor} as checkpoint metric.") + default_modelckpt_cfg["params"]["monitor"] = model.monitor + default_modelckpt_cfg["params"]["save_top_k"] = 3 + + if "modelcheckpoint" in lightning_config: + modelckpt_cfg = lightning_config.modelcheckpoint + else: + modelckpt_cfg = OmegaConf.create() + modelckpt_cfg = OmegaConf.merge(default_modelckpt_cfg, modelckpt_cfg) + print(f"Merged modelckpt-cfg: \n{modelckpt_cfg}") + if version.parse(pl.__version__) < version.parse('1.4.0'): + trainer_kwargs["checkpoint_callback"] = instantiate_from_config(modelckpt_cfg) + + # add callback which sets up log directory + default_callbacks_cfg = { + "setup_callback": { + "target": "main.SetupCallback", + "params": { + "resume": opt.resume, + "now": now, + "logdir": logdir, + "ckptdir": ckptdir, + "cfgdir": cfgdir, + "config": config, + "lightning_config": lightning_config, + } + }, + "image_logger": { + "target": "main.ImageLogger", + "params": { + "batch_frequency": 750, + "max_images": 4, + "clamp": True + } + }, + "learning_rate_logger": { + "target": "main.LearningRateMonitor", + "params": { + "logging_interval": "step", + # "log_momentum": True + } + }, + "cuda_callback": { + "target": "main.CUDACallback" + }, + } + if version.parse(pl.__version__) >= version.parse('1.4.0'): + default_callbacks_cfg.update({'checkpoint_callback': modelckpt_cfg}) + + if "callbacks" in lightning_config: + callbacks_cfg = lightning_config.callbacks + else: + callbacks_cfg = OmegaConf.create() + + if 'metrics_over_trainsteps_checkpoint' in callbacks_cfg: + print( + 'Caution: Saving checkpoints every n train steps without deleting. This might require some free space.') + default_metrics_over_trainsteps_ckpt_dict = { + 'metrics_over_trainsteps_checkpoint': + {"target": 'pytorch_lightning.callbacks.ModelCheckpoint', + 'params': { + "dirpath": os.path.join(ckptdir, 'trainstep_checkpoints'), + "filename": "{epoch:06}-{step:09}", + "verbose": True, + 'save_top_k': -1, + 'every_n_train_steps': 10000, + 'save_weights_only': True + } + } + } + default_callbacks_cfg.update(default_metrics_over_trainsteps_ckpt_dict) + + callbacks_cfg = OmegaConf.merge(default_callbacks_cfg, callbacks_cfg) + if 'ignore_keys_callback' in callbacks_cfg and hasattr(trainer_opt, 'resume_from_checkpoint'): + callbacks_cfg.ignore_keys_callback.params['ckpt_path'] = trainer_opt.resume_from_checkpoint + elif 'ignore_keys_callback' in callbacks_cfg: + del callbacks_cfg['ignore_keys_callback'] + + trainer_kwargs["callbacks"] = [instantiate_from_config(callbacks_cfg[k]) for k in callbacks_cfg] + + trainer = Trainer.from_argparse_args(trainer_opt, **trainer_kwargs) + trainer.logdir = logdir ### + + # data + data = instantiate_from_config(config.data) + # NOTE according to https://pytorch-lightning.readthedocs.io/en/latest/datamodules.html + # calling these ourselves should not be necessary but it is. + # lightning still takes care of proper multiprocessing though + # breakpoint() + data.prepare_data() + data.setup() + + # breakpoint() + # CTReportDataset(data_folder='train', csv_file='/home/v-qichen3/blob/ct_rate/CT-RATE/radiology_text_reports/train_reports.csv') + + print("#### Data #####") + for k in data.datasets: + print(f"{k}, {data.datasets[k].__class__.__name__}, {len(data.datasets[k])}") + + # configure learning rate + bs, base_lr = config.data.params.batch_size, config.model.base_learning_rate + # breakpoint() + if not cpu: + ngpu = len(lightning_config.trainer.gpus.strip(",").split(',')) + else: + ngpu = 1 + if 'accumulate_grad_batches' in lightning_config.trainer: + accumulate_grad_batches = lightning_config.trainer.accumulate_grad_batches + else: + accumulate_grad_batches = 1 + print(f"accumulate_grad_batches = {accumulate_grad_batches}") + lightning_config.trainer.accumulate_grad_batches = accumulate_grad_batches + if opt.scale_lr: + model.learning_rate = accumulate_grad_batches * ngpu * bs * base_lr + print( + "Setting learning rate to {:.2e} = {} (accumulate_grad_batches) * {} (num_gpus) * {} (batchsize) * {:.2e} (base_lr)".format( + model.learning_rate, accumulate_grad_batches, ngpu, bs, base_lr)) + else: + model.learning_rate = base_lr + print("++++ NOT USING LR SCALING ++++") + print(f"Setting learning rate to {model.learning_rate:.2e}") + + + # allow checkpointing via USR1 + def melk(*args, **kwargs): + # run all checkpoint hooks + if trainer.global_rank == 0: + print("Summoning checkpoint.") + ckpt_path = os.path.join(ckptdir, "last.ckpt") + trainer.save_checkpoint(ckpt_path) + + + def divein(*args, **kwargs): + if trainer.global_rank == 0: + import pudb; + pudb.set_trace() + + + import signal + + signal.signal(signal.SIGUSR1, melk) + signal.signal(signal.SIGUSR2, divein) + + # run + if opt.train: + try: + trainer.fit(model, data) + except Exception: + melk() + raise + if not opt.no_test and not trainer.interrupted: + trainer.test(model, data) + except Exception: + if opt.debug and trainer.global_rank == 0: + try: + import pudb as debugger + except ImportError: + import pdb as debugger + debugger.post_mortem() + raise + finally: + # move newly created debug project to debug_runs + if opt.debug and not opt.resume and trainer.global_rank == 0: + dst, name = os.path.split(logdir) + dst = os.path.join(dst, "debug_runs", name) + os.makedirs(os.path.split(dst)[0], exist_ok=True) + os.rename(logdir, dst) + if trainer.global_rank == 0: + print(trainer.profiler.summary()) diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/mask_generation.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/mask_generation.py new file mode 100644 index 0000000000000000000000000000000000000000..982545ca730f3ef8f7d0373e7b9a44c7fefb887a --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/mask_generation.py @@ -0,0 +1,292 @@ +### Tumor Generateion +import random +import cv2 +import elasticdeform +import numpy as np +from scipy.ndimage import gaussian_filter + + +def generate_prob_function(mask_shape): + sigma = np.random.uniform(3,15) + # uniform noise generate + a = np.random.uniform(0, 1, size=(mask_shape[0],mask_shape[1],mask_shape[2])) + + # Gaussian filter + # this taks some time + a_2 = gaussian_filter(a, sigma=sigma) + + scale = np.random.uniform(0.19, 0.21) + base = np.random.uniform(0.04, 0.06) + a = scale * (a_2 - np.min(a_2)) / (np.max(a_2) - np.min(a_2)) + base + + return a + +# Step 1: Random select (numbers) location for tumor. +def random_select(mask_scan): + # we first find z index and then sample point with z slice + z_start, z_end = np.where(np.any(mask_scan, axis=(0, 1)))[0][[0, -1]] + + # we need to strict number z's position (0.3 - 0.7 in the middle of liver) + z = round(random.uniform(0.3, 0.7) * (z_end - z_start)) + z_start + + liver_mask = mask_scan[..., z] + + # erode the mask (we don't want the edge points) + kernel = np.ones((5,5), dtype=np.uint8) + liver_mask = cv2.erode(liver_mask, kernel, iterations=1) + + coordinates = np.argwhere(liver_mask == 1) + random_index = np.random.randint(0, len(coordinates)) + xyz = coordinates[random_index].tolist() # get x,y + xyz.append(z) + potential_points = xyz + + return potential_points + +# Step 2 : generate the ellipsoid +def get_ellipsoid(x, y, z): + """" + x, y, z is the radius of this ellipsoid in x, y, z direction respectly. + """ + sh = (4*x, 4*y, 4*z) + out = np.zeros(sh, int) + aux = np.zeros(sh) + radii = np.array([x, y, z]) + com = np.array([2*x, 2*y, 2*z]) # center point + + # calculate the ellipsoid + bboxl = np.floor(com-radii).clip(0,None).astype(int) + bboxh = (np.ceil(com+radii)+1).clip(None, sh).astype(int) + roi = out[tuple(map(slice,bboxl,bboxh))] + roiaux = aux[tuple(map(slice,bboxl,bboxh))] + logrid = *map(np.square,np.ogrid[tuple( + map(slice,(bboxl-com)/radii,(bboxh-com-1)/radii,1j*(bboxh-bboxl)))]), + dst = (1-sum(logrid)).clip(0,None) + mask = dst>roiaux + roi[mask] = 1 + np.copyto(roiaux,dst,where=mask) + + return out + +def get_fixed_geo(mask_scan, tumor_type): + + enlarge_x, enlarge_y, enlarge_z = 160, 160, 160 + geo_mask = np.zeros((mask_scan.shape[0] + enlarge_x, mask_scan.shape[1] + enlarge_y, mask_scan.shape[2] + enlarge_z), dtype=np.int8) + # texture_map = np.zeros((mask_scan.shape[0] + enlarge_x, mask_scan.shape[1] + enlarge_y, mask_scan.shape[2] + enlarge_z), dtype=np.float16) + tiny_radius, small_radius, medium_radius, large_radius = 4, 8, 16, 32 + + if tumor_type == 'tiny': + num_tumor = random.randint(3,10) + for _ in range(num_tumor): + # Tiny tumor + x = random.randint(int(0.75*tiny_radius), int(1.25*tiny_radius)) + y = random.randint(int(0.75*tiny_radius), int(1.25*tiny_radius)) + z = random.randint(int(0.75*tiny_radius), int(1.25*tiny_radius)) + sigma = random.uniform(0.5,1) + + geo = get_ellipsoid(x, y, z) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,1)) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(1,2)) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,2)) + point = random_select(mask_scan) + new_point = [point[0] + enlarge_x//2, point[1] + enlarge_y//2, point[2] + enlarge_z//2] + x_low, x_high = new_point[0] - geo.shape[0]//2, new_point[0] + geo.shape[0]//2 + y_low, y_high = new_point[1] - geo.shape[1]//2, new_point[1] + geo.shape[1]//2 + z_low, z_high = new_point[2] - geo.shape[2]//2, new_point[2] + geo.shape[2]//2 + + # paste small tumor geo into test sample + geo_mask[x_low:x_high, y_low:y_high, z_low:z_high] += geo + + if tumor_type == 'small': + num_tumor = random.randint(3,10) + for _ in range(num_tumor): + # Small tumor + x = random.randint(int(0.75*small_radius), int(1.25*small_radius)) + y = random.randint(int(0.75*small_radius), int(1.25*small_radius)) + z = random.randint(int(0.75*small_radius), int(1.25*small_radius)) + sigma = random.randint(1, 2) + + geo = get_ellipsoid(x, y, z) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,1)) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(1,2)) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,2)) + # texture = get_texture((4*x, 4*y, 4*z)) + point = random_select(mask_scan) + new_point = [point[0] + enlarge_x//2, point[1] + enlarge_y//2, point[2] + enlarge_z//2] + x_low, x_high = new_point[0] - geo.shape[0]//2, new_point[0] + geo.shape[0]//2 + y_low, y_high = new_point[1] - geo.shape[1]//2, new_point[1] + geo.shape[1]//2 + z_low, z_high = new_point[2] - geo.shape[2]//2, new_point[2] + geo.shape[2]//2 + + # paste small tumor geo into test sample + geo_mask[x_low:x_high, y_low:y_high, z_low:z_high] += geo + # texture_map[x_low:x_high, y_low:y_high, z_low:z_high] = texture + + if tumor_type == 'medium': + num_tumor = random.randint(2, 5) + for _ in range(num_tumor): + # medium tumor + x = random.randint(int(0.75*medium_radius), int(1.25*medium_radius)) + y = random.randint(int(0.75*medium_radius), int(1.25*medium_radius)) + z = random.randint(int(0.75*medium_radius), int(1.25*medium_radius)) + sigma = random.randint(3, 6) + + geo = get_ellipsoid(x, y, z) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,1)) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(1,2)) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,2)) + # texture = get_texture((4*x, 4*y, 4*z)) + point = random_select(mask_scan) + new_point = [point[0] + enlarge_x//2, point[1] + enlarge_y//2, point[2] + enlarge_z//2] + x_low, x_high = new_point[0] - geo.shape[0]//2, new_point[0] + geo.shape[0]//2 + y_low, y_high = new_point[1] - geo.shape[1]//2, new_point[1] + geo.shape[1]//2 + z_low, z_high = new_point[2] - geo.shape[2]//2, new_point[2] + geo.shape[2]//2 + + # paste medium tumor geo into test sample + geo_mask[x_low:x_high, y_low:y_high, z_low:z_high] += geo + # texture_map[x_low:x_high, y_low:y_high, z_low:z_high] = texture + + if tumor_type == 'large': + num_tumor = random.randint(1,3) + for _ in range(num_tumor): + # Large tumor + x = random.randint(int(0.75*large_radius), int(1.25*large_radius)) + y = random.randint(int(0.75*large_radius), int(1.25*large_radius)) + z = random.randint(int(0.75*large_radius), int(1.25*large_radius)) + sigma = random.randint(5, 10) + + geo = get_ellipsoid(x, y, z) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,1)) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(1,2)) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,2)) + # texture = get_texture((4*x, 4*y, 4*z)) + point = random_select(mask_scan) + new_point = [point[0] + enlarge_x//2, point[1] + enlarge_y//2, point[2] + enlarge_z//2] + x_low, x_high = new_point[0] - geo.shape[0]//2, new_point[0] + geo.shape[0]//2 + y_low, y_high = new_point[1] - geo.shape[1]//2, new_point[1] + geo.shape[1]//2 + z_low, z_high = new_point[2] - geo.shape[2]//2, new_point[2] + geo.shape[2]//2 + + # paste small tumor geo into test sample + geo_mask[x_low:x_high, y_low:y_high, z_low:z_high] += geo + # texture_map[x_low:x_high, y_low:y_high, z_low:z_high] = texture + + if tumor_type == "mix": + # tiny + num_tumor = random.randint(3,10) + for _ in range(num_tumor): + # Tiny tumor + x = random.randint(int(0.75*tiny_radius), int(1.25*tiny_radius)) + y = random.randint(int(0.75*tiny_radius), int(1.25*tiny_radius)) + z = random.randint(int(0.75*tiny_radius), int(1.25*tiny_radius)) + sigma = random.uniform(0.5,1) + + geo = get_ellipsoid(x, y, z) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,1)) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(1,2)) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,2)) + point = random_select(mask_scan) + new_point = [point[0] + enlarge_x//2, point[1] + enlarge_y//2, point[2] + enlarge_z//2] + x_low, x_high = new_point[0] - geo.shape[0]//2, new_point[0] + geo.shape[0]//2 + y_low, y_high = new_point[1] - geo.shape[1]//2, new_point[1] + geo.shape[1]//2 + z_low, z_high = new_point[2] - geo.shape[2]//2, new_point[2] + geo.shape[2]//2 + + # paste small tumor geo into test sample + geo_mask[x_low:x_high, y_low:y_high, z_low:z_high] += geo + + # small + num_tumor = random.randint(5,10) + for _ in range(num_tumor): + # Small tumor + x = random.randint(int(0.75*small_radius), int(1.25*small_radius)) + y = random.randint(int(0.75*small_radius), int(1.25*small_radius)) + z = random.randint(int(0.75*small_radius), int(1.25*small_radius)) + sigma = random.randint(1, 2) + + geo = get_ellipsoid(x, y, z) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,1)) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(1,2)) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,2)) + # texture = get_texture((4*x, 4*y, 4*z)) + point = random_select(mask_scan) + new_point = [point[0] + enlarge_x//2, point[1] + enlarge_y//2, point[2] + enlarge_z//2] + x_low, x_high = new_point[0] - geo.shape[0]//2, new_point[0] + geo.shape[0]//2 + y_low, y_high = new_point[1] - geo.shape[1]//2, new_point[1] + geo.shape[1]//2 + z_low, z_high = new_point[2] - geo.shape[2]//2, new_point[2] + geo.shape[2]//2 + + # paste small tumor geo into test sample + geo_mask[x_low:x_high, y_low:y_high, z_low:z_high] += geo + # texture_map[x_low:x_high, y_low:y_high, z_low:z_high] = texture + + # medium + num_tumor = random.randint(2, 5) + for _ in range(num_tumor): + # medium tumor + x = random.randint(int(0.75*medium_radius), int(1.25*medium_radius)) + y = random.randint(int(0.75*medium_radius), int(1.25*medium_radius)) + z = random.randint(int(0.75*medium_radius), int(1.25*medium_radius)) + sigma = random.randint(3, 6) + + geo = get_ellipsoid(x, y, z) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,1)) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(1,2)) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,2)) + # texture = get_texture((4*x, 4*y, 4*z)) + point = random_select(mask_scan) + new_point = [point[0] + enlarge_x//2, point[1] + enlarge_y//2, point[2] + enlarge_z//2] + x_low, x_high = new_point[0] - geo.shape[0]//2, new_point[0] + geo.shape[0]//2 + y_low, y_high = new_point[1] - geo.shape[1]//2, new_point[1] + geo.shape[1]//2 + z_low, z_high = new_point[2] - geo.shape[2]//2, new_point[2] + geo.shape[2]//2 + + # paste medium tumor geo into test sample + geo_mask[x_low:x_high, y_low:y_high, z_low:z_high] += geo + # texture_map[x_low:x_high, y_low:y_high, z_low:z_high] = texture + + # large + num_tumor = random.randint(1,3) + for _ in range(num_tumor): + # Large tumor + x = random.randint(int(0.75*large_radius), int(1.25*large_radius)) + y = random.randint(int(0.75*large_radius), int(1.25*large_radius)) + z = random.randint(int(0.75*large_radius), int(1.25*large_radius)) + sigma = random.randint(5, 10) + geo = get_ellipsoid(x, y, z) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,1)) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(1,2)) + geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,2)) + # texture = get_texture((4*x, 4*y, 4*z)) + point = random_select(mask_scan) + new_point = [point[0] + enlarge_x//2, point[1] + enlarge_y//2, point[2] + enlarge_z//2] + x_low, x_high = new_point[0] - geo.shape[0]//2, new_point[0] + geo.shape[0]//2 + y_low, y_high = new_point[1] - geo.shape[1]//2, new_point[1] + geo.shape[1]//2 + z_low, z_high = new_point[2] - geo.shape[2]//2, new_point[2] + geo.shape[2]//2 + + # paste small tumor geo into test sample + geo_mask[x_low:x_high, y_low:y_high, z_low:z_high] += geo + # texture_map[x_low:x_high, y_low:y_high, z_low:z_high] = texture + + geo_mask = geo_mask[enlarge_x//2:-enlarge_x//2, enlarge_y//2:-enlarge_y//2, enlarge_z//2:-enlarge_z//2] + # texture_map = texture_map[enlarge_x//2:-enlarge_x//2, enlarge_y//2:-enlarge_y//2, enlarge_z//2:-enlarge_z//2] + geo_mask = (geo_mask * mask_scan) >=1 + + return geo_mask + + +def SynthesisTumor(mask_scan, tumor_type, texture): + # for speed_generate_tumor, we only send the liver part into the generate program + x_start, x_end = np.where(np.any(mask_scan, axis=(1, 2)))[0][[0, -1]] + y_start, y_end = np.where(np.any(mask_scan, axis=(0, 2)))[0][[0, -1]] + z_start, z_end = np.where(np.any(mask_scan, axis=(0, 1)))[0][[0, -1]] + + # shrink the boundary + x_start, x_end = max(0, x_start+1), min(mask_scan.shape[0], x_end-1) + y_start, y_end = max(0, y_start+1), min(mask_scan.shape[1], y_end-1) + z_start, z_end = max(0, z_start+1), min(mask_scan.shape[2], z_end-1) + + liver_mask = get_fixed_geo(mask_scan, tumor_type) + + mask_scan[x_start:x_end, y_start:y_end, z_start:z_end] = liver_mask + + return mask_scan + +if __name__ == 'main': + geo_mask = get_fixed_geo(mask_scan, tumor_type) + \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/mask_generation_pipeline.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/mask_generation_pipeline.py new file mode 100644 index 0000000000000000000000000000000000000000..79ec5941dea8f6d790313e38918b79e02bc3597b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/mask_generation_pipeline.py @@ -0,0 +1,127 @@ +import glob +import nibabel as nib +import numpy as np +import os +import torch + +from einops import rearrange +from omegaconf import OmegaConf +from torch.utils.data import DataLoader +from tqdm import tqdm + +from ldm.util import instantiate_from_config +import argparse + +parser = argparse.ArgumentParser() +parser.add_argument( + "-s", + "--save_path", + type=str, + default=None, +) + +args = parser.parse_args() +ddim_steps=args.time_steps +# breakpoint() + +config = OmegaConf.load('./configs/latent-diffusion/mask_generation.yaml') +data = instantiate_from_config(config.data) +data.prepare_data() +data.setup() + + +save_path = args.save_path +if not os.path.exists(save_path): + os.makedirs(save_path) + +val_dataset = data.datasets['validation'] +batch_size = 1 +valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True) +val_num = len(val_dataset) +save_gt = True + +for idx, data in tqdm(enumerate(valloader)): + + if idx >= val_num: + break + + name = data['name'][0] + volume_data = data['volume_data'] + + + window_length = 16 + h = 1 + slice_num =volume_data.shape[1] + result = torch.zeros((batch_size, slice_num, 4, 64, 64)).cuda() + + + upper_iters = (slice_num-h) // (window_length-h)+1 if (slice_num-h)%(window_length-h) != 0 else (slice_num-h) // (window_length-h) + print('upper_iters', upper_iters) + # breakpoint() + for i in range(upper_iters): + print('i', i) + input_data={} + if i == upper_iters-1: + input_data['name'] = data['name'] + input_data['volume_data'] = data['volume_data'][:,-window_length:].to(device) + input_data['masked_data'] = data['masked_data'][:,-window_length:].to(device) + input_data['tumor_mask'] = data['tumor_mask'][:,-window_length:].to(device) + else: + input_data['volume_data'] = data['volume_data'][:, i*window_length-i*h:(i+1)*window_length-i*h].to(device) + input_data['masked_data'] = data['masked_data'][:, i*window_length-i*h:(i+1)*window_length-i*h].to(device) + input_data['tumor_mask'] = data['tumor_mask'][:, i*window_length-i*h:(i+1)*window_length-i*h].to(device) + + with torch.no_grad(): + _, c = model.get_input(input_data, model.first_stage_key) + + if i == 0: + samples_i, _ = model.sample_log(cond=c, batch_size=window_length, ddim=True, eta=1., ddim_steps=ddim_steps) + else: + samples_i, _ = model.sample_log(cond=c, batch_size=window_length, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1) + # breakpoint() + samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=window_length) + + if i == upper_iters-1: + result[:, -window_length+h:] = samples_i[:,h:,...] + else: + if i == 0: + result[:, :window_length] = samples_i + else: + result[:, i*window_length-i*h+h:(i+1)*window_length-i*h] = samples_i[:, h:] + x_minus1 = samples_i[:, -h:,...] + # breakpoint() + result = rearrange(result, 'b z c h w -> (b z) c h w') + x_result = torch.zeros((result.shape[0],3,512,512)) + # breakpoint() + dec_unit = 16 + num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit + for i in range(num_dec_iter): + if i == num_dec_iter - 1: + x_result[-dec_unit:] = model.decode_first_stage(result[-dec_unit:]) + x_result[i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[i*dec_unit:(i+1)*dec_unit]) + x_result[x_result>1.0] = 1.0 + x_result[x_result<-1.0] = -1.0 + x_result = (x_result+1)/2 + x_result = rearrange(x_result, '(b z) c h w -> b z c h w', z=slice_num) + x_result_ = x_result[0].mean(axis=1).detach().cpu().numpy() + # x_result = x_result[0,:,0,...].detach().cpu().numpy() + + x_result = x_result_.transpose(2,1,0) + # x_result = np.rot90(x_result, k=1, axes=(0,1)) + # x_result = np.flip(x_result,axis=(0,1)) + # import imageio as io + # io.imsave('exp.png', (x_result[:,:,400]*255).astype(np.uint8)) + + # breakpoint() + ref_root = '/storage/chenqi/data/CT/Task03_Liver/imagesTr' + ref_nii = os.path.join(ref_root, name+'.nii.gz') + affine = nib.load(ref_nii).affine + + x_result = x_result*425.0 - 175.0 + data_path = os.path.join(save_path, str(f'{name}.nii.gz')) + data_nii = nib.Nifti1Image(x_result.astype(np.int16), affine) + + nib.save(data_nii, data_path) + + # breakpoint() + diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/misc/overview.jpg b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/misc/overview.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8f470dcf462f73d7e9d9d0c5af065b006e01f43b --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/misc/overview.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d22a8ed27837d92fc7a7583cbf898c6442ab127dc914cb9d02dd0cfa05ff7802 +size 122928 diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/recon_test.txt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/recon_test.txt new file mode 100644 index 0000000000000000000000000000000000000000..e5645cc3c82b8252fa9c75c20f6227c10e8ed8ac --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/recon_test.txt @@ -0,0 +1,5 @@ +kl-f8 +Test average MSE: 229.57958816063248 average PSNR: 25.01263807051269 average SSIM: 0.7587649705198748 + +kl-f4 +Test average MSE: 229.5796621685892 average PSNR: 25.01263423093404 average SSIM: 0.7587650323867727 \ No newline at end of file diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/requirements.txt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..432c8e6ef057b8d911781b09493f63e5d2f8e0ce --- /dev/null +++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/requirements.txt @@ -0,0 +1,101 @@ +absl-py==2.3.0 +aiohappyeyeballs==2.6.1 +aiohttp==3.12.12 +aiosignal==1.3.2 +antlr4-python3-runtime==4.8 +async-timeout==5.0.1 +attrs==25.3.0 +blosc2==2.5.1 +Brotli==1.0.9 +cachetools==5.5.2 +certifi==2025.4.26 +charset-normalizer==3.3.2 +contourpy==1.3.0 +cycler==0.12.1 +easydict==1.11 +einops==0.7.0 +filelock==3.17.0 +fonttools==4.58.2 +frozenlist==1.7.0 +fsspec==2025.5.1 +ftfy==6.3.1 +future==1.0.0 +gmpy2==2.2.1 +google-auth==2.40.3 +google-auth-oauthlib==1.2.2 +grpcio==1.73.0 +hf-xet==1.1.3 +huggingface-hub==0.33.0 +idna==3.7 +imageio==2.31.6 +importlib_metadata==8.7.0 +importlib_resources==6.5.2 +Jinja2==3.1.6 +joblib==1.5.1 +kiwisolver==1.4.7 +lazy_loader==0.4 +lightning-utilities==0.9.0 +lpips==0.1.4 +Markdown==3.8 +MarkupSafe==3.0.2 +matplotlib==3.9.4 +mkl_fft==1.3.11 +mkl_random==1.2.8 +mkl-service==2.4.1 +mpmath==1.3.0 +msgpack==1.1.0 +multidict==6.4.4 +ndindex==1.10.0 +networkx==3.2.1 +nibabel==5.2.0 +numpy +oauthlib==3.2.2 +omegaconf==2.1.1 +open-clip-torch==2.7.0 +opencv-python==4.8.1.78 +packaging==25.0 +pandas==2.1.2 +Pillow==10.0.1 +pip==22.3.1 +propcache==0.3.2 +protobuf==4.23.4 +py-cpuinfo==9.0.0 +pyasn1==0.6.1 +pyasn1_modules==0.4.2 +pyDeprecate==0.3.1 +pyparsing==3.1.1 +PySocks==1.7.1 +python-dateutil==2.9.0.post0 +pytorch-lightning==1.4.2 +pytz==2025.2 +PyYAML==6.0.2 +regex==2024.11.6 +requests==2.32.3 +requests-oauthlib==2.0.0 +rsa==4.9.1 +scikit-image==0.22.0 +scikit-learn==1.3.2 +scipy==1.11.3 +seaborn==0.13.0 +setuptools==78.1.1 +six==1.17.0 +sympy==1.13.3 +tensorboard==2.15.1 +tensorboard-data-server==0.7.2 +tensorboardX==2.6.2.2 +test_tube==0.7.5 +threadpoolctl==3.6.0 +tifffile==2024.8.30 +tokenizers==0.13.3 +tqdm==4.66.1 +transformers==4.29.2 +triton==2.1.0 +typing_extensions==4.12.2 +tzdata==2025.2 +urllib3==2.3.0 +volumentations-3D==1.0.4 +wcwidth==0.2.13 +Werkzeug==3.1.3 +wheel==0.45.1 +yarl==1.20.1 +zipp==3.23.0